From 1e8de3bacb8fc0dde50530a8dada45a33dcb556b Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Wed, 1 Sep 2021 12:28:35 +0530 Subject: [PATCH 001/105] Add skeleton for new tab in plugin install screen --- src/Admin/PluginInstallTab.php | 86 ++++++++++++++++++++++++++++++++++ src/AmpWpPlugin.php | 1 + 2 files changed, 87 insertions(+) create mode 100644 src/Admin/PluginInstallTab.php diff --git a/src/Admin/PluginInstallTab.php b/src/Admin/PluginInstallTab.php new file mode 100644 index 00000000000..288d0f98346 --- /dev/null +++ b/src/Admin/PluginInstallTab.php @@ -0,0 +1,86 @@ + esc_html__( 'AMP', 'amp' ), + ], + $tabs + ); + } + + /** + * To modify args for AMP tab in plugin install screen. + * + * @return array + */ + public function amp_tab_args() { + + return [ + 'amp' => true, + ]; + } + + /** + * Filter the response of API call to wordpress.org for plugin data. + * + * @param bool|array $response List of AMP compatible plugins. + * @param string $action API Action. + * @param array $args Args for plugin list. + * + * @return array List of AMP compatible plugins. + */ + public function plugins_api( $response, $action, $args ) { + + return $response; + } +} diff --git a/src/AmpWpPlugin.php b/src/AmpWpPlugin.php index 776cf25b6e5..db35a5276bf 100644 --- a/src/AmpWpPlugin.php +++ b/src/AmpWpPlugin.php @@ -81,6 +81,7 @@ final class AmpWpPlugin extends ServiceBasedPlugin { 'admin.polyfills' => Admin\Polyfills::class, 'admin.user_rest_endpoint_extension' => Admin\UserRESTEndpointExtension::class, 'admin.validation_counts' => Admin\ValidationCounts::class, + 'admin.plugin_install_tab' => Admin\PluginInstallTab::class, 'amp_slug_customization_watcher' => AmpSlugCustomizationWatcher::class, 'background_task_deactivator' => BackgroundTaskDeactivator::class, 'cli.command_namespace' => Cli\CommandNamespaceRegistration::class, From 34ae4877043ca7ad4040bbb1011987130ccda6f6 Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Wed, 1 Sep 2021 14:22:30 +0530 Subject: [PATCH 002/105] Add skeleton for new tab in theme install screen --- src/Admin/ThemeInstallTab.php | 55 +++++++++++++++++++++++++++++++++++ src/AmpWpPlugin.php | 1 + 2 files changed, 56 insertions(+) create mode 100644 src/Admin/ThemeInstallTab.php diff --git a/src/Admin/ThemeInstallTab.php b/src/Admin/ThemeInstallTab.php new file mode 100644 index 00000000000..ad73f3a94db --- /dev/null +++ b/src/Admin/ThemeInstallTab.php @@ -0,0 +1,55 @@ + Admin\UserRESTEndpointExtension::class, 'admin.validation_counts' => Admin\ValidationCounts::class, 'admin.plugin_install_tab' => Admin\PluginInstallTab::class, + 'admin.theme_install_tab' => Admin\ThemeInstallTab::class, 'amp_slug_customization_watcher' => AmpSlugCustomizationWatcher::class, 'background_task_deactivator' => BackgroundTaskDeactivator::class, 'cli.command_namespace' => Cli\CommandNamespaceRegistration::class, From dda5938b78a43da98f277bcaf81ecd80d0672377 Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Sat, 4 Sep 2021 00:15:02 +0530 Subject: [PATCH 003/105] Add script for generate json file for plugins and themes --- bin/file-system.js | 157 +++++++++++++++++++ bin/update-extension-json.js | 285 +++++++++++++++++++++++++++++++++++ data/plugins.json | 1 + data/themes.json | 1 + package.json | 7 +- 5 files changed, 450 insertions(+), 1 deletion(-) create mode 100644 bin/file-system.js create mode 100644 bin/update-extension-json.js create mode 100644 data/plugins.json create mode 100644 data/themes.json diff --git a/bin/file-system.js b/bin/file-system.js new file mode 100644 index 00000000000..2f23974c92e --- /dev/null +++ b/bin/file-system.js @@ -0,0 +1,157 @@ +/** + * Helper class for file management. + */ + +/** + * External dependencies + */ +const fs = require( 'fs' ); +const _ = require( 'underscore' ); + +class FileSystem { + /** + * Directory separator. + * + * @return {string} Directory separator. + */ + static get DS() { + return '/'; + } + + /** + * TO check if path is physically exists or not. + * + * @param {string} path Path to check. + * @return {boolean} True if path exists otherwise False. + */ + static isExists( path ) { + if ( _.isEmpty( path ) || ! _.isString( path ) ) { + return false; + } + + return fs.existsSync( path ); + } + + /** + * To check if given path is file path or not. + * + * @param {string} path Path to check. + * @return {boolean} True if given path is file path, Otherwise False. + */ + static isFilePath( path ) { + if ( _.isEmpty( path ) || ! _.isString( path ) ) { + return false; + } + + return ( path !== this.assureDirectoryPath( path ) ); + } + + /** + * Assure that given path is directory path. + * If file path is provided then it will return parent directory of given path. + * + * @param {string} path Path to check. + * @return {string} Directory path. + */ + static assureDirectoryPath( path ) { + if ( _.isEmpty( path ) || ! _.isString( path ) ) { + return ''; + } + + const lastSegment = path.toString().split( this.DS ).pop(); + + if ( -1 !== lastSegment.indexOf( '.' ) ) { + path = path.replace( `${ this.DS }${ lastSegment }`, '' ); + } + + return path; + } + + /** + * Assure that directory is physically exists. + * + * @param {string} path Path for that need to make sure physical directory exists. + * @return {Promise} True on success otherwise false. + */ + static assureDirectoryExists( path ) { + path = this.assureDirectoryPath( path ); + + return new Promise( ( done ) => { + fs.mkdir( path, { recursive: true }, ( error ) => { + if ( error ) { + done( false ); + } else { + done( true ); + } + } ); + } ); + } + + /** + * To get content of give file. + * + * @param {string} filePath File Absolute file path. + * @return {boolean|Buffer} File content. + */ + static readFile( filePath ) { + if ( _.isEmpty( filePath ) || ! _.isString( filePath ) || ! this.isExists( filePath ) ) { + return false; + } + + return fs.readFileSync( filePath ); + } + + /** + * Write content to file. + * + * @param {string} filePath File path. + * @param {string} content Content of file. + * @return {Promise} True on success otherwise false. + */ + static async writeFile( filePath, content ) { + if ( _.isEmpty( filePath ) || ! _.isString( filePath ) || + _.isEmpty( content ) || ! _.isString( content ) ) { + return false; + } + + await this.assureDirectoryExists( filePath ); + + return new Promise( ( done ) => { + fs.writeFile( filePath, content, ( error ) => { + if ( error ) { + done( false ); + } else { + done( true ); + } + } ); + } ); + } + + /** + * To delete file. + * + * @param {string} filePath File path that need to delete. + * @return {Promise|boolean} True on success otherwise false. + */ + static deleteFile( filePath ) { + if ( _.isEmpty( filePath ) || ! _.isString( filePath ) ) { + return false; + } + + if ( ! this.isExists( filePath ) ) { + return true; + } + + return new Promise( ( done ) => { + fs.unlink( filePath, ( error ) => { + if ( error ) { + done( false ); + } else { + done( true ); + } + } ); + } ); + } +} + +module.exports = FileSystem; diff --git a/bin/update-extension-json.js b/bin/update-extension-json.js new file mode 100644 index 00000000000..06627d8819a --- /dev/null +++ b/bin/update-extension-json.js @@ -0,0 +1,285 @@ +/** + * External dependencies + */ +const { getPluginsList, getThemesList } = require( 'wporg-api-client' ); +const axios = require( 'axios' ); + +/** + * Internal dependencies + */ +const filesystem = require( './file-system' ); + +class UpdateExtensionJson { + /** + * Construct method. + */ + constructor() { + ( async () => { + this.plugins = []; + this.themes = []; + + await this.fetchData(); + await this.storeData(); + } )(); + } + + /** + * Fetch AMP compatible plugins and themes. + * + * @return {Promise} + */ + async fetchData() { + let totalPage = 1; + const pluginTerm = 552; + const themeTerm = 245; + const url = 'https://amp-wp.org/wp-json/wp/v2/ecosystem'; + + const queryParams = { + ecosystem_types: [ themeTerm, pluginTerm ], + per_page: 20, + page: 1, + }; + + do { + // eslint-disable-next-line no-await-in-loop + const response = await axios.get( url, { params: queryParams } ); + const items = response.data; + totalPage = parseInt( response.headers[ 'x-wp-totalpages' ] ); + + if ( ! Array.isArray( items ) ) { + break; + } + + // eslint-disable-next-line guard-for-in + for ( const index in items ) { + const item = items[ index ]; + const ecosystemTerm = item.ecosystem_types.pop(); + + if ( ecosystemTerm === pluginTerm ) { + // eslint-disable-next-line no-await-in-loop + const plugin = await this.preparePlugin( item ); + if ( plugin ) { + this.plugins.push( item ); + } + } else if ( ecosystemTerm === themeTerm ) { + // eslint-disable-next-line no-await-in-loop + const theme = await this.prepareTheme( item ); + if ( theme ) { + this.themes.push( theme ); + } + } + } + + queryParams.page++; + } while ( queryParams.page <= totalPage ); + } + + /** + * Store plugins and theme data in JSON respective file. + * + * @return {Promise} + */ + async storeData() { + if ( this.plugins ) { + await filesystem.writeFile( 'data/plugins.json', JSON.stringify( this.plugins ) ); + } + + if ( this.themes ) { + await filesystem.writeFile( 'data/themes.json', JSON.stringify( this.themes ) ); + } + } + + /** + * Prepare a object for WordPress install page from the object of amp-wp.org rest object. + * + * @param {Object} item Single item from rest API. + * @return {Promise} Object of plugin, Compatible for WordPress plugin install page. + */ + async preparePlugin( item ) { + const regex = /wordpress\.org\/plugins\/(.[^\/]+)\/?/; + const ecosystemUrl = item?.meta?.ampps_ecosystem_url; + const matches = regex.exec( ecosystemUrl ); + let plugin = null; + + // WordPress org plugin. + if ( null !== matches ) { + plugin = await this.fetchPluginFromWporg( matches[ 1 ] ); + } else { + plugin = await this.fetchPluginFromWporg( item.slug ); + } + + // Plugin data for amp-wp.org + if ( null === matches || null === plugin ) { + plugin = await this.preparePluginData( item ); + } + + return plugin; + } + + /** + * Prepare a object for WordPress install page from the object of amp-wp.org rest object. + * + * @param {Object} item Single item from rest API. + * @return {Promise} Object of theme, Compatible for WordPress plugin install page. + */ + async prepareTheme( item ) { + const regex = /wordpress\.org\/themes\/(.[^\/]+)\/?/; + const ecosystemUrl = item?.meta?.ampps_ecosystem_url; + const matches = regex.exec( ecosystemUrl ); + let theme = null; + + // WordPress org plugin. + if ( null !== matches ) { + theme = await this.fetchThemeFromWporg( matches[ 1 ] ); + } else { + theme = await this.fetchThemeFromWporg( item.slug ); + } + + // Plugin data for amp-wp.org + if ( null === matches || null === theme ) { + theme = await this.prepareThemeData( item ); + } + + return theme; + } + + /** + * Fetch theme data from WordPress.org REST API for theme. + * + * @param {string} slug Theme slug. + * @return {Promise} Theme object from WP org. + */ + async fetchThemeFromWporg( slug ) { + const filters = { + search: slug, + page: 1, + per_page: 20, + }; + + const response = await getThemesList( filters ); + const items = response?.data?.themes; + + for ( const index in items ) { + if ( slug === items[ index ].slug ) { + items[ index ].wporg = true; + return items[ index ]; + } + } + + return null; + } + + /** + * Transform theme data fetched from amp-wp.org to compatible with theme install screen. + * + * @param {Object} item Theme object. + * @return {Promise} Theme object compatible for theme install screen. + */ + async prepareThemeData( item ) { + const imageRequestUrl = item._links[ 'wp:featuredmedia' ][ 0 ].href; + let attachment = await axios.get( imageRequestUrl ); + attachment = attachment.data; + + return { + name: item.name, + slug: item.slug, + version: '', + preview_url: item?.meta?.ampps_ecosystem_url, + author: { + user_nicename: '', + profile: '', + avatar: '', + display_name: '', + author: '', + author_url: '', + }, + screenshot_url: attachment.source_url, + rating: 0, + num_ratings: 0, + homepage: item?.meta?.ampps_ecosystem_url, + description: item.content.rendere, + requires: '', + requires_php: '', + wporg: false, + }; + } + + /** + * Fetch plugin data from WordPress.org REST API for theme. + * + * @param {string} slug Plugin slug. + * @return {Promise} Plugin object from WP org. + */ + async fetchPluginFromWporg( slug ) { + const filters = { + search: slug, + page: 1, + per_page: 20, + }; + + const response = await getPluginsList( filters ); + const items = response?.data?.plugins; + + for ( const index in items ) { + if ( slug === items[ index ].slug ) { + items[ index ].wporg = true; + return items[ index ]; + } + } + + return null; + } + + /** + * Transform plugin data fetched from amp-wp.org to compatible with theme install screen. + * + * @param {Object} item Plugin object. + * @return {Promise} Plugin object compatible for plugin install screen. + */ + async preparePluginData( item ) { + const imageRequestUrl = item._links[ 'wp:featuredmedia' ][ 0 ].href; + let attachment = await axios.get( imageRequestUrl ); + attachment = attachment.data; + + return { + name: item.title.rendered, + slug: item.slug, + version: '', + author: '', + author_profile: '', + requires: '', + tested: '', + requires_php: '', + rating: '', + ratings: { + 1: 0, + 2: 0, + 3: 0, + 4: 0, + 5: 0, + }, + num_ratings: '', + support_threads: '', + support_threads_resolved: '', + active_installs: '', + downloaded: '', + last_updated: '', + added: '', + homepage: item?.meta?.ampps_ecosystem_url, + short_description: item.excerpt.rendered, + description: item.content.rendered, + download_link: '', + tags: {}, + donate_link: '', + icons: { + '1x': attachment.media_details.sizes[ 'amp-wp-org-thumbnail' ].source_url, + '2x': attachment.media_details.sizes[ 'amp-wp-org-medium' ].source_url, + svg: '', + }, + wporg: false, + }; + } +} + +// eslint-disable-next-line no-new +new UpdateExtensionJson(); diff --git a/data/plugins.json b/data/plugins.json new file mode 100644 index 00000000000..670736a17d9 --- /dev/null +++ b/data/plugins.json @@ -0,0 +1 @@ +[{"id":10197,"date":"2021-08-25T19:11:57","date_gmt":"2021-08-25T19:11:57","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=10197"},"modified":"2021-08-25T19:11:57","modified_gmt":"2021-08-25T19:11:57","slug":"podcast-player-your-podcasting-companion","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/podcast-player-your-podcasting-companion/","title":{"rendered":"Podcast Player – Your Podcasting Companion"},"content":{"rendered":"\n\n\n

An easy way to show and play your podcast episodes using podcasting feed url.

\n","protected":false},"excerpt":{"rendered":"

An easy way to show and play your podcast episodes using podcasting feed url.

\n","protected":false},"featured_media":10199,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/podcast-player/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/10197"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/10197/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/10199"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=10197"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=10197"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":10192,"date":"2021-08-25T18:43:59","date_gmt":"2021-08-25T18:43:59","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=10192"},"modified":"2021-08-25T18:44:54","modified_gmt":"2021-08-25T18:44:54","slug":"wpsso-schema-json-ld-markup","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/wpsso-schema-json-ld-markup/","title":{"rendered":"WPSSO Schema JSON-LD Markup"},"content":{"rendered":"\n\n\n

Google Rich Results with JSON-LD structured data for Articles, Carousels (aka Item Lists), Claim Reviews, Events, FAQ pages, How-Tos, Images, Local Business / Local SEO, Organizations, Products, Ratings, Recipes, Restaurants, Reviews, Video Objects, and much more.

\n","protected":false},"excerpt":{"rendered":"

Google Rich Results with JSON-LD structured data for Articles, Carousels (aka Item Lists), Claim Reviews, Events, FAQ pages, How-Tos, Images, Local Business / Local SEO, Organizations, Products, Ratings, Recipes, Restaurants, Reviews, Video Objects, and much more.

\n","protected":false},"featured_media":10196,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/wpsso-schema-json-ld/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/10192"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/10192/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/10196"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=10192"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=10192"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":10167,"date":"2021-08-05T15:30:53","date_gmt":"2021-08-05T15:30:53","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=10167"},"modified":"2021-08-05T15:30:53","modified_gmt":"2021-08-05T15:30:53","slug":"shortpixel-image-optimizer","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/shortpixel-image-optimizer/","title":{"rendered":"ShortPixel Image Optimizer"},"content":{"rendered":"\n\n\n

A freemium, easy to use, comprehensive, stable and frequently updated image compression plugin supported by the friendly team that created it

\n","protected":false},"excerpt":{"rendered":"

A freemium, easy to use, comprehensive, stable and frequently updated image compression plugin supported by the friendly team that created it

\n","protected":false},"featured_media":10169,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/shortpixel-image-optimiser/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/10167"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/10167/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/10169"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=10167"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=10167"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":10118,"date":"2021-07-06T16:17:53","date_gmt":"2021-07-06T16:17:53","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=10118"},"modified":"2021-07-06T16:17:53","modified_gmt":"2021-07-06T16:17:53","slug":"toolkit-for-twenty-twenty-twenty-one-gutenberg-blocks","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/toolkit-for-twenty-twenty-twenty-one-gutenberg-blocks/","title":{"rendered":"Toolkit for Twenty Twenty & Twenty-One, Gutenberg Blocks"},"content":{"rendered":"\n\n\n

Twentig helps you customize the default WordPress themes (Twenty Twenty-One and Twenty Twenty) the way you want with Google Fonts, colors, custom layouts, and many more options.

\n","protected":false},"excerpt":{"rendered":"

Twentig helps you customize the default WordPress themes (Twenty Twenty-One and Twenty Twenty) the way you want with Google Fonts, colors, custom layouts, and many more options.

\n","protected":false},"featured_media":10123,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/twentig/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/10118"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/10118/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/10123"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=10118"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=10118"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":10076,"date":"2021-06-18T17:58:22","date_gmt":"2021-06-18T17:58:22","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=10076"},"modified":"2021-06-18T17:58:22","modified_gmt":"2021-06-18T17:58:22","slug":"custom-post-type-ui","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/custom-post-type-ui/","title":{"rendered":"Custom Post Type UI"},"content":{"rendered":"\n\n\n

Custom Post Type UI provides an easy to use interface for registering and managing custom post types and taxonomies for your website.

\n","protected":false},"excerpt":{"rendered":"

Custom Post Type UI provides an easy to use interface for registering and managing custom post types and taxonomies for your website.

\n","protected":false},"featured_media":10078,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/custom-post-type-ui/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/10076"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/10076/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/10078"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=10076"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=10076"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":10051,"date":"2021-06-10T09:42:41","date_gmt":"2021-06-10T09:42:41","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=10051"},"modified":"2021-06-10T09:42:41","modified_gmt":"2021-06-10T09:42:41","slug":"flex-posts-widget-and-gutenberg-block","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/flex-posts-widget-and-gutenberg-block/","title":{"rendered":"Flex Posts – Widget and Gutenberg Block"},"content":{"rendered":"\n\n\n

Display posts in various different layouts, using a block or widget. It is useful for a news site where you need to display a lot of posts in a page.

\n","protected":false},"excerpt":{"rendered":"

Display posts in various different layouts, using a block or widget. It is useful for a news site where you need to display a lot of posts in a page.

\n","protected":false},"featured_media":10057,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/flex-posts/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/10051"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/10051/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/10057"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=10051"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=10051"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":10050,"date":"2021-06-10T09:38:18","date_gmt":"2021-06-10T09:38:18","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=10050"},"modified":"2021-06-10T09:38:18","modified_gmt":"2021-06-10T09:38:18","slug":"yet-another-related-posts-plugin-yarpp","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/yet-another-related-posts-plugin-yarpp/","title":{"rendered":"Yet Another Related Posts Plugin (YARPP)"},"content":{"rendered":"\n\n\n

Displays pages, posts, and custom post types related to the current entry, introducing your readers to other relevant content on your site.

\n","protected":false},"excerpt":{"rendered":"

Displays pages, posts, and custom post types related to the current entry, introducing your readers to other relevant content on your site.

\n","protected":false},"featured_media":10054,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/yet-another-related-posts-plugin/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/10050"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/10050/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/10054"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=10050"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=10050"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":10042,"date":"2021-06-01T22:01:27","date_gmt":"2021-06-01T22:01:27","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=10042"},"modified":"2021-06-01T22:01:27","modified_gmt":"2021-06-01T22:01:27","slug":"superb-wordpress-table","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/superb-wordpress-table/","title":{"rendered":"Superb WordPress Table"},"content":{"rendered":"\n\n\n

Responsive & SEO Optimized tables. Get your Google Featured Snippets. Different table designs, table shortcodes & lightweight code.

\n","protected":false},"excerpt":{"rendered":"

Responsive & SEO Optimized tables. Get your Google Featured Snippets. Different table designs, table shortcodes & lightweight code.

\n","protected":false},"featured_media":10044,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/superb-tables/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/10042"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/10042/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/10044"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=10042"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=10042"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":9994,"date":"2021-05-10T21:14:48","date_gmt":"2021-05-10T21:14:48","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=9994"},"modified":"2021-05-10T21:14:48","modified_gmt":"2021-05-10T21:14:48","slug":"floating-button","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/floating-button/","title":{"rendered":"Floating Button"},"content":{"rendered":"\n\n\n

The Floating Button is the free WordPress plugin for creating the original sticky floating actions buttons.

\n","protected":false},"excerpt":{"rendered":"

The Floating Button is the free WordPress plugin for creating the original sticky floating actions buttons.

\n","protected":false},"featured_media":9991,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/floating-button"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9994"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9994/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/9991"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=9994"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=9994"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":9943,"date":"2021-05-03T23:50:35","date_gmt":"2021-05-03T23:50:35","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=9943"},"modified":"2021-05-03T23:50:35","modified_gmt":"2021-05-03T23:50:35","slug":"breadcrumb-navxt","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/breadcrumb-navxt/","title":{"rendered":"Breadcrumb NavXT"},"content":{"rendered":"\n\n\n

This plugin generates locational breadcrumb trails for your WordPress powered blog or website. These breadcrumb trails are highly customizable to suit the needs of just about any website running WordPress. 

\n","protected":false},"excerpt":{"rendered":"

This plugin generates locational breadcrumb trails for your WordPress powered blog or website. These breadcrumb trails are highly customizable to suit the needs of just about any website running WordPress. 

\n","protected":false},"featured_media":9950,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/breadcrumb-navxt/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9943"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9943/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/9950"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=9943"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=9943"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":9944,"date":"2021-05-03T23:48:37","date_gmt":"2021-05-03T23:48:37","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=9944"},"modified":"2021-05-03T23:48:37","modified_gmt":"2021-05-03T23:48:37","slug":"wp-recipe-maker","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/wp-recipe-maker/","title":{"rendered":"WP Recipe Maker"},"content":{"rendered":"\n\n\n

WP Recipe Maker is the easy recipe plugin that everyone can use. An easy workflow allows you to add recipes to any post or page with automatic JSON-LD metadata for your recipes.

\n","protected":false},"excerpt":{"rendered":"

WP Recipe Maker is the easy recipe plugin that everyone can use. An easy workflow allows you to add recipes to any post or page with automatic JSON-LD metadata for your recipes.

\n","protected":false},"featured_media":9955,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/wp-recipe-maker/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9944"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9944/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/9955"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=9944"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=9944"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":9811,"date":"2021-03-13T02:50:10","date_gmt":"2021-03-13T02:50:10","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=9811"},"modified":"2021-03-13T02:50:15","modified_gmt":"2021-03-13T02:50:15","slug":"slim-seo","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/slim-seo/","title":{"rendered":"Slim SEO"},"content":{"rendered":"\n\n\n

A lightweight SEO plugin for WordPress.

\n","protected":false},"excerpt":{"rendered":"

A lightweight SEO plugin for WordPress.

\n","protected":false},"featured_media":9806,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/slim-seo/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9811"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9811/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/9806"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=9811"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=9811"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":9812,"date":"2021-03-13T02:45:39","date_gmt":"2021-03-13T02:45:39","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=9812"},"modified":"2021-03-13T02:45:45","modified_gmt":"2021-03-13T02:45:45","slug":"schema-structured-data-for-wp-amp","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/schema-structured-data-for-wp-amp/","title":{"rendered":"Schema & Structured Data for WP & AMP"},"content":{"rendered":"\n\n\n

Schema & Structured Data for WP & AMP adds Google Rich Snippets markup according to Schema.org guidelines to structure your site for SEO.

\n","protected":false},"excerpt":{"rendered":"

Schema & Structured Data for WP & AMP adds Google Rich Snippets markup according to Schema.org guidelines to structure your site for SEO.

\n","protected":false},"featured_media":9805,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/schema-and-structured-data-for-wp/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9812"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9812/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/9805"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=9812"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=9812"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":9767,"date":"2021-03-08T00:31:25","date_gmt":"2021-03-08T00:31:25","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=9767"},"modified":"2021-03-08T00:31:29","modified_gmt":"2021-03-08T00:31:29","slug":"generateblocks","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/generateblocks/","title":{"rendered":"GenerateBlocks"},"content":{"rendered":"\n\n\n

Add incredible versatility to your editor without bloating it with tons of one-dimensional blocks.

\n","protected":false},"excerpt":{"rendered":"

Add incredible versatility to your editor without bloating it with tons of one-dimensional blocks.

\n","protected":false},"featured_media":9764,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/generateblocks/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9767"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9767/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/9764"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=9767"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=9767"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":9725,"date":"2021-02-19T22:17:25","date_gmt":"2021-02-19T22:17:25","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=9725"},"modified":"2021-02-19T22:17:28","modified_gmt":"2021-02-19T22:17:28","slug":"blackhole-for-bad-bots","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/blackhole-for-bad-bots/","title":{"rendered":"Blackhole for Bad Bots"},"content":{"rendered":"\n\n\n

Add your own virtual black hole trap for bad bots.

\n","protected":false},"excerpt":{"rendered":"

Add your own virtual black hole trap for bad bots.

\n","protected":false},"featured_media":9697,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/blackhole-bad-bots/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9725"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9725/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/9697"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=9725"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=9725"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":9722,"date":"2021-02-19T22:13:42","date_gmt":"2021-02-19T22:13:42","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=9722"},"modified":"2021-02-19T22:16:22","modified_gmt":"2021-02-19T22:16:22","slug":"page-view-count","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/page-view-count/","title":{"rendered":"Page View Count"},"content":{"rendered":"\n\n\n

Provides visitors and site owners the ability to quickly and easily see how many people have visited that page or post.

\n","protected":false},"excerpt":{"rendered":"

Provides visitors and site owners the ability to quickly and easily see how many people have visited that page or post.

\n","protected":false},"featured_media":9704,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/page-views-count/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9722"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9722/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/9704"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=9722"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=9722"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":9715,"date":"2021-02-19T22:00:52","date_gmt":"2021-02-19T22:00:52","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=9715"},"modified":"2021-02-19T22:02:12","modified_gmt":"2021-02-19T22:02:12","slug":"newspack-listings","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/newspack-listings/","title":{"rendered":"Newspack Listings"},"content":{"rendered":"\n\n\n

Create reusable content as listings and add them to lists wherever core blocks can be used

\n","protected":false},"excerpt":{"rendered":"

Create reusable content as listings and add them to lists wherever core blocks can be used

\n","protected":false},"featured_media":9719,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://github.com/Automattic/newspack-listings/releases"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9715"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9715/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/9719"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=9715"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=9715"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":9713,"date":"2021-02-19T21:58:07","date_gmt":"2021-02-19T21:58:07","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=9713"},"modified":"2021-02-19T22:03:10","modified_gmt":"2021-02-19T22:03:10","slug":"newspack-newsletters","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/newspack-newsletters/","title":{"rendered":"Newspack Newsletters"},"content":{"rendered":"\n\n\n

Create email newsletters with the Gutenberg editor and send them via Mailchimp or Constant Contact

\n","protected":false},"excerpt":{"rendered":"

Create email newsletters with the Gutenberg editor and send them via Mailchimp or Constant Contact

\n","protected":false},"featured_media":9720,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/newspack-newsletters/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9713"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9713/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/9720"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=9713"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=9713"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":9542,"date":"2020-12-18T20:03:09","date_gmt":"2020-12-18T20:03:09","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=9542"},"modified":"2020-12-18T20:03:55","modified_gmt":"2020-12-18T20:03:55","slug":"web-stories","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/web-stories/","title":{"rendered":"Web Stories"},"content":{"rendered":"\n\n\n

Web Stories are a free, open-web, visual storytelling format for the web.

\n","protected":false},"excerpt":{"rendered":"

Web Stories are a free, open-web, visual storytelling format for the web.

\n","protected":false},"featured_media":9543,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/web-stories/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9542"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9542/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/9543"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=9542"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=9542"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":9539,"date":"2020-12-18T19:59:32","date_gmt":"2020-12-18T19:59:32","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=9539"},"modified":"2020-12-18T20:09:45","modified_gmt":"2020-12-18T20:09:45","slug":"jetpack","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/jetpack/","title":{"rendered":"Jetpack"},"content":{"rendered":"\n\n\n

Security, performance, marketing and design tools — made by the WordPress experts to make WP sites safer and faster, and help you grow your traffic.

\n","protected":false},"excerpt":{"rendered":"

Security, performance, marketing and design tools — made by the WordPress experts to make WP sites safer and faster, and help you grow your traffic.

\n","protected":false},"featured_media":9546,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/jetpack/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9539"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9539/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/9546"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=9539"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=9539"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":9529,"date":"2020-12-17T12:55:11","date_gmt":"2020-12-17T12:55:11","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=9529"},"modified":"2020-12-17T12:55:15","modified_gmt":"2020-12-17T12:55:15","slug":"easy-notification-bar","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/easy-notification-bar/","title":{"rendered":"Easy Notification Bar"},"content":{"rendered":"\n\n\n

Easily enable a notification bar on your site using the WordPress customizer

\n","protected":false},"excerpt":{"rendered":"

Easily enable a notification bar on your site using the WordPress customizer

\n","protected":false},"featured_media":9530,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/easy-notification-bar/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9529"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9529/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/9530"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=9529"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=9529"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":9491,"date":"2020-12-02T11:26:31","date_gmt":"2020-12-02T11:26:31","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=9491"},"modified":"2020-12-02T11:26:33","modified_gmt":"2020-12-02T11:26:33","slug":"antispam-bee","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/antispam-bee/","title":{"rendered":"Antispam Bee"},"content":{"rendered":"\n\n\n

Antispam Bee blocks spam comments and trackbacks effectively, without captchas and without sending personal information to third party services.

\n","protected":false},"excerpt":{"rendered":"

Antispam Bee blocks spam comments and trackbacks effectively, without captchas and without sending personal information to third party services.

\n","protected":false},"featured_media":9493,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/antispam-bee/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9491"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9491/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/9493"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=9491"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=9491"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":9492,"date":"2020-12-02T11:26:19","date_gmt":"2020-12-02T11:26:19","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=9492"},"modified":"2020-12-02T11:29:32","modified_gmt":"2020-12-02T11:29:32","slug":"simple-table-of-contents-block","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/simple-table-of-contents-block/","title":{"rendered":"Simple Table of Contents Block"},"content":{"rendered":"\n\n\n

Simple TOC works by parsing the post content and retrieving the heading blocks and creates a new dynamic block with a list of links to the headings.

\n","protected":false},"excerpt":{"rendered":"

Simple TOC works by parsing the post content and retrieving the heading blocks and creates a new dynamic block with a list of links to the headings.

\n","protected":false},"featured_media":9498,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/simpletoc/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9492"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9492/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/9498"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=9492"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=9492"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":9425,"date":"2020-11-16T19:02:03","date_gmt":"2020-11-16T19:02:03","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=9425"},"modified":"2020-11-16T19:02:08","modified_gmt":"2020-11-16T19:02:08","slug":"log-in-with-google","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/log-in-with-google/","title":{"rendered":"Log in with Google"},"content":{"rendered":"\n\n\n

Minimal plugin that allows WordPress users to log in using Google.

\n","protected":false},"excerpt":{"rendered":"

Minimal plugin that allows WordPress users to log in using Google.

\n","protected":false},"featured_media":9427,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/login-with-google/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9425"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9425/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/9427"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=9425"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=9425"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":9426,"date":"2020-11-16T19:01:44","date_gmt":"2020-11-16T19:01:44","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=9426"},"modified":"2020-11-16T19:01:50","modified_gmt":"2020-11-16T19:01:50","slug":"search-with-google","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/search-with-google/","title":{"rendered":"Search with Google"},"content":{"rendered":"\n\n\n

This plugin replaces the WordPress default search query with server-side results from Custom Search Site Restricted JSON API

\n","protected":false},"excerpt":{"rendered":"

This plugin replaces the WordPress default search query with server-side results from Custom Search Site Restricted JSON API. 

\n","protected":false},"featured_media":9428,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/search-with-google/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9426"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9426/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/9428"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=9426"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=9426"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":9374,"date":"2020-10-30T18:57:18","date_gmt":"2020-10-30T18:57:18","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=9374"},"modified":"2020-10-30T18:57:22","modified_gmt":"2020-10-30T18:57:22","slug":"coblocks","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/coblocks/","title":{"rendered":"CoBlocks"},"content":{"rendered":"\n\n\n

An innovative collection of page building blocks for the new Gutenberg WordPress block editor.

\n","protected":false},"excerpt":{"rendered":"

An innovative collection of page building blocks for the new Gutenberg WordPress block editor.

\n","protected":false},"featured_media":9375,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/coblocks/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9374"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9374/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/9375"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=9374"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=9374"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":9368,"date":"2020-10-23T20:10:07","date_gmt":"2020-10-23T20:10:07","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=9368"},"modified":"2020-10-23T20:10:11","modified_gmt":"2020-10-23T20:10:11","slug":"simple-author-box","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/simple-author-box/","title":{"rendered":"Simple Author Box"},"content":{"rendered":"\n\n\n

Add a responsive author box at the end of your posts, showing the author name, author gravatar and author description 

\n","protected":false},"excerpt":{"rendered":"

Add a responsive author box at the end of your posts, showing the author name, author gravatar and author description 

\n","protected":false},"featured_media":9369,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/simple-author-box/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9368"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9368/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/9369"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=9368"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=9368"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":9365,"date":"2020-10-23T20:06:09","date_gmt":"2020-10-23T20:06:09","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=9365"},"modified":"2020-10-23T20:06:13","modified_gmt":"2020-10-23T20:06:13","slug":"genesis-blocks","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/genesis-blocks/","title":{"rendered":"Genesis Blocks  "},"content":{"rendered":"\n\n\n

Building pages with the block editor and Genesis Blocks gives you more control to quickly create and launch any kind of site you want!

\n","protected":false},"excerpt":{"rendered":"

Building pages with the block editor and Genesis Blocks gives you more control to quickly create and launch any kind of site you want!

\n","protected":false},"featured_media":9366,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/genesis-blocks/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9365"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9365/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/9366"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=9365"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=9365"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":9226,"date":"2020-10-02T15:37:57","date_gmt":"2020-10-02T15:37:57","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=9226"},"modified":"2020-10-02T15:38:07","modified_gmt":"2020-10-02T15:38:07","slug":"mathml-block","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/mathml-block/","title":{"rendered":"MathML Block"},"content":{"rendered":"\n\n\n

A MathML block for the WordPress block editor

\n","protected":false},"excerpt":{"rendered":"

A MathML block for the WordPress block editor

\n","protected":false},"featured_media":9228,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/mathml-block/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9226"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9226/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/9228"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=9226"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=9226"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":8686,"date":"2020-09-02T15:47:39","date_gmt":"2020-09-02T15:47:39","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=8686"},"modified":"2020-09-02T15:47:43","modified_gmt":"2020-09-02T15:47:43","slug":"calculated-fields-form","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/calculated-fields-form/","title":{"rendered":"Calculated Fields Form"},"content":{"rendered":"\n\n\n

Create forms with dynamically calculated fields to display the calculated values.

\n","protected":false},"excerpt":{"rendered":"

Create forms with dynamically calculated fields to display the calculated values.

\n","protected":false},"featured_media":8687,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/calculated-fields-form/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/8686"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/8686/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/8687"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=8686"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=8686"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":8659,"date":"2020-08-28T16:27:14","date_gmt":"2020-08-28T16:27:14","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=8659"},"modified":"2020-08-28T16:27:17","modified_gmt":"2020-08-28T16:27:17","slug":"all-in-one-seo-pack","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/all-in-one-seo-pack/","title":{"rendered":"All in One SEO Pack"},"content":{"rendered":"\n\n\n

Use All in One SEO Pack to optimize your WordPress site for SEO. It’s easy and works out of the box for beginners, and has advanced features and an API for developers.

\n","protected":false},"excerpt":{"rendered":"

Use All in One SEO Pack to optimize your WordPress site for SEO. It’s easy and works out of the box for beginners, and has advanced features and an API for developers.

\n","protected":false},"featured_media":8660,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/all-in-one-seo-pack/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/8659"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/8659/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/8660"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=8659"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=8659"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":7003,"date":"2020-08-13T13:50:48","date_gmt":"2020-08-13T13:50:48","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=7003"},"modified":"2020-08-13T13:50:48","modified_gmt":"2020-08-13T13:50:48","slug":"weglot","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/weglot/","title":{"rendered":"Weglot"},"content":{"rendered":"\n\n\n

Weglot Translate makes it easy to translate your WordPress website and go multilingual.

\n","protected":false},"excerpt":{"rendered":"

Weglot Translate makes it easy to translate your WordPress website and go multilingual.

\n","protected":false},"featured_media":7009,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/weglot/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/7003"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/7003/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/7009"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=7003"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=7003"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":6922,"date":"2020-08-12T15:04:23","date_gmt":"2020-08-12T15:04:23","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=6922"},"modified":"2020-08-12T15:04:23","modified_gmt":"2020-08-12T15:04:23","slug":"rank-math","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/rank-math/","title":{"rendered":"Rank Math"},"content":{"rendered":"\n\n\n

Rank Math helps website owners get access to the SEO tools they need to improve their SEO and attract more traffic to their website.

\n","protected":false},"excerpt":{"rendered":"

Rank Math helps website owners get access to the SEO tools they need to improve their SEO and attract more traffic to their website.

\n","protected":false},"featured_media":6923,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/seo-by-rank-math/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/6922"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/6922/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/6923"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=6922"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=6922"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":6821,"date":"2020-07-24T12:08:49","date_gmt":"2020-07-24T12:08:49","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=6821"},"modified":"2020-07-24T12:08:49","modified_gmt":"2020-07-24T12:08:49","slug":"head-footer-and-post-injections","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/head-footer-and-post-injections/","title":{"rendered":"Head, Footer and Post Injections"},"content":{"rendered":"\n\n\n

Header and Footer Post Injections makes it easily copy and paste code snippets into your site, for AMP and non AMP URLs alike.

\n","protected":false},"excerpt":{"rendered":"

Header and Footer Post Injections makes it easily copy and paste code snippets into your site, for AMP and non AMP URLs alike.

\n","protected":false},"featured_media":6826,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/header-footer/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/6821"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/6821/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/6826"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=6821"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=6821"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":6495,"date":"2020-06-10T18:31:22","date_gmt":"2020-06-10T18:31:22","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=6495"},"modified":"2020-06-10T18:31:22","modified_gmt":"2020-06-10T18:31:22","slug":"wp-rocket","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/wp-rocket/","title":{"rendered":"WP Rocket"},"content":{"rendered":"\n\n\n

Powerful caching to speed up your WordPress website in a few clicks. No coding required.

\n","protected":false},"excerpt":{"rendered":"

Powerful caching to speed up your WordPress website in a few clicks. No coding required.

\n","protected":false},"featured_media":6501,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wp-rocket.me/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/6495"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/6495/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/6501"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=6495"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=6495"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":8580,"date":"2020-05-20T18:18:06","date_gmt":"2020-05-20T18:18:06","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=6386"},"modified":"2020-05-20T18:18:06","modified_gmt":"2020-05-20T18:18:06","slug":"statify-2","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/statify-2/","title":{"rendered":"Statify"},"content":{"rendered":"\n\n\n

Statify provides a straightforward and compact access to the number of site views. 

\n","protected":false},"excerpt":{"rendered":"

Statify provides a straightforward and compact access to the number of site views. 

\n","protected":false},"featured_media":6391,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/statify/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/8580"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/8580/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/6391"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=8580"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=8580"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":6203,"date":"2020-04-21T11:09:08","date_gmt":"2020-04-21T11:09:08","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=6203"},"modified":"2020-08-24T17:06:17","modified_gmt":"2020-08-24T17:06:17","slug":"liquid-blocks","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/liquid-blocks/","title":{"rendered":"Liquid Blocks"},"content":{"rendered":"\n\n\n

If you’re looking to create Gutenberg page sections that look great give Liquid Blocks a try.

\n","protected":false},"excerpt":{"rendered":"

If you’re looking to create Gutenberg page sections that look great give Liquid Blocks a try.

\n","protected":false},"featured_media":6204,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/liquid-blocks/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/6203"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/6203/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/6204"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=6203"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=6203"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":6169,"date":"2020-04-10T00:30:21","date_gmt":"2020-04-10T00:30:21","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=6169"},"modified":"2020-08-24T17:05:52","modified_gmt":"2020-08-24T17:05:52","slug":"schema-2","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/schema-2/","title":{"rendered":"Schema"},"content":{"rendered":"\n\n\n

Super fast, light-weight plugin for adding schema.org structured data to WordPress sites.

\n","protected":false},"excerpt":{"rendered":"

Super fast, light-weight plugin for adding schema.org structured data to WordPress sites.

\n","protected":false},"featured_media":6147,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/schema/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/6169"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/6169/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/6147"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=6169"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=6169"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":8579,"date":"2020-04-08T16:44:11","date_gmt":"2020-04-08T16:44:11","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=6148"},"modified":"2020-04-08T16:44:11","modified_gmt":"2020-04-08T16:44:11","slug":"iframely-2","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/iframely-2/","title":{"rendered":"iFramely"},"content":{"rendered":"\n\n\n

Iframely extends WordPress default embeds and adds over 2000 more providers and cards as URL previews for the rest of the Web.

\n","protected":false},"excerpt":{"rendered":"

Iframely extends WordPress default embeds and adds over 2000 more providers and cards as URL previews for the rest of the Web.

\n","protected":false},"featured_media":6141,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/iframely/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/8579"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/8579/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/6141"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=8579"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=8579"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":6049,"date":"2020-03-03T19:36:32","date_gmt":"2020-03-03T19:36:32","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=6049"},"modified":"2020-08-24T17:05:52","modified_gmt":"2020-08-24T17:05:52","slug":"pym-js-embeds","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/pym-js-embeds/","title":{"rendered":"Pym.js Embeds"},"content":{"rendered":"\n\n\n

Shortcode and Gutenberg block wrappers for embedding responsive iframes using Pym.js. Embedded content resizes vertically to match its container’s width.

\n","protected":false},"excerpt":{"rendered":"

Shortcode and Gutenberg block wrappers for embedding responsive iframes using Pym.js. Embedded content resizes vertically to match its container’s width.

\n","protected":false},"featured_media":6050,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/pym-shortcode/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/6049"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/6049/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/6050"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=6049"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=6049"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":5945,"date":"2020-02-12T15:07:34","date_gmt":"2020-02-12T15:07:34","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=5945"},"modified":"2020-08-24T17:05:52","modified_gmt":"2020-08-24T17:05:52","slug":"pwa","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/pwa/","title":{"rendered":"PWA"},"content":{"rendered":"\n\n\n

Turn your WordPress website into a Progressive Web Application, adopting features such as mobile homescreen shortcuts and offline access.

\n","protected":false},"excerpt":{"rendered":"

Turn your WordPress website into a Progressive Web Application, adopting features such as mobile homescreen shortcuts and offline access.

\n","protected":false},"featured_media":5947,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/pwa/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5945"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5945/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/5947"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=5945"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=5945"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":5938,"date":"2020-02-11T14:07:40","date_gmt":"2020-02-11T14:07:40","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=5938"},"modified":"2020-08-24T17:05:52","modified_gmt":"2020-08-24T17:05:52","slug":"mailchimp-for-wordpress","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/mailchimp-for-wordpress/","title":{"rendered":"MailChimp for WordPress"},"content":{"rendered":"\n\n\n

This plugin allows your visitors to subscribe to your newsletter with ease and helps you grow your Mailchimp lists.

\n","protected":false},"excerpt":{"rendered":"

This plugin allows your visitors to subscribe to your newsletter with ease and helps you grow your Mailchimp lists.

\n","protected":false},"featured_media":5944,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/mailchimp-for-wp/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5938"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5938/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/5944"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=5938"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=5938"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":5870,"date":"2019-12-21T17:59:49","date_gmt":"2019-12-21T17:59:49","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=5870"},"modified":"2021-09-02T15:59:48","modified_gmt":"2021-09-02T15:59:48","slug":"google-site-kit","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/google-site-kit/","title":{"rendered":"Site Kit by Google"},"content":{"rendered":"\n\n\n

Site Kit is the official WordPress plugin from Google for insights about how people find and use your site. Site Kit is the one-stop solution to deploy, manage, and get insights from critical Google tools to make the site successful on the web. It provides authoritative, up-to-date insights from multiple Google products directly on the WordPress dashboard for easy access, all for free.

\n","protected":false},"excerpt":{"rendered":"

Site Kit is the official WordPress plugin from Google for insights about how people find and use your site. Site Kit is the one-stop solution to deploy, manage, and get insights from critical Google tools to make the site successful on the web. It provides authoritative, up-to-date insights from multiple Google products directly on the

\n

Read More

\n","protected":false},"featured_media":5875,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://sitekit.withgoogle.com/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5870"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5870/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/5875"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=5870"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=5870"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":5825,"date":"2019-11-20T12:21:04","date_gmt":"2019-11-20T12:21:04","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=5825"},"modified":"2020-08-24T17:05:52","modified_gmt":"2020-08-24T17:05:52","slug":"newspack-blocks","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/newspack-blocks/","title":{"rendered":"Newspack Blocks"},"content":{"rendered":"\n\n\n

A collection of useful and easy to use Gutenberg based blocks, developed primarily for the Newspack project.

\n","protected":false},"excerpt":{"rendered":"

A collection of useful and easy to use Gutenberg based blocks, developed primarily for the Newspack project.

\n","protected":false},"featured_media":5827,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://github.com/Automattic/newspack-blocks"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5825"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5825/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/5827"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=5825"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=5825"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":5348,"date":"2019-08-30T08:55:48","date_gmt":"2019-08-30T08:55:48","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=5348"},"modified":"2020-08-24T17:05:52","modified_gmt":"2020-08-24T17:05:52","slug":"advanced-ads","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/advanced-ads/","title":{"rendered":"Advanced Ads"},"content":{"rendered":"\n\n\n

Whether you want to monetize your site, grow your existing revenue stream or need an enterprise integration Advanced Ads can help.

\n","protected":false},"excerpt":{"rendered":"

Whether you want to monetize your site, grow your existing revenue stream or need an enterprise integration Advanced Ads can help.

\n","protected":false},"featured_media":5998,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/advanced-ads/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5348"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5348/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/5998"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=5348"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=5348"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":5744,"date":"2019-07-30T23:04:23","date_gmt":"2019-07-30T23:04:23","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=5744"},"modified":"2020-08-24T17:05:52","modified_gmt":"2020-08-24T17:05:52","slug":"syntax-highlighting-code-block","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/syntax-highlighting-code-block/","title":{"rendered":"Syntax-highlighting Code Block"},"content":{"rendered":"\n\n\n

Extending the Code block with syntax highlighting rendered on the server, thus being AMP-compatible and having faster frontend performance.

\n","protected":false},"excerpt":{"rendered":"

Extending the Code block with syntax highlighting rendered on the server, thus being AMP-compatible and having faster frontend performance.

\n","protected":false},"featured_media":5746,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/syntax-highlighting-code-block/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5744"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5744/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/5746"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=5744"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=5744"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":5648,"date":"2019-06-21T14:58:08","date_gmt":"2019-06-21T14:58:08","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=5648"},"modified":"2020-08-24T17:05:52","modified_gmt":"2020-08-24T17:05:52","slug":"wpforms","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/wpforms/","title":{"rendered":"WPForms"},"content":{"rendered":"\n\n\n

Contact Form by WPForms – Drag & Drop Form Builder for WordPress

\n","protected":false},"excerpt":{"rendered":"

Contact Form by WPForms – Drag & Drop Form Builder for WordPress

\n","protected":false},"featured_media":6054,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/wpforms-lite/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5648"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5648/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/6054"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=5648"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=5648"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":5458,"date":"2019-05-24T12:21:14","date_gmt":"2019-05-24T12:21:14","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=5458"},"modified":"2020-08-24T17:05:52","modified_gmt":"2020-08-24T17:05:52","slug":"monsterinsights","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/monsterinsights/","title":{"rendered":"MonsterInsights"},"content":{"rendered":"\n\n\n

MonsterInsights makes it “effortless” to connect your WordPress site with Google Analytics

\n","protected":false},"excerpt":{"rendered":"

MonsterInsights makes it “effortless” to connect your WordPress site with Google Analytics

\n","protected":false},"featured_media":5994,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/google-analytics-for-wordpress/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5458"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5458/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/5994"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=5458"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=5458"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":5450,"date":"2019-05-23T19:59:36","date_gmt":"2019-05-23T19:59:36","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=5450"},"modified":"2020-08-24T17:05:53","modified_gmt":"2020-08-24T17:05:53","slug":"atomic-blocks","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/atomic-blocks/","title":{"rendered":"Atomic Blocks"},"content":{"rendered":"\n\n\n

Atomic Blocks is a collection of page building blocks for the new Gutenberg block editor.

\n","protected":false},"excerpt":{"rendered":"

Atomic Blocks is a collection of page building blocks for the new Gutenberg block editor.

\n","protected":false},"featured_media":5453,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/atomic-blocks/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5450"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5450/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/5453"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=5450"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=5450"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":5428,"date":"2019-05-15T23:47:28","date_gmt":"2019-05-15T23:47:28","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=5428"},"modified":"2020-08-24T17:05:52","modified_gmt":"2020-08-24T17:05:52","slug":"akismet-anti-spam","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/akismet-anti-spam/","title":{"rendered":"Akismet Anti-Spam"},"content":{"rendered":"\n\n\n

Akismet checks your comments and contact form submissions to prevent malicious content.

\n","protected":false},"excerpt":{"rendered":"

Akismet checks your comments and contact form submissions to prevent malicious content.

\n","protected":false},"featured_media":6009,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/akismet/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5428"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5428/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/6009"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=5428"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=5428"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":5357,"date":"2019-03-26T18:18:13","date_gmt":"2019-03-26T18:18:13","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=5357"},"modified":"2020-08-24T17:08:50","modified_gmt":"2020-08-24T17:08:50","slug":"wp-gdpr-cookie-notice","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/wp-gdpr-cookie-notice/","title":{"rendered":"WP GDPR Cookie Notice"},"content":{"rendered":"\n\n\n

WP GDPR Cookie Notice adds a simple performant cookie consent notice with customization features.

\n","protected":false},"excerpt":{"rendered":"

WP GDPR Cookie Notice adds a simple performant cookie consent notice with customization features.

\n","protected":false},"featured_media":6008,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/wp-gdpr-cookie-notice/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5357"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5357/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/6008"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=5357"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=5357"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":5187,"date":"2018-12-06T17:18:43","date_gmt":"2018-12-06T17:18:43","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=5187"},"modified":"2020-08-24T17:08:43","modified_gmt":"2020-08-24T17:08:43","slug":"addthis-social-sharing","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/addthis-social-sharing/","title":{"rendered":"AddThis Social Sharing"},"content":{"rendered":"\n\n\n

AddThis is known for a full suite of website tools including beautifully crafted and simple share buttons.

\n","protected":false},"excerpt":{"rendered":"

AddThis is known for a full suite of website tools including beautifully crafted and simple share buttons.

\n","protected":false},"featured_media":5208,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/addthis/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5187"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5187/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/5208"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=5187"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=5187"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":5116,"date":"2018-12-06T04:42:46","date_gmt":"2018-12-06T04:42:46","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=5116"},"modified":"2020-08-24T17:05:53","modified_gmt":"2020-08-24T17:05:53","slug":"bigcommerce-for-wordpress","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/bigcommerce-for-wordpress/","title":{"rendered":"BigCommerce"},"content":{"rendered":"\n\n\n

BigCommerce plugin: online stores with WordPress on the front end and BigCommerce on the back end. 

\n","protected":false},"excerpt":{"rendered":"

BigCommerce plugin: online stores with WordPress on the front end and BigCommerce on the back end. 

\n","protected":false},"featured_media":5203,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/bigcommerce/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5116"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5116/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/5203"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=5116"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=5116"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":2193,"date":"2018-11-23T09:58:58","date_gmt":"2018-11-23T09:58:58","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=2193"},"modified":"2020-08-24T17:05:53","modified_gmt":"2020-08-24T17:05:53","slug":"yoast","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/yoast/","title":{"rendered":"Yoast SEO"},"content":{"rendered":"\n\n\n

Yoast SEO is the original WordPress SEO plugin since 2008.

\n","protected":false},"excerpt":{"rendered":"

Yoast SEO is the original WordPress SEO plugin since 2008.

\n","protected":false},"featured_media":5069,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/wordpress-seo/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/2193"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/2193/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/5069"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=2193"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=2193"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":2190,"date":"2018-11-23T09:58:20","date_gmt":"2018-11-23T09:58:20","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=2190"},"modified":"2020-08-26T22:16:49","modified_gmt":"2020-08-26T22:16:49","slug":"gutenberg","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/gutenberg/","title":{"rendered":"Gutenberg"},"content":{"rendered":"\n\n\n

Gutenberg is a redesign of the WordPress WYSIWYG editor.

\n","protected":false},"excerpt":{"rendered":"

Gutenberg is a redesign of the WordPress WYSIWYG editor.

\n","protected":false},"featured_media":5070,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/gutenberg/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/2190"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/2190/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/5070"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=2190"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=2190"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":2187,"date":"2018-11-23T09:57:38","date_gmt":"2018-11-23T09:57:38","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=2187"},"modified":"2020-08-24T17:05:53","modified_gmt":"2020-08-24T17:05:53","slug":"setka-editor","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/setka-editor/","title":{"rendered":"Setka Editor"},"content":{"rendered":"\n\n\n

Setka Editor is the first WYSIWYG plugin with page builder functionality.

\n","protected":false},"excerpt":{"rendered":"

Setka Editor is the first WYSIWYG plugin with page builder functionality.

\n","protected":false},"featured_media":5071,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://setka.io/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/2187"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/2187/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/5071"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=2187"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=2187"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}}] \ No newline at end of file diff --git a/data/themes.json b/data/themes.json new file mode 100644 index 00000000000..c35bc8cc276 --- /dev/null +++ b/data/themes.json @@ -0,0 +1 @@ +[{"name":"Sydney","slug":"sydney","version":"1.79","preview_url":"https://wp-themes.com/sydney/","author":{"user_nicename":"athemes","profile":"https://profiles.wordpress.org/athemes","avatar":"https://secure.gravatar.com/avatar/0fe6c4dee6e201e81783d8a0ee12d83b?s=96&d=monsterid&r=g","display_name":"athemes","author":"aThemes","author_url":"https://athemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/sydney/screenshot.png?ver=1.79","rating":98,"num_ratings":495,"homepage":"https://wordpress.org/themes/sydney/","description":"Sydney is a powerful business theme that provides a fast way for companies or freelancers to create an awesome online presence. As well as being fully compatible with Elementor, Sydney brings plenty of customization possibilities like access to all Google Fonts, full color control, layout control, logo upload, full screen slider, header image, sticky navigation and much more. Also, Sydney provides all the construction blocks you need to rapidly create an engaging front page. Looking for a quick start with Sydney? With just a few clicks, you can import one of our existing demos (https://athemes.com/sydney-demos/)","requires":false,"requires_php":"5.6","wporg":true},{"name":"Really Simple","slug":"really-simple","version":"1.0.7","preview_url":"https://wp-themes.com/really-simple/","author":{"user_nicename":"flauberthenriques","profile":"https://profiles.wordpress.org/flauberthenriques","avatar":"https://secure.gravatar.com/avatar/d524eb0811fa44be90481509b000c779?s=96&d=monsterid&r=g","display_name":"Flaubert Henriques","author":"Flaubert Henriques","author_url":"https://profiles.wordpress.org/flauberthenriques/"},"screenshot_url":"//ts.w.org/wp-content/themes/really-simple/screenshot.png?ver=1.0.7","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/really-simple/","description":"Really Simple is a theme for bloggers and writers who need a ultra light and fast theme. The theme focuses on simplicity and loading speed. Yes, Really Simple Theme is also fully AMP compatible. Check the readme.txt file and leave the sidebar perfect after WordPress 5.8 update.","requires":"5.3","requires_php":"7.0","wporg":true},{"name":"Artpop","slug":"artpop","version":"1.0.7","preview_url":"https://wp-themes.com/artpop/","author":{"user_nicename":"designlabthemes","profile":"https://profiles.wordpress.org/designlabthemes","avatar":"https://secure.gravatar.com/avatar/956873f77232371cb89d8a0d7a516354?s=96&d=monsterid&r=g","display_name":"designlabthemes","author":"Design Lab","author_url":"https://www.designlabthemes.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/artpop/screenshot.png?ver=1.0.7","rating":100,"num_ratings":1,"homepage":"https://wordpress.org/themes/artpop/","description":"Artpop is a beautiful Gutenberg-first WordPress theme, carefully designed to help you build your online brand. Unleash your creativity, Artpop takes care of the rest! Well documented and easy to use even for WordPress beginners, Artpop is perfect for a blog, personal portfolio, small business website, and WooCommerce storefront. Easily set your logo, change colors, and create awesome layouts to give your website a truly unique look.","requires":"4.7","requires_php":"5.6","wporg":true},{"name":"Michelle","slug":"michelle","version":"1.2.0","preview_url":"https://wp-themes.com/michelle/","author":{"user_nicename":"webmandesign","profile":"https://profiles.wordpress.org/webmandesign","avatar":"https://secure.gravatar.com/avatar/f4a334f9f5af61b2bd22fcaadb04dd06?s=96&d=monsterid&r=g","display_name":"WebMan Design | Oliver Juhas","author":"WebMan Design","author_url":"https://www.webmandesign.eu/"},"screenshot_url":"//ts.w.org/wp-content/themes/michelle/screenshot.png?ver=1.2.0","rating":100,"num_ratings":3,"homepage":"https://wordpress.org/themes/michelle/","description":"Michelle is accessibility ready WordPress theme for creating inclusive websites easily and with fun using block editor. Useful block patterns, block styles, templates and featured posts functionality allow you to build an eyecatching website in no time. Customize site footer and error 404 page content with block editor! The theme also works with Beaver Builder, Elementor, or any other page builder. It also supports theme builders! Michelle elevates your business, eCommerce, portfolio, or blog website. Check out the demo at https://themedemos.webmandesign.eu/michelle/ and documentation at https://webmandesign.github.io/docs/michelle/","requires":"5.5","requires_php":"7.0","wporg":true},{"name":"Miniva","slug":"miniva","version":"1.6.3","preview_url":"https://wp-themes.com/miniva/","author":{"user_nicename":"tajam","profile":"https://profiles.wordpress.org/tajam","avatar":"https://secure.gravatar.com/avatar/378d4e715829ccf6f1fbe6dfef6eb539?s=96&d=monsterid&r=g","display_name":"Tajam","author":"Tajam","author_url":"https://tajam.id/"},"screenshot_url":"//ts.w.org/wp-content/themes/miniva/screenshot.png?ver=1.6.3","rating":100,"num_ratings":6,"homepage":"https://wordpress.org/themes/miniva/","description":"A fast, lightweight, and mobile-friendly WordPress theme for bloggers. Miniva is built with simplicity, accessibility and performance in mind. The clean and minimal design helps readers focus on your content. It supports AMP and several Jetpack modules including featured content, infinite scroll, content options and social menu. See the theme demo at https://tajam.id/miniva-demo/","requires":"4.5","requires_php":"5.3","wporg":true},{"name":"Iknow","slug":"iknow","version":"1.2.6","preview_url":"https://wp-themes.com/iknow/","author":{"user_nicename":"wpcalc","profile":"https://profiles.wordpress.org/wpcalc","avatar":"https://secure.gravatar.com/avatar/64ca4933fab3d5e50383f0b514acd5f6?s=96&d=monsterid&r=g","display_name":"Wow-Company","author":"Wow-Company","author_url":"https://wow-company.com"},"screenshot_url":"//ts.w.org/wp-content/themes/iknow/screenshot.png?ver=1.2.6","rating":98,"num_ratings":9,"homepage":"https://wordpress.org/themes/iknow/","description":"Iknow WordPress Theme has a minimalistic, responsive and mobile-friendly design. Easy and fast theme. The theme is perfect for creating Knowledge Base, Helpdesk, Wiki and FAQ websites. Ability to set custom icons for each category and tag. Manage the display of categories on the main page of the site. The integrated post rating system VoteUp/VoteDown. Breadcrumbs for easy site navigation. Custom widget to display the current navigation in a category and in a separate post. You can view the appearance and features of the theme on the site https://wow-company.com/wp-theme-iknow/. Documentation https://wow-company.com/faq/category/wow-themes/iknow/","requires":false,"requires_php":"5.6","wporg":true},{"name":"Kadence","slug":"kadence","version":"1.1.3","preview_url":"https://wp-themes.com/kadence/","author":{"user_nicename":"britner","profile":"https://profiles.wordpress.org/britner","avatar":"https://secure.gravatar.com/avatar/3276133b8df529e6e1e58586ab1a309e?s=96&d=monsterid&r=g","display_name":"Ben Ritner - Kadence WP","author":"Kadence WP","author_url":"https://www.kadencewp.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/kadence/screenshot.png?ver=1.1.3","rating":98,"num_ratings":135,"homepage":"https://wordpress.org/themes/kadence/","description":"Kadence Theme is a lightweight yet full featured WordPress theme for creating beautiful fast loading and accessible websites, easier than ever. It features an easy to use drag and drop header and footer builder to build any type of header in minutes. It features a full library of gorgeous starter templates that are easy to modify with our intelligent global font and color controls. With extensive integration with the most popular 3rd party plugins, you can quickly build impressive ecommerce websites, course websites, business websites, and more.","requires":"5.0","requires_php":"7.0","wporg":true},{"name":"Izo","slug":"izo","version":"1.0.12","preview_url":"https://wp-themes.com/izo/","author":{"user_nicename":"elfwp","profile":"https://profiles.wordpress.org/elfwp","avatar":"https://secure.gravatar.com/avatar/1cfedf4555fea4d8fbba2947635586ea?s=96&d=monsterid&r=g","display_name":"elfwp","author":"elfWP","author_url":"https://elfwp.com"},"screenshot_url":"//ts.w.org/wp-content/themes/izo/screenshot.png?ver=1.0.12","rating":90,"num_ratings":2,"homepage":"https://wordpress.org/themes/izo/","description":"Izo a fast, lightweight, native AMP and fully customizable multipurpose WordPress theme. Features include compatibility with many popular plugins like Elementor and other page builders, WooCommerce, WPML, LifterLMS and more. There is also full support for the new WordPress block editor. Izo is fully responsive and our users can take advantage of the many customizer options to easily change styles. Also, if you're looking for a quick start, we're offering a bunch of free starter sites, ready to easily import.","requires":false,"requires_php":"5.6","wporg":true},{"name":"OceanWP","slug":"oceanwp","version":"3.0.5","preview_url":"https://wp-themes.com/oceanwp/","author":{"user_nicename":"oceanwp","profile":"https://profiles.wordpress.org/oceanwp","avatar":"https://secure.gravatar.com/avatar/05f8d3fe2ccb6479bac14e4d40b406dd?s=96&d=monsterid&r=g","display_name":"oceanwp","author":"Nick","author_url":"https://oceanwp.org/about-me/"},"screenshot_url":"//ts.w.org/wp-content/themes/oceanwp/screenshot.png?ver=3.0.5","rating":98,"num_ratings":4911,"homepage":"https://wordpress.org/themes/oceanwp/","description":"OceanWP is the perfect theme for your project. Lightweight and highly extendable, it will enable you to create almost any type of website such a blog, portfolio, business website and WooCommerce storefront with a beautiful & professional design. Very fast, responsive, RTL & translation ready, best SEO practices, unique WooCommerce features to increase conversion and much more. You can even edit the settings on tablet & mobile so your site looks good on every device. Work with the most popular page builders as Elementor, Beaver Builder, Brizy, Visual Composer, Divi, SiteOrigin, etc... Developers will love his extensible codebase making it a joy to customize and extend. Best friend of Elementor & WooCommerce. Looking for a Multi-Purpose theme? Look no further! Check the demos to realize that it's the only theme you will ever need: https://oceanwp.org/demos/","requires":"5.3","requires_php":"7.2","wporg":true},{"name":"Twenty Twenty-One","slug":"twentytwentyone","version":"1.4","preview_url":"https://wp-themes.com/twentytwentyone/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentytwentyone/screenshot.png?ver=1.4","rating":82,"num_ratings":32,"homepage":"https://wordpress.org/themes/twentytwentyone/","description":"Twenty Twenty-One is a blank canvas for your ideas and it makes the block editor your best brush. With new block patterns, which allow you to create a beautiful layout in a matter of seconds, this theme’s soft colors and eye-catching — yet timeless — design will let your work shine. Take it for a spin! See how Twenty Twenty-One elevates your portfolio, business website, or personal blog.","requires":"5.3","requires_php":"5.6","wporg":true},{"slug":"occasio","version":"","preview_url":"https://themezee.com/themes/occasio/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/12/occasio.jpg","rating":0,"num_ratings":0,"homepage":"https://themezee.com/themes/occasio/","requires":"","requires_php":"","wporg":false},{"name":"Tortuga","slug":"tortuga","version":"2.3.4","preview_url":"https://wp-themes.com/tortuga/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/tortuga/screenshot.jpg?ver=2.3.4","rating":96,"num_ratings":19,"homepage":"https://wordpress.org/themes/tortuga/","description":"Tortuga is a highly flexible and adventurous WordPress theme for your pirate magazine or any news related website. It supports three different post layouts, two sidebar schemes and a Magazine Homepage template based on widgets. Other highlights of Tortuga are the beautiful post slider and header widgets area. Arrr!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Treville","slug":"treville","version":"2.1.4","preview_url":"https://wp-themes.com/treville/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/treville/screenshot.jpg?ver=2.1.4","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/treville/","description":"An elegant Blogging & Magazine WordPress Theme with subtle colors and great typography. Treville supports two navigation menus, advanced post settings and a post slider with fullscreen images!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Wellington","slug":"wellington","version":"2.1.4","preview_url":"https://wp-themes.com/wellington/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/wellington/screenshot.jpg?ver=2.1.4","rating":100,"num_ratings":12,"homepage":"https://wordpress.org/themes/wellington/","description":"Wellington is a clean and simple Magazine WordPress theme with beautiful typography and subtle colors. The theme includes two different post layouts, a featured post slider and thoughtful theme settings in the Customizer.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Poseidon","slug":"poseidon","version":"2.3.4","preview_url":"https://wp-themes.com/poseidon/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/poseidon/screenshot.jpg?ver=2.3.4","rating":96,"num_ratings":16,"homepage":"https://wordpress.org/themes/poseidon/","description":"Poseidon is an elegant designed WordPress theme featuring a splendid fullscreen image slideshow. The clean typography and spacious white layout makes it great to share your stories. You can use the theme as simple blog or easily create a news website with the widget-based Magazine Homepage template.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Napoli","slug":"napoli","version":"2.2.4","preview_url":"https://wp-themes.com/napoli/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/napoli/screenshot.jpg?ver=2.2.4","rating":100,"num_ratings":4,"homepage":"https://wordpress.org/themes/napoli/","description":"Napoli is a beautiful WordPress theme perfectly suited for a food magazine. It features a great featured post slider, smooth typography and a grid-layout for posts. Bon appetit!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Mercia","slug":"mercia","version":"1.9.7","preview_url":"https://wp-themes.com/mercia/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/mercia/screenshot.jpg?ver=1.9.7","rating":100,"num_ratings":1,"homepage":"https://wordpress.org/themes/mercia/","description":"Mercia is a flexible and versatile theme perfect for lifestyle, travel, or fashion magazines. It features a modern and minimalist design with great typropaphy. Of course it works on all screen sizes. With multiple blog layouts and powerful Magazine widgets, you can easily create a stunning and dynamic news website in just a few minutes.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Maxwell","slug":"maxwell","version":"2.3.4","preview_url":"https://wp-themes.com/maxwell/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/maxwell/screenshot.jpg?ver=2.3.4","rating":100,"num_ratings":6,"homepage":"https://wordpress.org/themes/maxwell/","description":"Maxwell is a minimalistic and elegant WordPress theme featuring an ultra clean magazine layout. With a beautiful typography, various post layouts and a gorgeous featured posts slideshow Maxwell truly helps you to stand out.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Harrison","slug":"harrison","version":"1.3.4","preview_url":"https://wp-themes.com/harrison/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/harrison/screenshot.jpg?ver=1.3.4","rating":80,"num_ratings":1,"homepage":"https://wordpress.org/themes/harrison/","description":"Harrison is a highly versatile WordPress Theme and was specially designed for use with the new WordPress Block Editor. The theme supports the latest Gutenberg features and provides different blog layouts and extensive post settings. The clean and elegant design is perfect to create all kinds of websites. You should really try it!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Gridbox","slug":"gridbox","version":"2.3.4","preview_url":"https://wp-themes.com/gridbox/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/gridbox/screenshot.jpg?ver=2.3.4","rating":74,"num_ratings":6,"homepage":"https://wordpress.org/themes/gridbox/","description":"Gridbox is a clean and solid WordPress theme featuring a three-column grid-layout for posts. The theme works out of the box and does not require any complicated setup. It is perfectly suited for a simple magazine, blog or portfolio website.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Chronus","slug":"chronus","version":"2.0.5","preview_url":"https://wp-themes.com/chronus/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/chronus/screenshot.jpg?ver=2.0.5","rating":80,"num_ratings":5,"homepage":"https://wordpress.org/themes/chronus/","description":"Chronus is a fast and lightweight WordPress Theme created for magazines, news websites and personal blogs. The Featured Content section and flexible Magazine Widgets give you the ability to highlight your most important posts on the home page. The minimalistic and responsive design focuses on your content and looks great on any screen size.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Donovan","slug":"donovan","version":"1.8.4","preview_url":"https://wp-themes.com/donovan/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/donovan/screenshot.jpg?ver=1.8.4","rating":96,"num_ratings":16,"homepage":"https://wordpress.org/themes/donovan/","description":"Donovan is a flexible, yet easy-to-use blogging theme with a clean and modern design. It features an elegant mobile-first design, three different blog layouts and extensive post settings. Donovan is perfect for your personal blog or for any content-focused website.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Yosemite Lite","slug":"yosemite-lite","version":"1.2.1","preview_url":"https://wp-themes.com/yosemite-lite/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/yosemite-lite/screenshot.jpg?ver=1.2.1","rating":60,"num_ratings":2,"homepage":"https://wordpress.org/themes/yosemite-lite/","description":"Yosemite is a beautiful WordPress blog theme for personal blogs. Yosemite has a modern, clean and elegant look and lots of customization for bloggers. Built on the latest technology of WordPress, Yosemite is lightweight, fast and optimized for all mobile phones.","requires":false,"requires_php":false,"wporg":true},{"name":"Justread","slug":"justread","version":"1.3.0","preview_url":"https://wp-themes.com/justread/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/justread/screenshot.jpg?ver=1.3.0","rating":100,"num_ratings":5,"homepage":"https://wordpress.org/themes/justread/","description":"Justread is a clean and modern WordPress theme that focuses on reading experience. Justread has a grid layout with single column content. The theme uses system fonts and SVG for fast loading. Enjoy reading long content with comfortability.","requires":false,"requires_php":"5.6","wporg":true},{"name":"Floral Lite","slug":"floral-lite","version":"1.4","preview_url":"https://wp-themes.com/floral-lite/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/floral-lite/screenshot.jpg?ver=1.4","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/floral-lite/","description":"Floral is a beautiful WordPress blog theme for personal blogs. Floral has a modern, clean and elegant look and lots of customization for bloggers. Built on the latest technology of WordPress, Floral is lightweight, fast and optimized for all mobile phones.","requires":"4.5","requires_php":"5.6","wporg":true},{"name":"EightyDays Lite","slug":"eightydays-lite","version":"2.2.7","preview_url":"https://wp-themes.com/eightydays-lite/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"http://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/eightydays-lite/screenshot.png?ver=2.2.7","rating":90,"num_ratings":4,"homepage":"https://wordpress.org/themes/eightydays-lite/","description":"EightyDays is a beautiful WordPress travel theme for travel blogs or magazines. EightyDays has a modern, clean and elegant look and lots of customization for bloggers. Built on the latest technology of WordPress, EightyDays is lightweight, fast and optimized for all mobile phones.","requires":false,"requires_php":false,"wporg":true},{"name":"eStar","slug":"estar","version":"1.3.4","preview_url":"https://wp-themes.com/estar/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/estar/screenshot.png?ver=1.3.4","rating":100,"num_ratings":3,"homepage":"https://wordpress.org/themes/estar/","description":"eStar is a super fast, lightweight (less than 10KB on the front end), responsive and highly customizable WordPress theme suitable for blog, personal portfolio and business websites. It works perfectly with Gutenberg and all WordPress blocks. You can also pair it with any page builder plugin like Elementor, Beaver Builder, Visual Composer, SiteOrigin, Divi, Thrive Architect, Brizy and more. eStar is written from scratch with performance, extensibility, usability and SEO in mind. The theme follows best practices, well-coded and follows the latest web standards (HTML5, SVG, JavaScript). Some of the other features: microdata integration, widget areas, sidebar layouts, custom colors, custom Google fonts, translation ready. Looking for a perfect base theme? Look no further. eStar is fast, fully customizable WordPress theme that you can use for building any kind of website like business agencies, corporate, portfolio, education, university portal, consulting, church, restaurant, medical and so on. Learn more about the theme at https://gretathemes.com/wordpress-themes/estar/","requires":false,"requires_php":"5.6","wporg":true},{"slug":"stow-2","version":"","preview_url":"https://wordpress.com/theme/stow","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/stow.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/stow","requires":"","requires_php":"","wporg":false},{"slug":"shawburn","version":"","preview_url":"https://wordpress.com/theme/shawburn","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/shawborn.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/shawburn","requires":"","requires_php":"","wporg":false},{"slug":"rivington-2","version":"","preview_url":"https://wordpress.com/theme/rivington","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/rivington.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/rivington","requires":"","requires_php":"","wporg":false},{"slug":"redhill-2","version":"","preview_url":"https://wordpress.com/theme/redhill","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/redhill.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/redhill","requires":"","requires_php":"","wporg":false},{"slug":"morden-2","version":"","preview_url":"https://wordpress.com/theme/morden","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/morden.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/morden","requires":"","requires_php":"","wporg":false},{"slug":"maywood-2","version":"","preview_url":"https://wordpress.com/theme/maywood","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/maywood.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/maywood","requires":"","requires_php":"","wporg":false},{"slug":"mayland","version":"","preview_url":"https://wordpress.com/theme/mayland","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/mmayland.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/mayland","requires":"","requires_php":"","wporg":false},{"slug":"leven-2","version":"","preview_url":"https://wordpress.com/theme/leven","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/leven.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/leven","requires":"","requires_php":"","wporg":false},{"slug":"hever-2","version":"","preview_url":"https://wordpress.com/theme/hever","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/hever.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/hever","requires":"","requires_php":"","wporg":false},{"slug":"exford-2","version":"","preview_url":"https://wordpress.com/theme/exford","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/exford.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/exford","requires":"","requires_php":"","wporg":false},{"slug":"brompton-2","version":"","preview_url":"https://wordpress.com/theme/brompton","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/brompton.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/brompton","requires":"","requires_php":"","wporg":false},{"slug":"barnsbury-2","version":"","preview_url":"https://wordpress.com/theme/barnsbury","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/Barnsbury.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/barnsbury","requires":"","requires_php":"","wporg":false},{"slug":"balasana-2","version":"","preview_url":"https://wordpress.com/theme/balasana","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/Balasana.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/balasana","requires":"","requires_php":"","wporg":false},{"slug":"alves-2","version":"","preview_url":"https://wordpress.com/theme/alves","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/Alves.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/alves","requires":"","requires_php":"","wporg":false},{"slug":"varia-2","version":"","preview_url":"https://wordpress.com/theme/varia","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/varia.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/varia","requires":"","requires_php":"","wporg":false},{"name":"Activation","slug":"activation","version":"1.2.2","preview_url":"https://wp-themes.com/activation/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/activation/screenshot.png?ver=1.2.2","rating":100,"num_ratings":1,"homepage":"https://wordpress.org/themes/activation/","description":"Activation is a Primer child theme with a colorful, fitness-focused design.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":false,"wporg":true},{"name":"Velux","slug":"velux","version":"1.1.3","preview_url":"https://wp-themes.com/velux/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/velux/screenshot.png?ver=1.1.3","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/velux/","description":"Velux is a Primer child theme with a clean, professional, and upscale design.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":"5.6.0","wporg":true},{"name":"Scribbles","slug":"scribbles","version":"1.1.2","preview_url":"https://wp-themes.com/scribbles/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/scribbles/screenshot.png?ver=1.1.2","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/scribbles/","description":"Scribbles is a Primer child theme with a playful and fun mood.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.1","requires_php":false,"wporg":true},{"name":"Ascension","slug":"ascension","version":"1.1.5","preview_url":"https://wp-themes.com/ascension/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/ascension/screenshot.png?ver=1.1.5","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/ascension/","description":"Ascension is a Primer child theme with a business-oriented design.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":"5.6.0","wporg":true},{"name":"Uptown Style","slug":"uptown-style","version":"1.1.3","preview_url":"https://wp-themes.com/uptown-style/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/uptown-style/screenshot.png?ver=1.1.3","rating":100,"num_ratings":3,"homepage":"https://wordpress.org/themes/uptown-style/","description":"Uptown Style is a Primer child theme with elegance and class.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":"5.6.0","wporg":true},{"name":"Go","slug":"go","version":"1.4.4","preview_url":"https://wp-themes.com/go/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":"GoDaddy","author_url":"https://www.godaddy.com"},"screenshot_url":"//ts.w.org/wp-content/themes/go/screenshot.png?ver=1.4.4","rating":94,"num_ratings":14,"homepage":"https://wordpress.org/themes/go/","description":"Go is an innovative, Gutenberg-first WordPress theme, hyper-focused on empowering makers to build beautifully rich websites with WordPress.","requires":false,"requires_php":"5.6","wporg":true},{"slug":"navigation-pro","version":"","preview_url":"https://my.studiopress.com/themes/navigation/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/02/navigationPro.jpg","rating":0,"num_ratings":0,"homepage":"https://my.studiopress.com/themes/navigation/","requires":"","requires_php":"","wporg":false},{"name":"Memory","slug":"memory","version":"2.0.1","preview_url":"https://wp-themes.com/memory/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/memory/screenshot.png?ver=2.0.1","rating":60,"num_ratings":1,"homepage":"https://wordpress.org/themes/memory/","description":"Clean and beautiful personal blog theme.","requires":"4.5","requires_php":"5.2","wporg":true},{"slug":"sacha","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/sacha9.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","requires":"","requires_php":"","wporg":false},{"slug":"scott-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/scott.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","requires":"","requires_php":"","wporg":false},{"slug":"katharine-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/katharine.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","requires":"","requires_php":"","wporg":false},{"slug":"joseph-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/joseph-1.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","requires":"","requires_php":"","wporg":false},{"slug":"nelson-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/nelson.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","requires":"","requires_php":"","wporg":false},{"slug":"newspack","version":"","preview_url":"https://github.com/Automattic/newspack-theme","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2019/11/newspack.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme","requires":"","requires_php":"","wporg":false},{"name":"Twenty Twenty","slug":"twentytwenty","version":"1.8","preview_url":"https://wp-themes.com/twentytwenty/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentytwenty/screenshot.png?ver=1.8","rating":88,"num_ratings":60,"homepage":"https://wordpress.org/themes/twentytwenty/","description":"Our default theme for 2020 is designed to take full advantage of the flexibility of the block editor. Organizations and businesses have the ability to create dynamic landing pages with endless layouts using the group and column blocks. The centered content column and fine-tuned typography also makes it perfect for traditional blogs. Complete editor styles give you a good idea of what your content will look like, even before you publish. You can give your site a personal touch by changing the background colors and the accent color in the Customizer. The colors of all elements on your site are automatically calculated based on the colors you pick, ensuring a high, accessible color contrast for your visitors.","requires":"4.7","requires_php":"5.2.4","wporg":true},{"name":"Primer","slug":"primer","version":"1.8.9","preview_url":"https://wp-themes.com/primer/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/primer/screenshot.png?ver=1.8.9","rating":90,"num_ratings":15,"homepage":"https://wordpress.org/themes/primer/","description":"Primer is a powerful theme that brings clarity to your content in a fresh design.","requires":false,"requires_php":false,"wporg":true},{"slug":"essence-pro-theme","version":"","preview_url":"https://my.studiopress.com/themes/essence/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2019/07/cropped-Essence-Pro.png","rating":0,"num_ratings":0,"homepage":"https://my.studiopress.com/themes/essence/","requires":"","requires_php":"","wporg":false},{"slug":"genesis-theme-framework","version":"","preview_url":"https://my.studiopress.com/themes/genesis/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2019/07/cropped-Genesis.png","rating":0,"num_ratings":0,"homepage":"https://my.studiopress.com/themes/genesis/","requires":"","requires_php":"","wporg":false},{"name":"Twenty Fourteen","slug":"twentyfourteen","version":"3.2","preview_url":"https://wp-themes.com/twentyfourteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyfourteen/screenshot.png?ver=3.2","rating":88,"num_ratings":93,"homepage":"https://wordpress.org/themes/twentyfourteen/","description":"In 2014, our default theme lets you create a responsive magazine website with a sleek, modern design. Feature your favorite homepage content in either a grid or a slider. Use the three widget areas to customize your website, and change your content's layout with a full-width page template and a contributor page to show off your authors. Creating a magazine website with WordPress has never been easier.","requires":false,"requires_php":"5.2.4","wporg":true},{"name":"Twenty Thirteen","slug":"twentythirteen","version":"3.4","preview_url":"https://wp-themes.com/twentythirteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentythirteen/screenshot.png?ver=3.4","rating":82,"num_ratings":62,"homepage":"https://wordpress.org/themes/twentythirteen/","description":"The 2013 theme for WordPress takes us back to the blog, featuring a full range of post formats, each displayed beautifully in their own unique way. Design details abound, starting with a vibrant color scheme and matching header images, beautiful typography and icons, and a flexible layout that looks great on any device, big or small.","requires":"3.6","requires_php":"5.2.4","wporg":true},{"name":"Twenty Eleven","slug":"twentyeleven","version":"3.9","preview_url":"https://wp-themes.com/twentyeleven/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyeleven/screenshot.png?ver=3.9","rating":92,"num_ratings":49,"homepage":"https://wordpress.org/themes/twentyeleven/","description":"The 2011 theme for WordPress is sophisticated, lightweight, and adaptable. Make it yours with a custom menu, header image, and background -- then go further with available theme options for light or dark color scheme, custom link colors, and three layout choices. Twenty Eleven comes equipped with a Showcase page template that transforms your front page into a showcase to show off your best content, widget support galore (sidebar, three footer areas, and a Showcase page widget area), and a custom \"Ephemera\" widget to display your Aside, Link, Quote, or Status posts. Included are styles for print and for the admin editor, support for featured images (as custom header images on posts and pages and as large images on featured \"sticky\" posts), and special styles for six different post formats.","requires":false,"requires_php":"5.2.4","wporg":true},{"name":"Twenty Ten","slug":"twentyten","version":"3.5","preview_url":"https://wp-themes.com/twentyten/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyten/screenshot.png?ver=3.5","rating":94,"num_ratings":50,"homepage":"https://wordpress.org/themes/twentyten/","description":"The 2010 theme for WordPress is stylish, customizable, simple, and readable -- make it yours with a custom menu, header image, and background. Twenty Ten supports six widgetized areas (two in the sidebar, four in the footer) and featured images (thumbnails for gallery posts and custom header images for posts and pages). It includes stylesheets for print and the admin Visual Editor, special styles for posts in the \"Asides\" and \"Gallery\" categories, and has an optional one-column page template that removes the sidebar.","requires":"3.0","requires_php":"5.2.4","wporg":true},{"name":"Zakra","slug":"zakra","version":"2.0.3","preview_url":"https://wp-themes.com/zakra/","author":{"user_nicename":"themegrill","profile":"https://profiles.wordpress.org/themegrill","avatar":"https://secure.gravatar.com/avatar/fa3cda768036cc3983458ed23394a43d?s=96&d=monsterid&r=g","display_name":"ThemeGrill","author":"ThemeGrill","author_url":"https://themegrill.com"},"screenshot_url":"//ts.w.org/wp-content/themes/zakra/screenshot.jpg?ver=2.0.3","rating":100,"num_ratings":474,"homepage":"https://wordpress.org/themes/zakra/","description":"Zakra is flexible, fast, lightweight and modern multipurpose theme that comes with many starter free sites (currently 10+ free starter sites and more will be added later) that you can use to make your site beautiful and professional. Check all the starter sites at https://zakratheme.com/demos. Suitable for personal blog, portfolio, WooCommerce stores, business websites and niche-based sites (like Cafe, Spa, Charity, Yoga, Wedding, Dentist, Education etc) as well. Works with Elementor plus other major page builders so you can create any layout you want. The theme is responsive, Gutenberg compatible, SEO friendly, translation ready and major WordPress plugins compatible.","requires":false,"requires_php":"5.6","wporg":true},{"name":"Neve","slug":"neve","version":"3.0.2","preview_url":"https://wp-themes.com/neve/","author":{"user_nicename":"themeisle","profile":"https://profiles.wordpress.org/themeisle","avatar":"https://secure.gravatar.com/avatar/a0ec097eaf5f30933eb00c1175d4bd55?s=96&d=monsterid&r=g","display_name":"Themeisle","author":"ThemeIsle","author_url":"https://themeisle.com"},"screenshot_url":"//ts.w.org/wp-content/themes/neve/screenshot.png?ver=3.0.2","rating":96,"num_ratings":803,"homepage":"https://wordpress.org/themes/neve/","description":"Neve is a super fast, easily customizable, multi-purpose theme. It’s perfect for blogs, small business, startups, agencies, firms, e-commerce shops (WooCommerce storefront) as well as personal portfolio sites and most types of projects. A fully AMP optimized and responsive theme, Neve will load in mere seconds and adapt perfectly on any viewing device. While it is lightweight and has a minimalist design, the theme is highly extendable, it has a highly SEO optimized code, resulting in top rankings in Google search results. Neve works perfectly with Gutenberg and the most popular page builders (Elementor, Brizy, Beaver Builder, Visual Composer, SiteOrigin, Divi). Neve is also WooCommerce ready, responsive, RTL & translation ready. Look no further. Neve is the perfect theme for you!","requires":false,"requires_php":"7.0","wporg":true},{"name":"Astra","slug":"astra","version":"3.6.9","preview_url":"https://wp-themes.com/astra/","author":{"user_nicename":"brainstormforce","profile":"https://profiles.wordpress.org/brainstormforce","avatar":"https://secure.gravatar.com/avatar/9f4255d653745eaa037105cd5eab2295?s=96&d=monsterid&r=g","display_name":"Brainstorm Force","author":"Brainstorm Force","author_url":"https://wpastra.com/about/"},"screenshot_url":"//ts.w.org/wp-content/themes/astra/screenshot.jpg?ver=3.6.9","rating":98,"num_ratings":4979,"homepage":"https://wordpress.org/themes/astra/","description":"Astra is fast, fully customizable & beautiful WordPress theme suitable for blog, personal portfolio, business website and WooCommerce storefront. It is very lightweight (less than 50KB on frontend) and offers unparalleled speed. Built with SEO in mind, Astra comes with Schema.org code integrated and is Native AMP ready so search engines will love your site. It offers special features and templates so it works perfectly with all page builders like Elementor, Beaver Builder, Visual Composer, SiteOrigin, Divi, etc. Some of the other features: # WooCommerce Ready # Responsive # RTL & Translation Ready # Extendible with premium addons # Regularly updated # Designed, Developed, Maintained & Supported by Brainstorm Force. Looking for a perfect base theme? Look no further. Astra is fast, fully customizable and WooCommerce ready theme that you can use for building any kind of website!","requires":"5.3","requires_php":"5.3","wporg":true},{"name":"Twenty Twelve","slug":"twentytwelve","version":"3.5","preview_url":"https://wp-themes.com/twentytwelve/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentytwelve/screenshot.png?ver=3.5","rating":92,"num_ratings":155,"homepage":"https://wordpress.org/themes/twentytwelve/","description":"The 2012 theme for WordPress is a fully responsive theme that looks great on any device. Features include a front page template with its own widgets, an optional display font, styling for post formats on both index and single views, and an optional no-sidebar page template. Make it yours with a custom menu, header image, and background.","requires":"3.5","requires_php":"5.2.4","wporg":true},{"name":"Twenty Nineteen","slug":"twentynineteen","version":"2.1","preview_url":"https://wp-themes.com/twentynineteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentynineteen/screenshot.png?ver=2.1","rating":74,"num_ratings":59,"homepage":"https://wordpress.org/themes/twentynineteen/","description":"Our 2019 default theme is designed to show off the power of the block editor. It features custom styles for all the default blocks, and is built so that what you see in the editor looks like what you'll see on your website. Twenty Nineteen is designed to be adaptable to a wide range of websites, whether you’re running a photo blog, launching a new business, or supporting a non-profit. Featuring ample whitespace and modern sans-serif headlines paired with classic serif body text, it's built to be beautiful on all screen sizes.","requires":"4.9.6","requires_php":"5.2.4","wporg":true},{"name":"Twenty Seventeen","slug":"twentyseventeen","version":"2.8","preview_url":"https://wp-themes.com/twentyseventeen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyseventeen/screenshot.png?ver=2.8","rating":88,"num_ratings":114,"homepage":"https://wordpress.org/themes/twentyseventeen/","description":"Twenty Seventeen brings your site to life with header video and immersive featured images. With a focus on business sites, it features multiple sections on the front page as well as widgets, navigation and social menus, a logo, and more. Personalize its asymmetrical grid with a custom color scheme and showcase your multimedia content with post formats. Our default theme for 2017 works great in many languages, for any abilities, and on any device.","requires":"4.7","requires_php":"5.2.4","wporg":true},{"name":"Twenty Sixteen","slug":"twentysixteen","version":"2.5","preview_url":"https://wp-themes.com/twentysixteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentysixteen/screenshot.png?ver=2.5","rating":82,"num_ratings":79,"homepage":"https://wordpress.org/themes/twentysixteen/","description":"Twenty Sixteen is a modernized take on an ever-popular WordPress layout — the horizontal masthead with an optional right sidebar that works perfectly for blogs and websites. It has custom color options with beautiful default color schemes, a harmonious fluid grid using a mobile-first approach, and impeccable polish in every detail. Twenty Sixteen will make your WordPress look beautiful everywhere.","requires":"4.4","requires_php":"5.2.4","wporg":true},{"name":"Twenty Fifteen","slug":"twentyfifteen","version":"3.0","preview_url":"https://wp-themes.com/twentyfifteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyfifteen/screenshot.png?ver=3.0","rating":88,"num_ratings":50,"homepage":"https://wordpress.org/themes/twentyfifteen/","description":"Our 2015 default theme is clean, blog-focused, and designed for clarity. Twenty Fifteen's simple, straightforward typography is readable on a wide variety of screen sizes, and suitable for multiple languages. We designed it using a mobile-first approach, meaning your content takes center-stage, regardless of whether your visitors arrive by smartphone, tablet, laptop, or desktop computer.","requires":false,"requires_php":"5.2.4","wporg":true}] \ No newline at end of file diff --git a/package.json b/package.json index f32ed48991f..68d800435bc 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,7 @@ "@wordpress/icons": "5.0.2", "@wordpress/is-shallow-equal": "4.2.0", "@wordpress/url": "3.2.2", + "axios": "0.21.1", "classnames": "2.3.1", "clipboard": "2.0.8", "prop-types": "15.7.2", @@ -74,6 +75,7 @@ "eslint-plugin-jsdoc": "36.1.0", "eslint-plugin-react": "7.26.0", "eslint-plugin-react-hooks": "4.2.0", + "fs": "0.0.1-security", "grunt": "1.4.1", "grunt-contrib-clean": "2.0.0", "grunt-contrib-copy": "1.0.0", @@ -92,12 +94,15 @@ "react-test-renderer": "17.0.2", "rtlcss-webpack-plugin": "4.0.6", "svgo": "2.7.0", - "webpackbar": "5.0.0-3" + "underscore": "1.13.1", + "webpackbar": "5.0.0-3", + "wporg-api-client": "1.0.1" }, "scripts": { "build:dev": "cross-env NODE_ENV=development npm-run-all 'build:!(dev|prod)'", "build:prod": "cross-env NODE_ENV=production npm-run-all 'build:!(dev|prod)'", "build:prepare": "grunt clean", + "build:json": "node ./bin/update-extension-json.js", "build:js": "wp-scripts build", "build:run": "grunt build", "build:zip": "grunt create-build-zip", From 5deff42dcf639173739793ceb4558081040314e2 Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Sat, 4 Sep 2021 00:55:19 +0530 Subject: [PATCH 004/105] update script for plugin and theme json data --- bin/update-extension-json.js | 14 +++++++------- data/plugins.json | 2 +- data/themes.json | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/bin/update-extension-json.js b/bin/update-extension-json.js index 06627d8819a..33f20a49ad3 100644 --- a/bin/update-extension-json.js +++ b/bin/update-extension-json.js @@ -59,7 +59,7 @@ class UpdateExtensionJson { // eslint-disable-next-line no-await-in-loop const plugin = await this.preparePlugin( item ); if ( plugin ) { - this.plugins.push( item ); + this.plugins.push( plugin ); } } else if ( ecosystemTerm === themeTerm ) { // eslint-disable-next-line no-await-in-loop @@ -250,7 +250,7 @@ class UpdateExtensionJson { requires: '', tested: '', requires_php: '', - rating: '', + rating: 0, ratings: { 1: 0, 2: 0, @@ -258,11 +258,11 @@ class UpdateExtensionJson { 4: 0, 5: 0, }, - num_ratings: '', - support_threads: '', - support_threads_resolved: '', - active_installs: '', - downloaded: '', + num_ratings: 0, + support_threads: 0, + support_threads_resolved: 0, + active_installs: 0, + downloaded: 0, last_updated: '', added: '', homepage: item?.meta?.ampps_ecosystem_url, diff --git a/data/plugins.json b/data/plugins.json index 670736a17d9..6313a94694c 100644 --- a/data/plugins.json +++ b/data/plugins.json @@ -1 +1 @@ -[{"id":10197,"date":"2021-08-25T19:11:57","date_gmt":"2021-08-25T19:11:57","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=10197"},"modified":"2021-08-25T19:11:57","modified_gmt":"2021-08-25T19:11:57","slug":"podcast-player-your-podcasting-companion","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/podcast-player-your-podcasting-companion/","title":{"rendered":"Podcast Player – Your Podcasting Companion"},"content":{"rendered":"\n\n\n

An easy way to show and play your podcast episodes using podcasting feed url.

\n","protected":false},"excerpt":{"rendered":"

An easy way to show and play your podcast episodes using podcasting feed url.

\n","protected":false},"featured_media":10199,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/podcast-player/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/10197"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/10197/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/10199"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=10197"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=10197"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":10192,"date":"2021-08-25T18:43:59","date_gmt":"2021-08-25T18:43:59","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=10192"},"modified":"2021-08-25T18:44:54","modified_gmt":"2021-08-25T18:44:54","slug":"wpsso-schema-json-ld-markup","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/wpsso-schema-json-ld-markup/","title":{"rendered":"WPSSO Schema JSON-LD Markup"},"content":{"rendered":"\n\n\n

Google Rich Results with JSON-LD structured data for Articles, Carousels (aka Item Lists), Claim Reviews, Events, FAQ pages, How-Tos, Images, Local Business / Local SEO, Organizations, Products, Ratings, Recipes, Restaurants, Reviews, Video Objects, and much more.

\n","protected":false},"excerpt":{"rendered":"

Google Rich Results with JSON-LD structured data for Articles, Carousels (aka Item Lists), Claim Reviews, Events, FAQ pages, How-Tos, Images, Local Business / Local SEO, Organizations, Products, Ratings, Recipes, Restaurants, Reviews, Video Objects, and much more.

\n","protected":false},"featured_media":10196,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/wpsso-schema-json-ld/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/10192"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/10192/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/10196"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=10192"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=10192"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":10167,"date":"2021-08-05T15:30:53","date_gmt":"2021-08-05T15:30:53","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=10167"},"modified":"2021-08-05T15:30:53","modified_gmt":"2021-08-05T15:30:53","slug":"shortpixel-image-optimizer","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/shortpixel-image-optimizer/","title":{"rendered":"ShortPixel Image Optimizer"},"content":{"rendered":"\n\n\n

A freemium, easy to use, comprehensive, stable and frequently updated image compression plugin supported by the friendly team that created it

\n","protected":false},"excerpt":{"rendered":"

A freemium, easy to use, comprehensive, stable and frequently updated image compression plugin supported by the friendly team that created it

\n","protected":false},"featured_media":10169,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/shortpixel-image-optimiser/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/10167"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/10167/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/10169"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=10167"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=10167"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":10118,"date":"2021-07-06T16:17:53","date_gmt":"2021-07-06T16:17:53","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=10118"},"modified":"2021-07-06T16:17:53","modified_gmt":"2021-07-06T16:17:53","slug":"toolkit-for-twenty-twenty-twenty-one-gutenberg-blocks","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/toolkit-for-twenty-twenty-twenty-one-gutenberg-blocks/","title":{"rendered":"Toolkit for Twenty Twenty & Twenty-One, Gutenberg Blocks"},"content":{"rendered":"\n\n\n

Twentig helps you customize the default WordPress themes (Twenty Twenty-One and Twenty Twenty) the way you want with Google Fonts, colors, custom layouts, and many more options.

\n","protected":false},"excerpt":{"rendered":"

Twentig helps you customize the default WordPress themes (Twenty Twenty-One and Twenty Twenty) the way you want with Google Fonts, colors, custom layouts, and many more options.

\n","protected":false},"featured_media":10123,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/twentig/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/10118"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/10118/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/10123"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=10118"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=10118"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":10076,"date":"2021-06-18T17:58:22","date_gmt":"2021-06-18T17:58:22","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=10076"},"modified":"2021-06-18T17:58:22","modified_gmt":"2021-06-18T17:58:22","slug":"custom-post-type-ui","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/custom-post-type-ui/","title":{"rendered":"Custom Post Type UI"},"content":{"rendered":"\n\n\n

Custom Post Type UI provides an easy to use interface for registering and managing custom post types and taxonomies for your website.

\n","protected":false},"excerpt":{"rendered":"

Custom Post Type UI provides an easy to use interface for registering and managing custom post types and taxonomies for your website.

\n","protected":false},"featured_media":10078,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/custom-post-type-ui/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/10076"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/10076/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/10078"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=10076"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=10076"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":10051,"date":"2021-06-10T09:42:41","date_gmt":"2021-06-10T09:42:41","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=10051"},"modified":"2021-06-10T09:42:41","modified_gmt":"2021-06-10T09:42:41","slug":"flex-posts-widget-and-gutenberg-block","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/flex-posts-widget-and-gutenberg-block/","title":{"rendered":"Flex Posts – Widget and Gutenberg Block"},"content":{"rendered":"\n\n\n

Display posts in various different layouts, using a block or widget. It is useful for a news site where you need to display a lot of posts in a page.

\n","protected":false},"excerpt":{"rendered":"

Display posts in various different layouts, using a block or widget. It is useful for a news site where you need to display a lot of posts in a page.

\n","protected":false},"featured_media":10057,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/flex-posts/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/10051"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/10051/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/10057"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=10051"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=10051"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":10050,"date":"2021-06-10T09:38:18","date_gmt":"2021-06-10T09:38:18","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=10050"},"modified":"2021-06-10T09:38:18","modified_gmt":"2021-06-10T09:38:18","slug":"yet-another-related-posts-plugin-yarpp","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/yet-another-related-posts-plugin-yarpp/","title":{"rendered":"Yet Another Related Posts Plugin (YARPP)"},"content":{"rendered":"\n\n\n

Displays pages, posts, and custom post types related to the current entry, introducing your readers to other relevant content on your site.

\n","protected":false},"excerpt":{"rendered":"

Displays pages, posts, and custom post types related to the current entry, introducing your readers to other relevant content on your site.

\n","protected":false},"featured_media":10054,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/yet-another-related-posts-plugin/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/10050"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/10050/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/10054"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=10050"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=10050"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":10042,"date":"2021-06-01T22:01:27","date_gmt":"2021-06-01T22:01:27","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=10042"},"modified":"2021-06-01T22:01:27","modified_gmt":"2021-06-01T22:01:27","slug":"superb-wordpress-table","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/superb-wordpress-table/","title":{"rendered":"Superb WordPress Table"},"content":{"rendered":"\n\n\n

Responsive & SEO Optimized tables. Get your Google Featured Snippets. Different table designs, table shortcodes & lightweight code.

\n","protected":false},"excerpt":{"rendered":"

Responsive & SEO Optimized tables. Get your Google Featured Snippets. Different table designs, table shortcodes & lightweight code.

\n","protected":false},"featured_media":10044,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/superb-tables/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/10042"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/10042/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/10044"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=10042"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=10042"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":9994,"date":"2021-05-10T21:14:48","date_gmt":"2021-05-10T21:14:48","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=9994"},"modified":"2021-05-10T21:14:48","modified_gmt":"2021-05-10T21:14:48","slug":"floating-button","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/floating-button/","title":{"rendered":"Floating Button"},"content":{"rendered":"\n\n\n

The Floating Button is the free WordPress plugin for creating the original sticky floating actions buttons.

\n","protected":false},"excerpt":{"rendered":"

The Floating Button is the free WordPress plugin for creating the original sticky floating actions buttons.

\n","protected":false},"featured_media":9991,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/floating-button"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9994"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9994/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/9991"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=9994"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=9994"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":9943,"date":"2021-05-03T23:50:35","date_gmt":"2021-05-03T23:50:35","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=9943"},"modified":"2021-05-03T23:50:35","modified_gmt":"2021-05-03T23:50:35","slug":"breadcrumb-navxt","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/breadcrumb-navxt/","title":{"rendered":"Breadcrumb NavXT"},"content":{"rendered":"\n\n\n

This plugin generates locational breadcrumb trails for your WordPress powered blog or website. These breadcrumb trails are highly customizable to suit the needs of just about any website running WordPress. 

\n","protected":false},"excerpt":{"rendered":"

This plugin generates locational breadcrumb trails for your WordPress powered blog or website. These breadcrumb trails are highly customizable to suit the needs of just about any website running WordPress. 

\n","protected":false},"featured_media":9950,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/breadcrumb-navxt/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9943"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9943/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/9950"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=9943"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=9943"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":9944,"date":"2021-05-03T23:48:37","date_gmt":"2021-05-03T23:48:37","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=9944"},"modified":"2021-05-03T23:48:37","modified_gmt":"2021-05-03T23:48:37","slug":"wp-recipe-maker","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/wp-recipe-maker/","title":{"rendered":"WP Recipe Maker"},"content":{"rendered":"\n\n\n

WP Recipe Maker is the easy recipe plugin that everyone can use. An easy workflow allows you to add recipes to any post or page with automatic JSON-LD metadata for your recipes.

\n","protected":false},"excerpt":{"rendered":"

WP Recipe Maker is the easy recipe plugin that everyone can use. An easy workflow allows you to add recipes to any post or page with automatic JSON-LD metadata for your recipes.

\n","protected":false},"featured_media":9955,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/wp-recipe-maker/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9944"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9944/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/9955"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=9944"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=9944"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":9811,"date":"2021-03-13T02:50:10","date_gmt":"2021-03-13T02:50:10","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=9811"},"modified":"2021-03-13T02:50:15","modified_gmt":"2021-03-13T02:50:15","slug":"slim-seo","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/slim-seo/","title":{"rendered":"Slim SEO"},"content":{"rendered":"\n\n\n

A lightweight SEO plugin for WordPress.

\n","protected":false},"excerpt":{"rendered":"

A lightweight SEO plugin for WordPress.

\n","protected":false},"featured_media":9806,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/slim-seo/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9811"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9811/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/9806"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=9811"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=9811"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":9812,"date":"2021-03-13T02:45:39","date_gmt":"2021-03-13T02:45:39","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=9812"},"modified":"2021-03-13T02:45:45","modified_gmt":"2021-03-13T02:45:45","slug":"schema-structured-data-for-wp-amp","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/schema-structured-data-for-wp-amp/","title":{"rendered":"Schema & Structured Data for WP & AMP"},"content":{"rendered":"\n\n\n

Schema & Structured Data for WP & AMP adds Google Rich Snippets markup according to Schema.org guidelines to structure your site for SEO.

\n","protected":false},"excerpt":{"rendered":"

Schema & Structured Data for WP & AMP adds Google Rich Snippets markup according to Schema.org guidelines to structure your site for SEO.

\n","protected":false},"featured_media":9805,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/schema-and-structured-data-for-wp/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9812"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9812/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/9805"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=9812"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=9812"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":9767,"date":"2021-03-08T00:31:25","date_gmt":"2021-03-08T00:31:25","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=9767"},"modified":"2021-03-08T00:31:29","modified_gmt":"2021-03-08T00:31:29","slug":"generateblocks","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/generateblocks/","title":{"rendered":"GenerateBlocks"},"content":{"rendered":"\n\n\n

Add incredible versatility to your editor without bloating it with tons of one-dimensional blocks.

\n","protected":false},"excerpt":{"rendered":"

Add incredible versatility to your editor without bloating it with tons of one-dimensional blocks.

\n","protected":false},"featured_media":9764,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/generateblocks/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9767"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9767/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/9764"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=9767"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=9767"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":9725,"date":"2021-02-19T22:17:25","date_gmt":"2021-02-19T22:17:25","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=9725"},"modified":"2021-02-19T22:17:28","modified_gmt":"2021-02-19T22:17:28","slug":"blackhole-for-bad-bots","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/blackhole-for-bad-bots/","title":{"rendered":"Blackhole for Bad Bots"},"content":{"rendered":"\n\n\n

Add your own virtual black hole trap for bad bots.

\n","protected":false},"excerpt":{"rendered":"

Add your own virtual black hole trap for bad bots.

\n","protected":false},"featured_media":9697,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/blackhole-bad-bots/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9725"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9725/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/9697"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=9725"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=9725"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":9722,"date":"2021-02-19T22:13:42","date_gmt":"2021-02-19T22:13:42","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=9722"},"modified":"2021-02-19T22:16:22","modified_gmt":"2021-02-19T22:16:22","slug":"page-view-count","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/page-view-count/","title":{"rendered":"Page View Count"},"content":{"rendered":"\n\n\n

Provides visitors and site owners the ability to quickly and easily see how many people have visited that page or post.

\n","protected":false},"excerpt":{"rendered":"

Provides visitors and site owners the ability to quickly and easily see how many people have visited that page or post.

\n","protected":false},"featured_media":9704,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/page-views-count/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9722"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9722/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/9704"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=9722"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=9722"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":9715,"date":"2021-02-19T22:00:52","date_gmt":"2021-02-19T22:00:52","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=9715"},"modified":"2021-02-19T22:02:12","modified_gmt":"2021-02-19T22:02:12","slug":"newspack-listings","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/newspack-listings/","title":{"rendered":"Newspack Listings"},"content":{"rendered":"\n\n\n

Create reusable content as listings and add them to lists wherever core blocks can be used

\n","protected":false},"excerpt":{"rendered":"

Create reusable content as listings and add them to lists wherever core blocks can be used

\n","protected":false},"featured_media":9719,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://github.com/Automattic/newspack-listings/releases"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9715"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9715/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/9719"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=9715"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=9715"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":9713,"date":"2021-02-19T21:58:07","date_gmt":"2021-02-19T21:58:07","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=9713"},"modified":"2021-02-19T22:03:10","modified_gmt":"2021-02-19T22:03:10","slug":"newspack-newsletters","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/newspack-newsletters/","title":{"rendered":"Newspack Newsletters"},"content":{"rendered":"\n\n\n

Create email newsletters with the Gutenberg editor and send them via Mailchimp or Constant Contact

\n","protected":false},"excerpt":{"rendered":"

Create email newsletters with the Gutenberg editor and send them via Mailchimp or Constant Contact

\n","protected":false},"featured_media":9720,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/newspack-newsletters/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9713"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9713/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/9720"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=9713"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=9713"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":9542,"date":"2020-12-18T20:03:09","date_gmt":"2020-12-18T20:03:09","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=9542"},"modified":"2020-12-18T20:03:55","modified_gmt":"2020-12-18T20:03:55","slug":"web-stories","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/web-stories/","title":{"rendered":"Web Stories"},"content":{"rendered":"\n\n\n

Web Stories are a free, open-web, visual storytelling format for the web.

\n","protected":false},"excerpt":{"rendered":"

Web Stories are a free, open-web, visual storytelling format for the web.

\n","protected":false},"featured_media":9543,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/web-stories/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9542"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9542/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/9543"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=9542"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=9542"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":9539,"date":"2020-12-18T19:59:32","date_gmt":"2020-12-18T19:59:32","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=9539"},"modified":"2020-12-18T20:09:45","modified_gmt":"2020-12-18T20:09:45","slug":"jetpack","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/jetpack/","title":{"rendered":"Jetpack"},"content":{"rendered":"\n\n\n

Security, performance, marketing and design tools — made by the WordPress experts to make WP sites safer and faster, and help you grow your traffic.

\n","protected":false},"excerpt":{"rendered":"

Security, performance, marketing and design tools — made by the WordPress experts to make WP sites safer and faster, and help you grow your traffic.

\n","protected":false},"featured_media":9546,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/jetpack/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9539"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9539/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/9546"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=9539"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=9539"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":9529,"date":"2020-12-17T12:55:11","date_gmt":"2020-12-17T12:55:11","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=9529"},"modified":"2020-12-17T12:55:15","modified_gmt":"2020-12-17T12:55:15","slug":"easy-notification-bar","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/easy-notification-bar/","title":{"rendered":"Easy Notification Bar"},"content":{"rendered":"\n\n\n

Easily enable a notification bar on your site using the WordPress customizer

\n","protected":false},"excerpt":{"rendered":"

Easily enable a notification bar on your site using the WordPress customizer

\n","protected":false},"featured_media":9530,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/easy-notification-bar/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9529"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9529/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/9530"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=9529"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=9529"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":9491,"date":"2020-12-02T11:26:31","date_gmt":"2020-12-02T11:26:31","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=9491"},"modified":"2020-12-02T11:26:33","modified_gmt":"2020-12-02T11:26:33","slug":"antispam-bee","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/antispam-bee/","title":{"rendered":"Antispam Bee"},"content":{"rendered":"\n\n\n

Antispam Bee blocks spam comments and trackbacks effectively, without captchas and without sending personal information to third party services.

\n","protected":false},"excerpt":{"rendered":"

Antispam Bee blocks spam comments and trackbacks effectively, without captchas and without sending personal information to third party services.

\n","protected":false},"featured_media":9493,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/antispam-bee/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9491"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9491/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/9493"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=9491"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=9491"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":9492,"date":"2020-12-02T11:26:19","date_gmt":"2020-12-02T11:26:19","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=9492"},"modified":"2020-12-02T11:29:32","modified_gmt":"2020-12-02T11:29:32","slug":"simple-table-of-contents-block","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/simple-table-of-contents-block/","title":{"rendered":"Simple Table of Contents Block"},"content":{"rendered":"\n\n\n

Simple TOC works by parsing the post content and retrieving the heading blocks and creates a new dynamic block with a list of links to the headings.

\n","protected":false},"excerpt":{"rendered":"

Simple TOC works by parsing the post content and retrieving the heading blocks and creates a new dynamic block with a list of links to the headings.

\n","protected":false},"featured_media":9498,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/simpletoc/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9492"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9492/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/9498"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=9492"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=9492"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":9425,"date":"2020-11-16T19:02:03","date_gmt":"2020-11-16T19:02:03","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=9425"},"modified":"2020-11-16T19:02:08","modified_gmt":"2020-11-16T19:02:08","slug":"log-in-with-google","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/log-in-with-google/","title":{"rendered":"Log in with Google"},"content":{"rendered":"\n\n\n

Minimal plugin that allows WordPress users to log in using Google.

\n","protected":false},"excerpt":{"rendered":"

Minimal plugin that allows WordPress users to log in using Google.

\n","protected":false},"featured_media":9427,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/login-with-google/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9425"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9425/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/9427"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=9425"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=9425"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":9426,"date":"2020-11-16T19:01:44","date_gmt":"2020-11-16T19:01:44","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=9426"},"modified":"2020-11-16T19:01:50","modified_gmt":"2020-11-16T19:01:50","slug":"search-with-google","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/search-with-google/","title":{"rendered":"Search with Google"},"content":{"rendered":"\n\n\n

This plugin replaces the WordPress default search query with server-side results from Custom Search Site Restricted JSON API

\n","protected":false},"excerpt":{"rendered":"

This plugin replaces the WordPress default search query with server-side results from Custom Search Site Restricted JSON API. 

\n","protected":false},"featured_media":9428,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/search-with-google/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9426"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9426/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/9428"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=9426"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=9426"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":9374,"date":"2020-10-30T18:57:18","date_gmt":"2020-10-30T18:57:18","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=9374"},"modified":"2020-10-30T18:57:22","modified_gmt":"2020-10-30T18:57:22","slug":"coblocks","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/coblocks/","title":{"rendered":"CoBlocks"},"content":{"rendered":"\n\n\n

An innovative collection of page building blocks for the new Gutenberg WordPress block editor.

\n","protected":false},"excerpt":{"rendered":"

An innovative collection of page building blocks for the new Gutenberg WordPress block editor.

\n","protected":false},"featured_media":9375,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/coblocks/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9374"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9374/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/9375"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=9374"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=9374"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":9368,"date":"2020-10-23T20:10:07","date_gmt":"2020-10-23T20:10:07","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=9368"},"modified":"2020-10-23T20:10:11","modified_gmt":"2020-10-23T20:10:11","slug":"simple-author-box","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/simple-author-box/","title":{"rendered":"Simple Author Box"},"content":{"rendered":"\n\n\n

Add a responsive author box at the end of your posts, showing the author name, author gravatar and author description 

\n","protected":false},"excerpt":{"rendered":"

Add a responsive author box at the end of your posts, showing the author name, author gravatar and author description 

\n","protected":false},"featured_media":9369,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/simple-author-box/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9368"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9368/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/9369"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=9368"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=9368"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":9365,"date":"2020-10-23T20:06:09","date_gmt":"2020-10-23T20:06:09","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=9365"},"modified":"2020-10-23T20:06:13","modified_gmt":"2020-10-23T20:06:13","slug":"genesis-blocks","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/genesis-blocks/","title":{"rendered":"Genesis Blocks  "},"content":{"rendered":"\n\n\n

Building pages with the block editor and Genesis Blocks gives you more control to quickly create and launch any kind of site you want!

\n","protected":false},"excerpt":{"rendered":"

Building pages with the block editor and Genesis Blocks gives you more control to quickly create and launch any kind of site you want!

\n","protected":false},"featured_media":9366,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/genesis-blocks/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9365"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9365/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/9366"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=9365"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=9365"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":9226,"date":"2020-10-02T15:37:57","date_gmt":"2020-10-02T15:37:57","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=9226"},"modified":"2020-10-02T15:38:07","modified_gmt":"2020-10-02T15:38:07","slug":"mathml-block","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/mathml-block/","title":{"rendered":"MathML Block"},"content":{"rendered":"\n\n\n

A MathML block for the WordPress block editor

\n","protected":false},"excerpt":{"rendered":"

A MathML block for the WordPress block editor

\n","protected":false},"featured_media":9228,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/mathml-block/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9226"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/9226/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/9228"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=9226"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=9226"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":8686,"date":"2020-09-02T15:47:39","date_gmt":"2020-09-02T15:47:39","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=8686"},"modified":"2020-09-02T15:47:43","modified_gmt":"2020-09-02T15:47:43","slug":"calculated-fields-form","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/calculated-fields-form/","title":{"rendered":"Calculated Fields Form"},"content":{"rendered":"\n\n\n

Create forms with dynamically calculated fields to display the calculated values.

\n","protected":false},"excerpt":{"rendered":"

Create forms with dynamically calculated fields to display the calculated values.

\n","protected":false},"featured_media":8687,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/calculated-fields-form/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/8686"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/8686/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/8687"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=8686"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=8686"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":8659,"date":"2020-08-28T16:27:14","date_gmt":"2020-08-28T16:27:14","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=8659"},"modified":"2020-08-28T16:27:17","modified_gmt":"2020-08-28T16:27:17","slug":"all-in-one-seo-pack","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/all-in-one-seo-pack/","title":{"rendered":"All in One SEO Pack"},"content":{"rendered":"\n\n\n

Use All in One SEO Pack to optimize your WordPress site for SEO. It’s easy and works out of the box for beginners, and has advanced features and an API for developers.

\n","protected":false},"excerpt":{"rendered":"

Use All in One SEO Pack to optimize your WordPress site for SEO. It’s easy and works out of the box for beginners, and has advanced features and an API for developers.

\n","protected":false},"featured_media":8660,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/all-in-one-seo-pack/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/8659"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/8659/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/8660"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=8659"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=8659"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":7003,"date":"2020-08-13T13:50:48","date_gmt":"2020-08-13T13:50:48","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=7003"},"modified":"2020-08-13T13:50:48","modified_gmt":"2020-08-13T13:50:48","slug":"weglot","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/weglot/","title":{"rendered":"Weglot"},"content":{"rendered":"\n\n\n

Weglot Translate makes it easy to translate your WordPress website and go multilingual.

\n","protected":false},"excerpt":{"rendered":"

Weglot Translate makes it easy to translate your WordPress website and go multilingual.

\n","protected":false},"featured_media":7009,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/weglot/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/7003"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/7003/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/7009"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=7003"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=7003"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":6922,"date":"2020-08-12T15:04:23","date_gmt":"2020-08-12T15:04:23","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=6922"},"modified":"2020-08-12T15:04:23","modified_gmt":"2020-08-12T15:04:23","slug":"rank-math","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/rank-math/","title":{"rendered":"Rank Math"},"content":{"rendered":"\n\n\n

Rank Math helps website owners get access to the SEO tools they need to improve their SEO and attract more traffic to their website.

\n","protected":false},"excerpt":{"rendered":"

Rank Math helps website owners get access to the SEO tools they need to improve their SEO and attract more traffic to their website.

\n","protected":false},"featured_media":6923,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/seo-by-rank-math/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/6922"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/6922/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/6923"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=6922"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=6922"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":6821,"date":"2020-07-24T12:08:49","date_gmt":"2020-07-24T12:08:49","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=6821"},"modified":"2020-07-24T12:08:49","modified_gmt":"2020-07-24T12:08:49","slug":"head-footer-and-post-injections","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/head-footer-and-post-injections/","title":{"rendered":"Head, Footer and Post Injections"},"content":{"rendered":"\n\n\n

Header and Footer Post Injections makes it easily copy and paste code snippets into your site, for AMP and non AMP URLs alike.

\n","protected":false},"excerpt":{"rendered":"

Header and Footer Post Injections makes it easily copy and paste code snippets into your site, for AMP and non AMP URLs alike.

\n","protected":false},"featured_media":6826,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/header-footer/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/6821"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/6821/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/6826"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=6821"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=6821"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":6495,"date":"2020-06-10T18:31:22","date_gmt":"2020-06-10T18:31:22","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=6495"},"modified":"2020-06-10T18:31:22","modified_gmt":"2020-06-10T18:31:22","slug":"wp-rocket","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/wp-rocket/","title":{"rendered":"WP Rocket"},"content":{"rendered":"\n\n\n

Powerful caching to speed up your WordPress website in a few clicks. No coding required.

\n","protected":false},"excerpt":{"rendered":"

Powerful caching to speed up your WordPress website in a few clicks. No coding required.

\n","protected":false},"featured_media":6501,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wp-rocket.me/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/6495"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/6495/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/6501"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=6495"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=6495"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":8580,"date":"2020-05-20T18:18:06","date_gmt":"2020-05-20T18:18:06","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=6386"},"modified":"2020-05-20T18:18:06","modified_gmt":"2020-05-20T18:18:06","slug":"statify-2","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/statify-2/","title":{"rendered":"Statify"},"content":{"rendered":"\n\n\n

Statify provides a straightforward and compact access to the number of site views. 

\n","protected":false},"excerpt":{"rendered":"

Statify provides a straightforward and compact access to the number of site views. 

\n","protected":false},"featured_media":6391,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/statify/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/8580"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/8580/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/6391"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=8580"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=8580"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":6203,"date":"2020-04-21T11:09:08","date_gmt":"2020-04-21T11:09:08","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=6203"},"modified":"2020-08-24T17:06:17","modified_gmt":"2020-08-24T17:06:17","slug":"liquid-blocks","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/liquid-blocks/","title":{"rendered":"Liquid Blocks"},"content":{"rendered":"\n\n\n

If you’re looking to create Gutenberg page sections that look great give Liquid Blocks a try.

\n","protected":false},"excerpt":{"rendered":"

If you’re looking to create Gutenberg page sections that look great give Liquid Blocks a try.

\n","protected":false},"featured_media":6204,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/liquid-blocks/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/6203"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/6203/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/6204"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=6203"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=6203"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":6169,"date":"2020-04-10T00:30:21","date_gmt":"2020-04-10T00:30:21","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=6169"},"modified":"2020-08-24T17:05:52","modified_gmt":"2020-08-24T17:05:52","slug":"schema-2","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/schema-2/","title":{"rendered":"Schema"},"content":{"rendered":"\n\n\n

Super fast, light-weight plugin for adding schema.org structured data to WordPress sites.

\n","protected":false},"excerpt":{"rendered":"

Super fast, light-weight plugin for adding schema.org structured data to WordPress sites.

\n","protected":false},"featured_media":6147,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/schema/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/6169"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/6169/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/6147"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=6169"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=6169"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":8579,"date":"2020-04-08T16:44:11","date_gmt":"2020-04-08T16:44:11","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=6148"},"modified":"2020-04-08T16:44:11","modified_gmt":"2020-04-08T16:44:11","slug":"iframely-2","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/iframely-2/","title":{"rendered":"iFramely"},"content":{"rendered":"\n\n\n

Iframely extends WordPress default embeds and adds over 2000 more providers and cards as URL previews for the rest of the Web.

\n","protected":false},"excerpt":{"rendered":"

Iframely extends WordPress default embeds and adds over 2000 more providers and cards as URL previews for the rest of the Web.

\n","protected":false},"featured_media":6141,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/iframely/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/8579"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/8579/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/6141"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=8579"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=8579"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":6049,"date":"2020-03-03T19:36:32","date_gmt":"2020-03-03T19:36:32","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=6049"},"modified":"2020-08-24T17:05:52","modified_gmt":"2020-08-24T17:05:52","slug":"pym-js-embeds","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/pym-js-embeds/","title":{"rendered":"Pym.js Embeds"},"content":{"rendered":"\n\n\n

Shortcode and Gutenberg block wrappers for embedding responsive iframes using Pym.js. Embedded content resizes vertically to match its container’s width.

\n","protected":false},"excerpt":{"rendered":"

Shortcode and Gutenberg block wrappers for embedding responsive iframes using Pym.js. Embedded content resizes vertically to match its container’s width.

\n","protected":false},"featured_media":6050,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/pym-shortcode/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/6049"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/6049/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/6050"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=6049"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=6049"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":5945,"date":"2020-02-12T15:07:34","date_gmt":"2020-02-12T15:07:34","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=5945"},"modified":"2020-08-24T17:05:52","modified_gmt":"2020-08-24T17:05:52","slug":"pwa","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/pwa/","title":{"rendered":"PWA"},"content":{"rendered":"\n\n\n

Turn your WordPress website into a Progressive Web Application, adopting features such as mobile homescreen shortcuts and offline access.

\n","protected":false},"excerpt":{"rendered":"

Turn your WordPress website into a Progressive Web Application, adopting features such as mobile homescreen shortcuts and offline access.

\n","protected":false},"featured_media":5947,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/pwa/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5945"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5945/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/5947"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=5945"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=5945"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":5938,"date":"2020-02-11T14:07:40","date_gmt":"2020-02-11T14:07:40","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=5938"},"modified":"2020-08-24T17:05:52","modified_gmt":"2020-08-24T17:05:52","slug":"mailchimp-for-wordpress","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/mailchimp-for-wordpress/","title":{"rendered":"MailChimp for WordPress"},"content":{"rendered":"\n\n\n

This plugin allows your visitors to subscribe to your newsletter with ease and helps you grow your Mailchimp lists.

\n","protected":false},"excerpt":{"rendered":"

This plugin allows your visitors to subscribe to your newsletter with ease and helps you grow your Mailchimp lists.

\n","protected":false},"featured_media":5944,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/mailchimp-for-wp/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5938"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5938/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/5944"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=5938"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=5938"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":5870,"date":"2019-12-21T17:59:49","date_gmt":"2019-12-21T17:59:49","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=5870"},"modified":"2021-09-02T15:59:48","modified_gmt":"2021-09-02T15:59:48","slug":"google-site-kit","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/google-site-kit/","title":{"rendered":"Site Kit by Google"},"content":{"rendered":"\n\n\n

Site Kit is the official WordPress plugin from Google for insights about how people find and use your site. Site Kit is the one-stop solution to deploy, manage, and get insights from critical Google tools to make the site successful on the web. It provides authoritative, up-to-date insights from multiple Google products directly on the WordPress dashboard for easy access, all for free.

\n","protected":false},"excerpt":{"rendered":"

Site Kit is the official WordPress plugin from Google for insights about how people find and use your site. Site Kit is the one-stop solution to deploy, manage, and get insights from critical Google tools to make the site successful on the web. It provides authoritative, up-to-date insights from multiple Google products directly on the

\n

Read More

\n","protected":false},"featured_media":5875,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://sitekit.withgoogle.com/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5870"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5870/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/5875"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=5870"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=5870"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":5825,"date":"2019-11-20T12:21:04","date_gmt":"2019-11-20T12:21:04","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=5825"},"modified":"2020-08-24T17:05:52","modified_gmt":"2020-08-24T17:05:52","slug":"newspack-blocks","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/newspack-blocks/","title":{"rendered":"Newspack Blocks"},"content":{"rendered":"\n\n\n

A collection of useful and easy to use Gutenberg based blocks, developed primarily for the Newspack project.

\n","protected":false},"excerpt":{"rendered":"

A collection of useful and easy to use Gutenberg based blocks, developed primarily for the Newspack project.

\n","protected":false},"featured_media":5827,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://github.com/Automattic/newspack-blocks"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5825"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5825/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/5827"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=5825"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=5825"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":5348,"date":"2019-08-30T08:55:48","date_gmt":"2019-08-30T08:55:48","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=5348"},"modified":"2020-08-24T17:05:52","modified_gmt":"2020-08-24T17:05:52","slug":"advanced-ads","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/advanced-ads/","title":{"rendered":"Advanced Ads"},"content":{"rendered":"\n\n\n

Whether you want to monetize your site, grow your existing revenue stream or need an enterprise integration Advanced Ads can help.

\n","protected":false},"excerpt":{"rendered":"

Whether you want to monetize your site, grow your existing revenue stream or need an enterprise integration Advanced Ads can help.

\n","protected":false},"featured_media":5998,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/advanced-ads/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5348"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5348/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/5998"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=5348"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=5348"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":5744,"date":"2019-07-30T23:04:23","date_gmt":"2019-07-30T23:04:23","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=5744"},"modified":"2020-08-24T17:05:52","modified_gmt":"2020-08-24T17:05:52","slug":"syntax-highlighting-code-block","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/syntax-highlighting-code-block/","title":{"rendered":"Syntax-highlighting Code Block"},"content":{"rendered":"\n\n\n

Extending the Code block with syntax highlighting rendered on the server, thus being AMP-compatible and having faster frontend performance.

\n","protected":false},"excerpt":{"rendered":"

Extending the Code block with syntax highlighting rendered on the server, thus being AMP-compatible and having faster frontend performance.

\n","protected":false},"featured_media":5746,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/syntax-highlighting-code-block/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5744"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5744/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/5746"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=5744"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=5744"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":5648,"date":"2019-06-21T14:58:08","date_gmt":"2019-06-21T14:58:08","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=5648"},"modified":"2020-08-24T17:05:52","modified_gmt":"2020-08-24T17:05:52","slug":"wpforms","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/wpforms/","title":{"rendered":"WPForms"},"content":{"rendered":"\n\n\n

Contact Form by WPForms – Drag & Drop Form Builder for WordPress

\n","protected":false},"excerpt":{"rendered":"

Contact Form by WPForms – Drag & Drop Form Builder for WordPress

\n","protected":false},"featured_media":6054,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/wpforms-lite/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5648"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5648/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/6054"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=5648"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=5648"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":5458,"date":"2019-05-24T12:21:14","date_gmt":"2019-05-24T12:21:14","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=5458"},"modified":"2020-08-24T17:05:52","modified_gmt":"2020-08-24T17:05:52","slug":"monsterinsights","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/monsterinsights/","title":{"rendered":"MonsterInsights"},"content":{"rendered":"\n\n\n

MonsterInsights makes it “effortless” to connect your WordPress site with Google Analytics

\n","protected":false},"excerpt":{"rendered":"

MonsterInsights makes it “effortless” to connect your WordPress site with Google Analytics

\n","protected":false},"featured_media":5994,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/google-analytics-for-wordpress/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5458"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5458/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/5994"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=5458"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=5458"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":5450,"date":"2019-05-23T19:59:36","date_gmt":"2019-05-23T19:59:36","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=5450"},"modified":"2020-08-24T17:05:53","modified_gmt":"2020-08-24T17:05:53","slug":"atomic-blocks","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/atomic-blocks/","title":{"rendered":"Atomic Blocks"},"content":{"rendered":"\n\n\n

Atomic Blocks is a collection of page building blocks for the new Gutenberg block editor.

\n","protected":false},"excerpt":{"rendered":"

Atomic Blocks is a collection of page building blocks for the new Gutenberg block editor.

\n","protected":false},"featured_media":5453,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/atomic-blocks/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5450"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5450/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/5453"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=5450"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=5450"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":5428,"date":"2019-05-15T23:47:28","date_gmt":"2019-05-15T23:47:28","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=5428"},"modified":"2020-08-24T17:05:52","modified_gmt":"2020-08-24T17:05:52","slug":"akismet-anti-spam","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/akismet-anti-spam/","title":{"rendered":"Akismet Anti-Spam"},"content":{"rendered":"\n\n\n

Akismet checks your comments and contact form submissions to prevent malicious content.

\n","protected":false},"excerpt":{"rendered":"

Akismet checks your comments and contact form submissions to prevent malicious content.

\n","protected":false},"featured_media":6009,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/akismet/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5428"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5428/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/6009"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=5428"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=5428"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":5357,"date":"2019-03-26T18:18:13","date_gmt":"2019-03-26T18:18:13","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=5357"},"modified":"2020-08-24T17:08:50","modified_gmt":"2020-08-24T17:08:50","slug":"wp-gdpr-cookie-notice","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/wp-gdpr-cookie-notice/","title":{"rendered":"WP GDPR Cookie Notice"},"content":{"rendered":"\n\n\n

WP GDPR Cookie Notice adds a simple performant cookie consent notice with customization features.

\n","protected":false},"excerpt":{"rendered":"

WP GDPR Cookie Notice adds a simple performant cookie consent notice with customization features.

\n","protected":false},"featured_media":6008,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/wp-gdpr-cookie-notice/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5357"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5357/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/6008"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=5357"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=5357"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":5187,"date":"2018-12-06T17:18:43","date_gmt":"2018-12-06T17:18:43","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=5187"},"modified":"2020-08-24T17:08:43","modified_gmt":"2020-08-24T17:08:43","slug":"addthis-social-sharing","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/addthis-social-sharing/","title":{"rendered":"AddThis Social Sharing"},"content":{"rendered":"\n\n\n

AddThis is known for a full suite of website tools including beautifully crafted and simple share buttons.

\n","protected":false},"excerpt":{"rendered":"

AddThis is known for a full suite of website tools including beautifully crafted and simple share buttons.

\n","protected":false},"featured_media":5208,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/addthis/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5187"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5187/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/5208"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=5187"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=5187"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":5116,"date":"2018-12-06T04:42:46","date_gmt":"2018-12-06T04:42:46","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=5116"},"modified":"2020-08-24T17:05:53","modified_gmt":"2020-08-24T17:05:53","slug":"bigcommerce-for-wordpress","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/bigcommerce-for-wordpress/","title":{"rendered":"BigCommerce"},"content":{"rendered":"\n\n\n

BigCommerce plugin: online stores with WordPress on the front end and BigCommerce on the back end. 

\n","protected":false},"excerpt":{"rendered":"

BigCommerce plugin: online stores with WordPress on the front end and BigCommerce on the back end. 

\n","protected":false},"featured_media":5203,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/bigcommerce/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5116"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/5116/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/5203"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=5116"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=5116"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":2193,"date":"2018-11-23T09:58:58","date_gmt":"2018-11-23T09:58:58","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=2193"},"modified":"2020-08-24T17:05:53","modified_gmt":"2020-08-24T17:05:53","slug":"yoast","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/yoast/","title":{"rendered":"Yoast SEO"},"content":{"rendered":"\n\n\n

Yoast SEO is the original WordPress SEO plugin since 2008.

\n","protected":false},"excerpt":{"rendered":"

Yoast SEO is the original WordPress SEO plugin since 2008.

\n","protected":false},"featured_media":5069,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/wordpress-seo/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/2193"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/2193/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/5069"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=2193"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=2193"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":2190,"date":"2018-11-23T09:58:20","date_gmt":"2018-11-23T09:58:20","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=2190"},"modified":"2020-08-26T22:16:49","modified_gmt":"2020-08-26T22:16:49","slug":"gutenberg","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/gutenberg/","title":{"rendered":"Gutenberg"},"content":{"rendered":"\n\n\n

Gutenberg is a redesign of the WordPress WYSIWYG editor.

\n","protected":false},"excerpt":{"rendered":"

Gutenberg is a redesign of the WordPress WYSIWYG editor.

\n","protected":false},"featured_media":5070,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://wordpress.org/plugins/gutenberg/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/2190"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/2190/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/5070"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=2190"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=2190"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}},{"id":2187,"date":"2018-11-23T09:57:38","date_gmt":"2018-11-23T09:57:38","guid":{"rendered":"https://amp-wp.org/?post_type=ecosystem&p=2187"},"modified":"2020-08-24T17:05:53","modified_gmt":"2020-08-24T17:05:53","slug":"setka-editor","status":"publish","type":"ecosystem","link":"https://amp-wp.org/ecosystem/setka-editor/","title":{"rendered":"Setka Editor"},"content":{"rendered":"\n\n\n

Setka Editor is the first WYSIWYG plugin with page builder functionality.

\n","protected":false},"excerpt":{"rendered":"

Setka Editor is the first WYSIWYG plugin with page builder functionality.

\n","protected":false},"featured_media":5071,"parent":0,"template":"","meta":{"spay_email":"","ampps_ecosystem_url":"https://setka.io/"},"ecosystem_types":[],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/2187"}],"collection":[{"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem"}],"about":[{"href":"https://amp-wp.org/wp-json/wp/v2/types/ecosystem"}],"version-history":[{"count":0,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem/2187/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/media/5071"}],"wp:attachment":[{"href":"https://amp-wp.org/wp-json/wp/v2/media?parent=2187"}],"wp:term":[{"taxonomy":"ecosystem_type","embeddable":true,"href":"https://amp-wp.org/wp-json/wp/v2/ecosystem_types?post=2187"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}}] \ No newline at end of file +[{"name":"Podcast Player – Your Podcasting Companion","slug":"podcast-player","version":"5.0.1","author":"vedathemes","author_profile":"https://profiles.wordpress.org/vedathemes","requires":"4.9","tested":"5.8","requires_php":"5.6","rating":98,"ratings":{"1":0,"2":1,"3":0,"4":2,"5":43},"num_ratings":46,"support_threads":8,"support_threads_resolved":6,"active_installs":8000,"downloaded":111293,"last_updated":"2021-08-09 4:59am GMT","added":"2019-02-06","homepage":"https://vedathemes.com/podcast-player/","short_description":"Showcase your podcast only using podcasting feed url. Use custom widget, shortcode or editor block to display podcast player anywhere on your site.","description":"

Podcast Player provides an easy way to show and play your podcast episodes using podcasting feed url. It is a must have plugin for your podcast website. Give your listeners an easy access to all your episodes from any page or even from all the pages of your website.

\n

Podcast Player Pro | Documentation

\n\n

Podcast player key features

\n
    \n
  • Give your listeners an easy access to your podcast episodes.
  • \n
  • Display responsive podcast player just by entering your podcast’s feed url.
  • \n
  • Fetch all required details from feed url.
  • \n
  • Option to modify fetched details of your podcast.
  • \n
  • Option to Show or Hide individual player elements.
  • \n
  • Give your listener an option to share your podcast episodes.
  • \n
  • Ajax live search episodes from the podcast.
  • \n
  • It is possible to have multiple instances of podcast player on single page.
  • \n
  • Self adjusting layout according to width of the podcast player.
  • \n
\n

Podcast player pro features

\n
    \n
  • Professionally showcase your podcast using our unified player, episode list and grid templates.
  • \n
  • Use powerful filter options to choose which episodes or seasons you want to display on your website.
  • \n
  • Make your entire podcast catalogue easily available using our ajax approximate search feature.
  • \n
  • Add an audio message within your podcast episode.
  • \n
  • Add audio mp3 to your WordPress posts and display as podcast episodes.
  • \n
  • Show or hide specific elements and customize color and fonts to personalize your podcast display
  • \n
\n

Setup Podcast Player Widget

\n

Display searchable podcast episodes list on any widget area of your website.

\n

Minimum Setup

\n
    \n
  1. After activating the plugin, visit Appearance > Widgets in admin dashboard.
  2. \n
  3. Look for ‘Podcast player’ widget in left ‘Available Widgets’ section.
  4. \n
  5. Drag the widget to any available sidebar/widget area.
  6. \n
  7. Enter feed url in the appropriate field.
  8. \n
  9. Click [Save] button.
  10. \n
\n

Advanced Setup

\n
    \n
  1. After activating the plugin, visit Appearance > Widgets in admin dashboard.
  2. \n
  3. Look for ‘Podcast player’ widget in left ‘Available Widgets’ section.
  4. \n
  5. Drag the widget to any available sidebar/widget area.
  6. \n
  7. Enter feed url in the appropriate field.
  8. \n
  9. Optionally, click on “Change podcast content” button to customize feed’s auto fetched details.
  10. \n
  11. Optionally, click on “Show/Hide player items” button to show or hide player elements.
  12. \n
  13. Optionally, click on “Podcast player styling” button to customize player’s accent color.
  14. \n
  15. Optionally, click on “Sort & Filter” button to sort or filter podcast episodes.
  16. \n
  17. Click [Save] button.
  18. \n
\n

Setup Podcast Player Block

\n

Display searchable podcast episodes list on any post or page. Make sure you have not disabled WordPress latest block editor.

\n

Setup

\n
    \n
  1. After activating the plugin, visit any post or page’s edit screen.
  2. \n
  3. In main content area, click on ‘+’ icon to add a new block.
  4. \n
  5. Search for ‘Podcast Player’ block.
  6. \n
  7. Enter feed url in the appropriate field. A preview of your podcast player will appear.
  8. \n
  9. Click on the podcast player preview.
  10. \n
  11. Select appropriate options from the right sidebar to customize the player.
  12. \n
  13. Save or Update the post.
  14. \n
\n

Setup Podcast Player using shortcode

\n

Minimum Setup

\n
[podcastplayer feed_url ='']\n
\n
    \n
  1. feed_url – Your podcast feed url.
  2. \n
\n

Advanced Setup

\n
[podcastplayer feed_url ='' number='' podcast_menu='' cover_image_url='' hide_cover='true' hide_description='true' hide_subscribe='true' hide_search='true' hide_loadmore='true' hide_download='true' accent_color='#65b84f']Short Description [/podcastplayer]\n
\n
    \n
  1. feed_url: Your podcast feed url.
  2. \n
  3. number: Number of podcasts episodes to be displayed at a time.
  4. \n
  5. podcast_menu: Any previously created WordPress menu’s name OR ID OR slug. (optional)
  6. \n
  7. cover_image_url: Podcast’s cover image url. The image must be from your WP media library. (optional)
  8. \n
  9. header_default: (false/true) Show player header items by default
  10. \n
  11. hide_header: Hide player header items
  12. \n
  13. hide_title: (false/true) Show / Hide podcast Title in header info section
  14. \n
  15. hide_cover: (false/true) Show / Hide podcast cover image
  16. \n
  17. hide_description: (false/true) Show / Hide podcast description
  18. \n
  19. hide_subscribe: (false/true) Show / Hide podcast subscribe button.
  20. \n
  21. hide_search: (false/true) Show / Hide podcast search field.
  22. \n
  23. hide_author: (false/true) Show / Hide author/podcaster’s name.
  24. \n
  25. hide_content: (false/true) Show / Hide podcast episode’s content.
  26. \n
  27. hide_loadmore: (false/true) Show / Hide podcast load more button.
  28. \n
  29. hide_download: (false/true) Show/ Hide podcast episode download link.
  30. \n
  31. hide_social: (false/true) Show/ Hide podcast episode social sharing links.
  32. \n
  33. accent_color: Podcast player’s accent color (Color hex-code to be entered).
  34. \n
  35. sortby: Sort podcast episodes (sort_date_desc/sort_date_asc/sort_title_desc/sort_title_asc)
  36. \n
  37. filterby: Filter by any string in episode’s title
  38. \n
  39. list_default: (false/true) Display Episodes list by default on small screen
  40. \n
  41. hide_featured: (false/true) Show / Hide podcast episode featured image
  42. \n
  43. apple_sub: Apple podcast subscription link
  44. \n
  45. google_sub: Google podcast subscription link
  46. \n
  47. Short Description: Podcast short text description. (optional)
  48. \n
\n","download_link":"https://downloads.wordpress.org/plugin/podcast-player.5.0.1.zip","tags":{"feed-to-audio":"feed to audio","podcast":"podcast","podcaster":"podcaster","podcasting":"podcasting","rss-feed":"rss feed"},"donate_link":"","icons":{"1x":"https://ps.w.org/podcast-player/assets/icon-256x256.png?rev=2025683","2x":"https://ps.w.org/podcast-player/assets/icon-256x256.png?rev=2025683"},"wporg":true},{"name":"WPSSO Schema JSON-LD Markup | Google Rich Results, Rich Snippets, and Structured Data","slug":"wpsso-schema-json-ld","version":"4.18.0","author":"JS Morisset","author_profile":"https://profiles.wordpress.org/jsmoriss","requires":"5.0","tested":"5.8","requires_php":"7.0","rating":90,"ratings":{"1":5,"2":2,"3":1,"4":1,"5":54},"num_ratings":63,"support_threads":3,"support_threads_resolved":3,"active_installs":4000,"downloaded":282675,"last_updated":"2021-09-03 6:34pm GMT","added":"2016-02-14","homepage":"https://wpsso.com/extend/plugins/wpsso-schema-json-ld/","short_description":"Google Rich Results for Articles, Carousels, Events, FAQ pages, How-Tos, Local SEO, Products, Recipes, Ratings,…","description":"

Supports over 500 different Schema (aka Schema.org) types and sub-types:

\n

Google Rich Results with JSON-LD structured data for Articles, Carousels (aka Item Lists), Claim Reviews, Events, FAQ pages, How-Tos, Images, Local Business / Local SEO, Organizations, Products, Ratings, Recipes, Restaurants, Reviews, Video Objects, and much more.

\n

Reads your existing content, plugin data, and service API data:

\n

There’s no need to manually re-enter descriptions, titles, product information, and re-select images / videos like other SEO and Schema markup plugins.

\n

Provides comprehensive Schema JSON-LD markup for posts, pages, custom post types, terms (category, tags, etc.), custom taxonomies, user profile pages, search result pages, archive pages, and Accelerated Mobile Pages (AMP) pages – including image SEO, video SEO, local business, organization, publisher, person, author and co-authors, extensive e-Commerce product markup, product variations, product ratings, aggregate ratings, reviews, recipe information, event details, collection pages, profile pages, search pages, FAQ pages, item lists for Google’s Carousel Rich Results, and much more.

\n

Most complete Schema JSON-LD markup for WooCommerce products:

\n

Note that WooCommerce offers incomplete Schema markup for Google Rich Results by default. The WPSSO Core Premium plugin and this add-on provide a solution by offering complete product meta tags for Facebook / Pinterest and complete Schema product markup for Google Rich Results – including additional product images, product variations, product information (brand, color, condition, EAN, dimensions, GTIN-8/12/13/14, ISBN, material, MPN, size, SKU, volume, weight, etc), product reviews, product ratings, sale start / end dates, sale prices, pre-tax prices, VAT prices, shipping rates, shipping times, and much, much more.

\n

Fixes all Google Search Console and Schema Markup Validator (aka Google Structured Data Testing Tool) errors:

\n
    \n
  • A value for the headline field is required.
  • \n
  • A value for the image field is required.
  • \n
  • A value for the logo field is required.
  • \n
  • A value for the publisher field is required.
  • \n
  • The aggregateRating field is recommended.
  • \n
  • The brand field is recommended.
  • \n
  • The headline field is recommended.
  • \n
  • The image field is recommended.
  • \n
  • The mainEntityOfPage field is recommended.
  • \n
  • The review field is recommended.
  • \n
  • This Product is missing a global identifier (e.g. isbn, mpn or gtin8).
  • \n
  • No global identifier provided (e.g. gtin mpn isbn).
  • \n
  • Not a known valid target type for the itemReviewed property.
  • \n
  • And more…
  • \n
\n

Some Schema property values may require data from WPSSO Core Premium supported third-party plugins and service APIs.

\n

Google regularly updates and changes their Schema markup requirements – WPSSO JSON Premium customers can also open a Premium support ticket for timely assistance with any new Google testing tool errors.

\n

Users Love the WPSSO JSON Add-on

\n

★★★★★ – “Forget everything else this is the best schema plugin – Sincerely, we bought other plugins that we had to abandon due to the lack of important features, but with this [WPSSO JSON] we get all that we need – and our schema has more features than the competition!” – zuki305

\n

★★★★★ – “Tried three other plugins before this one – for our Woocommerce site, this was by far the best one. Thanks!” – EntoMarket

\n

★★★★★ – “Crazy good! This plugin is one of my favorites! JS aggressively develops and improves this suite of plugins, continuously improving and adding features – with great customer support to boot! Highly recommended to improve your SEO for all kinds of JSON schemas!” – mikegoubeaux

\n

★★★★★ – “This plugin is heaven sent. I know little about SSO and this has taken care of everything. The support makes this an even better plugin to have. Keep up the great work!” – kevanchetty

\n

WPSSO JSON Add-on Features

\n

Extends the features of the WPSSO Core plugin (required plugin).

\n

Provides accurate and comprehensive Schema JSON-LD markup for Google Rich Results (aka Rich Snippets) with Structured Data.

\n

Provides complete Schema ImageObject SEO markup with image information from the WordPress Media Library (name, alternateName, alternativeHeadline, caption, description, fileFormat, uploadDate, and more).

\n

Provides complete Schema VideoObject SEO markup with video information from WPSSO Core Premium service APIs (Facebook, Slideshare, Soundcloud, Vimeo, Wistia, YouTube) including the ’embedUrl’ and ‘contentUrl’ properties for Google.

\n

Provides Schema 1:1, 4:3, and 16:9 images for Google Rich Results (see the Google rich results search library for details).

\n

Provides Schema FAQPage and Question / Answer markup for the WPSSO FAQ Manager add-on.

\n

Includes Schema JSON-LD scripts from shortcodes and WordPress editor blocks in the Schema CreativeWork type and sub-types.

\n

Built-in support for AMP and AMP for WP plugins.

\n

Includes contributor markup for Co-Authors Plus authors and guest authors (WPSSO Core Premium plugin required).

\n

Supports additional custom product information and WooCommerce product attributes from the WPSSO Core Premium plugin:

\n
    \n
  • Product Availability
  • \n
  • Product Brand
  • \n
  • Product Color
  • \n
  • Product Condition
  • \n
  • Product Depth
  • \n
  • Product Fluid Volume
  • \n
  • Product GTIN-14
  • \n
  • Product GTIN-13 (EAN)
  • \n
  • Product GTIN-12 (UPC)
  • \n
  • Product GTIN-8
  • \n
  • Product GTIN
  • \n
  • Product ISBN
  • \n
  • Product Length
  • \n
  • Product Material
  • \n
  • Product MPN
  • \n
  • Product Price
  • \n
  • Product Size
  • \n
  • Product SKU
  • \n
  • Product Target Gender
  • \n
  • Product Type
  • \n
  • Product Weight
  • \n
  • Product Width
  • \n
\n

Provides Schema Product markup for Google price drop appearance in search results.

\n

Fixes common Google testing tool warnings like “aggregateRating field is recommended” and “review field is recommended”.

\n

Fixes Google testing tool warnings for supported WPSSO Core Premium e-commerce products, like “brand field is recommended”, “missing a global identifier”, etc.

\n

The WPSSO Schema JSON-LD Markup Standard add-on is designed to satisfy the requirements of most standard WordPress sites. If your content requires additional customization of some Schema properties for products, events, places / locations, recipes, etc., then you may want to get the WPSSO JSON Premium add-on for those additional features.

\n

[Premium] Includes additional customizable option values in the Document SSO metabox (shown based on the Schema Type selected):

\n
    \n
  • All Schema Types\n
      \n
    • Name (Title)
    • \n
    • Alternate Name
    • \n
    • Description
    • \n
    • Microdata Type URLs
    • \n
    • Same-As URLs
    • \n
    \n
  • \n
  • Creative Work Information\n
      \n
    • Is Part of URL
    • \n
    • Headline
    • \n
    • Full Text
    • \n
    • Keywords
    • \n
    • Language
    • \n
    • Family Friendly
    • \n
    • Copyright Year
    • \n
    • License URL
    • \n
    • Publisher (Org)
    • \n
    • Publisher (Person)
    • \n
    • Service Provider (Org)
    • \n
    • Service Provider (Person)
    • \n
    \n
  • \n
  • Event Information\n
      \n
    • Event Language
    • \n
    • Event Attendance
    • \n
    • Event Online URL
    • \n
    • Event Physical Venue
    • \n
    • Event Organizer (Org)
    • \n
    • Event Organizer (Person)
    • \n
    • Event Performer (Org)
    • \n
    • Event Performer (Person)
    • \n
    • Event Start (date, time, timezone)
    • \n
    • Event End (date, time, timezone)
    • \n
    • Event Offers Start (date, time, timezone)
    • \n
    • Event Offers End (date, time, timezone)
    • \n
    • Event Offers (name, price, currency, availability)
    • \n
    \n
  • \n
  • How-To\n
      \n
    • How-To Makes
    • \n
    • How-To Preparation Time
    • \n
    • How-To Total Time
    • \n
    • How-To Supplies
    • \n
    • How-To Tools
    • \n
    • How-To Steps (section name, section description, step name, direction text and image)
    • \n
    \n
  • \n
  • Job Posting Information\n
      \n
    • Job Title
    • \n
    • Hiring Organization
    • \n
    • Job Location
    • \n
    • Job Location Type
    • \n
    • Base Salary
    • \n
    • Employment Type
    • \n
    • Jpb Posting Expires
    • \n
    \n
  • \n
  • Movie Information\n
      \n
    • Cast Names
    • \n
    • Director Names
    • \n
    • Production Company
    • \n
    • Movie Runtime
    • \n
    \n
  • \n
  • Organization Information\n
      \n
    • Select an Organization
    • \n
    \n
  • \n
  • Person Information\n
      \n
    • Select a Person
    • \n
    \n
  • \n
  • Product Information (Additional)\n
      \n
    • Product Length (cm)
    • \n
    • Product Width (cm)
    • \n
    • Product Height (cm)
    • \n
    • Product Depth (cm)
    • \n
    • Product Fluid Volume (ml)
    • \n
    • Product GTIN-14
    • \n
    • Product GTIN-13 (EAN)
    • \n
    • Product GTIN-12 (UPC)
    • \n
    • Product GTIN-8
    • \n
    • Product GTIN
    • \n
    \n
  • \n
  • QA Page Information\n
      \n
    • QA Heading
    • \n
    \n
  • \n
  • Recipe Information\n
      \n
    • Recipe Cuisine
    • \n
    • Recipe Course
    • \n
    • Recipe Makes
    • \n
    • Cooking Method
    • \n
    • Preparation Time
    • \n
    • Cooking Time
    • \n
    • Total Time
    • \n
    • Recipe Ingredients
    • \n
    • Recipe Instructions
    • \n
    • Nutrition Information per Serving\n
        \n
      • Serving Size
      • \n
      • Calories
      • \n
      • Protein
      • \n
      • Fiber
      • \n
      • Carbohydrates
      • \n
      • Sugar
      • \n
      • Sodium
      • \n
      • Fat
      • \n
      • Saturated Fat
      • \n
      • Unsaturated Fat
      • \n
      • Trans Fat
      • \n
      • Cholesterol
      • \n
      \n
    • \n
    \n
  • \n
  • Review Information\n
      \n
    • Review Rating
    • \n
    • Rating Value Name
    • \n
    • Subject of the Review\n
        \n
      • Subject Webpage Type
      • \n
      • Subject Webpage URL
      • \n
      • Subject Same-As URL
      • \n
      • Subject Name
      • \n
      • Subject Description
      • \n
      • Subject Image ID or URL
      • \n
      • Claim Subject Information (for Claim Review)\n
          \n
        • Short Summary of Claim
        • \n
        • First Appearance URL
        • \n
        \n
      • \n
      • Creative Work Subject Information\n
          \n
        • C.W. Author Type
        • \n
        • C.W. Author Name
        • \n
        • C.W. Author URL
        • \n
        • C.W. Published Date
        • \n
        • C.W. Created Date
        • \n
        \n
      • \n
      • Book Subject Information\n
          \n
        • Book ISBN
        • \n
        \n
      • \n
      • Movie Subject Information\n
          \n
        • Movie Cast Names
        • \n
        • Movie Director Names
        • \n
        \n
      • \n
      • Product Subject Information\n
          \n
        • Product Brand
        • \n
        • Product Offers (name, price, currency, availability)
        • \n
        • Product SKU
        • \n
        • Product MPN
        • \n
        \n
      • \n
      • Software App Subject Information\n
          \n
        • Operating System
        • \n
        • Application Category
        • \n
        • Software App Offers (name, price, currency, availability)
        • \n
        \n
      • \n
      \n
    • \n
    \n
  • \n
  • Software Application Information\n
      \n
    • Operating System
    • \n
    • Application Category
    • \n
    \n
  • \n
\n

WPSSO Core Required

\n

WPSSO Schema JSON-LD Markup (WPSSO JSON) is an add-on for the WPSSO Core plugin.

\n","download_link":"https://downloads.wordpress.org/plugin/wpsso-schema-json-ld.4.18.0.zip","tags":{"rich-results":"rich results","rich-snippets":"rich snippets","schema-org":"schema.org","video-seo":"video seo","woocommerce":"woocommerce"},"donate_link":"","icons":{"1x":"https://ps.w.org/wpsso-schema-json-ld/assets/icon-128x128.png?rev=2480083","2x":"https://ps.w.org/wpsso-schema-json-ld/assets/icon-256x256.png?rev=2480083"},"wporg":true},{"name":"ShortPixel Image Optimizer","slug":"shortpixel-image-optimiser","version":"4.22.5","author":"ShortPixel","author_profile":"https://profiles.wordpress.org/shortpixel","requires":"4.2.0","tested":"5.8","requires_php":"5.6","rating":92,"ratings":{"1":54,"2":10,"3":8,"4":10,"5":544},"num_ratings":626,"support_threads":7,"support_threads_resolved":6,"active_installs":300000,"downloaded":6850802,"last_updated":"2021-08-31 5:54pm GMT","added":"2014-11-05","homepage":"https://shortpixel.com/","short_description":"Speed up your website & boost your SEO by compressing old & new images and PDFs. AVIF & WebP convert and optimize support.","description":"

A freemium, easy to use, comprehensive, stable and frequently updated image compression plugin supported by the friendly team that created it. 🙂

\n

Increase your website’s SEO ranking, number of visitors and ultimately your sales by optimising any image or PDF document on your website.
\nShortPixel is an easy to use, lightweight, install-and-forget-about-it image optimization plugin that can compress all your past images and PDF documents with a single click. New images are automatically resized/rescaled and optimized on the fly, in the background. It’s also compatible with any gallery, slider or ecommerce plugin.

\n

Ready for a quick DEMO? Test our plugin here.
\nOr you can create a staging copy of your site using WP Staging and test it there.

\n

Short Pixel uses minimal resources and works well with any shared, cloud, VPS or dedicated web hosting. It can optimize any image you have on your website even the images that aren’t listed in Media Library like those in galleries like NextGEN, Modula or added directly via FTP!

\n

Both lossy and lossless image compression are available for the most common image types (JPG, PNG, GIF, WebP and AVIF) plus PDF files.
\nWe also offer glossy JPEG compression which is a very high quality lossy optimization algorithm. Specially designed for photographers!
\nOptimized images mean better user experience, better PageSpeed Insights or GTmetrix results, better Google PageRank and more visitors.

\n

Make an instant image compression test of your site or compress some images to test our optimization algorithms.

\n

Why is ShortPixel the best choice when it comes to image optimization or PDF compression?

\n
    \n
  • popular plugin with over 300,000 active installations – according to WordPress
  • \n
  • compress JPG (and its variations JPEG, JPEG 2000, JPEG XR), PNG, GIF (still or animated) images and also PDF documents
  • \n
  • option to convert any JPEG, PNG or GIF (even animated ones!) to WebP and AVIF for more Google love. How to enable WebP?. What is AVIF and why is it good?.
  • \n
  • option to automatically convert PNG to JPG if that will result in smaller images. Ideal for large images in PNG format
  • \n
  • option to include the next generation images (WebP and AVIF) into the front-end pages by using the <picture> tag instead of <img>, independent from generating them through the plugin
  • \n
  • compatible with WP Retina 2x – all retina images are automatically compressed. How to benefit from Retina displays?
  • \n
  • optimize thumbnails as well as featured images. You can also select individual thumbnails to exclude from optimization
  • \n
  • ability to optimize any image on your site including images in NextGEN Gallery and any other image galleries or sliders
  • \n
  • option to scale images down, with 2 different options, which is very useful to automatically resize large images. This applies to the featured images and there is no need for additional plugins like Imsanity
  • \n
  • CMYK to RGB conversion
  • \n
  • skip already optimized images
  • \n
  • 24h stellar support (24/7) directly from developers.
  • \n
  • easily test lossy/glossy/lossless versions of the images with a single click in your Media Library
  • \n
  • great for photographers: keep or remove EXIF data from your images, compress photos with lossless option
  • \n
  • works well with both HTTPS and HTTP websites
  • \n
  • uses progressive JPEG for larger images in order to speed up the image display
  • \n
  • you can run ShortPixel plugin on multiple websites or on a multisite with a single API Key
  • \n
  • it is safe to test and use the plugin: all the original images are by default saved in a local backup that can be restored with a click, either one by one or in bulk
  • \n
  • ‘Bulk’ optimize all the existing images in Media Library or in any gallery with one click
  • \n
  • works great for eCommerce websites using WooCommerce or other plugins
  • \n
  • works great with NextGEN gallery, Foo Gallery and any other galleries and sliders
  • \n
  • compatible with WP Engine hosted websites and all the major hosting providers
  • \n
  • compatible with WPML and WPML Media plugins
  • \n
  • no file size limit
  • \n
  • integrates with Gravity Forms post_image field type optimizing the images upon upload
  • \n
  • compatible with watermarking plugins
  • \n
  • option to deactivate auto-optimizing images on upload
  • \n
  • no credits are used for the images that are optimised less that 5%
  • \n
  • direct integration with CloudFlare, either by using an API Key or a Token
  • \n
  • 30 days optimization report with all image details and overall statistics
  • \n
  • We are GDPR compliant! Read more.
  • \n
  • free optimization credits for non-profits, contact us for details
  • \n
\n

How much does it cost?
\nShortPixel comes with 100 free credits/month and additional credits can be bought for as little as $4.99 for 5,000 image credits.
\nCheck out our prices.

\n
\n

Testimonials:
\n ★★★★★ A Super Plugin works very well 62% reduction overall. robertvarns
\n ★★★★★ The secret sauce for a WordPress website. mark1mark
\n ★★★★★ A must have plugin, great support! ElColo13
\n ★★★★★ Excellent Plugin! Even Better Customer Service! scaliendo
\n ★★★★★ Great image compression, solid plugin, equally great support. matters1959
\n more testimonials

\n
\n\n

Help us spread the word by recommending ShortPixel to your friends and collect 100 lifetime monthly additional image credits for each referred active user. Make money by promoting a great plugin with our 30% commission affiliate program.

\n

Other plugins by ShortPixel

\n\n

Get in touch!

\n\n

Actions and Filters for Developers

\n

The ShortPixel Image Optimiser plugin calls the following actions and filters:

\n
do_action( 'shortpixel_image_optimised', $post_id );\n
\n

upon successful optimization;

\n
do_action(\"shortpixel_before_restore_image\", $post_id);\n
\n

before restoring an image from backup;

\n
do_action(\"shortpixel_after_restore_image\", $post_id);\n
\n

after succesful restore;

\n
apply_filters(\"shortpixel_backup_folder\", $backup_folder, $main_file_path, $sizes);\n
\n

just before returning the ShortPixel backup folder, usually /wp-content/uploads/ShortpixelBackups. The $sizes are the sizes array from metadata;

\n
apply_filters('shortpixel_image_exists', file_exists($path), $path, $post_id);\n
\n

post ID is not always set, only if it’s an image from Media Library;

\n
apply_filters('shortpixel_image_urls', $URLs, $post_id);\n
\n

filters the URLs that will be sent to optimisation, $URLs is a plain array;

\n
apply_filters('shortpixel/db/chunk_size', $chunk);\n
\n

the $chunk is the value ShortPixel chooses to use as number of selected records in one query (based on total table size), some hosts work better with a different value;

\n
apply_filters('shortpixel/backup/paths', $PATHs, $mainPath);\n
\n

filters the array of paths of the images sent for backup and can be used to exclude certain paths/images/thumbs from being backed up, based on the image path. $mainPath is the path of the main image, while $PATHs is an array with all files to be backed up (including thumbnails);

\n
apply_filters('shortpixel/settings/image_sizes', $sizes);\n
\n

filters the array ($sizes) of image sizes which can be excluded from processing (displayed in the plugin Advanced settings).

\n

In order to define custom thumbnails to be picked up by the optimization you have two options, both comma separated defines:

\n
define('SHORTPIXEL_CUSTOM_THUMB_SUFFIXES', '_tl,_tr');\n
\n

will handle custom thumbnails like image-100x100_tl.jpg;

\n
define('SHORTPIXEL_CUSTOM_THUMB_INFIXES', '-uae');\n
\n

will handle custom thumbnails like image-uae-100×100.jpg;

\n
define('SHORTPIXEL_USE_DOUBLE_WEBP_EXTENSION', true);\n
\n

will tell the plugin to create double extensions for the WebP image counterparts, for example image.jpg.webp for image.jpg;

\n
define(\"SHORTPIXEL_NOFLOCK\", true);\n
\n

don’t use flock queue, only activate this when you have flock() denied errors on your installation;

\n
define(\"SHORTPIXEL_EXPERIMENTAL_SECURICACHE\", true);\n
\n

adds timestamps to URLS, to prevent hitting the cache. Useful for persistent caches.

\n

Hide the Cloudflare settings by defining these constants in wp-config.php:

\n
define('SHORTPIXEL_CFTOKEN', 'the Cloudflare API token that has Purge Cache right');\ndefine('SHORTPIXEL_CFZONE', 'The Zone ID from the domain settings in Cloudflare');\n
\n

Hide the WSO banner in the settings by defining this constant in wp-config.php:

\n
define('SHORTPIXEL_NO_BANNER', true);\n
\n

Alternatively, you can use this filter in your theme’s functions.php file:

\n
add_filter('shortpixel/settings/no_banner', true);\n
\n","download_link":"https://downloads.wordpress.org/plugin/shortpixel-image-optimiser.4.22.5.zip","tags":{"compressor":"compressor","convert-webp":"convert webp","image-optimization":"image optimization","optimize-images":"optimize images","resize":"resize"},"donate_link":"","icons":{"1x":"https://ps.w.org/shortpixel-image-optimiser/assets/icon-128x128.png?rev=1038819","2x":"https://ps.w.org/shortpixel-image-optimiser/assets/icon-256x256.png?rev=1038819"},"wporg":true},{"name":"Theme Kit for Twenty Twenty-One & Twenty Twenty (Customization, Gutenberg Blocks, Templates) – Twentig","slug":"twentig","version":"1.3.5","author":"Twentig","author_profile":"https://profiles.wordpress.org/twentig","requires":"5.5","tested":"5.8","requires_php":"5.6","rating":100,"ratings":{"1":0,"2":0,"3":0,"4":2,"5":104},"num_ratings":106,"support_threads":30,"support_threads_resolved":29,"active_installs":10000,"downloaded":138963,"last_updated":"2021-08-10 11:02am GMT","added":"2019-05-29","homepage":"https://twentig.com","short_description":"Supercharge your WordPress theme (Twenty Twenty-One & Twenty Twenty) with customization options, enhanced Gutenberg blocks,…","description":"

The easy way to build a beautiful website.

\n

Twentig helps you customize the default WordPress theme (Twenty Twenty-One and Twenty Twenty) the way you want with Google Fonts, colors, custom layouts, and many more options.

\n

With enhanced Gutenberg blocks, pre-designed block templates, and starter websites, you’ve got everything you need to build stunning pages that look great on any device — no coding or design skills needed.

\n
\n

“Twentig is a plugin that essentially gives superpowers to the default theme.” — Justin Tadlock, WP Tavern

\n
\n

Customize the most popular WordPress theme. Your way.

\n

Twentig offers powerful features to customize the Twenty Twenty-One and Twenty Twenty themes — making it easier than ever to create your own professional website.

\n

Advanced theme customization. From post grid to sidebar to sticky header to footer layout, our plugin provides endless ways to enhance your WordPress theme. Change the look and feel of your website by customizing the fonts (Google Fonts), colors, global styles, 404 page, and more.

\n

Custom page templates. Control the look of your entire page with our page templates. Easily remove the page title, header, footer, or set a transparent header. Now you can use Gutenberg blocks to create a custom hero, landing page, coming soon page, and more.

\n

Tailored design. Twentig brings design improvements to the default WordPress theme. Our additional block settings and pre-designed block templates are specially built for it — so it’s simple to make beautiful pages with Gutenberg blocks.

\n

Start with a pre-built website.

\n

Instead of starting from scratch, you can quickly import one of Twentig’s starter websites crafted by award-winning designers.

\n

The simple way to import starter websites. Choose from a variety of starter websites and seamlessly load them in a few seconds in the Customizer. Preview and customize your theme any way you like before publishing it to your live site.

\n

Flexible import. Twentig lets you import full websites (Customizer settings, menus, widgets, and pages built with Gutenberg blocks). You can also only import what you need, be it the styling or the pages, on a fresh install or an existing website.

\n

Check out the starter websites to see the power and flexibility of Twentig.

\n

Do more with Gutenberg blocks.

\n

Twentig enhances the existing Gutenberg blocks — taking the WordPress block editor to a new level of design and creativity.

\n

Block customization made easy. We’ve added the right amount of features to the Gutenberg core blocks. So you can easily customize your blocks to fit your needs with just a few clicks.

\n

Powerful Gutenberg block features. Twentig provides alternative styles, advanced block settings, margin controls, and CSS classes. From columns style to group shape divider to typography settings, you have the best tools to customize the Gutenberg blocks and build gorgeous pages.

\n

Build your pages with ready-to-use templates.

\n

Twentig brings hundreds of pre-designed block patterns and page templates — making it easier and faster than ever to create stunning pages.

\n

Flexible block templates. Choose from a variety of versatile block patterns and page templates that you can mix and match to fit your project. Our block template library is designed to enable a wide range of uses and endless design possibilities.

\n

Professional design. Our templates are responsive and give your pages a professional look right from the start — no coding or design skills needed.

\n

Twentig features list

\n

Check out the screenshots to see how Twentig can transform your theme and the Gutenberg blocks.

\n

ADDITIONAL THEME OPTIONS

\n

Header

\n
    \n
  • Header layouts
  • \n
  • Sticky header
  • \n
  • Header width
  • \n
  • Header decoration
  • \n
  • Additional elements: search bar, social icons, button
  • \n
  • Logo width
  • \n
  • Custom logo for transparent header
  • \n
  • Menu link style
  • \n
  • Option to display the burger menu on tablet
  • \n
\n

Footer

\n
    \n
  • Footer layouts
  • \n
  • Footer widgets layout
  • \n
  • Footer width
  • \n
  • Custom copyright and remove “Powered by WordPress”
  • \n
  • Social icons
  • \n
\n

Site Layout

\n
    \n
  • Text width
  • \n
  • Wide width (Twenty Twenty-One theme)
  • \n
  • Site width to create a boxed layout site (Twenty Twenty-One theme)
  • \n
\n

Blog Posts Page

\n
    \n
  • Option to display the page title (Twenty Twenty-One theme)
  • \n
  • Blog layouts: stack, post grid, post grid card
  • \n
  • Blog sidebar (Twenty Twenty-One theme)
  • \n
  • Number of columns for post grid layouts
  • \n
  • Featured image options
  • \n
  • Blog content options
  • \n
  • Blog meta options
  • \n
  • Pagination style (Twenty Twenty-One theme)
  • \n
\n

Single Blog Post

\n
    \n
  • Featured image and post title layouts
  • \n
  • Blog sidebar (Twenty Twenty-One theme)
  • \n
  • Option to display the manual excerpt below the title
  • \n
  • Single post meta options
  • \n
  • Post navigation layout (Twenty Twenty theme)
  • \n
  • Hide comments section
  • \n
\n

Typography & Colors

\n
    \n
  • Google Fonts options (curated collection and custom Google Fonts)
  • \n
  • Google Fonts pairings and Google Fonts presets
  • \n
  • Font settings
  • \n
  • Color options
  • \n
\n

Pages

\n
    \n
  • Custom page templates: remove the page title, header, and footer, or set a transparent header
  • \n
  • Featured image and page title layouts
  • \n
\n

Custom 404 Page

\n
    \n
  • Option to assign any page as the 404 page
  • \n
\n

Additional Settings

\n
    \n
  • Minimal style for links (Twenty Twenty-One theme)
  • \n
  • Button style
  • \n
  • Separator style
  • \n
  • Social icons style (Twenty Twenty theme)
  • \n
\n

ADDITIONAL GUTENBERG BLOCK SETTINGS

\n
    \n
  • Gutenberg core blocks: top margin and bottom margin
  • \n
  • Group: shadow, border, shape divider, full height
  • \n
  • Columns: gutter, responsive layout, columns style (card, border), text alignment, stretched link
  • \n
  • Media & Text: styles (shadow, overlap), responsive layout, reverse stack order, stretched link, full height
  • \n
  • Cover: styles (shadow, inner border), stretched link, hover effect
  • \n
  • Heading: typography options, decoration
  • \n
  • Paragraph: wide width, typography options
  • \n
  • List: styles (dash, checkmark, arrow, border, no bullet, inline), typography options, spacing
  • \n
  • Image: styles (rounded, shadow, frame, border), image filter
  • \n
  • Gallery: stack variation, styles (rounded, frame), fixed width columns, image aspect ratio, gutter, responsive layout, caption size, border, image filter
  • \n
  • YouTube, Vimeo, SoundCloud, and Video blocks: style (frame)
  • \n
  • Latest Posts: styles (card, border), image aspect ratio, heading size, stretched link, text alignment
  • \n
  • Social Icons: hover effect
  • \n
  • Quote: additional styles
  • \n
  • Pullquote: additional styles
  • \n
  • Table: styles (border, inner border), vertical alignment
  • \n
  • Separator: style (short line), responsive visibility
  • \n
  • Spacer: responsive visibility
  • \n
\n

GUTENBERG TEMPLATE LIBRARY

\n

Hundreds of Gutenberg block patterns grouped by following categories:

\n
    \n
  • Columns
  • \n
  • Text Columns
  • \n
  • Text and Image
  • \n
  • Text
  • \n
  • Hero
  • \n
  • Cover
  • \n
  • Call to Action
  • \n
  • List
  • \n
  • Numbers, Stats
  • \n
  • Gallery
  • \n
  • Video, Audio
  • \n
  • Latest Posts
  • \n
  • Contact
  • \n
  • Team
  • \n
  • Testimonials
  • \n
  • Logos, Clients
  • \n
  • Pricing
  • \n
  • FAQ
  • \n
  • Events, Schedule
  • \n
\n

Dozens of pre-designed page templates grouped by following categories:

\n
    \n
  • Homepage
  • \n
  • About
  • \n
  • Services
  • \n
  • Contact
  • \n
  • Single Page
  • \n
\n

Get more

\n\n

Enjoying Twentig?

\n\n","download_link":"https://downloads.wordpress.org/plugin/twentig.1.3.5.zip","tags":{"gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","templates":"templates","theme":"theme","twenty-twenty-one":"twenty-twenty-one"},"donate_link":"https://www.paypal.com/donate?hosted_button_id=JTBTPQAFEA94E","icons":{"1x":"https://ps.w.org/twentig/assets/icon.svg?rev=2569439","2x":"https://ps.w.org/twentig/assets/icon-256x256.png?rev=2569439","svg":"https://ps.w.org/twentig/assets/icon.svg?rev=2569439"},"wporg":true},{"name":"Custom Post Type UI","slug":"custom-post-type-ui","version":"1.9.2","author":"WebDevStudios","author_profile":"https://profiles.wordpress.org/williamsba1","requires":"5.5","tested":"5.7.2","requires_php":"5.6","rating":94,"ratings":{"1":12,"2":3,"3":6,"4":9,"5":202},"num_ratings":232,"support_threads":66,"support_threads_resolved":29,"active_installs":1000000,"downloaded":8717024,"last_updated":"2021-06-17 2:40am GMT","added":"2010-02-26","homepage":"https://github.com/WebDevStudios/custom-post-type-ui/","short_description":"Admin UI for creating custom post types and custom taxonomies for WordPress","description":"

Custom Post Type UI provides an easy to use interface for registering and managing custom post types and taxonomies for your website.

\n

While CPTUI helps solve the problem of creating custom post types, displaying the data gleaned from them can be a whole new challenge. That’s why we created Custom Post Type UI Extended. View our Layouts page to see some examples that are available with Custom Post Type UI Extended.

\n

Official development of Custom Post Type UI is on GitHub, with official stable releases published on WordPress.org. The GitHub repo can be found at https://github.com/WebDevStudios/custom-post-type-ui. Please use the Support tab for potential bugs, issues, or enhancement ideas.

\n

Pluginize was launched in 2016 by WebDevStudios to promote, support, and house all of their WordPress products. Pluginize is not only creating new products for WordPress all the time, like CPTUI Extended, but also provides ongoing support and development for WordPress community favorites like CMB2 and more.

\n","download_link":"https://downloads.wordpress.org/plugin/custom-post-type-ui.zip","tags":{"cms":"cms","cpt":"cpt","custom-post-types":"custom post types","post":"post","types":"types"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=3084056","icons":{"1x":"https://ps.w.org/custom-post-type-ui/assets/icon-128x128.png?rev=2549362","2x":"https://ps.w.org/custom-post-type-ui/assets/icon-256x256.png?rev=2549362"},"wporg":true},{"name":"Flex Posts – Widget and Gutenberg Block","slug":"flex-posts","version":"1.8.1","author":"Tajam","author_profile":"https://profiles.wordpress.org/tajam","requires":"5.2","tested":"5.8","requires_php":false,"rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":17},"num_ratings":17,"support_threads":8,"support_threads_resolved":3,"active_installs":3000,"downloaded":24490,"last_updated":"2021-07-29 10:41am GMT","added":"2018-05-10","homepage":"https://tajam.id/flex-posts/","short_description":"A widget to display posts with thumbnails in various layouts. Fits nicely in any widget…","description":"

Flex Posts is a widget to display posts in various different layouts. It is useful for a news site where you need to display a lot of posts in a page.

\n

The widget is responsive so you can place it in any widget area. The widget content will adapt based on the width of its container. In a narrow area like standard sidebar, posts will be displayed vertically, but in a wider area, posts will be displayed in 2 or 3 columns depends on the container’s width.

\n

Widget Settings

\n
    \n
  • Title: Set the widget title. Leave it empty to hide the title section.
  • \n
  • Title URL: Set the title link url. Leave it empty to disable link in the title.
  • \n
  • Layout: Select a widget layout, from layout 1 to 4.
  • \n
  • Post type: Select the post type. Options include: Post, Page, custom post types if available, and any.
  • \n
  • Category: Select a category for the posts, or choose All Categories to disable this filter.
  • \n
  • Tag(s): Set a post tag (using the tag slug). You can also use comma separated value for multiple tags. Prepending a tag with a hyphen will exclude posts matching that tag. Eg, featured, -video will show posts tagged with featured but not video.
  • \n
  • Order by: Set the order in which the posts will be displayed. Options include: Newest, Oldest, Most Commented, Alphabetical, Random, Modified Date.
  • \n
  • Number of posts to show: Set the number of posts displayed.
  • \n
  • Number of posts to skip: Set the number of posts to displace or pass over.
  • \n
  • Show image on: Select in which posts the image will be displayed. Options include: All posts, First post only, or none.
  • \n
  • Image size: Select image size from registered image sizes.
  • \n
  • Show post title: Choose to show or hide the post title.
  • \n
  • Show categories: Choose to show or hide the categories.
  • \n
  • Show author: Choose to show or hide the author.
  • \n
  • Show date: Choose to show or hide the date.
  • \n
  • Show comments number: Choose to show or hide the comments number.
  • \n
  • Show excerpt: Choose to show or hide the excerpt
  • \n
  • Excerpt length: Set the number of words for the excerpt.
  • \n
  • Show read more link: Choose to show or hide the Read More link.
  • \n
  • Read more text: Set the text for the read more link. You can leave it empty to use the default text Read More.
  • \n
  • Show pagination: Choose to show or hide the pagination links.
  • \n
  • Additional class(es): Set a custom class for the widget container. You can use spaces to separate multiple classes.
  • \n
\n

Gutenberg Block

\n

Since version 1.1.0, Flex Posts also includes a gutenberg block. You can add the widget directly into the post/page content with the WP 5.0 block editor.

\n

Demo

\n

Please visit the live demo here: Flex Posts Demo

\n

Requirements

\n

This plugin has been tested and works with at least PHP 5.3 installed in your environment. But we strongly recommend you to use the latest PHP version, as using older versions may expose you to security vulnerabilities.

\n","download_link":"https://downloads.wordpress.org/plugin/flex-posts.zip","tags":{"category-posts":"category posts","grid":"grid","magazine":"magazine","news":"news","responsive":"responsive"},"donate_link":"https://tajam.id/","icons":{"1x":"https://ps.w.org/flex-posts/assets/icon-128x128.png?rev=1871802"},"wporg":true},{"name":"YARPP – Yet Another Related Posts Plugin","slug":"yet-another-related-posts-plugin","version":"5.27.4","author":"YARPP","author_profile":"https://profiles.wordpress.org/jeffparker","requires":"3.7","tested":"5.8","requires_php":"5.3","rating":94,"ratings":{"1":33,"2":2,"3":14,"4":45,"5":625},"num_ratings":719,"support_threads":28,"support_threads_resolved":12,"active_installs":100000,"downloaded":6483726,"last_updated":"2021-08-25 5:56pm GMT","added":"2008-01-02","homepage":"https://yarpp.com/","short_description":"The best WordPress plugin for displaying related posts. Simple and flexible, with a powerful proven algorithm and inbuilt caching.","description":"

Related Posts Plugin for WordPress

\n

Yet Another Related Posts Plugin (YARPP) is a professionally maintained, highly customizable, performant and feature rich plugin that displays pages, posts, and custom post types related to the current entry. YARPP introduces your visitors to other relevant content on your site — boosting visitor engagement, time on site and SEO. Related Posts can increase your pageviews up to 10%. Simply install, activate and watch your sessions and pageviews increase.

\n

Key Features

\n
    \n
  • An advanced and versatile algorithm: Using a customizable algorithm considering post titles, content, tags, categories, and custom taxonomies, YARPP finds related content from across your site
  • \n
  • Caching: Inbuilt cache makes subsequent queries super efficient and fast
  • \n
  • Custom Templates and Styles: Use a pre-built list or thumbnail template, or use the YARPP custom templating system for 100% control of how results are styles and displayed
  • \n
  • Flexible with a full range of placement options, including:\n\n
  • \n
  • Works with all languages, including those with full-width (double-byte) characters and those that don’t use spaces between words
  • \n
  • Custom post type and taxonomy support
  • \n
  • WordPress Multisite support
  • \n
  • bbPress forums support
  • \n
  • WooCommerce support
  • \n
  • Professionally maintained and supported with regular updates
  • \n
\n

YARPP Algorithm Explained

\n

\n

Contribute: Translate YARPP

\n

YARPP is available for translation directly on WordPress.org. Please check out the official Translator Handbook.

\n

Wide Support

\n

YARPP is the most popular and the highest rated Related Posts Plugin for WordPress. With your support, this plugin always strives to be the best WordPress plugin for Content Discovery and Related Posts.

\n

✔ Over 10 years of development
\n✔ Over 6 million downloads
\n✔ Translated into more than a dozen languages
\n✔ Professionally maintained and actively supported with regular updates
\n✔ Works with all languages

\n

YARPP works best with PHP 5.3 or greater, MySQL 5.6 or greater OR MariaDB 10.1 or greater, and WordPress 3.7 or greater. See the FAQ for answers to common questions.

\n","download_link":"https://downloads.wordpress.org/plugin/yet-another-related-posts-plugin.5.27.4.zip","tags":{"contextual-related-posts":"contextual related posts","posts":"posts","related-posts":"related posts","seo":"seo","similar-posts":"similar posts"},"donate_link":"https://yarpp.com","icons":{"1x":"https://ps.w.org/yet-another-related-posts-plugin/assets/icon-128x128.png?rev=2549977","2x":"https://ps.w.org/yet-another-related-posts-plugin/assets/icon-256x256.png?rev=2549977"},"wporg":true},{"name":"Superb WordPress Table (SEO Optimized Tables With Schema)","slug":"superb-tables","version":"1.0.8","author":"SuPlugins","author_profile":"https://profiles.wordpress.org/suplugins","requires":"3.0.1","tested":"5.7.2","requires_php":"5.2.4","rating":80,"ratings":{"1":0,"2":1,"3":0,"4":0,"5":2},"num_ratings":3,"support_threads":1,"support_threads_resolved":1,"active_installs":4000,"downloaded":33932,"last_updated":"2021-05-26 8:49pm GMT","added":"2019-03-05","homepage":"https://superbthemes.com/plugins/superb-tables/","short_description":"Responsive & SEO Optimized tables. Get your Google Featured Snippets. Different table designs, table shortcodes…","description":"

Responsive & SEO Optimized tables. Get your Google Featured Snippets. Different table designs, table shortcodes & lightweight code.

\n

Click here to view the demo!

\n

Features

\n
    \n
  • Table Shortcodes
  • \n
  • Multiple Color Schemes
  • \n
  • Use Themes Own Table Design
  • \n
  • Schema Markup (Micro Data)
  • \n
  • Create Unlimited Tables
  • \n
  • Create Unlimited Rows
  • \n
  • Create unlimited Columns
  • \n
  • SEO-friendly Tables With Schema markup
  • \n
  • Purple Color Scheme
  • \n
  • Black/White Color Scheme
  • \n
  • Swap around on columns & rows with drag n’ drop
  • \n
  • Delete Tables & Remove Them From Your Database
  • \n
  • Gives you a better chance to get Google Featured Snippets
  • \n
  • Friendly User Support)
  • \n
  • GDPR Compliant
  • \n
  • W3C Valid Code
  • \n
  • WYSIWYG Functionality Editor
  • \n
\n

Configuring the plugin

\n

Once you’ve installed the plugin, check the left sidebar, and you will notice the Superb Table section. Click on it, and you can now create your first table. Just click on the Add New Table button.

\n

Feel free to add as many columns and rows as you want—inserting rows and columns is extremely easy.

\n

You have a few options to make your table stand apart. First, choose one of the three color schemes: standard, purple, or black. Second, choose your table design: default or custom. Block, left, and inline-block are the floating modes for your table. Finally, enable or disable the full width of the table.

\n

Once you finish your table, name it and save it. All you have to do now is to copy the shortcode and paste wherever you want, you can for example embed it in the Gutenberg Shortcode Block! (It works in the classic WordPress editor too)

\n

Consider purchasing our premium version for $11 to unlock more features!

\n

Why use a HTML table

\n

Displaying data within a comparison table is beneficial for not only readers but also content creators. A table does a better job than long paragraphs of text, underlined phrases, and bulleted lists. It shows a lot of information side by side in a concise format. Bloggers and content creators should create tables and insert the data. There’s no need to search for breathtaking expressions, cool descriptions, or digestible lists of items. It’s just pure data, and everyone is happy with this situation. You can read our full guide on How to Add a Table to Your WordPress Website with Superb Tables.

\n

Responsive Tables

\n

We developed Superb Tables mobile friendly by taking responsiveness into account, and as a result, you can make a WordPress table responsive by using our plugin. The tables are fully responsive regardless of the number of rows and columns. The plugin works on all mobile devices and tablets (iPhone, Android etc.). The plugin works with AMP.

\n

SEO Friendly WordPress Tables With Schema Markup

\n

“Schema markup“ and “featured snippets“ are two interconnected terms that are being used by more and more bloggers, SEO practitioners, and developers. Have you noticed that Google now provides complex answers in the form of lists, tables, paragraphs, or videos directly on the results page? Those are featured snippets.

\n

Moz claims that 23% of all search results include a featured snippet—a descriptive box displayed on the search results page providing information for your query. It may include paragraphs, lists, videos, or tables. You have to consider featured snippets when choosing a table plugin—can it help Google generate a featured snippet from the data within your table?

\n

We developed Superb Tables with featured snippets in mind, and you can use the plugin worry-free. We used schema markup, which is the code that helps search engine bots generate snippets from your content, including tables. It’s a great way for affiliate websites and blogs to promote their content.

\n

You must use WordPress tables with schema markup to get featured snippets on search engines, and Superb Tables is a reliable solution in this respect.

\n

Add Tables everywhere & use them for Any Purpose

\n

You can insert the SEO optimised tables with microdata everywhere through the shortcode. For example in a popup, widgets, Gutenberg blocks, email newsletter sent from your WordPress website. You can also insert it on any post or page, even category pages, blog feed, search page and your 404 page! The plugin is made for affiliates marketers and affiliate websites, having a good SERP rank in Google and Bing is critical. When you’re looking to improve your ranking then all of your plugins must be SEO optimized, otherwise it’s gonna be hard to create monetization through ads programs such as AdSense and Amazon Associates Program.

\n

We know that business is important for any modern blog or affiliate marketing website that’s looking to make a revenue from it. Remember to use HTTPS (SSL) on your website, a CDN and lightweight stats tracking tools such as Google Analytics to better your SEO as well.

\n

Guide to creating your Superb Tables

\n
    \n
  1. In the wordpress admin panel, go to the sidebar and click ‘Superb Tables’.
  2. \n
  3. Click the green ‘Add new table’ in the top left corner
  4. \n
  5. Fill in your table data, click ‘Save’
  6. \n
  7. Click ‘Superb Tables’ in the left sidebar and copy paste the ‘Table Shortcode’
  8. \n
  9. Insert the Table Shortcode (For example [spbtbl_sc id=1] ) in a post, page, widget or in HTML.
  10. \n
\n

You’re done!

\n

Resources & Inspiration

\n
    \n
  • Auto-Expand: https://codepen.io/vsync/pen/frudD
  • \n
  • Data Table: https://codepen.io/alassetter/pen/cyrfB
  • \n
  • Table DnD: https://github.com/isocra/TableDnD/
  • \n
  • Table icon: https://www.iconfinder.com/icons/1608863/table_icon#size=256
  • \n
  • Custom confirm: https://codepen.io/Ana_Champion/pen/JRbZEL
  • \n
  • Table design inspiration: https://codepen.io/lukepeters/pen/bfFur
  • \n
  • Table design inspiration: https://codepen.io/alassetter/pen/cyrfB
  • \n
  • Table design inspiration: https://uicookies.com/wp-content/uploads/2018/05/table-responsive-v2-1000×750.jpg
  • \n
  • Table design inspiration: https://uicookies.com/wp-content/uploads/2018/05/table-responsive-v1.jpg
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/superb-tables.1.0.8.zip","tags":{"content-tables":"content tables","responsive-tables":"responsive tables","table":"table","tables":"tables"},"donate_link":"","icons":{"1x":"https://ps.w.org/superb-tables/assets/icon-256x256.png?rev=2044672","2x":"https://ps.w.org/superb-tables/assets/icon-256x256.png?rev=2044672"},"wporg":true},{"name":"Floating Button","slug":"floating-button","version":"4.3","author":"Wow-Company","author_profile":"https://profiles.wordpress.org/wpcalc","requires":"3.2","tested":"5.8","requires_php":"5.3","rating":80,"ratings":{"1":1,"2":1,"3":0,"4":0,"5":5},"num_ratings":7,"support_threads":1,"support_threads_resolved":0,"active_installs":2000,"downloaded":32490,"last_updated":"2021-07-21 5:47am GMT","added":"2018-09-08","homepage":"https://wordpress.org/plugins/floating-button/","short_description":"Easily create a custom sticky floating buttons. The Floating Button will be the effective solution for increasing the recognition of your web resource","description":"

The Floating Button is the free WordPress plugin for creating the original sticky floating actions buttons. It allows you to install on the site floating buttons with unique thematic icons. The extension serves for placing both traditional navigation bar and additional block with useful information for user.

\n

The Floating Button plugin will be the effective solution for increasing the recognition of your web resource. Its connection will bring originality and novelty to the used theme of the site. The extension helps to configure user-friendly navigation, place useful information or contact panel.

\n

Main features

\n
    \n
  • 2 submenu;
  • \n
  • more than 1500+ FontAwesome icons;
  • \n
  • any links insertion;
  • \n
  • using the tooltips to provide more information;
  • \n
  • round buttons shape;
  • \n
  • LogIn link;
  • \n
  • LogOut link;
  • \n
  • Lost password link
  • \n
\n

Floating Button can be used for:

\n
    \n
  • site navigation;
  • \n
  • additional menu;
  • \n
  • social panel;
  • \n
  • user menu;
  • \n
  • Skype menu and others;
  • \n
  • And more…
  • \n
\n

Pro version

\n

Connect the Pro-version of the plugin to gain access to more features:

\n

Preview of Pro version

\n
    \n
  • create an unlimited amount of buttons;
  • \n
  • use up to 4 floating button positions;
  • \n
  • change the form of the menu display: Circle, Rounded square, Ellipse, Square;
  • \n
  • set the color of the main button and submenu items;
  • \n
  • accompany the change in navigation behavior with the highlight when hovering the mouse cursor;
  • \n
  • use the built-in user menu, social panel and print function;
  • \n
  • set the display according to the user role and status;
  • \n
  • change the menu output depending on the language of the page;
  • \n
  • add restrictions for screens with large or small resolution;
  • \n
  • use the categories on the site, exceptions and ID to place the menu on individual pages;
  • \n
  • insert the shortcode of the panel in the specified location;
  • \n
  • And more…
  • \n
\n

Buy Pro version

\n

Use with other plugins to maximize your results

\n\n

Support

\n

Search for answers and ask your questions at support center

\n","download_link":"https://downloads.wordpress.org/plugin/floating-button.4.3.zip","tags":{"circle-menu":"circle menu","float-menu":"float menu","floating-button":"floating button","floating-menu":"floating menu","sticky-button":"sticky button"},"donate_link":"https://wow-estore.com/item/floating-button-pro/","icons":{"1x":"https://ps.w.org/floating-button/assets/icon-128x128.png?rev=2533016","2x":"https://ps.w.org/floating-button/assets/icon-256x256.png?rev=2533016"},"wporg":true},{"name":"Breadcrumb NavXT","slug":"breadcrumb-navxt","version":"6.6.0","author":"John Havlik","author_profile":"https://profiles.wordpress.org/mtekk","requires":"4.9","tested":"5.7.2","requires_php":"5.5","rating":94,"ratings":{"1":5,"2":2,"3":4,"4":7,"5":104},"num_ratings":122,"support_threads":14,"support_threads_resolved":0,"active_installs":900000,"downloaded":10108033,"last_updated":"2021-04-01 2:13am GMT","added":"2007-12-01","homepage":"http://mtekk.us/code/breadcrumb-navxt/","short_description":"Breadcrumb NavXT, the successor to the popular WordPress plugin Breadcrumb Navigation XT, was written from…","description":"

Breadcrumb NavXT, the successor to the popular WordPress plugin Breadcrumb Navigation XT, was written from the ground up to be better than its ancestor. This plugin generates locational breadcrumb trails for your WordPress powered blog or website. These breadcrumb trails are highly customizable to suit the needs of just about any website running WordPress. The Administrative interface makes setting options easy, while a direct class access is available for theme developers and more adventurous users.

\n

PHP Requirements

\n

Breadcrumb NavXT 5.2 and newer require PHP5.3
\nBreadcrumb NavXT 5.1.1 and older require PHP5.2

\n

Features (non-exhaustive)

\n
    \n
  • RDFa format Schema.org BreadcrumbList compatible breadcrumb generation.
  • \n
  • Extensive breadcrumb customization control via a settings page with appropriate default values for most use cases.
  • \n
  • Network admin settings page for managing breadcrumb settings for all subsites with configurable global priority.
  • \n
  • Built in WordPress Widget.
  • \n
  • Extensible via OOP and provided actions and filters.
  • \n
  • WPML compatible (enhanced compatibility with WPML extensions plugin).
  • \n
  • Polylang compatible (enhanced compatibility with Polylang extensions plugin).
  • \n
  • bbPress compatible (enhanced compatibility with bbPress extensions plugin).
  • \n
  • BuddyPress compatible (enhanced compatibility with BuddyPress extensions plugin).
  • \n
\n

Translations

\n

Breadcrumb NavXT now supports WordPress.org language packs. Want to translate Breadcrumb NavXT? Visit Breadcrumb NavXT’s WordPress.org translation project.

\n","download_link":"https://downloads.wordpress.org/plugin/breadcrumb-navxt.6.6.0.zip","tags":{"breadcrumb":"breadcrumb","breadcrumbs":"breadcrumbs","menu":"menu","navigation":"navigation","trail":"trail"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=FD5XEU783BR8U&lc=US&item_name=Breadcrumb%20NavXT%20Donation¤cy_code=USD&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted","icons":{"1x":"https://ps.w.org/breadcrumb-navxt/assets/icon.svg?rev=1927103","2x":"https://ps.w.org/breadcrumb-navxt/assets/icon-256x256.png?rev=2410525","svg":"https://ps.w.org/breadcrumb-navxt/assets/icon.svg?rev=1927103"},"wporg":true},{"name":"WP Recipe Maker","slug":"wp-recipe-maker","version":"7.5.1","author":"Bootstrapped Ventures","author_profile":"https://profiles.wordpress.org/brechtvds","requires":"4.4","tested":"5.8","requires_php":"5.4","rating":100,"ratings":{"1":1,"2":0,"3":1,"4":4,"5":201},"num_ratings":207,"support_threads":29,"support_threads_resolved":25,"active_installs":50000,"downloaded":1529765,"last_updated":"2021-08-31 12:27pm GMT","added":"2016-09-07","homepage":"http://bootstrapped.ventures/wp-recipe-maker/","short_description":"The easy and user-friendly recipe plugin for everyone. Automatic JSON-LD metadata for food AND how-to…","description":"

WP Recipe Maker is the easy recipe plugin that everyone can use. An easy workflow allows you to add recipes to any post or page with automatic JSON-LD metadata for your recipes. This metadata will improve your SEO and get you more visitors!

\n

\n

Would you like to see the plugin in action before installing it? We have a WP Recipe Maker demo website showcasing all of the features!

\n
\n

Get the most out of this plugin!
\n Join the WP Recipe Maker Email Course and we’ll help you get started and learn all the tips and trick for using WPRM.

\n
\n

Features

\n

An overview of WP Recipe Maker features:

\n
    \n
  • Compatible with both the Classic Editor and new Gutenberg editor
  • \n
  • Includes an Elementor block and shortcode can be used in other page builders
  • \n
  • Easy workflow to add recipes to any post or page
  • \n
  • Uses schema.org/Recipe JSON-LD metadata optimised for Google Recipe search
  • \n
  • Uses schema.org/How-to JSON-LD metadata optimised for non-food recipes and instructions
  • \n
  • Supports both regular and Guided Recipes for Google metadata
  • \n
  • Google AMP compatible
  • \n
  • Integrates recipe metadata with Yoast SEO schema graph
  • \n
  • Option to disable metadata per recipe if you want to publish non-food or DIY recipes
  • \n
  • Compatible with Pinterest Rich Pins and a setting to easily opt out
  • \n
  • Outputs ItemList metadata for Recipe Roundup posts
  • \n
  • Associate ingredients with instructions to have them show up exactly where needed
  • \n
  • Keyboard accessible and AMP compatible ratings for comments
  • \n
  • Interactive print recipe page with room for ads and optional credit to your website
  • \n
  • Fallback recipe shows up when the plugin is disabled
  • \n
  • Include a recipe video in the template and metadata
  • \n
  • Add photos or videos to any step of the recipe
  • \n
  • Print recipe and jump to recipe shortcodes
  • \n
  • This plugin is fully responsive, your recipes will look good on any device
  • \n
  • Easily change the look and feel to fit your website in the Template Editor
  • \n
  • Structure your ingredients and instructions in groups (e.g. icing and cake batter)
  • \n
  • Full text search for your recipes
  • \n
  • Access your recipes through the WordPress REST API
  • \n
  • Built-in SEO check for your recipe metadata
  • \n
  • Compatible with RTL languages
  • \n
  • Import your recipes from other plugins (see below)
  • \n
\n

WP Recipe Maker Premium

\n

Looking for some more advanced functionality? We also have the WP Recipe Maker Premium add-on available with the following features:

\n
    \n
  • Use ingredient links for linking to products or other recipes
  • \n
  • Adjustable servings make it easy for your visitors
  • \n
  • Display all nutrition data in a nutrition label
  • \n
  • User Ratings allow visitors to vote without commenting
  • \n
  • Add a mobile-friendly kitchen timer to your recipes
  • \n
  • More Premium templates for a unique recipe template
  • \n
  • Create custom recipe taxonomies like price level, difficulty, …
  • \n
  • Use checkboxes for your ingredients and instructions
  • \n
\n

Even more add-ons can add the following functionality:

\n
    \n
  • Integration with a Nutrition API for automatic nutrition facts
  • \n
  • Unit Conversion to reach an international audience with a different unit system
  • \n
  • Have your users send in recipes through the Recipe Submission form
  • \n
  • Give your visitors the power of Recipe Collections for favourites, meal planning and more
  • \n
\n

Import Options

\n

Currently using another recipe plugin? No problem! You can easily migrate all your existing recipes to WP Recipe Maker if you’re using any of the following plugins:

\n
    \n
  • Tasty Recipes
  • \n
  • Create by Mediavine
  • \n
  • EasyRecipe
  • \n
  • WP Ultimate Recipe
  • \n
  • Recipe Card Blocks by WPZOOM
  • \n
  • Meal Planner Pro
  • \n
  • BigOven
  • \n
  • ZipList and Zip Recipes
  • \n
  • Yummly
  • \n
  • Yumprint Recipe Card
  • \n
  • FoodiePress
  • \n
  • Cooked
  • \n
  • Cookbook
  • \n
  • Simple Recipe Pro
  • \n
  • Purr Recipe Plugin
  • \n
  • Recipes by Simmer
  • \n
  • WordPress.com shortcode
  • \n
  • JSON-LD HTML Script
  • \n
  • Multi Rating (ratings only)
  • \n
  • (Need anything else? Just ask!)
  • \n
\n

This plugin is in active development. Feel free to contact us with any feature requests or ideas.

\n","download_link":"https://downloads.wordpress.org/plugin/wp-recipe-maker.zip","tags":{"cooking":"cooking","food":"food","ingredients":"ingredients","recipe":"Recipe","recipes":"recipes"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QG7KZMGFU325Y","icons":{"1x":"https://ps.w.org/wp-recipe-maker/assets/icon-128x128.png?rev=1491788","2x":"https://ps.w.org/wp-recipe-maker/assets/icon-256x256.png?rev=1491788"},"wporg":true},{"name":"Slim SEO – Fast & Automated WordPress SEO Plugin","slug":"slim-seo","version":"3.10.1","author":"eLightUp","author_profile":"https://profiles.wordpress.org/rilwis","requires":"4.5","tested":"5.8","requires_php":"5.6","rating":92,"ratings":{"1":1,"2":3,"3":0,"4":0,"5":26},"num_ratings":30,"support_threads":16,"support_threads_resolved":12,"active_installs":10000,"downloaded":169791,"last_updated":"2021-07-22 1:33am GMT","added":"2018-12-31","homepage":"https://wpslimseo.com","short_description":"A full-featured SEO plugin for WordPress that's lightweight, blazing fast with minimum configuration. No bloats,…","description":"

A Fast & Automated SEO Plugin For WordPress

\n

Currently there are many SEO plugins for WordPress in the market. But these plugins often have too many options and are very complicated for ordinary users. Access to their configuration section, you will easily get lost in a maze of explanations and options that you sometimes don’t understand. Besides, there are ads!

\n

So how can an ordinary user use an SEO plugin?

\n

SEO should be an integrated part of WordPress, where users don’t need or need very little effort to configure for SEO. The main reason is that not everyone understands the terms of SEO and how to configure them optimally.

\n

So, we made Slim SEO.

\n

Slim SEO is a full-featured SEO plugin, that’s done right! It provides a complete SEO solution for WordPress where the configuration has been done automatically. Users do not need to care about their complex and semantic options.

\n

So what does Slim SEO do?

\n

Slim SEO Features

\n

Slim SEO helps you do the following jobs automatically:

\n

1. Meta Tags

\n

The following meta tags are auto-generated and optimized for the best SEO scores.

\n\n

2. XML Sitemap

\n

Slim SEO automatically generates XML sitemap (at domain.com/sitemap.xml) to submit to search engines. With XML sitemaps, your website are indexed fast and completely.

\n

3. Breadcrumbs

\n

The plugin allows you to output a breadcrumb trail on your website easily. It automatically fetches the information from the current post and output a hierarchy for you. You can also style the breadcrumbs to match your theme style.

\n

4. Schema (Structured Data)

\n

Schema is a way that describes structured data for search engines. Based on the data provided, search engines can show the content in the search results page in a more appealing way.

\n

Slim SEO automatically adds the some structured data to the website via JSON-LD which makes your website more SEO-friendly. Not only schemas are created by the plugin, there are also meaningful connections between them. For example, an article (single post) is the main entity of the current webpage. Slim SEO does that all without any configuration.

\n

5. Auto Redirection

\n
    \n
  • Auto redirect attachment page to the attachment file URL.
  • \n
  • Auto redirect author page to the homepage if the website has only one author or the author doesn’t have any posts.
  • \n
\n

6. Open Source

\n

Slim SEO has different contributors which help make Slim SEO a quality product. Join us on Github!

\n

Who should use Slim SEO?

\n

Everyone can use Slim SEO!

\n

However, Slim SEO is perfectly suitable for users who prefer simplicity or do not like the complicated options that other SEO plugins provide. It’s also a good choice for users with little SEO knowledge and just want to use SEO plugins to automate their jobs.

\n

If you like this plugin, you might also like our other products: Meta Box and GretaThemes.

\n","download_link":"https://downloads.wordpress.org/plugin/slim-seo.3.10.1.zip","tags":{"google":"google","schema":"schema","search-engine-optimization":"search engine optimization","seo":"seo","sitemap":"sitemap"},"donate_link":"https://wpslimseo.com/pro/","icons":{"1x":"https://ps.w.org/slim-seo/assets/icon.svg?rev=2005049","svg":"https://ps.w.org/slim-seo/assets/icon.svg?rev=2005049"},"wporg":true},{"name":"Schema & Structured Data for WP & AMP","slug":"schema-and-structured-data-for-wp","version":"1.9.83.1","author":"Magazine3","author_profile":"https://profiles.wordpress.org/magazine3","requires":"3.0","tested":"5.8","requires_php":false,"rating":94,"ratings":{"1":13,"2":1,"3":2,"4":10,"5":183},"num_ratings":209,"support_threads":30,"support_threads_resolved":19,"active_installs":80000,"downloaded":2323847,"last_updated":"2021-08-31 7:07am GMT","added":"2018-08-06","homepage":"","short_description":"Schema & Structured Data for WP & AMP adds Google Rich Snippets markup according to…","description":"

Schema & Structured Data for WP & AMP adds Google Rich Snippets markup according to Schema.org guidelines to structure your site for SEO. (AMP Compatible)

\n

Features

\n
    \n
  • Schema Types: Currently, We have more than 35 schema types such as Blog Posting, News article, Local Business, Web page, Article, Recipe, Product, and Video Object view all. We are going to add all the schema types in the future. You can request the one you want and we will add it for you!
  • \n
  • Conditional Display Fields: Meaning you include or exclude any posts, pages, post types, taxonomies and more!
  • \n
  • Knowlegde Base Support: Recognize the content based on the organization or a person via data type option.
  • \n
  • Full AMP Compatiblity: Supports the AMP for WP and AMP by Automattic plugins.
  • \n
  • Advanced Settings: Play with output of schema markup using these options (Defragment, Add in Footer, Pretty Print, MicroData CleanUp etc.)
  • \n
  • Migration: Import the data from other schema plugins such as (SEO Pressor, WP SEO Schema, Schema Plugin etc )
  • \n
  • Compatibility: Generate the schema markup for the plugins. We have provided schema support for them. Few of them are – kk Star Ratings, WP-PostRatings, bbPress
  • \n
  • Google Review: Display your business google reviews and its schema markup on your website.
  • \n
  • [Premium] Reviews ( Fetch reviews from 75+ platforms ).
  • \n
  • [Premium] Priority Support. Get it We get more than 100 technical queries a day but the Priority support plan will help you skip that and get the help from a dedicated team.
  • \n
  • Review Module: Create your own review rating box with pros and cons and its schema markup
  • \n
  • Schema Type Blocks in Gutenberg: Create your own content with the blocks and json schema markup will be added automatically
  • \n
  • Unlimited Custom Post Types: You can control to represent the Rich Snippets data in the google search console using unlimited custom post types.
  • \n
  • Easy to use with Minimal Settings
  • \n
  • Archive Page Listing Support
  • \n
  • JSON-LD Format
  • \n
  • Easy to use Setup Wizard
  • \n
  • Breadcrumbs Listing Support
  • \n
  • Comments Post comments Support
  • \n
  • Constant Development & New Features: We’ll be releasing the constant updates along with the more handy features as soon as we get the feedback from the users.
  • \n
\n

Supported Schema Types

\n
    \n
  • Apartment
  • \n
  • House
  • \n
  • SingleFamilyResidence
  • \n
  • Article
  • \n
  • Blogposting
  • \n
  • Book
  • \n
  • Course
  • \n
  • DiscussionForumPosting,
  • \n
  • DataFeed
  • \n
  • HowTo
  • \n
  • NewsArticle
  • \n
  • QAPage
  • \n
  • Review
  • \n
  • Recipe
  • \n
  • TVSeries
  • \n
  • SoftwareApplication
  • \n
  • MobileApplication
  • \n
  • SpecialAnnouncement (Related to Coronavirus)
  • \n
  • TechArticle
  • \n
  • WebPage
  • \n
  • Event
  • \n
  • VideoGame
  • \n
  • JobPosting
  • \n
  • Service
  • \n
  • Trip
  • \n
  • AudioObject
  • \n
  • VideoObject
  • \n
  • MedicalCondition
  • \n
  • MusicPlaylist
  • \n
  • MusicAlbum
  • \n
  • LocalBusiness with all the sub categories
  • \n
  • Product
  • \n
  • TouristAttraction
  • \n
  • TouristDestination
  • \n
  • LandmarksOrHistoricalBuildings
  • \n
  • HinduTemple
  • \n
  • Church
  • \n
  • Mosque
  • \n
  • Person
  • \n
  • View All
  • \n
\n

Extensions

\n

Some useful extensions to extend Schema & Structured Data for WP & AMP features, check Woocommerce Compatibility For Schema, Cooked Compatibility For Schema and We are going to add more.

\n

Support

\n

We try our best to provide support on WordPress.org forums. However, We have a special team support where you can ask us questions and get help. Delivering a good user experience means a lot to us and so we try our best to reply each and every question that gets asked.

\n

Bug Reports

\n

Bug reports for Schema & Structured Data for WP & AMP are welcomed on GitHub. Please note GitHub is not a support forum, and issues that aren’t properly qualified as bugs will be closed.

\n

Credits

\n
    \n
  • Select2 used https://github.com/select2/select2 – License URI: https://github.com/select2/select2/blob/develop/LICENSE.md,
  • \n
  • Merlin WP used https://github.com/richtabor/MerlinWP – License URI: https://github.com/richtabor/MerlinWP/blob/master/LICENSE,
  • \n
  • jquery-timepicker used https://github.com/jonthornton/jquery-timepicker
  • \n
  • Rate Yo! used https://github.com/prrashi/rateYo – License URI: https://github.com/prrashi/rateYo/commit/f3812fe96c38b08627d209795176053550fb1427
  • \n
  • Aqua Resizer used http://aquagraphite.com – License URI: WTFPL – http://sam.zoy.org/wtfpl/
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/schema-and-structured-data-for-wp.1.9.83.1.zip","tags":{"google-snippets":"google snippets","rich-snippets":"rich snippets","schema":"schema","schema-org":"schema.org","structured-data":"structured data"},"donate_link":"","icons":{"1x":"https://ps.w.org/schema-and-structured-data-for-wp/assets/icon-128x128.png?rev=1922284","2x":"https://ps.w.org/schema-and-structured-data-for-wp/assets/icon-256x256.png?rev=1922284"},"wporg":true},{"name":"GenerateBlocks","slug":"generateblocks","version":"1.3.5","author":"Tom Usborne","author_profile":"https://profiles.wordpress.org/edge22","requires":"5.4","tested":"5.8","requires_php":"5.6","rating":98,"ratings":{"1":0,"2":0,"3":2,"4":1,"5":72},"num_ratings":75,"support_threads":28,"support_threads_resolved":12,"active_installs":50000,"downloaded":238382,"last_updated":"2021-07-19 6:12pm GMT","added":"2020-05-19","homepage":"https://generateblocks.com","short_description":"A small collection of lightweight WordPress blocks that can accomplish nearly anything.","description":"

\n

\n

Add incredible versatility to your editor without bloating it with tons of one-dimensional Gutenberg blocks. With GenerateBlocks, you can learn a handful of blocks deeply and use them to build anything.

\n

GenerateBlocks works hand-in-hand with GeneratePress, but is built to work with any theme.

\n

Looking for more features? Check out GenerateBlocks Pro.

\n

Container

\n

Organize your content into rows and sections. The Container block is the foundation of your content, allowing you to design unique sections for your content.

\n

Grid

\n

Create advanced layouts with flexible grids. The Grid block gives you the ability to create any kind of layout you can imagine.

\n

Headline

\n

Craft text-rich content with advanced typography. Everything from headings to paragraphs – take full control of your text.

\n

Buttons

\n

Drive conversions with beautiful buttons.

\n

Performance

\n

We take performance seriously. Minimal CSS is generated only for the blocks you need, and our HTML structure is as simple as possible while allowing for maximum flexibility.

\n

Coding standards

\n

Built to the highest coding standards for security, stability and future compatibility.

\n

Fully responsive

\n

Every block comes with tablet and mobile controls, giving you total control of your responsive design.

\n

Documentation

\n

Check out our documentation for more information on the individual blocks and how to use them.

\n","download_link":"https://downloads.wordpress.org/plugin/generateblocks.1.3.5.zip","tags":{"blocks":"blocks","container":"container","grid":"grid","gutenberg":"gutenberg","headline":"headline"},"donate_link":"https://generateblocks.com","icons":{"1x":"https://ps.w.org/generateblocks/assets/icon-128x128.png?rev=2336822","2x":"https://ps.w.org/generateblocks/assets/icon-256x256.png?rev=2336822"},"wporg":true},{"name":"Blackhole for Bad Bots","slug":"blackhole-bad-bots","version":"3.2","author":"Jeff Starr","author_profile":"https://profiles.wordpress.org/specialk","requires":"4.1","tested":"5.8","requires_php":"5.6.20","rating":98,"ratings":{"1":2,"2":0,"3":3,"4":2,"5":108},"num_ratings":115,"support_threads":3,"support_threads_resolved":3,"active_installs":30000,"downloaded":305651,"last_updated":"2021-07-19 8:41pm GMT","added":"2016-02-18","homepage":"https://perishablepress.com/blackhole-bad-bots/","short_description":"Blackhole is a WordPress security plugin that detects and traps bad bots in a virtual black hole, where they are denied access to your entire site.","description":"
\n

Add your own virtual black hole trap for bad bots.

\n
\n

Bye bye bad bots..

\n

Bad bots are the worst. They do all sorts of nasty stuff and waste server resources. The Blackhole plugin helps to stop bad bots and save precious resources for legit visitors.

\n

How does it work?

\n

First the plugin adds a hidden trigger link to the footer of your pages. You then add a line to your robots.txt file that forbids all bots from following the hidden link. Bots that then ignore or disobey your robots rules will crawl the link and fall into the trap. Once trapped, bad bots are denied further access to your WordPress site.

\n

I call it the “one-strike” rule: bots have one chance to obey your site’s robots.txt rule. Failure to comply results in immediate banishment. The best part is that the Blackhole only affects bad bots: human users never see the hidden link, and good bots obey the robots rules in the first place. Win-win! 🙂

\n

Using a caching plugin? Check out the Installation notes for important info.

\n

Features

\n
    \n
  • Easy to set up
  • \n
  • Squeaky clean code
  • \n
  • Focused and modular
  • \n
  • Lightweight, fast and flexible
  • \n
  • Built with the WordPress API
  • \n
  • Works with other security plugins
  • \n
  • Easy to reset the list of bad bots
  • \n
  • Easy to delete any bot from the list
  • \n
  • Regularly updated and “future proof”
  • \n
  • Blackhole link includes “nofollow” attribute
  • \n
  • Plugin options configurable via settings screen
  • \n
  • Works silently behind the scenes to protect your site
  • \n
  • Whitelists all major search engines to never block
  • \n
  • Focused on flexibility, performance, and security
  • \n
  • Email alerts with WHOIS lookup for blocked bots
  • \n
  • Complete inline documentation via the Help tab
  • \n
  • Provides setting to whitelist any IP addresses
  • \n
  • Customize the message displayed to bad bots 😉
  • \n
  • One-click restore the plugin default options
  • \n
  • Does NOT use or require any .htaccess rules
  • \n
\n

Blackhole for Bad Bots protects your site against bad bots, spammers, scrapers, scanners, and other automated threats.

\n

Not using WordPress? Check out the standalone PHP version of Blackhole!

\n

Check out Blackhole Pro and level up with advanced features!

\n

Whitelist

\n

By default, this plugin does NOT block any of the major search engines (user agents):

\n
    \n
  • AOL.com
  • \n
  • Baidu
  • \n
  • Bingbot/MSN
  • \n
  • DuckDuckGo
  • \n
  • Googlebot
  • \n
  • Teoma
  • \n
  • Yahoo!
  • \n
  • Yandex
  • \n
\n

These search engines (and all of their myriad variations) are whitelisted via user agent. So are a bunch of other “useful” bots. They always are allowed full access to your site, even if they disobey your robots.txt rules. This list can be customized in the plugin settings. For a complete list of whitelisted bots, visit the Help tab in the plugin settings (under “Whitelist Settings”).

\n

Privacy

\n

User Data: This plugin automatically blocks bad bots. When bad bots fall into the trap, their IP address, user agent, and other request data are stored in the WP database. No other user data is collected by this plugin. At any time, the administrator may delete all saved data via the plugin settings.

\n

Services: This plugin does not connect to any third-party locations or services.

\n

Cookies: This plugin does not set any cookies.

\n

Header Image Courtesy NASA/JPL-Caltech.

\n

Support development of this plugin

\n

I develop and maintain this free plugin with love for the WordPress community. To show support, you can make a donation or purchase one of my books:

\n\n

And/or purchase one of my premium WordPress plugins:

\n\n

Links, tweets and likes also appreciated. Thanks! 🙂

\n","download_link":"https://downloads.wordpress.org/plugin/blackhole-bad-bots.3.2.zip","tags":{"anti-spam":"anti-spam","bad-bots":"bad bots","blackhole":"blackhole","honeypot":"honeypot","security":"security"},"donate_link":"https://monzillamedia.com/donate.html","icons":{"1x":"https://ps.w.org/blackhole-bad-bots/assets/icon-128x128.png?rev=1471215","2x":"https://ps.w.org/blackhole-bad-bots/assets/icon-256x256.png?rev=1471215"},"wporg":true},{"name":"Page View Count","slug":"page-views-count","version":"2.4.12","author":"a3rev Software","author_profile":"https://profiles.wordpress.org/a3rev","requires":"5.0","tested":"5.8","requires_php":false,"rating":78,"ratings":{"1":8,"2":5,"3":2,"4":3,"5":30},"num_ratings":48,"support_threads":2,"support_threads_resolved":0,"active_installs":20000,"downloaded":403671,"last_updated":"2021-07-19 10:48am GMT","added":"2012-12-21","homepage":"","short_description":"Places an icon, all time views count and views today count at the bottom of posts, pages and custom post types on any WordPress website.","description":"

A beautifully simple to set up plugin that gives site visitors and site owners the ability to quickly and easily see how many people have visited that page or post.

\n

FEATURES

\n
    \n
  • On the front end it adds an icon and page views count to the bottom or top of pages and posts on your WordPress website.
  • \n
  • Switch ON | OFF hide Page Views Count for all Posts, Pages and all custom posts types including WooCommerce custom post types.
  • \n
  • Set the Position of the counter to show at the top of the page or post or at the bottom
  • \n
  • Set alignment of the counter Left, Right or Centre
  • \n
  • Set the colour and size of the counter icon
  • \n
  • Option to use load by Ajax to prevent the count from being cached by caching plugins
  • \n
  • Option to Manually set / edit total views and views today from Page View Count meta box on any post or page editor
  • \n
  • Add Page Views counter via the PVC Gutenberg block
  • \n
  • Add Page Views counter via shortcode
  • \n
  • Add Page Views counter via widget
  • \n
  • Developers can add the Page Views Counter via php tag
  • \n
  • All options and settings are point click – absolutely no coding required
  • \n
\n

COMPATIBILTY

\n

Compatible with WordPress 5.3+ and backwards to WP 4.9.0. Compatible with Classic Editor plugin with 5.0+ (Gutenberg Deactivated)

\n

GUTENBERG BLOCK

\n

Using the Gutenberg Editor. Use the Page View Count Block to add the counter to any page or post content. Block search for ‘Page Views’ or selecting the block from the a3rev Blocks menu.

\n

Adding the Page Views block to your content automatically deactivates the Global Page View counter on the post or page.

\n

ELEMENTOR TEMPLATES

\n

Fully compatible with Elementor templates. Add counter via Shortcode or widget to any template.

\n

DEVELOPERS

\n

On the plugins dashboard in the + Page Views Count Function options box you will find the Page Views Count functions and notes on how to use them.

\n
    \n
  • Use to manually add Page views count to any content or object in the theme.
  • \n
  • Use to add page View Count to any content that is not create using WordPress custom post / taxonomy type.
  • \n
  • Use to create a custom position of the Page Views Count
  • \n
  • Functions support echo and return parameters when getting visitor stats on any variable.
  • \n
\n

TROUBLESHOOTING

\n
    \n
  • The number 1 support request we get about the plugin is that it double or triple counts page or post loads. Yes it does and if you see that it is a Red Flag that you have a misconfiguration or bug in your theme or a plugin. Page Views Count does exactly that – counts each time the page or post is loading in the browser – if its counting twice it is because the browser is double loading the page. That is a bad thing and you or your developer needs to fix that.
  • \n
\n

CONTRIBUTE

\n

When you download Page Views Count, you join our community. Regardless of if you are a WordPress beginner or experienced developer if you’?re interested in contributing to Page Views Count development head over to the Page Views Count GitHub Repository to find out how you can contribute.
\nWant to add a new language to Page Views Count? Great! You can contribute via translate.wordpress.org

\n

Usage

\n
    \n
  1. \n

    Install and activate the plugin

    \n
  2. \n
  3. \n

    Go to WordPress Settings menu > Page View Count Menu

    \n
  4. \n
  5. \n

    Activate Page Views Count and use the options box settings to make the desired configuration

    \n
  6. \n
  7. \n

    Be sure to clear any caching and browser cache to see your Page Views Count

    \n
  8. \n
\n","download_link":"https://downloads.wordpress.org/plugin/page-views-count.2.4.12.zip","tags":{"gutenberg":"gutenberg","page-view-count":"page view count","post-view-count":"post view count","post-views":"post views","wordpress-page-view":"wordpress page view"},"donate_link":"","icons":{"1x":"https://ps.w.org/page-views-count/assets/icon.svg?rev=986301","2x":"https://ps.w.org/page-views-count/assets/icon-256x256.png?rev=986301","svg":"https://ps.w.org/page-views-count/assets/icon.svg?rev=986301"},"wporg":true},{"name":"Newspack Listings","slug":"newspack-listings","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":"","ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":"","support_threads":"","support_threads_resolved":"","active_installs":"","downloaded":"","last_updated":"","added":"","homepage":"https://github.com/Automattic/newspack-listings/releases","short_description":"

Create reusable content as listings and add them to lists wherever core blocks can be used

\n","description":"\n\n\n

Create reusable content as listings and add them to lists wherever core blocks can be used

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2021/02/listings2-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2021/02/listings2-372x209.jpg","svg":""},"wporg":false},{"name":"Newspack Newsletters","slug":"newspack-newsletters","version":"1.31.1","author":"Automattic","author_profile":"https://profiles.wordpress.org/automattic","requires":"5.3","tested":"5.8.0","requires_php":"5.6","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":1,"support_threads_resolved":1,"active_installs":500,"downloaded":2866,"last_updated":"2021-08-10 8:45pm GMT","added":"2021-02-15","homepage":"https://newspack.pub","short_description":"Create email newsletters with the Gutenberg editor and distribute them with your Mailchimp or Constant…","description":"

Create email newsletters with the Gutenberg editor and send them via Mailchimp or Constant Contact, all without leaving WP Admin! Newspack Newsletters lets you build eye-catching newsletters using the WordPress editing tools you’re already familiar with, and lets you save drafts, create reusable layouts, send to your existing mailing list, and also publish them to your website.

\n

Use and create newsletter layouts

\n

Newspack Newsletters comes with four default layouts to help you start building newsletters quickly. You can use an existing layout, or start fresh with a blank page. You can also create and save your own layouts, or alter the ones that come bundled with the plugin and save the settings, and use them for future campaigns.

\n

Use Gutenberg blocks and settings

\n

Newspack Newsletters supports most core Gutenberg blocks and configurations, letting you use blocks like Group, Button, Columns, and more, to create dynamic layouts. The plugin will warn you when a block will not display as expected in an email.

\n

Customize your newsletter’s appearance

\n

You can customize your newsletters further by changing the header and body fonts, or picking a background color.

\n

Newspack Blocks

\n

Newspack Newsletters comes bundled with the Newspack Post Inserter block. This block lets you insert excerpts from live posts on your site, and, once inserted, will turn those posts into static content using the Header and Paragraph blocks, linking back to your site.

\n

Need to target a post title to your newsletter audience? Not a problem! You can edit these blocks, and add others, to make sure they’ speak to your readers.

\n

Add ads!

\n

Monetize your newsletters by including advertising. The Newspack Newsletters plugin lets you create ads, which are stored as a custom post type. Ads are automatically inserted into your newsletters, and can also be toggled off on a newsletter-by-newsletter basis.

\n

Send with ease

\n

Newspack Newsletters connects to your Mailchimp or Constant Contact accounts to send emails using the mailing lists you’ve collected there, all without leaving the WordPress Admin.

\n

Before sending your campaign, you can send test emails to one or more email addresses at a time from the newsletter editor, to make sure everything is pixel perfect before sharing with the world.

\n

About Newspack

\n

The Newspack Newletters plugin is part of Newspack, a suite of tools to help small to mid-sized news organizations publish and generate revenue with WordPress. Newspack is a collaborative project by WordPress.com and the Google News Initiative. You can learn more about Newspack by visiting our website.

\n

Credits

\n

The beach photograph in the screenshot is by Life of Pix, licensed CC0.

\n","download_link":"https://downloads.wordpress.org/plugin/newspack-newsletters.zip","tags":{"constant-contact":"constant contact","mailchimp":"mailchimp","newsletters":"newsletters","newspack":"Newspack","wordpress-com":"WordPress.com"},"donate_link":"","icons":{"1x":"https://ps.w.org/newspack-newsletters/assets/icon.svg?rev=2475195","2x":"https://ps.w.org/newspack-newsletters/assets/icon-256x256.png?rev=2475195","svg":"https://ps.w.org/newspack-newsletters/assets/icon.svg?rev=2475195"},"wporg":true},{"name":"Web Stories","slug":"web-stories","version":"1.10.1","author":"Google","author_profile":"https://profiles.wordpress.org/google","requires":"5.5","tested":"5.8","requires_php":"7.0","rating":84,"ratings":{"1":5,"2":2,"3":2,"4":4,"5":31},"num_ratings":44,"support_threads":111,"support_threads_resolved":86,"active_installs":20000,"downloaded":322921,"last_updated":"2021-08-25 7:02pm GMT","added":"2020-09-22","homepage":"https://wp.stories.google/","short_description":"Web Stories are a visual storytelling format for the open web which immerses your readers…","description":"

Web Stories are a free, open-web, visual storytelling format for the web, enabling you to easily create visual narratives with engaging animations and tappable interactions, and immerse your readers in great and fast-loading full-screen experiences.

\n

Benefits of Web Stories

\n

The Web Stories format puts features and capabilities at your fingertips to engage with your audience via the power of storytelling on the open web. Specifically, you can:

\n
    \n
  • Create beautiful and engaging content easily: Web Stories make the production of stories as easy as possible from a technical perspective.
  • \n
  • Enjoy creative flexibility for editorial freedom and branding: The Web Stories format comes with preset but flexible layout templates, standardized UI controls, and components for sharing and adding follow-on content.
  • \n
  • Share and link your stories on the open web: Web Stories are part of the open web and can be shared and embedded across sites and apps without being confined to a single ecosystem.
  • \n
  • Track and measure your stories: Supports analytics and bookend capabilities for viral sharing and monetization.
  • \n
  • Capture the attention of your readers by offering fast loading times to your stories: Web Stories are lightning fast so that your audience stays engaged and entertained.
  • \n
  • Engage with your readers via immersive storytelling: Web Stories are a new and modern way to reach existing readers.
  • \n
  • Monetize effectively the beautiful and engaging stories you create: Web Stories enable monetization capability for publishers using affiliate links. For advertisers, Stories is a way to reach a unique audience within a new storytelling experience.
  • \n
\n

Web Stories Editor

\n

The Web Stories editor for WordPress brings together a robust set of story creation capabilities in a user-friendly, WYSIWYG creation tool. Some of the key features you can leverage out of the box are:

\n
    \n
  • A visually rich and intuitive dashboard, allowing you to easily navigate the story creation process
  • \n
  • Beautiful and expressive page templates to you get your story creation process started quickly and smoothly
  • \n
  • Easy drag-and-drop capabilities, making it easy to compose beautiful stories
  • \n
  • Convenient access to WordPress’ media library, enabling you to grab your media assets right from the plugin dashboard as you create your stories
  • \n
  • Customizable color and text style presets, making it easy to tailor the style of your stories to the needs of your content strategy
  • \n
  • And much more!
  • \n
\n

Using the Web Stories editor for WordPress, you can easily create visual narratives with tappable interactions, and share freely across the web, or embed them on your existing content strategies. The Stories you create are yours in every way, as Web Stories belong to the open web, instead of being confined to any specific closed ecosystem or platform.

\n

Audience: Everyone

\n

Web Stories are for everyone! If you are a site owner, content creator, or publisher on the web, embracing the Web Stories format would be great as a way to enhance the quality of your content strategy, the value you bring to your readers, and consequently your chances of achieving sustainable success.

\n

Terms of Service

\n

By using this plugin, you agree to Google’s Terms of Service. By using third-party imagery and video provided by Unsplash, Coverr and Tenor, you agree to adhere to the respective Terms of Service.

\n","download_link":"https://downloads.wordpress.org/plugin/web-stories.1.10.1.zip","tags":{"amp":"amp","google":"google","stories":"stories","storytelling":"storytelling","web-stories":"web stories"},"donate_link":"","icons":{"1x":"https://ps.w.org/web-stories/assets/icon.svg?rev=2386543","2x":"https://ps.w.org/web-stories/assets/icon-256x256.png?rev=2386543","svg":"https://ps.w.org/web-stories/assets/icon.svg?rev=2386543"},"wporg":true},{"name":"Jetpack – WP Security, Backup, Speed, & Growth","slug":"jetpack","version":"10.0","author":"Automattic","author_profile":"https://profiles.wordpress.org/automattic","requires":"5.7","tested":"5.8","requires_php":"5.6","rating":78,"ratings":{"1":320,"2":80,"3":81,"4":137,"5":1014},"num_ratings":1632,"support_threads":352,"support_threads_resolved":316,"active_installs":5000000,"downloaded":242891865,"last_updated":"2021-08-03 4:25pm GMT","added":"2011-01-20","homepage":"https://jetpack.com","short_description":"Improve your WP security with powerful one-click tools like backup and malware scan. Get essential…","description":"

The most popular WordPress plugin for just about everything.

\n

WordPress security, performance, marketing, and design tools — Jetpack is made by WordPress experts to make WP sites safer and faster, and help you grow your traffic.

\n

24/7 AUTO SITE SECURITY

\n

We guard your site so you can run your site or business. Jetpack Security provides easy-to-use, comprehensive WordPress site security including auto real-time backups and easy restores, malware scans, and spam protection. Essential features like brute force protection and downtime / uptime monitoring are free.

\n
    \n
  • Back up your site automatically in real time and restore to any point with one click. Unlimited storage for your backup. Great for eCommerce stores especially Woo.
  • \n
  • Manage migration to a new host, migrate theme files and plugins to a new database, easily duplicate websites, create full database backups, clone websites, repair broken websites by restoring older backups or easily set up a test site by creating a duplicate of your existing WP website.
  • \n
  • See every site change and who made it with the activity log, great for coordination, debug, maintenance, or troubleshooting.
  • \n
  • Automatically perform malware scans and security scans for other code threats. One click fix to restore your site for malware.
  • \n
  • Block spam comments and form responses with anti spam features powered by Akismet.
  • \n
  • Brute force attack protection to protect your WordPress login page from attacks.
  • \n
  • Monitor your site uptime / downtime and get an instant alert of any change by email.
  • \n
  • Secure WordPress.com powered login used by millions of sites with optional 2FA (two factor authentication) for extra protection.
  • \n
  • Auto update individual plugins for easy site maintenance and management.
  • \n
\n

PEAK SPEED AND PERFORMANCE

\n

Get blazing fast site speed with Jetpack, the premier WP plugin built to leverage the power of AMP, a tool that helps optimize your site on mobile devices. Jetpack’s free CDN (content delivery network) auto optimizes your images. Watch your page load times decrease — we’ll optimize your images and serve them from our own powerful global network, and speed up your site on mobile devices to reduce bandwidth usage and save money!

\n
    \n
  • Jetpack has partnered with Google AMP to create the best, highest performance all-in-one toolkit for WordPress. By using Jetpack and AMP together, you get all the features you need to build a beautiful, fast, modern website with no coding required.
  • \n
  • Image CDN for images and static files, like CSS and JavaScript, served from our servers, not yours, which saves you money and bandwidth.
  • \n
  • Lazy load images for a super fast experience, even on mobile. Jetpack’s lazy loading automatically delays the loading of media on your posts and pages until your visitors scroll down to where they appear on the page.
  • \n
  • Unlimited, high speed, ad free video hosting keeps the focus on your content, not on ads or recommendations that lead people off site.
  • \n
  • Custom site search is incredibly powerful and customizable. Helps your visitors instantly find the right content so they read and buy more. Works great with WooCommerce / eCommerce sites to help filter products so customers get what they want on your site faster.
  • \n
  • Recommended to use with WP Super Cache for ultimate WordPress site speed.
  • \n
\n

POWERFUL TOOLS FOR GROWTH

\n

Create and customize your WordPress site, optimize it for visitors and revenue, and enjoy watching your stats tick up. Build it, share it, and watch it grow.

\n
    \n
  • Advanced site stats and analytics to help you understand your audience.
  • \n
  • Auto publish blog posts and products to social media by simply using our tools to connect to Facebook, Twitter, and Linkedin.
  • \n
  • Easily share Instagram posts on your pages and blog posts.
  • \n
  • Collect a payment or donation, sell a product, service, or membership with simple integrations with PayPal and Stripe.
  • \n
  • Grow traffic with SEO tools for Google, Bing, Twitter, Facebook, and WordPress.com. XML sitemap created automatically.
  • \n
  • Advertise on your site to generate revenue. The ad network automatically does the work for you to find high-quality ads that are placed on your site.
  • \n
  • Manage Jetpack features from anywhere with the official WordPress mobile app, available for Apple iOS (iPhone or iPad) and Google Android.
  • \n
  • Looking for Customer Relationship Management? Check out the Jetpack CRM plugin which works alongside Jetpack to give you a simple and practical way to build relationships with your customers and leads.
  • \n
\n

EASY DESIGN TOOLS

\n

Quickly customize your site to make it stand out — no coding needed.

\n
    \n
  • Themes — Simple themes to get started or pick a professional theme to make your site stand out.
  • \n
  • Related posts — Keep visitors on your site by automatically showing them related content they will be interested in.
  • \n
  • Gallery and Slideshow tools — Image galleries, carousel slider, and slideshows for WP sites and stores.
  • \n
  • Subscriptions — Make it easy for visitors to sign up to receive notifications of your latest posts and comments.
  • \n
  • Contact form — Easily build unlimited contact forms for free without any coding. Receive email notifications for each response. Integrate with mail solutions like Creative Mail to reach your customers and leads quickly. Connect to Jetpack Anti spam (powered by Akismet) to filter submissions.
  • \n
  • oEmbed Support — easily embed images, posts, and links from Facebook and Instagram.
  • \n
\n

INTEGRATIONS

\n

Jetpack is updated monthly to ensure seamless integration with top WordPress plugins and other tech products.

\n
    \n
  • Built for WooCommerce: Jetpack and WooCommerce are both made by Automattic. Backup, Scan, Anti-spam, integrate perfectly for Woo / eComm stores
  • \n
  • Jetpack is fully compatible with v2.0 of the official AMP plugin for WordPress.
  • \n
  • Better understand your customers and marketing with Google Analytics (GA) integration
  • \n
  • Social media platforms: Instagram, Facebook, Twitter, LinkedIn
  • \n
  • Simple Blocks to customize your site: Pinterest, Whatsapp, Podcast player, GIFs, maps, tiled gallery, slideshow
  • \n
  • Payment processors: easily collect payments or donations and sell products through Stripe and PayPal
  • \n
  • Site speed and performance plugins: Works great with WP Super Cache by Automattic and Cloudflare.
  • \n
  • Contact form: Anti-spam (Powered by Akismet) blocks spam comments for Jetpack forms, Contact Form 7, Ninja Forms, Gravity Forms, Formidable Forms, and more.
  • \n
  • Other tech integrations: Instagram, Creative Mail, Mailchimp, Calendly, Whatsapp, Pinterest, Revue, and more.
  • \n
\n

EXPERT SUPPORT

\n

We have a global team of Happiness Engineers ready to provide incredible support. Ask your questions in the support forum or contact us directly.

\n

GET STARTED

\n

Installation is free, quick, and easy. Set up Jetpack in minutes. Take advantage of more robust features like WordPress site security and design and growth tools by upgrading to a paid plan.

\n","download_link":"https://downloads.wordpress.org/plugin/jetpack.10.0.zip","tags":{"backup":"backup","malware":"malware","scan":"scan","security":"security","woo":"woo"},"donate_link":"","icons":{"1x":"https://ps.w.org/jetpack/assets/icon.svg?rev=2394525","2x":"https://ps.w.org/jetpack/assets/icon-256x256.png?rev=2394525","svg":"https://ps.w.org/jetpack/assets/icon.svg?rev=2394525"},"wporg":true},{"name":"Easy Notification Bar","slug":"easy-notification-bar","version":"1.4.2","author":"WPExplorer","author_profile":"https://profiles.wordpress.org/wpexplorer","requires":"5.2.0","tested":"5.8","requires_php":"5.6.2","rating":82,"ratings":{"1":0,"2":1,"3":1,"4":1,"5":4},"num_ratings":7,"support_threads":3,"support_threads_resolved":1,"active_installs":4000,"downloaded":33875,"last_updated":"2021-08-22 1:48am GMT","added":"2019-06-20","homepage":"https://wordpress.org/plugins/easy-notification-bar/","short_description":"Easily add a custom top bar notification message to on your site with live customization options via the WordPress customizer.","description":"

Easily add a custom top bar notification message to on your site with live customization options via the WordPress customizer. The plugin allows you to enter your notification bar text as well as an optional button to display next to your text. Perfect for notifying visitors of a current sale, hot product, warnings or other important messages.

\n

The Easy Notification Bar plugin makes use of the newer “wp_body_open” action hook introduced in WordPress 5.2.0 which allows the plugin to work better with any theme that has been updated to support the tag. Contrary to other notice bar solutions which rely on absolute positioning, this plugin inserts the notice bar right after the body tag so it should display perfectly without any conflicts on any well-coded theme.

\n

By default, the notification bar is “static” which means it displays at the top of your site so when you scroll down the page it will become “hidden”. This is generally better for usability and SEO. However, in version 1.4 we added a new sticky option which you can enable in the Customizer so that the notification bar remains visible as you scroll down the page. The sticky functionality makes use of the CSS sticky property (not javascript).

\n

Although disabled by default, you can enable a close icon for your notice. When enabled, your visitors will see an “x” icon over the top bar which they can click to hide the message for their current and future sessions. This functionality makes use of localStorage (not cookies).

\n

Live Demo: You can view a live demo for the notification bar on our More Widgets Plugin Demo

\n

Features

\n
    \n
  • Sitewide (or homepage only) top notification bar.
  • \n
  • Easy setup via the WordPress customizer.
  • \n
  • Optional close icon.
  • \n
  • Optional sticky display.
  • \n
  • Custom background, color, text alignment and font size settings.
  • \n
  • Optional callout button.
  • \n
  • Responsive design so it looks good on mobile.
  • \n
  • Minimal code.
  • \n
  • Vanilla Javascript used for close icon (jQuery not needed).
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/easy-notification-bar.zip","tags":{"notice":"notice","notice-bar":"notice bar","notification":"notification","notification-bar":"notification bar","top-bar":"top bar"},"donate_link":"","icons":{"1x":"https://ps.w.org/easy-notification-bar/assets/icon-128x128.png?rev=2515988","2x":"https://ps.w.org/easy-notification-bar/assets/icon-256x256.png?rev=2515988"},"wporg":true},{"name":"Antispam Bee","slug":"antispam-bee","version":"2.10.0","author":"pluginkollektiv","author_profile":"https://profiles.wordpress.org/pluginkollektiv","requires":"4.5","tested":"5.8","requires_php":"5.2","rating":96,"ratings":{"1":7,"2":1,"3":1,"4":2,"5":175},"num_ratings":186,"support_threads":7,"support_threads_resolved":5,"active_installs":700000,"downloaded":5039474,"last_updated":"2021-07-29 11:15am GMT","added":"2009-01-10","homepage":"https://antispambee.pluginkollektiv.org/","short_description":"Antispam plugin with a sophisticated tool set for effective day to day comment and trackback…","description":"

Say Goodbye to comment spam on your WordPress blog or website. Antispam Bee blocks spam comments and trackbacks effectively, without captchas and without sending personal information to third party services. It is free of charge, ad-free and 100% GDPR compliant.

\n

Feature/Settings Overview

\n
    \n
  • Trust approved commenters.
  • \n
  • Trust commenters with a Gravatar.
  • \n
  • Consider the comment time.
  • \n
  • Allow comments only in a certain language.
  • \n
  • Block or allow commenters from certain countries.
  • \n
  • Treat BBCode links as spam.
  • \n
  • Validate the IP address of commenters.
  • \n
  • Use regular expressions.
  • \n
  • Search local spam database for commenters previously marked as spammers.
  • \n
  • Notify admins by e-mail about incoming spam.
  • \n
  • Delete existing spam after n days.
  • \n
  • Limit approval to comments/pings (will delete other comment types).
  • \n
  • Select spam indicators to send comments to deletion directly.
  • \n
  • Optionally exclude trackbacks and pingbacks from spam detection.
  • \n
  • Optionally spam-check comment forms on archive pages.
  • \n
  • Display spam statistics on the dashboard, including daily updates of spam detection rate and a total of blocked spam comments.
  • \n
\n

Support

\n\n

Contribute

\n
    \n
  • Active development of this plugin is handled on GitHub.
  • \n
  • Pull requests for documented bugs are highly appreciated.
  • \n
  • If you think you’ve found a bug (e.g. you’re experiencing unexpected behavior), please post at the support forums first.
  • \n
  • If you want to help us translate this plugin you can do so on WordPress Translate.
  • \n
\n

Credits

\n\n","download_link":"https://downloads.wordpress.org/plugin/antispam-bee.2.10.0.zip","tags":{"anti-spam":"anti-spam","antispam":"antispam","block-spam":"block spam","comment":"comment","comments":"comments"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=TD4AMD2D8EMZW","icons":{"1x":"https://ps.w.org/antispam-bee/assets/icon-128x128.png?rev=977629","2x":"https://ps.w.org/antispam-bee/assets/icon-256x256.png?rev=977629"},"wporg":true},{"name":"SimpleTOC – Table of Contents Block","slug":"simpletoc","version":"4.8","author":"Marc Tönsing","author_profile":"https://profiles.wordpress.org/marcdk","requires":"5.0","tested":"5.8","requires_php":false,"rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":24},"num_ratings":24,"support_threads":2,"support_threads_resolved":1,"active_installs":2000,"downloaded":20616,"last_updated":"2021-07-29 9:07pm GMT","added":"2020-04-14","homepage":"https://marc.tv/simpletoc-wordpress-inhaltsverzeichnis-plugin-gutenberg/","short_description":"Adds a custom Table of Contents Gutenberg block.","description":"

In Gutenberg, add a block and search for “SimpleTOC” or just “TOC”. You need to save your post before you add the block. It works by parsing the post content and retrieving the heading blocks and creates a new dynamic block with a list of links to the headings.

\n

Hide the headline “Table of Contents” and set a maximum display depth in the blocks’ sidebar configuration. Add the CSS class “simpletoc-hidden” to a heading block to remove that specific heading from the generated TOC.

\n

Features

\n
    \n
  • No javascript or css added.
  • \n
  • Designed for Gutenberg.
  • \n
  • Compatible with AMP plugins.
  • \n
  • Minimal and valid HTML output.
  • \n
  • Inherits the style of your theme.
  • \n
  • Support for column block layouts.
  • \n
  • Control the maximum depth of the headings.
  • \n
  • Choose between an ordered and unordered html list.
  • \n
  • SEO friendly: Disable the h2 heading of the TOC block and add your own.
  • \n
  • Comes with English, French, Spanish, German, and Brazilian Portuguese translations.
  • \n
  • Works with non-latin texts. Tested with Japanese and Arabic.
  • \n
  • Finds headlines in groups and reusable blocks. And in groups within reusable blocks.
  • \n
  • Rank Math support.
  • \n
\n

Credits

\n

This plugin is forked from https://github.com/pdewouters/gutentoc by pdewouters and uses code from https://github.com/shazahm1/Easy-Table-of-Contents by shazahm1

\n

Many thanks to Tom J Nowell https://tomjn.com and and Sally CJ who both helped me a lot with my questions over at wordpress.stackexchange.com

\n","download_link":"https://downloads.wordpress.org/plugin/simpletoc.4.8.zip","tags":{"amp":"amp","block":"block","gutenberg":"gutenberg","table-of-contents":"table of contents","toc":"toc"},"donate_link":"https://marc.tv/out/donate","icons":{"1x":"https://ps.w.org/simpletoc/assets/icon.svg?rev=2451408","2x":"https://ps.w.org/simpletoc/assets/icon-256x256.png?rev=2451408","svg":"https://ps.w.org/simpletoc/assets/icon.svg?rev=2451408"},"wporg":true},{"name":"Log in with Google","slug":"login-with-google","version":"1.2.1","author":"rtCamp","author_profile":"https://profiles.wordpress.org/rtcamp","requires":"5.4.2","tested":"5.7.2","requires_php":"7.3","rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":6},"num_ratings":6,"support_threads":5,"support_threads_resolved":2,"active_installs":300,"downloaded":2919,"last_updated":"2021-07-23 10:00pm GMT","added":"2020-10-01","homepage":"","short_description":"Minimal plugin that allows WordPress users to log in using Google.","description":"

Ultra minimal plugin to let your users login to WordPress applications using their Google accounts. No more remembering hefty passwords!

\n

Initial Setup

\n
    \n
  1. \n

    Create a project from Google Developers Console if none exists.

    \n
  2. \n
  3. \n

    Go to Credentials tab, then create credential for OAuth client.

    \n
      \n
    • Application type will be Web Application
    • \n
    • Add YOUR_DOMAIN/wp-login.php in Authorized redirect URIs
    • \n
    \n
  4. \n
  5. \n

    This will give you Client ID and Secret key.

    \n
  6. \n
  7. \n

    Input these values either in WP Admin > Settings > WP Google Login, or in wp-config.php using the following code snippet:

    \n

    `
    \ndefine( ‘WP_GOOGLE_LOGIN_CLIENT_ID’, ‘YOUR_GOOGLE_CLIENT_ID’ );
    \ndefine( ‘WP_GOOGLE_LOGIN_SECRET’, ‘YOUR_SECRET_KEY’ );
    \n“

    \n
  8. \n
\n

Browser support

\n

These browsers are supported. Note, for example, that One Tap Login is not supported in Safari.

\n

How to enable automatic user registration

\n

You can enable user registration either by
\n– Enabling Settings > WP Google Login > Enable Google Login Registration

\n

OR

\n
    \n
  • Adding
    \ndefine( 'WP_GOOGLE_LOGIN_USER_REGISTRATION', 'true' );
    \nin wp-config.php file.
  • \n
\n

Note: If the checkbox is ON then, it will register valid Google users even when WordPress default setting, under

\n

Settings > General Settings > Membership > Anyone can register checkbox

\n

is OFF.

\n

Restrict user registration to one or more domain(s)

\n

By default, when you enable user registration via constant WP_GOOGLE_LOGIN_USER_REGISTRATION or enable Settings > WP Google Login > Enable Google Login Registration, it will create a user for any Google login (including gmail.com users). If you are planning to use this plugin on a private, internal site, then you may like to restrict user registration to users under a single Google Suite organization. This configuration variable does that.

\n

Add your domain name, without any schema prefix and www, as the value of WP_GOOGLE_LOGIN_WHITELIST_DOMAINS constant or in the settings Settings > WP Google Login > Whitelisted Domains. You can whitelist multiple domains. Please separate domains with commas. See the below example to know how to do it via constants:

\n
`\n
\n

define( ‘WP_GOOGLE_LOGIN_WHITELIST_DOMAINS’, ‘example.com,sample.com’ );
\n `

\n

Note: If a user already exists, they will be allowed to login with Google regardless of whether their domain is whitelisted or not. Whitelisting will only prevent users from registering with email addresses from non-whitelisted domains.

\n

Hooks

\n

Filter wp_google_login_scopes
\nThis filter can be used to filter existing scope used in Google Sign in.
\nYou can ask for additional permission while user logs in.
\nThis filter will provide 1 parameter scopes in callback, which contains array of scopes.

\n

wp-config.php parameters list

\n
    \n
  • \n

    WP_GOOGLE_LOGIN_CLIENT_ID (string): Google client ID of your application.

    \n
  • \n
  • \n

    WP_GOOGLE_LOGIN_SECRET (string): Secret key of your application

    \n
  • \n
  • \n

    WP_GOOGLE_LOGIN_USER_REGISTRATION (boolean) (optional): Set true If you want to enable new user registration. By default, user registration defers to Settings > General Settings > Membership if constant is not set.

    \n
  • \n
  • \n

    WP_GOOGLE_LOGIN_WHITELIST_DOMAINS (string) (optional): Domain names, if you want to restrict login with your custom domain. By default, it will allow all domains. You can whitelist multiple domains.

    \n
  • \n
\n

BTW, We’re Hiring!

\n

\n","download_link":"https://downloads.wordpress.org/plugin/login-with-google.1.2.1.zip","tags":{"authentication":"authentication","google-login":"Google Login","oauth":"oauth","sign-in":"sign in","sso":"sso"},"donate_link":"https://rtcamp.com/","icons":{"1x":"https://ps.w.org/login-with-google/assets/icon-128x128.png?rev=2402713","2x":"https://ps.w.org/login-with-google/assets/icon-256x256.png?rev=2402713"},"wporg":true},{"name":"Search with Google","slug":"search-with-google","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":"","ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":"","support_threads":"","support_threads_resolved":"","active_installs":"","downloaded":"","last_updated":"","added":"","homepage":"https://wordpress.org/plugins/search-with-google/","short_description":"

This plugin replaces the WordPress default search query with server-side results from Custom Search Site Restricted JSON API. 

\n","description":"\n\n\n

This plugin replaces the WordPress default search query with server-side results from Custom Search Site Restricted JSON API

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2020/11/searchWithGoogle-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2020/11/searchWithGoogle-372x209.jpg","svg":""},"wporg":false},{"name":"Page Builder Gutenberg Blocks – CoBlocks","slug":"coblocks","version":"2.16.0","author":"GoDaddy","author_profile":"https://profiles.wordpress.org/godaddy","requires":"5.0","tested":"5.8","requires_php":"5.6","rating":88,"ratings":{"1":7,"2":3,"3":4,"4":5,"5":63},"num_ratings":82,"support_threads":16,"support_threads_resolved":3,"active_installs":500000,"downloaded":5419120,"last_updated":"2021-08-12 8:29pm GMT","added":"2018-04-19","homepage":"","short_description":"CoBlocks is a suite of page builder WordPress blocks for Gutenberg, with 10+ new blocks and a true page builder experience with rows and columns.","description":"

CoBlocks is the most innovative collection of page building WordPress blocks for the new Gutenberg WordPress block editor.

\n

With additional blocks and true row and column building, CoBlocks gives you a true page builder experience for Gutenberg.

\n

CoBlocks is powerful but lightweight: it adds functionality to the WordPress editor without bloat. This is the plugin you’ve been waiting for, and it will make you rethink what WordPress is capable of.

\n

Make Beautiful Web Pages With Gutenberg & CoBlocks

\n

CoBlocks is the last page builder you’ll ever need: you get a winning mix of additional WordPress blocks, and page builder functionality. With CoBlocks you have everything you need to make beautiful web pages with the new block editor:

\n
    \n
  • Accordion Block
  • \n
  • Alert Block
  • \n
  • Author Profile Block
  • \n
  • Buttons Block
  • \n
  • Carousel Gallery Block
  • \n
  • Click to Tweet Block
  • \n
  • Collage Gallery Block
  • \n
  • Dynamic Separator Block
  • \n
  • Events Block (New!)
  • \n
  • Features Block
  • \n
  • Food & Drinks Block
  • \n
  • Form Block
  • \n
  • Gif Block
  • \n
  • GitHub Gist Block
  • \n
  • Hero Block
  • \n
  • Highlight Block
  • \n
  • Icon Block
  • \n
  • Logos & Badges Block
  • \n
  • Map Block
  • \n
  • Masonry Gallery Block
  • \n
  • Media Card Block
  • \n
  • Offset Gallery Block
  • \n
  • Post Carousel Block
  • \n
  • Posts Block
  • \n
  • Pricing Table Block
  • \n
  • Resizable Row/Columns Blocks
  • \n
  • Services Block
  • \n
  • Shape Divider Block
  • \n
  • Social Profiles Block
  • \n
  • Social Sharing Block
  • \n
  • Stacked Gallery Block
  • \n
\n

Breakthrough Page Builder System

\n

CoBlocks features an innovative block system that allows you to create stunning web pages, and even entire websites, with the new WordPress editor.

\n

You get the extra blocks you need and the layout and design functionality for a true page builder experience.

\n

Use the exceptional Row and Columns blocks to add dynamically generated content areas with specific responsive margin and padding settings that only CoBlocks provides.

\n

Style these with innovative new blocks such as the Shape Divider, which lets you split up your content with beautiful dividers.

\n

Each of the WordPress blocks within CoBlocks have been precisely fined tuned to offer a familiar, yet powerful, customization experience. Tailor each block to your taste using our custom controls and settings. Change fonts, set margin and padding, pick colors and more.

\n

Custom Typography Controls

\n

The breakthrough Typography Control Panel within CoBlocks lets you design web pages with alluring typographic elements. Set fonts, sizes, weights, transformations and more, in our CoBlocks blocks, and in core WordPress blocks.

\n

Free Companion Theme

\n

CoBlocks is built to show off the best of Gutenberg, but it requires a Gutenberg-first theme to unlock its full potential. We also created the free Go theme in the WordPress theme repository as the perfect companion for CoBlocks.

\n

Going Beyond Gutenberg Blocks

\n

The vision for CoBlocks is to create a suite of Gutenberg blocks to help folks make beautiful websites easily. These newest releases of CoBlocks is the ultimate expression of that vision.

\n

Built With Developers in Mind

\n

Extensible, adaptable, and open source — CoBlocks is created with theme and plugin developers in mind. If you’re interested to jump in the project, there are opportunities for developers at all levels to get involved. Contribute to CoBlocks on GitHub and join the party. 🎉

\n","download_link":"https://downloads.wordpress.org/plugin/coblocks.2.16.0.zip","tags":{"blocks":"blocks","gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","page-builder":"page builder","wordpress-blocks":"wordpress blocks"},"donate_link":"","icons":{"1x":"https://ps.w.org/coblocks/assets/icon-128x128.jpg?rev=2243972","2x":"https://ps.w.org/coblocks/assets/icon-256x256.jpg?rev=2243972"},"wporg":true},{"name":"Simple Author Box","slug":"simple-author-box","version":"2.42","author":"WebFactory Ltd","author_profile":"https://profiles.wordpress.org/webfactory","requires":"4.6","tested":"5.8","requires_php":"5.6","rating":88,"ratings":{"1":9,"2":0,"3":5,"4":8,"5":75},"num_ratings":97,"support_threads":12,"support_threads_resolved":12,"active_installs":50000,"downloaded":896513,"last_updated":"2021-08-13 8:08am GMT","added":"2014-08-08","homepage":"https://wpauthorbox.com/","short_description":"Add a responsive author box with social icons to any post. Great author box for…","description":"

Simple Author Box adds a responsive author box at the end of your posts, showing the author name, author gravatar and author description – author bio. It also adds over 30 social profile fields on WordPress user profile screen, allowing to display the author social icons in the author box.

\n

Main Features

\n
    \n
  • Shows author gravatar, name, website, description (author bio) and social icons
  • \n
  • Fully customizable to match your theme design (style, color, size and text options)
  • \n
  • Nice looking on desktop, laptop, tablet or mobile phones
  • \n
  • Automatically insert the author box at the end of your post
  • \n
  • Option to manually insert the author box on your template file (single.php or author.php)
  • \n
  • Simple Author Box has RTL support
  • \n
  • Simple Author Box has AMP support
  • \n
  • Great for guest posts, and guest authors
  • \n
\n

Simple Author Box Pro Features

\n
\n

Premium features only available in Simple Author Box Pro

\n
    \n
  • Change author box position to before/after content
  • \n
  • Choose whether the author’s name should link to its website/page/none
  • \n
  • Select where to show author box on
  • \n
  • Add rotate effect on author avatar hover
  • \n
  • Option to open author website link in a new tab
  • \n
  • Option to add “nofollow” attribute on author website link
  • \n
  • Choose the author website’s position: right/left
  • \n
  • Social icons type, style, rotate effect, shadow effect, thin border
  • \n
  • Option to change the color palette
  • \n
  • Choose the font and font sizes for the author’s job title, website, name, and description
  • \n
  • Enable guest authors and co-authors
  • \n
  • Option to use guest authors as co-authors
  • \n
  • Top authors widget – displays the most popular authors based of comments
  • \n
  • Simple author box widget – displays the users selected
  • \n
\n
\n

Read more about the Simple Author Box advanced features.

\n","download_link":"https://downloads.wordpress.org/plugin/simple-author-box.2.42.zip","tags":{"author-bio":"author bio","author-box":"author box","author-profile-fields":"author profile fields","author-social-icons":"author social icons","responsive-author-box":"responsive author box"},"donate_link":"","icons":{"1x":"https://ps.w.org/simple-author-box/assets/icon-128x128.jpg?rev=1821054"},"wporg":true},{"name":"Genesis Blocks","slug":"genesis-blocks","version":"1.2.5","author":"StudioPress","author_profile":"https://profiles.wordpress.org/studiopress","requires":"5.3","tested":"5.8","requires_php":"7.1","rating":90,"ratings":{"1":1,"2":0,"3":1,"4":0,"5":9},"num_ratings":11,"support_threads":12,"support_threads_resolved":4,"active_installs":30000,"downloaded":194950,"last_updated":"2021-07-20 6:30pm GMT","added":"2020-08-25","homepage":"https://studiopress.com/genesis-pro/","short_description":"A collection of content blocks, sections, & full-page layouts for the block editor.","description":"

Genesis Blocks is a collection of page building blocks for the Gutenberg block editor. Building pages with the block editor and Genesis Blocks gives you more control to quickly create and launch any kind of site you want!

\n

Installing the customizable Genesis Blocks plugin adds a collection of beautiful, site-building blocks to help you customize page layouts, increase engagement, and get results for your business. Genesis Blocks provides everything from customizable buttons, to beautifully-designed page sections and full-page layout designs via the Section & Layout block.

\n

Along with the blocks themselves, Genesis Blocks extends the content creation experience by providing a library of page sections and full-page layouts, all available from within the block editor.

\n

Create compelling content faster.

\n

Create and use content quickly with prebuilt and custom content sections and full-page layouts.

\n

Enhance the Gutenberg editor.

\n

Additional content blocks and the layout selector make it easy to get the most value out of the block-based editor.

\n

Genesis Blocks currently includes the following blocks to help you build content and pages quickly and effortlessly:

\n
    \n
  • Section & Layout Block
  • \n
  • Advanced Columns Block
  • \n
  • Newsletter Block
  • \n
  • Pricing Block
  • \n
  • Post Grid Block
  • \n
  • Container Block
  • \n
  • Testimonial Block
  • \n
  • Inline Notice Block
  • \n
  • Accordion Block
  • \n
  • Share Icons Block
  • \n
  • Call-To-Action Block
  • \n
  • Customizable Button Block
  • \n
  • Spacer & Divider Block
  • \n
  • Author Profile Block
  • \n
  • Drop Cap Block
  • \n
\n

Do more with Genesis Pro

\n

For those wanting to level-up with Genesis Blocks, a Genesis Pro subscription brings even richer tooling and a bigger library of sections and layouts.

\n
    \n
  • 2 new blocks (more coming soon)
  • \n
  • 26 pre-built full-page layouts
  • \n
  • 56 pre-built sections
  • \n
  • Save & reuse your own sections & layouts
  • \n
  • Advanced block-level user permissions
  • \n
  • Access to and support for Genesis Framework & all of our 35 StudioPress-made premium child themes.
  • \n
  • Additional advanced features for the rest of the Genesis Product Suite
  • \n
\n

Genesis Pro includes even more value for modern WordPress content creators, marketers, and developers. Learn more about Genesis Pro here.

\n

Google AMP Support

\n

The Accelerated Mobile Pages (AMP) project is a publishing format created by Google to enhance site performance for mobile website users. AMP pages are specially designed for Google search users to quickly load website pages without using any extraneous data. Genesis Blocks has support for AMP built into each block!

\n

Help & Docs

\n

User and developer docs for Genesis Blocks can be found here.

\n","download_link":"https://downloads.wordpress.org/plugin/genesis-blocks.1.2.5.zip","tags":{"blocks":"blocks","editor":"editor","gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","page-builder":"page builder"},"donate_link":"https://studiopress.com","icons":{"1x":"https://ps.w.org/genesis-blocks/assets/icon-128x128.png?rev=2368839","2x":"https://ps.w.org/genesis-blocks/assets/icon-256x256.png?rev=2368840"},"wporg":true},{"name":"MathML Block","slug":"mathml-block","version":"1.2.0","author":"adamsilverstein","author_profile":"https://profiles.wordpress.org/adamsilverstein","requires":"5.0","tested":"5.5.5","requires_php":"5.6","rating":90,"ratings":{"1":0,"2":0,"3":0,"4":1,"5":1},"num_ratings":2,"support_threads":1,"support_threads_resolved":0,"active_installs":500,"downloaded":7384,"last_updated":"2020-10-01 11:05pm GMT","added":"2018-12-28","homepage":"","short_description":"A MathML block for the WordPress block editor (Gutenberg).","description":"

A MathML block for the WordPress block editor (Gutenberg).
\nRequires PHP 5.4+ and WordPress 5.0+.

\n

Development takes place on the GitHub repository: https://github.com/adamsilverstein/mathml-block.

\n

Screencast: https://cl.ly/c0f6bbfbc3b1

\n

What is MathML?

\n

Mathematical Markup Language is a mathematical markup language, an application of XML for describing mathematical notations and capturing both its structure and content. It aims at integrating mathematical formulae into World Wide Web pages and other documents.

\n

The MathML block uses MathJax to render MathML formulas in the editor and on the front end of a website. MathJax (https://www.mathjax.org/) is A JavaScript display engine for mathematics that works in all browsers.

\n

To test a MathML block and enter a formula, for example: \\[x = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}\\].

\n

To test using math formulas inline, type an formula into a block of text, select it and hit the ‘M’ icon in the control bar. For example: \\( \\cos(θ+φ)=\\cos(θ)\\cos(φ)−\\sin(θ)\\sin(φ) \\). Note: if you are copying and pasting formulas into the rich text editor, switching to HTML/code editor mode is less likely to reformat your pasted formula.

\n

This plugin is compatible with the official AMP plugin by rendering amp-mathml on AMP pages.

\n

Technical Notes

\n
    \n
  • Requires PHP 5.6+.
  • \n
  • Requires WordPress 5.0+.
  • \n
  • Issues and Pull requests welcome on the GitHub repository: https://github.com/adamsilverstein/mathml-block.
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/mathml-block.zip","tags":{"block":"block","block-editor":"block-editor","gutenberg":"gutenberg","math":"math","mathml":"mathml"},"donate_link":"","icons":{"1x":"https://ps.w.org/mathml-block/assets/icon-128x128.png?rev=2002452","2x":"https://ps.w.org/mathml-block/assets/icon-256x256.png?rev=2002452"},"wporg":true},{"name":"Calculated Fields Form","slug":"calculated-fields-form","version":"1.1.14","author":"CodePeople","author_profile":"https://profiles.wordpress.org/codepeople","requires":"3.0.5","tested":"5.8","requires_php":false,"rating":96,"ratings":{"1":20,"2":2,"3":4,"4":26,"5":675},"num_ratings":727,"support_threads":100,"support_threads_resolved":99,"active_installs":60000,"downloaded":3469605,"last_updated":"2021-08-31 10:52pm GMT","added":"2013-03-12","homepage":"https://cff.dwbooster.com","short_description":"Calculated Fields Form allows you to create both simple and rich forms, quickly like a…","description":"

The “Calculated Fields Form” plugin allows you to create web forms with calculated fields, whose values are dynamically calculated based on other fields’ values in the web form.

\n

The possibilities are unlimited. For example, you can create forms with financial calculations, date operations to create reservation forms, and calculate the product prices. The plugin includes text operations for editing, translation, or advertising services. There are more advanced operations available such as determining the distance between addresses or generating graphs. The resulting forms are 100% mobile responsive.

\n

The most impressive thing is that you don’t need to hire a programmer to create the forms. With basic knowledge, you will have a professional form in just five minutes.

\n

Creating a form is all visual. The “Calculated Fields Form” plugin includes a form editor with multiple controls. Such as text fields, numeric fields, currency fields, slider controls, email fields, radio buttons, checkboxes, container fields, page breaks to create multipage forms, and most importantly, calculated fields.

\n

The form editor includes a list of controls, a property bar to easily edit field properties, a dashboard where you can design your forms, and the attributes for form configuration. Also, the plugin comes with multiple predefined layouts to change the forms’ appearance. If there are not enough predefined layouts for your project, there is a style editor to customize the form’s design.

\n

The “Calculated Fields Form” plugin includes integration with popular page builders:

\n
    \n
  • Classic WordPress Editor
  • \n
  • Gutenberg Editor
  • \n
  • Elementor
  • \n
  • Page Builder by SiteOrigin
  • \n
  • Beaver Builder
  • \n
  • WPBakery Page Builder
  • \n
  • DIVI Builder
  • \n
\n

For other editors, it is possible to insert the form into the pages via its shortcode. Each web form has an associated shortcode that allows you to insert it wherever you want.

\n

Features

\n

Main features:

\n
    \n
  • Visual form builder with an intuitive and interactive interface.
  • \n
  • Includes general-purpose controls such as radio buttons, checkboxes, menu lists, date fields, slider controls, numeric fields, text currency fields, etc.
  • \n
  • Includes calculated fields whose values result from operations involving other form fields.
    \nInsert as many calculated fields in the form as you need.
  • \n
  • Contains an advanced formula editor associated with the calculated fields with syntax highlighting and error detection.
  • \n
  • Features many operations modules: mathematical operations, operations with dates, financial operations, distance operations, text management, operations for calling remote services, etc. The calculated fields can identify numbers and prices within the values of the fields.
  • \n
  • Distributed with several predefined forms that you can use as a starting point for your projects.
  • \n
  • Includes several design templates.
  • \n
  • Supports multi-pages forms by inserting page break controls between fields belonging to different pages.
  • \n
  • Allows the grouping of fields inside container controls (Div and Fieldset).
  • \n
  • Possible to define dependency rules between fields in the form, which is very useful in the design of wizards.
  • \n
\n

Other features:

\n
    \n
  • From the plugin configuration page, it is possible to duplicate a form by pressing the “Clone” button associated with it. By cloning a form, you can reuse the work already done.
  • \n
  • Includes a troubleshooting and optimization area.
  • \n
  • Allows you to disable forms in the indexing process to improve the speed of the website.
  • \n
  • Includes a version control in the forms to recover previous versions.
  • \n
\n

Predefined forms:

\n

“Calculated Fields Form” is distributed with five predefined sample forms.

\n
    \n
  1. Simple Calculator Operations
  2. \n
  3. Calculation with Dates (bookings with check-in and check-out dates)
  4. \n
  5. Ideal Weight Calculator
  6. \n
  7. Pregnancy Calculator
  8. \n
  9. Lease Calculator
  10. \n
\n

You can clone a sample form to implement your project, or create a new form from scratch.

\n
\n

Calculated Fields Form Commercial
\n The free version of the “Calculated Fields Form” plugin includes only basic functionality. Other distributions (Professional, Developer, and Platinum) are available with advanced functionalities, such as sending notification emails, integration with payment gateways and external services, controls for database’s connection (and connection to other data sources), complex operations, and many other features.

\n
\n

Features of the Profesional version:

\n
    \n
  • Includes all the features of the free version of the plugin.
  • \n
  • Submit the data collected by the forms and store it on the website for review.
  • \n
  • Send notification emails with the data collected by the form, as well as confirmation emails to the users.
  • \n
  • Integrate the form with PayPal and calculate the amount to be charged through a calculated field.
    \nPayments allow SCA (strong customer authentication), compatible with the new payment services (PSD 2) – Directive (EU).
  • \n
  • Export and import forms between different WordPress sites.
  • \n
  • Different mechanisms to protect forms, such as captcha, WordPress nonces, and honeypot fields.
  • \n
  • Associate “Thank You” page with the form, where you can show a summary of the form’s submission.
  • \n
  • Dashboard widget to show the last week’s submissions.
  • \n
  • Cache the forms to increase the rendering speed.
  • \n
  • Export the information submitted by the forms to a CSV file and use it with third-party tools such as Excel, OpenOffice, LibreOffice, or any other spreadsheet editor.
  • \n
\n

Features of the Developer version:

\n\n

Includes add-ons to extend the form features and make use of third-party plugins and external services

\n
    \n
  • Server-Side Equations add-on: define server-side equations.
  • \n
  • Verification Code add-on: verifies the user’s email by sending him a verification code and blocking the form’s submission until the verification code is entered.
  • \n
  • WooCommerce add-on: integrate forms with WooCommerce products and calculate their prices, dimensions, and weight at the runtime.
  • \n
  • SalesForce add-on: integrate the form with the SalesForce service.
  • \n
  • WebHooks add-on: send the information collected by the form to a WebHook URL to open countless possibilities. By connecting your form to services such as Zapier, Microsoft Flow, IFTTT, Workato, and others, you can connect to hundreds of third-party services (e.g. Zoho CRM, Dropbox, Mailchimp, Google Drive, Facebook, Twitter, etc.).
  • \n
  • User Permissions add-on: control the forms’ access, as well as allowing users to access and edit their data.
  • \n
  • User Registration Form add-on: build a user registration form that captures the user’s basic information and metadata.
  • \n
  • reCAPTCHA add-on: replace the basic captcha with Google reCAPTCHA to protect the forms.
  • \n
\n

Features of the Platinum version:

\n
    \n
  • Includes all the features of free, Professional, and Developer versions of the plugin.
  • \n
  • Unique Fields Values add-on: verifies that the values entered by users have not been used in previous submissions.
  • \n
  • Easy Digital Downloads add-on: integrate the forms into Easy Digital Downloads products and calculate their prices at the runtime.
  • \n
  • Google Analytics add-on: generate usage reports in “Google Analytics” for the users’ actions.
  • \n
  • PayPal Pro add-on: enable the payer’s credit card details to be entered directly through the website without any redirection to the PayPal website.
  • \n
  • Upload Files add-on: add uploaded files to the media library and extend the file types accepted by WordPress.
  • \n
  • DropBox Integration add-on: copy or move the uploaded files to a DropBox account.
  • \n
  • ip2location add-on: identify the users’ data using the ip2location databases.
  • \n
  • Google Places add-on: transform form fields into autocomplete address fields.
  • \n
  • Autocomplete Places add-on: transform form fields into autocomplete address fields by using the Photon API.
  • \n
  • Signature add-on: convert form fields into “Signature” fields, allowing the users to sign the form with a mouse or touchscreen.
  • \n
  • iCal add-on: send iCal file in the notification emails to import the events into most popular calendars like Outlook and Google Calendar.
  • \n
  • CSV Generator add-on: export the information collected by the form to CSV files and attach these to the notification emails.
  • \n
  • PDF Generator add-on: generate PDF files with the information collected by the forms and attach them to the notification emails.
  • \n
  • WebMerge add-on: integrate the forms with FormStack documents (formerly WebMerge) to generate PDF and Office documents at runtime with the information collected by the web forms.
  • \n
  • PrintFriendly add-on: generate PDF files with the PrintFriendly API and attach the resulting files to the notification emails.
  • \n
  • Mailchimp add-on: add new members to the MailChimp account.
  • \n
  • Mautic add-on: add new contacts (or update existing ones) into the Mautic Service.
  • \n
  • HubSpot add-on: add/update contacts in HubSpot, using the information collected by the form.
  • \n
  • Emma add-on: add new members to the Emma service.
  • \n
  • Twilio add-on: send notification messages (SMS) in the forms’ submissions.
  • \n
  • MailPoet add-on: add new subscribers to MailPoet’s Mailing Lists (MailPoet versions 2 and 3).
  • \n
  • AffiliateWP add-on: integrate the forms with the AffiliateWP plugin.
  • \n
  • Authorize.Net add-on: accept payments via Authorize.Net from the form.
  • \n
  • Stripe add-on: accept payments via the Stripe payment gateway from the form.
  • \n
  • Skrill Payments Integration add-on: integrate with the Skrill Moneybookers payment gateway.
  • \n
  • TargetPay (iDeal) add-on add-on: integrate with iDeal, the popular Dutch payment method.
  • \n
  • Mollie (iDeal) add-on: accept payments via iDeal.
  • \n
  • RedSys / Servired / Sermepa add-on provides: a secure interface for accepting credit card payments from most banks in Spain.
  • \n
  • PayTM add-on: a secure interface for accepting payments with credit cards, debit cards, net banking, wallets, and EMI.
  • \n
  • SagePay add-on: a secure interface for accepting payments via SagePay.
  • \n
  • Sage Payment add-on: a secure interface for accepting payments through a secure SSL checkout system for both bankcard and virtual check transactions.
  • \n
\n

Please keep the plugin updated. Updates contain bug fixes as well as new features. The WordPress directory distributes the updates for the free version of the plugin. But for commercial versions, it would be necessary to register your copy of the plugin. The following link describes the registration process: CLICK HEREThis section mainly contains notes on features of the form builder that are too detailed to include in the main description.

\n

Conditional rules

\n

It is possible to show or hide form fields (dependent fields) based on the options selected in checkbox fields, radio buttons, the options selected in dropdown menus, or the result of calculated fields.

\n

The value of a dependent field is zero when it is hidden/disabled. The plugin excludes the disabled form fields from the submission.

\n

Additional details about the use of dependencies

\n

Predefined values

\n

The predefined values in the fields have two possible uses:

\n

1- To fill the field by default. This makes it easier for the end-user to enter values.

\n

2- Hint of the values to be entered in the field (like “Enter your name”). To use the predefined value as a placeholder, you must tick the “Hide predefined value on click” checkbox. The value will disappear once the user starts filling in the field. The calculated fields’ equations ignore placeholders.

\n

The “User Instructions” attribute

\n

The “User instructions” attribute in the field settings allows you to instruct the user on how to fill in the field. By default, the instructions appear as smaller text on the public website. But they can be configured as tooltips.

\n

Adding CSS layout keywords

\n

The “Add CSS layout keywords” attribute in the fields settings allows you to apply CSS styles to fields. You must only enter the name of the CSS class names, and not their definitions.

\n

You can define the CSS classes via the “Customize Form Design” attribute in the “Form Settings” tab. This attribute contains a CSS editor with syntax highlighting and error checking.

\n

If you want to assign several class names to the field, separate them by space characters.

\n

The plugin includes multiple predefined classes that you can assign to the form fields.

\n

More information about the form’s design can be found by reading the following post in the plugin’s blog:

\n

Customizing the form’s design

\n

The classes listed below allow you to align two, three, or four fields on the same line:

\n
column2\ncolumn3\ncolumn4\n
\n

For example, if you want to put two fields on the same line, give both fields the class name “column2”.

\n

There are other variants for displaying several fields on the same line, such as container fields (Div or Fieldset). Container fields allow you to select the number of columns in your configuration. The following post describes all the alternatives for positioning the fields in the form:

\n

Formatting the form (distributing the fields in columns)

\n

Multi-page form

\n

To create multi-page forms, you must insert “Page break” controls between fields belonging to different pages.

\n

When the user presses the “Next Page” button, the plugin validates the fields in the current form. If there is any validation error (such as an unfilled required field), the plugin stops the “Next page” action.

\n

Hidden calculated fields

\n

Calculated fields include a checkbox in the configuration that allows them to be hidden from the public website. This feature is essential in those fields that are used to calculate intermediate values or when we want to show the results only in emails or thank you pages.

\n

Equation / Formula format for calculated fields

\n

Below, some possible formulas are included as examples, but the possibilities are endless.

\n
    \n
  • \n

    With simple mathematical operations:

    \n
    fieldname1 + fieldname2\n\nfieldname1 * fieldname2\n\nfieldname1 / fieldname2\n\nfieldname1 - fieldname2\n\nfieldname1 - fieldname2\n
    \n
  • \n
  • \n

    With mathematical operations involving multiple fields and grouped fields:

    \n
    fieldname1 * (fieldname2 + fieldname3)\n
    \n
  • \n
  • \n

    With rounding operations. Round the result to two decimal places:

    \n
    PREC(fieldname2 / fieldname3, 2)\n
    \n
  • \n
  • \n

    There are infinite number of formulas that can be created using complex structures. For example, the following formula includes conditional statements:

    \n
    (function () {\nif (100 < fieldname3) return fieldname1 + fieldname2;\nif (fieldname3 <= 100) return fieldname1 * fieldname2;\n})();\n
    \n
  • \n
  • \n

    For complex formulas/equations you must use the function format with return statement to return the result to the calculated field:

    \n
     (function () {\n    var result = 0;\n    /* Your code here */\n    return result;\n}) ();\n
    \n
  • \n
\n

Operations and operators to use in equations/formulas

\n

One of the “Calculated Fields Form” strengths is the ability to use any valid JavaScript code to implement the equations/formulas.

\n

However, the plugin includes a wide variety of operations and operators to simplify the development process.

\n

Mathematical Operations and Operators

\n

Conditional Operations

\n

Field Handling Operations

\n

Operations for interacting with external services

\n

Operations for handling URLs and query strings

\n

In addition to the operation modules listed above, the Developer and Platinum versions of the plugin include additional modules:

\n

Date Time Operations

\n

Financial Operations

\n

Distance and Travel Time Operations

\n

Operations to generate charts

\n

Controls available in the form generator of the “Calculated Fields Form”

\n

The complete list of controls is available from this link: CLICK HERE

\n

Create JavaScript variables from parameters received by “GET” or “POST”, “SESSION” variables, or “COOKIES” to use in the equations

\n

The plugin includes the shortcode [CP_CALCULATED_FIELDS_VAR] to generate JavaScript variables from parameters received by “GET” or “POST”, “SESSION” variables, or “COOKIES”:

\n
[CP_CALCULATED_FIELDS_VAR name=\"...\"]\n
\n

In the shortcode, you must replace the “…” symbols with the name of the parameter or variable. It will be the same name for the JavaScript variable.

\n

For example:

\n
[CP_CALCULATED_FIELDS_VAR name=\"varname\"]\n
\n

You can use the variables generated through the shortcode [CP_CALCULATED_FIELDS_VAR] in the formulas of the calculated fields: fieldname1*varname

\n

The complete list of parameters accepted by the variables shortcode is available at the following link: CLICK HERE

\n

Tips for calculating prices

\n

One of the most frequent uses of our plugin is for price calculation. When displaying the price of a product, you may want to split the form into two pages. The first page would request the information needed to calculate the price, and the second page would include the calculated field with the final price. Also, you could use the “Instruct. Text” fields to indicate the terms, conditions, and validity period of the offer.

\n

Note that you can make the “Instruct. Text” fields dependent on the calculated value. This allows you to vary the text displayed to the user depending on the calculated price, as the terms, conditions, or offers often depend on the transaction amount.

\n

Add-ons

\n

The add-ons are only distributed with the Developer and Platinum versions of the plugin.

\n

The plugin lists the add ons in the “Add-ons area” of the settings page. To enable the add-ons, you must tick their corresponding checkbox and press the “Activate/Deactivate Add-ons” button.

\n

Server-Side Equations add-on – included in the Developer and Platinum versions of the plugin

\n

Define equations with PHP code on the server-side. The calculated fields call the server-side equations via AJAX.

\n

CLICK HERE for additional information

\n

Verification Code add-on – included in the Developer and Platinum versions of the plugin

\n

The “Verification Code” add-on allows verifying the users’ emails by sending a verification code and blocking the form’s submission until a valid code is entered.

\n

CLICK HERE for additional information

\n

Unique Fields Values add-on – included in the Platinum version of the plugin

\n

The “Unique Fields Values” add-on verifies that the values entered by users have not been used in previous submissions. It allows to enter simple and complex verification rules (one or multiple fields separated by comma symbols).

\n

CLICK HERE for additional information

\n

WooCommerce add-on – included in the Developer and Platinum versions of the plugin

\n

Integrate the forms created by the “Calculated Fields Form” with WooCommerce products and calculate their prices, weights, dimensions, and more at the runtime.

\n

CLICK HERE for additional information

\n

Easy Digital Downloads add-on – included in the Platinum version of the plugin

\n

Integrate forms created by the “Calculated Fields Form” with the Easy Digital Downloads products, and calculate their price dynamically at the runtime.

\n

CLICK HERE for additional information

\n

SalesForce add-on – included in the Developer and Platinum versions of the plugin

\n

Add new leads to a SalesForce account using the data collected by the forms.

\n

CLICK HERE for additional information

\n

WebHook add-on – included in the Developer and Platinum versions of the plugin

\n

Post the information collected by the forms to WebHook URLs.

\n

Through connecting the forms created by the plugin with services like Zapier, Microsoft Flow, Workato, or IFTTT (and many others), you will have access to hundreds of third-party services, like Zoho CRM, Dropbox, Mailchimp, Evernote, Google Drive, Facebook, Twitter, and more than 300 services https://zapier.com/zapbook/apps/, https://flow.microsoft.com/, https://ifttt.com/discover

\n

CLICK HERE for additional information

\n

User Permissions add-on – included in the Developer and Platinum versions of the plugin

\n

Control access to forms. Access can be restricted to registered users, users with certain roles, or to specific users.

\n

The add-on adds a new shortcode to the plugin to list the data submitted by the logged-in user (it is possible to insert the new shortcode into the user’s profile) and assign user permissions to edit their information or delete an entry.

\n

Limit the number of submissions (e.g. one submission per form/user).

\n

CLICK HERE for additional information

\n

User Registration Form add-on – included in the Developer and Platinum versions of the plugin

\n

Build user registration forms. The form can collect basic user information and metadata required by other plugins.

\n

CLICK HERE for additional information

\n

reCAPTCHA add-on – included in the Developer and Platinum versions of the plugin

\n

Protect forms using Google reCAPTCHA instead of the basic captcha distributed with the plugin, as reCAPTCHA is more visual and intuitive than traditional captchas.

\n

CLICK HERE for additional information

\n

Google Analytics add-on – included in the Platinum version of the plugin

\n

Generate usage reports in “Google Analytics” for the users’ actions.

\n

CLICK HERE for additional information

\n

PayPal Pro add-on – included in the Platinum version of the plugin

\n

Allow the user to enter their credit card details directly on your website without redirecting them to the PayPal website. Once the user has filled the form fields and clicked the submit button, the payment is processed and the posted data (excluding the credit card information) is stored in the WordPress database.

\n

CLICK HERE for additional information

\n

Upload Files add-on – included in the Platinum version of the plugin

\n

Every commercial version of the plugin includes the “Upload File” control to upload files from the form. However, the “Upload Files” add-on allows the uploaded files to be added to the Media Library and be accessed from the pages and posts of the website.

\n

WordPress restricts the file types that can be uploaded. The “Uploads Files” add-on allows the list of accepted files to be extended.

\n

CLICK HERE for additional information

\n

DropBox Integration add-on – included in the Platinum version of the plugin

\n

Copy or move files uploaded through the forms to a DropBox account.

\n

CLICK HERE for additional information

\n

ip2location add-on – included in the Platinum version of the plugin

\n

Use the ip2location databases to identify additional user information based on their IP. Address such as country, city, coordinates, weather station, time zone, ZIP code, etc.

\n

CLICK HERE for additional information

\n

Google Places add-on – included in the Platinum version of the plugin

\n

Transform fields into autocomplete address fields calling the Google Places API.

\n

CLICK HERE for additional information

\n

Autocomplete Places add-on – included in the Platinum version of the plugin

\n

Transform fields into autocomplete address fields by calling the Photon API.

\n

CLICK HERE for additional information

\n

Signature add-on – included in the Platinum version of the plugin

\n

Transform fields into “Signature” fields to allow the users to sign the form with their mouse or touchscreens.

\n

CLICK HERE for additional information

\n

iCal add-on – included in the Platinum version of the plugin

\n

Send the users iCal files attached to the confirmation emails to import events into the most popular calendars like Outlook and Google Calendar.

\n

CLICK HERE for additional information

\n

CSV Generator add-on – included in the Platinum version of the plugin

\n

Export the information collected by the form to CSV files and attach them to the notification emails.

\n

CLICK HERE for additional information

\n

PDF Generator add-on – included in the Platinum version of the plugin

\n

An experimental add-on that generates PDF files with the information collected by the forms and attaches them to the notification emails.

\n

CLICK HERE for additional information

\n

WebMerge add-on – included in the Platinum version of the plugin

\n

Integrate the forms with the FormStack Documents service (formerly WebMerge) to generate PDF and Office documents with the information collected from the form.

\n

CLICK HERE for additional information

\n

Integrate the form with the Silverpop service (now: IBM Watson Campaign Automation) CLICK HERE for additional information

\n

PrintFriendly add-on – included in the Platinum version of the plugin

\n

Send the information collected by the forms to PrintFriendly and attach the resulting PDF files to the notification emails.

\n

CLICK HERE for additional information

\n

Mailchimp add-on – included in the Platinum version of the plugin

\n

Add new members to the MailChimp lists with the information collected by the form.

\n

CLICK HERE for additional information

\n

Mautic add-on – included in the Platinum version of the plugin

\n

Add/update contacts in the Mautic service with information collected by the forms.

\n

CLICK HERE for additional information

\n

HubSpot add-on – included in the Platinum version of the plugin

\n

Add/update HubSpot contacts with information collected by the forms.

\n

CLICK HERE for additional information

\n

Emma add-on – included in the Platinum version of the plugin

\n

Connect the forms to the Emma service to add new members to Emma groups.

\n

CLICK HERE for additional information

\n

Twilio add-on – included in the Platinum version of the plugin

\n

Send notification messages (SMS) through Twilio in the form’s submissions.

\n

CLICK HERE for additional information

\n

MailPoet add-on – included in the Platinum version of the plugin

\n

Adds subscribers to MailPoet Mailing Lists (MailPoet versions 2 and 3).

\n

CLICK HERE for additional information

\n

AffiliateWP add-on – included in the Platinum version of the plugin

\n

Integrate the forms with the “AffiliateWP” plugin.

\n

CLICK HERE for additional information

\n

Authorize.Net add-on – included in the Platinum version of the plugin

\n

The Authorize.net Server Integration Method (Authorize.net SIM) is a hosted payment processing solution that handles all of the steps in processing a transaction.

\n

CLICK HERE for additional information

\n

Stripe add-on – included in the Platinum version of the plugin

\n

The Stripe Payments add-on (www.stripe.com) provides a way to accept all major cards from customers around the world.

\n

CLICK HERE for additional information

\n

Skrill Payments Integration add-on – included in the Platinum version of the plugin

\n

An interface for accepting payments through secure pages.

\n

You can accept cards, more than 20 local payment methods, and over 80 direct bank transfer connections with a single integration.

\n

CLICK HERE for additional information

\n

TargetPay (iDeal) add-on – included in the Platinum version of the plugin

\n

Integrate with iDeal, the most popular Dutch payment method. The integration is made via TargetPay: https://www.targetpay.com/info/ideal?setlang=en

\n

CLICK HERE for additional information

\n

Mollie (iDeal) add-on – included in the Platinum version of the plugin

\n

Integrate with iDeal, the popular Dutch payment method.

\n

CLICK HERE for additional information

\n

RedSys / Servired / Sermepa add-on – included in the Platinum version of the plugin

\n

A secure interface for accepting credit card payments through most banks in Spain (Sabadell, Banco Popular, BBVA, Santander, Bankia-Caixa, Bankinter, etc.)

\n

CLICK HERE for additional information

\n

PayTM add-on – included in the Platinum version of the plugin

\n

A secure interface for accepting payments through credit cards, debit cards, net banking, wallets, and EMI. With over 100 million PayTM users in India, your customers will appreciate the option to pay with their trusted PayTM Wallet.

\n

CLICK HERE for additional information

\n

SagePay add-on – included in the Platinum version of the plugin

\n

A secure interface for accepting payments through SagePay.

\n

CLICK HERE for additional information

\n

Sage Payment add-on – included in the Platinum version of the plugin

\n

An interface for accepting payments through a secure SSL-checkout system for both bank cards and virtual check transactions. All authorized and approved transactions will be delivered to your current bank card and/or virtual check batches, viewable within the Virtual Terminal for order processing and settlement.

\n

CLICK HERE for additional information

\n","download_link":"https://downloads.wordpress.org/plugin/calculated-fields-form.zip","tags":{"calculator":"calculator","contact-form":"contact form","form":"form","form-builder":"form builder","quote-form":"quote form"},"donate_link":"http://cff.dwbooster.com","icons":{"1x":"https://ps.w.org/calculated-fields-form/assets/icon-128x128.jpg?rev=1734377","2x":"https://ps.w.org/calculated-fields-form/assets/icon-256x256.jpg?rev=1734377"},"wporg":true},{"name":"All in One SEO – Best WordPress SEO Plugin – Easily Improve SEO Rankings & Increase Traffic","slug":"all-in-one-seo-pack","version":"4.1.3.3","author":"All in One SEO Team","author_profile":"https://profiles.wordpress.org/smub","requires":"4.9","tested":"5.8","requires_php":"5.4","rating":90,"ratings":{"1":163,"2":21,"3":15,"4":58,"5":1495},"num_ratings":1752,"support_threads":113,"support_threads_resolved":105,"active_installs":2000000,"downloaded":82947512,"last_updated":"2021-08-16 1:02pm GMT","added":"2007-03-30","homepage":"https://aioseo.com/","short_description":"The original WordPress SEO plugin. Improve your WordPress SEO rankings and traffic with our comprehensive SEO tools and smart SEO optimizations.","description":"

AIOSEO – The Best WordPress SEO Plugin & Toolkit

\n

All in One SEO for WordPress is the original WordPress SEO plugin started in 2007. Over 2 million smart website owners use AIOSEO to properly setup WordPress SEO, so their websites can rank higher in search engines.

\n

We believe you shouldn’t have to hire an SEO expert or developer to properly setup WordPress SEO. That’s why we built AIOSEO as the most comprehensive WordPress SEO plugin and marketing toolkit, so you can improve your website’s SEO rankings and uncover new SEO growth opportunities in less than 10 minutes.

\n

At All in One SEO (AIOSEO), user experience is our #1 priority. From website SEO setup to ongoing SEO optimization, our team of SEO experts have created easy to follow SEO workflows that will help you outrank your competitors in search results. This is why many industry leaders award AIOSEO as the most beginner friendly WordPress SEO plugin that’s both EASY and POWERFUL!

\n

AIOSEO’s WordPress SEO plugin features are highly optimized for Google and other popular search engine algorithm because we follow the most up to date SEO standards and SEO best practices. We can honestly say that AIOSEO is the best WordPress SEO plugin in the world.

\n
\n

AIOSEO Pro
\n This plugin is the lite version of the All in One WordPress SEO Pro plugin that comes with all the SEO features you will ever need to rank higher in search engines including smart SEO schema markup, advanced SEO modules, powerful SEO sitemap suite, local SEO module, Google AMP SEO, WooCommerce SEO, and tons more. Click here to purchase the best premium WordPress SEO plugin now!

\n
\n

We took the pain out of optimizing WordPress SEO and made it easy. Here’s why smart business owners, SEO experts, marketers, and developers love AIOSEO, and you will too!

\n

\n

Properly Setup WordPress SEO (without Hiring an Expert)

\n

AIOSEO makes it easy to setup WordPress SEO, the RIGHT WAY. Our smart WordPress SEO setup wizard helps you optimize your website’s SEO settings based on your unique industry needs.

\n

In less than 10 minutes, you will be able to setup all the advanced WordPress SEO features like XML sitemaps, optimized search appearance, SEO meta title, SEO meta description, SEO keywords, Open Graph SEO Knowledge Panel information, social media integration, SEO search console / webmaster tool connections, local SEO, schema markup for SEO, and more.

\n

But don’t just take our word. See what another website owner like yourself is saying:

\n
\n

Swift, honest, full control. After all these years and having used almost every WP SEO plugin I’m amazed by AIOSEO’s depth, simplicity and fast workflow ❤️
\n @aaronbol

\n
\n

Optimize Your Pages for Higher SEO Rankings with TruSEO Analysis

\n

Creating SEO optimized content used to be hard. Why?

\n

Because most business owners aren’t SEO experts.

\n

That’s why we created the TruSEO score. This gives you a more in-depth SEO optimization analysis and an actionable SEO checklist, so you can easily optimize your website pages for any keyword to get higher SEO rankings and maximum traffic.

\n

Our SEO content analysis tool is enabled by default in both the Gutenberg block editor and Classic Editor, so you can quickly optimize your blog posts and pages for your SEO keywords to get higher SEO rankings.

\n

Our SEO readability analysis gives you further insights on how to improve your content for maximum SEO benefits.

\n

The best part about TruSEO analysis is that you can use it to optimize your posts / pages for unlimited SEO keywords.

\n

Seamless SEO Integrations with Webmaster Tools & Social Media

\n

All in One SEO for WordPress offers seamless integration with popular social media platforms like Facebook, Twitter, Pinterest, YouTube, LinkedIn, Instagram, and more.

\n

This ensures that your website preview is optimized for both search engines (SEO), and social media networks.

\n

AIOSEO also makes it easy to connect your website with Google Search Console, Bing webmaster tools, Yandex webmaster tools, Baidu webmaster tools, Google Analytics, and all other SEO webmaster tools.

\n

This helps you easily measure your SEO results and progress.

\n
\n

I’m a professional SEO and used many tools and extensions. Regarding simplicity, individuality and configurability All in One SEO Pro is by far the best SEO plugin out there for WordPress.
\n Joel Steinmann

\n
\n

Smart XML Sitemaps and Rich Snippets (SEO Schema Markup)

\n

Proper website SEO markup plays an important role in improving SEO rankings. That’s why smart SEO experts use AIOSEO for on-page SEO optimization.

\n

Aside from the comprehensive WordPress XML sitemap feature, we also offer News SEO sitemap and Video SEO sitemap to help you improve your website’s SEO ranking and get more traffic.

\n

AIOSEO comes with built-in smart SEO schema markup feature to help you get more traffic through SEO rich snippets, Google featured snippets, breadcrumb site links in SEO, and image SEO search results.

\n
\n

The best SEO plugin. All in One SEO is the best SEO Plugin. I personally find it better than Yoast. This plugin offers so much freedom in configuration.
\n hanapupu

\n
\n

Local SEO, WooCommerce SEO, Google AMP, and More

\n

All in One SEO is the most comprehensive WordPress SEO plugin / marketing toolkit in the world.

\n

We offer complete support for Google Knowledge Graph and Schema.org markup for local businesses. You can add multiple business locations, opening hours, contact info (business email, business phone, business address, etc) and more with our Local SEO module.

\n

AIOSEO also makes WooCommerce SEO easy. With our SEO plugin, you can optimize your product pages and product categories for better SEO rankings (with just a few clicks).

\n

Since AIOSEO is the original WordPress SEO plugin, we have SEO integrations with all popular WordPress plugins such as membership plugin SEO, landing page plugin SEO, Semrush SEO integration, etc. AIOSEO also offers Google AMP integration and works seamlessly with all popular speed & caching plugins.

\n
\n

Best SEO Plugin for WordPress. We continue to use All in One SEO on all our WordPress sites and Clients sites, and we recommend it too all other clients.
\n MySEOGuy

\n
\n

Since SEO is an essential feature, AIOSEO is a must have plugin for every website!

\n

SEO Redirection Manager and 404 Monitoring

\n

AIOSEO Redirection manager helps you set up proper 301 redirects to improve your SEO rankings.

\n

We also support other advanced SEO redirects including 302 redirects, 307 redirects, 410 redirection, 404 redirects, REGEX redirects for advanced SEO needs, and more.

\n

We have an automatic 404 error monitor that helps you track and redirect 404 errors, so you can prevent losing SEO rankings.

\n

Since redirect speed is important for SEO, we built in both Apache / NGINX server level redirects to help you get maximum SEO benefit.

\n

Full All in One SEO Feature List

\n
    \n
  • WordPress SEO Setup Wizard – Properly setup WordPress SEO in less than 10 minutes.
  • \n
  • On-page SEO Optimization – optimize SEO code markup (without hiring a developer)
  • \n
  • TruSEO score – detailed content & readability analysis to help you optimize your pages for higher SEO rankings.
  • \n
  • Smart Meta Title & Description – Automatic SEO generation, dynamic SEO smart tags, and more.
  • \n
  • Unlimited SEO Keywords – our SEO content analyzer helps you optimize your pages for unlimited SEO keywords.
  • \n
  • XML Sitemap – Advanced XML sitemaps to boost your SEO rankings.
  • \n
  • Video SEO Sitemap – Improve your SEO rankings with video sitemap.
  • \n
  • News SEO Sitemap – Increase your SEO traffic with Google News sitemap.
  • \n
  • RSS SEO Sitemap – Improve SEO crawl frequency with RSS sitemap.
  • \n
  • Automatic Image SEO – Our image SEO module helps your images rank higher.
  • \n
  • Local Business SEO – Improve your local business SEO presence with our local SEO module.
  • \n
  • Multiple location SEO – Great for SEO optimization for businesses with multiple local store locations.
  • \n
  • Rich Snippets Schema – Get better click through rate (CTR) and increase SEO rankings with rich snippets schema.
  • \n
  • SEO Knowledge Graph Support – Improve your website’s search appearance with SEO Knowledge panel.
  • \n
  • Advanced SEO Schema – Easily add advanced SEO schema markups like FAQ schema, product schema, recipe schema (food blogger SEO), software application schema markup (SaaS SEO), online course schema (for course SEO), and more.
  • \n
  • Sitelinks Search Box – Helps you get a search box in Google SEO rankings.
  • \n
  • Google Site Links – Our SEO markup can help you get sitelinks for your brand.
  • \n
  • Robots.txt Editor – Control what SEO robots can see with our easy SEO robots.txt editor.
  • \n
  • SEO Audit Checklist – Improve your website’s SEO ranking with our SEO audit checklist.
  • \n
  • Google Search Console – Connect your WordPress site with Google webmaster tools to see additional SEO insights.
  • \n
  • Search Engine Verification Tools – Easily integrate with other popular SEO webmaster tools to improve search visibility.
  • \n
  • Google AMP SEO – Improve your mobile SEO rankings with Google AMP SEO.
  • \n
  • Advanced SEO Canonical URLs – Prevent duplicate content in SEO with automatic canonical URLs and boost your SEO rankings.
  • \n
  • Advanced Robots Meta SEO Settings – granular controls for no index, no follow, no archive, no snippet, max snippet, max video, and more.
  • \n
  • RSS Content for SEO – Stop content theft from hurting your SEO rankings with our RSS Content tool.
  • \n
  • User Access Control – Control who can manage your SEO settings with our advanced SEO access control.
  • \n
  • Competitor Site SEO Analysis – Use our competitor SEO analysis to outrank them by improving your website’s SEO optimization.
  • \n
  • Smart Breadcrumbs – Add Breadcrumb navigation to improve user experience and boost your SEO rankings. Comes with full SEO JSON+LD support.
  • \n
  • Smart SEO Redirects – Setup proper 301 redirects to improve your SEO rankings.
  • \n
  • 404 Error Monitor for SEO – Monitor website 404 errors and set up proper SEO redirects to prevent losing SEO rankings.
  • \n
  • Title and Nofollow for SEO – We make it easy for you to add title and nofollow to external links to improve SEO rankings.
  • \n
\n

WordPress SEO Integrations

\n
    \n
  • WooCommerce SEO – optimize your WooCommerce product pages and improve your WooCommerce store’s SEO rankings.
  • \n
  • MemberPress SEO – optimize your MemberPress course pages and improve your membership site’s SEO rankings.
  • \n
  • Elementor SEO – add SEO optimization for your Elementor landing pages.
  • \n
  • LearnDash SEO – SEO optimization for LearnDash courses.
  • \n
  • Facebook SEO – SEO optimize your website preview on Facebook.
  • \n
  • Twitter SEO – SEO optimize your website preview on Twitter.
  • \n
  • Pinterest SEO – SEO optimize your website preview on Pinterest.
  • \n
  • Open Graph Support – improve your SEO with open graph meta data.
  • \n
  • Knowledge Panel SEO – improve website SEO apperance by adding social media profile links for Facebook, Twitter, Wikpedia, Instagram, LinkedIn, Yelp, YouTube, and more.
  • \n
  • SEO Webmaster Tool Content – Connect your WordPress site with various webmaster tools to improve SEO rankings.
  • \n
  • Semrush SEO integration – See additional SEO keywords and relevant SEO keyphrases with our Semrush SEO integration.
  • \n
\n

WordPress SEO Plugin Importer

\n
    \n
  • Yoast SEO Importer – easily switch from Yoast SEO to AIOSEO with our full SEO migration wizard that includes SEO keywords, SEO title, meta description, XML sitemaps and more.
  • \n
  • Yoast SEO Premium Importer – easily import Yoast SEO premium settings including SEO redirects to AIOSEO with our full SEO migration wizard.
  • \n
  • RankMath SEO Importer – easily switch from RankMath SEO to AIOSEO with our SEO migration wizard.
  • \n
  • SEO Settings Backup – create a backup of your AIOSEO settings.
  • \n
  • Advanced SEO Import / Export – easily import / export AIOSEO settings from one site to another.
  • \n
  • Redirection Importer – import your SEO redirects from the Redirection plugin with our SEO migration wizard.
  • \n
  • Simple 301 Redirects Importer – import your SEO redirects from Simple 301 redirets with our SEO migration wizard.
  • \n
  • Safe Redirection Manager – easily import SEO redirects from safe redirect manager with our SEO migration wizard.
  • \n
\n

After reading this feature list, you can probably imagine why AIOSEO is the best WordPress SEO plugin in the market.

\n

Give AIOSEO a try.

\n

Want to unlock more SEO features? Upgrade to AIOSEO Pro.

\n

Credits

\n

This plugin is created by Benjamin Rojas and Syed Balkhi.

\n

Branding Guideline

\n

AIOSEO® is a registered trademark of Semper Plugins LLC. When writing about the WordPress SEO plugin by AIOSEO, please use the following format.

\n
    \n
  • AIOSEO (correct)
  • \n
  • All in One SEO (correct)
  • \n
  • AIO SEO (incorrect)
  • \n
  • All in 1 SEO (incorrect)
  • \n
  • AISEO (incorrect)
  • \n
\n

What’s Next

\n

If you like our WordPress SEO plugin, then consider checking out our other projects:

\n
    \n
  • OptinMonster – Get More Email Subscribers with the most popular conversion optimization plugin for WordPress.
  • \n
  • WPForms – #1 drag & drop online form builder for WordPress.
  • \n
  • MonsterInsights – See the Stats that Matter and Grow Your Business with Confidence. Best Google Analytics Plugin for WordPress.
  • \n
  • SeedProd – Create beautiful landing pages with our powerful drag & drop landing page builder.
  • \n
  • WP Mail SMTP – Improve email deliverability for your contact form with the most popular SMTP plugin for WordPress.
  • \n
  • RafflePress – Best WordPress giveaway and contest plugin.
  • \n
  • Smash Balloon – #1 social feeds plugin for WordPress.
  • \n
  • SearchWP – advanced WordPress search plugin.
  • \n
  • PushEngage – best web push notification plugin.
  • \n
\n

Visit WPBeginner to learn from our WordPress Tutorials and find out about other best WordPress plugins.

\n","download_link":"https://downloads.wordpress.org/plugin/all-in-one-seo-pack.4.1.3.3.zip","tags":{"google-search-console":"google search console","meta-description":"meta description","schema":"schema","seo":"seo","xml-sitemap":"xml sitemap"},"donate_link":"","icons":{"1x":"https://ps.w.org/all-in-one-seo-pack/assets/icon.svg?rev=2443290","2x":"https://ps.w.org/all-in-one-seo-pack/assets/icon-256x256.png?rev=2443290","svg":"https://ps.w.org/all-in-one-seo-pack/assets/icon.svg?rev=2443290"},"wporg":true},{"name":"Translate WordPress – Weglot Translate","slug":"weglot","version":"3.3.6","author":"Weglot Translate team","author_profile":"https://profiles.wordpress.org/remyb92","requires":"4.5","tested":"5.8","requires_php":"5.6","rating":96,"ratings":{"1":39,"2":7,"3":6,"4":27,"5":1205},"num_ratings":1284,"support_threads":8,"support_threads_resolved":3,"active_installs":40000,"downloaded":1203261,"last_updated":"2021-08-18 2:44pm GMT","added":"2015-09-27","homepage":"http://wordpress.org/plugins/weglot/","short_description":"Translate your WordPress website in 110+ languages within minutes with Weglot Translate, without any coding.","description":"

Weglot Translate is the leading WordPress translation plugin, trusted by 60,000+ users worldwide. Translate your WordPress website into 110+ languages within minutes, no coding required.

\n

Increase visibility and boost conversions with ease by adding multilingual functionality. Weglot Translate is fully optimized for SEO, with every translated page automatically indexed by Google. Say hello in multiple languages to millions of new visitors.

\n

Make your website multilingual in minutes with a free trial. Visit https://weglot.com/ to learn more!

\n

How Weglot Translate works

\n\n

Why Weglot Translate

\n

It’s easy to install: Weglot Translate is quick to set up to have a multilingual WordPress website ready, instantly. Reach out to millions of new visitors worldwide with a few clicks, without any coding.

\n

It’s built for maximum compatibility: Weglot Translate is fully compatible with all platforms, WordPress themes, and plugins. From WooCommerce product descriptions to Elementor order forms, everything is translated into the languages of your choice. So you can focus on your content, not the technical details.

\n

It’s optimized for SEO: Weglot Translate follows Google’s best practices for multilingual website translation, serving all translated web pages with clean source code. Google will automatically index every translated page with dedicated URLs.

\n

It’s easy to set and forget: Weglot Translate automatically detects all your website content for easy translation. No more time-consuming manual duplication of every single line of content to get a multilingual website. All translations are updated in real-time, so you don’t need to worry about maintenance and any newly added content is automatically translated.

\n

It takes translation seriously: Weglot Translate gives you an edge on your translation tasks with the first layer of automatic translation provided by the best machine learning providers on the market (DeepL, Google, Microsoft, and Yandex). You can also edit the translations and collaborate with your team to work on translations together, directly within Weglot.

\n

It partners with the pros: Weglot Translate lets you order from vetted professional translators directly inside your Weglot dashboard. Set translation quality the way you want it to be, with Weglot Translate.

\n

“Within a week of translating our site to English with Weglot, international sales doubled, by the following month – they had quadrupled.”
\nClara Champion – Director of Digital and E-Commerce, Jimmy Fairly
\nRead the case study

\n

Multilingual functionality like no other

\n

Increase visibility: All translated pages are automatically indexed following Google’s best practices with dedicated URLs. Get new traffic with your multilingual website.

\n

Reduce bounce rate: Redirect visitors automatically to serve them in the language of their choice, based on their browser settings.

\n

Enhance user experience: From the landing page to the email confirmation, get all your key conversion steps translated in your customers’ language. You can even add different images and videos for various languages. Useful for images with text, Weglot Translate makes it easy to display “translated” images in your translated versions. Media localization is an essential aspect of any multilingual project and Weglot Translate makes it simple to do so.

\n

“We really loved the localization features provided by Weglot, such as the ability to translate images and other types of media depending on the language the visitor is viewing the site in.”
\nKim Martin – Senior Communications and Marketing Officer, The Challenge Initiative
\nRead the case study

\n

An all-in-one language translation platform

\n
    \n
  • Manage and edit all of your translations through a user-friendly interface.
  • \n
  • Collaborate with team members and trusted translators to translate together, directly inside Weglot.
  • \n
  • Is it a title? Is it a link? No more guessing the context of the text. Weglot Translate’s in-context editor lets you translate directly within the webpage.
  • \n
  • Make it your own. The language switcher is fully customizable for multiple design choices.
  • \n
  • Weglot Translate makes it easy to migrate from other WordPress multilingual plugins like Polylang or WPML. Simply deactivate your existing translation plugin and install Weglot Translate.
  • \n
\n

“Weglot removed the pain of having to manage multiple stores for multiple locales. The integration was easy, and the support is incredibly helpful. I highly recommend Weglot to anyone looking for a simple and cost-effective solution to translate their stores!”
\nMike Robertson – Director of Sales Operations, Nikon

\n

With an increase in site visitors and session duration thanks to your multilingual website, you can expect a massive boost to your conversions. See why thousands of e-commerce platforms, SaaS firms, marketplaces, corporate websites, and blogs worldwide love Weglot Translate. Try it today for free

\n","download_link":"https://downloads.wordpress.org/plugin/weglot.3.3.6.zip","tags":{"language":"language","localization":"localization","multilingual":"multilingual","translate":"translate","translation":"translation"},"donate_link":"","icons":{"1x":"https://ps.w.org/weglot/assets/icon-128x128.png?rev=2186774","2x":"https://ps.w.org/weglot/assets/icon-256x256.png?rev=2186774"},"wporg":true},{"name":"Rank Math SEO – Best SEO Plugin For WordPress To Increase Your SEO Traffic","slug":"seo-by-rank-math","version":"1.0.71.1","author":"Rank Math","author_profile":"https://profiles.wordpress.org/rankmath","requires":"5.6","tested":"5.8","requires_php":"7.2","rating":98,"ratings":{"1":68,"2":17,"3":20,"4":47,"5":3367},"num_ratings":3519,"support_threads":135,"support_threads_resolved":132,"active_installs":900000,"downloaded":19540553,"last_updated":"2021-09-03 7:13pm GMT","added":"2018-11-19","homepage":"https://s.rankmath.com/home","short_description":"Rank Math SEO is the Best WordPress SEO plugin combines the features of many SEO…","description":"

Rank Math SEO – Best SEO Plugin for WordPress
\n★★★★★

\n

SEO is the most consistent source of traffic for any website. We created Rank Math SEO, a WordPress SEO plugin, to help every website owner get access to the SEO tools they need to improve their SEO and attract more traffic to their website.

\n

Try The Demo

\n\n

Features | Why Choose Rank Math SEO? | Compare | Screenshots | Benefits

\n

SEO might be the best and most consistent source of traffic for one’s website, but it’s not without its quirks. The constant process of optimizing your posts can sometimes take more time than actually writing the content. If you always feel that you can do more on the SEO front for your website but don’t have the time, then Rank Math SEO is what you’re looking for.

\n

Its host of intelligent features brings top SEO capabilities in your hands that were previously out of reach. The smart automation features give you the power of an entire SEO team with just a few clicks. A well thought out design, powerful features, and years of development by the MyThemeShop squad make Rank Math SEO a game-changing SEO plugin that will level the SEO playing field in your favor to help increase traffic.

\n

Rank Math SEO beats all of its competitors, hands down.

\n

See the features which are exclusive to the Rank Math SEO plugin and understand why Rank Math SEO is possibly the Best SEO Plugin for WordPress.

\n
    \n
  • \n

    Setup Wizard (Easy to follow)
    \nRank Math SEO practically configures itself. Rank Math SEO features a step-by-step installation and configuration wizard that sets up SEO for WordPress perfectly.

    \n
  • \n
  • \n

    Google Schema Markup aka Rich Snippets Integrated
    \nConfiguring Google Schema Markup, aka Rich Snippets, is now easy, thanks to Rank Math SEO. With support for 16+ types of Schema Markups, aka Rich Snippets, including the Rating Schema, you’ll be able to optimize your posts in just a few clicks. It also includes the FAQ Schema aka FAQPage Schema Block & the HowTo aka How To Schema Block in the plugin.

    \n
  • \n
  • \n

    Optimize Unlimited Keywords
    \nUnlike other plugins, Rank Math SEO lets you optimize your posts for unlimited focus keywords per post. 5 by default. Increase by adding this filter.

    \n
  • \n
  • \n

    Google Search Console Integration
    \nRank Math SEO saves you a ton of time by integrating with Google Search Console and displaying important information about your website right inside WordPress.

    \n
  • \n
  • \n

    Google Keyword Ranking
    \nWith Rank Math SEO Plugin, you can track your keyword rankings in Google.

    \n
  • \n
  • \n

    Google Analytics Integration
    \nRank Math SEO offers a one-click solution to install Google Analytics script without pasting anything manually anywhere. You can also exclude the Logged-in users.

    \n
  • \n
  • \n

    Optimal Settings Pre-Selected
    \nConfiguring an SEO plugin takes time, and can be confusing. Rank Math SEO saves you the trouble with its optimal default settings, which are ideal for most websites, and if needed, can be changed.

    \n
  • \n
  • \n

    LSI Keyword Tool Integrated
    \nRank Math SEO’s integrated LSI keyword tool gives you multiple keyword variations of your focus keyword, which helps you attract more traffic to your posts. Free account needed.

    \n
  • \n
  • \n

    Add Overlay Icons On Social Images
    \nRank Math SEO makes social thumbnails click magnets by giving you the option of overlaying a GIF or a video icon on the thumbnail.

    \n
  • \n
  • \n

    Advanced SEO Analysis Tool
    \nWith just a single click, Rank Math SEO can perform an SEO audit of your website.

    \n
  • \n
  • \n

    30 Detailed SEO Tests
    \nRank Math SEO is designed to completely supercharge your website’s SEO with its 30 detailed SEO tests. Free account needed.

    \n
  • \n
  • \n

    Module Based System
    \nRank Math SEO has been designed with a module-based system, each of which can be enabled or disabled as per your needs, giving you extra speed and control.

    \n
  • \n
  • \n

    Smart Redirection Manager
    \nRank Math SEO’s built-in smart redirection manager will help you create, manage, delete, enable, or disable redirects at scale.

    \n
  • \n
  • \n

    Local Business SEO
    \nRank Math SEO is designed to be used by Global websites and local websites alike. With its local SEO features, local sites can stand out in the search engine results like Google’s and attract more traffic.

    \n
  • \n
  • \n

    SEO Optimized Breadcrumbs
    \nRank Math SEO can display SEO optimized Breadcrumbs on all websites, even if the theme doesn’t support Schema.org coding.

    \n
  • \n
  • \n

    404 Monitor
    \nRank Math SEO has a built-in 404 error monitor that helps you find and resolve 404 errors for a better user experience.

    \n
  • \n
  • \n

    Deep Content Analysis Tests
    \nOn-Page SEO is no longer a mystery with Rank Math SEO’s deep content analysis and precise SEO recommendations.

    \n
  • \n
  • \n

    Internal Linking Suggestions
    \nRank Math SEO intelligently suggests other posts from your website for internal linking from your current posts, improving the chances of ranking higher in the SERPs.

    \n
  • \n
  • \n

    Role Manager
    \nEven if you have multiple employees manage your website, you can precisely control what each of them has to access to in Rank Math SEO with its role manager.

    \n
  • \n
  • \n

    Multisite Ready
    \nWhether you run a single WordPress website or an entire network of sites – we are ready for you. Rank Math SEO fully supports the WordPress Multiuser project (WPMU).

    \n
  • \n
  • \n

    and has lightweight Code compared to slow-loading in other SEO plugins.
    \nEven with significantly more features than other plugins, Rank Math SEO loads amazingly fast and keeps your website fast always.

    \n
  • \n
\n

Why is Rank Math SEO such a game-changer?

\n
    \n
  • \n

    Auto Configuration — All you have to do is set a few options, and Rank Math SEO will configure itself perfectly for your website.

    \n
  • \n
  • \n

    Super Fast SEO Plugin — Even after packing so many features, Rank Math SEO has a negligible load on your server, thus making it one of the fastest SEO plugins for WordPress.

    \n
  • \n
  • \n

    Automatic Keyword Suggestions from Google — Get keyword suggestions from Google as you start typing letters in the focus keyword field of Rank Math SEO.

    \n
  • \n
  • \n

    New SEO Analyzer — Rank Math SEO’s built-in SEO analysis will give you SEO recommendations that you’d normally spend hundreds of dollars to get.

    \n
  • \n
  • \n

    Elementor SEO – Deep integration with the Elementor Page builder. Now, you don’t need to go back and forth between tabs to configure your page’s SEO. Everything related to SEO for Elementor can be configured in the visual editor.

    \n
  • \n
  • \n

    Divi SEO – One of its kind integration with the Divi Page Builder and theme. Handle everything related to SEO from the page editor screen without jumping back to the default editor. This helps you optimize your website in real-time for SEO.

    \n
  • \n
  • \n

    Page Builder SEO – The Rank Math SEO plugin’s content analysis works perfectly with popular page builders and themes like Oxygen Builder, WPBakery, Avada, Astra, Kadence, Themify, Beaver Builder, Page Builder Framework, Schema theme, Flothemes, OceanWP, etc.

    \n
  • \n
  • \n

    Optimize UNLIMITED Keywords At Once — You can optimize your post for up to 5 different keywords by default with the Rank Math SEO plugin and can use a filter to optimize for unlimited keywords.

    \n
  • \n
  • \n

    Image SEO – With Rank Math SEO’s perfect solution to add ALT & Title tags on the fly, to optimize images, showing inside the content, and that too for FREE, there is no reason to choose any other SEO solution that does not provide all the essential SEO features.

    \n
  • \n
  • \n

    Web Stories SEO – Make any Story created with the Google’s Web Stories plugin SEO-Ready. Automatically adds AMP-friendly Schema markup and Meta tags.

    \n
  • \n
  • \n

    WooCommerce SEO – Optimizing your store products is easier with Rank Math. SEO Meta tags and Schema are automatically added but can be customized with total control as well. Rank Math SEO has the most advanced SEO for WooCommerce.

    \n
  • \n
  • \n

    Google AMP SEO – Accelerated Mobile Pages need to be prepared for search engines. What better way to do that than letting Rank Math SEO use your regular SEO details and optimizing AMPs based on that data?

    \n
  • \n
  • \n

    bbPress SEO – User-generated content in bbPress is properly optimized with Rank Math handling all the important SEO aspects. Q&A Schema is added to bbPress topics along with other essential meta tags.

    \n
  • \n
  • \n

    BuddyPress SEO – As with bbPress, SEO for BuddyPress content is done automatically done using Rank Math. You get all the options you need to get higher rankings with your user-generated content.

    \n
  • \n
  • \n

    Quick Edit SEO Details – Go through a lot of posts/pages quickly by ensuring they are optimized for search engines. Quickly edit multiple SEO fields at once using Rank Math SEO.

    \n
  • \n
  • \n

    Instant Indexing for Bing – Get your content instantly indexed by Bing. Enter a few key details and you are all set and ready to go.

    \n
  • \n
  • \n

    Instant Indexing for Google – Instantly getting indexed by Google used to be reserved to huge brands and large websites. Not anymore. Just about anyone can take advantage of Google’s Instant Indexing feature using Rank Math SEO.

    \n
  • \n
  • \n

    Version Control – Rollback or try beta versions. Updating and downgrading your plugins is now a matter of few clicks. Automatically update to the latest versions or try out the latest beta builds.

    \n
  • \n
  • \n

    Translation Plugins Support — Rank Math SEO works flawlessly with the top translations plugins like WPML, TranslatePress, Weglot, Polylang (not entirely compatible yet), etc., making it a perfect companion.

    \n
  • \n
  • \n

    XML Sitemap – The Rank Math SEO plugin comes with a fast-loading Sitemap feature that works with different post types, including the custom ones, and provides deep controlling. One can also generate a Locations KML file via filter for Local Sitemap, & a WooCommerce Sitemap.

    \n
  • \n
  • \n

    1-Click Import From Yoast — With a single click of your mouse, Rank Math SEO can import all your settings from Yoast SEO & Yoast SEO Premium to itself. The transfer is instant, and you don’t lose any SERP rankings as a result.

    \n
  • \n
  • \n

    1-Click Import From AIO SEO — Rank Math SEO can also import all your settings from AIO SEO & All in One SEO Pack Pro in a single click. The transfer is instant, and you don’t lose any SERP rankings as a result.

    \n
  • \n
  • \n

    1-Click Import From All In One Schema Rich Snippets — Rank Math SEO can also import all of AIO’s Rich Snippet & Schema Pro settings in a few clicks, which help preserve your rich rankings when moving to Rank Math SEO.

    \n
  • \n
  • \n

    1-Click Import From SEOPress SEO — With a single click of your mouse, Rank Math SEO can import all your settings from SEOPress & SEOPress Pro SEO plugin to itself. The transfer is instant, and you don’t lose any SERP rankings as a result.

    \n
  • \n
  • \n

    1-Click Import From Redirection — Moving all your redirects shouldn’t be a hassle. That’s why we have made importing redirections from the popular Redirection plugin as simple as clicking a button.

    \n
  • \n
  • \n

    Google Keyword Suggestion — When deciding on focus keywords, Rank Math SEO can help you discover more keywords by pulling in automatic keyword suggestions from Google.

    \n
  • \n
\n

Who Can Benefit From Rank Math SEO?

\n

Rank Math SEO Plugin is perfect for:

\n

✔ Bloggers
\n✔ eCommerce Store Owners
\n✔ Niche Sites
\n✔ Businesses
\n✔ Local Businesses
\n✔ Startups
\n✔ The Real Estate
\n✔ Artists & Photographers
\n✔ The Solution Offerer
\n✔ Directories
\n✔ Vloggers (Video Bloggers)
\n✔ Or any WordPress Website

\n

Take a sneak peek into Rank Math SEO’s features

\n

Detailed Setup Tutorial

\n\n

List of Best Rank Math SEO Features

\n
    \n
  • Clean, & Simple User Interface
  • \n
  • Optimal Settings Pre-Selected
  • \n
  • Simple Setup Wizard\n
      \n
    • Compatibility Check
    • \n
    \n
  • \n
  • Auto Canonical URLs
  • \n
  • LSI Keyword Tool Integrated
  • \n
  • Google Search Console Integration
  • \n
  • Google Keyword Ranking
  • \n
  • Import Other Plugin Settings\n
      \n
    • 1 Click Import From Yoast SEO Plugin
    • \n
    • 1 Click Import From AIO SEO
    • \n
    • 1 Click Import From SEOPress & SEOPress Pro
    • \n
    • 1 Click Import From All In One Schema Rich Snippets & Schema Pro
    • \n
    • 1 Click Import From Redirection Plugin
    • \n
    \n
  • \n
  • Role Manager
  • \n
  • ACF Support
  • \n
  • AMP Ready
  • \n
  • bbPress & BuddyPress Modules
  • \n
  • Google Schema Markup Integrated\n
      \n
    • Article Rich Snippet
    • \n
    • Review Rich Snippet
    • \n
    • Book Rich Snippet
    • \n
    • Course Rich Snippet
    • \n
    • Event Rich Snippet
    • \n
    • Job Posting Rich Snippet
    • \n
    • Local Business Rich Snippet
    • \n
    • 193 Local Business Types
    • \n
    • Music Rich Snippet
    • \n
    • Person Rich Snippet
    • \n
    • Product Rich Snippet
    • \n
    • Recipe Rich Snippet
    • \n
    • Restaurant Rich Snippet
    • \n
    • Service Rich Snippet
    • \n
    • Software Application Rich Snippet
    • \n
    • Video Rich Snippet
    • \n
    • Author Stay Rating
    • \n
    \n
  • \n
  • Social Media Optimization\n
      \n
    • Add Overlay Icons On Social Images
    • \n
    • Default OpenGraph Thumbnail
    • \n
    • Auto Facebook Open Graph
    • \n
    • Facebook Authorship
    • \n
    • Facebook Open Graph for Homepage
    • \n
    • Automatic Twitter Meta Cards
    • \n
    • Twitter Card for Homepage
    • \n
    • Default Twitter Card Type
    • \n
    • Social Previews
    • \n
    \n
  • \n
  • Add Knowledge Graph\n
      \n
    • Represent site as a Person
    • \n
    • Represent site as a Company
    • \n
    • Set a Site Logo
    • \n
    \n
  • \n
  • Advanced SEO Analysis Tool\n
      \n
    • 30 Detailed SEO Tests
    • \n
    • SEO Analysis Score
    • \n
    \n
  • \n
  • Automated Image SEO
  • \n
  • Powerful Post Optimization\n
      \n
    • Add SEO Meta Box to all post types
    • \n
    • Bulk Edit Titles & Descriptions
    • \n
    • Post Preview on Google
    • \n
    • Content Analysis
    • \n
    • Control SEO For Single Pages
    • \n
    • Control The Title
    • \n
    • Control Meta Description
    • \n
    • Auto Add Additional Meta Data
    • \n
    • Control ROBOTS Meta
    • \n
    • Choose a Primary Category
    • \n
    \n
  • \n
  • Single Post/page Optimization\n
      \n
    • Focus Keyword
    • \n
    • Google Keyword Suggestion
    • \n
    • Optimize UNLIMITED Keywords (5 by default)
    • \n
    • Choose Pillar Posts & Pages
    • \n
    • Internal Linking Suggestions
    • \n
    • Capitalize Titles
    • \n
    • SEO Failed Tests
    • \n
    • SEO Warnings
    • \n
    \n
  • \n
  • XML Sitemap (New!)
  • \n
  • Module Based System
  • \n
  • Choose Any Separator Character
  • \n
  • Modify Global Meta
  • \n
  • Search Engine Verification Tools\n
      \n
    • Bing Site Verification
    • \n
    • Baidu Site Verification
    • \n
    • Alexa Site Verification
    • \n
    • Yandex Site Verification
    • \n
    • Google Site Verification
    • \n
    • Pinterest Site Verification
    • \n
    • Norton Safe Web Site Verification
    • \n
    \n
  • \n
  • Advanced Redirection Manager\n
      \n
    • Smart & Automatic Post Redirects
    • \n
    • 301 Redirection Type
    • \n
    • 302 Redirection Type
    • \n
    • 307 Redirection Type
    • \n
    • 410 Redirection Type
    • \n
    • 451 Redirection Type
    • \n
    • Support for REGEX
    • \n
    • Debug Redirections
    • \n
    \n
  • \n
  • Simple 404 Monitor\n
      \n
    • Advanced 404 Monitor
    • \n
    \n
  • \n
  • Advanced SEO Breadcrumbs\n
      \n
    • Auto Show SEO Breadcrumbs
    • \n
    \n
  • \n
  • Advanced Link Options\n
      \n
    • Nofollow All External Image Links
    • \n
    • Nofollow All External Links
    • \n
    • Open External Links in New Tab/Window
    • \n
    • Redirect Attachments to Parent
    • \n
    • Strip Category Base
    • \n
    \n
  • \n
  • Remove Stopwords from Permalinks
  • \n
  • Ping Search Engines
  • \n
  • Local SEO Optimization\n
      \n
    • Contact Info Shortcode
    • \n
    \n
  • \n
  • Deep Support For WooCommerce SEO
  • \n
  • Compatible for EDD SEO (Easy Digital Downloads SEO)
  • \n
  • Only 30k Lines of Code\n
      \n
    • PSR-4 Coding Standards (wherever possible)
    • \n
    \n
  • \n
  • Optimize Different Archives\n
      \n
    • Optimize Author Archive Pages
    • \n
    • Optimize Date Archive Pages
    • \n
    • Optimize Archive Pages
    • \n
    \n
  • \n
  • .htaccess Editor
  • \n
  • Robots.txt Editor
  • \n
  • Import/Export Settings
  • \n
  • Import/Export Redirections
  • \n
  • Add Content Before the RSS Feed
  • \n
  • Add Content After the RSS Feed
  • \n
  • Detailed Documentation\n
      \n
    • Contextual Help
    • \n
    \n
  • \n
\n

BIG Publications are Raving About Rank Math SEO

\n

Rank Math SEO Reviews

\n\n\n

Rank Math SEO Review – Why I Ditched Yoast For Rank Math SEO

\n

Rank Math SEO on Product Hunt

\n

Rank Math SEO Plugin Review from an SEO Consultant

\n

and many more

\n

Check RANK MATH PRO WHICH MAKES SEO EASIER & FASTER

\n\n

FREE VS PRO COMPARISON

\n

UNIQUE FEATURES OF RANK MATH PRO

\n

Google Analytics & Search Console Integration (The only SEO plugin that provides it)
\n✔ Integrated Google Analytics, AdSense & Search Console Data
\n✔ Analyze SEO Performance of Each Post & Page
\n✔ See Top Winning/Losing Posts & Keywords
\n✔ Keep Track of Position History
\n✔ Rank Tracker for Important Keywords

\n

Schema aka Structured Data aka Rich Snippets. The BEST Schema Generator Available Online
\n✔ 20+ Pre-defined Schema types (more than any other plugin) –
\n✔ Import Schema from Other Websites
\n✔ Advanced Schema Builder [Advanced SEOs can use this to create any complex Schema Markup)
\n✔ Schema Templates for Automation
\n✔ Conditional Schema Markup
\n✔ Inbuilt Schema Code Preview and Validation
\n✔ Multiple Location Schema On Any Page (using the Shortcode)

\n

Automation At Its BEST
\n✔ Automated Image SEO
\n✔ Advanced Filtering for Images [https://i.rankmath.com/zAUHHP]
\n✔ Watermark Your images
\n✔ Advanced Post filtering
\n✔ Bulk Actions [index, noindex, redirect, etc.]
\n✔ Quick Edit SEO Details
\n✔ Bulk Import SEO Meta Details Using CSV file
\n✔ Auto Detect Videos and Generate Schema Markup for Them
\n✔ Auto Fetch Thumbnail, Duration of YouTube & Vimeo Videos
\n✔ Automatically Flush Facebook Thumbnails
\n✔ Open External Links in New Tabs
\n✔ Nofollow External Links
\n✔ Noindex Paginated, Archive, Search Result Pages
\n✔ Instant Indexing for Bing [Also Google using our Instant Indexing Plugin]

\n

WooCommerce SEO
\n✔ Automatic Schema for WooCommerce Products
\n✔ Advanced Open Graph Tags for WooCommerce Products
\n✔ Automatic NoIndex Hidden Products
\n✔ Remove WooCommerce Product and Category Base
\n✔ Add Custom Brands to Products
\n✔ Add Global Identifier Like GTIN/MPN – Even to Variations

\n

Workflow Improvements
\n✔ Internal Role Manager
\n✔ Inbuilt Google Trends Insights
\n✔ Site Audit with 29 Unique Tests
\n✔ Import Redirections Using CSV File
\n✔ Categorize Redirections for Grouping
\n✔ One-Click Redirection for 404s
\n✔ Monitor Search Performance of Entire Portfolio
\n✔ Easy and Advanced Mode

\n

Miscellaneous
\n✔ Supports bbPress and BuddyPress SEO
\n✔ Version Control – Rollback or Try Beta Versions

\n

MANY MORE FEATURES
\n✔ PREMIUM 24x7x365 Dedicated Support Managers
\n✔ MOST COMPETITIVE PRICING EVER!

\n

CHEK ALL THE PREMIUM FEATURES AND PRICING HERE

\n

CONNECT WITH THE TEAM AND SEO EXPERTS

\n

JOIN FACEBOOK GROUP COMMUNITY: The purpose of this Facebook group is to have a collective place where the community can help each other, and we can get some feedback to improve Rank Math SEO as well. Joining the group is also a great way to connect with like-minded people and share your SEO experience.

\n

Branding Guideline

\n

Rank Math SEO® is a registered trademark. Please use the following format when mentioning the Rank Math SEO plugin anywhere.
\n* Rank Math SEO [correct]
\n* Rank Math SEO [incorrect]
\n* Rank Math SEO [incorrect]
\n* Rank Math SEO [incorrect]
\n* RankMath [incorrect]
\n* Rankmath [incorrect]
\n* rankmath [incorrect]
\n* rankMath [incorrect]

\n

Getting Started:

\n

1. How to Setup Rank Math SEO: Once you install Rank Math SEO for the first time, you will be greeted with the Setup Wizard, which is discussed in detail here.

\n

2. Facebook Group: In this group, you will find the team of Rank Math SEO plugin fairly active and ready to answer your SEO related queries.

\n

3. User Documentation: Although Rank Math SEO is already easy to set up, we’ve put together tutorials, guides, and some knowledge bases to help you set up and get started with Rank Math SEO.

\n

4. Contribute (Sharing is caring): If you are one of those caring hearts that want to help, go to our Rank Math SEO’s GitHub Repository and see how you can contribute to the SEO community. You can also add a new language via translate.wordpress.org.

\n

5. Fixing Common Errors: Sometimes, avoidable or common issues can get you stuck. We’ve created a common guide where we discuss all the common issues and how to fix them.

\n

6. Support Ticket Forum: Our dedicated forum is where you can get support for any issues that you face with Rank Math SEO. In the forum, we’ll also try to answer some SEO queries. User experience is important to us, and our aim is to answer all the queries on the forum in a timely manner.

\n

7. Frequently Asked Questions: Here, we’ve answered the most commonly asked questions about Rank Math SEO. The questions are related to features, pricing, and others.

\n","download_link":"https://downloads.wordpress.org/plugin/seo-by-rank-math.1.0.71.1.zip","tags":{"google-search-console":"google search console","redirection":"redirection","schema":"schema","seo":"seo","sitemap":"sitemap"},"donate_link":"","icons":{"1x":"https://ps.w.org/seo-by-rank-math/assets/icon.svg?rev=2348086","2x":"https://ps.w.org/seo-by-rank-math/assets/icon-256x256.png?rev=2348086","svg":"https://ps.w.org/seo-by-rank-math/assets/icon.svg?rev=2348086"},"wporg":true},{"name":"Head, Footer and Post Injections","slug":"header-footer","version":"3.2.2","author":"Stefano Lissa","author_profile":"https://profiles.wordpress.org/satollo","requires":"4.0","tested":"5.7.2","requires_php":"5.6","rating":98,"ratings":{"1":3,"2":2,"3":4,"4":13,"5":620},"num_ratings":642,"support_threads":1,"support_threads_resolved":0,"active_installs":300000,"downloaded":2774319,"last_updated":"2021-03-17 1:26pm GMT","added":"2008-04-07","homepage":"https://www.satollo.net/plugins/header-footer","short_description":"Header and Footer plugin let you to add html code to the head and footer…","description":"

About WordPress SEO and Facebook Open Graph: I was very unpleased by Yoast invitation to
\nremove my plugin, and it’s not the case.
\nRead more here.

\n

Head and Footer Codes

\n

Why you have to install 10 plugins to add Google Analytics, Facebook Pixel, custom
\ntracking code, Google DFP code, Google Webmaster/Alexa/Bing/Tradedoubler verification code and so on…

\n

With Header and Footer plugin you can just copy the code those services give you
\nin a centralized point to manage them all. And theme independent: you can change your theme
\nwithout loosing the code injected!

\n

Injection points and features

\n
    \n
  • in the page section where most if the codes are usually added
  • \n
  • just after the tag as required by some JavaScript SDK (like Facebook)
  • \n
  • in the page footer (just before the tag)
  • \n
  • recognize and execute PHP code to add logic to your injections
  • \n
  • distinct desktop and mobile injections
  • \n
\n

AMP

\n

A new AMP dedicated section compatible with AMP plugin lets you to inject specific codes in
\nAMP pages. Should be ok even with other AMP plugins.

\n

Post Top and Bottom Codes

\n

Do you need to inject a banner over the post content or after it? No problem. With Header and
\nFooter you can:

\n
    \n
  • Add codes on top, bottom and in the middle of posts and pages
  • \n
  • Differentiate between mobile and desktop (you don’t display the same ad format on both, true?)
  • \n
  • Separate post and page configuration
  • \n
  • Native PHP code enabled
  • \n
  • Shortcodes enabled
  • \n
\n

Special Injections

\n
    \n
  • Just after the opening BODY tag
  • \n
  • In the middle of post content (using configurable rules)
  • \n
  • Everywhere on template (using placeholders)
  • \n
\n

bbPress

\n

The specific bbPress injections are going to be removed. Switch to my
\nAds for bbPress, which is more flexible and complete.

\n

Limits

\n

This plugin cannot change the menu or the footer layout, those features must be covered by your theme!

\n

Official page: Header and Footer.

\n

Other plugins by Stefano Lissa:

\n\n

Translation

\n

You can contribute to translate this plugin in your language on WordPress Translate

\n

Privacy and GDPR

\n

This plugin does not collect or process any personal user data.

\n","download_link":"https://downloads.wordpress.org/plugin/header-footer.3.2.2.zip","tags":{"blog":"blog","footer":"footer","header":"header","page":"page","single":"single"},"donate_link":"http://www.satollo.net/donations","icons":{"1x":"https://ps.w.org/header-footer/assets/icon-256x256.png?rev=1064219","2x":"https://ps.w.org/header-footer/assets/icon-256x256.png?rev=1064219"},"wporg":true},{"name":"WP Rocket","slug":"wp-rocket","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":"","ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":"","support_threads":"","support_threads_resolved":"","active_installs":"","downloaded":"","last_updated":"","added":"","homepage":"https://wp-rocket.me/","short_description":"

Powerful caching to speed up your WordPress website in a few clicks. No coding required.

\n","description":"\n\n\n

Powerful caching to speed up your WordPress website in a few clicks. No coding required.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2020/06/WP-Rocket-285x160.png","2x":"https://amp-wp.org/wp-content/uploads/2020/06/WP-Rocket-372x209.png","svg":""},"wporg":false},{"name":"Statify","slug":"statify","version":"1.8.3","author":"pluginkollektiv","author_profile":"https://profiles.wordpress.org/pluginkollektiv","requires":"4.7","tested":"5.8","requires_php":"5.2","rating":94,"ratings":{"1":2,"2":0,"3":0,"4":3,"5":33},"num_ratings":38,"support_threads":3,"support_threads_resolved":1,"active_installs":200000,"downloaded":1497095,"last_updated":"2021-07-17 8:46am GMT","added":"2011-03-16","homepage":"https://statify.pluginkollektiv.org/","short_description":"Visitor statistics for WordPress with focus on data protection, transparency and clarity. Perfect as a widget in your WordPress Dashboard.","description":"

Statify provides a straightforward and compact access to the number of site views. It is privacy-friendly as it uses neither cookies nor a third party.

\n

An interactive chart is followed by lists of the most common reference sources and target pages. The period of statistics and length of lists can be set directly in the dashboard widget.

\n

Data Privacy

\n

In direct comparison to statistics services such as Google Analytics, WordPress.com Stats and Matomo (Piwik) Statify doesn’t process and store personal data as e.g. IP addresses – Statify counts site views, not visitors.

\n

Absolute privacy compliance coupled with transparent procedures: A locally in WordPress created database table consists of only four fields (ID, date, source, target) and can be viewed at any time, cleaned up and cleared by the administrator.

\n

Due to this tracking approach, Statify is 100% compliant with GDPR and serves as an lightweight alternative to other tracking services.

\n

Display of the widget

\n

The plugin configuration can be changed directly in the Statify Widget on the dashboard by clicking the Configure link.

\n

The amount of links shown in the Statify Widget can be set as well as the option to only count views from today. Of course, older entries are not deleted when changing this setting.

\n

The statistics for the dashboard widget are cached for four minutes.

\n

Period of data saving

\n

Statify stores the data only for a limited period (default: two weeks), longer intervals can be selected as option in the widget. Data which is older than the selected period is deleted by a daily cron job.

\n

An increase in the database volume can be expected because all statistic values are collected and managed in the local WordPress database (especially if you increase the period of data saving).

\n

JavaScript tracking for caching compatibility

\n

For compatibility with caching plugins like Cachify Statify offers an optional switchable tracking via JavaScript. This function allows reliable count of cached blog pages.

\n

For this to work correctly, the active theme has to call wp_footer(), typically in a file named footer.php.

\n

Skip tracking for spam referrers

\n

The comment blacklist can be enabled to skip tracking for views with a referrer URL listed in comment blacklist, i. e. which considered as spam.

\n

Support

\n

If you’ve problems or think you’ve found a bug (e.g. you’re experiencing unexpected behavior), please post at the support forums.

\n

Contribute

\n
    \n
  • Active development of this plugin is handled on GitHub.
  • \n
  • Pull requests for documented bugs are highly appreciated.
  • \n
  • If you want to help us translate this plugin you can do so on WordPress Translate.
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/statify.1.8.3.zip","tags":{"analytics":"analytics","dashboard":"dashboard","pageviews":"pageviews","privacy":"privacy","statistics":"statistics"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=TD4AMD2D8EMZW","icons":{"1x":"https://ps.w.org/statify/assets/icon-128x128.png?rev=2355063","2x":"https://ps.w.org/statify/assets/icon-256x256.png?rev=2355063"},"wporg":true},{"name":"LIQUID BLOCKS GALLERY 37+ Free Designs","slug":"liquid-blocks","version":"1.1.1","author":"LIQUID DESIGN Ltd.","author_profile":"https://profiles.wordpress.org/lqd","requires":"5.2","tested":"5.8","requires_php":false,"rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"num_ratings":1,"support_threads":1,"support_threads_resolved":0,"active_installs":4000,"downloaded":19990,"last_updated":"2021-07-22 6:55am GMT","added":"2019-10-18","homepage":"https://lqd.jp/wp/plugin.html","short_description":"If you’re looking to create block page sections that look great give LIQUID BLOCKS a…","description":"

If you’re looking to create block page sections that look great give LIQUID BLOCKS a try.

\n

In Gutenberg Block Template & Design Gallery, Just select your favorite design. Instantly create page section elements. Like a very simple page builder.

\n

You can manage Block Pattern. (WordPress 5.5+)
\nFully compatible with Gutenberg and themes and AMP.
\nlatest information on LIQUID PRESS.

\n

\n

Design Gallery

\n

Carefully selected 37+ Free Designs.
\n* Headlines
\n* Layouts (Q&A, Ranking, Column, Step, Fluid Shape.)
\n* Price list
\n* CTA
\n* Landing pages
\n* Block Patterns (You can register.)

\n

Toolbar

\n

Add to RichText Toolbar.
\n* Mark
\n* Underline
\n* Big
\n* Small

\n","download_link":"https://downloads.wordpress.org/plugin/liquid-blocks.zip","tags":{"block":"block","block-editor":"block-editor","blocks":"blocks","editor":"editor","gutenberg":"gutenberg"},"donate_link":"https://lqd.jp/wp/plugin.html","icons":{"1x":"https://ps.w.org/liquid-blocks/assets/icon-128x128.png?rev=2175390"},"wporg":true},{"name":"Schema","slug":"schema","version":"1.7.9.2","author":"Hesham","author_profile":"https://profiles.wordpress.org/hishaman","requires":"4.0","tested":"5.7.2","requires_php":"5.4","rating":90,"ratings":{"1":15,"2":6,"3":4,"4":8,"5":162},"num_ratings":195,"support_threads":3,"support_threads_resolved":0,"active_installs":60000,"downloaded":1082875,"last_updated":"2021-05-19 2:51pm GMT","added":"2016-05-11","homepage":"https://schema.press","short_description":"Get the next generation of Schema Structured Data to enhance your WordPress site presentation in Google search results.","description":"

Like Schema plugin? Consider leaving a 5 star review.

\n

Super fast, light-weight plugin for adding schema.org structured data markup in recommended JSON-LD format automatically to WordPress sites.

\n

Enhanced Presentation in Search Results By including structured data appropriate to your content, your site can enhance its search results and presentation.

\n

Check out the Plugin Homepage for more info and documentation.

\n

What is Schema markup?

\n

Schema markup is code (semantic vocabulary) that you put on your website to help the search engines return more informative results for users. So, Schema is not just for SEO reasons, it’s also for the benefit of the searcher.

\n

Schema.org Structured Data Demo & Examples

\n\n

Schema Key Features

\n
    \n
  • Easy to use, set it and forget it, with minimal settings.
  • \n
  • [Premium] Support for different schema.org types.
  • \n
  • Enable Schema types at once per post type or post category.
  • \n
  • [Premium] Enable Schema types anywhere you want on your site content.
  • \n
  • [Premium] Customize source data of schema.org properties.
  • \n
  • Valid markup, test it in Google Structured Data Testing Tool.
  • \n
  • Output JSON-LD format, the most recommended by Google.
  • \n
  • Reuse data saved in post meta, which is created by other plugins.
  • \n
  • Extensible, means you can extend its functionality via other plugins, extensions or within your Theme’s functions.php file.
  • \n
\n
\n

Note: some features are Premium. Which means you need Schema Premium to have those features. Get Schema Premium here!

\n
\n

Free vs Premium

\n
\n

See: a Free vs Premium comparison.

\n
\n

Free Plugin Extensions

\n
    \n
  • Schema Review: Extend Schema functionality by adding review and rating Structured Data functionality for Editors and Authors.
  • \n
  • Schema Default Image: Add ability to set a default WordPress Featured image for schema.org markup.
  • \n
\n

Premium Plugin Extensions

\n\n

Supported Google/Schema Markups

\n\n

Supported Schema.org Types

\n\n

Premium Supported Schema.org Types

\n
\n

Schema Premium has additional support for schema.org types, including:

\n
\n\n

Schema.org Markup Examples

\n

View our Live Structured Data Demo examples.

\n

Supported Plugins

\n

Schema plugin integrates and/or play nicely with (not necessarily a full integration):

\n
    \n
  • Yoast SEO
  • \n
  • AMP plugin (Automattic’s Accelerated Mobile Pages)
  • \n
  • Accelerated Mobile Pages – AMP for WP
  • \n
  • WPRichSnippets
  • \n
  • The SEO Framework
  • \n
  • WPBakery Page Builder
  • \n
  • ThirstyAffiliates
  • \n
  • [Premium] WooCommerce: Schema for WooCommerce extension.
  • \n
  • Easy Digital Downloads (EDD)
  • \n
\n

Supported Themes

\n

The plugin should work fine with any well coded WordPress theme, however these themes were tested and works properly with the plugin.

\n
    \n
  • Genesis 2.x
  • \n
  • Thesis 2.x
  • \n
  • Divi
  • \n
\n

Premium support

\n

schema.press team does not always provide active support for the Schema plugin on the WordPress.org forums, as we prioritize our email support. One-on-one email support is available to people who bought Schema Premium only.

\n

Note that the premium Schema Plugin also has several extra features too, including the option to enable more schema.org types, set content location target for markup, and map schema.org properties, so it is well worth your investment!

\n

Developers?

\n

Feel free to fork the project on GitHub and submit your contributions via pull request.

\n","download_link":"https://downloads.wordpress.org/plugin/schema.zip","tags":{"json-ld":"JSON-LD","rich-snippets":"rich snippets","schema":"schema","schema-org":"schema.org","structured-data":"structured data"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=NGVUBT2QXN7YL","icons":{"1x":"https://ps.w.org/schema/assets/icon-128x128.png?rev=1750172","2x":"https://ps.w.org/schema/assets/icon-256x256.png?rev=1750173"},"wporg":true},{"name":"Iframely – rich media embeds for 2000+ publishers","slug":"iframely","version":"0.7.2","author":"Itteco Corp.","author_profile":"https://profiles.wordpress.org/ivanp","requires":"3.5.1","tested":"5.4.6","requires_php":false,"rating":80,"ratings":{"1":2,"2":0,"3":1,"4":0,"5":7},"num_ratings":10,"support_threads":1,"support_threads_resolved":0,"active_installs":3000,"downloaded":97227,"last_updated":"2020-05-22 5:21pm GMT","added":"2013-10-03","homepage":"http://wordpress.org/plugins/iframely/","short_description":"Iframely extends WordPress default rich media embeds and adds support of over 2000 more providers…","description":"

Iframely extends WordPress default embeds and adds over 2000 more providers and cards as URL previews for the rest of the Web. Provides responsive embed codes, works with AMP.

\n

Just like default WordPress embeds, Iframely will detect URLs in your posts and replace it with responsive embed codes. Supports all usual suspects such as YouTube, Vimeo, Instagram, Facebook, Giphy, GfyCat, Imgur, Google +, GitHub Gists, Storify, SlideShare, Streamable, Vidme, Reddit, Dailymotion, Spotify, Tableau, Prezi, Apester, QZZR, Tidal, MLB. Well over two thousand of providers and keeps growing.

\n

Test your URL here to check if we support it.

\n

Iframely also generates and hosts summary cards as URL previews for general articles. It includes your own site, and Iframely can replace the default embed cards that your publish via WordPress for other sites to use.

\n

API key and paid/free

\n

Powered by Iframely cloud service and requires an account with us. Grab an API key for extended trial at iframely.com, or test the plugin out without an API key.

\n

Before you push the plugin to production, a service subscription is required to avoid any possible disruptions.

\n

We maintain an overwhelming number of integrations and widgets in the background for you, and make sure your sites remains fast and keeps your users happy. This requires a substantial effort on our part, and we won’t be able to provide it without requiring a service subscription.

\n

How to use:

\n

The plugin works the same way the standard oEmbed is supported by WordPress: URL on a separate line.

\n

For example,

\n
Check out this cool video:\n\nhttp://your.url/here\n\nThat was a cool video.\n
\n

Iframely also has its own shortcode [iframely]http://your.url/here[/iframely].

\n

Heads-up:

\n

Iframely does not simply wrap URLs with <iframe src=...> code. That’s not what Iframely is for. We can only match URLs to the known embed codes if publisher offers them for manual copy-paste, or generate a summary card for URL preview if a publisher provides at least a thumnnail image.

\n

To keep default embed providers

\n

By default, Iframely will inject itself to be the first embeds provider in the list, thus intercepting all URLs. It means that the default providers that are later in the list won’t get called and will thus be disabled.

\n

It means Iframely replaces default YouTube, Vimeo, Twitter, other oEmbed plugins that you might have(like JetPack), etc.

\n

Although we should support the same providers and output the same code, just make it responsive and add extra features, you can still disable such behavior and tell Iframely to only process links that otherwise don’t have an embed provider.

\n

Just choose this option in your settings. It will essentially put Iframely to be the last in the list, be “a catcher”, rather then “an interceptor”.

\n

URL editor options

\n

You can fine-tune many aspects of Iframely on your dashboard at iframely.com. This would include some most common settings for popular rich media publishers. Our support team can also fine-tune many other publishers, just for you.

\n

However, you might need a per-post editor for the widgets options. And, Iframely does provide this too. It’s done via URL options editor, and available for higher-tier plans, or during your initial trial period. Make sure to check it out.

\n

AMP support

\n

Yes, Iframely works nicely with AMP WP plugin. It catches all missing embeds and follow your Iframely settings. But you can also opt to have Iframely for all embeds, including default AMP embeds too. For example, Facebook video will be indeed a nice video without user’s text message.

\n","download_link":"https://downloads.wordpress.org/plugin/iframely.zip","tags":{"embed":"embed","embed-code":"embed code","iframely":"iframely","oembed":"oembed","responsive":"responsive"},"donate_link":"","icons":{"default":"https://s.w.org/plugins/geopattern-icon/iframely.svg"},"wporg":true},{"name":"Pym.js Embeds","slug":"pym-shortcode","version":"1.3.2.4","author":"INN Labs","author_profile":"https://profiles.wordpress.org/automattic","requires":"3.0.1","tested":"5.4.6","requires_php":"5.3","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":1,"support_threads_resolved":0,"active_installs":100,"downloaded":2287,"last_updated":"2020-03-26 6:09pm GMT","added":"2016-06-17","homepage":"https://github.com/INN/pym-shortcode","short_description":"A WordPress block and shortcode for embedding iframes that are responsive horizontally and vertically, using…","description":"

Pym.js Embeds provides shortcode and Gutenberg block wrappers for embedding responsive iframes using Pym.js, developed by the NPR Visuals Team. Embedded content resizes vertically to match its container’s width.

\n

AMP compatibility is provided by the official AMP plugin.

\n

Pym.js Resources from NPR

\n

You may also want to look at NPR’s Pym.js resources:

\n\n","download_link":"https://downloads.wordpress.org/plugin/pym-shortcode.1.3.2.4.zip","tags":{"embeds":"Embeds","iframe":"iframe","javascript":"javascript","responsive":"responsive","shortcode":"shortcode"},"donate_link":"https://inn.org/donate","icons":{"1x":"https://ps.w.org/pym-shortcode/assets/icon.svg?rev=1944461","svg":"https://ps.w.org/pym-shortcode/assets/icon.svg?rev=1944461"},"wporg":true},{"name":"PWA","slug":"pwa","version":"0.6.0","author":"PWA Plugin Contributors","author_profile":"https://profiles.wordpress.org/westonruter","requires":"5.5","tested":"5.7.2","requires_php":"5.6","rating":84,"ratings":{"1":3,"2":0,"3":0,"4":0,"5":12},"num_ratings":15,"support_threads":7,"support_threads_resolved":5,"active_installs":40000,"downloaded":291196,"last_updated":"2021-03-09 8:50pm GMT","added":"2018-07-12","homepage":"https://github.com/GoogleChromeLabs/pwa-wp","short_description":"WordPress feature plugin to bring Progressive Web App (PWA) capabilities to Core","description":"

\nProgressive Web Apps are user experiences that have the reach of the web, and are:

\n
    \n
  • Reliable – Load instantly and never show the downasaur, even in uncertain network conditions.
  • \n
  • Fast – Respond quickly to user interactions with silky smooth animations and no janky scrolling.
  • \n
  • Engaging – Feel like a natural app on the device, with an immersive user experience.
  • \n
\n

This new level of quality allows Progressive Web Apps to earn a place on the user’s home screen.\n

\n

Continue reading more about Progressive Web Apps (PWA) from Google.

\n

In general a PWA depends on the following technologies to be available:

\n\n

This plugin serves as a place to implement support for these in WordPress with the intention of being proposed for core merge, piece by piece.

\n

This feature plugin is not intended to obsolete the other plugins and themes which turn WordPress sites into PWAs. Rather, this plugin is intended to provide the PWA building blocks and coordination mechanism for these themes and plugins to not reinvent the wheel and also to not conflict with each other. For example, a theme that implements the app shell model should be able to extend the core service worker while a plugin that provides push notifications should be able to do the same. Themes and plugins no longer should have to each create a service worker on their own, something which is inherently problematic because only one service worker can be active at a time: only one service worker can win. If you are developing a plugin or theme that includes a service worker, consider relying on this PWA plugin, or at least only use the built-in implementation as a fallback for when the PWA plugin is not available.

\n

In versions prior to 0.6, no caching strategies were added by default. The only service worker behavior was to serve an offline template when the client’s connection is down or the site is down, and also to serve an error page when the server returns with 500 Internal Server Error. As of 0.6, there is a new “Offline browsing” toggle on the Reading Settings screen in the admin. It is disabled by default, but when enabled a network-first caching strategy is registered for navigations so that the offline page won’t be shown when accessing previously-accessed pages. The network-first strategy is also used for assets from themes, plugins, and WordPress core. In addition, uploaded images get served with a stale-while-revalidate strategy. For all the details on these changes, see the pull request.

\n

Documentation for the plugin can be found on the GitHub project Wiki.

\n

Development of this plugin is done on GitHub. Pull requests welcome. Please see issues reported there before going to the plugin forum.

\n","download_link":"https://downloads.wordpress.org/plugin/pwa.0.6.0.zip","tags":{"https":"https","progressive-web-apps":"progressive web apps","pwa":"pwa","service-workers":"service-workers.","web-app-manifest":"web app manifest"},"donate_link":"","icons":{"1x":"https://ps.w.org/pwa/assets/icon.svg?rev=1908485","2x":"https://ps.w.org/pwa/assets/icon-256x256.png?rev=1908485","svg":"https://ps.w.org/pwa/assets/icon.svg?rev=1908485"},"wporg":true},{"name":"MC4WP: Mailchimp for WordPress","slug":"mailchimp-for-wp","version":"4.8.6","author":"ibericode","author_profile":"https://profiles.wordpress.org/dvankooten","requires":"4.6","tested":"5.8","requires_php":"5.3","rating":96,"ratings":{"1":35,"2":10,"3":16,"4":35,"5":1277},"num_ratings":1373,"support_threads":46,"support_threads_resolved":43,"active_installs":2000000,"downloaded":35686558,"last_updated":"2021-08-04 7:14am GMT","added":"2013-06-19","homepage":"https://www.mc4wp.com/#utm_source=wp-plugin&utm_medium=mailchimp-for-wp&utm_campaign=plugins-page","short_description":"Mailchimp for WordPress, the #1 unofficial Mailchimp plugin.","description":"

Mailchimp for WordPress

\n

Allowing your visitors to subscribe to your newsletter should be easy. With this plugin, it finally is.

\n

This plugin helps you grow your Mailchimp lists and write better newsletters through various methods. You can create good looking opt-in forms or integrate with any existing form on your site, like your comment, contact or checkout form.

\n\n

Some (but not all) features

\n
    \n
  • \n

    Connect with your Mailchimp account in seconds.

    \n
  • \n
  • \n

    Sign-up forms which are good looking, user-friendly and mobile optimized. You have complete control over the form fields and can send anything you like to Mailchimp.

    \n
  • \n
  • \n

    Seamless integration with the following plugins:

    \n
      \n
    • Default WordPress Comment Form
    • \n
    • Default WordPress Registration Form
    • \n
    • Contact Form 7
    • \n
    • WooCommerce
    • \n
    • Gravity Forms
    • \n
    • Ninja Forms 3
    • \n
    • WPForms
    • \n
    • BuddyPress
    • \n
    • MemberPress
    • \n
    • Events Manager
    • \n
    • Easy Digital Downloads
    • \n
    • Give
    • \n
    • UltimateMember
    • \n
    \n
  • \n
  • \n

    A multitude of available add-on plugins and integrations:

    \n\n
  • \n
  • \n

    Well documented. Our knowledge base is updated daily.

    \n
  • \n
  • \n

    Developer friendly. For inspiration, check out our repository of example code snippets.

    \n
  • \n
\n
\n

Become a Premium user

\n

Mailchimp for WordPress has a Premium add-on which comes with several additional benefits.

\n
    \n
  • Multiple forms
  • \n
  • Advanced e-commerce integration for WooCommerce
  • \n
  • Email notifications
  • \n
  • An easy way to style your forms
  • \n
  • Detailed reports & statistics
  • \n
\n

View more Premium features

\n
\n

What is Mailchimp?

\n

Mailchimp is a newsletter service that allows you to send out email campaigns to a list of email subscribers. It is free for lists up to 2000 subscribers, which is why it is the newsletter-service of choice for thousands of businesses.

\n

This plugin allows you to tightly integrate your WordPress site with your Mailchimp account.

\n

If you are not yet using Mailchimp, creating an account is 100% free and only takes you about 30 seconds.

\n

Support

\n

Use the WordPress.org plugin forums for community support where we try to help all of our users. If you found a bug, please create an issue on Github where we can act upon them more efficiently.

\n

If you’re a premium user, please use the email address inside the plugin for support as that will guarantee a faster response time.

\n

Please take a look at the Mailchimp for WordPress knowledge base as well.

\n

Add-on plugins

\n

There are several add-on plugins available, which help you get even more out of your site.

\n

Translations

\n

You can help translate Mailchimp for WordPress into your language using your WordPress.org account.

\n

Development

\n

This plugin is being developed on GitHub. If you want to collaborate, please look at ibericode/mailchimp-for-wordpress.

\n

Customizing the plugin

\n

The plugin provides various filter & action hooks that allow you to modify or extend default behavior. We’re also maintaining a collection of sample code snippets.

\n","download_link":"https://downloads.wordpress.org/plugin/mailchimp-for-wp.4.8.6.zip","tags":{"email":"email","mailchimp":"mailchimp","marketing":"marketing","mc4wp":"mc4wp","newsletter":"newsletter"},"donate_link":"https://www.mc4wp.com/#utm_source=wp-plugin-repo&utm_medium=mailchimp-for-wp&utm_campaign=donate-link","icons":{"1x":"https://ps.w.org/mailchimp-for-wp/assets/icon-128x128.png?rev=1224577","2x":"https://ps.w.org/mailchimp-for-wp/assets/icon-256x256.png?rev=1224577"},"wporg":true},{"name":"Site Kit by Google","slug":"google-site-kit","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":"","ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":"","support_threads":"","support_threads_resolved":"","active_installs":"","downloaded":"","last_updated":"","added":"","homepage":"https://sitekit.withgoogle.com/","short_description":"

Site Kit is the official WordPress plugin from Google for insights about how people find and use your site. Site Kit is the one-stop solution to deploy, manage, and get insights from critical Google tools to make the site successful on the web. It provides authoritative, up-to-date insights from multiple Google products directly on the

\n

Read More

\n","description":"\n\n\n

Site Kit is the official WordPress plugin from Google for insights about how people find and use your site. Site Kit is the one-stop solution to deploy, manage, and get insights from critical Google tools to make the site successful on the web. It provides authoritative, up-to-date insights from multiple Google products directly on the WordPress dashboard for easy access, all for free.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2019/12/site-kit-by-google-logo-285x160.png","2x":"https://amp-wp.org/wp-content/uploads/2019/12/site-kit-by-google-logo-372x209.png","svg":""},"wporg":false},{"name":"Newspack Blocks","slug":"newspack-blocks","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":"","ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":"","support_threads":"","support_threads_resolved":"","active_installs":"","downloaded":"","last_updated":"","added":"","homepage":"https://github.com/Automattic/newspack-blocks","short_description":"

A collection of useful and easy to use Gutenberg based blocks, developed primarily for the Newspack project.

\n","description":"\n\n\n

A collection of useful and easy to use Gutenberg based blocks, developed primarily for the Newspack project.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2019/11/newspack_blocks-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2019/11/newspack_blocks-372x209.jpg","svg":""},"wporg":false},{"name":"Advanced Ads – Ad Manager & AdSense","slug":"advanced-ads","version":"1.27.0","author":"Thomas Maier, Advanced Ads GmbH","author_profile":"https://profiles.wordpress.org/webzunft","requires":"4.9","tested":"5.8","requires_php":"5.6","rating":98,"ratings":{"1":17,"2":1,"3":9,"4":21,"5":1181},"num_ratings":1229,"support_threads":69,"support_threads_resolved":63,"active_installs":100000,"downloaded":5145969,"last_updated":"2021-08-24 9:21am GMT","added":"2014-06-23","homepage":"https://wpadvancedads.com","short_description":"Manage and optimize all ad types. Support for Google AdSense Auto ads, Amazon, image banners,…","description":"

Are you looking for a simple ad manager plugin? These are the top arguments to use Advanced Ads:

\n
    \n
  • approved in publishing and ad optimization since 2009
  • \n
  • works with all ad types and networks, including Google AdSense, Google Ad Manager (formerly Google DoubleClick for Publishers, DFP), Amazon ads, or media.net ads
  • \n
  • most features to test and optimize ads
  • \n
  • unlimited ad units
  • \n
  • ads.txt support
  • \n
  • dedicated ad block for the block editor
  • \n
  • Google AdSense Partner, who implements all technical changes early and in 100% compliance with the Google AdSense policies
  • \n
  • the only advertising solution with Ad Health integration and Google AdSense violation checks
  • \n
  • best rated free support
  • \n
\n

This is what our users are saying about Advanced Ads:

\n
\n

We use this plugin to deliver rotating ads on a community news site, and it’s great. Both feature-rich and reliable, your imagination is the limit when it comes to the product you want to create for your users. We’ve delivered over a million ad impressions since we launched less than a year ago, using a combination of sidebar, top, sticky and in-content placements — both HTML5 and images. Advanced Ads makes it easy for our small team to deliver a good experience to our users and our advertisers.
\n mytown304 on wp.org

\n
\n

Would you like to know if there is a certain feature, what the optimized setup would be, or how to implement your client’s demands? Just open a thread in the forum!

\n

Advanced Ads allowed us to grow from 0 to 100 MM monthly ad impressions. Benefit from our experience as a publisher and monetize your website today!

\n

Full Feature List.

\n

ad management

\n
    \n
  • create and display unlimited ad units
  • \n
  • rotate ads
  • \n
  • schedule ads and set start time and expiration date
  • \n
  • target ads by content and user groups
  • \n
  • inject ads into posts and pages automatically without coding
  • \n
\n

ad types

\n

choose between different ad types that enable you to:

\n
    \n
  • insert ads and banners from all ad and affiliate networks (e.g., Google AdSense, Amazon, BuySellAds, Google Ad Manager (formerly Google DoubleClick for Publishers, DFP), Ezoic, media.net, Booking.com, Tradedoubler, Awin, Getyourguide, The Moneytizer, Infolinks…)
  • \n
  • dedicated support for all types of Google AdSense ads, including text and display ads, native ads (In-article, In-feed, matched content), Auto ads, and Auto ads for AMP
  • \n
  • display images and image banners
  • \n
  • create content-rich ads with the WordPress TinyMCE editor
  • \n
  • insert contextual Amazon Native Shopping Ads
  • \n
  • inject HTML, CSS, Javascript or PHP code
  • \n
  • use shortcodes within ads (to also deliver advertisements from another ad plugin like Ad Inserter, AdRotate, Quick AdSense, WP Bannerize, or the Google AdSense Plugin WP QUADS)
  • \n
\n

display ads for WP

\n
    \n
  • auto-inject ads via placements
  • \n
  • use functions to display ads in template files
  • \n
  • use shortcodes to place ads manually in post content
  • \n
  • show ads in the sidebar and in widgets
  • \n
  • disable all ads on specific pages
  • \n
  • display multiple ads (ad blocks)
  • \n
  • display a customizable ad label, e.g., “Advertisements” above each banner ad
  • \n
\n

display conditions

\n

show ads based on conditions like:

\n
    \n
  • individual posts, pages, and other post types
  • \n
  • posts by category, tags, taxonomies, author, and age
  • \n
  • archive pages by category, tags, taxonomies
  • \n
  • special page types like 404, attachment and front page
  • \n
  • hide ads on secondary queries (e.g., posts in sidebars)
  • \n
  • display or hide banners within the post feed
  • \n
  • hide all ads from specific page types, e.g., 404 pages, feed
  • \n
  • hide ads from bots and web crawlers
  • \n
\n

visitor conditions

\n

serve ads by conditions based on the visitor. List of all visitor conditions

\n
    \n
  • display or hide a banner by device: mobile and tablet or desktop
  • \n
  • display or hide a banner by role and for logged-in visitors
  • \n
  • advanced visitor conditions: previously visited URL (referrer), user capability, browser language, browser and device, URL parameters included in Pro
  • \n
  • display ads by geolocation with the Geo Targeting add-on
  • \n
  • display ads by browser width with the Responsive add-on
  • \n
\n
\n

Fantastic plugin and outstanding support
\n I tried at least three other ad plugins for WordPress and ‘Advanced Ads’ is by and far the best one. Last but not least in the support. The first port of call are a number of excellent tutorials. And finally the hands on support. I don’t quite know how he does it but the speed and depth of responses are absolutely amazing.
\n djsawyer on wp.org

\n
\n

ad injection | placements

\n

Placements to insert ads in pre-defined positions in your theme and content. List of all placements

\n
    \n
  • ads after any given paragraph, headline, image, or other HTML element
  • \n
  • ads at the top or bottom of the post content
  • \n
  • ads before closing </head> tag
  • \n
  • ads in the footer
  • \n
  • test placements against each other with Pro (A/B testing)
  • \n
  • many more ad positions with add-ons
  • \n
  • automatic insertion of any kind of code into header or footer, not only advertising
  • \n
\n

mobile devices

\n
    \n
  • display ads on mobile and tablets or desktop only
  • \n
  • display responsive image ads
  • \n
  • ads for specific browser sizes only using Responsive Ads
  • \n
  • inserting ads on AMP pages with Responsive Ads
  • \n
\n

Google AdSense

\n

Amazing features of the most powerful and easy Google AdSense plugin.

\n
    \n
  • unlimited Google AdSense ads banners
  • \n
  • pull ad units directly from your Google AdSense account
  • \n
  • show AdSense revenue in WP Admin
  • \n
  • change settings of your Google AdSense ads directly from your WordPress backend
  • \n
  • supports all Google AdSense ad types, including Google AdSense display ads, native ads like In-feed ads, In-article ads, matched content ads, Google AdSense Auto ads, and Google AdSense Auto ads for AMP
  • \n
  • change type and sizes of AdSense ads without going into your Google AdSense account
  • \n
  • hide Google AdSense advertisements on 404 pages by default (to comply with Google AdSense terms)
  • \n
  • insert Google AdSense code for verification and AdSense Auto Ads
  • \n
  • enable AdSense Auto ads on AMP
  • \n
  • easy Ad Health integration and Google AdSense violation checks
  • \n
  • option to remove the Google AdSense background color
  • \n
  • place Google AdSense In-feed ads using the also free In-feed add-on
  • \n
  • assistant for exact sizes of responsive Google AdSense ads with the Responsive add-on
  • \n
  • convert Google AdSense ads into AMP ads automatically with the Responsive add-on
  • \n
  • ads.txt generated with the correct AdSense information automatically
  • \n
  • works along with Google Site Kit or can replace it if you want to control your ad placements
  • \n
\n

\n

\n

Like j4ckson185, there are thousands of happy AdSense users:

\n
\n

Your app is awesome, congratulations! Google Adsense suggests using your app on its official website, it’s incredible!

\n
\n

ads.txt

\n
    \n
  • generates an ads.txt with custom content
  • \n
  • adds the content for AdSense to the ads.txt automatically
  • \n
\n

\n

\n

ad blocker

\n
    \n
  • basic features to prevent ads from being removed by AdBlock and other ad blockers
  • \n
  • prevent ad blockers from breaking sites where plugin scripts are running
  • \n
  • ad blocking detection: show alternative content to ad block users with Pro and improve the monetization of your website
  • \n
\n

Learn more on the plugin homepage.

\n

Thank you for motivating us with your positive review.

\n

Localizations: Arabic, Chinese, Czech, Danish, Dutch, English, French, German, Hungarian, Italian, Japanese, Norwegian, Polish, Portuguese, Russian, Slovak, Spanish, Turkish, Vietnamese

\n
\n

Add-Ons

\n
    \n
  • all add-ons include priority email support
  • \n
  • Advanced Ads Pro – powerful tools for ad optimizations: cache-busting, more placements, lazy loading, ad blocker module, click fraud protection, and many more
  • \n
  • Tracking – track ad impressions and ad clicks with local methods or Google Analytics
  • \n
  • Responsive Ads – target ads to specific browser sizes and create ads for AMP
  • \n
  • Google Ad Manager Integration – a quick and error-free way to load ad units from your Google Ad Manager (formerly Google DoubleClick for Publishers, DFP) account without touching any ad codes
  • \n
  • Geo Targeting – display ads based on the geo location of the visitor
  • \n
  • Sticky Ads – increase click rates with fixed, sticky, and anchor ads
  • \n
  • Fixed Widget for WordPress – turn sidebar widgets into performant fixed sticky ads
  • \n
  • PopUp and Layer Ads – display ads and other content in layers and popups
  • \n
  • Selling Ads – allows you to sell ads on your website fully automated, including payments and advertiser profiles.
  • \n
  • Ad Slider – create a simple slider from your ads
  • \n
\n
\n

If you have problems with Advanced Ads, please reach out to our support or open a new topic in our forums on wordpress.org
\n.

\n

Integrations

\n

Advanced Ads integrates with plenty of other plugins:

\n\n","download_link":"https://downloads.wordpress.org/plugin/advanced-ads.1.27.0.zip","tags":{"ad-manager":"ad manager","ad-rotation":"ad rotation","ads":"ads","adsense":"adsense","banner":"banner"},"donate_link":"","icons":{"1x":"https://ps.w.org/advanced-ads/assets/icon-128x128.gif?rev=2293174","2x":"https://ps.w.org/advanced-ads/assets/icon-256x256.gif?rev=2293174"},"wporg":true},{"name":"Syntax-highlighting Code Block (with Server-side Rendering)","slug":"syntax-highlighting-code-block","version":"1.3.1","author":"Weston Ruter","author_profile":"https://profiles.wordpress.org/westonruter","requires":"5.5","tested":"5.7.2","requires_php":"5.6","rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":17},"num_ratings":17,"support_threads":1,"support_threads_resolved":1,"active_installs":1000,"downloaded":11948,"last_updated":"2021-03-09 8:51pm GMT","added":"2019-07-30","homepage":"https://github.com/westonruter/syntax-highlighting-code-block","short_description":"Extending the Code block with syntax highlighting rendered on the server, thus being AMP-compatible and…","description":"

This plugin extends the Code block in WordPress core to add syntax highlighting which is rendered on the server. Pre-existing Code blocks on a site are automatically extended to include syntax highlighting. Doing server-side syntax highlighting eliminates the need to enqueue any JavaScript on the frontend (e.g. Highlight.js or Prism.js) and this ensures there is no flash of unhighlighted code (FOUC?). Reducing script on the frontend improves frontend performance and it also allows for the syntax highlighted code to appear properly in AMP pages as rendered by the official AMP plugin (see also ampproject/amp-wp#972) or when JavaScript is turned off in the browser.

\n

In addition to not adding any JavaScript to the frontend, the stylesheets needed for styling the Code block will only be added to the page if there is a Code block present. The stylesheets are added inline when the Code block is rendered, ensuring that they do not block rendering of any content higher in the page. If stylesheets fail to load for any reason, the block simply renders without styling, with one key exception: highlighted lines are wrapped in mark elements so they’ll get highlighted regardless, including in RSS Feeds and posts syndicated in email (as long as the mark element is supported in the client).

\n

This extended Code block uses language auto-detection to add syntax highlighting, but you can override the language in the block’s settings sidebar. (There is currently no syntax highlighting of the Code block in the editor.) The plugin supports all programming languages that highlight.php supports (being a port of highlight.js). The Code block also is extended to support specifying the aforementioned highlighted lines. There is also a checkbox for whether to show line numbers on the frontend (with the numbers being non-selectable). Lastly, given inconsistencies across themes as to whether lines in a Code block should be wrapped, this plugin adds styling to force them to no-wrap by default, with a checkbox to opt-in to wrapping when desired.

\n

For advanced usage, please see the plugin wiki.

\n

This plugin is developed on GitHub. See list of current issues with the plugin. Please feel free to file any additional issues or requests that you may come across. Pull requests are welcome.

\n

Credits

\n

This is a fork of Code Syntax Block by Marcus Kazmierczak (mkaz), which is also available on WordPress.org. Copyright (c) 2018 Marcus Kazmierczak. Licensed under GPL 2.0 or later.

\n

highlight.php is released under the BSD 3-Clause License. Copyright © 2006-2013, Ivan Sagalaev (maniac@softwaremaniacs.org), highlight.js (original author). Copyright © 2013, Geert Bergman (geert@scrivo.nl), highlight.php

\n","download_link":"https://downloads.wordpress.org/plugin/syntax-highlighting-code-block.1.3.1.zip","tags":{"block":"block","code":"code","code-highlighting":"code highlighting","code-syntax":"code syntax","syntax-highlight":"syntax highlight"},"donate_link":"","icons":{"1x":"https://ps.w.org/syntax-highlighting-code-block/assets/icon.svg?rev=2131108","2x":"https://ps.w.org/syntax-highlighting-code-block/assets/icon-256x256.png?rev=2131108","svg":"https://ps.w.org/syntax-highlighting-code-block/assets/icon.svg?rev=2131108"},"wporg":true},{"name":"Contact Form by WPForms – Drag & Drop Form Builder for WordPress","slug":"wpforms-lite","version":"1.6.9","author":"WPForms","author_profile":"https://profiles.wordpress.org/jaredatch","requires":"4.9","tested":"5.8","requires_php":"5.5","rating":98,"ratings":{"1":210,"2":46,"3":54,"4":219,"5":9567},"num_ratings":10096,"support_threads":96,"support_threads_resolved":83,"active_installs":4000000,"downloaded":81431271,"last_updated":"2021-08-26 11:06am GMT","added":"2016-03-14","homepage":"https://wpforms.com","short_description":"The best WordPress contact form plugin. Drag & Drop online form builder that helps you create beautiful contact forms with just a few clicks.","description":"

WordPress Contact Form Builder Plugin

\n

We believe that you shouldn’t have to hire a developer to create a WordPress contact form. That’s why we built WPForms, a drag & drop WordPress form builder that’s EASY and POWERFUL.

\n

WPForms allows you to create beautiful contact forms, feedback form, subscription forms, payment forms, and other types of forms for your site in minutes, not hours!

\n

At WPForms, user experience is our #1 priority. Our pre-built form templates and workflows make WPForms the most beginner friendly contact form plugin in the market.

\n

The WPForms Challenge guides you through creating your first form in under 5 minutes. We walk you through using the form builder all the way to adding a form to a page on your site! WPForms includes integrations for popular page builders like the WordPress Block Editor (Gutenberg), Classic Editor, Elementor, and Divi making the whole process seamless.

\n

WPForms is a 100% mobile responsive contact form solution, so your contact forms will always look great on all devices (mobile, tablet, laptop, and desktop).

\n

WPForms’ contact forms are also highly optimized for web and server performance because we understand the importance of speed when it comes to SEO, marketing, and conversion. We can honestly say that WPForms is one of the fastest WordPress contact form builder plugins in the world.

\n
\n

WPForms Pro
\n This plugin is the lite version of the WPForms Pro plugin that comes with all the contact form features you will ever need including email subscription forms, multi-page contact forms, file uploads, conditional logic, payment integrations, form templates, and tons more. Click here to purchase the best premium WordPress contact form plugin now!

\n
\n

We took the pain out of creating contact forms and made it easy. Here’s why smart business owners, designers, and developers love WPForms, and you will too!

\n

\n

Drag & Drop Contact Form Builder

\n

We were tired of the bloated and buggy contact form builder plugins. That’s why we built WPForms to adapt to your workflow and allow you to create custom contact forms in minutes. By using our easy to use drag and drop online form builder, you can easily add custom form fields, rearrange them, and basically create a complete contact form in 5 minutes or less.

\n

But don’t just take our word. See what one of the WordPress experts are saying:

\n
\n

WPForms is by far the easiest form plugin to use. My clients love WPForms and it’s one of the few plugins they can use without any training. As a developer I appreciate how fast, modern, clean and extensible it is.
\n Bill Erickson – Expert WordPress Consultant

\n
\n

Pre-built Form Templates

\n

Building contact forms in WordPress can be time consuming. Why?

\n

Because every other WordPress contact form builder plugin requires you to build your contact form from scratch. The truth is it’s often not necessary to create a contact form completely from scratch unless you really want to.

\n

Whether you’re looking to create a simple contact form, marketing form, request a quote form, donation form, payment order form, registration form, or a subscription form, we have a form template for you inside our contact form builder.

\n

WPForms comes with pre-built form templates to help you save time. You can add, remove, or re-arrange fields as necessary.

\n

See 100+ Pre-Made WPForms Form Template Demo

\n

Mobile Ready, SEO Friendly and Optimized for Speed

\n

WPForms’ contact forms are 100% responsive and mobile-friendly by default. We also optimized every query on the front-end and the back-end to ensure maximum speed – Yes, WPForms is one of the fastest WordPress contact form plugin.

\n

You can embed your contact form on any page with optimized title and description. With the speed and proper formatting, WPForms is also one of the most SEO friendly contact form plugin.

\n

All the Fields & Features that You Need to Succeed

\n

From star ratings to file uploads to multi-page contact forms with progress bar, we have all the fields you need.

\n

You can easily integrate your contact forms with an email marketing service or collect payments for bookings and orders. WPForms allows you to do it all.

\n

The best part is, you can do it all without hiring a developer.

\n

See what one business owner has to say about WPForms’ contact form:

\n
\n

As a business owner, time is my most valuable asset. WPForms allow me to create smart contact forms with just a few clicks. With their pre-built form templates and the drag & drop builder, I can create a new form that works in less than 2 minutes without writing a single line of code. Well worth the investment.
\n David Henzel – Co-founder of MaxCDN

\n
\n

Surveys & Polls

\n

Along with contact form, you can also use WPForms to create surveys and polls.

\n

Our WordPress Survey plugin addon comes with smart survey fields including likert scale, star ratings, multiple choice, Net Promoter Score (NPS), and more, so you can create custom survey forms like Survey Monkey (without the high costs).

\n

WPForms offer the best-in class survey reporting. You can use our interactive reports to customize the graphs, export them for your presentations, and even display the aggregate results to your users.

\n

The best part about WPForms survey reports is that it can retroactively work on any old contact form or feedback survey contact form created with WPForms.

\n

Thousands of businesses love WPForms surveys for creating employee feedback form, customer feedback form, online petition form, and more.

\n

You can also use the surveys & polls addon to easily create a poll on your site. To save you time when creating a user poll, we have added a built-in poll forms template. Our poll feature offers real-time reports, so you can share poll results with the user immediately after they submit their vote.

\n

Just like the contact form, you can embed your surveys and polls inside any post, page, or widget area in WordPress.

\n

Membership and Default WordPress Forms

\n

Aside from building simple contact forms which every WordPress site needs, WPForms also helps you create better default WordPress forms.

\n

For example, you can use WPForms to create custom WordPress login forms and custom WordPress user registration forms which are great for membership sites.

\n

For membership sites, you can also use WPForms to create a password-protected contact form or even a members only contact form which is restricited to logged-in users only.

\n

Even if you’re not using a WordPress membership plugin, you can use WPForms to create membership registration forms, online RSVP forms, and other address book contact forms.

\n

Bloggers and publishers can use our WordPress post submission forms to accept guest posts, testimonials contact form to collect testiomnials, and partnership agreement forms to grow their business.

\n

Payment Form, Donation Form, Booking Form, and More

\n

While WPForms started out as a contact form plugin, it has evolved into a powerful custom forms solution that you can use to create a payment form, donation form, registration form, online booking form, mobile form, and basically any type of custom form you need.

\n

WPForms integrates with both PayPal and Stripe, so you can easily create a credit card payment form to accept payments on your website. If you’re using SSL, then you can use our Stripe Payment form to accept credit card payments. Alternatively you can use our PayPal payment form to make a donation form and accept payments online.

\n

Aside from simple order forms, business owners also use WPForms to create custom product purchase forms, t-shirt order forms, online booking forms, and more.

\n

We understand that sometimes you may need to create a contact form that require a signature. WPForms comes with a signature field to collect user signature on your WordPress forms or even create custom signature forms.

\n

You can do all of this while still using the same easy-to-use contact form builder that’s loved by over 4 million users.

\n
\n

I am so impressed with this plugin. I decided to give it a shot over some of the other form plugins, and I am so glad I did. It works well, is so easy to use and customize. The support is amazing on top of it all. I got the pro version because I was so pleased. Highly recommend.
\n Micky73 – WordPress user

\n
\n

Forms that are Optimized for Conversion and Results

\n

With our Form Pages addon, you can create distraction-free custom form landing pages like Google Forms and Wufoo right inside WordPress, so you can increase conversions without the high costs (See Form Pages Demo).

\n

To improve form completion rate, we created Conversational Forms® which helps you make your generic feedback form and other custom contact forms feel more human by adding an interactive form layout. Our conversational forms are similar to Typeform without the high subscription costs (See Conversational Forms Demo).

\n

WPForms also has other conversion optimization features such as our smart form logic that lets you create dynamic contact forms where fields change based on user’s answer, multi-page contact forms with progress bar, and other advanced contact forms.

\n

WPForms form analytics integration with MonsterInsights allow you to easily track your lead capture forms, newsletter signup forms, request a quote contact form, and other important forms on your site.

\n

Easy to Customize and Extend

\n

You can easily customize your contact forms with our section dividers, HTML blocks, and custom CSS.

\n

If you’re using Elementor or Divi page builders our native integrations let you easily customize the style of your forms.

\n

We also knew that our developer friends may want to extend simple contact forms further. That’s why WPForms come with tons of hooks and filters to create custom functionality.

\n

Since contact forms are essential for marketing, WPForms is a must have plugin for every website!

\n

Full WPForms Feature List

\n
    \n
  • Online Form Builder – Our powerful drag & drop contact form builder allows you to easily create WordPress contact forms and other online forms in just a few minutes without writing any code.
  • \n
  • 100% Responsive – Mobile Friendly contact forms.
  • \n
  • GDPR Friendly – Make your contact form GDPR compatible with just a few clicks.
  • \n
  • Form Templates – Use our pre-built form templates to save time. Never start from scratch again (see all form templates demos).
  • \n
  • Spam Protection – WPForms provides smart anti-spam protection out-of-the-box, plus direct integrations with hCaptcha and Google reCAPTCHA.
  • \n
  • Instant Form Notification – Quickly respond to incoming inquiries with our instant contact form notification system.
  • \n
  • Smart Form Confirmation – Show a custom success message, or redirect users to a custom thank you page.
  • \n
  • File Uploads – Collect files and media through your contact forms with File Uploads.
  • \n
  • Multi-Page Forms – Split long forms into multiple pages with progress bar to improve user experience.
  • \n
  • Smart Conditional Logic – Show or hide fields and contact form sections based on user behavior.
  • \n
  • Signature Forms – Create signature forms or add the signature field to your contact form, application form, booking form, etc.
  • \n
  • User Registration Forms – Create custom user registration form and custom login form in WordPress.
  • \n
  • Post Submissions – Collect user-submitted content in WordPress with our front-end post submission form. Great for guest posts, testimonials, business directory, listings, etc.
  • \n
  • Geolocation – Display location information about your users.
  • \n
  • Custom Captchas – Create custom captchas for your contact form.
  • \n
  • Surveys and Polls – Easily create surveys forms and analyze the data with interactive reports.
  • \n
  • Form Abandonment – Unlock more leads and grow your business with partial-form submission.
  • \n
  • Form Locker – Manage form permissions and add access control rules including password-protected forms, members only forms, limit contact form entry per person, close form after specific date / time, etc.
  • \n
  • Offline Forms – Let your visitors save their entered data offline and submit when their internet connection is restored.
  • \n
  • Form Landing Pages – Create “distraction-free” form landing pages to boost conversions. Great Google Forms and Wufoo alternative.
  • \n
  • Conversational Forms – Interactive form layout that makes your form feels more human and boost overall completion rate. Great for surveys and registration forms. Perfect Typeform alternative for WordPress without the high costs.
  • \n
  • Webhooks – Send form entry data to secondary tools and external services. No code required, and no need for a third party connector.
  • \n
  • User Journey Reporting – Discover the steps your visitors take before they submit your forms. Right in the WordPress dashboard, you can easily see the content that’s driving the most valuable form conversions.
  • \n
\n

Integrations

\n
    \n
  • PayPal Payment Forms – Create PayPal forms to easily collect payments, donations, and online orders.
  • \n
  • Stripe Forms – Easily collect credit card payments, donations, and online orders with our Stripe addon.
  • \n
  • Authorize.Net Forms – Connect your WordPress site with Authorize.Net to collect payments, donations, and online orders.
  • \n
  • Mailchimp Forms – Create Mailchimp newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • AWeber Forms – Create AWeber newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • Campaign Monitor Forms – Create Campaign Monitor newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • GetResponse Forms – Create GetResponse newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • Constant Contact Forms – Create Constant Contact newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • Drip Forms – Create Drip newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • ActiveCampaign Forms – Add contacts to your ActiveCampaign account, record events, add notes to contacts, and more.
  • \n
  • Sendinblue Forms – Create Sendinblue forms to automate your marketing and engage your subscribers.
  • \n
  • Salesforce Forms – Easily send your WordPress form contacts and leads to your Salesforce CRM account.
  • \n
  • Zapier Addon – Connect your WordPress forms with over 1000+ apps. Route your contact form data to your favorite CRM, email marketing service, etc.
  • \n
\n

After reading this feature list, you can probably imagine why WPForms is the best WordPress contact form plugin in the market.

\n

Give WPForms a try.

\n

Want to unlock more features? Upgrade to our Pro version.

\n

Credits

\n

This plugin is created by Jared Atchison and Syed Balkhi.

\n

Branding Guideline

\n

WPForms® is a registered trademark of WPForms LLC. When writing about the contact form plugin by WPForms, please make sure to uppercase the initial 3 letters.

\n
    \n
  • WPForms (correct)
  • \n
  • WP Forms (incorrect)
  • \n
  • wpforms (incorrect)
  • \n
  • wpform (incorrect)
  • \n
\n

What’s Next

\n

If you like this plugin, then consider checking out our other projects:

\n
    \n
  • OptinMonster – Get More Email Subscribers with the most popular conversion optimization plugin for WordPress.
  • \n
  • MonsterInsights – See the stats that matter and grow your business with confidence. The best Google Analytics plugin for WordPress.
  • \n
  • SeedProd – Create beautiful landing pages with our powerful drag & drop landing page builder.
  • \n
  • WP Mail SMTP – Improve email deliverability for your contact form with the most popular SMTP plugin for WordPress.
  • \n
  • RafflePress – Best WordPress giveaway and contest plugin to grow traffic and social followers.
  • \n
  • Smash Baloon – #1 social feeds plugin for WordPress – display social media content in WordPress without code.
  • \n
  • AIOSEO – The original WordPress SEO plugin to help you rank higher in search results (trusted by over 2 million sites).
  • \n
  • Push Engage – Connect with visitors after they leave your website with the leading web push notification plugin.
  • \n
  • TrustPulse – Add real-time social proof notifications to boost your store conversions by up to 15%.
  • \n
\n

Visit WPBeginner to learn from our WordPress Tutorials and find out about other best WordPress plugins.

\n

Notes

\n

WPForms is absolutely, positively the most beginner friendly WordPress contact form plugin on the market. It is both easy and powerful.

\n

We took the pain out of creating online forms and made it easy. Check out all WPForms features.

\n

Also, I’m the founder of WPBeginner, the largest WordPress resource site for beginners. It was a huge priority for me to make a WordPress contact form plugin that beginners can use without any training.

\n

I feel that we have done that here. I hope you enjoy using WPForms.

\n

Thank you

\n

Syed Balkhi

\n","download_link":"https://downloads.wordpress.org/plugin/wpforms-lite.1.6.9.zip","tags":{"contact-form":"contact form","contact-form-plugin":"contact form plugin","custom-form":"custom form","form-builder":"form builder","forms":"forms"},"donate_link":"","icons":{"1x":"https://ps.w.org/wpforms-lite/assets/icon.svg?rev=2574198","2x":"https://ps.w.org/wpforms-lite/assets/icon-256x256.png?rev=2574201","svg":"https://ps.w.org/wpforms-lite/assets/icon.svg?rev=2574198"},"wporg":true},{"name":"MonsterInsights – Google Analytics Dashboard for WordPress (Website Stats Made Easy)","slug":"google-analytics-for-wordpress","version":"7.18.0","author":"MonsterInsights","author_profile":"https://profiles.wordpress.org/chriscct7","requires":"3.8.0","tested":"5.8","requires_php":"5.2","rating":92,"ratings":{"1":194,"2":39,"3":34,"4":75,"5":2076},"num_ratings":2418,"support_threads":8,"support_threads_resolved":8,"active_installs":3000000,"downloaded":96767658,"last_updated":"2021-08-10 9:06pm GMT","added":"2007-09-14","homepage":"https://www.monsterinsights.com/?utm_source=liteplugin&utm_medium=pluginheader&utm_campaign=pluginurl&utm_content=7%2E0%2E0","short_description":"The best free Google Analytics plugin for WordPress. See how visitors find and use your website, so you can grow your business.","description":"

Google Analytics Plugin for WordPress

\n

With over 3 million active installs, MonsterInsights is the most popular Google Analytics plugin for WordPress.

\n

We believe that it’s easy to double your traffic and sales when you know exactly how people find and use your website. MonsterInsights shows you the analytics and stats that matter, so you can grow your business with confidence.

\n

At MonsterInsights, we make it “effortless” to properly connect your WordPress site with Google Analytics, so you can start making data-driven decisions to grow your business.

\n

Unlike other Google Analytics plugins, MonsterInsights allow you to enable all advanced Google Analytics tracking features with just a few clicks (no need to hire a developer).

\n

The best part is that MonsterInsights comes with an analytics dashboard for WordPress that shows you actionable analytics reports right inside your WordPress dashboard. We have created customized reports that eliminate the fluff and only show you the stats that matter, so you can see exactly what’s working and what’s not!

\n

Simply put, MonsterInsights is the most complete Google Analytics plugin for WordPress that’s both EASY and POWERFUL.

\n

That’s why millions of small businesses and top companies like Microsoft, Bloomberg, FedEx, Yelp, Subway, etc. use MonsterInsights to setup Google Analytics on their WordPress sites.

\n
\n

MonsterInsights Pro
\n This plugin is the lite version of MonsterInsights Pro plugin that comes with all the tracking features you will ever need including events tracking, ecommerce tracking, custom dimensions tracking, page speed reports, popular post tracking, custom dimensions, affiliate link tracking, and tons more. Click here to purchase the best premium Google Analytics plugin for WordPress now!

\n
\n

We took the pain out of installing Google Analytics in WordPress and made it easy. Here’s why over 3 million smart business owners, designers, and developers love MonsterInsights, and you will too!

\n

\n

Quick & Easy Google Analytics Setup

\n

Properly setting up Google Analytics is complicated. You have to either hire a developer or learn how to add advanced code snippets to your website in many different areas. This process can take days or weeks…and can even break your website!

\n

With MonsterInsights, we made it “effortless” to properly setup Google Analytics in WordPress. Yes, you can enable all advanced Google Analytics features with just a few clicks.

\n

If you can point-and-click, then you can set up Google Analytics inside WordPress and start seeing insights in under 15 minutes (no code necessary).

\n

We keep up with all Google Analytics updates, so you can sleep well at night knowing that your website will always stay up to date with the newest features.

\n

See what one business owner is saying about MonsterInsights:

\n
\n

It just works. Really easy way to insert Google Analytics tracking code and keep it there when switching themes. No need to copy/paste code anywhere. This is the best way to handle Google Analytics in WordPress.
\n Steven Gliebe

\n
\n

Google Analytics Dashboard + Real Time Stats

\n

Our goal at MonsterInsights is to make Google Analytics easy and accessible for everyone.

\n

We understand that Google Analytics has a steep learning curve which often prevents small business owners from making informed decisions to grow their business.

\n

That’s why MonsterInsights comes with a built-in Google Analytics Dashboard for your WordPress site, so you can see all the useful information about your visitors right inside your WordPress dashboard without needing to login somewhere else.

\n

We have even created customized reports to help you filter through the noise and see the stats that really matter!

\n
    \n
  • \n

    Audience Report helps you get to know your visitors in a whole new way. It shows you detailed insights like which country your visitors are coming from, what are they most interested in, which device are they using, their age, gender, and a whole lot more. You can use this demographics report and audience clues to tweak your website design and content accordingly.

    \n
  • \n
  • \n

    **Publishers Report ** helps you understand which pages your visitors are arriving, and which pages they are leaving from. Designed specifically for blogs and other resource sites, this powerful report will show you which outbound links are getting clicked so you can easily optimize for higher conversions.

    \n
  • \n
  • \n

    Behavior Report shows you exactly how people find your website, which keywords did they search for, who referred them, what did they click on your site, and more. You can use these useful stats to identify low-hanging fruits, new partnership opportunities, and promotional areas to focus on.

    \n
  • \n
  • \n

    Content Report shows you stats on exactly which content gets the most visits, so you can stop guessing and start creating content that gets more traffic and conversion.

    \n
  • \n
  • \n

    Ecommerce Report shows you important store stats like total revenue, conversion rate, average order value, top referral sources, and more (all in one place).

    \n
  • \n
  • \n

    Forms Report shows you conversion stats for various contact forms and lead forms on your website, so you can improve the conversions to grow your business.

    \n
  • \n
  • \n

    Search Console Report shows you exactly how well your website is ranking in Google, so you can further optimize your SEO to grow your organic traffic.

    \n
  • \n
  • \n

    Custom Dimensions Report helps you dig deeper by showing you useful stats like who are your most popular authors, what are the best publication times, which are your most popular categories or tags, how well are your Yoast focus keywords and SEO score performing, and more.

    \n
  • \n
  • \n

    Site Speed Report makes it easy to track pagespeed insights and loading times for your website and get the information you need to improve user experience and your SEO rankings.

    \n
  • \n
\n

Our custom Google Analytics Dashboard reports are based on over 12+ years of online business experience. We built MonsterInsights to be the Google Analytics plugin that we wish we had.

\n

We currently use MonsterInsights on all our portfolio companies which include both media sites generating tens of millions of pageviews and eCommerce sites generating millions in sales.

\n

That’s why we can confidently say that MonsterInsights is the ultimate Google Analytics Shortcut for seeing the stats that matter and making data-driven decisions to grow your business.

\n
\n

I love being able to drill down into the analytics via the reporting feature. I have the PRO version and it makes a big difference what you can analyze. I’m glad that I can integrate with Pretty Links too!
\n Kim Beasley – MonsterInsights user

\n
\n

Google Analytics Enhanced Ecommerce Tracking Made Easy

\n

Google Analytics Enhanced Ecommerce tracking is a powerful feature that lets you track user behavior across your online store starting from product views to checkout page to thank you page and beyond.

\n

With MonsterInsights’ easy WooCommerce integration, you can setup WooCommerce analytics with literally 1-click.

\n

Once you have enabled WooCommerce tracking, MonsterInsights will show you all important WooCommerce metrics in a single dashboard including WooCommerce conversion rate, top products in your WooCommerce store, total transactions, total revenue, average order value, top referral sources, and more.

\n

Our WooCommerce analytics report also includes other detailed WooCommerce event tracking data like total add to carts, total removed from cart, time to purchase, and sessions to purchase.

\n

For those who want to go beyond our WooCommerce stats dashboard, you can easily open up the Google Analytics dashboard to combine WooCommerce data with other secondary dimensions and filters to find exactly what you’re looking for.

\n

Aside from WooCommerce Google Analytics integration, MonsterInsights’ eCommerce addon also offers seamless integration for the Easy Digital Downloads plugin.

\n

Our Easy Digital Downloads Google Analytics integration allows you to set up Enhanced Ecommerce Tracking on your store with just 1-click.

\n

Simply put, MonsterInsights’ Enhanced Ecommerce for WordPress feature is by far the easiest and most powerful in the market.

\n

Google Analytics + GDPR Compliance

\n

MonsterInsights helps make Google Analytics GDPR compliance easier for business owners.

\n

Our EU compliance addon allows you to:

\n
    \n
  • Anonymize IP in Google Analytics
  • \n
  • Disable the Demographics and Interest Reports for Remarketing and Advertising
  • \n
  • Disable UserID and author name tracking
  • \n
  • Enable the ga() compatibility mode
  • \n
  • Integrate with Cookie Notice and CookieBot plugins to collect user consent before tracking
  • \n
  • Integrate with Google AMP Consent Box before enable tracking
  • \n
  • Integrate with Google Analytics’s Chrome browser opt-out extension and built-in cookie opt-out system
  • \n
  • Offer Easy Opt Out link for Google Analytics tracking
  • \n
\n

While no single plugin can guarantee 100% GDPR compliance in WordPress, MonsterInsights goes to great length in helping business owners with GDPR compliance.

\n

For more details, see: GDPR and MonsterInsights – Everything You Need to Know.

\n

Universal Tracking + Google Analytics for AMP and Instant Articles

\n

MonsterInsights uses Google Analytics universal tracking, so you can track your users across devices and platforms.

\n

Accelerated Mobile Pages (AMP) is a project by Google that helps you speed up your website. However if you don’t set it up properly, Google AMP can cause you to lose your website analytics. Our Google Analytics AMP integration allows you to have accurate tracking on all AMP enabled pages. It works seamlessly with AMP for WordPress plugin.

\n

We also offer 1-click Google Analytics integration with Facebook Instant Articles.

\n

At MonsterInsights, we always stay ahead of the curve in helping you integrate WordPress with the latest Google Analytics tracking features.

\n
\n

Analytics for PROs! This plugin brings it all, great features and helpful info to easily see what you are doing.
\n Frank van der Sluijs

\n
\n

Google AdSense Tracking and Affiliate Link Tracking

\n

With MonsterInsights Ads tracking addon, publishers can easily track the performance of their Google AdSense Ads inside their Google Analytics dashboard.

\n

Our affiliate link tracking makes it easy for bloggers and affiliate marketers to track their affiliate links with Google Analytics.

\n

MonsterInsights uses event tracking for all WordPress outbound link tracking which is far more accurate than any built-in WordPress analytics solution.

\n

Unlike other WordPress analytics plugin, our Google Analytics affiliate link tracking does NOT slow down your website because all events are recorded via JavaScript and sent straight to your account.

\n

Most other WordPress stats plugin track data on your WordPress hosting server which slows down your website and does not scale for larger websites.

\n

Since our affiliate link tracking uses Google Analytics’ powerful servers, we can skip WordPress entirely.

\n

MonsterInsights’ affiliate link tracking feature works with all WordPress affiliate link management plugins including Pretty Links, Thirsty Affiliates, and others.

\n

Custom Dimensions Tracking, Custom Google Analytics Event Tracking, and More

\n

Our Google Analytics event tracking feature for WordPress doesn’t just stop at affiliate link tracking.

\n

You can use MonsterInsights custom Google analytics event tracking feature to easily add outbound-link tracking, file downloads tracking, call-to-action button tracking, hashmark tracking, telephone link tracking, and more.

\n

Our powerful Forms Tracking addon uses Google Analytics custom event tracking feature to enable form analytics in WordPress. With just 1-click, you can enable form conversion tracking for your contact forms, lead generation forms, registration forms, surveys, and any other type of form in WordPress.

\n

MonsterInsights’ Custom Dimensions addon allows you to push WordPress analytics even further. You can use Google Analytics custom dimensions to generate helpful WordPress stats for:

\n
    \n
  • Author Tracking – see stats for each author to find which author’s posts generate the most traffic.
  • \n
  • Post Type Tracking – see stats for WordPress post types to find out which sections are performing the best.
  • \n
  • Category Tracking – see stats for your WordPress categories to find out which sections of your sites are the most popular.
  • \n
  • Tags Tracking – see stats for your WordPress tags to find out which tags are the most popular.
  • \n
  • SEO Score Tracking – see stats for your Yoast SEO score and see how it impacts your traffic.
  • \n
  • Focus Keyword Tracking – see stats for Yoast focus keyword and see how it correlates with your traffic.
  • \n
  • Logged-in User Tracking – see WordPress stats for what percentage of your users are logged-in.
  • \n
  • User ID Tracking – see stats for each individual logged-in user’s activity through User ID custom dimension – great for Ecommerce and membership sites.
  • \n
  • Published Time Tracking – track the performance of your posts based on their published time.
  • \n
\n

Simply put, MonsterInsights allow you to take full advantage of all the powerful Google Analytics features.

\n
\n

I like how simple it is for client users and how I can turn on the advanced features for myself to get all the details right.
\n Skip Shean

\n
\n

Google Analytics Dashboard Plugin for WordPress Multisite Networks

\n

MonsterInsights is the most popular analytics plugin for adding Google Analytics to WordPress multisite.

\n

We have built-in all permissions and controls that you would need to successfully run Google Analytics on a WordPress multi-site.

\n

You can control who has access to view the Google Analytics Dashboard report in WordPress. Our permissions setting allows you to hide analytics reports for specific user roles.

\n

Similarly, we understand that some sites may want to exclude logged-in users from tracking. MonsterInsights gives you granular control to exclude admin in Analytics as well as other user roles.

\n

Our performance addon allows you to adjust sample rate and site speed sample rates for Google Analytics.

\n

By now you can probably see why MonsterInsights has become the most popular Google Analytics plugin for WordPress.

\n

We understand Google Analytics better than any other analytics plugin for WordPress.

\n

Full MonsterInsights Feature List

\n
    \n
  • Quick and Easy Setup – Easily setup Google Analytics for WordPress with just a few clicks (no coding needed)
  • \n
  • Real Time Stats – See real time stats inside your Google Analytics dashboard.
  • \n
  • Universal Tracking – Get better insights with Google Analytics’ universal tracking.
  • \n
  • Google Analytics Dashboard – See the stats that matter from right inside your WordPress dashboard with custom Publisher Report, Ecommerce report, and Search Console report.
  • \n
  • eCommerce Tracking – Add Google Analytics Ecommerce tracking to WordPress.
  • \n
  • WooCommerce Google Analytics – Add Enhanced Ecommerce Tracking to your WooCommerce store.
  • \n
  • Easy Digital Downloads Google Analytics – Add Enhanced Ecommerce Tracking to your EDD store.
  • \n
  • Ads Tracking – Track your Google Adsense ads with Google Analytics.
  • \n
  • Affiliate Link Tracking – Track your affiliate links and get stats that matter.
  • \n
  • File Download Tracking – Enable file download stats with just a click.
  • \n
  • Custom Link Tracking – Track your outbound link clicks with Google Analytics.
  • \n
  • Events Tracking – Track custom button and banner clicks with Google Analytics.
  • \n
  • Custom Dimensions Tracking – Enable Google analytics custom dimensions tracking for WordPress.
  • \n
  • Author Tracking – See author stats and discover who’s the most popular author on your site.
  • \n
  • Popular Post Tracking – See which blog post and section is the most popular.
  • \n
  • Contextual Insights – Get actionable tips on how to improve engagement and get more visitors based on your site’s traffic.
  • \n
  • Headline Analyzer – Get more clicks and improve SEO following suggestions from our Headline Analyzer directly in the WordPress editor
  • \n
  • Custom Post Type Tracking – Track the performance of your custom post types.
  • \n
  • Referral Tracking – See how visitors are finding your website to better focus your marketing efforts.
  • \n
  • Performance Tracking – Control the performance rate and sample rate for your Google Analytics report.
  • \n
  • Enhanced Link Attribution – Get better analytics with enhanced link attribution.
  • \n
  • Email Summaries – Your site’s Google Analytics traffic report delivered straight to your inbox every week.
  • \n
  • Google Analytics for AMP – Add proper tracking for Google AMP.
  • \n
  • Google Analytics for Facebook Instant Articles – Add proper tracking for Facebook Analytics.
  • \n
  • Google Analytics GDPR Compliance – EU compliance addon helps you improve Google Analytics GDPR compliance by adding anonymize IP, cookie consent for opt-out tracking, and more.
  • \n
  • Form Conversion Tracking – Track conversions for your WordPress forms. Works with all popular plugins including WPForms, Contact Form 7, Gravity Forms, Formidable Forms, and more.
  • \n
  • Google Optimize Tracking – Enable Google Analytics support for Google Optimize A/B Testing.
  • \n
  • Google Analytics Tools – Helpful tools for Google Analytics such as UTM link tracking builder.
  • \n
  • Want us to add something else? Suggest a feature and we’ll get it added!
  • \n
\n

After reading this exhaustive feature list, you can probably imagine why MonsterInsights is the best Google Analytics plugin for WordPress.

\n

Give MonsterInsights a try.

\n

Want to unlock even more features? Upgrade to our Pro version.

\n
\n

Simple, yet powerful. Amazing piece of plugin, does exactly what expected and even more.
\n Matt Jaworski

\n
\n

Popular Google Analytics Tutorials

\n\n

Note for Beginners

\n

Like all WordPress plugins, Google Analytics by MonsterInsights is only available for self-hosted WordPress sites. This means you will need to switch from WordPress.com to WordPress.org if you want to use this plugin on your WordPress site.

\n

For more details, see this infographic on self hosted WordPress.org vs free WordPress.com

\n

Credits

\n

This plugin is created by Chris Christoff and Syed Balkhi with sponsorship from WPBeginner.

\n

Branding Guidelines

\n

MonsterInsights® is a registered trademark of MonsterInsights LLC. When writing about the Google Analytics for WordPress plugin by MonsterInsights, please make sure to uppercase the first letters of both word.

\n
    \n
  • MonsterInsights (correct)
  • \n
  • Monster Insights (incorrect)
  • \n
  • monsterinsights (incorrect)
  • \n
  • monsterinsight (incorrect)
  • \n
\n

What’s Next

\n

If you like this plugin, then consider checking out our other projects:

\n
    \n
  • OptinMonster – Get More Email Subscribers
  • \n
  • WPForms – Best WordPress Contact Form Plugin
  • \n
  • AIOSEO – The original WordPress SEO plugin to help you rank higher in search results (trusted by over 2 million sites)
  • \n
  • SeedProd – Most popular coming soon & maintenance mode plugin for WordPress
  • \n
  • WP Mail SMTP – Improve email deliverability for your contact form with the most popular SMTP plugin for WordPress
  • \n
  • RafflePress – Best WordPress giveaway and contest plugin to grow traffic and social followers
  • \n
  • Smash Balloon – #1 social feeds plugin for WordPress – display social media content in WordPress without code
  • \n
  • PushEngage – Connect with visitors after they leave your website with the leading web push notification plugin
  • \n
  • TrustPulse – Add real-time social proof notifications to boost your store conversions by up to 15%
  • \n
\n

This plugin would not be possible without the help and support of WPBeginner, the largest WordPress resource site. You can learn from our free WordPress Tutorials like how to install WordPress, choose the best WordPress hosting, WordPress glossary, and more.

\n

You can also learn about other best WordPress plugins.

\n","download_link":"https://downloads.wordpress.org/plugin/google-analytics-for-wordpress.7.18.0.zip","tags":{"google-analytics":"google analytics","google-analytics-dashboard":"google analytics dashboard","google-analytics-widget":"google analytics widget","woocommerce-stats":"WooCommerce stats","wordpress-analytics":"WordPress analytics"},"donate_link":"http://www.wpbeginner.com/wpbeginner-needs-your-help/","icons":{"1x":"https://ps.w.org/google-analytics-for-wordpress/assets/icon.svg?rev=1598927","2x":"https://ps.w.org/google-analytics-for-wordpress/assets/icon-256x256.png?rev=1598927","svg":"https://ps.w.org/google-analytics-for-wordpress/assets/icon.svg?rev=1598927"},"wporg":true},{"name":"Atomic Blocks – Gutenberg Blocks Collection","slug":"atomic-blocks","version":"2.9.0","author":"atomicblocks","author_profile":"https://profiles.wordpress.org/atomicblocks","requires":"5.3","tested":"5.5.5","requires_php":"5.6","rating":86,"ratings":{"1":5,"2":0,"3":1,"4":6,"5":31},"num_ratings":43,"support_threads":1,"support_threads_resolved":0,"active_installs":40000,"downloaded":991471,"last_updated":"2020-10-28 4:53pm GMT","added":"2018-03-26","homepage":"https://atomicblocks.com","short_description":"A collection of beautiful, customizable Gutenberg blocks for the new block editor.","description":"

Atomic Blocks has moved!

\n

Same powerful blocks, same beautiful designs, same innovative team. Atomic Blocks has been renamed to Genesis Blocks. Learn more about Genesis Blocks. With our migration tool built right into Genesis Blocks, the transition between plugins will be simple and seamless – plus you’ll be ready to receive the new blocks and features we’re releasing soon.

\n

Atomic Blocks is a collection of page building blocks for the new Gutenberg block editor. Building pages with the block editor and Atomic Blocks gives you more control to quickly create and launch any kind of site you want!

\n

Installing the customizable Atomic Block plugin adds a collection of beautiful, site-building blocks to help you customize page layouts, increase engagement, and get results for your business. Atomic Blocks provides everything from customizable buttons, to beautifully-designed page sections and full-page layout designs via the Section & Layout block.

\n

Along with the content blocks you’ll find in Atomic Blocks, we’re also publishing helpful articles and tutorials to help you get started with Gutenberg.

\n

New Section and Layout Block!

\n

\n

On top of the handy, time-saving blocks already found in Atomic Blocks, we’re excited to introduce the brand new Section and Layout block! This block comes with a library of pre-designed sections and layouts to help you quickly and easily build a beautiful site with the new block editor.

\n

Using the Section and Layout modal window, you can browse designs by category, search, and even add sections and layouts to a Favorites tab for quick access later. Paired with the free Atomic Blocks theme, which has support for full-width, block-based page building, you have everything you need to start building your site today!

\n

Atomic Blocks currently includes the following blocks:

\n\n

Atomic Blocks WordPress Theme

\n

We’ve created a beautiful WordPress theme to help you get started with the Atomic Blocks plugin and the new WordPress block editor. The theme integrates seamlessly with the blocks you’ll find in the plugin!

\n\n

In addition to the Atomic Block Theme, we’ve built Revolution Pro with the StudioPress team. This theme is built from the ground up with blocks—Gutenberg core and Atomic. Using this Theme and the Genesis One-Click Theme Install you can have a new block-based site up and running in minutes.

\n\n

Google AMP Support

\n

The Accelerated Mobile Pages (AMP) project is a publishing format created by Google to enhance site performance for mobile website users. AMP pages are specially designed for Google search users to quickly load website pages without using any extraneous data. Atomic Blocks has support for AMP built into each block!

\n

Atomic Blocks Help File

\n

We’ve created a handy help file that you can check out here. The help file covers how to setup the plugin and get started with the blocks.

\n

The help file is also available in the plugin once activated. Click the Atomic Blocks admin menu item to visit the Getting Started page.

\n

View the plugin help file

\n

Follow Along:

\n\n","download_link":"https://downloads.wordpress.org/plugin/atomic-blocks.2.9.0.zip","tags":{"blocks":"blocks","editor":"editor","gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","page-builder":"page builder"},"donate_link":"https://atomicblocks.com","icons":{"1x":"https://ps.w.org/atomic-blocks/assets/icon-128x128.jpg?rev=1914920","2x":"https://ps.w.org/atomic-blocks/assets/icon-256x256.jpg?rev=1914921"},"wporg":true},{"name":"Akismet Spam Protection","slug":"akismet","version":"4.1.12","author":"Automattic","author_profile":"https://profiles.wordpress.org/automattic","requires":"4.6","tested":"5.8","requires_php":false,"rating":94,"ratings":{"1":40,"2":9,"3":13,"4":45,"5":811},"num_ratings":918,"support_threads":9,"support_threads_resolved":8,"active_installs":5000000,"downloaded":208651946,"last_updated":"2021-09-03 4:53pm GMT","added":"2005-10-20","homepage":"https://akismet.com/","short_description":"The best anti-spam protection to block spam comments and spam in a contact form. The most trusted antispam solution for WordPress and WooCommerce.","description":"

Akismet checks your comments and contact form submissions against our global database of spam to prevent your site from publishing malicious content. You can review the comment spam it catches on your blog’s “Comments” admin screen.

\n

Major features in Akismet include:

\n
    \n
  • Automatically checks all comments and filters out the ones that look like spam.
  • \n
  • Each comment has a status history, so you can easily see which comments were caught or cleared by Akismet and which were spammed or unspammed by a moderator.
  • \n
  • URLs are shown in the comment body to reveal hidden or misleading links.
  • \n
  • Moderators can see the number of approved comments for each user.
  • \n
  • A discard feature that outright blocks the worst spam, saving you disk space and speeding up your site.
  • \n
\n

PS: You’ll be prompted to get an Akismet.com API key to use it, once activated. Keys are free for personal blogs; paid subscriptions are available for businesses and commercial sites.

\n","download_link":"https://downloads.wordpress.org/plugin/akismet.4.1.12.zip","tags":{"anti-spam":"anti-spam","antispam":"antispam","comments":"comments","contact-form":"contact form","spam":"spam"},"donate_link":"","icons":{"1x":"https://ps.w.org/akismet/assets/icon-128x128.png?rev=969272","2x":"https://ps.w.org/akismet/assets/icon-256x256.png?rev=969272"},"wporg":true},{"name":"WP GDPR Cookie Notice","slug":"wp-gdpr-cookie-notice","version":"1.0.0-rc.1","author":"Felix Arntz","author_profile":"https://profiles.wordpress.org/flixos90","requires":"4.9.6","tested":"5.7.2","requires_php":"7.0","rating":76,"ratings":{"1":4,"2":0,"3":0,"4":0,"5":9},"num_ratings":13,"support_threads":1,"support_threads_resolved":0,"active_installs":700,"downloaded":5941,"last_updated":"2021-04-02 11:51pm GMT","added":"2019-03-01","homepage":"https://wordpress.org/plugins/wp-gdpr-cookie-notice/","short_description":"Simple performant cookie consent notice that supports AMP, Web Stories, granular cookie control and live…","description":"

This plugin adds a simple performant cookie consent notice to your WordPress site that supports AMP, Web Stories, granular cookie control and live preview customization.

\n

Not only does the notice allow you to provide the regular message that your site uses cookies, you can also optionally grant your site visitors permission to granularly allow which cookie types are allowed, supporting groups of functional (always required), preferences, analytics and marketing cookies. This aims towards compliance with how the new GDPR regulations recommend implementing cookie control for your site.

\n

In addition to the Privacy Policy page setting that WordPress core provides, you also get a settings to optionally set an extra Cookie Policy page, and you can easily link to either of them from the cookie consent notice.

\n

The cookie notice content and appearance can easily be tweaked using the Customizer, with an immediate live-preview of what your changes will look like.

\n

Last but not least, another important thing that this plugin takes care of, other than most other cookie consent plugins, is that it actually ensures cookies are only placed if the respective cookie type has been allowed by the visitor. The plugin does this by implementing cookie rules for WordPress itself, and also for the following plugins:

\n\n

More plugins will be supported in the future. If you are a developer though, it’s also very easy to add cookie rules for other code, by using the flexible cookie rule component the plugin provides as an extension point.

\n

Feature Summary

\n
    \n
  • Lightweight and easy-to-use: Simply activate the plugin, and the notice will appear.
  • \n
  • Live Preview: Use the Customizer to adjust the notice to your needs, with an instant live preview.
  • \n
  • Customizable Appearance: Specify the notice position, colors, border, button size and more.
  • \n
  • Customizable Content: Adjust the notice heading, text and button label to your preferences. You can easily link to your cookie policy page or privacy policy page, and even give visitors granular control about which cookie types they allow.
  • \n
  • Cookie Policy Support: Define an optional cookie policy page if your site has one, or alternatively provide an ID attribute to the cookie section in your privacy policy.
  • \n
  • Cookie Integrations: Supported cookies are only set once the visitor has given their consent. The cookie rules implemented also respect the more granular cookie control.
  • \n
  • JavaScript-driven: The cookie notice is inserted into the page as necessary via JavaScript, but at the same time provides easy access to whether it should be displayed via its PHP API.
  • \n
  • AMP Support: The notice is fully AMP-compatible using <amp-consent>, integrating seamlessly with the AMP plugin. It integrates with Web Stories as well.
  • \n
  • Coding Best Practices: The plugin is fully object-oriented and is coded after best practices, such as using interfaces, traits, dependency injection or the single responsibility principle. It also implements modern coding features requiring PHP 7, such as scalar type hints or return type hints.
  • \n
\n

Disclaimer

\n

This plugin does not provide any legal protection. You as a site administrator are required to ensure that it meets legal standards. This plugin is a technical tool, not a lawyer.

\n","download_link":"https://downloads.wordpress.org/plugin/wp-gdpr-cookie-notice.1.0.0-rc.1.zip","tags":{"amp":"amp","cookie-consent":"cookie consent","cookie-notice":"cookie notice","gdpr":"GDPR","web-stories":"web stories"},"donate_link":"","icons":{"1x":"https://ps.w.org/wp-gdpr-cookie-notice/assets/icon-128x128.png?rev=2042024","2x":"https://ps.w.org/wp-gdpr-cookie-notice/assets/icon-256x256.png?rev=2042024"},"wporg":true},{"name":"WordPress Share Buttons Plugin – AddThis","slug":"addthis","version":"6.2.6","author":"The AddThis Team","author_profile":"https://profiles.wordpress.org/arnavarro","requires":"3.0","tested":"5.2.11","requires_php":false,"rating":84,"ratings":{"1":75,"2":25,"3":22,"4":46,"5":444},"num_ratings":612,"support_threads":2,"support_threads_resolved":0,"active_installs":100000,"downloaded":5068675,"last_updated":"2019-07-10 5:19pm GMT","added":"2008-12-23","homepage":"https://wordpress.org/plugins/addthis/","short_description":"Now compatible with the AMP Plugin! Free Share Buttons from AddThis. Share to Messenger, WhatsApp, Facebook, Twitter, Pinterest and many more.","description":"

Now compatible with the AMP Plugin! The Free WordPress Share Buttons Plugin from AddThis makes it easier than ever for your audience to spread your content around the web. Our quick-loading Share Buttons Plugin lets you connect to over 200 social channels including Messenger, WhatsApp, Facebook, Twitter, Pinterest and many more.

\n

Our clean, customizable and simple share buttons are beautiful, quick to load and recognized all over the web.

\n

AddThis is trusted by over 15,000,000 websites with over 2 billion unique users, sharing content all over the world, in more than sixty languages.

\n

Types of Share Buttons:

\n
    \n
  • \n

    Floating share buttons: Placed on the side of your page, following your reader as they scroll. A great way to promote sharing without getting too in-your-face.

    \n
  • \n
  • \n

    Expanding share buttons: Modern, clean, and best suited for sites with tons of mobile traffic. This button expands to reveal sharing options on hover or click.

    \n
  • \n
  • \n

    Inline share buttons: Integrate share buttons into your own content for a seamless sharing experience.

    \n
  • \n
  • \n

    Image sharing buttons: Seamlessly integrate sharing into your layout with adjustable image sharing buttons. Perfect for pages with tons of shareable content.

    \n
  • \n
\n

Customizable:

\n
    \n
  • \n

    Designed for desktop, tablet, and mobile

    \n
  • \n
  • \n

    Choose from over 200 social media channels to display

    \n
  • \n
  • \n

    Adjust coloring to match your brand

    \n
  • \n
\n

Analytics:

\n
    \n
  • Sign up for a free AddThis account to get analytics on how your content is performing such as your top shared content, referring social networks and more. After you register, these analytics are accessible by logging into your AddThis.com account and visiting your AddThis dashboard. Analytics include site pageviews, your top shared content, referring social networks, and more.
  • \n
\n

Support:

\n

We strive to provide best-in-class support with a response time of around two hours, and a customer satisfaction rate of over 98%. To get in touch with our team, head to http://www.addthis.com/support.

\n

Check out our other plugins to help you grow and engage your audience!

\n
    \n
  • \n

    Follow Buttons: Add followers to 65+ social networks, including Facebook, Snapchat, Instagram, and more.

    \n
  • \n
  • \n

    Related Posts: Boost your on-site engagement with our Related Posts tool, which recommends content not only by what’s popular, but also what’s most relevant.

    \n
  • \n
\n

Want more? Visit our website to learn how you can activate our Email List Building and Link Promotion Tools.

\n

AddThis Academy | Privacy Policy

\n","download_link":"https://downloads.wordpress.org/plugin/addthis.6.2.6.zip","tags":{"share-buttons":"share buttons","social":"social","social-marketing":"Social Marketing","social-share":"social share","social-sharing":"social sharing"},"donate_link":"","icons":{"1x":"https://ps.w.org/addthis/assets/icon-128x128.png?rev=1223867","2x":"https://ps.w.org/addthis/assets/icon-256x256.png?rev=1223867"},"wporg":true},{"name":"BigCommerce For WordPress","slug":"bigcommerce","version":"4.16.0","author":"BigCommerce","author_profile":"https://profiles.wordpress.org/bigcommerce","requires":"5.2","tested":"5.5.5","requires_php":"7.2.0","rating":80,"ratings":{"1":8,"2":1,"3":0,"4":3,"5":27},"num_ratings":39,"support_threads":3,"support_threads_resolved":1,"active_installs":1000,"downloaded":57476,"last_updated":"2021-08-12 3:08am GMT","added":"2018-11-16","homepage":"","short_description":"Scale your ecommerce business with WordPress on the front-end and BigCommerce on the back end.…","description":"

BigCommerce for WordPress is a plugin that allows you to scale ecommerce further than ever before on WordPress. Scale your business with WordPress on the front-end and free up server resources from things like catalog management, processing payments, managing fulfillment logistics and more with BigCommerce on the back end.

\n

Built to integrate seamlessly with WordPress, you get access to our native ecommerce features from a single plugin, the ability to sell across multiple channels and marketplaces from a single location, and best of all, an embedded checkout experience that takes on PCI compliance and customer security on your behalf.

\n

Quick Start!

\n

Look at details from the latest release, including new features and enhancements here: https://github.com/bigcommerce/bigcommerce-for-wordpress/releases

\n

Dive into how you set up and customize your site using BC4WP using our guides here: https://developer.bigcommerce.com/bigcommerce-for-wordpress/getting-started/introduction

\n

Have a suggestion for how we can be better? Ping the team! wordpress-suggestions@bigcommerce.com

\n

DIFFERENT FROM YOUR TRADITIONAL PLUGIN

\n

We’ve taken a very different approach to ecommerce in WordPress. We set out to build our plugin the WordPress Way: deliver value to the community, build it with WordPress experts and make something developers can call their own.

\n

The BigCommerce for WordPress plugin leverages the best aspects of both platforms, allowing WordPress to manage content and BigCommerce to manage ecommerce.

\n

SCALABLE ECOMMERCE FOR WORDPRESS

\n

Continue to tap into the unrestricted customization of WordPress while pairing it with the most scalable SaaS ecommerce engine. BigCommerce lets you build complex catalogs, manage large volumes of concurrent traffic, orders and analytics.

\n

The BigCommerce plugin ports over a copy of your product catalog and stores products as custom post types in WordPress. It also creates pages for your cart, checkout, account profiles, sign in, shipping & returns, gift certificates and order history.

\n

The key difference to our approach is that you don’t need to install additional extensions to get access to common ecommerce features. Instead, you get instant access to many common (and advanced) features, such as complex catalog support, global payment gateways, currency handling, taxation, shipping calculations and centralized channel management; all out-of-the-box.

\n

OFFLOAD BACKEND RESOURCES

\n

Our philosophy is that processing orders and running your store shouldn’t affect the uptime and speed of your site — which can hurt your SEO, conversion, and brand. The BigCommerce plugin does the heavy commerce lifting, letting you scale your ecommerce without losing speed or uptime.

\n

LET US HANDLE PCI COMPLIANCE

\n

Taking on your own PCI compliance comes with a huge amount of liability and risk. BigCommerce powers the full checkout experience, assuming the burden of PCI compliance for you.

\n

EXTENSIVE PAYMENT GATEWAYS

\n

BigCommerce has over 65 payment gateway integrations available out-of-the box, serving 100+ countries and over 250 local payment methods.

\n

To help you reduce costs, we’ve pre-negotiated special credit and debit card processing rates with PayPal, our preferred payment solution. The more you grow with BigCommerce and upgrade your plan, the lower your rates can go.

\n

HIGHLY SCALABLE PRODUCT CATALOG

\n

BigCommerce is built for large, complex catalogs with up to 600 SKUs per product, and 250 product values for a single option. Our native catalog structure treats single products (including variants, details, SKUs, etc.) as a single API call, making inventory syncing with ERPs, PIMs (and WordPress) fast.

\n

MULTI-CHANNEL SELLING & MANAGEMENT

\n

With the core BigCommerce platform, you now have access within the control panel to sell across multiple marketplaces simultaneously, such as eBay, Amazon, Facebook, Instagram, Google Shopping, Square and more! Save time and eliminate errors and overselling with bulk listing, automatic inventory syncing and unified order and fulfillment management.

\n

USE YOUR FAVORITE WORDPRESS THEME

\n

BigCommerce for WordPress will work with any WordPress theme, but it may require some styling to make it fit perfectly. Are you a theme developer? We’d love to promote your BigCommerce for WordPress compatible theme. Get in touch with us here.

\n

To start, we recommend choosing a cross-browser compatible WordPress ecommerce theme, since the theme options included will better match what an online store requires.

\n

ECOMMERCE WITH GUTENBERG

\n

We’re big supporters of Gutenberg and built our plugin to support both the classic editor and Gutenberg. Whether you’re inserting shortcodes in classic mode or product blocks in Gutenberg, we will continue to enable support for both.

\n

SECURED USER ACCOUNTS & LOGINS

\n

In addition to offering you peace of mind with a secure checkout experience, we also extend this level of security to your shoppers, their accounts and logins, and payment information — all managed by BigCommerce.

\n

GLOBAL SHIPPING STREAMLINED

\n

We support all major global carriers, offer real-time carrier quotes, allow for free shipping, flat rates, dropshipping and more. With our deep ShipperHQ integration, you can even specify rates by product, category, customer group, quantity, destination, dimensions and more.

\n

FLEXIBLE SHOPPING CART

\n

We are bringing over a decade of focusing on building online stores to every WordPress website. Through this we bring our flexible shopping cart, along with it’s extensive customization options, so can offer enterprise grade promotions and discounts within a fully responsive layout, without additional extensions that other WordPress ecommerce plugins require.

\n

MULTIPLE SITES; ONE CONTROL PANEL

\n

Even if you sell across multiple WordPress sites, you shouldn’t have to manage them all in separate places. BigCommerce gives you a single control panel to manage your catalog, orders and shipping, all from one place. Streamline your admin experience and spend less time managing ecommerce on WordPress.

\n

Beyond WordPress, the endpoints we’ve opened on our platform allow you to build commerce into any sort of experience. Looking to launch a site in React? Interested in developing a mobile app? Want to integrate with an in-house POS? All of these can be built and managed from within the BigCommerce Control Panel.

\n

COMPLEX ENTERPRISE SYSTEMS INTEGRATIONS

\n

A huge benefit of having a SaaS ecommerce engine behind the scenes is that the core platform is already built for mid-market and enterprise use cases. Natively connect to your existing ERP suites, PIM software, OMS solutions, POS systems or marketing automation tools right out of the box.

\n

AMP SUPPORT

\n

Unique to most WordPress ecommerce plugins, BigCommerce for WordPress also includes support for Accelerated Mobile Pages. To activate, install the official Google plugin.

\n

SUPPORT AND SERVICES

\n

All of our BigCommerce customers have access to our 24/7 live phone, chat, and email support, run from our headquarters in Austin, Texas. For larger enterprise customers, we offer dedicated account management and implementation management services as part of your plan. We also have an ever-growing collection of help, support, and how-to guides in our help center.

\n

BUILT WITH DEVELOPERS IN MIND

\n

BigCommerce for WordPress was built by WordPress developers, with developers in mind. Our plugin is open source and available for you to fork, extend and modify as your needs require.

\n

Our plugin supports WordPress’ standard method of overriding template files so you can modify out-of-the-box designs. Customize your product cards, lists and shopping cart without risking plugin updates that will undo your changes.

\n

Additionally, there are many hooks and filters, so you can manipulate content to your heart’s content.

\n

JOIN OUR BIGCOMMERCE COMMUNITY

\n

All BigCommerce customers get access to our ever-growing online community to answer questions, discuss ecommerce strategies, learn about the latest product updates, contribute ideas and more.

\n

If you’re interested in contributing to BigCommerce for WordPress, head over to our GitHub Repository.

\n","download_link":"https://downloads.wordpress.org/plugin/bigcommerce.4.16.0.zip","tags":{"ecommerce":"ecommerce","online-store":"online store","retail":"retail","sell-online":"sell online","storefront":"storefront"},"donate_link":"","icons":{"1x":"https://ps.w.org/bigcommerce/assets/icon-256x256.png?rev=2141502","2x":"https://ps.w.org/bigcommerce/assets/icon-256x256.png?rev=2141502"},"wporg":true},{"name":"Yoast SEO","slug":"wordpress-seo","version":"17.0","author":"Team Yoast","author_profile":"https://profiles.wordpress.org/joostdevalk","requires":"5.6","tested":"5.8","requires_php":"5.6.20","rating":96,"ratings":{"1":718,"2":124,"3":170,"4":616,"5":25755},"num_ratings":27383,"support_threads":541,"support_threads_resolved":492,"active_installs":5000000,"downloaded":351599745,"last_updated":"2021-08-24 7:59am GMT","added":"2010-10-11","homepage":"https://yoa.st/1uj","short_description":"Improve your WordPress SEO: Write better content and have a fully optimized WordPress site using the Yoast SEO plugin.","description":"

Yoast SEO: the #1 WordPress SEO plugin

\n

Since 2008 Yoast SEO has helped millions of websites worldwide to rank higher in search engines.

\n

Yoast’s mission is SEO for Everyone. Our plugin’s users range from the bakery around the corner to some of the most popular sites on the planet.

\n

Yoast SEO Free contains everything that you need to manage your SEO, and the Yoast SEO Premium plugin and its extensions unlock even more tools and functionality.

\n

GET AHEAD OF THE COMPETITION

\n

To rank highly in search engines, you need to beat the competition. You need a better, faster, stronger website than the people who sell or do the same kinds of things as you.

\n

Yoast SEO is the most-used WordPress SEO plugin, and has helped millions of people like you to get ahead, and to stay ahead.

\n

TAKING CARE OF YOUR WORDPRESS SEO

\n

Yoast SEO is packed full of features, designed to help visitors and search engines to get the most out of your website. Some of our favourites are:

\n
    \n
  • Automated technical SEO improvements, like canonical URLs and meta tags.
  • \n
  • Advanced XML sitemaps; making it easy for Google to understand your site structure.
  • \n
  • Title and meta description templating, for better branding and consistent snippets in the search results.
  • \n
  • An in-depth Schema.org integration that will increase your chance of getting rich results, by helping search engines to understand your content.
  • \n
  • Full control over site breadcrumbs, so that users and search engines always know where they are.
  • \n
  • Faster loading times for your whole website, due to an innovative way of managing data in WordPress.
  • \n
  • [Premium] E-mail support for our Yoast SEO Premium users.
  • \n
  • [Premium] The possibility to expand Yoast SEO with the News SEO, Video SEO, Local SEO and WooCommerce SEO extensions.
  • \n
\n

WRITE KILLER CONTENT WITH YOAST SEO

\n

We know content is king, that’s why Yoast SEO is famous for its state-of-the-art content and SEO analysis. Yoast SEO gives you:

\n
    \n
  • SEO analysis: an invaluable tool while writing SEO-friendly content with the right (focus) keyphrases in mind.
  • \n
  • Readability analysis: ensures that humans and search engines can read and understand your content.
  • \n
  • Full language support for: English, German, French, Dutch, Spanish, Italian, Russian, Indonesian, Polish, Portuguese, Arabic, Swedish, Hebrew, Hungarian, Turkish, Czech, Norwegian and Slovak.
  • \n
  • A Google preview, which shows what your listings will look like in the search results. Even on mobile devices!
  • \n
  • Innovative Schema blocks for the WordPress block editor, so that your FAQ and HowTo content can be shown directly in the search results. Plus a breadcrumbs block to guide your users.
  • \n
  • [Premium] Internal linking blocks to easily improve the structure of your content. Easily add a table of contents block, a related links block, a subpages block, or siblings block! Plus, we’ll keep adding these easy-to-add blocks to improve your site structure.
  • \n
  • [Premium] Social previews to show you how your content will be shown on Twitter and Facebook. Plus: Social Appearance Templates to guarantee a consistent look.
  • \n
  • [Premium] The Insights tool that shows you what your text focuses on. This way you can keep your article in line with your keyphrases.
  • \n
  • [Premium] Optimize your content for synonyms and related keyphrases.
  • \n
  • [Premium] Optimize your article for different word forms of your keyphrases, as the singular and plural. But also different verb forms, synonyms, and related keyphrases. This makes for more natural content!
  • \n
  • [Premium] Automatic internal linking suggestions: write your article and get automatic suggested posts to link to!
  • \n
  • [Premium] An orphaned content filter to detect posts that have no links pointing towards them!
  • \n
  • [Premium] SEO workouts to make working on your site as easy as ABC. These SEO workflows will get your site into shape in no time!
  • \n
\n

KEEP YOUR SITE IN PERFECT SHAPE

\n

Whether you are an online entrepreneur, blogger or content creator, a developer, a (WordPress) SEO expert or a business owner, Yoast SEO helps you keep your website in perfect shape by:

\n
    \n
  • Tuning the engine of your website, so you can work on creating great content!
  • \n
  • Giving you cornerstone content and internal linking features to help you optimize your site structure in a breeze.
  • \n
  • Translating your content to structured data where possible, to help search engines understand your website.
  • \n
  • Helping you manage your team: with our SEO roles you can give colleagues access to specific sections of the Yoast SEO plugin.
  • \n
  • [Premium] Automatically creating redirects when URLs change or when pages are deleted, and providing tools to manage or create redirects.
  • \n
  • [Premium] Showing you social previews to manage the way your page is shared on social networks like Facebook and Twitter.
  • \n
\n

TRUST THE EXPERTS

\n

Yoast is powered by a team of expert developers, testers, software architects, and SEO consultants. They work constantly to stay at the cutting edge of WordPress SEO, and to improve the plugin with every release.

\n

Yoast SEO is the only WordPress SEO plugin made by world-renowned SEO experts.

\n

GET PREMIUM SUPPORT

\n

The Yoast team offers regular support on the WordPress.org forums. But we hope you understand that we prioritize our Premium customers. This one-on-one email support is available to people who have purchased Yoast SEO Premium.

\n

Did you know that Yoast SEO Premium contains a lot of extra features:

\n
    \n
  • A redirect manager that prevents “404: page not found” errors
  • \n
  • Optimize without worrying about over-optimization with intelligent word form recognition available in multiple languages.
  • \n
  • Internal linking blocks to structure your site easily.
  • \n
  • Internal linking suggestions while you’re writing.
  • \n
  • Preview your content to see what it will look like in the search results and when shared on social media using the Google preview and social preview.
  • \n
  • Cornerstone content checks that point search engines to your most important pages.
  • \n
  • Connect Yoast SEO to Zapier to easily create zaps that instantly share your published posts with 2000+ destinations like Twitter, Facebook, and much more.
  • \n
\n

If you are serious about your WordPress SEO, install the Yoast SEO Premium plugin! Costs a little, saves a lot of time!

\n

OUR EXTENSIONS TO FURTHER IMPROVE YOUR WORDPRESS SEO

\n

Check out these SEO add-ons by Yoast:

\n
    \n
  • Yoast Local SEO optimizes your website for a local audience.
  • \n
  • Yoast Video SEO ensures that Google understands what your video is about, increasing the chances of ranking in the video results.
  • \n
  • Yoast News SEO for news websites that want to improve their visibility and performance in Google News.
  • \n
  • WooCommerce SEO for all online shops that want to perform better in the search results and social media.
  • \n
\n

These extensions work fine with the free version of Yoast SEO. Of course, the premium extensions also include 24/7 support.

\n

Oh, don’t forget: our Yoast Academy is for all entrepreneurs, bloggers, and anyone who wants to learn more about optimizing websites, improving your WordPress SEO, and if you want to take your content to the next level!

\n

INTEGRATIONS

\n

Yoast SEO integrates seamlessly into a range of themes and plugins. We work particularly well with:

\n\n

BUG REPORTS

\n

Do you want to report a bug for Yoast SEO? Best to do so in the WordPress SEO repository on GitHub. Please note that GitHub is not a support forum and issues will be closed if they don’t meet the bug requirements.

\n

READ MORE

\n

Want more information on search engine optimization and Yoast SEO? Have a look at:

\n\n","download_link":"https://downloads.wordpress.org/plugin/wordpress-seo.17.0.zip","tags":{"content-analysis":"Content analysis","readability":"Readability","schema":"schema","seo":"seo","xml-sitemap":"xml sitemap"},"donate_link":"https://yoa.st/1up","icons":{"1x":"https://ps.w.org/wordpress-seo/assets/icon.svg?rev=2363699","2x":"https://ps.w.org/wordpress-seo/assets/icon-256x256.png?rev=2363699","svg":"https://ps.w.org/wordpress-seo/assets/icon.svg?rev=2363699"},"wporg":true},{"name":"Gutenberg","slug":"gutenberg","version":"11.4.1","author":"Gutenberg Team","author_profile":"https://profiles.wordpress.org/matveb","requires":"5.6","tested":"5.8","requires_php":"5.6","rating":42,"ratings":{"1":2266,"2":201,"3":126,"4":133,"5":700},"num_ratings":3426,"support_threads":57,"support_threads_resolved":10,"active_installs":300000,"downloaded":24406478,"last_updated":"2021-09-03 3:27pm GMT","added":"2017-06-16","homepage":"https://github.com/WordPress/gutenberg","short_description":"The Gutenberg plugin provides editing, customization, and site building features to WordPress. This beta plugin allows you to test bleeding-edge featu …","description":"

“Gutenberg” is a codename for a whole new paradigm in WordPress site building and publishing, that aims to revolutionize the entire publishing experience as much as Gutenberg did the printed word. Right now, the project is in the first phase of a four-phase process that will touch every piece of WordPress — Editing, Customization, Collaboration, and Multilingual — and is focused on a new editing experience, the block editor.

\n

The block editor introduces a modular approach to pages and posts: each piece of content in the editor, from a paragraph to an image gallery to a headline, is its own block. And just like physical blocks, WordPress blocks can added, arranged, and rearranged, allowing WordPress users to create media-rich pages in a visually intuitive way — and without work-arounds like shortcodes or custom HTML.

\n

The block editor first became available in December 2018, and we’re still hard at work refining the experience, creating more and better blocks, and laying the groundwork for the next three phases of work. The Gutenberg plugin gives you the latest version of the block editor so you can join us in testing bleeding-edge features, start playing with blocks, and maybe get inspired to build your own.

\n

Discover More

\n
    \n
  • \n

    User Documentation: See the WordPress Editor documentation for detailed docs on using the editor as an author creating posts and pages.

    \n
  • \n
  • \n

    Developer Documentation: Extending and customizing is at the heart of the WordPress platform, see the Developer Documentation for extensive tutorials, documentation, and API reference on how to extend the editor.

    \n
  • \n
  • \n

    Contributors: Gutenberg is an open-source project and welcomes all contributors from code to design, from documentation to triage. See the Contributor’s Handbook for all the details on how you can help.

    \n
  • \n
\n

The development hub for the Gutenberg project is on Github at: https://github.com/wordpress/gutenberg

\n

Discussion for the project is on Make Blog and the #core-editor channel in Slack, signup information.

\n","download_link":"https://downloads.wordpress.org/plugin/gutenberg.11.4.1.zip","tags":[],"donate_link":"","icons":{"1x":"https://ps.w.org/gutenberg/assets/icon-128x128.jpg?rev=1776042","2x":"https://ps.w.org/gutenberg/assets/icon-256x256.jpg?rev=1776042"},"wporg":true},{"name":"Setka Editor","slug":"setka-editor","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":"","ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":"","support_threads":"","support_threads_resolved":"","active_installs":"","downloaded":"","last_updated":"","added":"","homepage":"https://setka.io/","short_description":"

Setka Editor is the first WYSIWYG plugin with page builder functionality.

\n","description":"\n\n\n

Setka Editor is the first WYSIWYG plugin with page builder functionality.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2018/11/Setka-Banner-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2018/11/Setka-Banner-372x209.jpg","svg":""},"wporg":false}] \ No newline at end of file diff --git a/data/themes.json b/data/themes.json index c35bc8cc276..c03471f0414 100644 --- a/data/themes.json +++ b/data/themes.json @@ -1 +1 @@ -[{"name":"Sydney","slug":"sydney","version":"1.79","preview_url":"https://wp-themes.com/sydney/","author":{"user_nicename":"athemes","profile":"https://profiles.wordpress.org/athemes","avatar":"https://secure.gravatar.com/avatar/0fe6c4dee6e201e81783d8a0ee12d83b?s=96&d=monsterid&r=g","display_name":"athemes","author":"aThemes","author_url":"https://athemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/sydney/screenshot.png?ver=1.79","rating":98,"num_ratings":495,"homepage":"https://wordpress.org/themes/sydney/","description":"Sydney is a powerful business theme that provides a fast way for companies or freelancers to create an awesome online presence. As well as being fully compatible with Elementor, Sydney brings plenty of customization possibilities like access to all Google Fonts, full color control, layout control, logo upload, full screen slider, header image, sticky navigation and much more. Also, Sydney provides all the construction blocks you need to rapidly create an engaging front page. Looking for a quick start with Sydney? With just a few clicks, you can import one of our existing demos (https://athemes.com/sydney-demos/)","requires":false,"requires_php":"5.6","wporg":true},{"name":"Really Simple","slug":"really-simple","version":"1.0.7","preview_url":"https://wp-themes.com/really-simple/","author":{"user_nicename":"flauberthenriques","profile":"https://profiles.wordpress.org/flauberthenriques","avatar":"https://secure.gravatar.com/avatar/d524eb0811fa44be90481509b000c779?s=96&d=monsterid&r=g","display_name":"Flaubert Henriques","author":"Flaubert Henriques","author_url":"https://profiles.wordpress.org/flauberthenriques/"},"screenshot_url":"//ts.w.org/wp-content/themes/really-simple/screenshot.png?ver=1.0.7","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/really-simple/","description":"Really Simple is a theme for bloggers and writers who need a ultra light and fast theme. The theme focuses on simplicity and loading speed. Yes, Really Simple Theme is also fully AMP compatible. Check the readme.txt file and leave the sidebar perfect after WordPress 5.8 update.","requires":"5.3","requires_php":"7.0","wporg":true},{"name":"Artpop","slug":"artpop","version":"1.0.7","preview_url":"https://wp-themes.com/artpop/","author":{"user_nicename":"designlabthemes","profile":"https://profiles.wordpress.org/designlabthemes","avatar":"https://secure.gravatar.com/avatar/956873f77232371cb89d8a0d7a516354?s=96&d=monsterid&r=g","display_name":"designlabthemes","author":"Design Lab","author_url":"https://www.designlabthemes.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/artpop/screenshot.png?ver=1.0.7","rating":100,"num_ratings":1,"homepage":"https://wordpress.org/themes/artpop/","description":"Artpop is a beautiful Gutenberg-first WordPress theme, carefully designed to help you build your online brand. Unleash your creativity, Artpop takes care of the rest! Well documented and easy to use even for WordPress beginners, Artpop is perfect for a blog, personal portfolio, small business website, and WooCommerce storefront. Easily set your logo, change colors, and create awesome layouts to give your website a truly unique look.","requires":"4.7","requires_php":"5.6","wporg":true},{"name":"Michelle","slug":"michelle","version":"1.2.0","preview_url":"https://wp-themes.com/michelle/","author":{"user_nicename":"webmandesign","profile":"https://profiles.wordpress.org/webmandesign","avatar":"https://secure.gravatar.com/avatar/f4a334f9f5af61b2bd22fcaadb04dd06?s=96&d=monsterid&r=g","display_name":"WebMan Design | Oliver Juhas","author":"WebMan Design","author_url":"https://www.webmandesign.eu/"},"screenshot_url":"//ts.w.org/wp-content/themes/michelle/screenshot.png?ver=1.2.0","rating":100,"num_ratings":3,"homepage":"https://wordpress.org/themes/michelle/","description":"Michelle is accessibility ready WordPress theme for creating inclusive websites easily and with fun using block editor. Useful block patterns, block styles, templates and featured posts functionality allow you to build an eyecatching website in no time. Customize site footer and error 404 page content with block editor! The theme also works with Beaver Builder, Elementor, or any other page builder. It also supports theme builders! Michelle elevates your business, eCommerce, portfolio, or blog website. Check out the demo at https://themedemos.webmandesign.eu/michelle/ and documentation at https://webmandesign.github.io/docs/michelle/","requires":"5.5","requires_php":"7.0","wporg":true},{"name":"Miniva","slug":"miniva","version":"1.6.3","preview_url":"https://wp-themes.com/miniva/","author":{"user_nicename":"tajam","profile":"https://profiles.wordpress.org/tajam","avatar":"https://secure.gravatar.com/avatar/378d4e715829ccf6f1fbe6dfef6eb539?s=96&d=monsterid&r=g","display_name":"Tajam","author":"Tajam","author_url":"https://tajam.id/"},"screenshot_url":"//ts.w.org/wp-content/themes/miniva/screenshot.png?ver=1.6.3","rating":100,"num_ratings":6,"homepage":"https://wordpress.org/themes/miniva/","description":"A fast, lightweight, and mobile-friendly WordPress theme for bloggers. Miniva is built with simplicity, accessibility and performance in mind. The clean and minimal design helps readers focus on your content. It supports AMP and several Jetpack modules including featured content, infinite scroll, content options and social menu. See the theme demo at https://tajam.id/miniva-demo/","requires":"4.5","requires_php":"5.3","wporg":true},{"name":"Iknow","slug":"iknow","version":"1.2.6","preview_url":"https://wp-themes.com/iknow/","author":{"user_nicename":"wpcalc","profile":"https://profiles.wordpress.org/wpcalc","avatar":"https://secure.gravatar.com/avatar/64ca4933fab3d5e50383f0b514acd5f6?s=96&d=monsterid&r=g","display_name":"Wow-Company","author":"Wow-Company","author_url":"https://wow-company.com"},"screenshot_url":"//ts.w.org/wp-content/themes/iknow/screenshot.png?ver=1.2.6","rating":98,"num_ratings":9,"homepage":"https://wordpress.org/themes/iknow/","description":"Iknow WordPress Theme has a minimalistic, responsive and mobile-friendly design. Easy and fast theme. The theme is perfect for creating Knowledge Base, Helpdesk, Wiki and FAQ websites. Ability to set custom icons for each category and tag. Manage the display of categories on the main page of the site. The integrated post rating system VoteUp/VoteDown. Breadcrumbs for easy site navigation. Custom widget to display the current navigation in a category and in a separate post. You can view the appearance and features of the theme on the site https://wow-company.com/wp-theme-iknow/. Documentation https://wow-company.com/faq/category/wow-themes/iknow/","requires":false,"requires_php":"5.6","wporg":true},{"name":"Kadence","slug":"kadence","version":"1.1.3","preview_url":"https://wp-themes.com/kadence/","author":{"user_nicename":"britner","profile":"https://profiles.wordpress.org/britner","avatar":"https://secure.gravatar.com/avatar/3276133b8df529e6e1e58586ab1a309e?s=96&d=monsterid&r=g","display_name":"Ben Ritner - Kadence WP","author":"Kadence WP","author_url":"https://www.kadencewp.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/kadence/screenshot.png?ver=1.1.3","rating":98,"num_ratings":135,"homepage":"https://wordpress.org/themes/kadence/","description":"Kadence Theme is a lightweight yet full featured WordPress theme for creating beautiful fast loading and accessible websites, easier than ever. It features an easy to use drag and drop header and footer builder to build any type of header in minutes. It features a full library of gorgeous starter templates that are easy to modify with our intelligent global font and color controls. With extensive integration with the most popular 3rd party plugins, you can quickly build impressive ecommerce websites, course websites, business websites, and more.","requires":"5.0","requires_php":"7.0","wporg":true},{"name":"Izo","slug":"izo","version":"1.0.12","preview_url":"https://wp-themes.com/izo/","author":{"user_nicename":"elfwp","profile":"https://profiles.wordpress.org/elfwp","avatar":"https://secure.gravatar.com/avatar/1cfedf4555fea4d8fbba2947635586ea?s=96&d=monsterid&r=g","display_name":"elfwp","author":"elfWP","author_url":"https://elfwp.com"},"screenshot_url":"//ts.w.org/wp-content/themes/izo/screenshot.png?ver=1.0.12","rating":90,"num_ratings":2,"homepage":"https://wordpress.org/themes/izo/","description":"Izo a fast, lightweight, native AMP and fully customizable multipurpose WordPress theme. Features include compatibility with many popular plugins like Elementor and other page builders, WooCommerce, WPML, LifterLMS and more. There is also full support for the new WordPress block editor. Izo is fully responsive and our users can take advantage of the many customizer options to easily change styles. Also, if you're looking for a quick start, we're offering a bunch of free starter sites, ready to easily import.","requires":false,"requires_php":"5.6","wporg":true},{"name":"OceanWP","slug":"oceanwp","version":"3.0.5","preview_url":"https://wp-themes.com/oceanwp/","author":{"user_nicename":"oceanwp","profile":"https://profiles.wordpress.org/oceanwp","avatar":"https://secure.gravatar.com/avatar/05f8d3fe2ccb6479bac14e4d40b406dd?s=96&d=monsterid&r=g","display_name":"oceanwp","author":"Nick","author_url":"https://oceanwp.org/about-me/"},"screenshot_url":"//ts.w.org/wp-content/themes/oceanwp/screenshot.png?ver=3.0.5","rating":98,"num_ratings":4911,"homepage":"https://wordpress.org/themes/oceanwp/","description":"OceanWP is the perfect theme for your project. Lightweight and highly extendable, it will enable you to create almost any type of website such a blog, portfolio, business website and WooCommerce storefront with a beautiful & professional design. Very fast, responsive, RTL & translation ready, best SEO practices, unique WooCommerce features to increase conversion and much more. You can even edit the settings on tablet & mobile so your site looks good on every device. Work with the most popular page builders as Elementor, Beaver Builder, Brizy, Visual Composer, Divi, SiteOrigin, etc... Developers will love his extensible codebase making it a joy to customize and extend. Best friend of Elementor & WooCommerce. Looking for a Multi-Purpose theme? Look no further! Check the demos to realize that it's the only theme you will ever need: https://oceanwp.org/demos/","requires":"5.3","requires_php":"7.2","wporg":true},{"name":"Twenty Twenty-One","slug":"twentytwentyone","version":"1.4","preview_url":"https://wp-themes.com/twentytwentyone/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentytwentyone/screenshot.png?ver=1.4","rating":82,"num_ratings":32,"homepage":"https://wordpress.org/themes/twentytwentyone/","description":"Twenty Twenty-One is a blank canvas for your ideas and it makes the block editor your best brush. With new block patterns, which allow you to create a beautiful layout in a matter of seconds, this theme’s soft colors and eye-catching — yet timeless — design will let your work shine. Take it for a spin! See how Twenty Twenty-One elevates your portfolio, business website, or personal blog.","requires":"5.3","requires_php":"5.6","wporg":true},{"slug":"occasio","version":"","preview_url":"https://themezee.com/themes/occasio/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/12/occasio.jpg","rating":0,"num_ratings":0,"homepage":"https://themezee.com/themes/occasio/","requires":"","requires_php":"","wporg":false},{"name":"Tortuga","slug":"tortuga","version":"2.3.4","preview_url":"https://wp-themes.com/tortuga/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/tortuga/screenshot.jpg?ver=2.3.4","rating":96,"num_ratings":19,"homepage":"https://wordpress.org/themes/tortuga/","description":"Tortuga is a highly flexible and adventurous WordPress theme for your pirate magazine or any news related website. It supports three different post layouts, two sidebar schemes and a Magazine Homepage template based on widgets. Other highlights of Tortuga are the beautiful post slider and header widgets area. Arrr!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Treville","slug":"treville","version":"2.1.4","preview_url":"https://wp-themes.com/treville/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/treville/screenshot.jpg?ver=2.1.4","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/treville/","description":"An elegant Blogging & Magazine WordPress Theme with subtle colors and great typography. Treville supports two navigation menus, advanced post settings and a post slider with fullscreen images!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Wellington","slug":"wellington","version":"2.1.4","preview_url":"https://wp-themes.com/wellington/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/wellington/screenshot.jpg?ver=2.1.4","rating":100,"num_ratings":12,"homepage":"https://wordpress.org/themes/wellington/","description":"Wellington is a clean and simple Magazine WordPress theme with beautiful typography and subtle colors. The theme includes two different post layouts, a featured post slider and thoughtful theme settings in the Customizer.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Poseidon","slug":"poseidon","version":"2.3.4","preview_url":"https://wp-themes.com/poseidon/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/poseidon/screenshot.jpg?ver=2.3.4","rating":96,"num_ratings":16,"homepage":"https://wordpress.org/themes/poseidon/","description":"Poseidon is an elegant designed WordPress theme featuring a splendid fullscreen image slideshow. The clean typography and spacious white layout makes it great to share your stories. You can use the theme as simple blog or easily create a news website with the widget-based Magazine Homepage template.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Napoli","slug":"napoli","version":"2.2.4","preview_url":"https://wp-themes.com/napoli/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/napoli/screenshot.jpg?ver=2.2.4","rating":100,"num_ratings":4,"homepage":"https://wordpress.org/themes/napoli/","description":"Napoli is a beautiful WordPress theme perfectly suited for a food magazine. It features a great featured post slider, smooth typography and a grid-layout for posts. Bon appetit!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Mercia","slug":"mercia","version":"1.9.7","preview_url":"https://wp-themes.com/mercia/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/mercia/screenshot.jpg?ver=1.9.7","rating":100,"num_ratings":1,"homepage":"https://wordpress.org/themes/mercia/","description":"Mercia is a flexible and versatile theme perfect for lifestyle, travel, or fashion magazines. It features a modern and minimalist design with great typropaphy. Of course it works on all screen sizes. With multiple blog layouts and powerful Magazine widgets, you can easily create a stunning and dynamic news website in just a few minutes.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Maxwell","slug":"maxwell","version":"2.3.4","preview_url":"https://wp-themes.com/maxwell/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/maxwell/screenshot.jpg?ver=2.3.4","rating":100,"num_ratings":6,"homepage":"https://wordpress.org/themes/maxwell/","description":"Maxwell is a minimalistic and elegant WordPress theme featuring an ultra clean magazine layout. With a beautiful typography, various post layouts and a gorgeous featured posts slideshow Maxwell truly helps you to stand out.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Harrison","slug":"harrison","version":"1.3.4","preview_url":"https://wp-themes.com/harrison/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/harrison/screenshot.jpg?ver=1.3.4","rating":80,"num_ratings":1,"homepage":"https://wordpress.org/themes/harrison/","description":"Harrison is a highly versatile WordPress Theme and was specially designed for use with the new WordPress Block Editor. The theme supports the latest Gutenberg features and provides different blog layouts and extensive post settings. The clean and elegant design is perfect to create all kinds of websites. You should really try it!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Gridbox","slug":"gridbox","version":"2.3.4","preview_url":"https://wp-themes.com/gridbox/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/gridbox/screenshot.jpg?ver=2.3.4","rating":74,"num_ratings":6,"homepage":"https://wordpress.org/themes/gridbox/","description":"Gridbox is a clean and solid WordPress theme featuring a three-column grid-layout for posts. The theme works out of the box and does not require any complicated setup. It is perfectly suited for a simple magazine, blog or portfolio website.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Chronus","slug":"chronus","version":"2.0.5","preview_url":"https://wp-themes.com/chronus/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/chronus/screenshot.jpg?ver=2.0.5","rating":80,"num_ratings":5,"homepage":"https://wordpress.org/themes/chronus/","description":"Chronus is a fast and lightweight WordPress Theme created for magazines, news websites and personal blogs. The Featured Content section and flexible Magazine Widgets give you the ability to highlight your most important posts on the home page. The minimalistic and responsive design focuses on your content and looks great on any screen size.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Donovan","slug":"donovan","version":"1.8.4","preview_url":"https://wp-themes.com/donovan/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/donovan/screenshot.jpg?ver=1.8.4","rating":96,"num_ratings":16,"homepage":"https://wordpress.org/themes/donovan/","description":"Donovan is a flexible, yet easy-to-use blogging theme with a clean and modern design. It features an elegant mobile-first design, three different blog layouts and extensive post settings. Donovan is perfect for your personal blog or for any content-focused website.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Yosemite Lite","slug":"yosemite-lite","version":"1.2.1","preview_url":"https://wp-themes.com/yosemite-lite/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/yosemite-lite/screenshot.jpg?ver=1.2.1","rating":60,"num_ratings":2,"homepage":"https://wordpress.org/themes/yosemite-lite/","description":"Yosemite is a beautiful WordPress blog theme for personal blogs. Yosemite has a modern, clean and elegant look and lots of customization for bloggers. Built on the latest technology of WordPress, Yosemite is lightweight, fast and optimized for all mobile phones.","requires":false,"requires_php":false,"wporg":true},{"name":"Justread","slug":"justread","version":"1.3.0","preview_url":"https://wp-themes.com/justread/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/justread/screenshot.jpg?ver=1.3.0","rating":100,"num_ratings":5,"homepage":"https://wordpress.org/themes/justread/","description":"Justread is a clean and modern WordPress theme that focuses on reading experience. Justread has a grid layout with single column content. The theme uses system fonts and SVG for fast loading. Enjoy reading long content with comfortability.","requires":false,"requires_php":"5.6","wporg":true},{"name":"Floral Lite","slug":"floral-lite","version":"1.4","preview_url":"https://wp-themes.com/floral-lite/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/floral-lite/screenshot.jpg?ver=1.4","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/floral-lite/","description":"Floral is a beautiful WordPress blog theme for personal blogs. Floral has a modern, clean and elegant look and lots of customization for bloggers. Built on the latest technology of WordPress, Floral is lightweight, fast and optimized for all mobile phones.","requires":"4.5","requires_php":"5.6","wporg":true},{"name":"EightyDays Lite","slug":"eightydays-lite","version":"2.2.7","preview_url":"https://wp-themes.com/eightydays-lite/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"http://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/eightydays-lite/screenshot.png?ver=2.2.7","rating":90,"num_ratings":4,"homepage":"https://wordpress.org/themes/eightydays-lite/","description":"EightyDays is a beautiful WordPress travel theme for travel blogs or magazines. EightyDays has a modern, clean and elegant look and lots of customization for bloggers. Built on the latest technology of WordPress, EightyDays is lightweight, fast and optimized for all mobile phones.","requires":false,"requires_php":false,"wporg":true},{"name":"eStar","slug":"estar","version":"1.3.4","preview_url":"https://wp-themes.com/estar/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/estar/screenshot.png?ver=1.3.4","rating":100,"num_ratings":3,"homepage":"https://wordpress.org/themes/estar/","description":"eStar is a super fast, lightweight (less than 10KB on the front end), responsive and highly customizable WordPress theme suitable for blog, personal portfolio and business websites. It works perfectly with Gutenberg and all WordPress blocks. You can also pair it with any page builder plugin like Elementor, Beaver Builder, Visual Composer, SiteOrigin, Divi, Thrive Architect, Brizy and more. eStar is written from scratch with performance, extensibility, usability and SEO in mind. The theme follows best practices, well-coded and follows the latest web standards (HTML5, SVG, JavaScript). Some of the other features: microdata integration, widget areas, sidebar layouts, custom colors, custom Google fonts, translation ready. Looking for a perfect base theme? Look no further. eStar is fast, fully customizable WordPress theme that you can use for building any kind of website like business agencies, corporate, portfolio, education, university portal, consulting, church, restaurant, medical and so on. Learn more about the theme at https://gretathemes.com/wordpress-themes/estar/","requires":false,"requires_php":"5.6","wporg":true},{"slug":"stow-2","version":"","preview_url":"https://wordpress.com/theme/stow","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/stow.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/stow","requires":"","requires_php":"","wporg":false},{"slug":"shawburn","version":"","preview_url":"https://wordpress.com/theme/shawburn","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/shawborn.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/shawburn","requires":"","requires_php":"","wporg":false},{"slug":"rivington-2","version":"","preview_url":"https://wordpress.com/theme/rivington","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/rivington.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/rivington","requires":"","requires_php":"","wporg":false},{"slug":"redhill-2","version":"","preview_url":"https://wordpress.com/theme/redhill","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/redhill.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/redhill","requires":"","requires_php":"","wporg":false},{"slug":"morden-2","version":"","preview_url":"https://wordpress.com/theme/morden","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/morden.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/morden","requires":"","requires_php":"","wporg":false},{"slug":"maywood-2","version":"","preview_url":"https://wordpress.com/theme/maywood","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/maywood.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/maywood","requires":"","requires_php":"","wporg":false},{"slug":"mayland","version":"","preview_url":"https://wordpress.com/theme/mayland","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/mmayland.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/mayland","requires":"","requires_php":"","wporg":false},{"slug":"leven-2","version":"","preview_url":"https://wordpress.com/theme/leven","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/leven.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/leven","requires":"","requires_php":"","wporg":false},{"slug":"hever-2","version":"","preview_url":"https://wordpress.com/theme/hever","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/hever.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/hever","requires":"","requires_php":"","wporg":false},{"slug":"exford-2","version":"","preview_url":"https://wordpress.com/theme/exford","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/exford.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/exford","requires":"","requires_php":"","wporg":false},{"slug":"brompton-2","version":"","preview_url":"https://wordpress.com/theme/brompton","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/brompton.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/brompton","requires":"","requires_php":"","wporg":false},{"slug":"barnsbury-2","version":"","preview_url":"https://wordpress.com/theme/barnsbury","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/Barnsbury.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/barnsbury","requires":"","requires_php":"","wporg":false},{"slug":"balasana-2","version":"","preview_url":"https://wordpress.com/theme/balasana","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/Balasana.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/balasana","requires":"","requires_php":"","wporg":false},{"slug":"alves-2","version":"","preview_url":"https://wordpress.com/theme/alves","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/Alves.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/alves","requires":"","requires_php":"","wporg":false},{"slug":"varia-2","version":"","preview_url":"https://wordpress.com/theme/varia","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/varia.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/varia","requires":"","requires_php":"","wporg":false},{"name":"Activation","slug":"activation","version":"1.2.2","preview_url":"https://wp-themes.com/activation/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/activation/screenshot.png?ver=1.2.2","rating":100,"num_ratings":1,"homepage":"https://wordpress.org/themes/activation/","description":"Activation is a Primer child theme with a colorful, fitness-focused design.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":false,"wporg":true},{"name":"Velux","slug":"velux","version":"1.1.3","preview_url":"https://wp-themes.com/velux/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/velux/screenshot.png?ver=1.1.3","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/velux/","description":"Velux is a Primer child theme with a clean, professional, and upscale design.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":"5.6.0","wporg":true},{"name":"Scribbles","slug":"scribbles","version":"1.1.2","preview_url":"https://wp-themes.com/scribbles/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/scribbles/screenshot.png?ver=1.1.2","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/scribbles/","description":"Scribbles is a Primer child theme with a playful and fun mood.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.1","requires_php":false,"wporg":true},{"name":"Ascension","slug":"ascension","version":"1.1.5","preview_url":"https://wp-themes.com/ascension/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/ascension/screenshot.png?ver=1.1.5","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/ascension/","description":"Ascension is a Primer child theme with a business-oriented design.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":"5.6.0","wporg":true},{"name":"Uptown Style","slug":"uptown-style","version":"1.1.3","preview_url":"https://wp-themes.com/uptown-style/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/uptown-style/screenshot.png?ver=1.1.3","rating":100,"num_ratings":3,"homepage":"https://wordpress.org/themes/uptown-style/","description":"Uptown Style is a Primer child theme with elegance and class.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":"5.6.0","wporg":true},{"name":"Go","slug":"go","version":"1.4.4","preview_url":"https://wp-themes.com/go/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":"GoDaddy","author_url":"https://www.godaddy.com"},"screenshot_url":"//ts.w.org/wp-content/themes/go/screenshot.png?ver=1.4.4","rating":94,"num_ratings":14,"homepage":"https://wordpress.org/themes/go/","description":"Go is an innovative, Gutenberg-first WordPress theme, hyper-focused on empowering makers to build beautifully rich websites with WordPress.","requires":false,"requires_php":"5.6","wporg":true},{"slug":"navigation-pro","version":"","preview_url":"https://my.studiopress.com/themes/navigation/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/02/navigationPro.jpg","rating":0,"num_ratings":0,"homepage":"https://my.studiopress.com/themes/navigation/","requires":"","requires_php":"","wporg":false},{"name":"Memory","slug":"memory","version":"2.0.1","preview_url":"https://wp-themes.com/memory/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/memory/screenshot.png?ver=2.0.1","rating":60,"num_ratings":1,"homepage":"https://wordpress.org/themes/memory/","description":"Clean and beautiful personal blog theme.","requires":"4.5","requires_php":"5.2","wporg":true},{"slug":"sacha","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/sacha9.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","requires":"","requires_php":"","wporg":false},{"slug":"scott-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/scott.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","requires":"","requires_php":"","wporg":false},{"slug":"katharine-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/katharine.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","requires":"","requires_php":"","wporg":false},{"slug":"joseph-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/joseph-1.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","requires":"","requires_php":"","wporg":false},{"slug":"nelson-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/nelson.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","requires":"","requires_php":"","wporg":false},{"slug":"newspack","version":"","preview_url":"https://github.com/Automattic/newspack-theme","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2019/11/newspack.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme","requires":"","requires_php":"","wporg":false},{"name":"Twenty Twenty","slug":"twentytwenty","version":"1.8","preview_url":"https://wp-themes.com/twentytwenty/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentytwenty/screenshot.png?ver=1.8","rating":88,"num_ratings":60,"homepage":"https://wordpress.org/themes/twentytwenty/","description":"Our default theme for 2020 is designed to take full advantage of the flexibility of the block editor. Organizations and businesses have the ability to create dynamic landing pages with endless layouts using the group and column blocks. The centered content column and fine-tuned typography also makes it perfect for traditional blogs. Complete editor styles give you a good idea of what your content will look like, even before you publish. You can give your site a personal touch by changing the background colors and the accent color in the Customizer. The colors of all elements on your site are automatically calculated based on the colors you pick, ensuring a high, accessible color contrast for your visitors.","requires":"4.7","requires_php":"5.2.4","wporg":true},{"name":"Primer","slug":"primer","version":"1.8.9","preview_url":"https://wp-themes.com/primer/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/primer/screenshot.png?ver=1.8.9","rating":90,"num_ratings":15,"homepage":"https://wordpress.org/themes/primer/","description":"Primer is a powerful theme that brings clarity to your content in a fresh design.","requires":false,"requires_php":false,"wporg":true},{"slug":"essence-pro-theme","version":"","preview_url":"https://my.studiopress.com/themes/essence/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2019/07/cropped-Essence-Pro.png","rating":0,"num_ratings":0,"homepage":"https://my.studiopress.com/themes/essence/","requires":"","requires_php":"","wporg":false},{"slug":"genesis-theme-framework","version":"","preview_url":"https://my.studiopress.com/themes/genesis/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2019/07/cropped-Genesis.png","rating":0,"num_ratings":0,"homepage":"https://my.studiopress.com/themes/genesis/","requires":"","requires_php":"","wporg":false},{"name":"Twenty Fourteen","slug":"twentyfourteen","version":"3.2","preview_url":"https://wp-themes.com/twentyfourteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyfourteen/screenshot.png?ver=3.2","rating":88,"num_ratings":93,"homepage":"https://wordpress.org/themes/twentyfourteen/","description":"In 2014, our default theme lets you create a responsive magazine website with a sleek, modern design. Feature your favorite homepage content in either a grid or a slider. Use the three widget areas to customize your website, and change your content's layout with a full-width page template and a contributor page to show off your authors. Creating a magazine website with WordPress has never been easier.","requires":false,"requires_php":"5.2.4","wporg":true},{"name":"Twenty Thirteen","slug":"twentythirteen","version":"3.4","preview_url":"https://wp-themes.com/twentythirteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentythirteen/screenshot.png?ver=3.4","rating":82,"num_ratings":62,"homepage":"https://wordpress.org/themes/twentythirteen/","description":"The 2013 theme for WordPress takes us back to the blog, featuring a full range of post formats, each displayed beautifully in their own unique way. Design details abound, starting with a vibrant color scheme and matching header images, beautiful typography and icons, and a flexible layout that looks great on any device, big or small.","requires":"3.6","requires_php":"5.2.4","wporg":true},{"name":"Twenty Eleven","slug":"twentyeleven","version":"3.9","preview_url":"https://wp-themes.com/twentyeleven/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyeleven/screenshot.png?ver=3.9","rating":92,"num_ratings":49,"homepage":"https://wordpress.org/themes/twentyeleven/","description":"The 2011 theme for WordPress is sophisticated, lightweight, and adaptable. Make it yours with a custom menu, header image, and background -- then go further with available theme options for light or dark color scheme, custom link colors, and three layout choices. Twenty Eleven comes equipped with a Showcase page template that transforms your front page into a showcase to show off your best content, widget support galore (sidebar, three footer areas, and a Showcase page widget area), and a custom \"Ephemera\" widget to display your Aside, Link, Quote, or Status posts. Included are styles for print and for the admin editor, support for featured images (as custom header images on posts and pages and as large images on featured \"sticky\" posts), and special styles for six different post formats.","requires":false,"requires_php":"5.2.4","wporg":true},{"name":"Twenty Ten","slug":"twentyten","version":"3.5","preview_url":"https://wp-themes.com/twentyten/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyten/screenshot.png?ver=3.5","rating":94,"num_ratings":50,"homepage":"https://wordpress.org/themes/twentyten/","description":"The 2010 theme for WordPress is stylish, customizable, simple, and readable -- make it yours with a custom menu, header image, and background. Twenty Ten supports six widgetized areas (two in the sidebar, four in the footer) and featured images (thumbnails for gallery posts and custom header images for posts and pages). It includes stylesheets for print and the admin Visual Editor, special styles for posts in the \"Asides\" and \"Gallery\" categories, and has an optional one-column page template that removes the sidebar.","requires":"3.0","requires_php":"5.2.4","wporg":true},{"name":"Zakra","slug":"zakra","version":"2.0.3","preview_url":"https://wp-themes.com/zakra/","author":{"user_nicename":"themegrill","profile":"https://profiles.wordpress.org/themegrill","avatar":"https://secure.gravatar.com/avatar/fa3cda768036cc3983458ed23394a43d?s=96&d=monsterid&r=g","display_name":"ThemeGrill","author":"ThemeGrill","author_url":"https://themegrill.com"},"screenshot_url":"//ts.w.org/wp-content/themes/zakra/screenshot.jpg?ver=2.0.3","rating":100,"num_ratings":474,"homepage":"https://wordpress.org/themes/zakra/","description":"Zakra is flexible, fast, lightweight and modern multipurpose theme that comes with many starter free sites (currently 10+ free starter sites and more will be added later) that you can use to make your site beautiful and professional. Check all the starter sites at https://zakratheme.com/demos. Suitable for personal blog, portfolio, WooCommerce stores, business websites and niche-based sites (like Cafe, Spa, Charity, Yoga, Wedding, Dentist, Education etc) as well. Works with Elementor plus other major page builders so you can create any layout you want. The theme is responsive, Gutenberg compatible, SEO friendly, translation ready and major WordPress plugins compatible.","requires":false,"requires_php":"5.6","wporg":true},{"name":"Neve","slug":"neve","version":"3.0.2","preview_url":"https://wp-themes.com/neve/","author":{"user_nicename":"themeisle","profile":"https://profiles.wordpress.org/themeisle","avatar":"https://secure.gravatar.com/avatar/a0ec097eaf5f30933eb00c1175d4bd55?s=96&d=monsterid&r=g","display_name":"Themeisle","author":"ThemeIsle","author_url":"https://themeisle.com"},"screenshot_url":"//ts.w.org/wp-content/themes/neve/screenshot.png?ver=3.0.2","rating":96,"num_ratings":803,"homepage":"https://wordpress.org/themes/neve/","description":"Neve is a super fast, easily customizable, multi-purpose theme. It’s perfect for blogs, small business, startups, agencies, firms, e-commerce shops (WooCommerce storefront) as well as personal portfolio sites and most types of projects. A fully AMP optimized and responsive theme, Neve will load in mere seconds and adapt perfectly on any viewing device. While it is lightweight and has a minimalist design, the theme is highly extendable, it has a highly SEO optimized code, resulting in top rankings in Google search results. Neve works perfectly with Gutenberg and the most popular page builders (Elementor, Brizy, Beaver Builder, Visual Composer, SiteOrigin, Divi). Neve is also WooCommerce ready, responsive, RTL & translation ready. Look no further. Neve is the perfect theme for you!","requires":false,"requires_php":"7.0","wporg":true},{"name":"Astra","slug":"astra","version":"3.6.9","preview_url":"https://wp-themes.com/astra/","author":{"user_nicename":"brainstormforce","profile":"https://profiles.wordpress.org/brainstormforce","avatar":"https://secure.gravatar.com/avatar/9f4255d653745eaa037105cd5eab2295?s=96&d=monsterid&r=g","display_name":"Brainstorm Force","author":"Brainstorm Force","author_url":"https://wpastra.com/about/"},"screenshot_url":"//ts.w.org/wp-content/themes/astra/screenshot.jpg?ver=3.6.9","rating":98,"num_ratings":4979,"homepage":"https://wordpress.org/themes/astra/","description":"Astra is fast, fully customizable & beautiful WordPress theme suitable for blog, personal portfolio, business website and WooCommerce storefront. It is very lightweight (less than 50KB on frontend) and offers unparalleled speed. Built with SEO in mind, Astra comes with Schema.org code integrated and is Native AMP ready so search engines will love your site. It offers special features and templates so it works perfectly with all page builders like Elementor, Beaver Builder, Visual Composer, SiteOrigin, Divi, etc. Some of the other features: # WooCommerce Ready # Responsive # RTL & Translation Ready # Extendible with premium addons # Regularly updated # Designed, Developed, Maintained & Supported by Brainstorm Force. Looking for a perfect base theme? Look no further. Astra is fast, fully customizable and WooCommerce ready theme that you can use for building any kind of website!","requires":"5.3","requires_php":"5.3","wporg":true},{"name":"Twenty Twelve","slug":"twentytwelve","version":"3.5","preview_url":"https://wp-themes.com/twentytwelve/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentytwelve/screenshot.png?ver=3.5","rating":92,"num_ratings":155,"homepage":"https://wordpress.org/themes/twentytwelve/","description":"The 2012 theme for WordPress is a fully responsive theme that looks great on any device. Features include a front page template with its own widgets, an optional display font, styling for post formats on both index and single views, and an optional no-sidebar page template. Make it yours with a custom menu, header image, and background.","requires":"3.5","requires_php":"5.2.4","wporg":true},{"name":"Twenty Nineteen","slug":"twentynineteen","version":"2.1","preview_url":"https://wp-themes.com/twentynineteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentynineteen/screenshot.png?ver=2.1","rating":74,"num_ratings":59,"homepage":"https://wordpress.org/themes/twentynineteen/","description":"Our 2019 default theme is designed to show off the power of the block editor. It features custom styles for all the default blocks, and is built so that what you see in the editor looks like what you'll see on your website. Twenty Nineteen is designed to be adaptable to a wide range of websites, whether you’re running a photo blog, launching a new business, or supporting a non-profit. Featuring ample whitespace and modern sans-serif headlines paired with classic serif body text, it's built to be beautiful on all screen sizes.","requires":"4.9.6","requires_php":"5.2.4","wporg":true},{"name":"Twenty Seventeen","slug":"twentyseventeen","version":"2.8","preview_url":"https://wp-themes.com/twentyseventeen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyseventeen/screenshot.png?ver=2.8","rating":88,"num_ratings":114,"homepage":"https://wordpress.org/themes/twentyseventeen/","description":"Twenty Seventeen brings your site to life with header video and immersive featured images. With a focus on business sites, it features multiple sections on the front page as well as widgets, navigation and social menus, a logo, and more. Personalize its asymmetrical grid with a custom color scheme and showcase your multimedia content with post formats. Our default theme for 2017 works great in many languages, for any abilities, and on any device.","requires":"4.7","requires_php":"5.2.4","wporg":true},{"name":"Twenty Sixteen","slug":"twentysixteen","version":"2.5","preview_url":"https://wp-themes.com/twentysixteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentysixteen/screenshot.png?ver=2.5","rating":82,"num_ratings":79,"homepage":"https://wordpress.org/themes/twentysixteen/","description":"Twenty Sixteen is a modernized take on an ever-popular WordPress layout — the horizontal masthead with an optional right sidebar that works perfectly for blogs and websites. It has custom color options with beautiful default color schemes, a harmonious fluid grid using a mobile-first approach, and impeccable polish in every detail. Twenty Sixteen will make your WordPress look beautiful everywhere.","requires":"4.4","requires_php":"5.2.4","wporg":true},{"name":"Twenty Fifteen","slug":"twentyfifteen","version":"3.0","preview_url":"https://wp-themes.com/twentyfifteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyfifteen/screenshot.png?ver=3.0","rating":88,"num_ratings":50,"homepage":"https://wordpress.org/themes/twentyfifteen/","description":"Our 2015 default theme is clean, blog-focused, and designed for clarity. Twenty Fifteen's simple, straightforward typography is readable on a wide variety of screen sizes, and suitable for multiple languages. We designed it using a mobile-first approach, meaning your content takes center-stage, regardless of whether your visitors arrive by smartphone, tablet, laptop, or desktop computer.","requires":false,"requires_php":"5.2.4","wporg":true}] \ No newline at end of file +[{"name":"Sydney","slug":"sydney","version":"1.79","preview_url":"https://wp-themes.com/sydney/","author":{"user_nicename":"athemes","profile":"https://profiles.wordpress.org/athemes","avatar":"https://secure.gravatar.com/avatar/0fe6c4dee6e201e81783d8a0ee12d83b?s=96&d=monsterid&r=g","display_name":"athemes","author":"aThemes","author_url":"https://athemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/sydney/screenshot.png?ver=1.79","rating":98,"num_ratings":495,"homepage":"https://wordpress.org/themes/sydney/","description":"Sydney is a powerful business theme that provides a fast way for companies or freelancers to create an awesome online presence. As well as being fully compatible with Elementor, Sydney brings plenty of customization possibilities like access to all Google Fonts, full color control, layout control, logo upload, full screen slider, header image, sticky navigation and much more. Also, Sydney provides all the construction blocks you need to rapidly create an engaging front page. Looking for a quick start with Sydney? With just a few clicks, you can import one of our existing demos (https://athemes.com/sydney-demos/)","requires":false,"requires_php":"5.6","wporg":true},{"name":"Really Simple","slug":"really-simple","version":"1.0.7","preview_url":"https://wp-themes.com/really-simple/","author":{"user_nicename":"flauberthenriques","profile":"https://profiles.wordpress.org/flauberthenriques","avatar":"https://secure.gravatar.com/avatar/d524eb0811fa44be90481509b000c779?s=96&d=monsterid&r=g","display_name":"Flaubert Henriques","author":"Flaubert Henriques","author_url":"https://profiles.wordpress.org/flauberthenriques/"},"screenshot_url":"//ts.w.org/wp-content/themes/really-simple/screenshot.png?ver=1.0.7","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/really-simple/","description":"Really Simple is a theme for bloggers and writers who need a ultra light and fast theme. The theme focuses on simplicity and loading speed. Yes, Really Simple Theme is also fully AMP compatible. Check the readme.txt file and leave the sidebar perfect after WordPress 5.8 update.","requires":"5.3","requires_php":"7.0","wporg":true},{"name":"Artpop","slug":"artpop","version":"1.0.7","preview_url":"https://wp-themes.com/artpop/","author":{"user_nicename":"designlabthemes","profile":"https://profiles.wordpress.org/designlabthemes","avatar":"https://secure.gravatar.com/avatar/956873f77232371cb89d8a0d7a516354?s=96&d=monsterid&r=g","display_name":"designlabthemes","author":"Design Lab","author_url":"https://www.designlabthemes.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/artpop/screenshot.png?ver=1.0.7","rating":100,"num_ratings":1,"homepage":"https://wordpress.org/themes/artpop/","description":"Artpop is a beautiful Gutenberg-first WordPress theme, carefully designed to help you build your online brand. Unleash your creativity, Artpop takes care of the rest! Well documented and easy to use even for WordPress beginners, Artpop is perfect for a blog, personal portfolio, small business website, and WooCommerce storefront. Easily set your logo, change colors, and create awesome layouts to give your website a truly unique look.","requires":"4.7","requires_php":"5.6","wporg":true},{"name":"Michelle","slug":"michelle","version":"1.2.0","preview_url":"https://wp-themes.com/michelle/","author":{"user_nicename":"webmandesign","profile":"https://profiles.wordpress.org/webmandesign","avatar":"https://secure.gravatar.com/avatar/f4a334f9f5af61b2bd22fcaadb04dd06?s=96&d=monsterid&r=g","display_name":"WebMan Design | Oliver Juhas","author":"WebMan Design","author_url":"https://www.webmandesign.eu/"},"screenshot_url":"//ts.w.org/wp-content/themes/michelle/screenshot.png?ver=1.2.0","rating":100,"num_ratings":3,"homepage":"https://wordpress.org/themes/michelle/","description":"Michelle is accessibility ready WordPress theme for creating inclusive websites easily and with fun using block editor. Useful block patterns, block styles, templates and featured posts functionality allow you to build an eyecatching website in no time. Customize site footer and error 404 page content with block editor! The theme also works with Beaver Builder, Elementor, or any other page builder. It also supports theme builders! Michelle elevates your business, eCommerce, portfolio, or blog website. Check out the demo at https://themedemos.webmandesign.eu/michelle/ and documentation at https://webmandesign.github.io/docs/michelle/","requires":"5.5","requires_php":"7.0","wporg":true},{"name":"Miniva","slug":"miniva","version":"1.6.3","preview_url":"https://wp-themes.com/miniva/","author":{"user_nicename":"tajam","profile":"https://profiles.wordpress.org/tajam","avatar":"https://secure.gravatar.com/avatar/378d4e715829ccf6f1fbe6dfef6eb539?s=96&d=monsterid&r=g","display_name":"Tajam","author":"Tajam","author_url":"https://tajam.id/"},"screenshot_url":"//ts.w.org/wp-content/themes/miniva/screenshot.png?ver=1.6.3","rating":100,"num_ratings":6,"homepage":"https://wordpress.org/themes/miniva/","description":"A fast, lightweight, and mobile-friendly WordPress theme for bloggers. Miniva is built with simplicity, accessibility and performance in mind. The clean and minimal design helps readers focus on your content. It supports AMP and several Jetpack modules including featured content, infinite scroll, content options and social menu. See the theme demo at https://tajam.id/miniva-demo/","requires":"4.5","requires_php":"5.3","wporg":true},{"name":"Iknow","slug":"iknow","version":"1.2.6","preview_url":"https://wp-themes.com/iknow/","author":{"user_nicename":"wpcalc","profile":"https://profiles.wordpress.org/wpcalc","avatar":"https://secure.gravatar.com/avatar/64ca4933fab3d5e50383f0b514acd5f6?s=96&d=monsterid&r=g","display_name":"Wow-Company","author":"Wow-Company","author_url":"https://wow-company.com"},"screenshot_url":"//ts.w.org/wp-content/themes/iknow/screenshot.png?ver=1.2.6","rating":98,"num_ratings":9,"homepage":"https://wordpress.org/themes/iknow/","description":"Iknow WordPress Theme has a minimalistic, responsive and mobile-friendly design. Easy and fast theme. The theme is perfect for creating Knowledge Base, Helpdesk, Wiki and FAQ websites. Ability to set custom icons for each category and tag. Manage the display of categories on the main page of the site. The integrated post rating system VoteUp/VoteDown. Breadcrumbs for easy site navigation. Custom widget to display the current navigation in a category and in a separate post. You can view the appearance and features of the theme on the site https://wow-company.com/wp-theme-iknow/. Documentation https://wow-company.com/faq/category/wow-themes/iknow/","requires":false,"requires_php":"5.6","wporg":true},{"name":"Kadence","slug":"kadence","version":"1.1.3","preview_url":"https://wp-themes.com/kadence/","author":{"user_nicename":"britner","profile":"https://profiles.wordpress.org/britner","avatar":"https://secure.gravatar.com/avatar/3276133b8df529e6e1e58586ab1a309e?s=96&d=monsterid&r=g","display_name":"Ben Ritner - Kadence WP","author":"Kadence WP","author_url":"https://www.kadencewp.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/kadence/screenshot.png?ver=1.1.3","rating":98,"num_ratings":135,"homepage":"https://wordpress.org/themes/kadence/","description":"Kadence Theme is a lightweight yet full featured WordPress theme for creating beautiful fast loading and accessible websites, easier than ever. It features an easy to use drag and drop header and footer builder to build any type of header in minutes. It features a full library of gorgeous starter templates that are easy to modify with our intelligent global font and color controls. With extensive integration with the most popular 3rd party plugins, you can quickly build impressive ecommerce websites, course websites, business websites, and more.","requires":"5.0","requires_php":"7.0","wporg":true},{"name":"Izo","slug":"izo","version":"1.0.12","preview_url":"https://wp-themes.com/izo/","author":{"user_nicename":"elfwp","profile":"https://profiles.wordpress.org/elfwp","avatar":"https://secure.gravatar.com/avatar/1cfedf4555fea4d8fbba2947635586ea?s=96&d=monsterid&r=g","display_name":"elfwp","author":"elfWP","author_url":"https://elfwp.com"},"screenshot_url":"//ts.w.org/wp-content/themes/izo/screenshot.png?ver=1.0.12","rating":90,"num_ratings":2,"homepage":"https://wordpress.org/themes/izo/","description":"Izo a fast, lightweight, native AMP and fully customizable multipurpose WordPress theme. Features include compatibility with many popular plugins like Elementor and other page builders, WooCommerce, WPML, LifterLMS and more. There is also full support for the new WordPress block editor. Izo is fully responsive and our users can take advantage of the many customizer options to easily change styles. Also, if you're looking for a quick start, we're offering a bunch of free starter sites, ready to easily import.","requires":false,"requires_php":"5.6","wporg":true},{"name":"OceanWP","slug":"oceanwp","version":"3.0.5","preview_url":"https://wp-themes.com/oceanwp/","author":{"user_nicename":"oceanwp","profile":"https://profiles.wordpress.org/oceanwp","avatar":"https://secure.gravatar.com/avatar/05f8d3fe2ccb6479bac14e4d40b406dd?s=96&d=monsterid&r=g","display_name":"oceanwp","author":"Nick","author_url":"https://oceanwp.org/about-me/"},"screenshot_url":"//ts.w.org/wp-content/themes/oceanwp/screenshot.png?ver=3.0.5","rating":98,"num_ratings":4911,"homepage":"https://wordpress.org/themes/oceanwp/","description":"OceanWP is the perfect theme for your project. Lightweight and highly extendable, it will enable you to create almost any type of website such a blog, portfolio, business website and WooCommerce storefront with a beautiful & professional design. Very fast, responsive, RTL & translation ready, best SEO practices, unique WooCommerce features to increase conversion and much more. You can even edit the settings on tablet & mobile so your site looks good on every device. Work with the most popular page builders as Elementor, Beaver Builder, Brizy, Visual Composer, Divi, SiteOrigin, etc... Developers will love his extensible codebase making it a joy to customize and extend. Best friend of Elementor & WooCommerce. Looking for a Multi-Purpose theme? Look no further! Check the demos to realize that it's the only theme you will ever need: https://oceanwp.org/demos/","requires":"5.3","requires_php":"7.2","wporg":true},{"name":"Twenty Twenty-One","slug":"twentytwentyone","version":"1.4","preview_url":"https://wp-themes.com/twentytwentyone/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentytwentyone/screenshot.png?ver=1.4","rating":82,"num_ratings":32,"homepage":"https://wordpress.org/themes/twentytwentyone/","description":"Twenty Twenty-One is a blank canvas for your ideas and it makes the block editor your best brush. With new block patterns, which allow you to create a beautiful layout in a matter of seconds, this theme’s soft colors and eye-catching — yet timeless — design will let your work shine. Take it for a spin! See how Twenty Twenty-One elevates your portfolio, business website, or personal blog.","requires":"5.3","requires_php":"5.6","wporg":true},{"slug":"occasio","version":"","preview_url":"https://themezee.com/themes/occasio/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/12/occasio.jpg","rating":0,"num_ratings":0,"homepage":"https://themezee.com/themes/occasio/","requires":"","requires_php":"","wporg":false},{"name":"Tortuga","slug":"tortuga","version":"2.3.4","preview_url":"https://wp-themes.com/tortuga/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/tortuga/screenshot.jpg?ver=2.3.4","rating":96,"num_ratings":19,"homepage":"https://wordpress.org/themes/tortuga/","description":"Tortuga is a highly flexible and adventurous WordPress theme for your pirate magazine or any news related website. It supports three different post layouts, two sidebar schemes and a Magazine Homepage template based on widgets. Other highlights of Tortuga are the beautiful post slider and header widgets area. Arrr!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Treville","slug":"treville","version":"2.1.4","preview_url":"https://wp-themes.com/treville/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/treville/screenshot.jpg?ver=2.1.4","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/treville/","description":"An elegant Blogging & Magazine WordPress Theme with subtle colors and great typography. Treville supports two navigation menus, advanced post settings and a post slider with fullscreen images!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Wellington","slug":"wellington","version":"2.1.4","preview_url":"https://wp-themes.com/wellington/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/wellington/screenshot.jpg?ver=2.1.4","rating":100,"num_ratings":12,"homepage":"https://wordpress.org/themes/wellington/","description":"Wellington is a clean and simple Magazine WordPress theme with beautiful typography and subtle colors. The theme includes two different post layouts, a featured post slider and thoughtful theme settings in the Customizer.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Poseidon","slug":"poseidon","version":"2.3.4","preview_url":"https://wp-themes.com/poseidon/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/poseidon/screenshot.jpg?ver=2.3.4","rating":96,"num_ratings":16,"homepage":"https://wordpress.org/themes/poseidon/","description":"Poseidon is an elegant designed WordPress theme featuring a splendid fullscreen image slideshow. The clean typography and spacious white layout makes it great to share your stories. You can use the theme as simple blog or easily create a news website with the widget-based Magazine Homepage template.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Napoli","slug":"napoli","version":"2.2.4","preview_url":"https://wp-themes.com/napoli/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/napoli/screenshot.jpg?ver=2.2.4","rating":100,"num_ratings":4,"homepage":"https://wordpress.org/themes/napoli/","description":"Napoli is a beautiful WordPress theme perfectly suited for a food magazine. It features a great featured post slider, smooth typography and a grid-layout for posts. Bon appetit!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Mercia","slug":"mercia","version":"1.9.7","preview_url":"https://wp-themes.com/mercia/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/mercia/screenshot.jpg?ver=1.9.7","rating":100,"num_ratings":1,"homepage":"https://wordpress.org/themes/mercia/","description":"Mercia is a flexible and versatile theme perfect for lifestyle, travel, or fashion magazines. It features a modern and minimalist design with great typropaphy. Of course it works on all screen sizes. With multiple blog layouts and powerful Magazine widgets, you can easily create a stunning and dynamic news website in just a few minutes.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Maxwell","slug":"maxwell","version":"2.3.4","preview_url":"https://wp-themes.com/maxwell/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/maxwell/screenshot.jpg?ver=2.3.4","rating":100,"num_ratings":6,"homepage":"https://wordpress.org/themes/maxwell/","description":"Maxwell is a minimalistic and elegant WordPress theme featuring an ultra clean magazine layout. With a beautiful typography, various post layouts and a gorgeous featured posts slideshow Maxwell truly helps you to stand out.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Harrison","slug":"harrison","version":"1.3.4","preview_url":"https://wp-themes.com/harrison/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/harrison/screenshot.jpg?ver=1.3.4","rating":80,"num_ratings":1,"homepage":"https://wordpress.org/themes/harrison/","description":"Harrison is a highly versatile WordPress Theme and was specially designed for use with the new WordPress Block Editor. The theme supports the latest Gutenberg features and provides different blog layouts and extensive post settings. The clean and elegant design is perfect to create all kinds of websites. You should really try it!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Gridbox","slug":"gridbox","version":"2.3.4","preview_url":"https://wp-themes.com/gridbox/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/gridbox/screenshot.jpg?ver=2.3.4","rating":74,"num_ratings":6,"homepage":"https://wordpress.org/themes/gridbox/","description":"Gridbox is a clean and solid WordPress theme featuring a three-column grid-layout for posts. The theme works out of the box and does not require any complicated setup. It is perfectly suited for a simple magazine, blog or portfolio website.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Chronus","slug":"chronus","version":"2.0.5","preview_url":"https://wp-themes.com/chronus/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/chronus/screenshot.jpg?ver=2.0.5","rating":80,"num_ratings":5,"homepage":"https://wordpress.org/themes/chronus/","description":"Chronus is a fast and lightweight WordPress Theme created for magazines, news websites and personal blogs. The Featured Content section and flexible Magazine Widgets give you the ability to highlight your most important posts on the home page. The minimalistic and responsive design focuses on your content and looks great on any screen size.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Donovan","slug":"donovan","version":"1.8.4","preview_url":"https://wp-themes.com/donovan/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/donovan/screenshot.jpg?ver=1.8.4","rating":96,"num_ratings":16,"homepage":"https://wordpress.org/themes/donovan/","description":"Donovan is a flexible, yet easy-to-use blogging theme with a clean and modern design. It features an elegant mobile-first design, three different blog layouts and extensive post settings. Donovan is perfect for your personal blog or for any content-focused website.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Yosemite Lite","slug":"yosemite-lite","version":"1.2.1","preview_url":"https://wp-themes.com/yosemite-lite/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/yosemite-lite/screenshot.jpg?ver=1.2.1","rating":60,"num_ratings":2,"homepage":"https://wordpress.org/themes/yosemite-lite/","description":"Yosemite is a beautiful WordPress blog theme for personal blogs. Yosemite has a modern, clean and elegant look and lots of customization for bloggers. Built on the latest technology of WordPress, Yosemite is lightweight, fast and optimized for all mobile phones.","requires":false,"requires_php":false,"wporg":true},{"name":"Justread","slug":"justread","version":"1.3.0","preview_url":"https://wp-themes.com/justread/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/justread/screenshot.jpg?ver=1.3.0","rating":100,"num_ratings":5,"homepage":"https://wordpress.org/themes/justread/","description":"Justread is a clean and modern WordPress theme that focuses on reading experience. Justread has a grid layout with single column content. The theme uses system fonts and SVG for fast loading. Enjoy reading long content with comfortability.","requires":false,"requires_php":"5.6","wporg":true},{"name":"Floral Lite","slug":"floral-lite","version":"1.4","preview_url":"https://wp-themes.com/floral-lite/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/floral-lite/screenshot.jpg?ver=1.4","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/floral-lite/","description":"Floral is a beautiful WordPress blog theme for personal blogs. Floral has a modern, clean and elegant look and lots of customization for bloggers. Built on the latest technology of WordPress, Floral is lightweight, fast and optimized for all mobile phones.","requires":"4.5","requires_php":"5.6","wporg":true},{"name":"EightyDays Lite","slug":"eightydays-lite","version":"2.2.7","preview_url":"https://wp-themes.com/eightydays-lite/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"http://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/eightydays-lite/screenshot.png?ver=2.2.7","rating":90,"num_ratings":4,"homepage":"https://wordpress.org/themes/eightydays-lite/","description":"EightyDays is a beautiful WordPress travel theme for travel blogs or magazines. EightyDays has a modern, clean and elegant look and lots of customization for bloggers. Built on the latest technology of WordPress, EightyDays is lightweight, fast and optimized for all mobile phones.","requires":false,"requires_php":false,"wporg":true},{"name":"eStar","slug":"estar","version":"1.3.4","preview_url":"https://wp-themes.com/estar/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/estar/screenshot.png?ver=1.3.4","rating":100,"num_ratings":3,"homepage":"https://wordpress.org/themes/estar/","description":"eStar is a super fast, lightweight (less than 10KB on the front end), responsive and highly customizable WordPress theme suitable for blog, personal portfolio and business websites. It works perfectly with Gutenberg and all WordPress blocks. You can also pair it with any page builder plugin like Elementor, Beaver Builder, Visual Composer, SiteOrigin, Divi, Thrive Architect, Brizy and more. eStar is written from scratch with performance, extensibility, usability and SEO in mind. The theme follows best practices, well-coded and follows the latest web standards (HTML5, SVG, JavaScript). Some of the other features: microdata integration, widget areas, sidebar layouts, custom colors, custom Google fonts, translation ready. Looking for a perfect base theme? Look no further. eStar is fast, fully customizable WordPress theme that you can use for building any kind of website like business agencies, corporate, portfolio, education, university portal, consulting, church, restaurant, medical and so on. Learn more about the theme at https://gretathemes.com/wordpress-themes/estar/","requires":false,"requires_php":"5.6","wporg":true},{"slug":"stow-2","version":"","preview_url":"https://wordpress.com/theme/stow","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/stow.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/stow","requires":"","requires_php":"","wporg":false},{"slug":"shawburn","version":"","preview_url":"https://wordpress.com/theme/shawburn","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/shawborn.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/shawburn","requires":"","requires_php":"","wporg":false},{"slug":"rivington-2","version":"","preview_url":"https://wordpress.com/theme/rivington","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/rivington.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/rivington","requires":"","requires_php":"","wporg":false},{"slug":"redhill-2","version":"","preview_url":"https://wordpress.com/theme/redhill","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/redhill.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/redhill","requires":"","requires_php":"","wporg":false},{"slug":"morden-2","version":"","preview_url":"https://wordpress.com/theme/morden","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/morden.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/morden","requires":"","requires_php":"","wporg":false},{"slug":"maywood-2","version":"","preview_url":"https://wordpress.com/theme/maywood","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/maywood.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/maywood","requires":"","requires_php":"","wporg":false},{"slug":"mayland","version":"","preview_url":"https://wordpress.com/theme/mayland","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/mmayland.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/mayland","requires":"","requires_php":"","wporg":false},{"slug":"leven-2","version":"","preview_url":"https://wordpress.com/theme/leven","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/leven.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/leven","requires":"","requires_php":"","wporg":false},{"slug":"hever-2","version":"","preview_url":"https://wordpress.com/theme/hever","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/hever.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/hever","requires":"","requires_php":"","wporg":false},{"slug":"exford-2","version":"","preview_url":"https://wordpress.com/theme/exford","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/exford.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/exford","requires":"","requires_php":"","wporg":false},{"slug":"brompton-2","version":"","preview_url":"https://wordpress.com/theme/brompton","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/brompton.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/brompton","requires":"","requires_php":"","wporg":false},{"slug":"barnsbury-2","version":"","preview_url":"https://wordpress.com/theme/barnsbury","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/Barnsbury.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/barnsbury","requires":"","requires_php":"","wporg":false},{"slug":"balasana-2","version":"","preview_url":"https://wordpress.com/theme/balasana","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/Balasana.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/balasana","requires":"","requires_php":"","wporg":false},{"slug":"alves-2","version":"","preview_url":"https://wordpress.com/theme/alves","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/Alves.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/alves","requires":"","requires_php":"","wporg":false},{"slug":"varia-2","version":"","preview_url":"https://wordpress.com/theme/varia","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/varia.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/varia","requires":"","requires_php":"","wporg":false},{"name":"Activation","slug":"activation","version":"1.2.2","preview_url":"https://wp-themes.com/activation/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/activation/screenshot.png?ver=1.2.2","rating":100,"num_ratings":1,"homepage":"https://wordpress.org/themes/activation/","description":"Activation is a Primer child theme with a colorful, fitness-focused design.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":false,"wporg":true},{"name":"Velux","slug":"velux","version":"1.1.3","preview_url":"https://wp-themes.com/velux/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/velux/screenshot.png?ver=1.1.3","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/velux/","description":"Velux is a Primer child theme with a clean, professional, and upscale design.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":"5.6.0","wporg":true},{"name":"Scribbles","slug":"scribbles","version":"1.1.2","preview_url":"https://wp-themes.com/scribbles/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/scribbles/screenshot.png?ver=1.1.2","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/scribbles/","description":"Scribbles is a Primer child theme with a playful and fun mood.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.1","requires_php":false,"wporg":true},{"name":"Ascension","slug":"ascension","version":"1.1.5","preview_url":"https://wp-themes.com/ascension/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/ascension/screenshot.png?ver=1.1.5","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/ascension/","description":"Ascension is a Primer child theme with a business-oriented design.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":"5.6.0","wporg":true},{"name":"Uptown Style","slug":"uptown-style","version":"1.1.3","preview_url":"https://wp-themes.com/uptown-style/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/uptown-style/screenshot.png?ver=1.1.3","rating":100,"num_ratings":3,"homepage":"https://wordpress.org/themes/uptown-style/","description":"Uptown Style is a Primer child theme with elegance and class.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":"5.6.0","wporg":true},{"name":"Go","slug":"go","version":"1.4.4","preview_url":"https://wp-themes.com/go/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":"GoDaddy","author_url":"https://www.godaddy.com"},"screenshot_url":"//ts.w.org/wp-content/themes/go/screenshot.png?ver=1.4.4","rating":94,"num_ratings":14,"homepage":"https://wordpress.org/themes/go/","description":"Go is an innovative, Gutenberg-first WordPress theme, hyper-focused on empowering makers to build beautifully rich websites with WordPress.","requires":false,"requires_php":"5.6","wporg":true},{"slug":"navigation-pro","version":"","preview_url":"https://my.studiopress.com/themes/navigation/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/02/navigationPro.jpg","rating":0,"num_ratings":0,"homepage":"https://my.studiopress.com/themes/navigation/","requires":"","requires_php":"","wporg":false},{"name":"Memory","slug":"memory","version":"2.0.1","preview_url":"https://wp-themes.com/memory/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/memory/screenshot.png?ver=2.0.1","rating":60,"num_ratings":1,"homepage":"https://wordpress.org/themes/memory/","description":"Clean and beautiful personal blog theme.","requires":"4.5","requires_php":"5.2","wporg":true},{"slug":"sacha","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/sacha9.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","requires":"","requires_php":"","wporg":false},{"slug":"scott-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/scott.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","requires":"","requires_php":"","wporg":false},{"slug":"katharine-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/katharine.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","requires":"","requires_php":"","wporg":false},{"slug":"joseph-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/joseph-1.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","requires":"","requires_php":"","wporg":false},{"slug":"nelson-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/nelson.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","requires":"","requires_php":"","wporg":false},{"slug":"newspack","version":"","preview_url":"https://github.com/Automattic/newspack-theme","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2019/11/newspack.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme","requires":"","requires_php":"","wporg":false},{"name":"Twenty Twenty","slug":"twentytwenty","version":"1.8","preview_url":"https://wp-themes.com/twentytwenty/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentytwenty/screenshot.png?ver=1.8","rating":88,"num_ratings":60,"homepage":"https://wordpress.org/themes/twentytwenty/","description":"Our default theme for 2020 is designed to take full advantage of the flexibility of the block editor. Organizations and businesses have the ability to create dynamic landing pages with endless layouts using the group and column blocks. The centered content column and fine-tuned typography also makes it perfect for traditional blogs. Complete editor styles give you a good idea of what your content will look like, even before you publish. You can give your site a personal touch by changing the background colors and the accent color in the Customizer. The colors of all elements on your site are automatically calculated based on the colors you pick, ensuring a high, accessible color contrast for your visitors.","requires":"4.7","requires_php":"5.2.4","wporg":true},{"name":"Primer","slug":"primer","version":"1.8.9","preview_url":"https://wp-themes.com/primer/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/primer/screenshot.png?ver=1.8.9","rating":90,"num_ratings":15,"homepage":"https://wordpress.org/themes/primer/","description":"Primer is a powerful theme that brings clarity to your content in a fresh design.","requires":false,"requires_php":false,"wporg":true},{"slug":"essence-pro-theme","version":"","preview_url":"https://my.studiopress.com/themes/essence/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2019/07/cropped-Essence-Pro.png","rating":0,"num_ratings":0,"homepage":"https://my.studiopress.com/themes/essence/","requires":"","requires_php":"","wporg":false},{"slug":"genesis-theme-framework","version":"","preview_url":"https://my.studiopress.com/themes/genesis/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2019/07/cropped-Genesis.png","rating":0,"num_ratings":0,"homepage":"https://my.studiopress.com/themes/genesis/","requires":"","requires_php":"","wporg":false},{"name":"Twenty Fourteen","slug":"twentyfourteen","version":"3.2","preview_url":"https://wp-themes.com/twentyfourteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyfourteen/screenshot.png?ver=3.2","rating":88,"num_ratings":93,"homepage":"https://wordpress.org/themes/twentyfourteen/","description":"In 2014, our default theme lets you create a responsive magazine website with a sleek, modern design. Feature your favorite homepage content in either a grid or a slider. Use the three widget areas to customize your website, and change your content's layout with a full-width page template and a contributor page to show off your authors. Creating a magazine website with WordPress has never been easier.","requires":false,"requires_php":"5.2.4","wporg":true},{"name":"Twenty Thirteen","slug":"twentythirteen","version":"3.4","preview_url":"https://wp-themes.com/twentythirteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentythirteen/screenshot.png?ver=3.4","rating":82,"num_ratings":62,"homepage":"https://wordpress.org/themes/twentythirteen/","description":"The 2013 theme for WordPress takes us back to the blog, featuring a full range of post formats, each displayed beautifully in their own unique way. Design details abound, starting with a vibrant color scheme and matching header images, beautiful typography and icons, and a flexible layout that looks great on any device, big or small.","requires":"3.6","requires_php":"5.2.4","wporg":true},{"name":"Twenty Eleven","slug":"twentyeleven","version":"3.9","preview_url":"https://wp-themes.com/twentyeleven/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyeleven/screenshot.png?ver=3.9","rating":92,"num_ratings":49,"homepage":"https://wordpress.org/themes/twentyeleven/","description":"The 2011 theme for WordPress is sophisticated, lightweight, and adaptable. Make it yours with a custom menu, header image, and background -- then go further with available theme options for light or dark color scheme, custom link colors, and three layout choices. Twenty Eleven comes equipped with a Showcase page template that transforms your front page into a showcase to show off your best content, widget support galore (sidebar, three footer areas, and a Showcase page widget area), and a custom \"Ephemera\" widget to display your Aside, Link, Quote, or Status posts. Included are styles for print and for the admin editor, support for featured images (as custom header images on posts and pages and as large images on featured \"sticky\" posts), and special styles for six different post formats.","requires":false,"requires_php":"5.2.4","wporg":true},{"name":"Twenty Ten","slug":"twentyten","version":"3.5","preview_url":"https://wp-themes.com/twentyten/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyten/screenshot.png?ver=3.5","rating":94,"num_ratings":50,"homepage":"https://wordpress.org/themes/twentyten/","description":"The 2010 theme for WordPress is stylish, customizable, simple, and readable -- make it yours with a custom menu, header image, and background. Twenty Ten supports six widgetized areas (two in the sidebar, four in the footer) and featured images (thumbnails for gallery posts and custom header images for posts and pages). It includes stylesheets for print and the admin Visual Editor, special styles for posts in the \"Asides\" and \"Gallery\" categories, and has an optional one-column page template that removes the sidebar.","requires":"3.0","requires_php":"5.2.4","wporg":true},{"name":"Zakra","slug":"zakra","version":"2.0.3","preview_url":"https://wp-themes.com/zakra/","author":{"user_nicename":"themegrill","profile":"https://profiles.wordpress.org/themegrill","avatar":"https://secure.gravatar.com/avatar/fa3cda768036cc3983458ed23394a43d?s=96&d=monsterid&r=g","display_name":"ThemeGrill","author":"ThemeGrill","author_url":"https://themegrill.com"},"screenshot_url":"//ts.w.org/wp-content/themes/zakra/screenshot.jpg?ver=2.0.3","rating":100,"num_ratings":474,"homepage":"https://wordpress.org/themes/zakra/","description":"Zakra is flexible, fast, lightweight and modern multipurpose theme that comes with many starter free sites (currently 10+ free starter sites and more will be added later) that you can use to make your site beautiful and professional. Check all the starter sites at https://zakratheme.com/demos. Suitable for personal blog, portfolio, WooCommerce stores, business websites and niche-based sites (like Cafe, Spa, Charity, Yoga, Wedding, Dentist, Education etc) as well. Works with Elementor plus other major page builders so you can create any layout you want. The theme is responsive, Gutenberg compatible, SEO friendly, translation ready and major WordPress plugins compatible.","requires":false,"requires_php":"5.6","wporg":true},{"name":"Neve","slug":"neve","version":"3.0.2","preview_url":"https://wp-themes.com/neve/","author":{"user_nicename":"themeisle","profile":"https://profiles.wordpress.org/themeisle","avatar":"https://secure.gravatar.com/avatar/a0ec097eaf5f30933eb00c1175d4bd55?s=96&d=monsterid&r=g","display_name":"Themeisle","author":"ThemeIsle","author_url":"https://themeisle.com"},"screenshot_url":"//ts.w.org/wp-content/themes/neve/screenshot.png?ver=3.0.2","rating":96,"num_ratings":803,"homepage":"https://wordpress.org/themes/neve/","description":"Neve is a super fast, easily customizable, multi-purpose theme. It’s perfect for blogs, small business, startups, agencies, firms, e-commerce shops (WooCommerce storefront) as well as personal portfolio sites and most types of projects. A fully AMP optimized and responsive theme, Neve will load in mere seconds and adapt perfectly on any viewing device. While it is lightweight and has a minimalist design, the theme is highly extendable, it has a highly SEO optimized code, resulting in top rankings in Google search results. Neve works perfectly with Gutenberg and the most popular page builders (Elementor, Brizy, Beaver Builder, Visual Composer, SiteOrigin, Divi). Neve is also WooCommerce ready, responsive, RTL & translation ready. Look no further. Neve is the perfect theme for you!","requires":false,"requires_php":"7.0","wporg":true},{"name":"Astra","slug":"astra","version":"3.6.9","preview_url":"https://wp-themes.com/astra/","author":{"user_nicename":"brainstormforce","profile":"https://profiles.wordpress.org/brainstormforce","avatar":"https://secure.gravatar.com/avatar/9f4255d653745eaa037105cd5eab2295?s=96&d=monsterid&r=g","display_name":"Brainstorm Force","author":"Brainstorm Force","author_url":"https://wpastra.com/about/"},"screenshot_url":"//ts.w.org/wp-content/themes/astra/screenshot.jpg?ver=3.6.9","rating":98,"num_ratings":4979,"homepage":"https://wordpress.org/themes/astra/","description":"Astra is fast, fully customizable & beautiful WordPress theme suitable for blog, personal portfolio, business website and WooCommerce storefront. It is very lightweight (less than 50KB on frontend) and offers unparalleled speed. Built with SEO in mind, Astra comes with Schema.org code integrated and is Native AMP ready so search engines will love your site. It offers special features and templates so it works perfectly with all page builders like Elementor, Beaver Builder, Visual Composer, SiteOrigin, Divi, etc. Some of the other features: # WooCommerce Ready # Responsive # RTL & Translation Ready # Extendible with premium addons # Regularly updated # Designed, Developed, Maintained & Supported by Brainstorm Force. Looking for a perfect base theme? Look no further. Astra is fast, fully customizable and WooCommerce ready theme that you can use for building any kind of website!","requires":"5.3","requires_php":"5.3","wporg":true},{"name":"Twenty Twelve","slug":"twentytwelve","version":"3.5","preview_url":"https://wp-themes.com/twentytwelve/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentytwelve/screenshot.png?ver=3.5","rating":92,"num_ratings":155,"homepage":"https://wordpress.org/themes/twentytwelve/","description":"The 2012 theme for WordPress is a fully responsive theme that looks great on any device. Features include a front page template with its own widgets, an optional display font, styling for post formats on both index and single views, and an optional no-sidebar page template. Make it yours with a custom menu, header image, and background.","requires":"3.5","requires_php":"5.2.4","wporg":true},{"name":"Twenty Nineteen","slug":"twentynineteen","version":"2.1","preview_url":"https://wp-themes.com/twentynineteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentynineteen/screenshot.png?ver=2.1","rating":74,"num_ratings":59,"homepage":"https://wordpress.org/themes/twentynineteen/","description":"Our 2019 default theme is designed to show off the power of the block editor. It features custom styles for all the default blocks, and is built so that what you see in the editor looks like what you'll see on your website. Twenty Nineteen is designed to be adaptable to a wide range of websites, whether you’re running a photo blog, launching a new business, or supporting a non-profit. Featuring ample whitespace and modern sans-serif headlines paired with classic serif body text, it's built to be beautiful on all screen sizes.","requires":"4.9.6","requires_php":"5.2.4","wporg":true},{"name":"Twenty Seventeen","slug":"twentyseventeen","version":"2.8","preview_url":"https://wp-themes.com/twentyseventeen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyseventeen/screenshot.png?ver=2.8","rating":88,"num_ratings":115,"homepage":"https://wordpress.org/themes/twentyseventeen/","description":"Twenty Seventeen brings your site to life with header video and immersive featured images. With a focus on business sites, it features multiple sections on the front page as well as widgets, navigation and social menus, a logo, and more. Personalize its asymmetrical grid with a custom color scheme and showcase your multimedia content with post formats. Our default theme for 2017 works great in many languages, for any abilities, and on any device.","requires":"4.7","requires_php":"5.2.4","wporg":true},{"name":"Twenty Sixteen","slug":"twentysixteen","version":"2.5","preview_url":"https://wp-themes.com/twentysixteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentysixteen/screenshot.png?ver=2.5","rating":82,"num_ratings":79,"homepage":"https://wordpress.org/themes/twentysixteen/","description":"Twenty Sixteen is a modernized take on an ever-popular WordPress layout — the horizontal masthead with an optional right sidebar that works perfectly for blogs and websites. It has custom color options with beautiful default color schemes, a harmonious fluid grid using a mobile-first approach, and impeccable polish in every detail. Twenty Sixteen will make your WordPress look beautiful everywhere.","requires":"4.4","requires_php":"5.2.4","wporg":true},{"name":"Twenty Fifteen","slug":"twentyfifteen","version":"3.0","preview_url":"https://wp-themes.com/twentyfifteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyfifteen/screenshot.png?ver=3.0","rating":88,"num_ratings":50,"homepage":"https://wordpress.org/themes/twentyfifteen/","description":"Our 2015 default theme is clean, blog-focused, and designed for clarity. Twenty Fifteen's simple, straightforward typography is readable on a wide variety of screen sizes, and suitable for multiple languages. We designed it using a mobile-first approach, meaning your content takes center-stage, regardless of whether your visitors arrive by smartphone, tablet, laptop, or desktop computer.","requires":false,"requires_php":"5.2.4","wporg":true}] \ No newline at end of file From 68b73acb580a9ddb4d40daf9cd73224725f65a07 Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Sat, 4 Sep 2021 19:54:32 +0530 Subject: [PATCH 005/105] Update json file for plugin --- data/plugins.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/plugins.json b/data/plugins.json index 6313a94694c..633c9b87005 100644 --- a/data/plugins.json +++ b/data/plugins.json @@ -1 +1 @@ -[{"name":"Podcast Player – Your Podcasting Companion","slug":"podcast-player","version":"5.0.1","author":"vedathemes","author_profile":"https://profiles.wordpress.org/vedathemes","requires":"4.9","tested":"5.8","requires_php":"5.6","rating":98,"ratings":{"1":0,"2":1,"3":0,"4":2,"5":43},"num_ratings":46,"support_threads":8,"support_threads_resolved":6,"active_installs":8000,"downloaded":111293,"last_updated":"2021-08-09 4:59am GMT","added":"2019-02-06","homepage":"https://vedathemes.com/podcast-player/","short_description":"Showcase your podcast only using podcasting feed url. Use custom widget, shortcode or editor block to display podcast player anywhere on your site.","description":"

Podcast Player provides an easy way to show and play your podcast episodes using podcasting feed url. It is a must have plugin for your podcast website. Give your listeners an easy access to all your episodes from any page or even from all the pages of your website.

\n

Podcast Player Pro | Documentation

\n\n

Podcast player key features

\n
    \n
  • Give your listeners an easy access to your podcast episodes.
  • \n
  • Display responsive podcast player just by entering your podcast’s feed url.
  • \n
  • Fetch all required details from feed url.
  • \n
  • Option to modify fetched details of your podcast.
  • \n
  • Option to Show or Hide individual player elements.
  • \n
  • Give your listener an option to share your podcast episodes.
  • \n
  • Ajax live search episodes from the podcast.
  • \n
  • It is possible to have multiple instances of podcast player on single page.
  • \n
  • Self adjusting layout according to width of the podcast player.
  • \n
\n

Podcast player pro features

\n
    \n
  • Professionally showcase your podcast using our unified player, episode list and grid templates.
  • \n
  • Use powerful filter options to choose which episodes or seasons you want to display on your website.
  • \n
  • Make your entire podcast catalogue easily available using our ajax approximate search feature.
  • \n
  • Add an audio message within your podcast episode.
  • \n
  • Add audio mp3 to your WordPress posts and display as podcast episodes.
  • \n
  • Show or hide specific elements and customize color and fonts to personalize your podcast display
  • \n
\n

Setup Podcast Player Widget

\n

Display searchable podcast episodes list on any widget area of your website.

\n

Minimum Setup

\n
    \n
  1. After activating the plugin, visit Appearance > Widgets in admin dashboard.
  2. \n
  3. Look for ‘Podcast player’ widget in left ‘Available Widgets’ section.
  4. \n
  5. Drag the widget to any available sidebar/widget area.
  6. \n
  7. Enter feed url in the appropriate field.
  8. \n
  9. Click [Save] button.
  10. \n
\n

Advanced Setup

\n
    \n
  1. After activating the plugin, visit Appearance > Widgets in admin dashboard.
  2. \n
  3. Look for ‘Podcast player’ widget in left ‘Available Widgets’ section.
  4. \n
  5. Drag the widget to any available sidebar/widget area.
  6. \n
  7. Enter feed url in the appropriate field.
  8. \n
  9. Optionally, click on “Change podcast content” button to customize feed’s auto fetched details.
  10. \n
  11. Optionally, click on “Show/Hide player items” button to show or hide player elements.
  12. \n
  13. Optionally, click on “Podcast player styling” button to customize player’s accent color.
  14. \n
  15. Optionally, click on “Sort & Filter” button to sort or filter podcast episodes.
  16. \n
  17. Click [Save] button.
  18. \n
\n

Setup Podcast Player Block

\n

Display searchable podcast episodes list on any post or page. Make sure you have not disabled WordPress latest block editor.

\n

Setup

\n
    \n
  1. After activating the plugin, visit any post or page’s edit screen.
  2. \n
  3. In main content area, click on ‘+’ icon to add a new block.
  4. \n
  5. Search for ‘Podcast Player’ block.
  6. \n
  7. Enter feed url in the appropriate field. A preview of your podcast player will appear.
  8. \n
  9. Click on the podcast player preview.
  10. \n
  11. Select appropriate options from the right sidebar to customize the player.
  12. \n
  13. Save or Update the post.
  14. \n
\n

Setup Podcast Player using shortcode

\n

Minimum Setup

\n
[podcastplayer feed_url ='']\n
\n
    \n
  1. feed_url – Your podcast feed url.
  2. \n
\n

Advanced Setup

\n
[podcastplayer feed_url ='' number='' podcast_menu='' cover_image_url='' hide_cover='true' hide_description='true' hide_subscribe='true' hide_search='true' hide_loadmore='true' hide_download='true' accent_color='#65b84f']Short Description [/podcastplayer]\n
\n
    \n
  1. feed_url: Your podcast feed url.
  2. \n
  3. number: Number of podcasts episodes to be displayed at a time.
  4. \n
  5. podcast_menu: Any previously created WordPress menu’s name OR ID OR slug. (optional)
  6. \n
  7. cover_image_url: Podcast’s cover image url. The image must be from your WP media library. (optional)
  8. \n
  9. header_default: (false/true) Show player header items by default
  10. \n
  11. hide_header: Hide player header items
  12. \n
  13. hide_title: (false/true) Show / Hide podcast Title in header info section
  14. \n
  15. hide_cover: (false/true) Show / Hide podcast cover image
  16. \n
  17. hide_description: (false/true) Show / Hide podcast description
  18. \n
  19. hide_subscribe: (false/true) Show / Hide podcast subscribe button.
  20. \n
  21. hide_search: (false/true) Show / Hide podcast search field.
  22. \n
  23. hide_author: (false/true) Show / Hide author/podcaster’s name.
  24. \n
  25. hide_content: (false/true) Show / Hide podcast episode’s content.
  26. \n
  27. hide_loadmore: (false/true) Show / Hide podcast load more button.
  28. \n
  29. hide_download: (false/true) Show/ Hide podcast episode download link.
  30. \n
  31. hide_social: (false/true) Show/ Hide podcast episode social sharing links.
  32. \n
  33. accent_color: Podcast player’s accent color (Color hex-code to be entered).
  34. \n
  35. sortby: Sort podcast episodes (sort_date_desc/sort_date_asc/sort_title_desc/sort_title_asc)
  36. \n
  37. filterby: Filter by any string in episode’s title
  38. \n
  39. list_default: (false/true) Display Episodes list by default on small screen
  40. \n
  41. hide_featured: (false/true) Show / Hide podcast episode featured image
  42. \n
  43. apple_sub: Apple podcast subscription link
  44. \n
  45. google_sub: Google podcast subscription link
  46. \n
  47. Short Description: Podcast short text description. (optional)
  48. \n
\n","download_link":"https://downloads.wordpress.org/plugin/podcast-player.5.0.1.zip","tags":{"feed-to-audio":"feed to audio","podcast":"podcast","podcaster":"podcaster","podcasting":"podcasting","rss-feed":"rss feed"},"donate_link":"","icons":{"1x":"https://ps.w.org/podcast-player/assets/icon-256x256.png?rev=2025683","2x":"https://ps.w.org/podcast-player/assets/icon-256x256.png?rev=2025683"},"wporg":true},{"name":"WPSSO Schema JSON-LD Markup | Google Rich Results, Rich Snippets, and Structured Data","slug":"wpsso-schema-json-ld","version":"4.18.0","author":"JS Morisset","author_profile":"https://profiles.wordpress.org/jsmoriss","requires":"5.0","tested":"5.8","requires_php":"7.0","rating":90,"ratings":{"1":5,"2":2,"3":1,"4":1,"5":54},"num_ratings":63,"support_threads":3,"support_threads_resolved":3,"active_installs":4000,"downloaded":282675,"last_updated":"2021-09-03 6:34pm GMT","added":"2016-02-14","homepage":"https://wpsso.com/extend/plugins/wpsso-schema-json-ld/","short_description":"Google Rich Results for Articles, Carousels, Events, FAQ pages, How-Tos, Local SEO, Products, Recipes, Ratings,…","description":"

Supports over 500 different Schema (aka Schema.org) types and sub-types:

\n

Google Rich Results with JSON-LD structured data for Articles, Carousels (aka Item Lists), Claim Reviews, Events, FAQ pages, How-Tos, Images, Local Business / Local SEO, Organizations, Products, Ratings, Recipes, Restaurants, Reviews, Video Objects, and much more.

\n

Reads your existing content, plugin data, and service API data:

\n

There’s no need to manually re-enter descriptions, titles, product information, and re-select images / videos like other SEO and Schema markup plugins.

\n

Provides comprehensive Schema JSON-LD markup for posts, pages, custom post types, terms (category, tags, etc.), custom taxonomies, user profile pages, search result pages, archive pages, and Accelerated Mobile Pages (AMP) pages – including image SEO, video SEO, local business, organization, publisher, person, author and co-authors, extensive e-Commerce product markup, product variations, product ratings, aggregate ratings, reviews, recipe information, event details, collection pages, profile pages, search pages, FAQ pages, item lists for Google’s Carousel Rich Results, and much more.

\n

Most complete Schema JSON-LD markup for WooCommerce products:

\n

Note that WooCommerce offers incomplete Schema markup for Google Rich Results by default. The WPSSO Core Premium plugin and this add-on provide a solution by offering complete product meta tags for Facebook / Pinterest and complete Schema product markup for Google Rich Results – including additional product images, product variations, product information (brand, color, condition, EAN, dimensions, GTIN-8/12/13/14, ISBN, material, MPN, size, SKU, volume, weight, etc), product reviews, product ratings, sale start / end dates, sale prices, pre-tax prices, VAT prices, shipping rates, shipping times, and much, much more.

\n

Fixes all Google Search Console and Schema Markup Validator (aka Google Structured Data Testing Tool) errors:

\n
    \n
  • A value for the headline field is required.
  • \n
  • A value for the image field is required.
  • \n
  • A value for the logo field is required.
  • \n
  • A value for the publisher field is required.
  • \n
  • The aggregateRating field is recommended.
  • \n
  • The brand field is recommended.
  • \n
  • The headline field is recommended.
  • \n
  • The image field is recommended.
  • \n
  • The mainEntityOfPage field is recommended.
  • \n
  • The review field is recommended.
  • \n
  • This Product is missing a global identifier (e.g. isbn, mpn or gtin8).
  • \n
  • No global identifier provided (e.g. gtin mpn isbn).
  • \n
  • Not a known valid target type for the itemReviewed property.
  • \n
  • And more…
  • \n
\n

Some Schema property values may require data from WPSSO Core Premium supported third-party plugins and service APIs.

\n

Google regularly updates and changes their Schema markup requirements – WPSSO JSON Premium customers can also open a Premium support ticket for timely assistance with any new Google testing tool errors.

\n

Users Love the WPSSO JSON Add-on

\n

★★★★★ – “Forget everything else this is the best schema plugin – Sincerely, we bought other plugins that we had to abandon due to the lack of important features, but with this [WPSSO JSON] we get all that we need – and our schema has more features than the competition!” – zuki305

\n

★★★★★ – “Tried three other plugins before this one – for our Woocommerce site, this was by far the best one. Thanks!” – EntoMarket

\n

★★★★★ – “Crazy good! This plugin is one of my favorites! JS aggressively develops and improves this suite of plugins, continuously improving and adding features – with great customer support to boot! Highly recommended to improve your SEO for all kinds of JSON schemas!” – mikegoubeaux

\n

★★★★★ – “This plugin is heaven sent. I know little about SSO and this has taken care of everything. The support makes this an even better plugin to have. Keep up the great work!” – kevanchetty

\n

WPSSO JSON Add-on Features

\n

Extends the features of the WPSSO Core plugin (required plugin).

\n

Provides accurate and comprehensive Schema JSON-LD markup for Google Rich Results (aka Rich Snippets) with Structured Data.

\n

Provides complete Schema ImageObject SEO markup with image information from the WordPress Media Library (name, alternateName, alternativeHeadline, caption, description, fileFormat, uploadDate, and more).

\n

Provides complete Schema VideoObject SEO markup with video information from WPSSO Core Premium service APIs (Facebook, Slideshare, Soundcloud, Vimeo, Wistia, YouTube) including the ’embedUrl’ and ‘contentUrl’ properties for Google.

\n

Provides Schema 1:1, 4:3, and 16:9 images for Google Rich Results (see the Google rich results search library for details).

\n

Provides Schema FAQPage and Question / Answer markup for the WPSSO FAQ Manager add-on.

\n

Includes Schema JSON-LD scripts from shortcodes and WordPress editor blocks in the Schema CreativeWork type and sub-types.

\n

Built-in support for AMP and AMP for WP plugins.

\n

Includes contributor markup for Co-Authors Plus authors and guest authors (WPSSO Core Premium plugin required).

\n

Supports additional custom product information and WooCommerce product attributes from the WPSSO Core Premium plugin:

\n
    \n
  • Product Availability
  • \n
  • Product Brand
  • \n
  • Product Color
  • \n
  • Product Condition
  • \n
  • Product Depth
  • \n
  • Product Fluid Volume
  • \n
  • Product GTIN-14
  • \n
  • Product GTIN-13 (EAN)
  • \n
  • Product GTIN-12 (UPC)
  • \n
  • Product GTIN-8
  • \n
  • Product GTIN
  • \n
  • Product ISBN
  • \n
  • Product Length
  • \n
  • Product Material
  • \n
  • Product MPN
  • \n
  • Product Price
  • \n
  • Product Size
  • \n
  • Product SKU
  • \n
  • Product Target Gender
  • \n
  • Product Type
  • \n
  • Product Weight
  • \n
  • Product Width
  • \n
\n

Provides Schema Product markup for Google price drop appearance in search results.

\n

Fixes common Google testing tool warnings like “aggregateRating field is recommended” and “review field is recommended”.

\n

Fixes Google testing tool warnings for supported WPSSO Core Premium e-commerce products, like “brand field is recommended”, “missing a global identifier”, etc.

\n

The WPSSO Schema JSON-LD Markup Standard add-on is designed to satisfy the requirements of most standard WordPress sites. If your content requires additional customization of some Schema properties for products, events, places / locations, recipes, etc., then you may want to get the WPSSO JSON Premium add-on for those additional features.

\n

[Premium] Includes additional customizable option values in the Document SSO metabox (shown based on the Schema Type selected):

\n
    \n
  • All Schema Types\n
      \n
    • Name (Title)
    • \n
    • Alternate Name
    • \n
    • Description
    • \n
    • Microdata Type URLs
    • \n
    • Same-As URLs
    • \n
    \n
  • \n
  • Creative Work Information\n
      \n
    • Is Part of URL
    • \n
    • Headline
    • \n
    • Full Text
    • \n
    • Keywords
    • \n
    • Language
    • \n
    • Family Friendly
    • \n
    • Copyright Year
    • \n
    • License URL
    • \n
    • Publisher (Org)
    • \n
    • Publisher (Person)
    • \n
    • Service Provider (Org)
    • \n
    • Service Provider (Person)
    • \n
    \n
  • \n
  • Event Information\n
      \n
    • Event Language
    • \n
    • Event Attendance
    • \n
    • Event Online URL
    • \n
    • Event Physical Venue
    • \n
    • Event Organizer (Org)
    • \n
    • Event Organizer (Person)
    • \n
    • Event Performer (Org)
    • \n
    • Event Performer (Person)
    • \n
    • Event Start (date, time, timezone)
    • \n
    • Event End (date, time, timezone)
    • \n
    • Event Offers Start (date, time, timezone)
    • \n
    • Event Offers End (date, time, timezone)
    • \n
    • Event Offers (name, price, currency, availability)
    • \n
    \n
  • \n
  • How-To\n
      \n
    • How-To Makes
    • \n
    • How-To Preparation Time
    • \n
    • How-To Total Time
    • \n
    • How-To Supplies
    • \n
    • How-To Tools
    • \n
    • How-To Steps (section name, section description, step name, direction text and image)
    • \n
    \n
  • \n
  • Job Posting Information\n
      \n
    • Job Title
    • \n
    • Hiring Organization
    • \n
    • Job Location
    • \n
    • Job Location Type
    • \n
    • Base Salary
    • \n
    • Employment Type
    • \n
    • Jpb Posting Expires
    • \n
    \n
  • \n
  • Movie Information\n
      \n
    • Cast Names
    • \n
    • Director Names
    • \n
    • Production Company
    • \n
    • Movie Runtime
    • \n
    \n
  • \n
  • Organization Information\n
      \n
    • Select an Organization
    • \n
    \n
  • \n
  • Person Information\n
      \n
    • Select a Person
    • \n
    \n
  • \n
  • Product Information (Additional)\n
      \n
    • Product Length (cm)
    • \n
    • Product Width (cm)
    • \n
    • Product Height (cm)
    • \n
    • Product Depth (cm)
    • \n
    • Product Fluid Volume (ml)
    • \n
    • Product GTIN-14
    • \n
    • Product GTIN-13 (EAN)
    • \n
    • Product GTIN-12 (UPC)
    • \n
    • Product GTIN-8
    • \n
    • Product GTIN
    • \n
    \n
  • \n
  • QA Page Information\n
      \n
    • QA Heading
    • \n
    \n
  • \n
  • Recipe Information\n
      \n
    • Recipe Cuisine
    • \n
    • Recipe Course
    • \n
    • Recipe Makes
    • \n
    • Cooking Method
    • \n
    • Preparation Time
    • \n
    • Cooking Time
    • \n
    • Total Time
    • \n
    • Recipe Ingredients
    • \n
    • Recipe Instructions
    • \n
    • Nutrition Information per Serving\n
        \n
      • Serving Size
      • \n
      • Calories
      • \n
      • Protein
      • \n
      • Fiber
      • \n
      • Carbohydrates
      • \n
      • Sugar
      • \n
      • Sodium
      • \n
      • Fat
      • \n
      • Saturated Fat
      • \n
      • Unsaturated Fat
      • \n
      • Trans Fat
      • \n
      • Cholesterol
      • \n
      \n
    • \n
    \n
  • \n
  • Review Information\n
      \n
    • Review Rating
    • \n
    • Rating Value Name
    • \n
    • Subject of the Review\n
        \n
      • Subject Webpage Type
      • \n
      • Subject Webpage URL
      • \n
      • Subject Same-As URL
      • \n
      • Subject Name
      • \n
      • Subject Description
      • \n
      • Subject Image ID or URL
      • \n
      • Claim Subject Information (for Claim Review)\n
          \n
        • Short Summary of Claim
        • \n
        • First Appearance URL
        • \n
        \n
      • \n
      • Creative Work Subject Information\n
          \n
        • C.W. Author Type
        • \n
        • C.W. Author Name
        • \n
        • C.W. Author URL
        • \n
        • C.W. Published Date
        • \n
        • C.W. Created Date
        • \n
        \n
      • \n
      • Book Subject Information\n
          \n
        • Book ISBN
        • \n
        \n
      • \n
      • Movie Subject Information\n
          \n
        • Movie Cast Names
        • \n
        • Movie Director Names
        • \n
        \n
      • \n
      • Product Subject Information\n
          \n
        • Product Brand
        • \n
        • Product Offers (name, price, currency, availability)
        • \n
        • Product SKU
        • \n
        • Product MPN
        • \n
        \n
      • \n
      • Software App Subject Information\n
          \n
        • Operating System
        • \n
        • Application Category
        • \n
        • Software App Offers (name, price, currency, availability)
        • \n
        \n
      • \n
      \n
    • \n
    \n
  • \n
  • Software Application Information\n
      \n
    • Operating System
    • \n
    • Application Category
    • \n
    \n
  • \n
\n

WPSSO Core Required

\n

WPSSO Schema JSON-LD Markup (WPSSO JSON) is an add-on for the WPSSO Core plugin.

\n","download_link":"https://downloads.wordpress.org/plugin/wpsso-schema-json-ld.4.18.0.zip","tags":{"rich-results":"rich results","rich-snippets":"rich snippets","schema-org":"schema.org","video-seo":"video seo","woocommerce":"woocommerce"},"donate_link":"","icons":{"1x":"https://ps.w.org/wpsso-schema-json-ld/assets/icon-128x128.png?rev=2480083","2x":"https://ps.w.org/wpsso-schema-json-ld/assets/icon-256x256.png?rev=2480083"},"wporg":true},{"name":"ShortPixel Image Optimizer","slug":"shortpixel-image-optimiser","version":"4.22.5","author":"ShortPixel","author_profile":"https://profiles.wordpress.org/shortpixel","requires":"4.2.0","tested":"5.8","requires_php":"5.6","rating":92,"ratings":{"1":54,"2":10,"3":8,"4":10,"5":544},"num_ratings":626,"support_threads":7,"support_threads_resolved":6,"active_installs":300000,"downloaded":6850802,"last_updated":"2021-08-31 5:54pm GMT","added":"2014-11-05","homepage":"https://shortpixel.com/","short_description":"Speed up your website & boost your SEO by compressing old & new images and PDFs. AVIF & WebP convert and optimize support.","description":"

A freemium, easy to use, comprehensive, stable and frequently updated image compression plugin supported by the friendly team that created it. 🙂

\n

Increase your website’s SEO ranking, number of visitors and ultimately your sales by optimising any image or PDF document on your website.
\nShortPixel is an easy to use, lightweight, install-and-forget-about-it image optimization plugin that can compress all your past images and PDF documents with a single click. New images are automatically resized/rescaled and optimized on the fly, in the background. It’s also compatible with any gallery, slider or ecommerce plugin.

\n

Ready for a quick DEMO? Test our plugin here.
\nOr you can create a staging copy of your site using WP Staging and test it there.

\n

Short Pixel uses minimal resources and works well with any shared, cloud, VPS or dedicated web hosting. It can optimize any image you have on your website even the images that aren’t listed in Media Library like those in galleries like NextGEN, Modula or added directly via FTP!

\n

Both lossy and lossless image compression are available for the most common image types (JPG, PNG, GIF, WebP and AVIF) plus PDF files.
\nWe also offer glossy JPEG compression which is a very high quality lossy optimization algorithm. Specially designed for photographers!
\nOptimized images mean better user experience, better PageSpeed Insights or GTmetrix results, better Google PageRank and more visitors.

\n

Make an instant image compression test of your site or compress some images to test our optimization algorithms.

\n

Why is ShortPixel the best choice when it comes to image optimization or PDF compression?

\n
    \n
  • popular plugin with over 300,000 active installations – according to WordPress
  • \n
  • compress JPG (and its variations JPEG, JPEG 2000, JPEG XR), PNG, GIF (still or animated) images and also PDF documents
  • \n
  • option to convert any JPEG, PNG or GIF (even animated ones!) to WebP and AVIF for more Google love. How to enable WebP?. What is AVIF and why is it good?.
  • \n
  • option to automatically convert PNG to JPG if that will result in smaller images. Ideal for large images in PNG format
  • \n
  • option to include the next generation images (WebP and AVIF) into the front-end pages by using the <picture> tag instead of <img>, independent from generating them through the plugin
  • \n
  • compatible with WP Retina 2x – all retina images are automatically compressed. How to benefit from Retina displays?
  • \n
  • optimize thumbnails as well as featured images. You can also select individual thumbnails to exclude from optimization
  • \n
  • ability to optimize any image on your site including images in NextGEN Gallery and any other image galleries or sliders
  • \n
  • option to scale images down, with 2 different options, which is very useful to automatically resize large images. This applies to the featured images and there is no need for additional plugins like Imsanity
  • \n
  • CMYK to RGB conversion
  • \n
  • skip already optimized images
  • \n
  • 24h stellar support (24/7) directly from developers.
  • \n
  • easily test lossy/glossy/lossless versions of the images with a single click in your Media Library
  • \n
  • great for photographers: keep or remove EXIF data from your images, compress photos with lossless option
  • \n
  • works well with both HTTPS and HTTP websites
  • \n
  • uses progressive JPEG for larger images in order to speed up the image display
  • \n
  • you can run ShortPixel plugin on multiple websites or on a multisite with a single API Key
  • \n
  • it is safe to test and use the plugin: all the original images are by default saved in a local backup that can be restored with a click, either one by one or in bulk
  • \n
  • ‘Bulk’ optimize all the existing images in Media Library or in any gallery with one click
  • \n
  • works great for eCommerce websites using WooCommerce or other plugins
  • \n
  • works great with NextGEN gallery, Foo Gallery and any other galleries and sliders
  • \n
  • compatible with WP Engine hosted websites and all the major hosting providers
  • \n
  • compatible with WPML and WPML Media plugins
  • \n
  • no file size limit
  • \n
  • integrates with Gravity Forms post_image field type optimizing the images upon upload
  • \n
  • compatible with watermarking plugins
  • \n
  • option to deactivate auto-optimizing images on upload
  • \n
  • no credits are used for the images that are optimised less that 5%
  • \n
  • direct integration with CloudFlare, either by using an API Key or a Token
  • \n
  • 30 days optimization report with all image details and overall statistics
  • \n
  • We are GDPR compliant! Read more.
  • \n
  • free optimization credits for non-profits, contact us for details
  • \n
\n

How much does it cost?
\nShortPixel comes with 100 free credits/month and additional credits can be bought for as little as $4.99 for 5,000 image credits.
\nCheck out our prices.

\n
\n

Testimonials:
\n ★★★★★ A Super Plugin works very well 62% reduction overall. robertvarns
\n ★★★★★ The secret sauce for a WordPress website. mark1mark
\n ★★★★★ A must have plugin, great support! ElColo13
\n ★★★★★ Excellent Plugin! Even Better Customer Service! scaliendo
\n ★★★★★ Great image compression, solid plugin, equally great support. matters1959
\n more testimonials

\n
\n\n

Help us spread the word by recommending ShortPixel to your friends and collect 100 lifetime monthly additional image credits for each referred active user. Make money by promoting a great plugin with our 30% commission affiliate program.

\n

Other plugins by ShortPixel

\n\n

Get in touch!

\n\n

Actions and Filters for Developers

\n

The ShortPixel Image Optimiser plugin calls the following actions and filters:

\n
do_action( 'shortpixel_image_optimised', $post_id );\n
\n

upon successful optimization;

\n
do_action(\"shortpixel_before_restore_image\", $post_id);\n
\n

before restoring an image from backup;

\n
do_action(\"shortpixel_after_restore_image\", $post_id);\n
\n

after succesful restore;

\n
apply_filters(\"shortpixel_backup_folder\", $backup_folder, $main_file_path, $sizes);\n
\n

just before returning the ShortPixel backup folder, usually /wp-content/uploads/ShortpixelBackups. The $sizes are the sizes array from metadata;

\n
apply_filters('shortpixel_image_exists', file_exists($path), $path, $post_id);\n
\n

post ID is not always set, only if it’s an image from Media Library;

\n
apply_filters('shortpixel_image_urls', $URLs, $post_id);\n
\n

filters the URLs that will be sent to optimisation, $URLs is a plain array;

\n
apply_filters('shortpixel/db/chunk_size', $chunk);\n
\n

the $chunk is the value ShortPixel chooses to use as number of selected records in one query (based on total table size), some hosts work better with a different value;

\n
apply_filters('shortpixel/backup/paths', $PATHs, $mainPath);\n
\n

filters the array of paths of the images sent for backup and can be used to exclude certain paths/images/thumbs from being backed up, based on the image path. $mainPath is the path of the main image, while $PATHs is an array with all files to be backed up (including thumbnails);

\n
apply_filters('shortpixel/settings/image_sizes', $sizes);\n
\n

filters the array ($sizes) of image sizes which can be excluded from processing (displayed in the plugin Advanced settings).

\n

In order to define custom thumbnails to be picked up by the optimization you have two options, both comma separated defines:

\n
define('SHORTPIXEL_CUSTOM_THUMB_SUFFIXES', '_tl,_tr');\n
\n

will handle custom thumbnails like image-100x100_tl.jpg;

\n
define('SHORTPIXEL_CUSTOM_THUMB_INFIXES', '-uae');\n
\n

will handle custom thumbnails like image-uae-100×100.jpg;

\n
define('SHORTPIXEL_USE_DOUBLE_WEBP_EXTENSION', true);\n
\n

will tell the plugin to create double extensions for the WebP image counterparts, for example image.jpg.webp for image.jpg;

\n
define(\"SHORTPIXEL_NOFLOCK\", true);\n
\n

don’t use flock queue, only activate this when you have flock() denied errors on your installation;

\n
define(\"SHORTPIXEL_EXPERIMENTAL_SECURICACHE\", true);\n
\n

adds timestamps to URLS, to prevent hitting the cache. Useful for persistent caches.

\n

Hide the Cloudflare settings by defining these constants in wp-config.php:

\n
define('SHORTPIXEL_CFTOKEN', 'the Cloudflare API token that has Purge Cache right');\ndefine('SHORTPIXEL_CFZONE', 'The Zone ID from the domain settings in Cloudflare');\n
\n

Hide the WSO banner in the settings by defining this constant in wp-config.php:

\n
define('SHORTPIXEL_NO_BANNER', true);\n
\n

Alternatively, you can use this filter in your theme’s functions.php file:

\n
add_filter('shortpixel/settings/no_banner', true);\n
\n","download_link":"https://downloads.wordpress.org/plugin/shortpixel-image-optimiser.4.22.5.zip","tags":{"compressor":"compressor","convert-webp":"convert webp","image-optimization":"image optimization","optimize-images":"optimize images","resize":"resize"},"donate_link":"","icons":{"1x":"https://ps.w.org/shortpixel-image-optimiser/assets/icon-128x128.png?rev=1038819","2x":"https://ps.w.org/shortpixel-image-optimiser/assets/icon-256x256.png?rev=1038819"},"wporg":true},{"name":"Theme Kit for Twenty Twenty-One & Twenty Twenty (Customization, Gutenberg Blocks, Templates) – Twentig","slug":"twentig","version":"1.3.5","author":"Twentig","author_profile":"https://profiles.wordpress.org/twentig","requires":"5.5","tested":"5.8","requires_php":"5.6","rating":100,"ratings":{"1":0,"2":0,"3":0,"4":2,"5":104},"num_ratings":106,"support_threads":30,"support_threads_resolved":29,"active_installs":10000,"downloaded":138963,"last_updated":"2021-08-10 11:02am GMT","added":"2019-05-29","homepage":"https://twentig.com","short_description":"Supercharge your WordPress theme (Twenty Twenty-One & Twenty Twenty) with customization options, enhanced Gutenberg blocks,…","description":"

The easy way to build a beautiful website.

\n

Twentig helps you customize the default WordPress theme (Twenty Twenty-One and Twenty Twenty) the way you want with Google Fonts, colors, custom layouts, and many more options.

\n

With enhanced Gutenberg blocks, pre-designed block templates, and starter websites, you’ve got everything you need to build stunning pages that look great on any device — no coding or design skills needed.

\n
\n

“Twentig is a plugin that essentially gives superpowers to the default theme.” — Justin Tadlock, WP Tavern

\n
\n

Customize the most popular WordPress theme. Your way.

\n

Twentig offers powerful features to customize the Twenty Twenty-One and Twenty Twenty themes — making it easier than ever to create your own professional website.

\n

Advanced theme customization. From post grid to sidebar to sticky header to footer layout, our plugin provides endless ways to enhance your WordPress theme. Change the look and feel of your website by customizing the fonts (Google Fonts), colors, global styles, 404 page, and more.

\n

Custom page templates. Control the look of your entire page with our page templates. Easily remove the page title, header, footer, or set a transparent header. Now you can use Gutenberg blocks to create a custom hero, landing page, coming soon page, and more.

\n

Tailored design. Twentig brings design improvements to the default WordPress theme. Our additional block settings and pre-designed block templates are specially built for it — so it’s simple to make beautiful pages with Gutenberg blocks.

\n

Start with a pre-built website.

\n

Instead of starting from scratch, you can quickly import one of Twentig’s starter websites crafted by award-winning designers.

\n

The simple way to import starter websites. Choose from a variety of starter websites and seamlessly load them in a few seconds in the Customizer. Preview and customize your theme any way you like before publishing it to your live site.

\n

Flexible import. Twentig lets you import full websites (Customizer settings, menus, widgets, and pages built with Gutenberg blocks). You can also only import what you need, be it the styling or the pages, on a fresh install or an existing website.

\n

Check out the starter websites to see the power and flexibility of Twentig.

\n

Do more with Gutenberg blocks.

\n

Twentig enhances the existing Gutenberg blocks — taking the WordPress block editor to a new level of design and creativity.

\n

Block customization made easy. We’ve added the right amount of features to the Gutenberg core blocks. So you can easily customize your blocks to fit your needs with just a few clicks.

\n

Powerful Gutenberg block features. Twentig provides alternative styles, advanced block settings, margin controls, and CSS classes. From columns style to group shape divider to typography settings, you have the best tools to customize the Gutenberg blocks and build gorgeous pages.

\n

Build your pages with ready-to-use templates.

\n

Twentig brings hundreds of pre-designed block patterns and page templates — making it easier and faster than ever to create stunning pages.

\n

Flexible block templates. Choose from a variety of versatile block patterns and page templates that you can mix and match to fit your project. Our block template library is designed to enable a wide range of uses and endless design possibilities.

\n

Professional design. Our templates are responsive and give your pages a professional look right from the start — no coding or design skills needed.

\n

Twentig features list

\n

Check out the screenshots to see how Twentig can transform your theme and the Gutenberg blocks.

\n

ADDITIONAL THEME OPTIONS

\n

Header

\n
    \n
  • Header layouts
  • \n
  • Sticky header
  • \n
  • Header width
  • \n
  • Header decoration
  • \n
  • Additional elements: search bar, social icons, button
  • \n
  • Logo width
  • \n
  • Custom logo for transparent header
  • \n
  • Menu link style
  • \n
  • Option to display the burger menu on tablet
  • \n
\n

Footer

\n
    \n
  • Footer layouts
  • \n
  • Footer widgets layout
  • \n
  • Footer width
  • \n
  • Custom copyright and remove “Powered by WordPress”
  • \n
  • Social icons
  • \n
\n

Site Layout

\n
    \n
  • Text width
  • \n
  • Wide width (Twenty Twenty-One theme)
  • \n
  • Site width to create a boxed layout site (Twenty Twenty-One theme)
  • \n
\n

Blog Posts Page

\n
    \n
  • Option to display the page title (Twenty Twenty-One theme)
  • \n
  • Blog layouts: stack, post grid, post grid card
  • \n
  • Blog sidebar (Twenty Twenty-One theme)
  • \n
  • Number of columns for post grid layouts
  • \n
  • Featured image options
  • \n
  • Blog content options
  • \n
  • Blog meta options
  • \n
  • Pagination style (Twenty Twenty-One theme)
  • \n
\n

Single Blog Post

\n
    \n
  • Featured image and post title layouts
  • \n
  • Blog sidebar (Twenty Twenty-One theme)
  • \n
  • Option to display the manual excerpt below the title
  • \n
  • Single post meta options
  • \n
  • Post navigation layout (Twenty Twenty theme)
  • \n
  • Hide comments section
  • \n
\n

Typography & Colors

\n
    \n
  • Google Fonts options (curated collection and custom Google Fonts)
  • \n
  • Google Fonts pairings and Google Fonts presets
  • \n
  • Font settings
  • \n
  • Color options
  • \n
\n

Pages

\n
    \n
  • Custom page templates: remove the page title, header, and footer, or set a transparent header
  • \n
  • Featured image and page title layouts
  • \n
\n

Custom 404 Page

\n
    \n
  • Option to assign any page as the 404 page
  • \n
\n

Additional Settings

\n
    \n
  • Minimal style for links (Twenty Twenty-One theme)
  • \n
  • Button style
  • \n
  • Separator style
  • \n
  • Social icons style (Twenty Twenty theme)
  • \n
\n

ADDITIONAL GUTENBERG BLOCK SETTINGS

\n
    \n
  • Gutenberg core blocks: top margin and bottom margin
  • \n
  • Group: shadow, border, shape divider, full height
  • \n
  • Columns: gutter, responsive layout, columns style (card, border), text alignment, stretched link
  • \n
  • Media & Text: styles (shadow, overlap), responsive layout, reverse stack order, stretched link, full height
  • \n
  • Cover: styles (shadow, inner border), stretched link, hover effect
  • \n
  • Heading: typography options, decoration
  • \n
  • Paragraph: wide width, typography options
  • \n
  • List: styles (dash, checkmark, arrow, border, no bullet, inline), typography options, spacing
  • \n
  • Image: styles (rounded, shadow, frame, border), image filter
  • \n
  • Gallery: stack variation, styles (rounded, frame), fixed width columns, image aspect ratio, gutter, responsive layout, caption size, border, image filter
  • \n
  • YouTube, Vimeo, SoundCloud, and Video blocks: style (frame)
  • \n
  • Latest Posts: styles (card, border), image aspect ratio, heading size, stretched link, text alignment
  • \n
  • Social Icons: hover effect
  • \n
  • Quote: additional styles
  • \n
  • Pullquote: additional styles
  • \n
  • Table: styles (border, inner border), vertical alignment
  • \n
  • Separator: style (short line), responsive visibility
  • \n
  • Spacer: responsive visibility
  • \n
\n

GUTENBERG TEMPLATE LIBRARY

\n

Hundreds of Gutenberg block patterns grouped by following categories:

\n
    \n
  • Columns
  • \n
  • Text Columns
  • \n
  • Text and Image
  • \n
  • Text
  • \n
  • Hero
  • \n
  • Cover
  • \n
  • Call to Action
  • \n
  • List
  • \n
  • Numbers, Stats
  • \n
  • Gallery
  • \n
  • Video, Audio
  • \n
  • Latest Posts
  • \n
  • Contact
  • \n
  • Team
  • \n
  • Testimonials
  • \n
  • Logos, Clients
  • \n
  • Pricing
  • \n
  • FAQ
  • \n
  • Events, Schedule
  • \n
\n

Dozens of pre-designed page templates grouped by following categories:

\n
    \n
  • Homepage
  • \n
  • About
  • \n
  • Services
  • \n
  • Contact
  • \n
  • Single Page
  • \n
\n

Get more

\n\n

Enjoying Twentig?

\n\n","download_link":"https://downloads.wordpress.org/plugin/twentig.1.3.5.zip","tags":{"gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","templates":"templates","theme":"theme","twenty-twenty-one":"twenty-twenty-one"},"donate_link":"https://www.paypal.com/donate?hosted_button_id=JTBTPQAFEA94E","icons":{"1x":"https://ps.w.org/twentig/assets/icon.svg?rev=2569439","2x":"https://ps.w.org/twentig/assets/icon-256x256.png?rev=2569439","svg":"https://ps.w.org/twentig/assets/icon.svg?rev=2569439"},"wporg":true},{"name":"Custom Post Type UI","slug":"custom-post-type-ui","version":"1.9.2","author":"WebDevStudios","author_profile":"https://profiles.wordpress.org/williamsba1","requires":"5.5","tested":"5.7.2","requires_php":"5.6","rating":94,"ratings":{"1":12,"2":3,"3":6,"4":9,"5":202},"num_ratings":232,"support_threads":66,"support_threads_resolved":29,"active_installs":1000000,"downloaded":8717024,"last_updated":"2021-06-17 2:40am GMT","added":"2010-02-26","homepage":"https://github.com/WebDevStudios/custom-post-type-ui/","short_description":"Admin UI for creating custom post types and custom taxonomies for WordPress","description":"

Custom Post Type UI provides an easy to use interface for registering and managing custom post types and taxonomies for your website.

\n

While CPTUI helps solve the problem of creating custom post types, displaying the data gleaned from them can be a whole new challenge. That’s why we created Custom Post Type UI Extended. View our Layouts page to see some examples that are available with Custom Post Type UI Extended.

\n

Official development of Custom Post Type UI is on GitHub, with official stable releases published on WordPress.org. The GitHub repo can be found at https://github.com/WebDevStudios/custom-post-type-ui. Please use the Support tab for potential bugs, issues, or enhancement ideas.

\n

Pluginize was launched in 2016 by WebDevStudios to promote, support, and house all of their WordPress products. Pluginize is not only creating new products for WordPress all the time, like CPTUI Extended, but also provides ongoing support and development for WordPress community favorites like CMB2 and more.

\n","download_link":"https://downloads.wordpress.org/plugin/custom-post-type-ui.zip","tags":{"cms":"cms","cpt":"cpt","custom-post-types":"custom post types","post":"post","types":"types"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=3084056","icons":{"1x":"https://ps.w.org/custom-post-type-ui/assets/icon-128x128.png?rev=2549362","2x":"https://ps.w.org/custom-post-type-ui/assets/icon-256x256.png?rev=2549362"},"wporg":true},{"name":"Flex Posts – Widget and Gutenberg Block","slug":"flex-posts","version":"1.8.1","author":"Tajam","author_profile":"https://profiles.wordpress.org/tajam","requires":"5.2","tested":"5.8","requires_php":false,"rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":17},"num_ratings":17,"support_threads":8,"support_threads_resolved":3,"active_installs":3000,"downloaded":24490,"last_updated":"2021-07-29 10:41am GMT","added":"2018-05-10","homepage":"https://tajam.id/flex-posts/","short_description":"A widget to display posts with thumbnails in various layouts. Fits nicely in any widget…","description":"

Flex Posts is a widget to display posts in various different layouts. It is useful for a news site where you need to display a lot of posts in a page.

\n

The widget is responsive so you can place it in any widget area. The widget content will adapt based on the width of its container. In a narrow area like standard sidebar, posts will be displayed vertically, but in a wider area, posts will be displayed in 2 or 3 columns depends on the container’s width.

\n

Widget Settings

\n
    \n
  • Title: Set the widget title. Leave it empty to hide the title section.
  • \n
  • Title URL: Set the title link url. Leave it empty to disable link in the title.
  • \n
  • Layout: Select a widget layout, from layout 1 to 4.
  • \n
  • Post type: Select the post type. Options include: Post, Page, custom post types if available, and any.
  • \n
  • Category: Select a category for the posts, or choose All Categories to disable this filter.
  • \n
  • Tag(s): Set a post tag (using the tag slug). You can also use comma separated value for multiple tags. Prepending a tag with a hyphen will exclude posts matching that tag. Eg, featured, -video will show posts tagged with featured but not video.
  • \n
  • Order by: Set the order in which the posts will be displayed. Options include: Newest, Oldest, Most Commented, Alphabetical, Random, Modified Date.
  • \n
  • Number of posts to show: Set the number of posts displayed.
  • \n
  • Number of posts to skip: Set the number of posts to displace or pass over.
  • \n
  • Show image on: Select in which posts the image will be displayed. Options include: All posts, First post only, or none.
  • \n
  • Image size: Select image size from registered image sizes.
  • \n
  • Show post title: Choose to show or hide the post title.
  • \n
  • Show categories: Choose to show or hide the categories.
  • \n
  • Show author: Choose to show or hide the author.
  • \n
  • Show date: Choose to show or hide the date.
  • \n
  • Show comments number: Choose to show or hide the comments number.
  • \n
  • Show excerpt: Choose to show or hide the excerpt
  • \n
  • Excerpt length: Set the number of words for the excerpt.
  • \n
  • Show read more link: Choose to show or hide the Read More link.
  • \n
  • Read more text: Set the text for the read more link. You can leave it empty to use the default text Read More.
  • \n
  • Show pagination: Choose to show or hide the pagination links.
  • \n
  • Additional class(es): Set a custom class for the widget container. You can use spaces to separate multiple classes.
  • \n
\n

Gutenberg Block

\n

Since version 1.1.0, Flex Posts also includes a gutenberg block. You can add the widget directly into the post/page content with the WP 5.0 block editor.

\n

Demo

\n

Please visit the live demo here: Flex Posts Demo

\n

Requirements

\n

This plugin has been tested and works with at least PHP 5.3 installed in your environment. But we strongly recommend you to use the latest PHP version, as using older versions may expose you to security vulnerabilities.

\n","download_link":"https://downloads.wordpress.org/plugin/flex-posts.zip","tags":{"category-posts":"category posts","grid":"grid","magazine":"magazine","news":"news","responsive":"responsive"},"donate_link":"https://tajam.id/","icons":{"1x":"https://ps.w.org/flex-posts/assets/icon-128x128.png?rev=1871802"},"wporg":true},{"name":"YARPP – Yet Another Related Posts Plugin","slug":"yet-another-related-posts-plugin","version":"5.27.4","author":"YARPP","author_profile":"https://profiles.wordpress.org/jeffparker","requires":"3.7","tested":"5.8","requires_php":"5.3","rating":94,"ratings":{"1":33,"2":2,"3":14,"4":45,"5":625},"num_ratings":719,"support_threads":28,"support_threads_resolved":12,"active_installs":100000,"downloaded":6483726,"last_updated":"2021-08-25 5:56pm GMT","added":"2008-01-02","homepage":"https://yarpp.com/","short_description":"The best WordPress plugin for displaying related posts. Simple and flexible, with a powerful proven algorithm and inbuilt caching.","description":"

Related Posts Plugin for WordPress

\n

Yet Another Related Posts Plugin (YARPP) is a professionally maintained, highly customizable, performant and feature rich plugin that displays pages, posts, and custom post types related to the current entry. YARPP introduces your visitors to other relevant content on your site — boosting visitor engagement, time on site and SEO. Related Posts can increase your pageviews up to 10%. Simply install, activate and watch your sessions and pageviews increase.

\n

Key Features

\n
    \n
  • An advanced and versatile algorithm: Using a customizable algorithm considering post titles, content, tags, categories, and custom taxonomies, YARPP finds related content from across your site
  • \n
  • Caching: Inbuilt cache makes subsequent queries super efficient and fast
  • \n
  • Custom Templates and Styles: Use a pre-built list or thumbnail template, or use the YARPP custom templating system for 100% control of how results are styles and displayed
  • \n
  • Flexible with a full range of placement options, including:\n\n
  • \n
  • Works with all languages, including those with full-width (double-byte) characters and those that don’t use spaces between words
  • \n
  • Custom post type and taxonomy support
  • \n
  • WordPress Multisite support
  • \n
  • bbPress forums support
  • \n
  • WooCommerce support
  • \n
  • Professionally maintained and supported with regular updates
  • \n
\n

YARPP Algorithm Explained

\n

\n

Contribute: Translate YARPP

\n

YARPP is available for translation directly on WordPress.org. Please check out the official Translator Handbook.

\n

Wide Support

\n

YARPP is the most popular and the highest rated Related Posts Plugin for WordPress. With your support, this plugin always strives to be the best WordPress plugin for Content Discovery and Related Posts.

\n

✔ Over 10 years of development
\n✔ Over 6 million downloads
\n✔ Translated into more than a dozen languages
\n✔ Professionally maintained and actively supported with regular updates
\n✔ Works with all languages

\n

YARPP works best with PHP 5.3 or greater, MySQL 5.6 or greater OR MariaDB 10.1 or greater, and WordPress 3.7 or greater. See the FAQ for answers to common questions.

\n","download_link":"https://downloads.wordpress.org/plugin/yet-another-related-posts-plugin.5.27.4.zip","tags":{"contextual-related-posts":"contextual related posts","posts":"posts","related-posts":"related posts","seo":"seo","similar-posts":"similar posts"},"donate_link":"https://yarpp.com","icons":{"1x":"https://ps.w.org/yet-another-related-posts-plugin/assets/icon-128x128.png?rev=2549977","2x":"https://ps.w.org/yet-another-related-posts-plugin/assets/icon-256x256.png?rev=2549977"},"wporg":true},{"name":"Superb WordPress Table (SEO Optimized Tables With Schema)","slug":"superb-tables","version":"1.0.8","author":"SuPlugins","author_profile":"https://profiles.wordpress.org/suplugins","requires":"3.0.1","tested":"5.7.2","requires_php":"5.2.4","rating":80,"ratings":{"1":0,"2":1,"3":0,"4":0,"5":2},"num_ratings":3,"support_threads":1,"support_threads_resolved":1,"active_installs":4000,"downloaded":33932,"last_updated":"2021-05-26 8:49pm GMT","added":"2019-03-05","homepage":"https://superbthemes.com/plugins/superb-tables/","short_description":"Responsive & SEO Optimized tables. Get your Google Featured Snippets. Different table designs, table shortcodes…","description":"

Responsive & SEO Optimized tables. Get your Google Featured Snippets. Different table designs, table shortcodes & lightweight code.

\n

Click here to view the demo!

\n

Features

\n
    \n
  • Table Shortcodes
  • \n
  • Multiple Color Schemes
  • \n
  • Use Themes Own Table Design
  • \n
  • Schema Markup (Micro Data)
  • \n
  • Create Unlimited Tables
  • \n
  • Create Unlimited Rows
  • \n
  • Create unlimited Columns
  • \n
  • SEO-friendly Tables With Schema markup
  • \n
  • Purple Color Scheme
  • \n
  • Black/White Color Scheme
  • \n
  • Swap around on columns & rows with drag n’ drop
  • \n
  • Delete Tables & Remove Them From Your Database
  • \n
  • Gives you a better chance to get Google Featured Snippets
  • \n
  • Friendly User Support)
  • \n
  • GDPR Compliant
  • \n
  • W3C Valid Code
  • \n
  • WYSIWYG Functionality Editor
  • \n
\n

Configuring the plugin

\n

Once you’ve installed the plugin, check the left sidebar, and you will notice the Superb Table section. Click on it, and you can now create your first table. Just click on the Add New Table button.

\n

Feel free to add as many columns and rows as you want—inserting rows and columns is extremely easy.

\n

You have a few options to make your table stand apart. First, choose one of the three color schemes: standard, purple, or black. Second, choose your table design: default or custom. Block, left, and inline-block are the floating modes for your table. Finally, enable or disable the full width of the table.

\n

Once you finish your table, name it and save it. All you have to do now is to copy the shortcode and paste wherever you want, you can for example embed it in the Gutenberg Shortcode Block! (It works in the classic WordPress editor too)

\n

Consider purchasing our premium version for $11 to unlock more features!

\n

Why use a HTML table

\n

Displaying data within a comparison table is beneficial for not only readers but also content creators. A table does a better job than long paragraphs of text, underlined phrases, and bulleted lists. It shows a lot of information side by side in a concise format. Bloggers and content creators should create tables and insert the data. There’s no need to search for breathtaking expressions, cool descriptions, or digestible lists of items. It’s just pure data, and everyone is happy with this situation. You can read our full guide on How to Add a Table to Your WordPress Website with Superb Tables.

\n

Responsive Tables

\n

We developed Superb Tables mobile friendly by taking responsiveness into account, and as a result, you can make a WordPress table responsive by using our plugin. The tables are fully responsive regardless of the number of rows and columns. The plugin works on all mobile devices and tablets (iPhone, Android etc.). The plugin works with AMP.

\n

SEO Friendly WordPress Tables With Schema Markup

\n

“Schema markup“ and “featured snippets“ are two interconnected terms that are being used by more and more bloggers, SEO practitioners, and developers. Have you noticed that Google now provides complex answers in the form of lists, tables, paragraphs, or videos directly on the results page? Those are featured snippets.

\n

Moz claims that 23% of all search results include a featured snippet—a descriptive box displayed on the search results page providing information for your query. It may include paragraphs, lists, videos, or tables. You have to consider featured snippets when choosing a table plugin—can it help Google generate a featured snippet from the data within your table?

\n

We developed Superb Tables with featured snippets in mind, and you can use the plugin worry-free. We used schema markup, which is the code that helps search engine bots generate snippets from your content, including tables. It’s a great way for affiliate websites and blogs to promote their content.

\n

You must use WordPress tables with schema markup to get featured snippets on search engines, and Superb Tables is a reliable solution in this respect.

\n

Add Tables everywhere & use them for Any Purpose

\n

You can insert the SEO optimised tables with microdata everywhere through the shortcode. For example in a popup, widgets, Gutenberg blocks, email newsletter sent from your WordPress website. You can also insert it on any post or page, even category pages, blog feed, search page and your 404 page! The plugin is made for affiliates marketers and affiliate websites, having a good SERP rank in Google and Bing is critical. When you’re looking to improve your ranking then all of your plugins must be SEO optimized, otherwise it’s gonna be hard to create monetization through ads programs such as AdSense and Amazon Associates Program.

\n

We know that business is important for any modern blog or affiliate marketing website that’s looking to make a revenue from it. Remember to use HTTPS (SSL) on your website, a CDN and lightweight stats tracking tools such as Google Analytics to better your SEO as well.

\n

Guide to creating your Superb Tables

\n
    \n
  1. In the wordpress admin panel, go to the sidebar and click ‘Superb Tables’.
  2. \n
  3. Click the green ‘Add new table’ in the top left corner
  4. \n
  5. Fill in your table data, click ‘Save’
  6. \n
  7. Click ‘Superb Tables’ in the left sidebar and copy paste the ‘Table Shortcode’
  8. \n
  9. Insert the Table Shortcode (For example [spbtbl_sc id=1] ) in a post, page, widget or in HTML.
  10. \n
\n

You’re done!

\n

Resources & Inspiration

\n
    \n
  • Auto-Expand: https://codepen.io/vsync/pen/frudD
  • \n
  • Data Table: https://codepen.io/alassetter/pen/cyrfB
  • \n
  • Table DnD: https://github.com/isocra/TableDnD/
  • \n
  • Table icon: https://www.iconfinder.com/icons/1608863/table_icon#size=256
  • \n
  • Custom confirm: https://codepen.io/Ana_Champion/pen/JRbZEL
  • \n
  • Table design inspiration: https://codepen.io/lukepeters/pen/bfFur
  • \n
  • Table design inspiration: https://codepen.io/alassetter/pen/cyrfB
  • \n
  • Table design inspiration: https://uicookies.com/wp-content/uploads/2018/05/table-responsive-v2-1000×750.jpg
  • \n
  • Table design inspiration: https://uicookies.com/wp-content/uploads/2018/05/table-responsive-v1.jpg
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/superb-tables.1.0.8.zip","tags":{"content-tables":"content tables","responsive-tables":"responsive tables","table":"table","tables":"tables"},"donate_link":"","icons":{"1x":"https://ps.w.org/superb-tables/assets/icon-256x256.png?rev=2044672","2x":"https://ps.w.org/superb-tables/assets/icon-256x256.png?rev=2044672"},"wporg":true},{"name":"Floating Button","slug":"floating-button","version":"4.3","author":"Wow-Company","author_profile":"https://profiles.wordpress.org/wpcalc","requires":"3.2","tested":"5.8","requires_php":"5.3","rating":80,"ratings":{"1":1,"2":1,"3":0,"4":0,"5":5},"num_ratings":7,"support_threads":1,"support_threads_resolved":0,"active_installs":2000,"downloaded":32490,"last_updated":"2021-07-21 5:47am GMT","added":"2018-09-08","homepage":"https://wordpress.org/plugins/floating-button/","short_description":"Easily create a custom sticky floating buttons. The Floating Button will be the effective solution for increasing the recognition of your web resource","description":"

The Floating Button is the free WordPress plugin for creating the original sticky floating actions buttons. It allows you to install on the site floating buttons with unique thematic icons. The extension serves for placing both traditional navigation bar and additional block with useful information for user.

\n

The Floating Button plugin will be the effective solution for increasing the recognition of your web resource. Its connection will bring originality and novelty to the used theme of the site. The extension helps to configure user-friendly navigation, place useful information or contact panel.

\n

Main features

\n
    \n
  • 2 submenu;
  • \n
  • more than 1500+ FontAwesome icons;
  • \n
  • any links insertion;
  • \n
  • using the tooltips to provide more information;
  • \n
  • round buttons shape;
  • \n
  • LogIn link;
  • \n
  • LogOut link;
  • \n
  • Lost password link
  • \n
\n

Floating Button can be used for:

\n
    \n
  • site navigation;
  • \n
  • additional menu;
  • \n
  • social panel;
  • \n
  • user menu;
  • \n
  • Skype menu and others;
  • \n
  • And more…
  • \n
\n

Pro version

\n

Connect the Pro-version of the plugin to gain access to more features:

\n

Preview of Pro version

\n
    \n
  • create an unlimited amount of buttons;
  • \n
  • use up to 4 floating button positions;
  • \n
  • change the form of the menu display: Circle, Rounded square, Ellipse, Square;
  • \n
  • set the color of the main button and submenu items;
  • \n
  • accompany the change in navigation behavior with the highlight when hovering the mouse cursor;
  • \n
  • use the built-in user menu, social panel and print function;
  • \n
  • set the display according to the user role and status;
  • \n
  • change the menu output depending on the language of the page;
  • \n
  • add restrictions for screens with large or small resolution;
  • \n
  • use the categories on the site, exceptions and ID to place the menu on individual pages;
  • \n
  • insert the shortcode of the panel in the specified location;
  • \n
  • And more…
  • \n
\n

Buy Pro version

\n

Use with other plugins to maximize your results

\n\n

Support

\n

Search for answers and ask your questions at support center

\n","download_link":"https://downloads.wordpress.org/plugin/floating-button.4.3.zip","tags":{"circle-menu":"circle menu","float-menu":"float menu","floating-button":"floating button","floating-menu":"floating menu","sticky-button":"sticky button"},"donate_link":"https://wow-estore.com/item/floating-button-pro/","icons":{"1x":"https://ps.w.org/floating-button/assets/icon-128x128.png?rev=2533016","2x":"https://ps.w.org/floating-button/assets/icon-256x256.png?rev=2533016"},"wporg":true},{"name":"Breadcrumb NavXT","slug":"breadcrumb-navxt","version":"6.6.0","author":"John Havlik","author_profile":"https://profiles.wordpress.org/mtekk","requires":"4.9","tested":"5.7.2","requires_php":"5.5","rating":94,"ratings":{"1":5,"2":2,"3":4,"4":7,"5":104},"num_ratings":122,"support_threads":14,"support_threads_resolved":0,"active_installs":900000,"downloaded":10108033,"last_updated":"2021-04-01 2:13am GMT","added":"2007-12-01","homepage":"http://mtekk.us/code/breadcrumb-navxt/","short_description":"Breadcrumb NavXT, the successor to the popular WordPress plugin Breadcrumb Navigation XT, was written from…","description":"

Breadcrumb NavXT, the successor to the popular WordPress plugin Breadcrumb Navigation XT, was written from the ground up to be better than its ancestor. This plugin generates locational breadcrumb trails for your WordPress powered blog or website. These breadcrumb trails are highly customizable to suit the needs of just about any website running WordPress. The Administrative interface makes setting options easy, while a direct class access is available for theme developers and more adventurous users.

\n

PHP Requirements

\n

Breadcrumb NavXT 5.2 and newer require PHP5.3
\nBreadcrumb NavXT 5.1.1 and older require PHP5.2

\n

Features (non-exhaustive)

\n
    \n
  • RDFa format Schema.org BreadcrumbList compatible breadcrumb generation.
  • \n
  • Extensive breadcrumb customization control via a settings page with appropriate default values for most use cases.
  • \n
  • Network admin settings page for managing breadcrumb settings for all subsites with configurable global priority.
  • \n
  • Built in WordPress Widget.
  • \n
  • Extensible via OOP and provided actions and filters.
  • \n
  • WPML compatible (enhanced compatibility with WPML extensions plugin).
  • \n
  • Polylang compatible (enhanced compatibility with Polylang extensions plugin).
  • \n
  • bbPress compatible (enhanced compatibility with bbPress extensions plugin).
  • \n
  • BuddyPress compatible (enhanced compatibility with BuddyPress extensions plugin).
  • \n
\n

Translations

\n

Breadcrumb NavXT now supports WordPress.org language packs. Want to translate Breadcrumb NavXT? Visit Breadcrumb NavXT’s WordPress.org translation project.

\n","download_link":"https://downloads.wordpress.org/plugin/breadcrumb-navxt.6.6.0.zip","tags":{"breadcrumb":"breadcrumb","breadcrumbs":"breadcrumbs","menu":"menu","navigation":"navigation","trail":"trail"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=FD5XEU783BR8U&lc=US&item_name=Breadcrumb%20NavXT%20Donation¤cy_code=USD&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted","icons":{"1x":"https://ps.w.org/breadcrumb-navxt/assets/icon.svg?rev=1927103","2x":"https://ps.w.org/breadcrumb-navxt/assets/icon-256x256.png?rev=2410525","svg":"https://ps.w.org/breadcrumb-navxt/assets/icon.svg?rev=1927103"},"wporg":true},{"name":"WP Recipe Maker","slug":"wp-recipe-maker","version":"7.5.1","author":"Bootstrapped Ventures","author_profile":"https://profiles.wordpress.org/brechtvds","requires":"4.4","tested":"5.8","requires_php":"5.4","rating":100,"ratings":{"1":1,"2":0,"3":1,"4":4,"5":201},"num_ratings":207,"support_threads":29,"support_threads_resolved":25,"active_installs":50000,"downloaded":1529765,"last_updated":"2021-08-31 12:27pm GMT","added":"2016-09-07","homepage":"http://bootstrapped.ventures/wp-recipe-maker/","short_description":"The easy and user-friendly recipe plugin for everyone. Automatic JSON-LD metadata for food AND how-to…","description":"

WP Recipe Maker is the easy recipe plugin that everyone can use. An easy workflow allows you to add recipes to any post or page with automatic JSON-LD metadata for your recipes. This metadata will improve your SEO and get you more visitors!

\n

\n

Would you like to see the plugin in action before installing it? We have a WP Recipe Maker demo website showcasing all of the features!

\n
\n

Get the most out of this plugin!
\n Join the WP Recipe Maker Email Course and we’ll help you get started and learn all the tips and trick for using WPRM.

\n
\n

Features

\n

An overview of WP Recipe Maker features:

\n
    \n
  • Compatible with both the Classic Editor and new Gutenberg editor
  • \n
  • Includes an Elementor block and shortcode can be used in other page builders
  • \n
  • Easy workflow to add recipes to any post or page
  • \n
  • Uses schema.org/Recipe JSON-LD metadata optimised for Google Recipe search
  • \n
  • Uses schema.org/How-to JSON-LD metadata optimised for non-food recipes and instructions
  • \n
  • Supports both regular and Guided Recipes for Google metadata
  • \n
  • Google AMP compatible
  • \n
  • Integrates recipe metadata with Yoast SEO schema graph
  • \n
  • Option to disable metadata per recipe if you want to publish non-food or DIY recipes
  • \n
  • Compatible with Pinterest Rich Pins and a setting to easily opt out
  • \n
  • Outputs ItemList metadata for Recipe Roundup posts
  • \n
  • Associate ingredients with instructions to have them show up exactly where needed
  • \n
  • Keyboard accessible and AMP compatible ratings for comments
  • \n
  • Interactive print recipe page with room for ads and optional credit to your website
  • \n
  • Fallback recipe shows up when the plugin is disabled
  • \n
  • Include a recipe video in the template and metadata
  • \n
  • Add photos or videos to any step of the recipe
  • \n
  • Print recipe and jump to recipe shortcodes
  • \n
  • This plugin is fully responsive, your recipes will look good on any device
  • \n
  • Easily change the look and feel to fit your website in the Template Editor
  • \n
  • Structure your ingredients and instructions in groups (e.g. icing and cake batter)
  • \n
  • Full text search for your recipes
  • \n
  • Access your recipes through the WordPress REST API
  • \n
  • Built-in SEO check for your recipe metadata
  • \n
  • Compatible with RTL languages
  • \n
  • Import your recipes from other plugins (see below)
  • \n
\n

WP Recipe Maker Premium

\n

Looking for some more advanced functionality? We also have the WP Recipe Maker Premium add-on available with the following features:

\n
    \n
  • Use ingredient links for linking to products or other recipes
  • \n
  • Adjustable servings make it easy for your visitors
  • \n
  • Display all nutrition data in a nutrition label
  • \n
  • User Ratings allow visitors to vote without commenting
  • \n
  • Add a mobile-friendly kitchen timer to your recipes
  • \n
  • More Premium templates for a unique recipe template
  • \n
  • Create custom recipe taxonomies like price level, difficulty, …
  • \n
  • Use checkboxes for your ingredients and instructions
  • \n
\n

Even more add-ons can add the following functionality:

\n
    \n
  • Integration with a Nutrition API for automatic nutrition facts
  • \n
  • Unit Conversion to reach an international audience with a different unit system
  • \n
  • Have your users send in recipes through the Recipe Submission form
  • \n
  • Give your visitors the power of Recipe Collections for favourites, meal planning and more
  • \n
\n

Import Options

\n

Currently using another recipe plugin? No problem! You can easily migrate all your existing recipes to WP Recipe Maker if you’re using any of the following plugins:

\n
    \n
  • Tasty Recipes
  • \n
  • Create by Mediavine
  • \n
  • EasyRecipe
  • \n
  • WP Ultimate Recipe
  • \n
  • Recipe Card Blocks by WPZOOM
  • \n
  • Meal Planner Pro
  • \n
  • BigOven
  • \n
  • ZipList and Zip Recipes
  • \n
  • Yummly
  • \n
  • Yumprint Recipe Card
  • \n
  • FoodiePress
  • \n
  • Cooked
  • \n
  • Cookbook
  • \n
  • Simple Recipe Pro
  • \n
  • Purr Recipe Plugin
  • \n
  • Recipes by Simmer
  • \n
  • WordPress.com shortcode
  • \n
  • JSON-LD HTML Script
  • \n
  • Multi Rating (ratings only)
  • \n
  • (Need anything else? Just ask!)
  • \n
\n

This plugin is in active development. Feel free to contact us with any feature requests or ideas.

\n","download_link":"https://downloads.wordpress.org/plugin/wp-recipe-maker.zip","tags":{"cooking":"cooking","food":"food","ingredients":"ingredients","recipe":"Recipe","recipes":"recipes"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QG7KZMGFU325Y","icons":{"1x":"https://ps.w.org/wp-recipe-maker/assets/icon-128x128.png?rev=1491788","2x":"https://ps.w.org/wp-recipe-maker/assets/icon-256x256.png?rev=1491788"},"wporg":true},{"name":"Slim SEO – Fast & Automated WordPress SEO Plugin","slug":"slim-seo","version":"3.10.1","author":"eLightUp","author_profile":"https://profiles.wordpress.org/rilwis","requires":"4.5","tested":"5.8","requires_php":"5.6","rating":92,"ratings":{"1":1,"2":3,"3":0,"4":0,"5":26},"num_ratings":30,"support_threads":16,"support_threads_resolved":12,"active_installs":10000,"downloaded":169791,"last_updated":"2021-07-22 1:33am GMT","added":"2018-12-31","homepage":"https://wpslimseo.com","short_description":"A full-featured SEO plugin for WordPress that's lightweight, blazing fast with minimum configuration. No bloats,…","description":"

A Fast & Automated SEO Plugin For WordPress

\n

Currently there are many SEO plugins for WordPress in the market. But these plugins often have too many options and are very complicated for ordinary users. Access to their configuration section, you will easily get lost in a maze of explanations and options that you sometimes don’t understand. Besides, there are ads!

\n

So how can an ordinary user use an SEO plugin?

\n

SEO should be an integrated part of WordPress, where users don’t need or need very little effort to configure for SEO. The main reason is that not everyone understands the terms of SEO and how to configure them optimally.

\n

So, we made Slim SEO.

\n

Slim SEO is a full-featured SEO plugin, that’s done right! It provides a complete SEO solution for WordPress where the configuration has been done automatically. Users do not need to care about their complex and semantic options.

\n

So what does Slim SEO do?

\n

Slim SEO Features

\n

Slim SEO helps you do the following jobs automatically:

\n

1. Meta Tags

\n

The following meta tags are auto-generated and optimized for the best SEO scores.

\n\n

2. XML Sitemap

\n

Slim SEO automatically generates XML sitemap (at domain.com/sitemap.xml) to submit to search engines. With XML sitemaps, your website are indexed fast and completely.

\n

3. Breadcrumbs

\n

The plugin allows you to output a breadcrumb trail on your website easily. It automatically fetches the information from the current post and output a hierarchy for you. You can also style the breadcrumbs to match your theme style.

\n

4. Schema (Structured Data)

\n

Schema is a way that describes structured data for search engines. Based on the data provided, search engines can show the content in the search results page in a more appealing way.

\n

Slim SEO automatically adds the some structured data to the website via JSON-LD which makes your website more SEO-friendly. Not only schemas are created by the plugin, there are also meaningful connections between them. For example, an article (single post) is the main entity of the current webpage. Slim SEO does that all without any configuration.

\n

5. Auto Redirection

\n
    \n
  • Auto redirect attachment page to the attachment file URL.
  • \n
  • Auto redirect author page to the homepage if the website has only one author or the author doesn’t have any posts.
  • \n
\n

6. Open Source

\n

Slim SEO has different contributors which help make Slim SEO a quality product. Join us on Github!

\n

Who should use Slim SEO?

\n

Everyone can use Slim SEO!

\n

However, Slim SEO is perfectly suitable for users who prefer simplicity or do not like the complicated options that other SEO plugins provide. It’s also a good choice for users with little SEO knowledge and just want to use SEO plugins to automate their jobs.

\n

If you like this plugin, you might also like our other products: Meta Box and GretaThemes.

\n","download_link":"https://downloads.wordpress.org/plugin/slim-seo.3.10.1.zip","tags":{"google":"google","schema":"schema","search-engine-optimization":"search engine optimization","seo":"seo","sitemap":"sitemap"},"donate_link":"https://wpslimseo.com/pro/","icons":{"1x":"https://ps.w.org/slim-seo/assets/icon.svg?rev=2005049","svg":"https://ps.w.org/slim-seo/assets/icon.svg?rev=2005049"},"wporg":true},{"name":"Schema & Structured Data for WP & AMP","slug":"schema-and-structured-data-for-wp","version":"1.9.83.1","author":"Magazine3","author_profile":"https://profiles.wordpress.org/magazine3","requires":"3.0","tested":"5.8","requires_php":false,"rating":94,"ratings":{"1":13,"2":1,"3":2,"4":10,"5":183},"num_ratings":209,"support_threads":30,"support_threads_resolved":19,"active_installs":80000,"downloaded":2323847,"last_updated":"2021-08-31 7:07am GMT","added":"2018-08-06","homepage":"","short_description":"Schema & Structured Data for WP & AMP adds Google Rich Snippets markup according to…","description":"

Schema & Structured Data for WP & AMP adds Google Rich Snippets markup according to Schema.org guidelines to structure your site for SEO. (AMP Compatible)

\n

Features

\n
    \n
  • Schema Types: Currently, We have more than 35 schema types such as Blog Posting, News article, Local Business, Web page, Article, Recipe, Product, and Video Object view all. We are going to add all the schema types in the future. You can request the one you want and we will add it for you!
  • \n
  • Conditional Display Fields: Meaning you include or exclude any posts, pages, post types, taxonomies and more!
  • \n
  • Knowlegde Base Support: Recognize the content based on the organization or a person via data type option.
  • \n
  • Full AMP Compatiblity: Supports the AMP for WP and AMP by Automattic plugins.
  • \n
  • Advanced Settings: Play with output of schema markup using these options (Defragment, Add in Footer, Pretty Print, MicroData CleanUp etc.)
  • \n
  • Migration: Import the data from other schema plugins such as (SEO Pressor, WP SEO Schema, Schema Plugin etc )
  • \n
  • Compatibility: Generate the schema markup for the plugins. We have provided schema support for them. Few of them are – kk Star Ratings, WP-PostRatings, bbPress
  • \n
  • Google Review: Display your business google reviews and its schema markup on your website.
  • \n
  • [Premium] Reviews ( Fetch reviews from 75+ platforms ).
  • \n
  • [Premium] Priority Support. Get it We get more than 100 technical queries a day but the Priority support plan will help you skip that and get the help from a dedicated team.
  • \n
  • Review Module: Create your own review rating box with pros and cons and its schema markup
  • \n
  • Schema Type Blocks in Gutenberg: Create your own content with the blocks and json schema markup will be added automatically
  • \n
  • Unlimited Custom Post Types: You can control to represent the Rich Snippets data in the google search console using unlimited custom post types.
  • \n
  • Easy to use with Minimal Settings
  • \n
  • Archive Page Listing Support
  • \n
  • JSON-LD Format
  • \n
  • Easy to use Setup Wizard
  • \n
  • Breadcrumbs Listing Support
  • \n
  • Comments Post comments Support
  • \n
  • Constant Development & New Features: We’ll be releasing the constant updates along with the more handy features as soon as we get the feedback from the users.
  • \n
\n

Supported Schema Types

\n
    \n
  • Apartment
  • \n
  • House
  • \n
  • SingleFamilyResidence
  • \n
  • Article
  • \n
  • Blogposting
  • \n
  • Book
  • \n
  • Course
  • \n
  • DiscussionForumPosting,
  • \n
  • DataFeed
  • \n
  • HowTo
  • \n
  • NewsArticle
  • \n
  • QAPage
  • \n
  • Review
  • \n
  • Recipe
  • \n
  • TVSeries
  • \n
  • SoftwareApplication
  • \n
  • MobileApplication
  • \n
  • SpecialAnnouncement (Related to Coronavirus)
  • \n
  • TechArticle
  • \n
  • WebPage
  • \n
  • Event
  • \n
  • VideoGame
  • \n
  • JobPosting
  • \n
  • Service
  • \n
  • Trip
  • \n
  • AudioObject
  • \n
  • VideoObject
  • \n
  • MedicalCondition
  • \n
  • MusicPlaylist
  • \n
  • MusicAlbum
  • \n
  • LocalBusiness with all the sub categories
  • \n
  • Product
  • \n
  • TouristAttraction
  • \n
  • TouristDestination
  • \n
  • LandmarksOrHistoricalBuildings
  • \n
  • HinduTemple
  • \n
  • Church
  • \n
  • Mosque
  • \n
  • Person
  • \n
  • View All
  • \n
\n

Extensions

\n

Some useful extensions to extend Schema & Structured Data for WP & AMP features, check Woocommerce Compatibility For Schema, Cooked Compatibility For Schema and We are going to add more.

\n

Support

\n

We try our best to provide support on WordPress.org forums. However, We have a special team support where you can ask us questions and get help. Delivering a good user experience means a lot to us and so we try our best to reply each and every question that gets asked.

\n

Bug Reports

\n

Bug reports for Schema & Structured Data for WP & AMP are welcomed on GitHub. Please note GitHub is not a support forum, and issues that aren’t properly qualified as bugs will be closed.

\n

Credits

\n
    \n
  • Select2 used https://github.com/select2/select2 – License URI: https://github.com/select2/select2/blob/develop/LICENSE.md,
  • \n
  • Merlin WP used https://github.com/richtabor/MerlinWP – License URI: https://github.com/richtabor/MerlinWP/blob/master/LICENSE,
  • \n
  • jquery-timepicker used https://github.com/jonthornton/jquery-timepicker
  • \n
  • Rate Yo! used https://github.com/prrashi/rateYo – License URI: https://github.com/prrashi/rateYo/commit/f3812fe96c38b08627d209795176053550fb1427
  • \n
  • Aqua Resizer used http://aquagraphite.com – License URI: WTFPL – http://sam.zoy.org/wtfpl/
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/schema-and-structured-data-for-wp.1.9.83.1.zip","tags":{"google-snippets":"google snippets","rich-snippets":"rich snippets","schema":"schema","schema-org":"schema.org","structured-data":"structured data"},"donate_link":"","icons":{"1x":"https://ps.w.org/schema-and-structured-data-for-wp/assets/icon-128x128.png?rev=1922284","2x":"https://ps.w.org/schema-and-structured-data-for-wp/assets/icon-256x256.png?rev=1922284"},"wporg":true},{"name":"GenerateBlocks","slug":"generateblocks","version":"1.3.5","author":"Tom Usborne","author_profile":"https://profiles.wordpress.org/edge22","requires":"5.4","tested":"5.8","requires_php":"5.6","rating":98,"ratings":{"1":0,"2":0,"3":2,"4":1,"5":72},"num_ratings":75,"support_threads":28,"support_threads_resolved":12,"active_installs":50000,"downloaded":238382,"last_updated":"2021-07-19 6:12pm GMT","added":"2020-05-19","homepage":"https://generateblocks.com","short_description":"A small collection of lightweight WordPress blocks that can accomplish nearly anything.","description":"

\n

\n

Add incredible versatility to your editor without bloating it with tons of one-dimensional Gutenberg blocks. With GenerateBlocks, you can learn a handful of blocks deeply and use them to build anything.

\n

GenerateBlocks works hand-in-hand with GeneratePress, but is built to work with any theme.

\n

Looking for more features? Check out GenerateBlocks Pro.

\n

Container

\n

Organize your content into rows and sections. The Container block is the foundation of your content, allowing you to design unique sections for your content.

\n

Grid

\n

Create advanced layouts with flexible grids. The Grid block gives you the ability to create any kind of layout you can imagine.

\n

Headline

\n

Craft text-rich content with advanced typography. Everything from headings to paragraphs – take full control of your text.

\n

Buttons

\n

Drive conversions with beautiful buttons.

\n

Performance

\n

We take performance seriously. Minimal CSS is generated only for the blocks you need, and our HTML structure is as simple as possible while allowing for maximum flexibility.

\n

Coding standards

\n

Built to the highest coding standards for security, stability and future compatibility.

\n

Fully responsive

\n

Every block comes with tablet and mobile controls, giving you total control of your responsive design.

\n

Documentation

\n

Check out our documentation for more information on the individual blocks and how to use them.

\n","download_link":"https://downloads.wordpress.org/plugin/generateblocks.1.3.5.zip","tags":{"blocks":"blocks","container":"container","grid":"grid","gutenberg":"gutenberg","headline":"headline"},"donate_link":"https://generateblocks.com","icons":{"1x":"https://ps.w.org/generateblocks/assets/icon-128x128.png?rev=2336822","2x":"https://ps.w.org/generateblocks/assets/icon-256x256.png?rev=2336822"},"wporg":true},{"name":"Blackhole for Bad Bots","slug":"blackhole-bad-bots","version":"3.2","author":"Jeff Starr","author_profile":"https://profiles.wordpress.org/specialk","requires":"4.1","tested":"5.8","requires_php":"5.6.20","rating":98,"ratings":{"1":2,"2":0,"3":3,"4":2,"5":108},"num_ratings":115,"support_threads":3,"support_threads_resolved":3,"active_installs":30000,"downloaded":305651,"last_updated":"2021-07-19 8:41pm GMT","added":"2016-02-18","homepage":"https://perishablepress.com/blackhole-bad-bots/","short_description":"Blackhole is a WordPress security plugin that detects and traps bad bots in a virtual black hole, where they are denied access to your entire site.","description":"
\n

Add your own virtual black hole trap for bad bots.

\n
\n

Bye bye bad bots..

\n

Bad bots are the worst. They do all sorts of nasty stuff and waste server resources. The Blackhole plugin helps to stop bad bots and save precious resources for legit visitors.

\n

How does it work?

\n

First the plugin adds a hidden trigger link to the footer of your pages. You then add a line to your robots.txt file that forbids all bots from following the hidden link. Bots that then ignore or disobey your robots rules will crawl the link and fall into the trap. Once trapped, bad bots are denied further access to your WordPress site.

\n

I call it the “one-strike” rule: bots have one chance to obey your site’s robots.txt rule. Failure to comply results in immediate banishment. The best part is that the Blackhole only affects bad bots: human users never see the hidden link, and good bots obey the robots rules in the first place. Win-win! 🙂

\n

Using a caching plugin? Check out the Installation notes for important info.

\n

Features

\n
    \n
  • Easy to set up
  • \n
  • Squeaky clean code
  • \n
  • Focused and modular
  • \n
  • Lightweight, fast and flexible
  • \n
  • Built with the WordPress API
  • \n
  • Works with other security plugins
  • \n
  • Easy to reset the list of bad bots
  • \n
  • Easy to delete any bot from the list
  • \n
  • Regularly updated and “future proof”
  • \n
  • Blackhole link includes “nofollow” attribute
  • \n
  • Plugin options configurable via settings screen
  • \n
  • Works silently behind the scenes to protect your site
  • \n
  • Whitelists all major search engines to never block
  • \n
  • Focused on flexibility, performance, and security
  • \n
  • Email alerts with WHOIS lookup for blocked bots
  • \n
  • Complete inline documentation via the Help tab
  • \n
  • Provides setting to whitelist any IP addresses
  • \n
  • Customize the message displayed to bad bots 😉
  • \n
  • One-click restore the plugin default options
  • \n
  • Does NOT use or require any .htaccess rules
  • \n
\n

Blackhole for Bad Bots protects your site against bad bots, spammers, scrapers, scanners, and other automated threats.

\n

Not using WordPress? Check out the standalone PHP version of Blackhole!

\n

Check out Blackhole Pro and level up with advanced features!

\n

Whitelist

\n

By default, this plugin does NOT block any of the major search engines (user agents):

\n
    \n
  • AOL.com
  • \n
  • Baidu
  • \n
  • Bingbot/MSN
  • \n
  • DuckDuckGo
  • \n
  • Googlebot
  • \n
  • Teoma
  • \n
  • Yahoo!
  • \n
  • Yandex
  • \n
\n

These search engines (and all of their myriad variations) are whitelisted via user agent. So are a bunch of other “useful” bots. They always are allowed full access to your site, even if they disobey your robots.txt rules. This list can be customized in the plugin settings. For a complete list of whitelisted bots, visit the Help tab in the plugin settings (under “Whitelist Settings”).

\n

Privacy

\n

User Data: This plugin automatically blocks bad bots. When bad bots fall into the trap, their IP address, user agent, and other request data are stored in the WP database. No other user data is collected by this plugin. At any time, the administrator may delete all saved data via the plugin settings.

\n

Services: This plugin does not connect to any third-party locations or services.

\n

Cookies: This plugin does not set any cookies.

\n

Header Image Courtesy NASA/JPL-Caltech.

\n

Support development of this plugin

\n

I develop and maintain this free plugin with love for the WordPress community. To show support, you can make a donation or purchase one of my books:

\n\n

And/or purchase one of my premium WordPress plugins:

\n\n

Links, tweets and likes also appreciated. Thanks! 🙂

\n","download_link":"https://downloads.wordpress.org/plugin/blackhole-bad-bots.3.2.zip","tags":{"anti-spam":"anti-spam","bad-bots":"bad bots","blackhole":"blackhole","honeypot":"honeypot","security":"security"},"donate_link":"https://monzillamedia.com/donate.html","icons":{"1x":"https://ps.w.org/blackhole-bad-bots/assets/icon-128x128.png?rev=1471215","2x":"https://ps.w.org/blackhole-bad-bots/assets/icon-256x256.png?rev=1471215"},"wporg":true},{"name":"Page View Count","slug":"page-views-count","version":"2.4.12","author":"a3rev Software","author_profile":"https://profiles.wordpress.org/a3rev","requires":"5.0","tested":"5.8","requires_php":false,"rating":78,"ratings":{"1":8,"2":5,"3":2,"4":3,"5":30},"num_ratings":48,"support_threads":2,"support_threads_resolved":0,"active_installs":20000,"downloaded":403671,"last_updated":"2021-07-19 10:48am GMT","added":"2012-12-21","homepage":"","short_description":"Places an icon, all time views count and views today count at the bottom of posts, pages and custom post types on any WordPress website.","description":"

A beautifully simple to set up plugin that gives site visitors and site owners the ability to quickly and easily see how many people have visited that page or post.

\n

FEATURES

\n
    \n
  • On the front end it adds an icon and page views count to the bottom or top of pages and posts on your WordPress website.
  • \n
  • Switch ON | OFF hide Page Views Count for all Posts, Pages and all custom posts types including WooCommerce custom post types.
  • \n
  • Set the Position of the counter to show at the top of the page or post or at the bottom
  • \n
  • Set alignment of the counter Left, Right or Centre
  • \n
  • Set the colour and size of the counter icon
  • \n
  • Option to use load by Ajax to prevent the count from being cached by caching plugins
  • \n
  • Option to Manually set / edit total views and views today from Page View Count meta box on any post or page editor
  • \n
  • Add Page Views counter via the PVC Gutenberg block
  • \n
  • Add Page Views counter via shortcode
  • \n
  • Add Page Views counter via widget
  • \n
  • Developers can add the Page Views Counter via php tag
  • \n
  • All options and settings are point click – absolutely no coding required
  • \n
\n

COMPATIBILTY

\n

Compatible with WordPress 5.3+ and backwards to WP 4.9.0. Compatible with Classic Editor plugin with 5.0+ (Gutenberg Deactivated)

\n

GUTENBERG BLOCK

\n

Using the Gutenberg Editor. Use the Page View Count Block to add the counter to any page or post content. Block search for ‘Page Views’ or selecting the block from the a3rev Blocks menu.

\n

Adding the Page Views block to your content automatically deactivates the Global Page View counter on the post or page.

\n

ELEMENTOR TEMPLATES

\n

Fully compatible with Elementor templates. Add counter via Shortcode or widget to any template.

\n

DEVELOPERS

\n

On the plugins dashboard in the + Page Views Count Function options box you will find the Page Views Count functions and notes on how to use them.

\n
    \n
  • Use to manually add Page views count to any content or object in the theme.
  • \n
  • Use to add page View Count to any content that is not create using WordPress custom post / taxonomy type.
  • \n
  • Use to create a custom position of the Page Views Count
  • \n
  • Functions support echo and return parameters when getting visitor stats on any variable.
  • \n
\n

TROUBLESHOOTING

\n
    \n
  • The number 1 support request we get about the plugin is that it double or triple counts page or post loads. Yes it does and if you see that it is a Red Flag that you have a misconfiguration or bug in your theme or a plugin. Page Views Count does exactly that – counts each time the page or post is loading in the browser – if its counting twice it is because the browser is double loading the page. That is a bad thing and you or your developer needs to fix that.
  • \n
\n

CONTRIBUTE

\n

When you download Page Views Count, you join our community. Regardless of if you are a WordPress beginner or experienced developer if you’?re interested in contributing to Page Views Count development head over to the Page Views Count GitHub Repository to find out how you can contribute.
\nWant to add a new language to Page Views Count? Great! You can contribute via translate.wordpress.org

\n

Usage

\n
    \n
  1. \n

    Install and activate the plugin

    \n
  2. \n
  3. \n

    Go to WordPress Settings menu > Page View Count Menu

    \n
  4. \n
  5. \n

    Activate Page Views Count and use the options box settings to make the desired configuration

    \n
  6. \n
  7. \n

    Be sure to clear any caching and browser cache to see your Page Views Count

    \n
  8. \n
\n","download_link":"https://downloads.wordpress.org/plugin/page-views-count.2.4.12.zip","tags":{"gutenberg":"gutenberg","page-view-count":"page view count","post-view-count":"post view count","post-views":"post views","wordpress-page-view":"wordpress page view"},"donate_link":"","icons":{"1x":"https://ps.w.org/page-views-count/assets/icon.svg?rev=986301","2x":"https://ps.w.org/page-views-count/assets/icon-256x256.png?rev=986301","svg":"https://ps.w.org/page-views-count/assets/icon.svg?rev=986301"},"wporg":true},{"name":"Newspack Listings","slug":"newspack-listings","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":"","ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":"","support_threads":"","support_threads_resolved":"","active_installs":"","downloaded":"","last_updated":"","added":"","homepage":"https://github.com/Automattic/newspack-listings/releases","short_description":"

Create reusable content as listings and add them to lists wherever core blocks can be used

\n","description":"\n\n\n

Create reusable content as listings and add them to lists wherever core blocks can be used

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2021/02/listings2-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2021/02/listings2-372x209.jpg","svg":""},"wporg":false},{"name":"Newspack Newsletters","slug":"newspack-newsletters","version":"1.31.1","author":"Automattic","author_profile":"https://profiles.wordpress.org/automattic","requires":"5.3","tested":"5.8.0","requires_php":"5.6","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":1,"support_threads_resolved":1,"active_installs":500,"downloaded":2866,"last_updated":"2021-08-10 8:45pm GMT","added":"2021-02-15","homepage":"https://newspack.pub","short_description":"Create email newsletters with the Gutenberg editor and distribute them with your Mailchimp or Constant…","description":"

Create email newsletters with the Gutenberg editor and send them via Mailchimp or Constant Contact, all without leaving WP Admin! Newspack Newsletters lets you build eye-catching newsletters using the WordPress editing tools you’re already familiar with, and lets you save drafts, create reusable layouts, send to your existing mailing list, and also publish them to your website.

\n

Use and create newsletter layouts

\n

Newspack Newsletters comes with four default layouts to help you start building newsletters quickly. You can use an existing layout, or start fresh with a blank page. You can also create and save your own layouts, or alter the ones that come bundled with the plugin and save the settings, and use them for future campaigns.

\n

Use Gutenberg blocks and settings

\n

Newspack Newsletters supports most core Gutenberg blocks and configurations, letting you use blocks like Group, Button, Columns, and more, to create dynamic layouts. The plugin will warn you when a block will not display as expected in an email.

\n

Customize your newsletter’s appearance

\n

You can customize your newsletters further by changing the header and body fonts, or picking a background color.

\n

Newspack Blocks

\n

Newspack Newsletters comes bundled with the Newspack Post Inserter block. This block lets you insert excerpts from live posts on your site, and, once inserted, will turn those posts into static content using the Header and Paragraph blocks, linking back to your site.

\n

Need to target a post title to your newsletter audience? Not a problem! You can edit these blocks, and add others, to make sure they’ speak to your readers.

\n

Add ads!

\n

Monetize your newsletters by including advertising. The Newspack Newsletters plugin lets you create ads, which are stored as a custom post type. Ads are automatically inserted into your newsletters, and can also be toggled off on a newsletter-by-newsletter basis.

\n

Send with ease

\n

Newspack Newsletters connects to your Mailchimp or Constant Contact accounts to send emails using the mailing lists you’ve collected there, all without leaving the WordPress Admin.

\n

Before sending your campaign, you can send test emails to one or more email addresses at a time from the newsletter editor, to make sure everything is pixel perfect before sharing with the world.

\n

About Newspack

\n

The Newspack Newletters plugin is part of Newspack, a suite of tools to help small to mid-sized news organizations publish and generate revenue with WordPress. Newspack is a collaborative project by WordPress.com and the Google News Initiative. You can learn more about Newspack by visiting our website.

\n

Credits

\n

The beach photograph in the screenshot is by Life of Pix, licensed CC0.

\n","download_link":"https://downloads.wordpress.org/plugin/newspack-newsletters.zip","tags":{"constant-contact":"constant contact","mailchimp":"mailchimp","newsletters":"newsletters","newspack":"Newspack","wordpress-com":"WordPress.com"},"donate_link":"","icons":{"1x":"https://ps.w.org/newspack-newsletters/assets/icon.svg?rev=2475195","2x":"https://ps.w.org/newspack-newsletters/assets/icon-256x256.png?rev=2475195","svg":"https://ps.w.org/newspack-newsletters/assets/icon.svg?rev=2475195"},"wporg":true},{"name":"Web Stories","slug":"web-stories","version":"1.10.1","author":"Google","author_profile":"https://profiles.wordpress.org/google","requires":"5.5","tested":"5.8","requires_php":"7.0","rating":84,"ratings":{"1":5,"2":2,"3":2,"4":4,"5":31},"num_ratings":44,"support_threads":111,"support_threads_resolved":86,"active_installs":20000,"downloaded":322921,"last_updated":"2021-08-25 7:02pm GMT","added":"2020-09-22","homepage":"https://wp.stories.google/","short_description":"Web Stories are a visual storytelling format for the open web which immerses your readers…","description":"

Web Stories are a free, open-web, visual storytelling format for the web, enabling you to easily create visual narratives with engaging animations and tappable interactions, and immerse your readers in great and fast-loading full-screen experiences.

\n

Benefits of Web Stories

\n

The Web Stories format puts features and capabilities at your fingertips to engage with your audience via the power of storytelling on the open web. Specifically, you can:

\n
    \n
  • Create beautiful and engaging content easily: Web Stories make the production of stories as easy as possible from a technical perspective.
  • \n
  • Enjoy creative flexibility for editorial freedom and branding: The Web Stories format comes with preset but flexible layout templates, standardized UI controls, and components for sharing and adding follow-on content.
  • \n
  • Share and link your stories on the open web: Web Stories are part of the open web and can be shared and embedded across sites and apps without being confined to a single ecosystem.
  • \n
  • Track and measure your stories: Supports analytics and bookend capabilities for viral sharing and monetization.
  • \n
  • Capture the attention of your readers by offering fast loading times to your stories: Web Stories are lightning fast so that your audience stays engaged and entertained.
  • \n
  • Engage with your readers via immersive storytelling: Web Stories are a new and modern way to reach existing readers.
  • \n
  • Monetize effectively the beautiful and engaging stories you create: Web Stories enable monetization capability for publishers using affiliate links. For advertisers, Stories is a way to reach a unique audience within a new storytelling experience.
  • \n
\n

Web Stories Editor

\n

The Web Stories editor for WordPress brings together a robust set of story creation capabilities in a user-friendly, WYSIWYG creation tool. Some of the key features you can leverage out of the box are:

\n
    \n
  • A visually rich and intuitive dashboard, allowing you to easily navigate the story creation process
  • \n
  • Beautiful and expressive page templates to you get your story creation process started quickly and smoothly
  • \n
  • Easy drag-and-drop capabilities, making it easy to compose beautiful stories
  • \n
  • Convenient access to WordPress’ media library, enabling you to grab your media assets right from the plugin dashboard as you create your stories
  • \n
  • Customizable color and text style presets, making it easy to tailor the style of your stories to the needs of your content strategy
  • \n
  • And much more!
  • \n
\n

Using the Web Stories editor for WordPress, you can easily create visual narratives with tappable interactions, and share freely across the web, or embed them on your existing content strategies. The Stories you create are yours in every way, as Web Stories belong to the open web, instead of being confined to any specific closed ecosystem or platform.

\n

Audience: Everyone

\n

Web Stories are for everyone! If you are a site owner, content creator, or publisher on the web, embracing the Web Stories format would be great as a way to enhance the quality of your content strategy, the value you bring to your readers, and consequently your chances of achieving sustainable success.

\n

Terms of Service

\n

By using this plugin, you agree to Google’s Terms of Service. By using third-party imagery and video provided by Unsplash, Coverr and Tenor, you agree to adhere to the respective Terms of Service.

\n","download_link":"https://downloads.wordpress.org/plugin/web-stories.1.10.1.zip","tags":{"amp":"amp","google":"google","stories":"stories","storytelling":"storytelling","web-stories":"web stories"},"donate_link":"","icons":{"1x":"https://ps.w.org/web-stories/assets/icon.svg?rev=2386543","2x":"https://ps.w.org/web-stories/assets/icon-256x256.png?rev=2386543","svg":"https://ps.w.org/web-stories/assets/icon.svg?rev=2386543"},"wporg":true},{"name":"Jetpack – WP Security, Backup, Speed, & Growth","slug":"jetpack","version":"10.0","author":"Automattic","author_profile":"https://profiles.wordpress.org/automattic","requires":"5.7","tested":"5.8","requires_php":"5.6","rating":78,"ratings":{"1":320,"2":80,"3":81,"4":137,"5":1014},"num_ratings":1632,"support_threads":352,"support_threads_resolved":316,"active_installs":5000000,"downloaded":242891865,"last_updated":"2021-08-03 4:25pm GMT","added":"2011-01-20","homepage":"https://jetpack.com","short_description":"Improve your WP security with powerful one-click tools like backup and malware scan. Get essential…","description":"

The most popular WordPress plugin for just about everything.

\n

WordPress security, performance, marketing, and design tools — Jetpack is made by WordPress experts to make WP sites safer and faster, and help you grow your traffic.

\n

24/7 AUTO SITE SECURITY

\n

We guard your site so you can run your site or business. Jetpack Security provides easy-to-use, comprehensive WordPress site security including auto real-time backups and easy restores, malware scans, and spam protection. Essential features like brute force protection and downtime / uptime monitoring are free.

\n
    \n
  • Back up your site automatically in real time and restore to any point with one click. Unlimited storage for your backup. Great for eCommerce stores especially Woo.
  • \n
  • Manage migration to a new host, migrate theme files and plugins to a new database, easily duplicate websites, create full database backups, clone websites, repair broken websites by restoring older backups or easily set up a test site by creating a duplicate of your existing WP website.
  • \n
  • See every site change and who made it with the activity log, great for coordination, debug, maintenance, or troubleshooting.
  • \n
  • Automatically perform malware scans and security scans for other code threats. One click fix to restore your site for malware.
  • \n
  • Block spam comments and form responses with anti spam features powered by Akismet.
  • \n
  • Brute force attack protection to protect your WordPress login page from attacks.
  • \n
  • Monitor your site uptime / downtime and get an instant alert of any change by email.
  • \n
  • Secure WordPress.com powered login used by millions of sites with optional 2FA (two factor authentication) for extra protection.
  • \n
  • Auto update individual plugins for easy site maintenance and management.
  • \n
\n

PEAK SPEED AND PERFORMANCE

\n

Get blazing fast site speed with Jetpack, the premier WP plugin built to leverage the power of AMP, a tool that helps optimize your site on mobile devices. Jetpack’s free CDN (content delivery network) auto optimizes your images. Watch your page load times decrease — we’ll optimize your images and serve them from our own powerful global network, and speed up your site on mobile devices to reduce bandwidth usage and save money!

\n
    \n
  • Jetpack has partnered with Google AMP to create the best, highest performance all-in-one toolkit for WordPress. By using Jetpack and AMP together, you get all the features you need to build a beautiful, fast, modern website with no coding required.
  • \n
  • Image CDN for images and static files, like CSS and JavaScript, served from our servers, not yours, which saves you money and bandwidth.
  • \n
  • Lazy load images for a super fast experience, even on mobile. Jetpack’s lazy loading automatically delays the loading of media on your posts and pages until your visitors scroll down to where they appear on the page.
  • \n
  • Unlimited, high speed, ad free video hosting keeps the focus on your content, not on ads or recommendations that lead people off site.
  • \n
  • Custom site search is incredibly powerful and customizable. Helps your visitors instantly find the right content so they read and buy more. Works great with WooCommerce / eCommerce sites to help filter products so customers get what they want on your site faster.
  • \n
  • Recommended to use with WP Super Cache for ultimate WordPress site speed.
  • \n
\n

POWERFUL TOOLS FOR GROWTH

\n

Create and customize your WordPress site, optimize it for visitors and revenue, and enjoy watching your stats tick up. Build it, share it, and watch it grow.

\n
    \n
  • Advanced site stats and analytics to help you understand your audience.
  • \n
  • Auto publish blog posts and products to social media by simply using our tools to connect to Facebook, Twitter, and Linkedin.
  • \n
  • Easily share Instagram posts on your pages and blog posts.
  • \n
  • Collect a payment or donation, sell a product, service, or membership with simple integrations with PayPal and Stripe.
  • \n
  • Grow traffic with SEO tools for Google, Bing, Twitter, Facebook, and WordPress.com. XML sitemap created automatically.
  • \n
  • Advertise on your site to generate revenue. The ad network automatically does the work for you to find high-quality ads that are placed on your site.
  • \n
  • Manage Jetpack features from anywhere with the official WordPress mobile app, available for Apple iOS (iPhone or iPad) and Google Android.
  • \n
  • Looking for Customer Relationship Management? Check out the Jetpack CRM plugin which works alongside Jetpack to give you a simple and practical way to build relationships with your customers and leads.
  • \n
\n

EASY DESIGN TOOLS

\n

Quickly customize your site to make it stand out — no coding needed.

\n
    \n
  • Themes — Simple themes to get started or pick a professional theme to make your site stand out.
  • \n
  • Related posts — Keep visitors on your site by automatically showing them related content they will be interested in.
  • \n
  • Gallery and Slideshow tools — Image galleries, carousel slider, and slideshows for WP sites and stores.
  • \n
  • Subscriptions — Make it easy for visitors to sign up to receive notifications of your latest posts and comments.
  • \n
  • Contact form — Easily build unlimited contact forms for free without any coding. Receive email notifications for each response. Integrate with mail solutions like Creative Mail to reach your customers and leads quickly. Connect to Jetpack Anti spam (powered by Akismet) to filter submissions.
  • \n
  • oEmbed Support — easily embed images, posts, and links from Facebook and Instagram.
  • \n
\n

INTEGRATIONS

\n

Jetpack is updated monthly to ensure seamless integration with top WordPress plugins and other tech products.

\n
    \n
  • Built for WooCommerce: Jetpack and WooCommerce are both made by Automattic. Backup, Scan, Anti-spam, integrate perfectly for Woo / eComm stores
  • \n
  • Jetpack is fully compatible with v2.0 of the official AMP plugin for WordPress.
  • \n
  • Better understand your customers and marketing with Google Analytics (GA) integration
  • \n
  • Social media platforms: Instagram, Facebook, Twitter, LinkedIn
  • \n
  • Simple Blocks to customize your site: Pinterest, Whatsapp, Podcast player, GIFs, maps, tiled gallery, slideshow
  • \n
  • Payment processors: easily collect payments or donations and sell products through Stripe and PayPal
  • \n
  • Site speed and performance plugins: Works great with WP Super Cache by Automattic and Cloudflare.
  • \n
  • Contact form: Anti-spam (Powered by Akismet) blocks spam comments for Jetpack forms, Contact Form 7, Ninja Forms, Gravity Forms, Formidable Forms, and more.
  • \n
  • Other tech integrations: Instagram, Creative Mail, Mailchimp, Calendly, Whatsapp, Pinterest, Revue, and more.
  • \n
\n

EXPERT SUPPORT

\n

We have a global team of Happiness Engineers ready to provide incredible support. Ask your questions in the support forum or contact us directly.

\n

GET STARTED

\n

Installation is free, quick, and easy. Set up Jetpack in minutes. Take advantage of more robust features like WordPress site security and design and growth tools by upgrading to a paid plan.

\n","download_link":"https://downloads.wordpress.org/plugin/jetpack.10.0.zip","tags":{"backup":"backup","malware":"malware","scan":"scan","security":"security","woo":"woo"},"donate_link":"","icons":{"1x":"https://ps.w.org/jetpack/assets/icon.svg?rev=2394525","2x":"https://ps.w.org/jetpack/assets/icon-256x256.png?rev=2394525","svg":"https://ps.w.org/jetpack/assets/icon.svg?rev=2394525"},"wporg":true},{"name":"Easy Notification Bar","slug":"easy-notification-bar","version":"1.4.2","author":"WPExplorer","author_profile":"https://profiles.wordpress.org/wpexplorer","requires":"5.2.0","tested":"5.8","requires_php":"5.6.2","rating":82,"ratings":{"1":0,"2":1,"3":1,"4":1,"5":4},"num_ratings":7,"support_threads":3,"support_threads_resolved":1,"active_installs":4000,"downloaded":33875,"last_updated":"2021-08-22 1:48am GMT","added":"2019-06-20","homepage":"https://wordpress.org/plugins/easy-notification-bar/","short_description":"Easily add a custom top bar notification message to on your site with live customization options via the WordPress customizer.","description":"

Easily add a custom top bar notification message to on your site with live customization options via the WordPress customizer. The plugin allows you to enter your notification bar text as well as an optional button to display next to your text. Perfect for notifying visitors of a current sale, hot product, warnings or other important messages.

\n

The Easy Notification Bar plugin makes use of the newer “wp_body_open” action hook introduced in WordPress 5.2.0 which allows the plugin to work better with any theme that has been updated to support the tag. Contrary to other notice bar solutions which rely on absolute positioning, this plugin inserts the notice bar right after the body tag so it should display perfectly without any conflicts on any well-coded theme.

\n

By default, the notification bar is “static” which means it displays at the top of your site so when you scroll down the page it will become “hidden”. This is generally better for usability and SEO. However, in version 1.4 we added a new sticky option which you can enable in the Customizer so that the notification bar remains visible as you scroll down the page. The sticky functionality makes use of the CSS sticky property (not javascript).

\n

Although disabled by default, you can enable a close icon for your notice. When enabled, your visitors will see an “x” icon over the top bar which they can click to hide the message for their current and future sessions. This functionality makes use of localStorage (not cookies).

\n

Live Demo: You can view a live demo for the notification bar on our More Widgets Plugin Demo

\n

Features

\n
    \n
  • Sitewide (or homepage only) top notification bar.
  • \n
  • Easy setup via the WordPress customizer.
  • \n
  • Optional close icon.
  • \n
  • Optional sticky display.
  • \n
  • Custom background, color, text alignment and font size settings.
  • \n
  • Optional callout button.
  • \n
  • Responsive design so it looks good on mobile.
  • \n
  • Minimal code.
  • \n
  • Vanilla Javascript used for close icon (jQuery not needed).
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/easy-notification-bar.zip","tags":{"notice":"notice","notice-bar":"notice bar","notification":"notification","notification-bar":"notification bar","top-bar":"top bar"},"donate_link":"","icons":{"1x":"https://ps.w.org/easy-notification-bar/assets/icon-128x128.png?rev=2515988","2x":"https://ps.w.org/easy-notification-bar/assets/icon-256x256.png?rev=2515988"},"wporg":true},{"name":"Antispam Bee","slug":"antispam-bee","version":"2.10.0","author":"pluginkollektiv","author_profile":"https://profiles.wordpress.org/pluginkollektiv","requires":"4.5","tested":"5.8","requires_php":"5.2","rating":96,"ratings":{"1":7,"2":1,"3":1,"4":2,"5":175},"num_ratings":186,"support_threads":7,"support_threads_resolved":5,"active_installs":700000,"downloaded":5039474,"last_updated":"2021-07-29 11:15am GMT","added":"2009-01-10","homepage":"https://antispambee.pluginkollektiv.org/","short_description":"Antispam plugin with a sophisticated tool set for effective day to day comment and trackback…","description":"

Say Goodbye to comment spam on your WordPress blog or website. Antispam Bee blocks spam comments and trackbacks effectively, without captchas and without sending personal information to third party services. It is free of charge, ad-free and 100% GDPR compliant.

\n

Feature/Settings Overview

\n
    \n
  • Trust approved commenters.
  • \n
  • Trust commenters with a Gravatar.
  • \n
  • Consider the comment time.
  • \n
  • Allow comments only in a certain language.
  • \n
  • Block or allow commenters from certain countries.
  • \n
  • Treat BBCode links as spam.
  • \n
  • Validate the IP address of commenters.
  • \n
  • Use regular expressions.
  • \n
  • Search local spam database for commenters previously marked as spammers.
  • \n
  • Notify admins by e-mail about incoming spam.
  • \n
  • Delete existing spam after n days.
  • \n
  • Limit approval to comments/pings (will delete other comment types).
  • \n
  • Select spam indicators to send comments to deletion directly.
  • \n
  • Optionally exclude trackbacks and pingbacks from spam detection.
  • \n
  • Optionally spam-check comment forms on archive pages.
  • \n
  • Display spam statistics on the dashboard, including daily updates of spam detection rate and a total of blocked spam comments.
  • \n
\n

Support

\n\n

Contribute

\n
    \n
  • Active development of this plugin is handled on GitHub.
  • \n
  • Pull requests for documented bugs are highly appreciated.
  • \n
  • If you think you’ve found a bug (e.g. you’re experiencing unexpected behavior), please post at the support forums first.
  • \n
  • If you want to help us translate this plugin you can do so on WordPress Translate.
  • \n
\n

Credits

\n\n","download_link":"https://downloads.wordpress.org/plugin/antispam-bee.2.10.0.zip","tags":{"anti-spam":"anti-spam","antispam":"antispam","block-spam":"block spam","comment":"comment","comments":"comments"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=TD4AMD2D8EMZW","icons":{"1x":"https://ps.w.org/antispam-bee/assets/icon-128x128.png?rev=977629","2x":"https://ps.w.org/antispam-bee/assets/icon-256x256.png?rev=977629"},"wporg":true},{"name":"SimpleTOC – Table of Contents Block","slug":"simpletoc","version":"4.8","author":"Marc Tönsing","author_profile":"https://profiles.wordpress.org/marcdk","requires":"5.0","tested":"5.8","requires_php":false,"rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":24},"num_ratings":24,"support_threads":2,"support_threads_resolved":1,"active_installs":2000,"downloaded":20616,"last_updated":"2021-07-29 9:07pm GMT","added":"2020-04-14","homepage":"https://marc.tv/simpletoc-wordpress-inhaltsverzeichnis-plugin-gutenberg/","short_description":"Adds a custom Table of Contents Gutenberg block.","description":"

In Gutenberg, add a block and search for “SimpleTOC” or just “TOC”. You need to save your post before you add the block. It works by parsing the post content and retrieving the heading blocks and creates a new dynamic block with a list of links to the headings.

\n

Hide the headline “Table of Contents” and set a maximum display depth in the blocks’ sidebar configuration. Add the CSS class “simpletoc-hidden” to a heading block to remove that specific heading from the generated TOC.

\n

Features

\n
    \n
  • No javascript or css added.
  • \n
  • Designed for Gutenberg.
  • \n
  • Compatible with AMP plugins.
  • \n
  • Minimal and valid HTML output.
  • \n
  • Inherits the style of your theme.
  • \n
  • Support for column block layouts.
  • \n
  • Control the maximum depth of the headings.
  • \n
  • Choose between an ordered and unordered html list.
  • \n
  • SEO friendly: Disable the h2 heading of the TOC block and add your own.
  • \n
  • Comes with English, French, Spanish, German, and Brazilian Portuguese translations.
  • \n
  • Works with non-latin texts. Tested with Japanese and Arabic.
  • \n
  • Finds headlines in groups and reusable blocks. And in groups within reusable blocks.
  • \n
  • Rank Math support.
  • \n
\n

Credits

\n

This plugin is forked from https://github.com/pdewouters/gutentoc by pdewouters and uses code from https://github.com/shazahm1/Easy-Table-of-Contents by shazahm1

\n

Many thanks to Tom J Nowell https://tomjn.com and and Sally CJ who both helped me a lot with my questions over at wordpress.stackexchange.com

\n","download_link":"https://downloads.wordpress.org/plugin/simpletoc.4.8.zip","tags":{"amp":"amp","block":"block","gutenberg":"gutenberg","table-of-contents":"table of contents","toc":"toc"},"donate_link":"https://marc.tv/out/donate","icons":{"1x":"https://ps.w.org/simpletoc/assets/icon.svg?rev=2451408","2x":"https://ps.w.org/simpletoc/assets/icon-256x256.png?rev=2451408","svg":"https://ps.w.org/simpletoc/assets/icon.svg?rev=2451408"},"wporg":true},{"name":"Log in with Google","slug":"login-with-google","version":"1.2.1","author":"rtCamp","author_profile":"https://profiles.wordpress.org/rtcamp","requires":"5.4.2","tested":"5.7.2","requires_php":"7.3","rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":6},"num_ratings":6,"support_threads":5,"support_threads_resolved":2,"active_installs":300,"downloaded":2919,"last_updated":"2021-07-23 10:00pm GMT","added":"2020-10-01","homepage":"","short_description":"Minimal plugin that allows WordPress users to log in using Google.","description":"

Ultra minimal plugin to let your users login to WordPress applications using their Google accounts. No more remembering hefty passwords!

\n

Initial Setup

\n
    \n
  1. \n

    Create a project from Google Developers Console if none exists.

    \n
  2. \n
  3. \n

    Go to Credentials tab, then create credential for OAuth client.

    \n
      \n
    • Application type will be Web Application
    • \n
    • Add YOUR_DOMAIN/wp-login.php in Authorized redirect URIs
    • \n
    \n
  4. \n
  5. \n

    This will give you Client ID and Secret key.

    \n
  6. \n
  7. \n

    Input these values either in WP Admin > Settings > WP Google Login, or in wp-config.php using the following code snippet:

    \n

    `
    \ndefine( ‘WP_GOOGLE_LOGIN_CLIENT_ID’, ‘YOUR_GOOGLE_CLIENT_ID’ );
    \ndefine( ‘WP_GOOGLE_LOGIN_SECRET’, ‘YOUR_SECRET_KEY’ );
    \n“

    \n
  8. \n
\n

Browser support

\n

These browsers are supported. Note, for example, that One Tap Login is not supported in Safari.

\n

How to enable automatic user registration

\n

You can enable user registration either by
\n– Enabling Settings > WP Google Login > Enable Google Login Registration

\n

OR

\n
    \n
  • Adding
    \ndefine( 'WP_GOOGLE_LOGIN_USER_REGISTRATION', 'true' );
    \nin wp-config.php file.
  • \n
\n

Note: If the checkbox is ON then, it will register valid Google users even when WordPress default setting, under

\n

Settings > General Settings > Membership > Anyone can register checkbox

\n

is OFF.

\n

Restrict user registration to one or more domain(s)

\n

By default, when you enable user registration via constant WP_GOOGLE_LOGIN_USER_REGISTRATION or enable Settings > WP Google Login > Enable Google Login Registration, it will create a user for any Google login (including gmail.com users). If you are planning to use this plugin on a private, internal site, then you may like to restrict user registration to users under a single Google Suite organization. This configuration variable does that.

\n

Add your domain name, without any schema prefix and www, as the value of WP_GOOGLE_LOGIN_WHITELIST_DOMAINS constant or in the settings Settings > WP Google Login > Whitelisted Domains. You can whitelist multiple domains. Please separate domains with commas. See the below example to know how to do it via constants:

\n
`\n
\n

define( ‘WP_GOOGLE_LOGIN_WHITELIST_DOMAINS’, ‘example.com,sample.com’ );
\n `

\n

Note: If a user already exists, they will be allowed to login with Google regardless of whether their domain is whitelisted or not. Whitelisting will only prevent users from registering with email addresses from non-whitelisted domains.

\n

Hooks

\n

Filter wp_google_login_scopes
\nThis filter can be used to filter existing scope used in Google Sign in.
\nYou can ask for additional permission while user logs in.
\nThis filter will provide 1 parameter scopes in callback, which contains array of scopes.

\n

wp-config.php parameters list

\n
    \n
  • \n

    WP_GOOGLE_LOGIN_CLIENT_ID (string): Google client ID of your application.

    \n
  • \n
  • \n

    WP_GOOGLE_LOGIN_SECRET (string): Secret key of your application

    \n
  • \n
  • \n

    WP_GOOGLE_LOGIN_USER_REGISTRATION (boolean) (optional): Set true If you want to enable new user registration. By default, user registration defers to Settings > General Settings > Membership if constant is not set.

    \n
  • \n
  • \n

    WP_GOOGLE_LOGIN_WHITELIST_DOMAINS (string) (optional): Domain names, if you want to restrict login with your custom domain. By default, it will allow all domains. You can whitelist multiple domains.

    \n
  • \n
\n

BTW, We’re Hiring!

\n

\n","download_link":"https://downloads.wordpress.org/plugin/login-with-google.1.2.1.zip","tags":{"authentication":"authentication","google-login":"Google Login","oauth":"oauth","sign-in":"sign in","sso":"sso"},"donate_link":"https://rtcamp.com/","icons":{"1x":"https://ps.w.org/login-with-google/assets/icon-128x128.png?rev=2402713","2x":"https://ps.w.org/login-with-google/assets/icon-256x256.png?rev=2402713"},"wporg":true},{"name":"Search with Google","slug":"search-with-google","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":"","ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":"","support_threads":"","support_threads_resolved":"","active_installs":"","downloaded":"","last_updated":"","added":"","homepage":"https://wordpress.org/plugins/search-with-google/","short_description":"

This plugin replaces the WordPress default search query with server-side results from Custom Search Site Restricted JSON API. 

\n","description":"\n\n\n

This plugin replaces the WordPress default search query with server-side results from Custom Search Site Restricted JSON API

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2020/11/searchWithGoogle-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2020/11/searchWithGoogle-372x209.jpg","svg":""},"wporg":false},{"name":"Page Builder Gutenberg Blocks – CoBlocks","slug":"coblocks","version":"2.16.0","author":"GoDaddy","author_profile":"https://profiles.wordpress.org/godaddy","requires":"5.0","tested":"5.8","requires_php":"5.6","rating":88,"ratings":{"1":7,"2":3,"3":4,"4":5,"5":63},"num_ratings":82,"support_threads":16,"support_threads_resolved":3,"active_installs":500000,"downloaded":5419120,"last_updated":"2021-08-12 8:29pm GMT","added":"2018-04-19","homepage":"","short_description":"CoBlocks is a suite of page builder WordPress blocks for Gutenberg, with 10+ new blocks and a true page builder experience with rows and columns.","description":"

CoBlocks is the most innovative collection of page building WordPress blocks for the new Gutenberg WordPress block editor.

\n

With additional blocks and true row and column building, CoBlocks gives you a true page builder experience for Gutenberg.

\n

CoBlocks is powerful but lightweight: it adds functionality to the WordPress editor without bloat. This is the plugin you’ve been waiting for, and it will make you rethink what WordPress is capable of.

\n

Make Beautiful Web Pages With Gutenberg & CoBlocks

\n

CoBlocks is the last page builder you’ll ever need: you get a winning mix of additional WordPress blocks, and page builder functionality. With CoBlocks you have everything you need to make beautiful web pages with the new block editor:

\n
    \n
  • Accordion Block
  • \n
  • Alert Block
  • \n
  • Author Profile Block
  • \n
  • Buttons Block
  • \n
  • Carousel Gallery Block
  • \n
  • Click to Tweet Block
  • \n
  • Collage Gallery Block
  • \n
  • Dynamic Separator Block
  • \n
  • Events Block (New!)
  • \n
  • Features Block
  • \n
  • Food & Drinks Block
  • \n
  • Form Block
  • \n
  • Gif Block
  • \n
  • GitHub Gist Block
  • \n
  • Hero Block
  • \n
  • Highlight Block
  • \n
  • Icon Block
  • \n
  • Logos & Badges Block
  • \n
  • Map Block
  • \n
  • Masonry Gallery Block
  • \n
  • Media Card Block
  • \n
  • Offset Gallery Block
  • \n
  • Post Carousel Block
  • \n
  • Posts Block
  • \n
  • Pricing Table Block
  • \n
  • Resizable Row/Columns Blocks
  • \n
  • Services Block
  • \n
  • Shape Divider Block
  • \n
  • Social Profiles Block
  • \n
  • Social Sharing Block
  • \n
  • Stacked Gallery Block
  • \n
\n

Breakthrough Page Builder System

\n

CoBlocks features an innovative block system that allows you to create stunning web pages, and even entire websites, with the new WordPress editor.

\n

You get the extra blocks you need and the layout and design functionality for a true page builder experience.

\n

Use the exceptional Row and Columns blocks to add dynamically generated content areas with specific responsive margin and padding settings that only CoBlocks provides.

\n

Style these with innovative new blocks such as the Shape Divider, which lets you split up your content with beautiful dividers.

\n

Each of the WordPress blocks within CoBlocks have been precisely fined tuned to offer a familiar, yet powerful, customization experience. Tailor each block to your taste using our custom controls and settings. Change fonts, set margin and padding, pick colors and more.

\n

Custom Typography Controls

\n

The breakthrough Typography Control Panel within CoBlocks lets you design web pages with alluring typographic elements. Set fonts, sizes, weights, transformations and more, in our CoBlocks blocks, and in core WordPress blocks.

\n

Free Companion Theme

\n

CoBlocks is built to show off the best of Gutenberg, but it requires a Gutenberg-first theme to unlock its full potential. We also created the free Go theme in the WordPress theme repository as the perfect companion for CoBlocks.

\n

Going Beyond Gutenberg Blocks

\n

The vision for CoBlocks is to create a suite of Gutenberg blocks to help folks make beautiful websites easily. These newest releases of CoBlocks is the ultimate expression of that vision.

\n

Built With Developers in Mind

\n

Extensible, adaptable, and open source — CoBlocks is created with theme and plugin developers in mind. If you’re interested to jump in the project, there are opportunities for developers at all levels to get involved. Contribute to CoBlocks on GitHub and join the party. 🎉

\n","download_link":"https://downloads.wordpress.org/plugin/coblocks.2.16.0.zip","tags":{"blocks":"blocks","gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","page-builder":"page builder","wordpress-blocks":"wordpress blocks"},"donate_link":"","icons":{"1x":"https://ps.w.org/coblocks/assets/icon-128x128.jpg?rev=2243972","2x":"https://ps.w.org/coblocks/assets/icon-256x256.jpg?rev=2243972"},"wporg":true},{"name":"Simple Author Box","slug":"simple-author-box","version":"2.42","author":"WebFactory Ltd","author_profile":"https://profiles.wordpress.org/webfactory","requires":"4.6","tested":"5.8","requires_php":"5.6","rating":88,"ratings":{"1":9,"2":0,"3":5,"4":8,"5":75},"num_ratings":97,"support_threads":12,"support_threads_resolved":12,"active_installs":50000,"downloaded":896513,"last_updated":"2021-08-13 8:08am GMT","added":"2014-08-08","homepage":"https://wpauthorbox.com/","short_description":"Add a responsive author box with social icons to any post. Great author box for…","description":"

Simple Author Box adds a responsive author box at the end of your posts, showing the author name, author gravatar and author description – author bio. It also adds over 30 social profile fields on WordPress user profile screen, allowing to display the author social icons in the author box.

\n

Main Features

\n
    \n
  • Shows author gravatar, name, website, description (author bio) and social icons
  • \n
  • Fully customizable to match your theme design (style, color, size and text options)
  • \n
  • Nice looking on desktop, laptop, tablet or mobile phones
  • \n
  • Automatically insert the author box at the end of your post
  • \n
  • Option to manually insert the author box on your template file (single.php or author.php)
  • \n
  • Simple Author Box has RTL support
  • \n
  • Simple Author Box has AMP support
  • \n
  • Great for guest posts, and guest authors
  • \n
\n

Simple Author Box Pro Features

\n
\n

Premium features only available in Simple Author Box Pro

\n
    \n
  • Change author box position to before/after content
  • \n
  • Choose whether the author’s name should link to its website/page/none
  • \n
  • Select where to show author box on
  • \n
  • Add rotate effect on author avatar hover
  • \n
  • Option to open author website link in a new tab
  • \n
  • Option to add “nofollow” attribute on author website link
  • \n
  • Choose the author website’s position: right/left
  • \n
  • Social icons type, style, rotate effect, shadow effect, thin border
  • \n
  • Option to change the color palette
  • \n
  • Choose the font and font sizes for the author’s job title, website, name, and description
  • \n
  • Enable guest authors and co-authors
  • \n
  • Option to use guest authors as co-authors
  • \n
  • Top authors widget – displays the most popular authors based of comments
  • \n
  • Simple author box widget – displays the users selected
  • \n
\n
\n

Read more about the Simple Author Box advanced features.

\n","download_link":"https://downloads.wordpress.org/plugin/simple-author-box.2.42.zip","tags":{"author-bio":"author bio","author-box":"author box","author-profile-fields":"author profile fields","author-social-icons":"author social icons","responsive-author-box":"responsive author box"},"donate_link":"","icons":{"1x":"https://ps.w.org/simple-author-box/assets/icon-128x128.jpg?rev=1821054"},"wporg":true},{"name":"Genesis Blocks","slug":"genesis-blocks","version":"1.2.5","author":"StudioPress","author_profile":"https://profiles.wordpress.org/studiopress","requires":"5.3","tested":"5.8","requires_php":"7.1","rating":90,"ratings":{"1":1,"2":0,"3":1,"4":0,"5":9},"num_ratings":11,"support_threads":12,"support_threads_resolved":4,"active_installs":30000,"downloaded":194950,"last_updated":"2021-07-20 6:30pm GMT","added":"2020-08-25","homepage":"https://studiopress.com/genesis-pro/","short_description":"A collection of content blocks, sections, & full-page layouts for the block editor.","description":"

Genesis Blocks is a collection of page building blocks for the Gutenberg block editor. Building pages with the block editor and Genesis Blocks gives you more control to quickly create and launch any kind of site you want!

\n

Installing the customizable Genesis Blocks plugin adds a collection of beautiful, site-building blocks to help you customize page layouts, increase engagement, and get results for your business. Genesis Blocks provides everything from customizable buttons, to beautifully-designed page sections and full-page layout designs via the Section & Layout block.

\n

Along with the blocks themselves, Genesis Blocks extends the content creation experience by providing a library of page sections and full-page layouts, all available from within the block editor.

\n

Create compelling content faster.

\n

Create and use content quickly with prebuilt and custom content sections and full-page layouts.

\n

Enhance the Gutenberg editor.

\n

Additional content blocks and the layout selector make it easy to get the most value out of the block-based editor.

\n

Genesis Blocks currently includes the following blocks to help you build content and pages quickly and effortlessly:

\n
    \n
  • Section & Layout Block
  • \n
  • Advanced Columns Block
  • \n
  • Newsletter Block
  • \n
  • Pricing Block
  • \n
  • Post Grid Block
  • \n
  • Container Block
  • \n
  • Testimonial Block
  • \n
  • Inline Notice Block
  • \n
  • Accordion Block
  • \n
  • Share Icons Block
  • \n
  • Call-To-Action Block
  • \n
  • Customizable Button Block
  • \n
  • Spacer & Divider Block
  • \n
  • Author Profile Block
  • \n
  • Drop Cap Block
  • \n
\n

Do more with Genesis Pro

\n

For those wanting to level-up with Genesis Blocks, a Genesis Pro subscription brings even richer tooling and a bigger library of sections and layouts.

\n
    \n
  • 2 new blocks (more coming soon)
  • \n
  • 26 pre-built full-page layouts
  • \n
  • 56 pre-built sections
  • \n
  • Save & reuse your own sections & layouts
  • \n
  • Advanced block-level user permissions
  • \n
  • Access to and support for Genesis Framework & all of our 35 StudioPress-made premium child themes.
  • \n
  • Additional advanced features for the rest of the Genesis Product Suite
  • \n
\n

Genesis Pro includes even more value for modern WordPress content creators, marketers, and developers. Learn more about Genesis Pro here.

\n

Google AMP Support

\n

The Accelerated Mobile Pages (AMP) project is a publishing format created by Google to enhance site performance for mobile website users. AMP pages are specially designed for Google search users to quickly load website pages without using any extraneous data. Genesis Blocks has support for AMP built into each block!

\n

Help & Docs

\n

User and developer docs for Genesis Blocks can be found here.

\n","download_link":"https://downloads.wordpress.org/plugin/genesis-blocks.1.2.5.zip","tags":{"blocks":"blocks","editor":"editor","gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","page-builder":"page builder"},"donate_link":"https://studiopress.com","icons":{"1x":"https://ps.w.org/genesis-blocks/assets/icon-128x128.png?rev=2368839","2x":"https://ps.w.org/genesis-blocks/assets/icon-256x256.png?rev=2368840"},"wporg":true},{"name":"MathML Block","slug":"mathml-block","version":"1.2.0","author":"adamsilverstein","author_profile":"https://profiles.wordpress.org/adamsilverstein","requires":"5.0","tested":"5.5.5","requires_php":"5.6","rating":90,"ratings":{"1":0,"2":0,"3":0,"4":1,"5":1},"num_ratings":2,"support_threads":1,"support_threads_resolved":0,"active_installs":500,"downloaded":7384,"last_updated":"2020-10-01 11:05pm GMT","added":"2018-12-28","homepage":"","short_description":"A MathML block for the WordPress block editor (Gutenberg).","description":"

A MathML block for the WordPress block editor (Gutenberg).
\nRequires PHP 5.4+ and WordPress 5.0+.

\n

Development takes place on the GitHub repository: https://github.com/adamsilverstein/mathml-block.

\n

Screencast: https://cl.ly/c0f6bbfbc3b1

\n

What is MathML?

\n

Mathematical Markup Language is a mathematical markup language, an application of XML for describing mathematical notations and capturing both its structure and content. It aims at integrating mathematical formulae into World Wide Web pages and other documents.

\n

The MathML block uses MathJax to render MathML formulas in the editor and on the front end of a website. MathJax (https://www.mathjax.org/) is A JavaScript display engine for mathematics that works in all browsers.

\n

To test a MathML block and enter a formula, for example: \\[x = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}\\].

\n

To test using math formulas inline, type an formula into a block of text, select it and hit the ‘M’ icon in the control bar. For example: \\( \\cos(θ+φ)=\\cos(θ)\\cos(φ)−\\sin(θ)\\sin(φ) \\). Note: if you are copying and pasting formulas into the rich text editor, switching to HTML/code editor mode is less likely to reformat your pasted formula.

\n

This plugin is compatible with the official AMP plugin by rendering amp-mathml on AMP pages.

\n

Technical Notes

\n
    \n
  • Requires PHP 5.6+.
  • \n
  • Requires WordPress 5.0+.
  • \n
  • Issues and Pull requests welcome on the GitHub repository: https://github.com/adamsilverstein/mathml-block.
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/mathml-block.zip","tags":{"block":"block","block-editor":"block-editor","gutenberg":"gutenberg","math":"math","mathml":"mathml"},"donate_link":"","icons":{"1x":"https://ps.w.org/mathml-block/assets/icon-128x128.png?rev=2002452","2x":"https://ps.w.org/mathml-block/assets/icon-256x256.png?rev=2002452"},"wporg":true},{"name":"Calculated Fields Form","slug":"calculated-fields-form","version":"1.1.14","author":"CodePeople","author_profile":"https://profiles.wordpress.org/codepeople","requires":"3.0.5","tested":"5.8","requires_php":false,"rating":96,"ratings":{"1":20,"2":2,"3":4,"4":26,"5":675},"num_ratings":727,"support_threads":100,"support_threads_resolved":99,"active_installs":60000,"downloaded":3469605,"last_updated":"2021-08-31 10:52pm GMT","added":"2013-03-12","homepage":"https://cff.dwbooster.com","short_description":"Calculated Fields Form allows you to create both simple and rich forms, quickly like a…","description":"

The “Calculated Fields Form” plugin allows you to create web forms with calculated fields, whose values are dynamically calculated based on other fields’ values in the web form.

\n

The possibilities are unlimited. For example, you can create forms with financial calculations, date operations to create reservation forms, and calculate the product prices. The plugin includes text operations for editing, translation, or advertising services. There are more advanced operations available such as determining the distance between addresses or generating graphs. The resulting forms are 100% mobile responsive.

\n

The most impressive thing is that you don’t need to hire a programmer to create the forms. With basic knowledge, you will have a professional form in just five minutes.

\n

Creating a form is all visual. The “Calculated Fields Form” plugin includes a form editor with multiple controls. Such as text fields, numeric fields, currency fields, slider controls, email fields, radio buttons, checkboxes, container fields, page breaks to create multipage forms, and most importantly, calculated fields.

\n

The form editor includes a list of controls, a property bar to easily edit field properties, a dashboard where you can design your forms, and the attributes for form configuration. Also, the plugin comes with multiple predefined layouts to change the forms’ appearance. If there are not enough predefined layouts for your project, there is a style editor to customize the form’s design.

\n

The “Calculated Fields Form” plugin includes integration with popular page builders:

\n
    \n
  • Classic WordPress Editor
  • \n
  • Gutenberg Editor
  • \n
  • Elementor
  • \n
  • Page Builder by SiteOrigin
  • \n
  • Beaver Builder
  • \n
  • WPBakery Page Builder
  • \n
  • DIVI Builder
  • \n
\n

For other editors, it is possible to insert the form into the pages via its shortcode. Each web form has an associated shortcode that allows you to insert it wherever you want.

\n

Features

\n

Main features:

\n
    \n
  • Visual form builder with an intuitive and interactive interface.
  • \n
  • Includes general-purpose controls such as radio buttons, checkboxes, menu lists, date fields, slider controls, numeric fields, text currency fields, etc.
  • \n
  • Includes calculated fields whose values result from operations involving other form fields.
    \nInsert as many calculated fields in the form as you need.
  • \n
  • Contains an advanced formula editor associated with the calculated fields with syntax highlighting and error detection.
  • \n
  • Features many operations modules: mathematical operations, operations with dates, financial operations, distance operations, text management, operations for calling remote services, etc. The calculated fields can identify numbers and prices within the values of the fields.
  • \n
  • Distributed with several predefined forms that you can use as a starting point for your projects.
  • \n
  • Includes several design templates.
  • \n
  • Supports multi-pages forms by inserting page break controls between fields belonging to different pages.
  • \n
  • Allows the grouping of fields inside container controls (Div and Fieldset).
  • \n
  • Possible to define dependency rules between fields in the form, which is very useful in the design of wizards.
  • \n
\n

Other features:

\n
    \n
  • From the plugin configuration page, it is possible to duplicate a form by pressing the “Clone” button associated with it. By cloning a form, you can reuse the work already done.
  • \n
  • Includes a troubleshooting and optimization area.
  • \n
  • Allows you to disable forms in the indexing process to improve the speed of the website.
  • \n
  • Includes a version control in the forms to recover previous versions.
  • \n
\n

Predefined forms:

\n

“Calculated Fields Form” is distributed with five predefined sample forms.

\n
    \n
  1. Simple Calculator Operations
  2. \n
  3. Calculation with Dates (bookings with check-in and check-out dates)
  4. \n
  5. Ideal Weight Calculator
  6. \n
  7. Pregnancy Calculator
  8. \n
  9. Lease Calculator
  10. \n
\n

You can clone a sample form to implement your project, or create a new form from scratch.

\n
\n

Calculated Fields Form Commercial
\n The free version of the “Calculated Fields Form” plugin includes only basic functionality. Other distributions (Professional, Developer, and Platinum) are available with advanced functionalities, such as sending notification emails, integration with payment gateways and external services, controls for database’s connection (and connection to other data sources), complex operations, and many other features.

\n
\n

Features of the Profesional version:

\n
    \n
  • Includes all the features of the free version of the plugin.
  • \n
  • Submit the data collected by the forms and store it on the website for review.
  • \n
  • Send notification emails with the data collected by the form, as well as confirmation emails to the users.
  • \n
  • Integrate the form with PayPal and calculate the amount to be charged through a calculated field.
    \nPayments allow SCA (strong customer authentication), compatible with the new payment services (PSD 2) – Directive (EU).
  • \n
  • Export and import forms between different WordPress sites.
  • \n
  • Different mechanisms to protect forms, such as captcha, WordPress nonces, and honeypot fields.
  • \n
  • Associate “Thank You” page with the form, where you can show a summary of the form’s submission.
  • \n
  • Dashboard widget to show the last week’s submissions.
  • \n
  • Cache the forms to increase the rendering speed.
  • \n
  • Export the information submitted by the forms to a CSV file and use it with third-party tools such as Excel, OpenOffice, LibreOffice, or any other spreadsheet editor.
  • \n
\n

Features of the Developer version:

\n\n

Includes add-ons to extend the form features and make use of third-party plugins and external services

\n
    \n
  • Server-Side Equations add-on: define server-side equations.
  • \n
  • Verification Code add-on: verifies the user’s email by sending him a verification code and blocking the form’s submission until the verification code is entered.
  • \n
  • WooCommerce add-on: integrate forms with WooCommerce products and calculate their prices, dimensions, and weight at the runtime.
  • \n
  • SalesForce add-on: integrate the form with the SalesForce service.
  • \n
  • WebHooks add-on: send the information collected by the form to a WebHook URL to open countless possibilities. By connecting your form to services such as Zapier, Microsoft Flow, IFTTT, Workato, and others, you can connect to hundreds of third-party services (e.g. Zoho CRM, Dropbox, Mailchimp, Google Drive, Facebook, Twitter, etc.).
  • \n
  • User Permissions add-on: control the forms’ access, as well as allowing users to access and edit their data.
  • \n
  • User Registration Form add-on: build a user registration form that captures the user’s basic information and metadata.
  • \n
  • reCAPTCHA add-on: replace the basic captcha with Google reCAPTCHA to protect the forms.
  • \n
\n

Features of the Platinum version:

\n
    \n
  • Includes all the features of free, Professional, and Developer versions of the plugin.
  • \n
  • Unique Fields Values add-on: verifies that the values entered by users have not been used in previous submissions.
  • \n
  • Easy Digital Downloads add-on: integrate the forms into Easy Digital Downloads products and calculate their prices at the runtime.
  • \n
  • Google Analytics add-on: generate usage reports in “Google Analytics” for the users’ actions.
  • \n
  • PayPal Pro add-on: enable the payer’s credit card details to be entered directly through the website without any redirection to the PayPal website.
  • \n
  • Upload Files add-on: add uploaded files to the media library and extend the file types accepted by WordPress.
  • \n
  • DropBox Integration add-on: copy or move the uploaded files to a DropBox account.
  • \n
  • ip2location add-on: identify the users’ data using the ip2location databases.
  • \n
  • Google Places add-on: transform form fields into autocomplete address fields.
  • \n
  • Autocomplete Places add-on: transform form fields into autocomplete address fields by using the Photon API.
  • \n
  • Signature add-on: convert form fields into “Signature” fields, allowing the users to sign the form with a mouse or touchscreen.
  • \n
  • iCal add-on: send iCal file in the notification emails to import the events into most popular calendars like Outlook and Google Calendar.
  • \n
  • CSV Generator add-on: export the information collected by the form to CSV files and attach these to the notification emails.
  • \n
  • PDF Generator add-on: generate PDF files with the information collected by the forms and attach them to the notification emails.
  • \n
  • WebMerge add-on: integrate the forms with FormStack documents (formerly WebMerge) to generate PDF and Office documents at runtime with the information collected by the web forms.
  • \n
  • PrintFriendly add-on: generate PDF files with the PrintFriendly API and attach the resulting files to the notification emails.
  • \n
  • Mailchimp add-on: add new members to the MailChimp account.
  • \n
  • Mautic add-on: add new contacts (or update existing ones) into the Mautic Service.
  • \n
  • HubSpot add-on: add/update contacts in HubSpot, using the information collected by the form.
  • \n
  • Emma add-on: add new members to the Emma service.
  • \n
  • Twilio add-on: send notification messages (SMS) in the forms’ submissions.
  • \n
  • MailPoet add-on: add new subscribers to MailPoet’s Mailing Lists (MailPoet versions 2 and 3).
  • \n
  • AffiliateWP add-on: integrate the forms with the AffiliateWP plugin.
  • \n
  • Authorize.Net add-on: accept payments via Authorize.Net from the form.
  • \n
  • Stripe add-on: accept payments via the Stripe payment gateway from the form.
  • \n
  • Skrill Payments Integration add-on: integrate with the Skrill Moneybookers payment gateway.
  • \n
  • TargetPay (iDeal) add-on add-on: integrate with iDeal, the popular Dutch payment method.
  • \n
  • Mollie (iDeal) add-on: accept payments via iDeal.
  • \n
  • RedSys / Servired / Sermepa add-on provides: a secure interface for accepting credit card payments from most banks in Spain.
  • \n
  • PayTM add-on: a secure interface for accepting payments with credit cards, debit cards, net banking, wallets, and EMI.
  • \n
  • SagePay add-on: a secure interface for accepting payments via SagePay.
  • \n
  • Sage Payment add-on: a secure interface for accepting payments through a secure SSL checkout system for both bankcard and virtual check transactions.
  • \n
\n

Please keep the plugin updated. Updates contain bug fixes as well as new features. The WordPress directory distributes the updates for the free version of the plugin. But for commercial versions, it would be necessary to register your copy of the plugin. The following link describes the registration process: CLICK HEREThis section mainly contains notes on features of the form builder that are too detailed to include in the main description.

\n

Conditional rules

\n

It is possible to show or hide form fields (dependent fields) based on the options selected in checkbox fields, radio buttons, the options selected in dropdown menus, or the result of calculated fields.

\n

The value of a dependent field is zero when it is hidden/disabled. The plugin excludes the disabled form fields from the submission.

\n

Additional details about the use of dependencies

\n

Predefined values

\n

The predefined values in the fields have two possible uses:

\n

1- To fill the field by default. This makes it easier for the end-user to enter values.

\n

2- Hint of the values to be entered in the field (like “Enter your name”). To use the predefined value as a placeholder, you must tick the “Hide predefined value on click” checkbox. The value will disappear once the user starts filling in the field. The calculated fields’ equations ignore placeholders.

\n

The “User Instructions” attribute

\n

The “User instructions” attribute in the field settings allows you to instruct the user on how to fill in the field. By default, the instructions appear as smaller text on the public website. But they can be configured as tooltips.

\n

Adding CSS layout keywords

\n

The “Add CSS layout keywords” attribute in the fields settings allows you to apply CSS styles to fields. You must only enter the name of the CSS class names, and not their definitions.

\n

You can define the CSS classes via the “Customize Form Design” attribute in the “Form Settings” tab. This attribute contains a CSS editor with syntax highlighting and error checking.

\n

If you want to assign several class names to the field, separate them by space characters.

\n

The plugin includes multiple predefined classes that you can assign to the form fields.

\n

More information about the form’s design can be found by reading the following post in the plugin’s blog:

\n

Customizing the form’s design

\n

The classes listed below allow you to align two, three, or four fields on the same line:

\n
column2\ncolumn3\ncolumn4\n
\n

For example, if you want to put two fields on the same line, give both fields the class name “column2”.

\n

There are other variants for displaying several fields on the same line, such as container fields (Div or Fieldset). Container fields allow you to select the number of columns in your configuration. The following post describes all the alternatives for positioning the fields in the form:

\n

Formatting the form (distributing the fields in columns)

\n

Multi-page form

\n

To create multi-page forms, you must insert “Page break” controls between fields belonging to different pages.

\n

When the user presses the “Next Page” button, the plugin validates the fields in the current form. If there is any validation error (such as an unfilled required field), the plugin stops the “Next page” action.

\n

Hidden calculated fields

\n

Calculated fields include a checkbox in the configuration that allows them to be hidden from the public website. This feature is essential in those fields that are used to calculate intermediate values or when we want to show the results only in emails or thank you pages.

\n

Equation / Formula format for calculated fields

\n

Below, some possible formulas are included as examples, but the possibilities are endless.

\n
    \n
  • \n

    With simple mathematical operations:

    \n
    fieldname1 + fieldname2\n\nfieldname1 * fieldname2\n\nfieldname1 / fieldname2\n\nfieldname1 - fieldname2\n\nfieldname1 - fieldname2\n
    \n
  • \n
  • \n

    With mathematical operations involving multiple fields and grouped fields:

    \n
    fieldname1 * (fieldname2 + fieldname3)\n
    \n
  • \n
  • \n

    With rounding operations. Round the result to two decimal places:

    \n
    PREC(fieldname2 / fieldname3, 2)\n
    \n
  • \n
  • \n

    There are infinite number of formulas that can be created using complex structures. For example, the following formula includes conditional statements:

    \n
    (function () {\nif (100 < fieldname3) return fieldname1 + fieldname2;\nif (fieldname3 <= 100) return fieldname1 * fieldname2;\n})();\n
    \n
  • \n
  • \n

    For complex formulas/equations you must use the function format with return statement to return the result to the calculated field:

    \n
     (function () {\n    var result = 0;\n    /* Your code here */\n    return result;\n}) ();\n
    \n
  • \n
\n

Operations and operators to use in equations/formulas

\n

One of the “Calculated Fields Form” strengths is the ability to use any valid JavaScript code to implement the equations/formulas.

\n

However, the plugin includes a wide variety of operations and operators to simplify the development process.

\n

Mathematical Operations and Operators

\n

Conditional Operations

\n

Field Handling Operations

\n

Operations for interacting with external services

\n

Operations for handling URLs and query strings

\n

In addition to the operation modules listed above, the Developer and Platinum versions of the plugin include additional modules:

\n

Date Time Operations

\n

Financial Operations

\n

Distance and Travel Time Operations

\n

Operations to generate charts

\n

Controls available in the form generator of the “Calculated Fields Form”

\n

The complete list of controls is available from this link: CLICK HERE

\n

Create JavaScript variables from parameters received by “GET” or “POST”, “SESSION” variables, or “COOKIES” to use in the equations

\n

The plugin includes the shortcode [CP_CALCULATED_FIELDS_VAR] to generate JavaScript variables from parameters received by “GET” or “POST”, “SESSION” variables, or “COOKIES”:

\n
[CP_CALCULATED_FIELDS_VAR name=\"...\"]\n
\n

In the shortcode, you must replace the “…” symbols with the name of the parameter or variable. It will be the same name for the JavaScript variable.

\n

For example:

\n
[CP_CALCULATED_FIELDS_VAR name=\"varname\"]\n
\n

You can use the variables generated through the shortcode [CP_CALCULATED_FIELDS_VAR] in the formulas of the calculated fields: fieldname1*varname

\n

The complete list of parameters accepted by the variables shortcode is available at the following link: CLICK HERE

\n

Tips for calculating prices

\n

One of the most frequent uses of our plugin is for price calculation. When displaying the price of a product, you may want to split the form into two pages. The first page would request the information needed to calculate the price, and the second page would include the calculated field with the final price. Also, you could use the “Instruct. Text” fields to indicate the terms, conditions, and validity period of the offer.

\n

Note that you can make the “Instruct. Text” fields dependent on the calculated value. This allows you to vary the text displayed to the user depending on the calculated price, as the terms, conditions, or offers often depend on the transaction amount.

\n

Add-ons

\n

The add-ons are only distributed with the Developer and Platinum versions of the plugin.

\n

The plugin lists the add ons in the “Add-ons area” of the settings page. To enable the add-ons, you must tick their corresponding checkbox and press the “Activate/Deactivate Add-ons” button.

\n

Server-Side Equations add-on – included in the Developer and Platinum versions of the plugin

\n

Define equations with PHP code on the server-side. The calculated fields call the server-side equations via AJAX.

\n

CLICK HERE for additional information

\n

Verification Code add-on – included in the Developer and Platinum versions of the plugin

\n

The “Verification Code” add-on allows verifying the users’ emails by sending a verification code and blocking the form’s submission until a valid code is entered.

\n

CLICK HERE for additional information

\n

Unique Fields Values add-on – included in the Platinum version of the plugin

\n

The “Unique Fields Values” add-on verifies that the values entered by users have not been used in previous submissions. It allows to enter simple and complex verification rules (one or multiple fields separated by comma symbols).

\n

CLICK HERE for additional information

\n

WooCommerce add-on – included in the Developer and Platinum versions of the plugin

\n

Integrate the forms created by the “Calculated Fields Form” with WooCommerce products and calculate their prices, weights, dimensions, and more at the runtime.

\n

CLICK HERE for additional information

\n

Easy Digital Downloads add-on – included in the Platinum version of the plugin

\n

Integrate forms created by the “Calculated Fields Form” with the Easy Digital Downloads products, and calculate their price dynamically at the runtime.

\n

CLICK HERE for additional information

\n

SalesForce add-on – included in the Developer and Platinum versions of the plugin

\n

Add new leads to a SalesForce account using the data collected by the forms.

\n

CLICK HERE for additional information

\n

WebHook add-on – included in the Developer and Platinum versions of the plugin

\n

Post the information collected by the forms to WebHook URLs.

\n

Through connecting the forms created by the plugin with services like Zapier, Microsoft Flow, Workato, or IFTTT (and many others), you will have access to hundreds of third-party services, like Zoho CRM, Dropbox, Mailchimp, Evernote, Google Drive, Facebook, Twitter, and more than 300 services https://zapier.com/zapbook/apps/, https://flow.microsoft.com/, https://ifttt.com/discover

\n

CLICK HERE for additional information

\n

User Permissions add-on – included in the Developer and Platinum versions of the plugin

\n

Control access to forms. Access can be restricted to registered users, users with certain roles, or to specific users.

\n

The add-on adds a new shortcode to the plugin to list the data submitted by the logged-in user (it is possible to insert the new shortcode into the user’s profile) and assign user permissions to edit their information or delete an entry.

\n

Limit the number of submissions (e.g. one submission per form/user).

\n

CLICK HERE for additional information

\n

User Registration Form add-on – included in the Developer and Platinum versions of the plugin

\n

Build user registration forms. The form can collect basic user information and metadata required by other plugins.

\n

CLICK HERE for additional information

\n

reCAPTCHA add-on – included in the Developer and Platinum versions of the plugin

\n

Protect forms using Google reCAPTCHA instead of the basic captcha distributed with the plugin, as reCAPTCHA is more visual and intuitive than traditional captchas.

\n

CLICK HERE for additional information

\n

Google Analytics add-on – included in the Platinum version of the plugin

\n

Generate usage reports in “Google Analytics” for the users’ actions.

\n

CLICK HERE for additional information

\n

PayPal Pro add-on – included in the Platinum version of the plugin

\n

Allow the user to enter their credit card details directly on your website without redirecting them to the PayPal website. Once the user has filled the form fields and clicked the submit button, the payment is processed and the posted data (excluding the credit card information) is stored in the WordPress database.

\n

CLICK HERE for additional information

\n

Upload Files add-on – included in the Platinum version of the plugin

\n

Every commercial version of the plugin includes the “Upload File” control to upload files from the form. However, the “Upload Files” add-on allows the uploaded files to be added to the Media Library and be accessed from the pages and posts of the website.

\n

WordPress restricts the file types that can be uploaded. The “Uploads Files” add-on allows the list of accepted files to be extended.

\n

CLICK HERE for additional information

\n

DropBox Integration add-on – included in the Platinum version of the plugin

\n

Copy or move files uploaded through the forms to a DropBox account.

\n

CLICK HERE for additional information

\n

ip2location add-on – included in the Platinum version of the plugin

\n

Use the ip2location databases to identify additional user information based on their IP. Address such as country, city, coordinates, weather station, time zone, ZIP code, etc.

\n

CLICK HERE for additional information

\n

Google Places add-on – included in the Platinum version of the plugin

\n

Transform fields into autocomplete address fields calling the Google Places API.

\n

CLICK HERE for additional information

\n

Autocomplete Places add-on – included in the Platinum version of the plugin

\n

Transform fields into autocomplete address fields by calling the Photon API.

\n

CLICK HERE for additional information

\n

Signature add-on – included in the Platinum version of the plugin

\n

Transform fields into “Signature” fields to allow the users to sign the form with their mouse or touchscreens.

\n

CLICK HERE for additional information

\n

iCal add-on – included in the Platinum version of the plugin

\n

Send the users iCal files attached to the confirmation emails to import events into the most popular calendars like Outlook and Google Calendar.

\n

CLICK HERE for additional information

\n

CSV Generator add-on – included in the Platinum version of the plugin

\n

Export the information collected by the form to CSV files and attach them to the notification emails.

\n

CLICK HERE for additional information

\n

PDF Generator add-on – included in the Platinum version of the plugin

\n

An experimental add-on that generates PDF files with the information collected by the forms and attaches them to the notification emails.

\n

CLICK HERE for additional information

\n

WebMerge add-on – included in the Platinum version of the plugin

\n

Integrate the forms with the FormStack Documents service (formerly WebMerge) to generate PDF and Office documents with the information collected from the form.

\n

CLICK HERE for additional information

\n

Integrate the form with the Silverpop service (now: IBM Watson Campaign Automation) CLICK HERE for additional information

\n

PrintFriendly add-on – included in the Platinum version of the plugin

\n

Send the information collected by the forms to PrintFriendly and attach the resulting PDF files to the notification emails.

\n

CLICK HERE for additional information

\n

Mailchimp add-on – included in the Platinum version of the plugin

\n

Add new members to the MailChimp lists with the information collected by the form.

\n

CLICK HERE for additional information

\n

Mautic add-on – included in the Platinum version of the plugin

\n

Add/update contacts in the Mautic service with information collected by the forms.

\n

CLICK HERE for additional information

\n

HubSpot add-on – included in the Platinum version of the plugin

\n

Add/update HubSpot contacts with information collected by the forms.

\n

CLICK HERE for additional information

\n

Emma add-on – included in the Platinum version of the plugin

\n

Connect the forms to the Emma service to add new members to Emma groups.

\n

CLICK HERE for additional information

\n

Twilio add-on – included in the Platinum version of the plugin

\n

Send notification messages (SMS) through Twilio in the form’s submissions.

\n

CLICK HERE for additional information

\n

MailPoet add-on – included in the Platinum version of the plugin

\n

Adds subscribers to MailPoet Mailing Lists (MailPoet versions 2 and 3).

\n

CLICK HERE for additional information

\n

AffiliateWP add-on – included in the Platinum version of the plugin

\n

Integrate the forms with the “AffiliateWP” plugin.

\n

CLICK HERE for additional information

\n

Authorize.Net add-on – included in the Platinum version of the plugin

\n

The Authorize.net Server Integration Method (Authorize.net SIM) is a hosted payment processing solution that handles all of the steps in processing a transaction.

\n

CLICK HERE for additional information

\n

Stripe add-on – included in the Platinum version of the plugin

\n

The Stripe Payments add-on (www.stripe.com) provides a way to accept all major cards from customers around the world.

\n

CLICK HERE for additional information

\n

Skrill Payments Integration add-on – included in the Platinum version of the plugin

\n

An interface for accepting payments through secure pages.

\n

You can accept cards, more than 20 local payment methods, and over 80 direct bank transfer connections with a single integration.

\n

CLICK HERE for additional information

\n

TargetPay (iDeal) add-on – included in the Platinum version of the plugin

\n

Integrate with iDeal, the most popular Dutch payment method. The integration is made via TargetPay: https://www.targetpay.com/info/ideal?setlang=en

\n

CLICK HERE for additional information

\n

Mollie (iDeal) add-on – included in the Platinum version of the plugin

\n

Integrate with iDeal, the popular Dutch payment method.

\n

CLICK HERE for additional information

\n

RedSys / Servired / Sermepa add-on – included in the Platinum version of the plugin

\n

A secure interface for accepting credit card payments through most banks in Spain (Sabadell, Banco Popular, BBVA, Santander, Bankia-Caixa, Bankinter, etc.)

\n

CLICK HERE for additional information

\n

PayTM add-on – included in the Platinum version of the plugin

\n

A secure interface for accepting payments through credit cards, debit cards, net banking, wallets, and EMI. With over 100 million PayTM users in India, your customers will appreciate the option to pay with their trusted PayTM Wallet.

\n

CLICK HERE for additional information

\n

SagePay add-on – included in the Platinum version of the plugin

\n

A secure interface for accepting payments through SagePay.

\n

CLICK HERE for additional information

\n

Sage Payment add-on – included in the Platinum version of the plugin

\n

An interface for accepting payments through a secure SSL-checkout system for both bank cards and virtual check transactions. All authorized and approved transactions will be delivered to your current bank card and/or virtual check batches, viewable within the Virtual Terminal for order processing and settlement.

\n

CLICK HERE for additional information

\n","download_link":"https://downloads.wordpress.org/plugin/calculated-fields-form.zip","tags":{"calculator":"calculator","contact-form":"contact form","form":"form","form-builder":"form builder","quote-form":"quote form"},"donate_link":"http://cff.dwbooster.com","icons":{"1x":"https://ps.w.org/calculated-fields-form/assets/icon-128x128.jpg?rev=1734377","2x":"https://ps.w.org/calculated-fields-form/assets/icon-256x256.jpg?rev=1734377"},"wporg":true},{"name":"All in One SEO – Best WordPress SEO Plugin – Easily Improve SEO Rankings & Increase Traffic","slug":"all-in-one-seo-pack","version":"4.1.3.3","author":"All in One SEO Team","author_profile":"https://profiles.wordpress.org/smub","requires":"4.9","tested":"5.8","requires_php":"5.4","rating":90,"ratings":{"1":163,"2":21,"3":15,"4":58,"5":1495},"num_ratings":1752,"support_threads":113,"support_threads_resolved":105,"active_installs":2000000,"downloaded":82947512,"last_updated":"2021-08-16 1:02pm GMT","added":"2007-03-30","homepage":"https://aioseo.com/","short_description":"The original WordPress SEO plugin. Improve your WordPress SEO rankings and traffic with our comprehensive SEO tools and smart SEO optimizations.","description":"

AIOSEO – The Best WordPress SEO Plugin & Toolkit

\n

All in One SEO for WordPress is the original WordPress SEO plugin started in 2007. Over 2 million smart website owners use AIOSEO to properly setup WordPress SEO, so their websites can rank higher in search engines.

\n

We believe you shouldn’t have to hire an SEO expert or developer to properly setup WordPress SEO. That’s why we built AIOSEO as the most comprehensive WordPress SEO plugin and marketing toolkit, so you can improve your website’s SEO rankings and uncover new SEO growth opportunities in less than 10 minutes.

\n

At All in One SEO (AIOSEO), user experience is our #1 priority. From website SEO setup to ongoing SEO optimization, our team of SEO experts have created easy to follow SEO workflows that will help you outrank your competitors in search results. This is why many industry leaders award AIOSEO as the most beginner friendly WordPress SEO plugin that’s both EASY and POWERFUL!

\n

AIOSEO’s WordPress SEO plugin features are highly optimized for Google and other popular search engine algorithm because we follow the most up to date SEO standards and SEO best practices. We can honestly say that AIOSEO is the best WordPress SEO plugin in the world.

\n
\n

AIOSEO Pro
\n This plugin is the lite version of the All in One WordPress SEO Pro plugin that comes with all the SEO features you will ever need to rank higher in search engines including smart SEO schema markup, advanced SEO modules, powerful SEO sitemap suite, local SEO module, Google AMP SEO, WooCommerce SEO, and tons more. Click here to purchase the best premium WordPress SEO plugin now!

\n
\n

We took the pain out of optimizing WordPress SEO and made it easy. Here’s why smart business owners, SEO experts, marketers, and developers love AIOSEO, and you will too!

\n

\n

Properly Setup WordPress SEO (without Hiring an Expert)

\n

AIOSEO makes it easy to setup WordPress SEO, the RIGHT WAY. Our smart WordPress SEO setup wizard helps you optimize your website’s SEO settings based on your unique industry needs.

\n

In less than 10 minutes, you will be able to setup all the advanced WordPress SEO features like XML sitemaps, optimized search appearance, SEO meta title, SEO meta description, SEO keywords, Open Graph SEO Knowledge Panel information, social media integration, SEO search console / webmaster tool connections, local SEO, schema markup for SEO, and more.

\n

But don’t just take our word. See what another website owner like yourself is saying:

\n
\n

Swift, honest, full control. After all these years and having used almost every WP SEO plugin I’m amazed by AIOSEO’s depth, simplicity and fast workflow ❤️
\n @aaronbol

\n
\n

Optimize Your Pages for Higher SEO Rankings with TruSEO Analysis

\n

Creating SEO optimized content used to be hard. Why?

\n

Because most business owners aren’t SEO experts.

\n

That’s why we created the TruSEO score. This gives you a more in-depth SEO optimization analysis and an actionable SEO checklist, so you can easily optimize your website pages for any keyword to get higher SEO rankings and maximum traffic.

\n

Our SEO content analysis tool is enabled by default in both the Gutenberg block editor and Classic Editor, so you can quickly optimize your blog posts and pages for your SEO keywords to get higher SEO rankings.

\n

Our SEO readability analysis gives you further insights on how to improve your content for maximum SEO benefits.

\n

The best part about TruSEO analysis is that you can use it to optimize your posts / pages for unlimited SEO keywords.

\n

Seamless SEO Integrations with Webmaster Tools & Social Media

\n

All in One SEO for WordPress offers seamless integration with popular social media platforms like Facebook, Twitter, Pinterest, YouTube, LinkedIn, Instagram, and more.

\n

This ensures that your website preview is optimized for both search engines (SEO), and social media networks.

\n

AIOSEO also makes it easy to connect your website with Google Search Console, Bing webmaster tools, Yandex webmaster tools, Baidu webmaster tools, Google Analytics, and all other SEO webmaster tools.

\n

This helps you easily measure your SEO results and progress.

\n
\n

I’m a professional SEO and used many tools and extensions. Regarding simplicity, individuality and configurability All in One SEO Pro is by far the best SEO plugin out there for WordPress.
\n Joel Steinmann

\n
\n

Smart XML Sitemaps and Rich Snippets (SEO Schema Markup)

\n

Proper website SEO markup plays an important role in improving SEO rankings. That’s why smart SEO experts use AIOSEO for on-page SEO optimization.

\n

Aside from the comprehensive WordPress XML sitemap feature, we also offer News SEO sitemap and Video SEO sitemap to help you improve your website’s SEO ranking and get more traffic.

\n

AIOSEO comes with built-in smart SEO schema markup feature to help you get more traffic through SEO rich snippets, Google featured snippets, breadcrumb site links in SEO, and image SEO search results.

\n
\n

The best SEO plugin. All in One SEO is the best SEO Plugin. I personally find it better than Yoast. This plugin offers so much freedom in configuration.
\n hanapupu

\n
\n

Local SEO, WooCommerce SEO, Google AMP, and More

\n

All in One SEO is the most comprehensive WordPress SEO plugin / marketing toolkit in the world.

\n

We offer complete support for Google Knowledge Graph and Schema.org markup for local businesses. You can add multiple business locations, opening hours, contact info (business email, business phone, business address, etc) and more with our Local SEO module.

\n

AIOSEO also makes WooCommerce SEO easy. With our SEO plugin, you can optimize your product pages and product categories for better SEO rankings (with just a few clicks).

\n

Since AIOSEO is the original WordPress SEO plugin, we have SEO integrations with all popular WordPress plugins such as membership plugin SEO, landing page plugin SEO, Semrush SEO integration, etc. AIOSEO also offers Google AMP integration and works seamlessly with all popular speed & caching plugins.

\n
\n

Best SEO Plugin for WordPress. We continue to use All in One SEO on all our WordPress sites and Clients sites, and we recommend it too all other clients.
\n MySEOGuy

\n
\n

Since SEO is an essential feature, AIOSEO is a must have plugin for every website!

\n

SEO Redirection Manager and 404 Monitoring

\n

AIOSEO Redirection manager helps you set up proper 301 redirects to improve your SEO rankings.

\n

We also support other advanced SEO redirects including 302 redirects, 307 redirects, 410 redirection, 404 redirects, REGEX redirects for advanced SEO needs, and more.

\n

We have an automatic 404 error monitor that helps you track and redirect 404 errors, so you can prevent losing SEO rankings.

\n

Since redirect speed is important for SEO, we built in both Apache / NGINX server level redirects to help you get maximum SEO benefit.

\n

Full All in One SEO Feature List

\n
    \n
  • WordPress SEO Setup Wizard – Properly setup WordPress SEO in less than 10 minutes.
  • \n
  • On-page SEO Optimization – optimize SEO code markup (without hiring a developer)
  • \n
  • TruSEO score – detailed content & readability analysis to help you optimize your pages for higher SEO rankings.
  • \n
  • Smart Meta Title & Description – Automatic SEO generation, dynamic SEO smart tags, and more.
  • \n
  • Unlimited SEO Keywords – our SEO content analyzer helps you optimize your pages for unlimited SEO keywords.
  • \n
  • XML Sitemap – Advanced XML sitemaps to boost your SEO rankings.
  • \n
  • Video SEO Sitemap – Improve your SEO rankings with video sitemap.
  • \n
  • News SEO Sitemap – Increase your SEO traffic with Google News sitemap.
  • \n
  • RSS SEO Sitemap – Improve SEO crawl frequency with RSS sitemap.
  • \n
  • Automatic Image SEO – Our image SEO module helps your images rank higher.
  • \n
  • Local Business SEO – Improve your local business SEO presence with our local SEO module.
  • \n
  • Multiple location SEO – Great for SEO optimization for businesses with multiple local store locations.
  • \n
  • Rich Snippets Schema – Get better click through rate (CTR) and increase SEO rankings with rich snippets schema.
  • \n
  • SEO Knowledge Graph Support – Improve your website’s search appearance with SEO Knowledge panel.
  • \n
  • Advanced SEO Schema – Easily add advanced SEO schema markups like FAQ schema, product schema, recipe schema (food blogger SEO), software application schema markup (SaaS SEO), online course schema (for course SEO), and more.
  • \n
  • Sitelinks Search Box – Helps you get a search box in Google SEO rankings.
  • \n
  • Google Site Links – Our SEO markup can help you get sitelinks for your brand.
  • \n
  • Robots.txt Editor – Control what SEO robots can see with our easy SEO robots.txt editor.
  • \n
  • SEO Audit Checklist – Improve your website’s SEO ranking with our SEO audit checklist.
  • \n
  • Google Search Console – Connect your WordPress site with Google webmaster tools to see additional SEO insights.
  • \n
  • Search Engine Verification Tools – Easily integrate with other popular SEO webmaster tools to improve search visibility.
  • \n
  • Google AMP SEO – Improve your mobile SEO rankings with Google AMP SEO.
  • \n
  • Advanced SEO Canonical URLs – Prevent duplicate content in SEO with automatic canonical URLs and boost your SEO rankings.
  • \n
  • Advanced Robots Meta SEO Settings – granular controls for no index, no follow, no archive, no snippet, max snippet, max video, and more.
  • \n
  • RSS Content for SEO – Stop content theft from hurting your SEO rankings with our RSS Content tool.
  • \n
  • User Access Control – Control who can manage your SEO settings with our advanced SEO access control.
  • \n
  • Competitor Site SEO Analysis – Use our competitor SEO analysis to outrank them by improving your website’s SEO optimization.
  • \n
  • Smart Breadcrumbs – Add Breadcrumb navigation to improve user experience and boost your SEO rankings. Comes with full SEO JSON+LD support.
  • \n
  • Smart SEO Redirects – Setup proper 301 redirects to improve your SEO rankings.
  • \n
  • 404 Error Monitor for SEO – Monitor website 404 errors and set up proper SEO redirects to prevent losing SEO rankings.
  • \n
  • Title and Nofollow for SEO – We make it easy for you to add title and nofollow to external links to improve SEO rankings.
  • \n
\n

WordPress SEO Integrations

\n
    \n
  • WooCommerce SEO – optimize your WooCommerce product pages and improve your WooCommerce store’s SEO rankings.
  • \n
  • MemberPress SEO – optimize your MemberPress course pages and improve your membership site’s SEO rankings.
  • \n
  • Elementor SEO – add SEO optimization for your Elementor landing pages.
  • \n
  • LearnDash SEO – SEO optimization for LearnDash courses.
  • \n
  • Facebook SEO – SEO optimize your website preview on Facebook.
  • \n
  • Twitter SEO – SEO optimize your website preview on Twitter.
  • \n
  • Pinterest SEO – SEO optimize your website preview on Pinterest.
  • \n
  • Open Graph Support – improve your SEO with open graph meta data.
  • \n
  • Knowledge Panel SEO – improve website SEO apperance by adding social media profile links for Facebook, Twitter, Wikpedia, Instagram, LinkedIn, Yelp, YouTube, and more.
  • \n
  • SEO Webmaster Tool Content – Connect your WordPress site with various webmaster tools to improve SEO rankings.
  • \n
  • Semrush SEO integration – See additional SEO keywords and relevant SEO keyphrases with our Semrush SEO integration.
  • \n
\n

WordPress SEO Plugin Importer

\n
    \n
  • Yoast SEO Importer – easily switch from Yoast SEO to AIOSEO with our full SEO migration wizard that includes SEO keywords, SEO title, meta description, XML sitemaps and more.
  • \n
  • Yoast SEO Premium Importer – easily import Yoast SEO premium settings including SEO redirects to AIOSEO with our full SEO migration wizard.
  • \n
  • RankMath SEO Importer – easily switch from RankMath SEO to AIOSEO with our SEO migration wizard.
  • \n
  • SEO Settings Backup – create a backup of your AIOSEO settings.
  • \n
  • Advanced SEO Import / Export – easily import / export AIOSEO settings from one site to another.
  • \n
  • Redirection Importer – import your SEO redirects from the Redirection plugin with our SEO migration wizard.
  • \n
  • Simple 301 Redirects Importer – import your SEO redirects from Simple 301 redirets with our SEO migration wizard.
  • \n
  • Safe Redirection Manager – easily import SEO redirects from safe redirect manager with our SEO migration wizard.
  • \n
\n

After reading this feature list, you can probably imagine why AIOSEO is the best WordPress SEO plugin in the market.

\n

Give AIOSEO a try.

\n

Want to unlock more SEO features? Upgrade to AIOSEO Pro.

\n

Credits

\n

This plugin is created by Benjamin Rojas and Syed Balkhi.

\n

Branding Guideline

\n

AIOSEO® is a registered trademark of Semper Plugins LLC. When writing about the WordPress SEO plugin by AIOSEO, please use the following format.

\n
    \n
  • AIOSEO (correct)
  • \n
  • All in One SEO (correct)
  • \n
  • AIO SEO (incorrect)
  • \n
  • All in 1 SEO (incorrect)
  • \n
  • AISEO (incorrect)
  • \n
\n

What’s Next

\n

If you like our WordPress SEO plugin, then consider checking out our other projects:

\n
    \n
  • OptinMonster – Get More Email Subscribers with the most popular conversion optimization plugin for WordPress.
  • \n
  • WPForms – #1 drag & drop online form builder for WordPress.
  • \n
  • MonsterInsights – See the Stats that Matter and Grow Your Business with Confidence. Best Google Analytics Plugin for WordPress.
  • \n
  • SeedProd – Create beautiful landing pages with our powerful drag & drop landing page builder.
  • \n
  • WP Mail SMTP – Improve email deliverability for your contact form with the most popular SMTP plugin for WordPress.
  • \n
  • RafflePress – Best WordPress giveaway and contest plugin.
  • \n
  • Smash Balloon – #1 social feeds plugin for WordPress.
  • \n
  • SearchWP – advanced WordPress search plugin.
  • \n
  • PushEngage – best web push notification plugin.
  • \n
\n

Visit WPBeginner to learn from our WordPress Tutorials and find out about other best WordPress plugins.

\n","download_link":"https://downloads.wordpress.org/plugin/all-in-one-seo-pack.4.1.3.3.zip","tags":{"google-search-console":"google search console","meta-description":"meta description","schema":"schema","seo":"seo","xml-sitemap":"xml sitemap"},"donate_link":"","icons":{"1x":"https://ps.w.org/all-in-one-seo-pack/assets/icon.svg?rev=2443290","2x":"https://ps.w.org/all-in-one-seo-pack/assets/icon-256x256.png?rev=2443290","svg":"https://ps.w.org/all-in-one-seo-pack/assets/icon.svg?rev=2443290"},"wporg":true},{"name":"Translate WordPress – Weglot Translate","slug":"weglot","version":"3.3.6","author":"Weglot Translate team","author_profile":"https://profiles.wordpress.org/remyb92","requires":"4.5","tested":"5.8","requires_php":"5.6","rating":96,"ratings":{"1":39,"2":7,"3":6,"4":27,"5":1205},"num_ratings":1284,"support_threads":8,"support_threads_resolved":3,"active_installs":40000,"downloaded":1203261,"last_updated":"2021-08-18 2:44pm GMT","added":"2015-09-27","homepage":"http://wordpress.org/plugins/weglot/","short_description":"Translate your WordPress website in 110+ languages within minutes with Weglot Translate, without any coding.","description":"

Weglot Translate is the leading WordPress translation plugin, trusted by 60,000+ users worldwide. Translate your WordPress website into 110+ languages within minutes, no coding required.

\n

Increase visibility and boost conversions with ease by adding multilingual functionality. Weglot Translate is fully optimized for SEO, with every translated page automatically indexed by Google. Say hello in multiple languages to millions of new visitors.

\n

Make your website multilingual in minutes with a free trial. Visit https://weglot.com/ to learn more!

\n

How Weglot Translate works

\n\n

Why Weglot Translate

\n

It’s easy to install: Weglot Translate is quick to set up to have a multilingual WordPress website ready, instantly. Reach out to millions of new visitors worldwide with a few clicks, without any coding.

\n

It’s built for maximum compatibility: Weglot Translate is fully compatible with all platforms, WordPress themes, and plugins. From WooCommerce product descriptions to Elementor order forms, everything is translated into the languages of your choice. So you can focus on your content, not the technical details.

\n

It’s optimized for SEO: Weglot Translate follows Google’s best practices for multilingual website translation, serving all translated web pages with clean source code. Google will automatically index every translated page with dedicated URLs.

\n

It’s easy to set and forget: Weglot Translate automatically detects all your website content for easy translation. No more time-consuming manual duplication of every single line of content to get a multilingual website. All translations are updated in real-time, so you don’t need to worry about maintenance and any newly added content is automatically translated.

\n

It takes translation seriously: Weglot Translate gives you an edge on your translation tasks with the first layer of automatic translation provided by the best machine learning providers on the market (DeepL, Google, Microsoft, and Yandex). You can also edit the translations and collaborate with your team to work on translations together, directly within Weglot.

\n

It partners with the pros: Weglot Translate lets you order from vetted professional translators directly inside your Weglot dashboard. Set translation quality the way you want it to be, with Weglot Translate.

\n

“Within a week of translating our site to English with Weglot, international sales doubled, by the following month – they had quadrupled.”
\nClara Champion – Director of Digital and E-Commerce, Jimmy Fairly
\nRead the case study

\n

Multilingual functionality like no other

\n

Increase visibility: All translated pages are automatically indexed following Google’s best practices with dedicated URLs. Get new traffic with your multilingual website.

\n

Reduce bounce rate: Redirect visitors automatically to serve them in the language of their choice, based on their browser settings.

\n

Enhance user experience: From the landing page to the email confirmation, get all your key conversion steps translated in your customers’ language. You can even add different images and videos for various languages. Useful for images with text, Weglot Translate makes it easy to display “translated” images in your translated versions. Media localization is an essential aspect of any multilingual project and Weglot Translate makes it simple to do so.

\n

“We really loved the localization features provided by Weglot, such as the ability to translate images and other types of media depending on the language the visitor is viewing the site in.”
\nKim Martin – Senior Communications and Marketing Officer, The Challenge Initiative
\nRead the case study

\n

An all-in-one language translation platform

\n
    \n
  • Manage and edit all of your translations through a user-friendly interface.
  • \n
  • Collaborate with team members and trusted translators to translate together, directly inside Weglot.
  • \n
  • Is it a title? Is it a link? No more guessing the context of the text. Weglot Translate’s in-context editor lets you translate directly within the webpage.
  • \n
  • Make it your own. The language switcher is fully customizable for multiple design choices.
  • \n
  • Weglot Translate makes it easy to migrate from other WordPress multilingual plugins like Polylang or WPML. Simply deactivate your existing translation plugin and install Weglot Translate.
  • \n
\n

“Weglot removed the pain of having to manage multiple stores for multiple locales. The integration was easy, and the support is incredibly helpful. I highly recommend Weglot to anyone looking for a simple and cost-effective solution to translate their stores!”
\nMike Robertson – Director of Sales Operations, Nikon

\n

With an increase in site visitors and session duration thanks to your multilingual website, you can expect a massive boost to your conversions. See why thousands of e-commerce platforms, SaaS firms, marketplaces, corporate websites, and blogs worldwide love Weglot Translate. Try it today for free

\n","download_link":"https://downloads.wordpress.org/plugin/weglot.3.3.6.zip","tags":{"language":"language","localization":"localization","multilingual":"multilingual","translate":"translate","translation":"translation"},"donate_link":"","icons":{"1x":"https://ps.w.org/weglot/assets/icon-128x128.png?rev=2186774","2x":"https://ps.w.org/weglot/assets/icon-256x256.png?rev=2186774"},"wporg":true},{"name":"Rank Math SEO – Best SEO Plugin For WordPress To Increase Your SEO Traffic","slug":"seo-by-rank-math","version":"1.0.71.1","author":"Rank Math","author_profile":"https://profiles.wordpress.org/rankmath","requires":"5.6","tested":"5.8","requires_php":"7.2","rating":98,"ratings":{"1":68,"2":17,"3":20,"4":47,"5":3367},"num_ratings":3519,"support_threads":135,"support_threads_resolved":132,"active_installs":900000,"downloaded":19540553,"last_updated":"2021-09-03 7:13pm GMT","added":"2018-11-19","homepage":"https://s.rankmath.com/home","short_description":"Rank Math SEO is the Best WordPress SEO plugin combines the features of many SEO…","description":"

Rank Math SEO – Best SEO Plugin for WordPress
\n★★★★★

\n

SEO is the most consistent source of traffic for any website. We created Rank Math SEO, a WordPress SEO plugin, to help every website owner get access to the SEO tools they need to improve their SEO and attract more traffic to their website.

\n

Try The Demo

\n\n

Features | Why Choose Rank Math SEO? | Compare | Screenshots | Benefits

\n

SEO might be the best and most consistent source of traffic for one’s website, but it’s not without its quirks. The constant process of optimizing your posts can sometimes take more time than actually writing the content. If you always feel that you can do more on the SEO front for your website but don’t have the time, then Rank Math SEO is what you’re looking for.

\n

Its host of intelligent features brings top SEO capabilities in your hands that were previously out of reach. The smart automation features give you the power of an entire SEO team with just a few clicks. A well thought out design, powerful features, and years of development by the MyThemeShop squad make Rank Math SEO a game-changing SEO plugin that will level the SEO playing field in your favor to help increase traffic.

\n

Rank Math SEO beats all of its competitors, hands down.

\n

See the features which are exclusive to the Rank Math SEO plugin and understand why Rank Math SEO is possibly the Best SEO Plugin for WordPress.

\n
    \n
  • \n

    Setup Wizard (Easy to follow)
    \nRank Math SEO practically configures itself. Rank Math SEO features a step-by-step installation and configuration wizard that sets up SEO for WordPress perfectly.

    \n
  • \n
  • \n

    Google Schema Markup aka Rich Snippets Integrated
    \nConfiguring Google Schema Markup, aka Rich Snippets, is now easy, thanks to Rank Math SEO. With support for 16+ types of Schema Markups, aka Rich Snippets, including the Rating Schema, you’ll be able to optimize your posts in just a few clicks. It also includes the FAQ Schema aka FAQPage Schema Block & the HowTo aka How To Schema Block in the plugin.

    \n
  • \n
  • \n

    Optimize Unlimited Keywords
    \nUnlike other plugins, Rank Math SEO lets you optimize your posts for unlimited focus keywords per post. 5 by default. Increase by adding this filter.

    \n
  • \n
  • \n

    Google Search Console Integration
    \nRank Math SEO saves you a ton of time by integrating with Google Search Console and displaying important information about your website right inside WordPress.

    \n
  • \n
  • \n

    Google Keyword Ranking
    \nWith Rank Math SEO Plugin, you can track your keyword rankings in Google.

    \n
  • \n
  • \n

    Google Analytics Integration
    \nRank Math SEO offers a one-click solution to install Google Analytics script without pasting anything manually anywhere. You can also exclude the Logged-in users.

    \n
  • \n
  • \n

    Optimal Settings Pre-Selected
    \nConfiguring an SEO plugin takes time, and can be confusing. Rank Math SEO saves you the trouble with its optimal default settings, which are ideal for most websites, and if needed, can be changed.

    \n
  • \n
  • \n

    LSI Keyword Tool Integrated
    \nRank Math SEO’s integrated LSI keyword tool gives you multiple keyword variations of your focus keyword, which helps you attract more traffic to your posts. Free account needed.

    \n
  • \n
  • \n

    Add Overlay Icons On Social Images
    \nRank Math SEO makes social thumbnails click magnets by giving you the option of overlaying a GIF or a video icon on the thumbnail.

    \n
  • \n
  • \n

    Advanced SEO Analysis Tool
    \nWith just a single click, Rank Math SEO can perform an SEO audit of your website.

    \n
  • \n
  • \n

    30 Detailed SEO Tests
    \nRank Math SEO is designed to completely supercharge your website’s SEO with its 30 detailed SEO tests. Free account needed.

    \n
  • \n
  • \n

    Module Based System
    \nRank Math SEO has been designed with a module-based system, each of which can be enabled or disabled as per your needs, giving you extra speed and control.

    \n
  • \n
  • \n

    Smart Redirection Manager
    \nRank Math SEO’s built-in smart redirection manager will help you create, manage, delete, enable, or disable redirects at scale.

    \n
  • \n
  • \n

    Local Business SEO
    \nRank Math SEO is designed to be used by Global websites and local websites alike. With its local SEO features, local sites can stand out in the search engine results like Google’s and attract more traffic.

    \n
  • \n
  • \n

    SEO Optimized Breadcrumbs
    \nRank Math SEO can display SEO optimized Breadcrumbs on all websites, even if the theme doesn’t support Schema.org coding.

    \n
  • \n
  • \n

    404 Monitor
    \nRank Math SEO has a built-in 404 error monitor that helps you find and resolve 404 errors for a better user experience.

    \n
  • \n
  • \n

    Deep Content Analysis Tests
    \nOn-Page SEO is no longer a mystery with Rank Math SEO’s deep content analysis and precise SEO recommendations.

    \n
  • \n
  • \n

    Internal Linking Suggestions
    \nRank Math SEO intelligently suggests other posts from your website for internal linking from your current posts, improving the chances of ranking higher in the SERPs.

    \n
  • \n
  • \n

    Role Manager
    \nEven if you have multiple employees manage your website, you can precisely control what each of them has to access to in Rank Math SEO with its role manager.

    \n
  • \n
  • \n

    Multisite Ready
    \nWhether you run a single WordPress website or an entire network of sites – we are ready for you. Rank Math SEO fully supports the WordPress Multiuser project (WPMU).

    \n
  • \n
  • \n

    and has lightweight Code compared to slow-loading in other SEO plugins.
    \nEven with significantly more features than other plugins, Rank Math SEO loads amazingly fast and keeps your website fast always.

    \n
  • \n
\n

Why is Rank Math SEO such a game-changer?

\n
    \n
  • \n

    Auto Configuration — All you have to do is set a few options, and Rank Math SEO will configure itself perfectly for your website.

    \n
  • \n
  • \n

    Super Fast SEO Plugin — Even after packing so many features, Rank Math SEO has a negligible load on your server, thus making it one of the fastest SEO plugins for WordPress.

    \n
  • \n
  • \n

    Automatic Keyword Suggestions from Google — Get keyword suggestions from Google as you start typing letters in the focus keyword field of Rank Math SEO.

    \n
  • \n
  • \n

    New SEO Analyzer — Rank Math SEO’s built-in SEO analysis will give you SEO recommendations that you’d normally spend hundreds of dollars to get.

    \n
  • \n
  • \n

    Elementor SEO – Deep integration with the Elementor Page builder. Now, you don’t need to go back and forth between tabs to configure your page’s SEO. Everything related to SEO for Elementor can be configured in the visual editor.

    \n
  • \n
  • \n

    Divi SEO – One of its kind integration with the Divi Page Builder and theme. Handle everything related to SEO from the page editor screen without jumping back to the default editor. This helps you optimize your website in real-time for SEO.

    \n
  • \n
  • \n

    Page Builder SEO – The Rank Math SEO plugin’s content analysis works perfectly with popular page builders and themes like Oxygen Builder, WPBakery, Avada, Astra, Kadence, Themify, Beaver Builder, Page Builder Framework, Schema theme, Flothemes, OceanWP, etc.

    \n
  • \n
  • \n

    Optimize UNLIMITED Keywords At Once — You can optimize your post for up to 5 different keywords by default with the Rank Math SEO plugin and can use a filter to optimize for unlimited keywords.

    \n
  • \n
  • \n

    Image SEO – With Rank Math SEO’s perfect solution to add ALT & Title tags on the fly, to optimize images, showing inside the content, and that too for FREE, there is no reason to choose any other SEO solution that does not provide all the essential SEO features.

    \n
  • \n
  • \n

    Web Stories SEO – Make any Story created with the Google’s Web Stories plugin SEO-Ready. Automatically adds AMP-friendly Schema markup and Meta tags.

    \n
  • \n
  • \n

    WooCommerce SEO – Optimizing your store products is easier with Rank Math. SEO Meta tags and Schema are automatically added but can be customized with total control as well. Rank Math SEO has the most advanced SEO for WooCommerce.

    \n
  • \n
  • \n

    Google AMP SEO – Accelerated Mobile Pages need to be prepared for search engines. What better way to do that than letting Rank Math SEO use your regular SEO details and optimizing AMPs based on that data?

    \n
  • \n
  • \n

    bbPress SEO – User-generated content in bbPress is properly optimized with Rank Math handling all the important SEO aspects. Q&A Schema is added to bbPress topics along with other essential meta tags.

    \n
  • \n
  • \n

    BuddyPress SEO – As with bbPress, SEO for BuddyPress content is done automatically done using Rank Math. You get all the options you need to get higher rankings with your user-generated content.

    \n
  • \n
  • \n

    Quick Edit SEO Details – Go through a lot of posts/pages quickly by ensuring they are optimized for search engines. Quickly edit multiple SEO fields at once using Rank Math SEO.

    \n
  • \n
  • \n

    Instant Indexing for Bing – Get your content instantly indexed by Bing. Enter a few key details and you are all set and ready to go.

    \n
  • \n
  • \n

    Instant Indexing for Google – Instantly getting indexed by Google used to be reserved to huge brands and large websites. Not anymore. Just about anyone can take advantage of Google’s Instant Indexing feature using Rank Math SEO.

    \n
  • \n
  • \n

    Version Control – Rollback or try beta versions. Updating and downgrading your plugins is now a matter of few clicks. Automatically update to the latest versions or try out the latest beta builds.

    \n
  • \n
  • \n

    Translation Plugins Support — Rank Math SEO works flawlessly with the top translations plugins like WPML, TranslatePress, Weglot, Polylang (not entirely compatible yet), etc., making it a perfect companion.

    \n
  • \n
  • \n

    XML Sitemap – The Rank Math SEO plugin comes with a fast-loading Sitemap feature that works with different post types, including the custom ones, and provides deep controlling. One can also generate a Locations KML file via filter for Local Sitemap, & a WooCommerce Sitemap.

    \n
  • \n
  • \n

    1-Click Import From Yoast — With a single click of your mouse, Rank Math SEO can import all your settings from Yoast SEO & Yoast SEO Premium to itself. The transfer is instant, and you don’t lose any SERP rankings as a result.

    \n
  • \n
  • \n

    1-Click Import From AIO SEO — Rank Math SEO can also import all your settings from AIO SEO & All in One SEO Pack Pro in a single click. The transfer is instant, and you don’t lose any SERP rankings as a result.

    \n
  • \n
  • \n

    1-Click Import From All In One Schema Rich Snippets — Rank Math SEO can also import all of AIO’s Rich Snippet & Schema Pro settings in a few clicks, which help preserve your rich rankings when moving to Rank Math SEO.

    \n
  • \n
  • \n

    1-Click Import From SEOPress SEO — With a single click of your mouse, Rank Math SEO can import all your settings from SEOPress & SEOPress Pro SEO plugin to itself. The transfer is instant, and you don’t lose any SERP rankings as a result.

    \n
  • \n
  • \n

    1-Click Import From Redirection — Moving all your redirects shouldn’t be a hassle. That’s why we have made importing redirections from the popular Redirection plugin as simple as clicking a button.

    \n
  • \n
  • \n

    Google Keyword Suggestion — When deciding on focus keywords, Rank Math SEO can help you discover more keywords by pulling in automatic keyword suggestions from Google.

    \n
  • \n
\n

Who Can Benefit From Rank Math SEO?

\n

Rank Math SEO Plugin is perfect for:

\n

✔ Bloggers
\n✔ eCommerce Store Owners
\n✔ Niche Sites
\n✔ Businesses
\n✔ Local Businesses
\n✔ Startups
\n✔ The Real Estate
\n✔ Artists & Photographers
\n✔ The Solution Offerer
\n✔ Directories
\n✔ Vloggers (Video Bloggers)
\n✔ Or any WordPress Website

\n

Take a sneak peek into Rank Math SEO’s features

\n

Detailed Setup Tutorial

\n\n

List of Best Rank Math SEO Features

\n
    \n
  • Clean, & Simple User Interface
  • \n
  • Optimal Settings Pre-Selected
  • \n
  • Simple Setup Wizard\n
      \n
    • Compatibility Check
    • \n
    \n
  • \n
  • Auto Canonical URLs
  • \n
  • LSI Keyword Tool Integrated
  • \n
  • Google Search Console Integration
  • \n
  • Google Keyword Ranking
  • \n
  • Import Other Plugin Settings\n
      \n
    • 1 Click Import From Yoast SEO Plugin
    • \n
    • 1 Click Import From AIO SEO
    • \n
    • 1 Click Import From SEOPress & SEOPress Pro
    • \n
    • 1 Click Import From All In One Schema Rich Snippets & Schema Pro
    • \n
    • 1 Click Import From Redirection Plugin
    • \n
    \n
  • \n
  • Role Manager
  • \n
  • ACF Support
  • \n
  • AMP Ready
  • \n
  • bbPress & BuddyPress Modules
  • \n
  • Google Schema Markup Integrated\n
      \n
    • Article Rich Snippet
    • \n
    • Review Rich Snippet
    • \n
    • Book Rich Snippet
    • \n
    • Course Rich Snippet
    • \n
    • Event Rich Snippet
    • \n
    • Job Posting Rich Snippet
    • \n
    • Local Business Rich Snippet
    • \n
    • 193 Local Business Types
    • \n
    • Music Rich Snippet
    • \n
    • Person Rich Snippet
    • \n
    • Product Rich Snippet
    • \n
    • Recipe Rich Snippet
    • \n
    • Restaurant Rich Snippet
    • \n
    • Service Rich Snippet
    • \n
    • Software Application Rich Snippet
    • \n
    • Video Rich Snippet
    • \n
    • Author Stay Rating
    • \n
    \n
  • \n
  • Social Media Optimization\n
      \n
    • Add Overlay Icons On Social Images
    • \n
    • Default OpenGraph Thumbnail
    • \n
    • Auto Facebook Open Graph
    • \n
    • Facebook Authorship
    • \n
    • Facebook Open Graph for Homepage
    • \n
    • Automatic Twitter Meta Cards
    • \n
    • Twitter Card for Homepage
    • \n
    • Default Twitter Card Type
    • \n
    • Social Previews
    • \n
    \n
  • \n
  • Add Knowledge Graph\n
      \n
    • Represent site as a Person
    • \n
    • Represent site as a Company
    • \n
    • Set a Site Logo
    • \n
    \n
  • \n
  • Advanced SEO Analysis Tool\n
      \n
    • 30 Detailed SEO Tests
    • \n
    • SEO Analysis Score
    • \n
    \n
  • \n
  • Automated Image SEO
  • \n
  • Powerful Post Optimization\n
      \n
    • Add SEO Meta Box to all post types
    • \n
    • Bulk Edit Titles & Descriptions
    • \n
    • Post Preview on Google
    • \n
    • Content Analysis
    • \n
    • Control SEO For Single Pages
    • \n
    • Control The Title
    • \n
    • Control Meta Description
    • \n
    • Auto Add Additional Meta Data
    • \n
    • Control ROBOTS Meta
    • \n
    • Choose a Primary Category
    • \n
    \n
  • \n
  • Single Post/page Optimization\n
      \n
    • Focus Keyword
    • \n
    • Google Keyword Suggestion
    • \n
    • Optimize UNLIMITED Keywords (5 by default)
    • \n
    • Choose Pillar Posts & Pages
    • \n
    • Internal Linking Suggestions
    • \n
    • Capitalize Titles
    • \n
    • SEO Failed Tests
    • \n
    • SEO Warnings
    • \n
    \n
  • \n
  • XML Sitemap (New!)
  • \n
  • Module Based System
  • \n
  • Choose Any Separator Character
  • \n
  • Modify Global Meta
  • \n
  • Search Engine Verification Tools\n
      \n
    • Bing Site Verification
    • \n
    • Baidu Site Verification
    • \n
    • Alexa Site Verification
    • \n
    • Yandex Site Verification
    • \n
    • Google Site Verification
    • \n
    • Pinterest Site Verification
    • \n
    • Norton Safe Web Site Verification
    • \n
    \n
  • \n
  • Advanced Redirection Manager\n
      \n
    • Smart & Automatic Post Redirects
    • \n
    • 301 Redirection Type
    • \n
    • 302 Redirection Type
    • \n
    • 307 Redirection Type
    • \n
    • 410 Redirection Type
    • \n
    • 451 Redirection Type
    • \n
    • Support for REGEX
    • \n
    • Debug Redirections
    • \n
    \n
  • \n
  • Simple 404 Monitor\n
      \n
    • Advanced 404 Monitor
    • \n
    \n
  • \n
  • Advanced SEO Breadcrumbs\n
      \n
    • Auto Show SEO Breadcrumbs
    • \n
    \n
  • \n
  • Advanced Link Options\n
      \n
    • Nofollow All External Image Links
    • \n
    • Nofollow All External Links
    • \n
    • Open External Links in New Tab/Window
    • \n
    • Redirect Attachments to Parent
    • \n
    • Strip Category Base
    • \n
    \n
  • \n
  • Remove Stopwords from Permalinks
  • \n
  • Ping Search Engines
  • \n
  • Local SEO Optimization\n
      \n
    • Contact Info Shortcode
    • \n
    \n
  • \n
  • Deep Support For WooCommerce SEO
  • \n
  • Compatible for EDD SEO (Easy Digital Downloads SEO)
  • \n
  • Only 30k Lines of Code\n
      \n
    • PSR-4 Coding Standards (wherever possible)
    • \n
    \n
  • \n
  • Optimize Different Archives\n
      \n
    • Optimize Author Archive Pages
    • \n
    • Optimize Date Archive Pages
    • \n
    • Optimize Archive Pages
    • \n
    \n
  • \n
  • .htaccess Editor
  • \n
  • Robots.txt Editor
  • \n
  • Import/Export Settings
  • \n
  • Import/Export Redirections
  • \n
  • Add Content Before the RSS Feed
  • \n
  • Add Content After the RSS Feed
  • \n
  • Detailed Documentation\n
      \n
    • Contextual Help
    • \n
    \n
  • \n
\n

BIG Publications are Raving About Rank Math SEO

\n

Rank Math SEO Reviews

\n\n\n

Rank Math SEO Review – Why I Ditched Yoast For Rank Math SEO

\n

Rank Math SEO on Product Hunt

\n

Rank Math SEO Plugin Review from an SEO Consultant

\n

and many more

\n

Check RANK MATH PRO WHICH MAKES SEO EASIER & FASTER

\n\n

FREE VS PRO COMPARISON

\n

UNIQUE FEATURES OF RANK MATH PRO

\n

Google Analytics & Search Console Integration (The only SEO plugin that provides it)
\n✔ Integrated Google Analytics, AdSense & Search Console Data
\n✔ Analyze SEO Performance of Each Post & Page
\n✔ See Top Winning/Losing Posts & Keywords
\n✔ Keep Track of Position History
\n✔ Rank Tracker for Important Keywords

\n

Schema aka Structured Data aka Rich Snippets. The BEST Schema Generator Available Online
\n✔ 20+ Pre-defined Schema types (more than any other plugin) –
\n✔ Import Schema from Other Websites
\n✔ Advanced Schema Builder [Advanced SEOs can use this to create any complex Schema Markup)
\n✔ Schema Templates for Automation
\n✔ Conditional Schema Markup
\n✔ Inbuilt Schema Code Preview and Validation
\n✔ Multiple Location Schema On Any Page (using the Shortcode)

\n

Automation At Its BEST
\n✔ Automated Image SEO
\n✔ Advanced Filtering for Images [https://i.rankmath.com/zAUHHP]
\n✔ Watermark Your images
\n✔ Advanced Post filtering
\n✔ Bulk Actions [index, noindex, redirect, etc.]
\n✔ Quick Edit SEO Details
\n✔ Bulk Import SEO Meta Details Using CSV file
\n✔ Auto Detect Videos and Generate Schema Markup for Them
\n✔ Auto Fetch Thumbnail, Duration of YouTube & Vimeo Videos
\n✔ Automatically Flush Facebook Thumbnails
\n✔ Open External Links in New Tabs
\n✔ Nofollow External Links
\n✔ Noindex Paginated, Archive, Search Result Pages
\n✔ Instant Indexing for Bing [Also Google using our Instant Indexing Plugin]

\n

WooCommerce SEO
\n✔ Automatic Schema for WooCommerce Products
\n✔ Advanced Open Graph Tags for WooCommerce Products
\n✔ Automatic NoIndex Hidden Products
\n✔ Remove WooCommerce Product and Category Base
\n✔ Add Custom Brands to Products
\n✔ Add Global Identifier Like GTIN/MPN – Even to Variations

\n

Workflow Improvements
\n✔ Internal Role Manager
\n✔ Inbuilt Google Trends Insights
\n✔ Site Audit with 29 Unique Tests
\n✔ Import Redirections Using CSV File
\n✔ Categorize Redirections for Grouping
\n✔ One-Click Redirection for 404s
\n✔ Monitor Search Performance of Entire Portfolio
\n✔ Easy and Advanced Mode

\n

Miscellaneous
\n✔ Supports bbPress and BuddyPress SEO
\n✔ Version Control – Rollback or Try Beta Versions

\n

MANY MORE FEATURES
\n✔ PREMIUM 24x7x365 Dedicated Support Managers
\n✔ MOST COMPETITIVE PRICING EVER!

\n

CHEK ALL THE PREMIUM FEATURES AND PRICING HERE

\n

CONNECT WITH THE TEAM AND SEO EXPERTS

\n

JOIN FACEBOOK GROUP COMMUNITY: The purpose of this Facebook group is to have a collective place where the community can help each other, and we can get some feedback to improve Rank Math SEO as well. Joining the group is also a great way to connect with like-minded people and share your SEO experience.

\n

Branding Guideline

\n

Rank Math SEO® is a registered trademark. Please use the following format when mentioning the Rank Math SEO plugin anywhere.
\n* Rank Math SEO [correct]
\n* Rank Math SEO [incorrect]
\n* Rank Math SEO [incorrect]
\n* Rank Math SEO [incorrect]
\n* RankMath [incorrect]
\n* Rankmath [incorrect]
\n* rankmath [incorrect]
\n* rankMath [incorrect]

\n

Getting Started:

\n

1. How to Setup Rank Math SEO: Once you install Rank Math SEO for the first time, you will be greeted with the Setup Wizard, which is discussed in detail here.

\n

2. Facebook Group: In this group, you will find the team of Rank Math SEO plugin fairly active and ready to answer your SEO related queries.

\n

3. User Documentation: Although Rank Math SEO is already easy to set up, we’ve put together tutorials, guides, and some knowledge bases to help you set up and get started with Rank Math SEO.

\n

4. Contribute (Sharing is caring): If you are one of those caring hearts that want to help, go to our Rank Math SEO’s GitHub Repository and see how you can contribute to the SEO community. You can also add a new language via translate.wordpress.org.

\n

5. Fixing Common Errors: Sometimes, avoidable or common issues can get you stuck. We’ve created a common guide where we discuss all the common issues and how to fix them.

\n

6. Support Ticket Forum: Our dedicated forum is where you can get support for any issues that you face with Rank Math SEO. In the forum, we’ll also try to answer some SEO queries. User experience is important to us, and our aim is to answer all the queries on the forum in a timely manner.

\n

7. Frequently Asked Questions: Here, we’ve answered the most commonly asked questions about Rank Math SEO. The questions are related to features, pricing, and others.

\n","download_link":"https://downloads.wordpress.org/plugin/seo-by-rank-math.1.0.71.1.zip","tags":{"google-search-console":"google search console","redirection":"redirection","schema":"schema","seo":"seo","sitemap":"sitemap"},"donate_link":"","icons":{"1x":"https://ps.w.org/seo-by-rank-math/assets/icon.svg?rev=2348086","2x":"https://ps.w.org/seo-by-rank-math/assets/icon-256x256.png?rev=2348086","svg":"https://ps.w.org/seo-by-rank-math/assets/icon.svg?rev=2348086"},"wporg":true},{"name":"Head, Footer and Post Injections","slug":"header-footer","version":"3.2.2","author":"Stefano Lissa","author_profile":"https://profiles.wordpress.org/satollo","requires":"4.0","tested":"5.7.2","requires_php":"5.6","rating":98,"ratings":{"1":3,"2":2,"3":4,"4":13,"5":620},"num_ratings":642,"support_threads":1,"support_threads_resolved":0,"active_installs":300000,"downloaded":2774319,"last_updated":"2021-03-17 1:26pm GMT","added":"2008-04-07","homepage":"https://www.satollo.net/plugins/header-footer","short_description":"Header and Footer plugin let you to add html code to the head and footer…","description":"

About WordPress SEO and Facebook Open Graph: I was very unpleased by Yoast invitation to
\nremove my plugin, and it’s not the case.
\nRead more here.

\n

Head and Footer Codes

\n

Why you have to install 10 plugins to add Google Analytics, Facebook Pixel, custom
\ntracking code, Google DFP code, Google Webmaster/Alexa/Bing/Tradedoubler verification code and so on…

\n

With Header and Footer plugin you can just copy the code those services give you
\nin a centralized point to manage them all. And theme independent: you can change your theme
\nwithout loosing the code injected!

\n

Injection points and features

\n
    \n
  • in the page section where most if the codes are usually added
  • \n
  • just after the tag as required by some JavaScript SDK (like Facebook)
  • \n
  • in the page footer (just before the tag)
  • \n
  • recognize and execute PHP code to add logic to your injections
  • \n
  • distinct desktop and mobile injections
  • \n
\n

AMP

\n

A new AMP dedicated section compatible with AMP plugin lets you to inject specific codes in
\nAMP pages. Should be ok even with other AMP plugins.

\n

Post Top and Bottom Codes

\n

Do you need to inject a banner over the post content or after it? No problem. With Header and
\nFooter you can:

\n
    \n
  • Add codes on top, bottom and in the middle of posts and pages
  • \n
  • Differentiate between mobile and desktop (you don’t display the same ad format on both, true?)
  • \n
  • Separate post and page configuration
  • \n
  • Native PHP code enabled
  • \n
  • Shortcodes enabled
  • \n
\n

Special Injections

\n
    \n
  • Just after the opening BODY tag
  • \n
  • In the middle of post content (using configurable rules)
  • \n
  • Everywhere on template (using placeholders)
  • \n
\n

bbPress

\n

The specific bbPress injections are going to be removed. Switch to my
\nAds for bbPress, which is more flexible and complete.

\n

Limits

\n

This plugin cannot change the menu or the footer layout, those features must be covered by your theme!

\n

Official page: Header and Footer.

\n

Other plugins by Stefano Lissa:

\n\n

Translation

\n

You can contribute to translate this plugin in your language on WordPress Translate

\n

Privacy and GDPR

\n

This plugin does not collect or process any personal user data.

\n","download_link":"https://downloads.wordpress.org/plugin/header-footer.3.2.2.zip","tags":{"blog":"blog","footer":"footer","header":"header","page":"page","single":"single"},"donate_link":"http://www.satollo.net/donations","icons":{"1x":"https://ps.w.org/header-footer/assets/icon-256x256.png?rev=1064219","2x":"https://ps.w.org/header-footer/assets/icon-256x256.png?rev=1064219"},"wporg":true},{"name":"WP Rocket","slug":"wp-rocket","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":"","ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":"","support_threads":"","support_threads_resolved":"","active_installs":"","downloaded":"","last_updated":"","added":"","homepage":"https://wp-rocket.me/","short_description":"

Powerful caching to speed up your WordPress website in a few clicks. No coding required.

\n","description":"\n\n\n

Powerful caching to speed up your WordPress website in a few clicks. No coding required.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2020/06/WP-Rocket-285x160.png","2x":"https://amp-wp.org/wp-content/uploads/2020/06/WP-Rocket-372x209.png","svg":""},"wporg":false},{"name":"Statify","slug":"statify","version":"1.8.3","author":"pluginkollektiv","author_profile":"https://profiles.wordpress.org/pluginkollektiv","requires":"4.7","tested":"5.8","requires_php":"5.2","rating":94,"ratings":{"1":2,"2":0,"3":0,"4":3,"5":33},"num_ratings":38,"support_threads":3,"support_threads_resolved":1,"active_installs":200000,"downloaded":1497095,"last_updated":"2021-07-17 8:46am GMT","added":"2011-03-16","homepage":"https://statify.pluginkollektiv.org/","short_description":"Visitor statistics for WordPress with focus on data protection, transparency and clarity. Perfect as a widget in your WordPress Dashboard.","description":"

Statify provides a straightforward and compact access to the number of site views. It is privacy-friendly as it uses neither cookies nor a third party.

\n

An interactive chart is followed by lists of the most common reference sources and target pages. The period of statistics and length of lists can be set directly in the dashboard widget.

\n

Data Privacy

\n

In direct comparison to statistics services such as Google Analytics, WordPress.com Stats and Matomo (Piwik) Statify doesn’t process and store personal data as e.g. IP addresses – Statify counts site views, not visitors.

\n

Absolute privacy compliance coupled with transparent procedures: A locally in WordPress created database table consists of only four fields (ID, date, source, target) and can be viewed at any time, cleaned up and cleared by the administrator.

\n

Due to this tracking approach, Statify is 100% compliant with GDPR and serves as an lightweight alternative to other tracking services.

\n

Display of the widget

\n

The plugin configuration can be changed directly in the Statify Widget on the dashboard by clicking the Configure link.

\n

The amount of links shown in the Statify Widget can be set as well as the option to only count views from today. Of course, older entries are not deleted when changing this setting.

\n

The statistics for the dashboard widget are cached for four minutes.

\n

Period of data saving

\n

Statify stores the data only for a limited period (default: two weeks), longer intervals can be selected as option in the widget. Data which is older than the selected period is deleted by a daily cron job.

\n

An increase in the database volume can be expected because all statistic values are collected and managed in the local WordPress database (especially if you increase the period of data saving).

\n

JavaScript tracking for caching compatibility

\n

For compatibility with caching plugins like Cachify Statify offers an optional switchable tracking via JavaScript. This function allows reliable count of cached blog pages.

\n

For this to work correctly, the active theme has to call wp_footer(), typically in a file named footer.php.

\n

Skip tracking for spam referrers

\n

The comment blacklist can be enabled to skip tracking for views with a referrer URL listed in comment blacklist, i. e. which considered as spam.

\n

Support

\n

If you’ve problems or think you’ve found a bug (e.g. you’re experiencing unexpected behavior), please post at the support forums.

\n

Contribute

\n
    \n
  • Active development of this plugin is handled on GitHub.
  • \n
  • Pull requests for documented bugs are highly appreciated.
  • \n
  • If you want to help us translate this plugin you can do so on WordPress Translate.
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/statify.1.8.3.zip","tags":{"analytics":"analytics","dashboard":"dashboard","pageviews":"pageviews","privacy":"privacy","statistics":"statistics"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=TD4AMD2D8EMZW","icons":{"1x":"https://ps.w.org/statify/assets/icon-128x128.png?rev=2355063","2x":"https://ps.w.org/statify/assets/icon-256x256.png?rev=2355063"},"wporg":true},{"name":"LIQUID BLOCKS GALLERY 37+ Free Designs","slug":"liquid-blocks","version":"1.1.1","author":"LIQUID DESIGN Ltd.","author_profile":"https://profiles.wordpress.org/lqd","requires":"5.2","tested":"5.8","requires_php":false,"rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"num_ratings":1,"support_threads":1,"support_threads_resolved":0,"active_installs":4000,"downloaded":19990,"last_updated":"2021-07-22 6:55am GMT","added":"2019-10-18","homepage":"https://lqd.jp/wp/plugin.html","short_description":"If you’re looking to create block page sections that look great give LIQUID BLOCKS a…","description":"

If you’re looking to create block page sections that look great give LIQUID BLOCKS a try.

\n

In Gutenberg Block Template & Design Gallery, Just select your favorite design. Instantly create page section elements. Like a very simple page builder.

\n

You can manage Block Pattern. (WordPress 5.5+)
\nFully compatible with Gutenberg and themes and AMP.
\nlatest information on LIQUID PRESS.

\n

\n

Design Gallery

\n

Carefully selected 37+ Free Designs.
\n* Headlines
\n* Layouts (Q&A, Ranking, Column, Step, Fluid Shape.)
\n* Price list
\n* CTA
\n* Landing pages
\n* Block Patterns (You can register.)

\n

Toolbar

\n

Add to RichText Toolbar.
\n* Mark
\n* Underline
\n* Big
\n* Small

\n","download_link":"https://downloads.wordpress.org/plugin/liquid-blocks.zip","tags":{"block":"block","block-editor":"block-editor","blocks":"blocks","editor":"editor","gutenberg":"gutenberg"},"donate_link":"https://lqd.jp/wp/plugin.html","icons":{"1x":"https://ps.w.org/liquid-blocks/assets/icon-128x128.png?rev=2175390"},"wporg":true},{"name":"Schema","slug":"schema","version":"1.7.9.2","author":"Hesham","author_profile":"https://profiles.wordpress.org/hishaman","requires":"4.0","tested":"5.7.2","requires_php":"5.4","rating":90,"ratings":{"1":15,"2":6,"3":4,"4":8,"5":162},"num_ratings":195,"support_threads":3,"support_threads_resolved":0,"active_installs":60000,"downloaded":1082875,"last_updated":"2021-05-19 2:51pm GMT","added":"2016-05-11","homepage":"https://schema.press","short_description":"Get the next generation of Schema Structured Data to enhance your WordPress site presentation in Google search results.","description":"

Like Schema plugin? Consider leaving a 5 star review.

\n

Super fast, light-weight plugin for adding schema.org structured data markup in recommended JSON-LD format automatically to WordPress sites.

\n

Enhanced Presentation in Search Results By including structured data appropriate to your content, your site can enhance its search results and presentation.

\n

Check out the Plugin Homepage for more info and documentation.

\n

What is Schema markup?

\n

Schema markup is code (semantic vocabulary) that you put on your website to help the search engines return more informative results for users. So, Schema is not just for SEO reasons, it’s also for the benefit of the searcher.

\n

Schema.org Structured Data Demo & Examples

\n\n

Schema Key Features

\n
    \n
  • Easy to use, set it and forget it, with minimal settings.
  • \n
  • [Premium] Support for different schema.org types.
  • \n
  • Enable Schema types at once per post type or post category.
  • \n
  • [Premium] Enable Schema types anywhere you want on your site content.
  • \n
  • [Premium] Customize source data of schema.org properties.
  • \n
  • Valid markup, test it in Google Structured Data Testing Tool.
  • \n
  • Output JSON-LD format, the most recommended by Google.
  • \n
  • Reuse data saved in post meta, which is created by other plugins.
  • \n
  • Extensible, means you can extend its functionality via other plugins, extensions or within your Theme’s functions.php file.
  • \n
\n
\n

Note: some features are Premium. Which means you need Schema Premium to have those features. Get Schema Premium here!

\n
\n

Free vs Premium

\n
\n

See: a Free vs Premium comparison.

\n
\n

Free Plugin Extensions

\n
    \n
  • Schema Review: Extend Schema functionality by adding review and rating Structured Data functionality for Editors and Authors.
  • \n
  • Schema Default Image: Add ability to set a default WordPress Featured image for schema.org markup.
  • \n
\n

Premium Plugin Extensions

\n\n

Supported Google/Schema Markups

\n\n

Supported Schema.org Types

\n\n

Premium Supported Schema.org Types

\n
\n

Schema Premium has additional support for schema.org types, including:

\n
\n\n

Schema.org Markup Examples

\n

View our Live Structured Data Demo examples.

\n

Supported Plugins

\n

Schema plugin integrates and/or play nicely with (not necessarily a full integration):

\n
    \n
  • Yoast SEO
  • \n
  • AMP plugin (Automattic’s Accelerated Mobile Pages)
  • \n
  • Accelerated Mobile Pages – AMP for WP
  • \n
  • WPRichSnippets
  • \n
  • The SEO Framework
  • \n
  • WPBakery Page Builder
  • \n
  • ThirstyAffiliates
  • \n
  • [Premium] WooCommerce: Schema for WooCommerce extension.
  • \n
  • Easy Digital Downloads (EDD)
  • \n
\n

Supported Themes

\n

The plugin should work fine with any well coded WordPress theme, however these themes were tested and works properly with the plugin.

\n
    \n
  • Genesis 2.x
  • \n
  • Thesis 2.x
  • \n
  • Divi
  • \n
\n

Premium support

\n

schema.press team does not always provide active support for the Schema plugin on the WordPress.org forums, as we prioritize our email support. One-on-one email support is available to people who bought Schema Premium only.

\n

Note that the premium Schema Plugin also has several extra features too, including the option to enable more schema.org types, set content location target for markup, and map schema.org properties, so it is well worth your investment!

\n

Developers?

\n

Feel free to fork the project on GitHub and submit your contributions via pull request.

\n","download_link":"https://downloads.wordpress.org/plugin/schema.zip","tags":{"json-ld":"JSON-LD","rich-snippets":"rich snippets","schema":"schema","schema-org":"schema.org","structured-data":"structured data"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=NGVUBT2QXN7YL","icons":{"1x":"https://ps.w.org/schema/assets/icon-128x128.png?rev=1750172","2x":"https://ps.w.org/schema/assets/icon-256x256.png?rev=1750173"},"wporg":true},{"name":"Iframely – rich media embeds for 2000+ publishers","slug":"iframely","version":"0.7.2","author":"Itteco Corp.","author_profile":"https://profiles.wordpress.org/ivanp","requires":"3.5.1","tested":"5.4.6","requires_php":false,"rating":80,"ratings":{"1":2,"2":0,"3":1,"4":0,"5":7},"num_ratings":10,"support_threads":1,"support_threads_resolved":0,"active_installs":3000,"downloaded":97227,"last_updated":"2020-05-22 5:21pm GMT","added":"2013-10-03","homepage":"http://wordpress.org/plugins/iframely/","short_description":"Iframely extends WordPress default rich media embeds and adds support of over 2000 more providers…","description":"

Iframely extends WordPress default embeds and adds over 2000 more providers and cards as URL previews for the rest of the Web. Provides responsive embed codes, works with AMP.

\n

Just like default WordPress embeds, Iframely will detect URLs in your posts and replace it with responsive embed codes. Supports all usual suspects such as YouTube, Vimeo, Instagram, Facebook, Giphy, GfyCat, Imgur, Google +, GitHub Gists, Storify, SlideShare, Streamable, Vidme, Reddit, Dailymotion, Spotify, Tableau, Prezi, Apester, QZZR, Tidal, MLB. Well over two thousand of providers and keeps growing.

\n

Test your URL here to check if we support it.

\n

Iframely also generates and hosts summary cards as URL previews for general articles. It includes your own site, and Iframely can replace the default embed cards that your publish via WordPress for other sites to use.

\n

API key and paid/free

\n

Powered by Iframely cloud service and requires an account with us. Grab an API key for extended trial at iframely.com, or test the plugin out without an API key.

\n

Before you push the plugin to production, a service subscription is required to avoid any possible disruptions.

\n

We maintain an overwhelming number of integrations and widgets in the background for you, and make sure your sites remains fast and keeps your users happy. This requires a substantial effort on our part, and we won’t be able to provide it without requiring a service subscription.

\n

How to use:

\n

The plugin works the same way the standard oEmbed is supported by WordPress: URL on a separate line.

\n

For example,

\n
Check out this cool video:\n\nhttp://your.url/here\n\nThat was a cool video.\n
\n

Iframely also has its own shortcode [iframely]http://your.url/here[/iframely].

\n

Heads-up:

\n

Iframely does not simply wrap URLs with <iframe src=...> code. That’s not what Iframely is for. We can only match URLs to the known embed codes if publisher offers them for manual copy-paste, or generate a summary card for URL preview if a publisher provides at least a thumnnail image.

\n

To keep default embed providers

\n

By default, Iframely will inject itself to be the first embeds provider in the list, thus intercepting all URLs. It means that the default providers that are later in the list won’t get called and will thus be disabled.

\n

It means Iframely replaces default YouTube, Vimeo, Twitter, other oEmbed plugins that you might have(like JetPack), etc.

\n

Although we should support the same providers and output the same code, just make it responsive and add extra features, you can still disable such behavior and tell Iframely to only process links that otherwise don’t have an embed provider.

\n

Just choose this option in your settings. It will essentially put Iframely to be the last in the list, be “a catcher”, rather then “an interceptor”.

\n

URL editor options

\n

You can fine-tune many aspects of Iframely on your dashboard at iframely.com. This would include some most common settings for popular rich media publishers. Our support team can also fine-tune many other publishers, just for you.

\n

However, you might need a per-post editor for the widgets options. And, Iframely does provide this too. It’s done via URL options editor, and available for higher-tier plans, or during your initial trial period. Make sure to check it out.

\n

AMP support

\n

Yes, Iframely works nicely with AMP WP plugin. It catches all missing embeds and follow your Iframely settings. But you can also opt to have Iframely for all embeds, including default AMP embeds too. For example, Facebook video will be indeed a nice video without user’s text message.

\n","download_link":"https://downloads.wordpress.org/plugin/iframely.zip","tags":{"embed":"embed","embed-code":"embed code","iframely":"iframely","oembed":"oembed","responsive":"responsive"},"donate_link":"","icons":{"default":"https://s.w.org/plugins/geopattern-icon/iframely.svg"},"wporg":true},{"name":"Pym.js Embeds","slug":"pym-shortcode","version":"1.3.2.4","author":"INN Labs","author_profile":"https://profiles.wordpress.org/automattic","requires":"3.0.1","tested":"5.4.6","requires_php":"5.3","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":1,"support_threads_resolved":0,"active_installs":100,"downloaded":2287,"last_updated":"2020-03-26 6:09pm GMT","added":"2016-06-17","homepage":"https://github.com/INN/pym-shortcode","short_description":"A WordPress block and shortcode for embedding iframes that are responsive horizontally and vertically, using…","description":"

Pym.js Embeds provides shortcode and Gutenberg block wrappers for embedding responsive iframes using Pym.js, developed by the NPR Visuals Team. Embedded content resizes vertically to match its container’s width.

\n

AMP compatibility is provided by the official AMP plugin.

\n

Pym.js Resources from NPR

\n

You may also want to look at NPR’s Pym.js resources:

\n\n","download_link":"https://downloads.wordpress.org/plugin/pym-shortcode.1.3.2.4.zip","tags":{"embeds":"Embeds","iframe":"iframe","javascript":"javascript","responsive":"responsive","shortcode":"shortcode"},"donate_link":"https://inn.org/donate","icons":{"1x":"https://ps.w.org/pym-shortcode/assets/icon.svg?rev=1944461","svg":"https://ps.w.org/pym-shortcode/assets/icon.svg?rev=1944461"},"wporg":true},{"name":"PWA","slug":"pwa","version":"0.6.0","author":"PWA Plugin Contributors","author_profile":"https://profiles.wordpress.org/westonruter","requires":"5.5","tested":"5.7.2","requires_php":"5.6","rating":84,"ratings":{"1":3,"2":0,"3":0,"4":0,"5":12},"num_ratings":15,"support_threads":7,"support_threads_resolved":5,"active_installs":40000,"downloaded":291196,"last_updated":"2021-03-09 8:50pm GMT","added":"2018-07-12","homepage":"https://github.com/GoogleChromeLabs/pwa-wp","short_description":"WordPress feature plugin to bring Progressive Web App (PWA) capabilities to Core","description":"

\nProgressive Web Apps are user experiences that have the reach of the web, and are:

\n
    \n
  • Reliable – Load instantly and never show the downasaur, even in uncertain network conditions.
  • \n
  • Fast – Respond quickly to user interactions with silky smooth animations and no janky scrolling.
  • \n
  • Engaging – Feel like a natural app on the device, with an immersive user experience.
  • \n
\n

This new level of quality allows Progressive Web Apps to earn a place on the user’s home screen.\n

\n

Continue reading more about Progressive Web Apps (PWA) from Google.

\n

In general a PWA depends on the following technologies to be available:

\n\n

This plugin serves as a place to implement support for these in WordPress with the intention of being proposed for core merge, piece by piece.

\n

This feature plugin is not intended to obsolete the other plugins and themes which turn WordPress sites into PWAs. Rather, this plugin is intended to provide the PWA building blocks and coordination mechanism for these themes and plugins to not reinvent the wheel and also to not conflict with each other. For example, a theme that implements the app shell model should be able to extend the core service worker while a plugin that provides push notifications should be able to do the same. Themes and plugins no longer should have to each create a service worker on their own, something which is inherently problematic because only one service worker can be active at a time: only one service worker can win. If you are developing a plugin or theme that includes a service worker, consider relying on this PWA plugin, or at least only use the built-in implementation as a fallback for when the PWA plugin is not available.

\n

In versions prior to 0.6, no caching strategies were added by default. The only service worker behavior was to serve an offline template when the client’s connection is down or the site is down, and also to serve an error page when the server returns with 500 Internal Server Error. As of 0.6, there is a new “Offline browsing” toggle on the Reading Settings screen in the admin. It is disabled by default, but when enabled a network-first caching strategy is registered for navigations so that the offline page won’t be shown when accessing previously-accessed pages. The network-first strategy is also used for assets from themes, plugins, and WordPress core. In addition, uploaded images get served with a stale-while-revalidate strategy. For all the details on these changes, see the pull request.

\n

Documentation for the plugin can be found on the GitHub project Wiki.

\n

Development of this plugin is done on GitHub. Pull requests welcome. Please see issues reported there before going to the plugin forum.

\n","download_link":"https://downloads.wordpress.org/plugin/pwa.0.6.0.zip","tags":{"https":"https","progressive-web-apps":"progressive web apps","pwa":"pwa","service-workers":"service-workers.","web-app-manifest":"web app manifest"},"donate_link":"","icons":{"1x":"https://ps.w.org/pwa/assets/icon.svg?rev=1908485","2x":"https://ps.w.org/pwa/assets/icon-256x256.png?rev=1908485","svg":"https://ps.w.org/pwa/assets/icon.svg?rev=1908485"},"wporg":true},{"name":"MC4WP: Mailchimp for WordPress","slug":"mailchimp-for-wp","version":"4.8.6","author":"ibericode","author_profile":"https://profiles.wordpress.org/dvankooten","requires":"4.6","tested":"5.8","requires_php":"5.3","rating":96,"ratings":{"1":35,"2":10,"3":16,"4":35,"5":1277},"num_ratings":1373,"support_threads":46,"support_threads_resolved":43,"active_installs":2000000,"downloaded":35686558,"last_updated":"2021-08-04 7:14am GMT","added":"2013-06-19","homepage":"https://www.mc4wp.com/#utm_source=wp-plugin&utm_medium=mailchimp-for-wp&utm_campaign=plugins-page","short_description":"Mailchimp for WordPress, the #1 unofficial Mailchimp plugin.","description":"

Mailchimp for WordPress

\n

Allowing your visitors to subscribe to your newsletter should be easy. With this plugin, it finally is.

\n

This plugin helps you grow your Mailchimp lists and write better newsletters through various methods. You can create good looking opt-in forms or integrate with any existing form on your site, like your comment, contact or checkout form.

\n\n

Some (but not all) features

\n
    \n
  • \n

    Connect with your Mailchimp account in seconds.

    \n
  • \n
  • \n

    Sign-up forms which are good looking, user-friendly and mobile optimized. You have complete control over the form fields and can send anything you like to Mailchimp.

    \n
  • \n
  • \n

    Seamless integration with the following plugins:

    \n
      \n
    • Default WordPress Comment Form
    • \n
    • Default WordPress Registration Form
    • \n
    • Contact Form 7
    • \n
    • WooCommerce
    • \n
    • Gravity Forms
    • \n
    • Ninja Forms 3
    • \n
    • WPForms
    • \n
    • BuddyPress
    • \n
    • MemberPress
    • \n
    • Events Manager
    • \n
    • Easy Digital Downloads
    • \n
    • Give
    • \n
    • UltimateMember
    • \n
    \n
  • \n
  • \n

    A multitude of available add-on plugins and integrations:

    \n\n
  • \n
  • \n

    Well documented. Our knowledge base is updated daily.

    \n
  • \n
  • \n

    Developer friendly. For inspiration, check out our repository of example code snippets.

    \n
  • \n
\n
\n

Become a Premium user

\n

Mailchimp for WordPress has a Premium add-on which comes with several additional benefits.

\n
    \n
  • Multiple forms
  • \n
  • Advanced e-commerce integration for WooCommerce
  • \n
  • Email notifications
  • \n
  • An easy way to style your forms
  • \n
  • Detailed reports & statistics
  • \n
\n

View more Premium features

\n
\n

What is Mailchimp?

\n

Mailchimp is a newsletter service that allows you to send out email campaigns to a list of email subscribers. It is free for lists up to 2000 subscribers, which is why it is the newsletter-service of choice for thousands of businesses.

\n

This plugin allows you to tightly integrate your WordPress site with your Mailchimp account.

\n

If you are not yet using Mailchimp, creating an account is 100% free and only takes you about 30 seconds.

\n

Support

\n

Use the WordPress.org plugin forums for community support where we try to help all of our users. If you found a bug, please create an issue on Github where we can act upon them more efficiently.

\n

If you’re a premium user, please use the email address inside the plugin for support as that will guarantee a faster response time.

\n

Please take a look at the Mailchimp for WordPress knowledge base as well.

\n

Add-on plugins

\n

There are several add-on plugins available, which help you get even more out of your site.

\n

Translations

\n

You can help translate Mailchimp for WordPress into your language using your WordPress.org account.

\n

Development

\n

This plugin is being developed on GitHub. If you want to collaborate, please look at ibericode/mailchimp-for-wordpress.

\n

Customizing the plugin

\n

The plugin provides various filter & action hooks that allow you to modify or extend default behavior. We’re also maintaining a collection of sample code snippets.

\n","download_link":"https://downloads.wordpress.org/plugin/mailchimp-for-wp.4.8.6.zip","tags":{"email":"email","mailchimp":"mailchimp","marketing":"marketing","mc4wp":"mc4wp","newsletter":"newsletter"},"donate_link":"https://www.mc4wp.com/#utm_source=wp-plugin-repo&utm_medium=mailchimp-for-wp&utm_campaign=donate-link","icons":{"1x":"https://ps.w.org/mailchimp-for-wp/assets/icon-128x128.png?rev=1224577","2x":"https://ps.w.org/mailchimp-for-wp/assets/icon-256x256.png?rev=1224577"},"wporg":true},{"name":"Site Kit by Google","slug":"google-site-kit","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":"","ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":"","support_threads":"","support_threads_resolved":"","active_installs":"","downloaded":"","last_updated":"","added":"","homepage":"https://sitekit.withgoogle.com/","short_description":"

Site Kit is the official WordPress plugin from Google for insights about how people find and use your site. Site Kit is the one-stop solution to deploy, manage, and get insights from critical Google tools to make the site successful on the web. It provides authoritative, up-to-date insights from multiple Google products directly on the

\n

Read More

\n","description":"\n\n\n

Site Kit is the official WordPress plugin from Google for insights about how people find and use your site. Site Kit is the one-stop solution to deploy, manage, and get insights from critical Google tools to make the site successful on the web. It provides authoritative, up-to-date insights from multiple Google products directly on the WordPress dashboard for easy access, all for free.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2019/12/site-kit-by-google-logo-285x160.png","2x":"https://amp-wp.org/wp-content/uploads/2019/12/site-kit-by-google-logo-372x209.png","svg":""},"wporg":false},{"name":"Newspack Blocks","slug":"newspack-blocks","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":"","ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":"","support_threads":"","support_threads_resolved":"","active_installs":"","downloaded":"","last_updated":"","added":"","homepage":"https://github.com/Automattic/newspack-blocks","short_description":"

A collection of useful and easy to use Gutenberg based blocks, developed primarily for the Newspack project.

\n","description":"\n\n\n

A collection of useful and easy to use Gutenberg based blocks, developed primarily for the Newspack project.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2019/11/newspack_blocks-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2019/11/newspack_blocks-372x209.jpg","svg":""},"wporg":false},{"name":"Advanced Ads – Ad Manager & AdSense","slug":"advanced-ads","version":"1.27.0","author":"Thomas Maier, Advanced Ads GmbH","author_profile":"https://profiles.wordpress.org/webzunft","requires":"4.9","tested":"5.8","requires_php":"5.6","rating":98,"ratings":{"1":17,"2":1,"3":9,"4":21,"5":1181},"num_ratings":1229,"support_threads":69,"support_threads_resolved":63,"active_installs":100000,"downloaded":5145969,"last_updated":"2021-08-24 9:21am GMT","added":"2014-06-23","homepage":"https://wpadvancedads.com","short_description":"Manage and optimize all ad types. Support for Google AdSense Auto ads, Amazon, image banners,…","description":"

Are you looking for a simple ad manager plugin? These are the top arguments to use Advanced Ads:

\n
    \n
  • approved in publishing and ad optimization since 2009
  • \n
  • works with all ad types and networks, including Google AdSense, Google Ad Manager (formerly Google DoubleClick for Publishers, DFP), Amazon ads, or media.net ads
  • \n
  • most features to test and optimize ads
  • \n
  • unlimited ad units
  • \n
  • ads.txt support
  • \n
  • dedicated ad block for the block editor
  • \n
  • Google AdSense Partner, who implements all technical changes early and in 100% compliance with the Google AdSense policies
  • \n
  • the only advertising solution with Ad Health integration and Google AdSense violation checks
  • \n
  • best rated free support
  • \n
\n

This is what our users are saying about Advanced Ads:

\n
\n

We use this plugin to deliver rotating ads on a community news site, and it’s great. Both feature-rich and reliable, your imagination is the limit when it comes to the product you want to create for your users. We’ve delivered over a million ad impressions since we launched less than a year ago, using a combination of sidebar, top, sticky and in-content placements — both HTML5 and images. Advanced Ads makes it easy for our small team to deliver a good experience to our users and our advertisers.
\n mytown304 on wp.org

\n
\n

Would you like to know if there is a certain feature, what the optimized setup would be, or how to implement your client’s demands? Just open a thread in the forum!

\n

Advanced Ads allowed us to grow from 0 to 100 MM monthly ad impressions. Benefit from our experience as a publisher and monetize your website today!

\n

Full Feature List.

\n

ad management

\n
    \n
  • create and display unlimited ad units
  • \n
  • rotate ads
  • \n
  • schedule ads and set start time and expiration date
  • \n
  • target ads by content and user groups
  • \n
  • inject ads into posts and pages automatically without coding
  • \n
\n

ad types

\n

choose between different ad types that enable you to:

\n
    \n
  • insert ads and banners from all ad and affiliate networks (e.g., Google AdSense, Amazon, BuySellAds, Google Ad Manager (formerly Google DoubleClick for Publishers, DFP), Ezoic, media.net, Booking.com, Tradedoubler, Awin, Getyourguide, The Moneytizer, Infolinks…)
  • \n
  • dedicated support for all types of Google AdSense ads, including text and display ads, native ads (In-article, In-feed, matched content), Auto ads, and Auto ads for AMP
  • \n
  • display images and image banners
  • \n
  • create content-rich ads with the WordPress TinyMCE editor
  • \n
  • insert contextual Amazon Native Shopping Ads
  • \n
  • inject HTML, CSS, Javascript or PHP code
  • \n
  • use shortcodes within ads (to also deliver advertisements from another ad plugin like Ad Inserter, AdRotate, Quick AdSense, WP Bannerize, or the Google AdSense Plugin WP QUADS)
  • \n
\n

display ads for WP

\n
    \n
  • auto-inject ads via placements
  • \n
  • use functions to display ads in template files
  • \n
  • use shortcodes to place ads manually in post content
  • \n
  • show ads in the sidebar and in widgets
  • \n
  • disable all ads on specific pages
  • \n
  • display multiple ads (ad blocks)
  • \n
  • display a customizable ad label, e.g., “Advertisements” above each banner ad
  • \n
\n

display conditions

\n

show ads based on conditions like:

\n
    \n
  • individual posts, pages, and other post types
  • \n
  • posts by category, tags, taxonomies, author, and age
  • \n
  • archive pages by category, tags, taxonomies
  • \n
  • special page types like 404, attachment and front page
  • \n
  • hide ads on secondary queries (e.g., posts in sidebars)
  • \n
  • display or hide banners within the post feed
  • \n
  • hide all ads from specific page types, e.g., 404 pages, feed
  • \n
  • hide ads from bots and web crawlers
  • \n
\n

visitor conditions

\n

serve ads by conditions based on the visitor. List of all visitor conditions

\n
    \n
  • display or hide a banner by device: mobile and tablet or desktop
  • \n
  • display or hide a banner by role and for logged-in visitors
  • \n
  • advanced visitor conditions: previously visited URL (referrer), user capability, browser language, browser and device, URL parameters included in Pro
  • \n
  • display ads by geolocation with the Geo Targeting add-on
  • \n
  • display ads by browser width with the Responsive add-on
  • \n
\n
\n

Fantastic plugin and outstanding support
\n I tried at least three other ad plugins for WordPress and ‘Advanced Ads’ is by and far the best one. Last but not least in the support. The first port of call are a number of excellent tutorials. And finally the hands on support. I don’t quite know how he does it but the speed and depth of responses are absolutely amazing.
\n djsawyer on wp.org

\n
\n

ad injection | placements

\n

Placements to insert ads in pre-defined positions in your theme and content. List of all placements

\n
    \n
  • ads after any given paragraph, headline, image, or other HTML element
  • \n
  • ads at the top or bottom of the post content
  • \n
  • ads before closing </head> tag
  • \n
  • ads in the footer
  • \n
  • test placements against each other with Pro (A/B testing)
  • \n
  • many more ad positions with add-ons
  • \n
  • automatic insertion of any kind of code into header or footer, not only advertising
  • \n
\n

mobile devices

\n
    \n
  • display ads on mobile and tablets or desktop only
  • \n
  • display responsive image ads
  • \n
  • ads for specific browser sizes only using Responsive Ads
  • \n
  • inserting ads on AMP pages with Responsive Ads
  • \n
\n

Google AdSense

\n

Amazing features of the most powerful and easy Google AdSense plugin.

\n
    \n
  • unlimited Google AdSense ads banners
  • \n
  • pull ad units directly from your Google AdSense account
  • \n
  • show AdSense revenue in WP Admin
  • \n
  • change settings of your Google AdSense ads directly from your WordPress backend
  • \n
  • supports all Google AdSense ad types, including Google AdSense display ads, native ads like In-feed ads, In-article ads, matched content ads, Google AdSense Auto ads, and Google AdSense Auto ads for AMP
  • \n
  • change type and sizes of AdSense ads without going into your Google AdSense account
  • \n
  • hide Google AdSense advertisements on 404 pages by default (to comply with Google AdSense terms)
  • \n
  • insert Google AdSense code for verification and AdSense Auto Ads
  • \n
  • enable AdSense Auto ads on AMP
  • \n
  • easy Ad Health integration and Google AdSense violation checks
  • \n
  • option to remove the Google AdSense background color
  • \n
  • place Google AdSense In-feed ads using the also free In-feed add-on
  • \n
  • assistant for exact sizes of responsive Google AdSense ads with the Responsive add-on
  • \n
  • convert Google AdSense ads into AMP ads automatically with the Responsive add-on
  • \n
  • ads.txt generated with the correct AdSense information automatically
  • \n
  • works along with Google Site Kit or can replace it if you want to control your ad placements
  • \n
\n

\n

\n

Like j4ckson185, there are thousands of happy AdSense users:

\n
\n

Your app is awesome, congratulations! Google Adsense suggests using your app on its official website, it’s incredible!

\n
\n

ads.txt

\n
    \n
  • generates an ads.txt with custom content
  • \n
  • adds the content for AdSense to the ads.txt automatically
  • \n
\n

\n

\n

ad blocker

\n
    \n
  • basic features to prevent ads from being removed by AdBlock and other ad blockers
  • \n
  • prevent ad blockers from breaking sites where plugin scripts are running
  • \n
  • ad blocking detection: show alternative content to ad block users with Pro and improve the monetization of your website
  • \n
\n

Learn more on the plugin homepage.

\n

Thank you for motivating us with your positive review.

\n

Localizations: Arabic, Chinese, Czech, Danish, Dutch, English, French, German, Hungarian, Italian, Japanese, Norwegian, Polish, Portuguese, Russian, Slovak, Spanish, Turkish, Vietnamese

\n
\n

Add-Ons

\n
    \n
  • all add-ons include priority email support
  • \n
  • Advanced Ads Pro – powerful tools for ad optimizations: cache-busting, more placements, lazy loading, ad blocker module, click fraud protection, and many more
  • \n
  • Tracking – track ad impressions and ad clicks with local methods or Google Analytics
  • \n
  • Responsive Ads – target ads to specific browser sizes and create ads for AMP
  • \n
  • Google Ad Manager Integration – a quick and error-free way to load ad units from your Google Ad Manager (formerly Google DoubleClick for Publishers, DFP) account without touching any ad codes
  • \n
  • Geo Targeting – display ads based on the geo location of the visitor
  • \n
  • Sticky Ads – increase click rates with fixed, sticky, and anchor ads
  • \n
  • Fixed Widget for WordPress – turn sidebar widgets into performant fixed sticky ads
  • \n
  • PopUp and Layer Ads – display ads and other content in layers and popups
  • \n
  • Selling Ads – allows you to sell ads on your website fully automated, including payments and advertiser profiles.
  • \n
  • Ad Slider – create a simple slider from your ads
  • \n
\n
\n

If you have problems with Advanced Ads, please reach out to our support or open a new topic in our forums on wordpress.org
\n.

\n

Integrations

\n

Advanced Ads integrates with plenty of other plugins:

\n\n","download_link":"https://downloads.wordpress.org/plugin/advanced-ads.1.27.0.zip","tags":{"ad-manager":"ad manager","ad-rotation":"ad rotation","ads":"ads","adsense":"adsense","banner":"banner"},"donate_link":"","icons":{"1x":"https://ps.w.org/advanced-ads/assets/icon-128x128.gif?rev=2293174","2x":"https://ps.w.org/advanced-ads/assets/icon-256x256.gif?rev=2293174"},"wporg":true},{"name":"Syntax-highlighting Code Block (with Server-side Rendering)","slug":"syntax-highlighting-code-block","version":"1.3.1","author":"Weston Ruter","author_profile":"https://profiles.wordpress.org/westonruter","requires":"5.5","tested":"5.7.2","requires_php":"5.6","rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":17},"num_ratings":17,"support_threads":1,"support_threads_resolved":1,"active_installs":1000,"downloaded":11948,"last_updated":"2021-03-09 8:51pm GMT","added":"2019-07-30","homepage":"https://github.com/westonruter/syntax-highlighting-code-block","short_description":"Extending the Code block with syntax highlighting rendered on the server, thus being AMP-compatible and…","description":"

This plugin extends the Code block in WordPress core to add syntax highlighting which is rendered on the server. Pre-existing Code blocks on a site are automatically extended to include syntax highlighting. Doing server-side syntax highlighting eliminates the need to enqueue any JavaScript on the frontend (e.g. Highlight.js or Prism.js) and this ensures there is no flash of unhighlighted code (FOUC?). Reducing script on the frontend improves frontend performance and it also allows for the syntax highlighted code to appear properly in AMP pages as rendered by the official AMP plugin (see also ampproject/amp-wp#972) or when JavaScript is turned off in the browser.

\n

In addition to not adding any JavaScript to the frontend, the stylesheets needed for styling the Code block will only be added to the page if there is a Code block present. The stylesheets are added inline when the Code block is rendered, ensuring that they do not block rendering of any content higher in the page. If stylesheets fail to load for any reason, the block simply renders without styling, with one key exception: highlighted lines are wrapped in mark elements so they’ll get highlighted regardless, including in RSS Feeds and posts syndicated in email (as long as the mark element is supported in the client).

\n

This extended Code block uses language auto-detection to add syntax highlighting, but you can override the language in the block’s settings sidebar. (There is currently no syntax highlighting of the Code block in the editor.) The plugin supports all programming languages that highlight.php supports (being a port of highlight.js). The Code block also is extended to support specifying the aforementioned highlighted lines. There is also a checkbox for whether to show line numbers on the frontend (with the numbers being non-selectable). Lastly, given inconsistencies across themes as to whether lines in a Code block should be wrapped, this plugin adds styling to force them to no-wrap by default, with a checkbox to opt-in to wrapping when desired.

\n

For advanced usage, please see the plugin wiki.

\n

This plugin is developed on GitHub. See list of current issues with the plugin. Please feel free to file any additional issues or requests that you may come across. Pull requests are welcome.

\n

Credits

\n

This is a fork of Code Syntax Block by Marcus Kazmierczak (mkaz), which is also available on WordPress.org. Copyright (c) 2018 Marcus Kazmierczak. Licensed under GPL 2.0 or later.

\n

highlight.php is released under the BSD 3-Clause License. Copyright © 2006-2013, Ivan Sagalaev (maniac@softwaremaniacs.org), highlight.js (original author). Copyright © 2013, Geert Bergman (geert@scrivo.nl), highlight.php

\n","download_link":"https://downloads.wordpress.org/plugin/syntax-highlighting-code-block.1.3.1.zip","tags":{"block":"block","code":"code","code-highlighting":"code highlighting","code-syntax":"code syntax","syntax-highlight":"syntax highlight"},"donate_link":"","icons":{"1x":"https://ps.w.org/syntax-highlighting-code-block/assets/icon.svg?rev=2131108","2x":"https://ps.w.org/syntax-highlighting-code-block/assets/icon-256x256.png?rev=2131108","svg":"https://ps.w.org/syntax-highlighting-code-block/assets/icon.svg?rev=2131108"},"wporg":true},{"name":"Contact Form by WPForms – Drag & Drop Form Builder for WordPress","slug":"wpforms-lite","version":"1.6.9","author":"WPForms","author_profile":"https://profiles.wordpress.org/jaredatch","requires":"4.9","tested":"5.8","requires_php":"5.5","rating":98,"ratings":{"1":210,"2":46,"3":54,"4":219,"5":9567},"num_ratings":10096,"support_threads":96,"support_threads_resolved":83,"active_installs":4000000,"downloaded":81431271,"last_updated":"2021-08-26 11:06am GMT","added":"2016-03-14","homepage":"https://wpforms.com","short_description":"The best WordPress contact form plugin. Drag & Drop online form builder that helps you create beautiful contact forms with just a few clicks.","description":"

WordPress Contact Form Builder Plugin

\n

We believe that you shouldn’t have to hire a developer to create a WordPress contact form. That’s why we built WPForms, a drag & drop WordPress form builder that’s EASY and POWERFUL.

\n

WPForms allows you to create beautiful contact forms, feedback form, subscription forms, payment forms, and other types of forms for your site in minutes, not hours!

\n

At WPForms, user experience is our #1 priority. Our pre-built form templates and workflows make WPForms the most beginner friendly contact form plugin in the market.

\n

The WPForms Challenge guides you through creating your first form in under 5 minutes. We walk you through using the form builder all the way to adding a form to a page on your site! WPForms includes integrations for popular page builders like the WordPress Block Editor (Gutenberg), Classic Editor, Elementor, and Divi making the whole process seamless.

\n

WPForms is a 100% mobile responsive contact form solution, so your contact forms will always look great on all devices (mobile, tablet, laptop, and desktop).

\n

WPForms’ contact forms are also highly optimized for web and server performance because we understand the importance of speed when it comes to SEO, marketing, and conversion. We can honestly say that WPForms is one of the fastest WordPress contact form builder plugins in the world.

\n
\n

WPForms Pro
\n This plugin is the lite version of the WPForms Pro plugin that comes with all the contact form features you will ever need including email subscription forms, multi-page contact forms, file uploads, conditional logic, payment integrations, form templates, and tons more. Click here to purchase the best premium WordPress contact form plugin now!

\n
\n

We took the pain out of creating contact forms and made it easy. Here’s why smart business owners, designers, and developers love WPForms, and you will too!

\n

\n

Drag & Drop Contact Form Builder

\n

We were tired of the bloated and buggy contact form builder plugins. That’s why we built WPForms to adapt to your workflow and allow you to create custom contact forms in minutes. By using our easy to use drag and drop online form builder, you can easily add custom form fields, rearrange them, and basically create a complete contact form in 5 minutes or less.

\n

But don’t just take our word. See what one of the WordPress experts are saying:

\n
\n

WPForms is by far the easiest form plugin to use. My clients love WPForms and it’s one of the few plugins they can use without any training. As a developer I appreciate how fast, modern, clean and extensible it is.
\n Bill Erickson – Expert WordPress Consultant

\n
\n

Pre-built Form Templates

\n

Building contact forms in WordPress can be time consuming. Why?

\n

Because every other WordPress contact form builder plugin requires you to build your contact form from scratch. The truth is it’s often not necessary to create a contact form completely from scratch unless you really want to.

\n

Whether you’re looking to create a simple contact form, marketing form, request a quote form, donation form, payment order form, registration form, or a subscription form, we have a form template for you inside our contact form builder.

\n

WPForms comes with pre-built form templates to help you save time. You can add, remove, or re-arrange fields as necessary.

\n

See 100+ Pre-Made WPForms Form Template Demo

\n

Mobile Ready, SEO Friendly and Optimized for Speed

\n

WPForms’ contact forms are 100% responsive and mobile-friendly by default. We also optimized every query on the front-end and the back-end to ensure maximum speed – Yes, WPForms is one of the fastest WordPress contact form plugin.

\n

You can embed your contact form on any page with optimized title and description. With the speed and proper formatting, WPForms is also one of the most SEO friendly contact form plugin.

\n

All the Fields & Features that You Need to Succeed

\n

From star ratings to file uploads to multi-page contact forms with progress bar, we have all the fields you need.

\n

You can easily integrate your contact forms with an email marketing service or collect payments for bookings and orders. WPForms allows you to do it all.

\n

The best part is, you can do it all without hiring a developer.

\n

See what one business owner has to say about WPForms’ contact form:

\n
\n

As a business owner, time is my most valuable asset. WPForms allow me to create smart contact forms with just a few clicks. With their pre-built form templates and the drag & drop builder, I can create a new form that works in less than 2 minutes without writing a single line of code. Well worth the investment.
\n David Henzel – Co-founder of MaxCDN

\n
\n

Surveys & Polls

\n

Along with contact form, you can also use WPForms to create surveys and polls.

\n

Our WordPress Survey plugin addon comes with smart survey fields including likert scale, star ratings, multiple choice, Net Promoter Score (NPS), and more, so you can create custom survey forms like Survey Monkey (without the high costs).

\n

WPForms offer the best-in class survey reporting. You can use our interactive reports to customize the graphs, export them for your presentations, and even display the aggregate results to your users.

\n

The best part about WPForms survey reports is that it can retroactively work on any old contact form or feedback survey contact form created with WPForms.

\n

Thousands of businesses love WPForms surveys for creating employee feedback form, customer feedback form, online petition form, and more.

\n

You can also use the surveys & polls addon to easily create a poll on your site. To save you time when creating a user poll, we have added a built-in poll forms template. Our poll feature offers real-time reports, so you can share poll results with the user immediately after they submit their vote.

\n

Just like the contact form, you can embed your surveys and polls inside any post, page, or widget area in WordPress.

\n

Membership and Default WordPress Forms

\n

Aside from building simple contact forms which every WordPress site needs, WPForms also helps you create better default WordPress forms.

\n

For example, you can use WPForms to create custom WordPress login forms and custom WordPress user registration forms which are great for membership sites.

\n

For membership sites, you can also use WPForms to create a password-protected contact form or even a members only contact form which is restricited to logged-in users only.

\n

Even if you’re not using a WordPress membership plugin, you can use WPForms to create membership registration forms, online RSVP forms, and other address book contact forms.

\n

Bloggers and publishers can use our WordPress post submission forms to accept guest posts, testimonials contact form to collect testiomnials, and partnership agreement forms to grow their business.

\n

Payment Form, Donation Form, Booking Form, and More

\n

While WPForms started out as a contact form plugin, it has evolved into a powerful custom forms solution that you can use to create a payment form, donation form, registration form, online booking form, mobile form, and basically any type of custom form you need.

\n

WPForms integrates with both PayPal and Stripe, so you can easily create a credit card payment form to accept payments on your website. If you’re using SSL, then you can use our Stripe Payment form to accept credit card payments. Alternatively you can use our PayPal payment form to make a donation form and accept payments online.

\n

Aside from simple order forms, business owners also use WPForms to create custom product purchase forms, t-shirt order forms, online booking forms, and more.

\n

We understand that sometimes you may need to create a contact form that require a signature. WPForms comes with a signature field to collect user signature on your WordPress forms or even create custom signature forms.

\n

You can do all of this while still using the same easy-to-use contact form builder that’s loved by over 4 million users.

\n
\n

I am so impressed with this plugin. I decided to give it a shot over some of the other form plugins, and I am so glad I did. It works well, is so easy to use and customize. The support is amazing on top of it all. I got the pro version because I was so pleased. Highly recommend.
\n Micky73 – WordPress user

\n
\n

Forms that are Optimized for Conversion and Results

\n

With our Form Pages addon, you can create distraction-free custom form landing pages like Google Forms and Wufoo right inside WordPress, so you can increase conversions without the high costs (See Form Pages Demo).

\n

To improve form completion rate, we created Conversational Forms® which helps you make your generic feedback form and other custom contact forms feel more human by adding an interactive form layout. Our conversational forms are similar to Typeform without the high subscription costs (See Conversational Forms Demo).

\n

WPForms also has other conversion optimization features such as our smart form logic that lets you create dynamic contact forms where fields change based on user’s answer, multi-page contact forms with progress bar, and other advanced contact forms.

\n

WPForms form analytics integration with MonsterInsights allow you to easily track your lead capture forms, newsletter signup forms, request a quote contact form, and other important forms on your site.

\n

Easy to Customize and Extend

\n

You can easily customize your contact forms with our section dividers, HTML blocks, and custom CSS.

\n

If you’re using Elementor or Divi page builders our native integrations let you easily customize the style of your forms.

\n

We also knew that our developer friends may want to extend simple contact forms further. That’s why WPForms come with tons of hooks and filters to create custom functionality.

\n

Since contact forms are essential for marketing, WPForms is a must have plugin for every website!

\n

Full WPForms Feature List

\n
    \n
  • Online Form Builder – Our powerful drag & drop contact form builder allows you to easily create WordPress contact forms and other online forms in just a few minutes without writing any code.
  • \n
  • 100% Responsive – Mobile Friendly contact forms.
  • \n
  • GDPR Friendly – Make your contact form GDPR compatible with just a few clicks.
  • \n
  • Form Templates – Use our pre-built form templates to save time. Never start from scratch again (see all form templates demos).
  • \n
  • Spam Protection – WPForms provides smart anti-spam protection out-of-the-box, plus direct integrations with hCaptcha and Google reCAPTCHA.
  • \n
  • Instant Form Notification – Quickly respond to incoming inquiries with our instant contact form notification system.
  • \n
  • Smart Form Confirmation – Show a custom success message, or redirect users to a custom thank you page.
  • \n
  • File Uploads – Collect files and media through your contact forms with File Uploads.
  • \n
  • Multi-Page Forms – Split long forms into multiple pages with progress bar to improve user experience.
  • \n
  • Smart Conditional Logic – Show or hide fields and contact form sections based on user behavior.
  • \n
  • Signature Forms – Create signature forms or add the signature field to your contact form, application form, booking form, etc.
  • \n
  • User Registration Forms – Create custom user registration form and custom login form in WordPress.
  • \n
  • Post Submissions – Collect user-submitted content in WordPress with our front-end post submission form. Great for guest posts, testimonials, business directory, listings, etc.
  • \n
  • Geolocation – Display location information about your users.
  • \n
  • Custom Captchas – Create custom captchas for your contact form.
  • \n
  • Surveys and Polls – Easily create surveys forms and analyze the data with interactive reports.
  • \n
  • Form Abandonment – Unlock more leads and grow your business with partial-form submission.
  • \n
  • Form Locker – Manage form permissions and add access control rules including password-protected forms, members only forms, limit contact form entry per person, close form after specific date / time, etc.
  • \n
  • Offline Forms – Let your visitors save their entered data offline and submit when their internet connection is restored.
  • \n
  • Form Landing Pages – Create “distraction-free” form landing pages to boost conversions. Great Google Forms and Wufoo alternative.
  • \n
  • Conversational Forms – Interactive form layout that makes your form feels more human and boost overall completion rate. Great for surveys and registration forms. Perfect Typeform alternative for WordPress without the high costs.
  • \n
  • Webhooks – Send form entry data to secondary tools and external services. No code required, and no need for a third party connector.
  • \n
  • User Journey Reporting – Discover the steps your visitors take before they submit your forms. Right in the WordPress dashboard, you can easily see the content that’s driving the most valuable form conversions.
  • \n
\n

Integrations

\n
    \n
  • PayPal Payment Forms – Create PayPal forms to easily collect payments, donations, and online orders.
  • \n
  • Stripe Forms – Easily collect credit card payments, donations, and online orders with our Stripe addon.
  • \n
  • Authorize.Net Forms – Connect your WordPress site with Authorize.Net to collect payments, donations, and online orders.
  • \n
  • Mailchimp Forms – Create Mailchimp newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • AWeber Forms – Create AWeber newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • Campaign Monitor Forms – Create Campaign Monitor newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • GetResponse Forms – Create GetResponse newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • Constant Contact Forms – Create Constant Contact newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • Drip Forms – Create Drip newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • ActiveCampaign Forms – Add contacts to your ActiveCampaign account, record events, add notes to contacts, and more.
  • \n
  • Sendinblue Forms – Create Sendinblue forms to automate your marketing and engage your subscribers.
  • \n
  • Salesforce Forms – Easily send your WordPress form contacts and leads to your Salesforce CRM account.
  • \n
  • Zapier Addon – Connect your WordPress forms with over 1000+ apps. Route your contact form data to your favorite CRM, email marketing service, etc.
  • \n
\n

After reading this feature list, you can probably imagine why WPForms is the best WordPress contact form plugin in the market.

\n

Give WPForms a try.

\n

Want to unlock more features? Upgrade to our Pro version.

\n

Credits

\n

This plugin is created by Jared Atchison and Syed Balkhi.

\n

Branding Guideline

\n

WPForms® is a registered trademark of WPForms LLC. When writing about the contact form plugin by WPForms, please make sure to uppercase the initial 3 letters.

\n
    \n
  • WPForms (correct)
  • \n
  • WP Forms (incorrect)
  • \n
  • wpforms (incorrect)
  • \n
  • wpform (incorrect)
  • \n
\n

What’s Next

\n

If you like this plugin, then consider checking out our other projects:

\n
    \n
  • OptinMonster – Get More Email Subscribers with the most popular conversion optimization plugin for WordPress.
  • \n
  • MonsterInsights – See the stats that matter and grow your business with confidence. The best Google Analytics plugin for WordPress.
  • \n
  • SeedProd – Create beautiful landing pages with our powerful drag & drop landing page builder.
  • \n
  • WP Mail SMTP – Improve email deliverability for your contact form with the most popular SMTP plugin for WordPress.
  • \n
  • RafflePress – Best WordPress giveaway and contest plugin to grow traffic and social followers.
  • \n
  • Smash Baloon – #1 social feeds plugin for WordPress – display social media content in WordPress without code.
  • \n
  • AIOSEO – The original WordPress SEO plugin to help you rank higher in search results (trusted by over 2 million sites).
  • \n
  • Push Engage – Connect with visitors after they leave your website with the leading web push notification plugin.
  • \n
  • TrustPulse – Add real-time social proof notifications to boost your store conversions by up to 15%.
  • \n
\n

Visit WPBeginner to learn from our WordPress Tutorials and find out about other best WordPress plugins.

\n

Notes

\n

WPForms is absolutely, positively the most beginner friendly WordPress contact form plugin on the market. It is both easy and powerful.

\n

We took the pain out of creating online forms and made it easy. Check out all WPForms features.

\n

Also, I’m the founder of WPBeginner, the largest WordPress resource site for beginners. It was a huge priority for me to make a WordPress contact form plugin that beginners can use without any training.

\n

I feel that we have done that here. I hope you enjoy using WPForms.

\n

Thank you

\n

Syed Balkhi

\n","download_link":"https://downloads.wordpress.org/plugin/wpforms-lite.1.6.9.zip","tags":{"contact-form":"contact form","contact-form-plugin":"contact form plugin","custom-form":"custom form","form-builder":"form builder","forms":"forms"},"donate_link":"","icons":{"1x":"https://ps.w.org/wpforms-lite/assets/icon.svg?rev=2574198","2x":"https://ps.w.org/wpforms-lite/assets/icon-256x256.png?rev=2574201","svg":"https://ps.w.org/wpforms-lite/assets/icon.svg?rev=2574198"},"wporg":true},{"name":"MonsterInsights – Google Analytics Dashboard for WordPress (Website Stats Made Easy)","slug":"google-analytics-for-wordpress","version":"7.18.0","author":"MonsterInsights","author_profile":"https://profiles.wordpress.org/chriscct7","requires":"3.8.0","tested":"5.8","requires_php":"5.2","rating":92,"ratings":{"1":194,"2":39,"3":34,"4":75,"5":2076},"num_ratings":2418,"support_threads":8,"support_threads_resolved":8,"active_installs":3000000,"downloaded":96767658,"last_updated":"2021-08-10 9:06pm GMT","added":"2007-09-14","homepage":"https://www.monsterinsights.com/?utm_source=liteplugin&utm_medium=pluginheader&utm_campaign=pluginurl&utm_content=7%2E0%2E0","short_description":"The best free Google Analytics plugin for WordPress. See how visitors find and use your website, so you can grow your business.","description":"

Google Analytics Plugin for WordPress

\n

With over 3 million active installs, MonsterInsights is the most popular Google Analytics plugin for WordPress.

\n

We believe that it’s easy to double your traffic and sales when you know exactly how people find and use your website. MonsterInsights shows you the analytics and stats that matter, so you can grow your business with confidence.

\n

At MonsterInsights, we make it “effortless” to properly connect your WordPress site with Google Analytics, so you can start making data-driven decisions to grow your business.

\n

Unlike other Google Analytics plugins, MonsterInsights allow you to enable all advanced Google Analytics tracking features with just a few clicks (no need to hire a developer).

\n

The best part is that MonsterInsights comes with an analytics dashboard for WordPress that shows you actionable analytics reports right inside your WordPress dashboard. We have created customized reports that eliminate the fluff and only show you the stats that matter, so you can see exactly what’s working and what’s not!

\n

Simply put, MonsterInsights is the most complete Google Analytics plugin for WordPress that’s both EASY and POWERFUL.

\n

That’s why millions of small businesses and top companies like Microsoft, Bloomberg, FedEx, Yelp, Subway, etc. use MonsterInsights to setup Google Analytics on their WordPress sites.

\n
\n

MonsterInsights Pro
\n This plugin is the lite version of MonsterInsights Pro plugin that comes with all the tracking features you will ever need including events tracking, ecommerce tracking, custom dimensions tracking, page speed reports, popular post tracking, custom dimensions, affiliate link tracking, and tons more. Click here to purchase the best premium Google Analytics plugin for WordPress now!

\n
\n

We took the pain out of installing Google Analytics in WordPress and made it easy. Here’s why over 3 million smart business owners, designers, and developers love MonsterInsights, and you will too!

\n

\n

Quick & Easy Google Analytics Setup

\n

Properly setting up Google Analytics is complicated. You have to either hire a developer or learn how to add advanced code snippets to your website in many different areas. This process can take days or weeks…and can even break your website!

\n

With MonsterInsights, we made it “effortless” to properly setup Google Analytics in WordPress. Yes, you can enable all advanced Google Analytics features with just a few clicks.

\n

If you can point-and-click, then you can set up Google Analytics inside WordPress and start seeing insights in under 15 minutes (no code necessary).

\n

We keep up with all Google Analytics updates, so you can sleep well at night knowing that your website will always stay up to date with the newest features.

\n

See what one business owner is saying about MonsterInsights:

\n
\n

It just works. Really easy way to insert Google Analytics tracking code and keep it there when switching themes. No need to copy/paste code anywhere. This is the best way to handle Google Analytics in WordPress.
\n Steven Gliebe

\n
\n

Google Analytics Dashboard + Real Time Stats

\n

Our goal at MonsterInsights is to make Google Analytics easy and accessible for everyone.

\n

We understand that Google Analytics has a steep learning curve which often prevents small business owners from making informed decisions to grow their business.

\n

That’s why MonsterInsights comes with a built-in Google Analytics Dashboard for your WordPress site, so you can see all the useful information about your visitors right inside your WordPress dashboard without needing to login somewhere else.

\n

We have even created customized reports to help you filter through the noise and see the stats that really matter!

\n
    \n
  • \n

    Audience Report helps you get to know your visitors in a whole new way. It shows you detailed insights like which country your visitors are coming from, what are they most interested in, which device are they using, their age, gender, and a whole lot more. You can use this demographics report and audience clues to tweak your website design and content accordingly.

    \n
  • \n
  • \n

    **Publishers Report ** helps you understand which pages your visitors are arriving, and which pages they are leaving from. Designed specifically for blogs and other resource sites, this powerful report will show you which outbound links are getting clicked so you can easily optimize for higher conversions.

    \n
  • \n
  • \n

    Behavior Report shows you exactly how people find your website, which keywords did they search for, who referred them, what did they click on your site, and more. You can use these useful stats to identify low-hanging fruits, new partnership opportunities, and promotional areas to focus on.

    \n
  • \n
  • \n

    Content Report shows you stats on exactly which content gets the most visits, so you can stop guessing and start creating content that gets more traffic and conversion.

    \n
  • \n
  • \n

    Ecommerce Report shows you important store stats like total revenue, conversion rate, average order value, top referral sources, and more (all in one place).

    \n
  • \n
  • \n

    Forms Report shows you conversion stats for various contact forms and lead forms on your website, so you can improve the conversions to grow your business.

    \n
  • \n
  • \n

    Search Console Report shows you exactly how well your website is ranking in Google, so you can further optimize your SEO to grow your organic traffic.

    \n
  • \n
  • \n

    Custom Dimensions Report helps you dig deeper by showing you useful stats like who are your most popular authors, what are the best publication times, which are your most popular categories or tags, how well are your Yoast focus keywords and SEO score performing, and more.

    \n
  • \n
  • \n

    Site Speed Report makes it easy to track pagespeed insights and loading times for your website and get the information you need to improve user experience and your SEO rankings.

    \n
  • \n
\n

Our custom Google Analytics Dashboard reports are based on over 12+ years of online business experience. We built MonsterInsights to be the Google Analytics plugin that we wish we had.

\n

We currently use MonsterInsights on all our portfolio companies which include both media sites generating tens of millions of pageviews and eCommerce sites generating millions in sales.

\n

That’s why we can confidently say that MonsterInsights is the ultimate Google Analytics Shortcut for seeing the stats that matter and making data-driven decisions to grow your business.

\n
\n

I love being able to drill down into the analytics via the reporting feature. I have the PRO version and it makes a big difference what you can analyze. I’m glad that I can integrate with Pretty Links too!
\n Kim Beasley – MonsterInsights user

\n
\n

Google Analytics Enhanced Ecommerce Tracking Made Easy

\n

Google Analytics Enhanced Ecommerce tracking is a powerful feature that lets you track user behavior across your online store starting from product views to checkout page to thank you page and beyond.

\n

With MonsterInsights’ easy WooCommerce integration, you can setup WooCommerce analytics with literally 1-click.

\n

Once you have enabled WooCommerce tracking, MonsterInsights will show you all important WooCommerce metrics in a single dashboard including WooCommerce conversion rate, top products in your WooCommerce store, total transactions, total revenue, average order value, top referral sources, and more.

\n

Our WooCommerce analytics report also includes other detailed WooCommerce event tracking data like total add to carts, total removed from cart, time to purchase, and sessions to purchase.

\n

For those who want to go beyond our WooCommerce stats dashboard, you can easily open up the Google Analytics dashboard to combine WooCommerce data with other secondary dimensions and filters to find exactly what you’re looking for.

\n

Aside from WooCommerce Google Analytics integration, MonsterInsights’ eCommerce addon also offers seamless integration for the Easy Digital Downloads plugin.

\n

Our Easy Digital Downloads Google Analytics integration allows you to set up Enhanced Ecommerce Tracking on your store with just 1-click.

\n

Simply put, MonsterInsights’ Enhanced Ecommerce for WordPress feature is by far the easiest and most powerful in the market.

\n

Google Analytics + GDPR Compliance

\n

MonsterInsights helps make Google Analytics GDPR compliance easier for business owners.

\n

Our EU compliance addon allows you to:

\n
    \n
  • Anonymize IP in Google Analytics
  • \n
  • Disable the Demographics and Interest Reports for Remarketing and Advertising
  • \n
  • Disable UserID and author name tracking
  • \n
  • Enable the ga() compatibility mode
  • \n
  • Integrate with Cookie Notice and CookieBot plugins to collect user consent before tracking
  • \n
  • Integrate with Google AMP Consent Box before enable tracking
  • \n
  • Integrate with Google Analytics’s Chrome browser opt-out extension and built-in cookie opt-out system
  • \n
  • Offer Easy Opt Out link for Google Analytics tracking
  • \n
\n

While no single plugin can guarantee 100% GDPR compliance in WordPress, MonsterInsights goes to great length in helping business owners with GDPR compliance.

\n

For more details, see: GDPR and MonsterInsights – Everything You Need to Know.

\n

Universal Tracking + Google Analytics for AMP and Instant Articles

\n

MonsterInsights uses Google Analytics universal tracking, so you can track your users across devices and platforms.

\n

Accelerated Mobile Pages (AMP) is a project by Google that helps you speed up your website. However if you don’t set it up properly, Google AMP can cause you to lose your website analytics. Our Google Analytics AMP integration allows you to have accurate tracking on all AMP enabled pages. It works seamlessly with AMP for WordPress plugin.

\n

We also offer 1-click Google Analytics integration with Facebook Instant Articles.

\n

At MonsterInsights, we always stay ahead of the curve in helping you integrate WordPress with the latest Google Analytics tracking features.

\n
\n

Analytics for PROs! This plugin brings it all, great features and helpful info to easily see what you are doing.
\n Frank van der Sluijs

\n
\n

Google AdSense Tracking and Affiliate Link Tracking

\n

With MonsterInsights Ads tracking addon, publishers can easily track the performance of their Google AdSense Ads inside their Google Analytics dashboard.

\n

Our affiliate link tracking makes it easy for bloggers and affiliate marketers to track their affiliate links with Google Analytics.

\n

MonsterInsights uses event tracking for all WordPress outbound link tracking which is far more accurate than any built-in WordPress analytics solution.

\n

Unlike other WordPress analytics plugin, our Google Analytics affiliate link tracking does NOT slow down your website because all events are recorded via JavaScript and sent straight to your account.

\n

Most other WordPress stats plugin track data on your WordPress hosting server which slows down your website and does not scale for larger websites.

\n

Since our affiliate link tracking uses Google Analytics’ powerful servers, we can skip WordPress entirely.

\n

MonsterInsights’ affiliate link tracking feature works with all WordPress affiliate link management plugins including Pretty Links, Thirsty Affiliates, and others.

\n

Custom Dimensions Tracking, Custom Google Analytics Event Tracking, and More

\n

Our Google Analytics event tracking feature for WordPress doesn’t just stop at affiliate link tracking.

\n

You can use MonsterInsights custom Google analytics event tracking feature to easily add outbound-link tracking, file downloads tracking, call-to-action button tracking, hashmark tracking, telephone link tracking, and more.

\n

Our powerful Forms Tracking addon uses Google Analytics custom event tracking feature to enable form analytics in WordPress. With just 1-click, you can enable form conversion tracking for your contact forms, lead generation forms, registration forms, surveys, and any other type of form in WordPress.

\n

MonsterInsights’ Custom Dimensions addon allows you to push WordPress analytics even further. You can use Google Analytics custom dimensions to generate helpful WordPress stats for:

\n
    \n
  • Author Tracking – see stats for each author to find which author’s posts generate the most traffic.
  • \n
  • Post Type Tracking – see stats for WordPress post types to find out which sections are performing the best.
  • \n
  • Category Tracking – see stats for your WordPress categories to find out which sections of your sites are the most popular.
  • \n
  • Tags Tracking – see stats for your WordPress tags to find out which tags are the most popular.
  • \n
  • SEO Score Tracking – see stats for your Yoast SEO score and see how it impacts your traffic.
  • \n
  • Focus Keyword Tracking – see stats for Yoast focus keyword and see how it correlates with your traffic.
  • \n
  • Logged-in User Tracking – see WordPress stats for what percentage of your users are logged-in.
  • \n
  • User ID Tracking – see stats for each individual logged-in user’s activity through User ID custom dimension – great for Ecommerce and membership sites.
  • \n
  • Published Time Tracking – track the performance of your posts based on their published time.
  • \n
\n

Simply put, MonsterInsights allow you to take full advantage of all the powerful Google Analytics features.

\n
\n

I like how simple it is for client users and how I can turn on the advanced features for myself to get all the details right.
\n Skip Shean

\n
\n

Google Analytics Dashboard Plugin for WordPress Multisite Networks

\n

MonsterInsights is the most popular analytics plugin for adding Google Analytics to WordPress multisite.

\n

We have built-in all permissions and controls that you would need to successfully run Google Analytics on a WordPress multi-site.

\n

You can control who has access to view the Google Analytics Dashboard report in WordPress. Our permissions setting allows you to hide analytics reports for specific user roles.

\n

Similarly, we understand that some sites may want to exclude logged-in users from tracking. MonsterInsights gives you granular control to exclude admin in Analytics as well as other user roles.

\n

Our performance addon allows you to adjust sample rate and site speed sample rates for Google Analytics.

\n

By now you can probably see why MonsterInsights has become the most popular Google Analytics plugin for WordPress.

\n

We understand Google Analytics better than any other analytics plugin for WordPress.

\n

Full MonsterInsights Feature List

\n
    \n
  • Quick and Easy Setup – Easily setup Google Analytics for WordPress with just a few clicks (no coding needed)
  • \n
  • Real Time Stats – See real time stats inside your Google Analytics dashboard.
  • \n
  • Universal Tracking – Get better insights with Google Analytics’ universal tracking.
  • \n
  • Google Analytics Dashboard – See the stats that matter from right inside your WordPress dashboard with custom Publisher Report, Ecommerce report, and Search Console report.
  • \n
  • eCommerce Tracking – Add Google Analytics Ecommerce tracking to WordPress.
  • \n
  • WooCommerce Google Analytics – Add Enhanced Ecommerce Tracking to your WooCommerce store.
  • \n
  • Easy Digital Downloads Google Analytics – Add Enhanced Ecommerce Tracking to your EDD store.
  • \n
  • Ads Tracking – Track your Google Adsense ads with Google Analytics.
  • \n
  • Affiliate Link Tracking – Track your affiliate links and get stats that matter.
  • \n
  • File Download Tracking – Enable file download stats with just a click.
  • \n
  • Custom Link Tracking – Track your outbound link clicks with Google Analytics.
  • \n
  • Events Tracking – Track custom button and banner clicks with Google Analytics.
  • \n
  • Custom Dimensions Tracking – Enable Google analytics custom dimensions tracking for WordPress.
  • \n
  • Author Tracking – See author stats and discover who’s the most popular author on your site.
  • \n
  • Popular Post Tracking – See which blog post and section is the most popular.
  • \n
  • Contextual Insights – Get actionable tips on how to improve engagement and get more visitors based on your site’s traffic.
  • \n
  • Headline Analyzer – Get more clicks and improve SEO following suggestions from our Headline Analyzer directly in the WordPress editor
  • \n
  • Custom Post Type Tracking – Track the performance of your custom post types.
  • \n
  • Referral Tracking – See how visitors are finding your website to better focus your marketing efforts.
  • \n
  • Performance Tracking – Control the performance rate and sample rate for your Google Analytics report.
  • \n
  • Enhanced Link Attribution – Get better analytics with enhanced link attribution.
  • \n
  • Email Summaries – Your site’s Google Analytics traffic report delivered straight to your inbox every week.
  • \n
  • Google Analytics for AMP – Add proper tracking for Google AMP.
  • \n
  • Google Analytics for Facebook Instant Articles – Add proper tracking for Facebook Analytics.
  • \n
  • Google Analytics GDPR Compliance – EU compliance addon helps you improve Google Analytics GDPR compliance by adding anonymize IP, cookie consent for opt-out tracking, and more.
  • \n
  • Form Conversion Tracking – Track conversions for your WordPress forms. Works with all popular plugins including WPForms, Contact Form 7, Gravity Forms, Formidable Forms, and more.
  • \n
  • Google Optimize Tracking – Enable Google Analytics support for Google Optimize A/B Testing.
  • \n
  • Google Analytics Tools – Helpful tools for Google Analytics such as UTM link tracking builder.
  • \n
  • Want us to add something else? Suggest a feature and we’ll get it added!
  • \n
\n

After reading this exhaustive feature list, you can probably imagine why MonsterInsights is the best Google Analytics plugin for WordPress.

\n

Give MonsterInsights a try.

\n

Want to unlock even more features? Upgrade to our Pro version.

\n
\n

Simple, yet powerful. Amazing piece of plugin, does exactly what expected and even more.
\n Matt Jaworski

\n
\n

Popular Google Analytics Tutorials

\n\n

Note for Beginners

\n

Like all WordPress plugins, Google Analytics by MonsterInsights is only available for self-hosted WordPress sites. This means you will need to switch from WordPress.com to WordPress.org if you want to use this plugin on your WordPress site.

\n

For more details, see this infographic on self hosted WordPress.org vs free WordPress.com

\n

Credits

\n

This plugin is created by Chris Christoff and Syed Balkhi with sponsorship from WPBeginner.

\n

Branding Guidelines

\n

MonsterInsights® is a registered trademark of MonsterInsights LLC. When writing about the Google Analytics for WordPress plugin by MonsterInsights, please make sure to uppercase the first letters of both word.

\n
    \n
  • MonsterInsights (correct)
  • \n
  • Monster Insights (incorrect)
  • \n
  • monsterinsights (incorrect)
  • \n
  • monsterinsight (incorrect)
  • \n
\n

What’s Next

\n

If you like this plugin, then consider checking out our other projects:

\n
    \n
  • OptinMonster – Get More Email Subscribers
  • \n
  • WPForms – Best WordPress Contact Form Plugin
  • \n
  • AIOSEO – The original WordPress SEO plugin to help you rank higher in search results (trusted by over 2 million sites)
  • \n
  • SeedProd – Most popular coming soon & maintenance mode plugin for WordPress
  • \n
  • WP Mail SMTP – Improve email deliverability for your contact form with the most popular SMTP plugin for WordPress
  • \n
  • RafflePress – Best WordPress giveaway and contest plugin to grow traffic and social followers
  • \n
  • Smash Balloon – #1 social feeds plugin for WordPress – display social media content in WordPress without code
  • \n
  • PushEngage – Connect with visitors after they leave your website with the leading web push notification plugin
  • \n
  • TrustPulse – Add real-time social proof notifications to boost your store conversions by up to 15%
  • \n
\n

This plugin would not be possible without the help and support of WPBeginner, the largest WordPress resource site. You can learn from our free WordPress Tutorials like how to install WordPress, choose the best WordPress hosting, WordPress glossary, and more.

\n

You can also learn about other best WordPress plugins.

\n","download_link":"https://downloads.wordpress.org/plugin/google-analytics-for-wordpress.7.18.0.zip","tags":{"google-analytics":"google analytics","google-analytics-dashboard":"google analytics dashboard","google-analytics-widget":"google analytics widget","woocommerce-stats":"WooCommerce stats","wordpress-analytics":"WordPress analytics"},"donate_link":"http://www.wpbeginner.com/wpbeginner-needs-your-help/","icons":{"1x":"https://ps.w.org/google-analytics-for-wordpress/assets/icon.svg?rev=1598927","2x":"https://ps.w.org/google-analytics-for-wordpress/assets/icon-256x256.png?rev=1598927","svg":"https://ps.w.org/google-analytics-for-wordpress/assets/icon.svg?rev=1598927"},"wporg":true},{"name":"Atomic Blocks – Gutenberg Blocks Collection","slug":"atomic-blocks","version":"2.9.0","author":"atomicblocks","author_profile":"https://profiles.wordpress.org/atomicblocks","requires":"5.3","tested":"5.5.5","requires_php":"5.6","rating":86,"ratings":{"1":5,"2":0,"3":1,"4":6,"5":31},"num_ratings":43,"support_threads":1,"support_threads_resolved":0,"active_installs":40000,"downloaded":991471,"last_updated":"2020-10-28 4:53pm GMT","added":"2018-03-26","homepage":"https://atomicblocks.com","short_description":"A collection of beautiful, customizable Gutenberg blocks for the new block editor.","description":"

Atomic Blocks has moved!

\n

Same powerful blocks, same beautiful designs, same innovative team. Atomic Blocks has been renamed to Genesis Blocks. Learn more about Genesis Blocks. With our migration tool built right into Genesis Blocks, the transition between plugins will be simple and seamless – plus you’ll be ready to receive the new blocks and features we’re releasing soon.

\n

Atomic Blocks is a collection of page building blocks for the new Gutenberg block editor. Building pages with the block editor and Atomic Blocks gives you more control to quickly create and launch any kind of site you want!

\n

Installing the customizable Atomic Block plugin adds a collection of beautiful, site-building blocks to help you customize page layouts, increase engagement, and get results for your business. Atomic Blocks provides everything from customizable buttons, to beautifully-designed page sections and full-page layout designs via the Section & Layout block.

\n

Along with the content blocks you’ll find in Atomic Blocks, we’re also publishing helpful articles and tutorials to help you get started with Gutenberg.

\n

New Section and Layout Block!

\n

\n

On top of the handy, time-saving blocks already found in Atomic Blocks, we’re excited to introduce the brand new Section and Layout block! This block comes with a library of pre-designed sections and layouts to help you quickly and easily build a beautiful site with the new block editor.

\n

Using the Section and Layout modal window, you can browse designs by category, search, and even add sections and layouts to a Favorites tab for quick access later. Paired with the free Atomic Blocks theme, which has support for full-width, block-based page building, you have everything you need to start building your site today!

\n

Atomic Blocks currently includes the following blocks:

\n\n

Atomic Blocks WordPress Theme

\n

We’ve created a beautiful WordPress theme to help you get started with the Atomic Blocks plugin and the new WordPress block editor. The theme integrates seamlessly with the blocks you’ll find in the plugin!

\n\n

In addition to the Atomic Block Theme, we’ve built Revolution Pro with the StudioPress team. This theme is built from the ground up with blocks—Gutenberg core and Atomic. Using this Theme and the Genesis One-Click Theme Install you can have a new block-based site up and running in minutes.

\n\n

Google AMP Support

\n

The Accelerated Mobile Pages (AMP) project is a publishing format created by Google to enhance site performance for mobile website users. AMP pages are specially designed for Google search users to quickly load website pages without using any extraneous data. Atomic Blocks has support for AMP built into each block!

\n

Atomic Blocks Help File

\n

We’ve created a handy help file that you can check out here. The help file covers how to setup the plugin and get started with the blocks.

\n

The help file is also available in the plugin once activated. Click the Atomic Blocks admin menu item to visit the Getting Started page.

\n

View the plugin help file

\n

Follow Along:

\n\n","download_link":"https://downloads.wordpress.org/plugin/atomic-blocks.2.9.0.zip","tags":{"blocks":"blocks","editor":"editor","gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","page-builder":"page builder"},"donate_link":"https://atomicblocks.com","icons":{"1x":"https://ps.w.org/atomic-blocks/assets/icon-128x128.jpg?rev=1914920","2x":"https://ps.w.org/atomic-blocks/assets/icon-256x256.jpg?rev=1914921"},"wporg":true},{"name":"Akismet Spam Protection","slug":"akismet","version":"4.1.12","author":"Automattic","author_profile":"https://profiles.wordpress.org/automattic","requires":"4.6","tested":"5.8","requires_php":false,"rating":94,"ratings":{"1":40,"2":9,"3":13,"4":45,"5":811},"num_ratings":918,"support_threads":9,"support_threads_resolved":8,"active_installs":5000000,"downloaded":208651946,"last_updated":"2021-09-03 4:53pm GMT","added":"2005-10-20","homepage":"https://akismet.com/","short_description":"The best anti-spam protection to block spam comments and spam in a contact form. The most trusted antispam solution for WordPress and WooCommerce.","description":"

Akismet checks your comments and contact form submissions against our global database of spam to prevent your site from publishing malicious content. You can review the comment spam it catches on your blog’s “Comments” admin screen.

\n

Major features in Akismet include:

\n
    \n
  • Automatically checks all comments and filters out the ones that look like spam.
  • \n
  • Each comment has a status history, so you can easily see which comments were caught or cleared by Akismet and which were spammed or unspammed by a moderator.
  • \n
  • URLs are shown in the comment body to reveal hidden or misleading links.
  • \n
  • Moderators can see the number of approved comments for each user.
  • \n
  • A discard feature that outright blocks the worst spam, saving you disk space and speeding up your site.
  • \n
\n

PS: You’ll be prompted to get an Akismet.com API key to use it, once activated. Keys are free for personal blogs; paid subscriptions are available for businesses and commercial sites.

\n","download_link":"https://downloads.wordpress.org/plugin/akismet.4.1.12.zip","tags":{"anti-spam":"anti-spam","antispam":"antispam","comments":"comments","contact-form":"contact form","spam":"spam"},"donate_link":"","icons":{"1x":"https://ps.w.org/akismet/assets/icon-128x128.png?rev=969272","2x":"https://ps.w.org/akismet/assets/icon-256x256.png?rev=969272"},"wporg":true},{"name":"WP GDPR Cookie Notice","slug":"wp-gdpr-cookie-notice","version":"1.0.0-rc.1","author":"Felix Arntz","author_profile":"https://profiles.wordpress.org/flixos90","requires":"4.9.6","tested":"5.7.2","requires_php":"7.0","rating":76,"ratings":{"1":4,"2":0,"3":0,"4":0,"5":9},"num_ratings":13,"support_threads":1,"support_threads_resolved":0,"active_installs":700,"downloaded":5941,"last_updated":"2021-04-02 11:51pm GMT","added":"2019-03-01","homepage":"https://wordpress.org/plugins/wp-gdpr-cookie-notice/","short_description":"Simple performant cookie consent notice that supports AMP, Web Stories, granular cookie control and live…","description":"

This plugin adds a simple performant cookie consent notice to your WordPress site that supports AMP, Web Stories, granular cookie control and live preview customization.

\n

Not only does the notice allow you to provide the regular message that your site uses cookies, you can also optionally grant your site visitors permission to granularly allow which cookie types are allowed, supporting groups of functional (always required), preferences, analytics and marketing cookies. This aims towards compliance with how the new GDPR regulations recommend implementing cookie control for your site.

\n

In addition to the Privacy Policy page setting that WordPress core provides, you also get a settings to optionally set an extra Cookie Policy page, and you can easily link to either of them from the cookie consent notice.

\n

The cookie notice content and appearance can easily be tweaked using the Customizer, with an immediate live-preview of what your changes will look like.

\n

Last but not least, another important thing that this plugin takes care of, other than most other cookie consent plugins, is that it actually ensures cookies are only placed if the respective cookie type has been allowed by the visitor. The plugin does this by implementing cookie rules for WordPress itself, and also for the following plugins:

\n\n

More plugins will be supported in the future. If you are a developer though, it’s also very easy to add cookie rules for other code, by using the flexible cookie rule component the plugin provides as an extension point.

\n

Feature Summary

\n
    \n
  • Lightweight and easy-to-use: Simply activate the plugin, and the notice will appear.
  • \n
  • Live Preview: Use the Customizer to adjust the notice to your needs, with an instant live preview.
  • \n
  • Customizable Appearance: Specify the notice position, colors, border, button size and more.
  • \n
  • Customizable Content: Adjust the notice heading, text and button label to your preferences. You can easily link to your cookie policy page or privacy policy page, and even give visitors granular control about which cookie types they allow.
  • \n
  • Cookie Policy Support: Define an optional cookie policy page if your site has one, or alternatively provide an ID attribute to the cookie section in your privacy policy.
  • \n
  • Cookie Integrations: Supported cookies are only set once the visitor has given their consent. The cookie rules implemented also respect the more granular cookie control.
  • \n
  • JavaScript-driven: The cookie notice is inserted into the page as necessary via JavaScript, but at the same time provides easy access to whether it should be displayed via its PHP API.
  • \n
  • AMP Support: The notice is fully AMP-compatible using <amp-consent>, integrating seamlessly with the AMP plugin. It integrates with Web Stories as well.
  • \n
  • Coding Best Practices: The plugin is fully object-oriented and is coded after best practices, such as using interfaces, traits, dependency injection or the single responsibility principle. It also implements modern coding features requiring PHP 7, such as scalar type hints or return type hints.
  • \n
\n

Disclaimer

\n

This plugin does not provide any legal protection. You as a site administrator are required to ensure that it meets legal standards. This plugin is a technical tool, not a lawyer.

\n","download_link":"https://downloads.wordpress.org/plugin/wp-gdpr-cookie-notice.1.0.0-rc.1.zip","tags":{"amp":"amp","cookie-consent":"cookie consent","cookie-notice":"cookie notice","gdpr":"GDPR","web-stories":"web stories"},"donate_link":"","icons":{"1x":"https://ps.w.org/wp-gdpr-cookie-notice/assets/icon-128x128.png?rev=2042024","2x":"https://ps.w.org/wp-gdpr-cookie-notice/assets/icon-256x256.png?rev=2042024"},"wporg":true},{"name":"WordPress Share Buttons Plugin – AddThis","slug":"addthis","version":"6.2.6","author":"The AddThis Team","author_profile":"https://profiles.wordpress.org/arnavarro","requires":"3.0","tested":"5.2.11","requires_php":false,"rating":84,"ratings":{"1":75,"2":25,"3":22,"4":46,"5":444},"num_ratings":612,"support_threads":2,"support_threads_resolved":0,"active_installs":100000,"downloaded":5068675,"last_updated":"2019-07-10 5:19pm GMT","added":"2008-12-23","homepage":"https://wordpress.org/plugins/addthis/","short_description":"Now compatible with the AMP Plugin! Free Share Buttons from AddThis. Share to Messenger, WhatsApp, Facebook, Twitter, Pinterest and many more.","description":"

Now compatible with the AMP Plugin! The Free WordPress Share Buttons Plugin from AddThis makes it easier than ever for your audience to spread your content around the web. Our quick-loading Share Buttons Plugin lets you connect to over 200 social channels including Messenger, WhatsApp, Facebook, Twitter, Pinterest and many more.

\n

Our clean, customizable and simple share buttons are beautiful, quick to load and recognized all over the web.

\n

AddThis is trusted by over 15,000,000 websites with over 2 billion unique users, sharing content all over the world, in more than sixty languages.

\n

Types of Share Buttons:

\n
    \n
  • \n

    Floating share buttons: Placed on the side of your page, following your reader as they scroll. A great way to promote sharing without getting too in-your-face.

    \n
  • \n
  • \n

    Expanding share buttons: Modern, clean, and best suited for sites with tons of mobile traffic. This button expands to reveal sharing options on hover or click.

    \n
  • \n
  • \n

    Inline share buttons: Integrate share buttons into your own content for a seamless sharing experience.

    \n
  • \n
  • \n

    Image sharing buttons: Seamlessly integrate sharing into your layout with adjustable image sharing buttons. Perfect for pages with tons of shareable content.

    \n
  • \n
\n

Customizable:

\n
    \n
  • \n

    Designed for desktop, tablet, and mobile

    \n
  • \n
  • \n

    Choose from over 200 social media channels to display

    \n
  • \n
  • \n

    Adjust coloring to match your brand

    \n
  • \n
\n

Analytics:

\n
    \n
  • Sign up for a free AddThis account to get analytics on how your content is performing such as your top shared content, referring social networks and more. After you register, these analytics are accessible by logging into your AddThis.com account and visiting your AddThis dashboard. Analytics include site pageviews, your top shared content, referring social networks, and more.
  • \n
\n

Support:

\n

We strive to provide best-in-class support with a response time of around two hours, and a customer satisfaction rate of over 98%. To get in touch with our team, head to http://www.addthis.com/support.

\n

Check out our other plugins to help you grow and engage your audience!

\n
    \n
  • \n

    Follow Buttons: Add followers to 65+ social networks, including Facebook, Snapchat, Instagram, and more.

    \n
  • \n
  • \n

    Related Posts: Boost your on-site engagement with our Related Posts tool, which recommends content not only by what’s popular, but also what’s most relevant.

    \n
  • \n
\n

Want more? Visit our website to learn how you can activate our Email List Building and Link Promotion Tools.

\n

AddThis Academy | Privacy Policy

\n","download_link":"https://downloads.wordpress.org/plugin/addthis.6.2.6.zip","tags":{"share-buttons":"share buttons","social":"social","social-marketing":"Social Marketing","social-share":"social share","social-sharing":"social sharing"},"donate_link":"","icons":{"1x":"https://ps.w.org/addthis/assets/icon-128x128.png?rev=1223867","2x":"https://ps.w.org/addthis/assets/icon-256x256.png?rev=1223867"},"wporg":true},{"name":"BigCommerce For WordPress","slug":"bigcommerce","version":"4.16.0","author":"BigCommerce","author_profile":"https://profiles.wordpress.org/bigcommerce","requires":"5.2","tested":"5.5.5","requires_php":"7.2.0","rating":80,"ratings":{"1":8,"2":1,"3":0,"4":3,"5":27},"num_ratings":39,"support_threads":3,"support_threads_resolved":1,"active_installs":1000,"downloaded":57476,"last_updated":"2021-08-12 3:08am GMT","added":"2018-11-16","homepage":"","short_description":"Scale your ecommerce business with WordPress on the front-end and BigCommerce on the back end.…","description":"

BigCommerce for WordPress is a plugin that allows you to scale ecommerce further than ever before on WordPress. Scale your business with WordPress on the front-end and free up server resources from things like catalog management, processing payments, managing fulfillment logistics and more with BigCommerce on the back end.

\n

Built to integrate seamlessly with WordPress, you get access to our native ecommerce features from a single plugin, the ability to sell across multiple channels and marketplaces from a single location, and best of all, an embedded checkout experience that takes on PCI compliance and customer security on your behalf.

\n

Quick Start!

\n

Look at details from the latest release, including new features and enhancements here: https://github.com/bigcommerce/bigcommerce-for-wordpress/releases

\n

Dive into how you set up and customize your site using BC4WP using our guides here: https://developer.bigcommerce.com/bigcommerce-for-wordpress/getting-started/introduction

\n

Have a suggestion for how we can be better? Ping the team! wordpress-suggestions@bigcommerce.com

\n

DIFFERENT FROM YOUR TRADITIONAL PLUGIN

\n

We’ve taken a very different approach to ecommerce in WordPress. We set out to build our plugin the WordPress Way: deliver value to the community, build it with WordPress experts and make something developers can call their own.

\n

The BigCommerce for WordPress plugin leverages the best aspects of both platforms, allowing WordPress to manage content and BigCommerce to manage ecommerce.

\n

SCALABLE ECOMMERCE FOR WORDPRESS

\n

Continue to tap into the unrestricted customization of WordPress while pairing it with the most scalable SaaS ecommerce engine. BigCommerce lets you build complex catalogs, manage large volumes of concurrent traffic, orders and analytics.

\n

The BigCommerce plugin ports over a copy of your product catalog and stores products as custom post types in WordPress. It also creates pages for your cart, checkout, account profiles, sign in, shipping & returns, gift certificates and order history.

\n

The key difference to our approach is that you don’t need to install additional extensions to get access to common ecommerce features. Instead, you get instant access to many common (and advanced) features, such as complex catalog support, global payment gateways, currency handling, taxation, shipping calculations and centralized channel management; all out-of-the-box.

\n

OFFLOAD BACKEND RESOURCES

\n

Our philosophy is that processing orders and running your store shouldn’t affect the uptime and speed of your site — which can hurt your SEO, conversion, and brand. The BigCommerce plugin does the heavy commerce lifting, letting you scale your ecommerce without losing speed or uptime.

\n

LET US HANDLE PCI COMPLIANCE

\n

Taking on your own PCI compliance comes with a huge amount of liability and risk. BigCommerce powers the full checkout experience, assuming the burden of PCI compliance for you.

\n

EXTENSIVE PAYMENT GATEWAYS

\n

BigCommerce has over 65 payment gateway integrations available out-of-the box, serving 100+ countries and over 250 local payment methods.

\n

To help you reduce costs, we’ve pre-negotiated special credit and debit card processing rates with PayPal, our preferred payment solution. The more you grow with BigCommerce and upgrade your plan, the lower your rates can go.

\n

HIGHLY SCALABLE PRODUCT CATALOG

\n

BigCommerce is built for large, complex catalogs with up to 600 SKUs per product, and 250 product values for a single option. Our native catalog structure treats single products (including variants, details, SKUs, etc.) as a single API call, making inventory syncing with ERPs, PIMs (and WordPress) fast.

\n

MULTI-CHANNEL SELLING & MANAGEMENT

\n

With the core BigCommerce platform, you now have access within the control panel to sell across multiple marketplaces simultaneously, such as eBay, Amazon, Facebook, Instagram, Google Shopping, Square and more! Save time and eliminate errors and overselling with bulk listing, automatic inventory syncing and unified order and fulfillment management.

\n

USE YOUR FAVORITE WORDPRESS THEME

\n

BigCommerce for WordPress will work with any WordPress theme, but it may require some styling to make it fit perfectly. Are you a theme developer? We’d love to promote your BigCommerce for WordPress compatible theme. Get in touch with us here.

\n

To start, we recommend choosing a cross-browser compatible WordPress ecommerce theme, since the theme options included will better match what an online store requires.

\n

ECOMMERCE WITH GUTENBERG

\n

We’re big supporters of Gutenberg and built our plugin to support both the classic editor and Gutenberg. Whether you’re inserting shortcodes in classic mode or product blocks in Gutenberg, we will continue to enable support for both.

\n

SECURED USER ACCOUNTS & LOGINS

\n

In addition to offering you peace of mind with a secure checkout experience, we also extend this level of security to your shoppers, their accounts and logins, and payment information — all managed by BigCommerce.

\n

GLOBAL SHIPPING STREAMLINED

\n

We support all major global carriers, offer real-time carrier quotes, allow for free shipping, flat rates, dropshipping and more. With our deep ShipperHQ integration, you can even specify rates by product, category, customer group, quantity, destination, dimensions and more.

\n

FLEXIBLE SHOPPING CART

\n

We are bringing over a decade of focusing on building online stores to every WordPress website. Through this we bring our flexible shopping cart, along with it’s extensive customization options, so can offer enterprise grade promotions and discounts within a fully responsive layout, without additional extensions that other WordPress ecommerce plugins require.

\n

MULTIPLE SITES; ONE CONTROL PANEL

\n

Even if you sell across multiple WordPress sites, you shouldn’t have to manage them all in separate places. BigCommerce gives you a single control panel to manage your catalog, orders and shipping, all from one place. Streamline your admin experience and spend less time managing ecommerce on WordPress.

\n

Beyond WordPress, the endpoints we’ve opened on our platform allow you to build commerce into any sort of experience. Looking to launch a site in React? Interested in developing a mobile app? Want to integrate with an in-house POS? All of these can be built and managed from within the BigCommerce Control Panel.

\n

COMPLEX ENTERPRISE SYSTEMS INTEGRATIONS

\n

A huge benefit of having a SaaS ecommerce engine behind the scenes is that the core platform is already built for mid-market and enterprise use cases. Natively connect to your existing ERP suites, PIM software, OMS solutions, POS systems or marketing automation tools right out of the box.

\n

AMP SUPPORT

\n

Unique to most WordPress ecommerce plugins, BigCommerce for WordPress also includes support for Accelerated Mobile Pages. To activate, install the official Google plugin.

\n

SUPPORT AND SERVICES

\n

All of our BigCommerce customers have access to our 24/7 live phone, chat, and email support, run from our headquarters in Austin, Texas. For larger enterprise customers, we offer dedicated account management and implementation management services as part of your plan. We also have an ever-growing collection of help, support, and how-to guides in our help center.

\n

BUILT WITH DEVELOPERS IN MIND

\n

BigCommerce for WordPress was built by WordPress developers, with developers in mind. Our plugin is open source and available for you to fork, extend and modify as your needs require.

\n

Our plugin supports WordPress’ standard method of overriding template files so you can modify out-of-the-box designs. Customize your product cards, lists and shopping cart without risking plugin updates that will undo your changes.

\n

Additionally, there are many hooks and filters, so you can manipulate content to your heart’s content.

\n

JOIN OUR BIGCOMMERCE COMMUNITY

\n

All BigCommerce customers get access to our ever-growing online community to answer questions, discuss ecommerce strategies, learn about the latest product updates, contribute ideas and more.

\n

If you’re interested in contributing to BigCommerce for WordPress, head over to our GitHub Repository.

\n","download_link":"https://downloads.wordpress.org/plugin/bigcommerce.4.16.0.zip","tags":{"ecommerce":"ecommerce","online-store":"online store","retail":"retail","sell-online":"sell online","storefront":"storefront"},"donate_link":"","icons":{"1x":"https://ps.w.org/bigcommerce/assets/icon-256x256.png?rev=2141502","2x":"https://ps.w.org/bigcommerce/assets/icon-256x256.png?rev=2141502"},"wporg":true},{"name":"Yoast SEO","slug":"wordpress-seo","version":"17.0","author":"Team Yoast","author_profile":"https://profiles.wordpress.org/joostdevalk","requires":"5.6","tested":"5.8","requires_php":"5.6.20","rating":96,"ratings":{"1":718,"2":124,"3":170,"4":616,"5":25755},"num_ratings":27383,"support_threads":541,"support_threads_resolved":492,"active_installs":5000000,"downloaded":351599745,"last_updated":"2021-08-24 7:59am GMT","added":"2010-10-11","homepage":"https://yoa.st/1uj","short_description":"Improve your WordPress SEO: Write better content and have a fully optimized WordPress site using the Yoast SEO plugin.","description":"

Yoast SEO: the #1 WordPress SEO plugin

\n

Since 2008 Yoast SEO has helped millions of websites worldwide to rank higher in search engines.

\n

Yoast’s mission is SEO for Everyone. Our plugin’s users range from the bakery around the corner to some of the most popular sites on the planet.

\n

Yoast SEO Free contains everything that you need to manage your SEO, and the Yoast SEO Premium plugin and its extensions unlock even more tools and functionality.

\n

GET AHEAD OF THE COMPETITION

\n

To rank highly in search engines, you need to beat the competition. You need a better, faster, stronger website than the people who sell or do the same kinds of things as you.

\n

Yoast SEO is the most-used WordPress SEO plugin, and has helped millions of people like you to get ahead, and to stay ahead.

\n

TAKING CARE OF YOUR WORDPRESS SEO

\n

Yoast SEO is packed full of features, designed to help visitors and search engines to get the most out of your website. Some of our favourites are:

\n
    \n
  • Automated technical SEO improvements, like canonical URLs and meta tags.
  • \n
  • Advanced XML sitemaps; making it easy for Google to understand your site structure.
  • \n
  • Title and meta description templating, for better branding and consistent snippets in the search results.
  • \n
  • An in-depth Schema.org integration that will increase your chance of getting rich results, by helping search engines to understand your content.
  • \n
  • Full control over site breadcrumbs, so that users and search engines always know where they are.
  • \n
  • Faster loading times for your whole website, due to an innovative way of managing data in WordPress.
  • \n
  • [Premium] E-mail support for our Yoast SEO Premium users.
  • \n
  • [Premium] The possibility to expand Yoast SEO with the News SEO, Video SEO, Local SEO and WooCommerce SEO extensions.
  • \n
\n

WRITE KILLER CONTENT WITH YOAST SEO

\n

We know content is king, that’s why Yoast SEO is famous for its state-of-the-art content and SEO analysis. Yoast SEO gives you:

\n
    \n
  • SEO analysis: an invaluable tool while writing SEO-friendly content with the right (focus) keyphrases in mind.
  • \n
  • Readability analysis: ensures that humans and search engines can read and understand your content.
  • \n
  • Full language support for: English, German, French, Dutch, Spanish, Italian, Russian, Indonesian, Polish, Portuguese, Arabic, Swedish, Hebrew, Hungarian, Turkish, Czech, Norwegian and Slovak.
  • \n
  • A Google preview, which shows what your listings will look like in the search results. Even on mobile devices!
  • \n
  • Innovative Schema blocks for the WordPress block editor, so that your FAQ and HowTo content can be shown directly in the search results. Plus a breadcrumbs block to guide your users.
  • \n
  • [Premium] Internal linking blocks to easily improve the structure of your content. Easily add a table of contents block, a related links block, a subpages block, or siblings block! Plus, we’ll keep adding these easy-to-add blocks to improve your site structure.
  • \n
  • [Premium] Social previews to show you how your content will be shown on Twitter and Facebook. Plus: Social Appearance Templates to guarantee a consistent look.
  • \n
  • [Premium] The Insights tool that shows you what your text focuses on. This way you can keep your article in line with your keyphrases.
  • \n
  • [Premium] Optimize your content for synonyms and related keyphrases.
  • \n
  • [Premium] Optimize your article for different word forms of your keyphrases, as the singular and plural. But also different verb forms, synonyms, and related keyphrases. This makes for more natural content!
  • \n
  • [Premium] Automatic internal linking suggestions: write your article and get automatic suggested posts to link to!
  • \n
  • [Premium] An orphaned content filter to detect posts that have no links pointing towards them!
  • \n
  • [Premium] SEO workouts to make working on your site as easy as ABC. These SEO workflows will get your site into shape in no time!
  • \n
\n

KEEP YOUR SITE IN PERFECT SHAPE

\n

Whether you are an online entrepreneur, blogger or content creator, a developer, a (WordPress) SEO expert or a business owner, Yoast SEO helps you keep your website in perfect shape by:

\n
    \n
  • Tuning the engine of your website, so you can work on creating great content!
  • \n
  • Giving you cornerstone content and internal linking features to help you optimize your site structure in a breeze.
  • \n
  • Translating your content to structured data where possible, to help search engines understand your website.
  • \n
  • Helping you manage your team: with our SEO roles you can give colleagues access to specific sections of the Yoast SEO plugin.
  • \n
  • [Premium] Automatically creating redirects when URLs change or when pages are deleted, and providing tools to manage or create redirects.
  • \n
  • [Premium] Showing you social previews to manage the way your page is shared on social networks like Facebook and Twitter.
  • \n
\n

TRUST THE EXPERTS

\n

Yoast is powered by a team of expert developers, testers, software architects, and SEO consultants. They work constantly to stay at the cutting edge of WordPress SEO, and to improve the plugin with every release.

\n

Yoast SEO is the only WordPress SEO plugin made by world-renowned SEO experts.

\n

GET PREMIUM SUPPORT

\n

The Yoast team offers regular support on the WordPress.org forums. But we hope you understand that we prioritize our Premium customers. This one-on-one email support is available to people who have purchased Yoast SEO Premium.

\n

Did you know that Yoast SEO Premium contains a lot of extra features:

\n
    \n
  • A redirect manager that prevents “404: page not found” errors
  • \n
  • Optimize without worrying about over-optimization with intelligent word form recognition available in multiple languages.
  • \n
  • Internal linking blocks to structure your site easily.
  • \n
  • Internal linking suggestions while you’re writing.
  • \n
  • Preview your content to see what it will look like in the search results and when shared on social media using the Google preview and social preview.
  • \n
  • Cornerstone content checks that point search engines to your most important pages.
  • \n
  • Connect Yoast SEO to Zapier to easily create zaps that instantly share your published posts with 2000+ destinations like Twitter, Facebook, and much more.
  • \n
\n

If you are serious about your WordPress SEO, install the Yoast SEO Premium plugin! Costs a little, saves a lot of time!

\n

OUR EXTENSIONS TO FURTHER IMPROVE YOUR WORDPRESS SEO

\n

Check out these SEO add-ons by Yoast:

\n
    \n
  • Yoast Local SEO optimizes your website for a local audience.
  • \n
  • Yoast Video SEO ensures that Google understands what your video is about, increasing the chances of ranking in the video results.
  • \n
  • Yoast News SEO for news websites that want to improve their visibility and performance in Google News.
  • \n
  • WooCommerce SEO for all online shops that want to perform better in the search results and social media.
  • \n
\n

These extensions work fine with the free version of Yoast SEO. Of course, the premium extensions also include 24/7 support.

\n

Oh, don’t forget: our Yoast Academy is for all entrepreneurs, bloggers, and anyone who wants to learn more about optimizing websites, improving your WordPress SEO, and if you want to take your content to the next level!

\n

INTEGRATIONS

\n

Yoast SEO integrates seamlessly into a range of themes and plugins. We work particularly well with:

\n\n

BUG REPORTS

\n

Do you want to report a bug for Yoast SEO? Best to do so in the WordPress SEO repository on GitHub. Please note that GitHub is not a support forum and issues will be closed if they don’t meet the bug requirements.

\n

READ MORE

\n

Want more information on search engine optimization and Yoast SEO? Have a look at:

\n\n","download_link":"https://downloads.wordpress.org/plugin/wordpress-seo.17.0.zip","tags":{"content-analysis":"Content analysis","readability":"Readability","schema":"schema","seo":"seo","xml-sitemap":"xml sitemap"},"donate_link":"https://yoa.st/1up","icons":{"1x":"https://ps.w.org/wordpress-seo/assets/icon.svg?rev=2363699","2x":"https://ps.w.org/wordpress-seo/assets/icon-256x256.png?rev=2363699","svg":"https://ps.w.org/wordpress-seo/assets/icon.svg?rev=2363699"},"wporg":true},{"name":"Gutenberg","slug":"gutenberg","version":"11.4.1","author":"Gutenberg Team","author_profile":"https://profiles.wordpress.org/matveb","requires":"5.6","tested":"5.8","requires_php":"5.6","rating":42,"ratings":{"1":2266,"2":201,"3":126,"4":133,"5":700},"num_ratings":3426,"support_threads":57,"support_threads_resolved":10,"active_installs":300000,"downloaded":24406478,"last_updated":"2021-09-03 3:27pm GMT","added":"2017-06-16","homepage":"https://github.com/WordPress/gutenberg","short_description":"The Gutenberg plugin provides editing, customization, and site building features to WordPress. This beta plugin allows you to test bleeding-edge featu …","description":"

“Gutenberg” is a codename for a whole new paradigm in WordPress site building and publishing, that aims to revolutionize the entire publishing experience as much as Gutenberg did the printed word. Right now, the project is in the first phase of a four-phase process that will touch every piece of WordPress — Editing, Customization, Collaboration, and Multilingual — and is focused on a new editing experience, the block editor.

\n

The block editor introduces a modular approach to pages and posts: each piece of content in the editor, from a paragraph to an image gallery to a headline, is its own block. And just like physical blocks, WordPress blocks can added, arranged, and rearranged, allowing WordPress users to create media-rich pages in a visually intuitive way — and without work-arounds like shortcodes or custom HTML.

\n

The block editor first became available in December 2018, and we’re still hard at work refining the experience, creating more and better blocks, and laying the groundwork for the next three phases of work. The Gutenberg plugin gives you the latest version of the block editor so you can join us in testing bleeding-edge features, start playing with blocks, and maybe get inspired to build your own.

\n

Discover More

\n
    \n
  • \n

    User Documentation: See the WordPress Editor documentation for detailed docs on using the editor as an author creating posts and pages.

    \n
  • \n
  • \n

    Developer Documentation: Extending and customizing is at the heart of the WordPress platform, see the Developer Documentation for extensive tutorials, documentation, and API reference on how to extend the editor.

    \n
  • \n
  • \n

    Contributors: Gutenberg is an open-source project and welcomes all contributors from code to design, from documentation to triage. See the Contributor’s Handbook for all the details on how you can help.

    \n
  • \n
\n

The development hub for the Gutenberg project is on Github at: https://github.com/wordpress/gutenberg

\n

Discussion for the project is on Make Blog and the #core-editor channel in Slack, signup information.

\n","download_link":"https://downloads.wordpress.org/plugin/gutenberg.11.4.1.zip","tags":[],"donate_link":"","icons":{"1x":"https://ps.w.org/gutenberg/assets/icon-128x128.jpg?rev=1776042","2x":"https://ps.w.org/gutenberg/assets/icon-256x256.jpg?rev=1776042"},"wporg":true},{"name":"Setka Editor","slug":"setka-editor","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":"","ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":"","support_threads":"","support_threads_resolved":"","active_installs":"","downloaded":"","last_updated":"","added":"","homepage":"https://setka.io/","short_description":"

Setka Editor is the first WYSIWYG plugin with page builder functionality.

\n","description":"\n\n\n

Setka Editor is the first WYSIWYG plugin with page builder functionality.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2018/11/Setka-Banner-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2018/11/Setka-Banner-372x209.jpg","svg":""},"wporg":false}] \ No newline at end of file +[{"name":"Podcast Player – Your Podcasting Companion","slug":"podcast-player","version":"5.0.1","author":"vedathemes","author_profile":"https://profiles.wordpress.org/vedathemes","requires":"4.9","tested":"5.8","requires_php":"5.6","rating":98,"ratings":{"1":0,"2":1,"3":0,"4":2,"5":43},"num_ratings":46,"support_threads":8,"support_threads_resolved":6,"active_installs":8000,"downloaded":111293,"last_updated":"2021-08-09 4:59am GMT","added":"2019-02-06","homepage":"https://vedathemes.com/podcast-player/","short_description":"Showcase your podcast only using podcasting feed url. Use custom widget, shortcode or editor block…","description":"

Podcast Player provides an easy way to show and play your podcast episodes using podcasting feed url. It is a must have plugin for your podcast website. Give your listeners an easy access to all your episodes from any page or even from all the pages of your website.

\n

Podcast Player Pro | Documentation

\n\n

Podcast player key features

\n
    \n
  • Give your listeners an easy access to your podcast episodes.
  • \n
  • Display responsive podcast player just by entering your podcast’s feed url.
  • \n
  • Fetch all required details from feed url.
  • \n
  • Option to modify fetched details of your podcast.
  • \n
  • Option to Show or Hide individual player elements.
  • \n
  • Give your listener an option to share your podcast episodes.
  • \n
  • Ajax live search episodes from the podcast.
  • \n
  • It is possible to have multiple instances of podcast player on single page.
  • \n
  • Self adjusting layout according to width of the podcast player.
  • \n
\n

Podcast player pro features

\n
    \n
  • Professionally showcase your podcast using our unified player, episode list and grid templates.
  • \n
  • Use powerful filter options to choose which episodes or seasons you want to display on your website.
  • \n
  • Make your entire podcast catalogue easily available using our ajax approximate search feature.
  • \n
  • Add an audio message within your podcast episode.
  • \n
  • Add audio mp3 to your WordPress posts and display as podcast episodes.
  • \n
  • Show or hide specific elements and customize color and fonts to personalize your podcast display
  • \n
\n

Setup Podcast Player Widget

\n

Display searchable podcast episodes list on any widget area of your website.

\n

Minimum Setup

\n
    \n
  1. After activating the plugin, visit Appearance > Widgets in admin dashboard.
  2. \n
  3. Look for ‘Podcast player’ widget in left ‘Available Widgets’ section.
  4. \n
  5. Drag the widget to any available sidebar/widget area.
  6. \n
  7. Enter feed url in the appropriate field.
  8. \n
  9. Click [Save] button.
  10. \n
\n

Advanced Setup

\n
    \n
  1. After activating the plugin, visit Appearance > Widgets in admin dashboard.
  2. \n
  3. Look for ‘Podcast player’ widget in left ‘Available Widgets’ section.
  4. \n
  5. Drag the widget to any available sidebar/widget area.
  6. \n
  7. Enter feed url in the appropriate field.
  8. \n
  9. Optionally, click on “Change podcast content” button to customize feed’s auto fetched details.
  10. \n
  11. Optionally, click on “Show/Hide player items” button to show or hide player elements.
  12. \n
  13. Optionally, click on “Podcast player styling” button to customize player’s accent color.
  14. \n
  15. Optionally, click on “Sort & Filter” button to sort or filter podcast episodes.
  16. \n
  17. Click [Save] button.
  18. \n
\n

Setup Podcast Player Block

\n

Display searchable podcast episodes list on any post or page. Make sure you have not disabled WordPress latest block editor.

\n

Setup

\n
    \n
  1. After activating the plugin, visit any post or page’s edit screen.
  2. \n
  3. In main content area, click on ‘+’ icon to add a new block.
  4. \n
  5. Search for ‘Podcast Player’ block.
  6. \n
  7. Enter feed url in the appropriate field. A preview of your podcast player will appear.
  8. \n
  9. Click on the podcast player preview.
  10. \n
  11. Select appropriate options from the right sidebar to customize the player.
  12. \n
  13. Save or Update the post.
  14. \n
\n

Setup Podcast Player using shortcode

\n

Minimum Setup

\n
[podcastplayer feed_url ='']\n
\n
    \n
  1. feed_url – Your podcast feed url.
  2. \n
\n

Advanced Setup

\n
[podcastplayer feed_url ='' number='' podcast_menu='' cover_image_url='' hide_cover='true' hide_description='true' hide_subscribe='true' hide_search='true' hide_loadmore='true' hide_download='true' accent_color='#65b84f']Short Description [/podcastplayer]\n
\n
    \n
  1. feed_url: Your podcast feed url.
  2. \n
  3. number: Number of podcasts episodes to be displayed at a time.
  4. \n
  5. podcast_menu: Any previously created WordPress menu’s name OR ID OR slug. (optional)
  6. \n
  7. cover_image_url: Podcast’s cover image url. The image must be from your WP media library. (optional)
  8. \n
  9. header_default: (false/true) Show player header items by default
  10. \n
  11. hide_header: Hide player header items
  12. \n
  13. hide_title: (false/true) Show / Hide podcast Title in header info section
  14. \n
  15. hide_cover: (false/true) Show / Hide podcast cover image
  16. \n
  17. hide_description: (false/true) Show / Hide podcast description
  18. \n
  19. hide_subscribe: (false/true) Show / Hide podcast subscribe button.
  20. \n
  21. hide_search: (false/true) Show / Hide podcast search field.
  22. \n
  23. hide_author: (false/true) Show / Hide author/podcaster’s name.
  24. \n
  25. hide_content: (false/true) Show / Hide podcast episode’s content.
  26. \n
  27. hide_loadmore: (false/true) Show / Hide podcast load more button.
  28. \n
  29. hide_download: (false/true) Show/ Hide podcast episode download link.
  30. \n
  31. hide_social: (false/true) Show/ Hide podcast episode social sharing links.
  32. \n
  33. accent_color: Podcast player’s accent color (Color hex-code to be entered).
  34. \n
  35. sortby: Sort podcast episodes (sort_date_desc/sort_date_asc/sort_title_desc/sort_title_asc)
  36. \n
  37. filterby: Filter by any string in episode’s title
  38. \n
  39. list_default: (false/true) Display Episodes list by default on small screen
  40. \n
  41. hide_featured: (false/true) Show / Hide podcast episode featured image
  42. \n
  43. apple_sub: Apple podcast subscription link
  44. \n
  45. google_sub: Google podcast subscription link
  46. \n
  47. Short Description: Podcast short text description. (optional)
  48. \n
\n","download_link":"https://downloads.wordpress.org/plugin/podcast-player.5.0.1.zip","tags":{"feed-to-audio":"feed to audio","podcast":"podcast","podcaster":"podcaster","podcasting":"podcasting","rss-feed":"rss feed"},"donate_link":"","icons":{"1x":"https://ps.w.org/podcast-player/assets/icon-256x256.png?rev=2025683","2x":"https://ps.w.org/podcast-player/assets/icon-256x256.png?rev=2025683"},"wporg":true},{"name":"WPSSO Schema JSON-LD Markup | Google Rich Results, Rich Snippets, and Structured Data","slug":"wpsso-schema-json-ld","version":"4.18.0","author":"JS Morisset","author_profile":"https://profiles.wordpress.org/jsmoriss","requires":"5.0","tested":"5.8","requires_php":"7.0","rating":90,"ratings":{"1":5,"2":2,"3":1,"4":1,"5":54},"num_ratings":63,"support_threads":3,"support_threads_resolved":3,"active_installs":4000,"downloaded":282689,"last_updated":"2021-09-03 6:34pm GMT","added":"2016-02-14","homepage":"https://wpsso.com/extend/plugins/wpsso-schema-json-ld/","short_description":"Google Rich Results for Articles, Carousels, Events, FAQ pages, How-Tos, Local SEO, Products, Recipes, Ratings,…","description":"

Supports over 500 different Schema (aka Schema.org) types and sub-types:

\n

Google Rich Results with JSON-LD structured data for Articles, Carousels (aka Item Lists), Claim Reviews, Events, FAQ pages, How-Tos, Images, Local Business / Local SEO, Organizations, Products, Ratings, Recipes, Restaurants, Reviews, Video Objects, and much more.

\n

Reads your existing content, plugin data, and service API data:

\n

There’s no need to manually re-enter descriptions, titles, product information, and re-select images / videos like other SEO and Schema markup plugins.

\n

Provides comprehensive Schema JSON-LD markup for posts, pages, custom post types, terms (category, tags, etc.), custom taxonomies, user profile pages, search result pages, archive pages, and Accelerated Mobile Pages (AMP) pages – including image SEO, video SEO, local business, organization, publisher, person, author and co-authors, extensive e-Commerce product markup, product variations, product ratings, aggregate ratings, reviews, recipe information, event details, collection pages, profile pages, search pages, FAQ pages, item lists for Google’s Carousel Rich Results, and much more.

\n

Most complete Schema JSON-LD markup for WooCommerce products:

\n

Note that WooCommerce offers incomplete Schema markup for Google Rich Results by default. The WPSSO Core Premium plugin and this add-on provide a solution by offering complete product meta tags for Facebook / Pinterest and complete Schema product markup for Google Rich Results – including additional product images, product variations, product information (brand, color, condition, EAN, dimensions, GTIN-8/12/13/14, ISBN, material, MPN, size, SKU, volume, weight, etc), product reviews, product ratings, sale start / end dates, sale prices, pre-tax prices, VAT prices, shipping rates, shipping times, and much, much more.

\n

Fixes all Google Search Console and Schema Markup Validator (aka Google Structured Data Testing Tool) errors:

\n
    \n
  • A value for the headline field is required.
  • \n
  • A value for the image field is required.
  • \n
  • A value for the logo field is required.
  • \n
  • A value for the publisher field is required.
  • \n
  • The aggregateRating field is recommended.
  • \n
  • The brand field is recommended.
  • \n
  • The headline field is recommended.
  • \n
  • The image field is recommended.
  • \n
  • The mainEntityOfPage field is recommended.
  • \n
  • The review field is recommended.
  • \n
  • This Product is missing a global identifier (e.g. isbn, mpn or gtin8).
  • \n
  • No global identifier provided (e.g. gtin mpn isbn).
  • \n
  • Not a known valid target type for the itemReviewed property.
  • \n
  • And more…
  • \n
\n

Some Schema property values may require data from WPSSO Core Premium supported third-party plugins and service APIs.

\n

Google regularly updates and changes their Schema markup requirements – WPSSO JSON Premium customers can also open a Premium support ticket for timely assistance with any new Google testing tool errors.

\n

Users Love the WPSSO JSON Add-on

\n

★★★★★ – “Forget everything else this is the best schema plugin – Sincerely, we bought other plugins that we had to abandon due to the lack of important features, but with this [WPSSO JSON] we get all that we need – and our schema has more features than the competition!” – zuki305

\n

★★★★★ – “Tried three other plugins before this one – for our Woocommerce site, this was by far the best one. Thanks!” – EntoMarket

\n

★★★★★ – “Crazy good! This plugin is one of my favorites! JS aggressively develops and improves this suite of plugins, continuously improving and adding features – with great customer support to boot! Highly recommended to improve your SEO for all kinds of JSON schemas!” – mikegoubeaux

\n

★★★★★ – “This plugin is heaven sent. I know little about SSO and this has taken care of everything. The support makes this an even better plugin to have. Keep up the great work!” – kevanchetty

\n

WPSSO JSON Add-on Features

\n

Extends the features of the WPSSO Core plugin (required plugin).

\n

Provides accurate and comprehensive Schema JSON-LD markup for Google Rich Results (aka Rich Snippets) with Structured Data.

\n

Provides complete Schema ImageObject SEO markup with image information from the WordPress Media Library (name, alternateName, alternativeHeadline, caption, description, fileFormat, uploadDate, and more).

\n

Provides complete Schema VideoObject SEO markup with video information from WPSSO Core Premium service APIs (Facebook, Slideshare, Soundcloud, Vimeo, Wistia, YouTube) including the ’embedUrl’ and ‘contentUrl’ properties for Google.

\n

Provides Schema 1:1, 4:3, and 16:9 images for Google Rich Results (see the Google rich results search library for details).

\n

Provides Schema FAQPage and Question / Answer markup for the WPSSO FAQ Manager add-on.

\n

Includes Schema JSON-LD scripts from shortcodes and WordPress editor blocks in the Schema CreativeWork type and sub-types.

\n

Built-in support for AMP and AMP for WP plugins.

\n

Includes contributor markup for Co-Authors Plus authors and guest authors (WPSSO Core Premium plugin required).

\n

Supports additional custom product information and WooCommerce product attributes from the WPSSO Core Premium plugin:

\n
    \n
  • Product Availability
  • \n
  • Product Brand
  • \n
  • Product Color
  • \n
  • Product Condition
  • \n
  • Product Depth
  • \n
  • Product Fluid Volume
  • \n
  • Product GTIN-14
  • \n
  • Product GTIN-13 (EAN)
  • \n
  • Product GTIN-12 (UPC)
  • \n
  • Product GTIN-8
  • \n
  • Product GTIN
  • \n
  • Product ISBN
  • \n
  • Product Length
  • \n
  • Product Material
  • \n
  • Product MPN
  • \n
  • Product Price
  • \n
  • Product Size
  • \n
  • Product SKU
  • \n
  • Product Target Gender
  • \n
  • Product Type
  • \n
  • Product Weight
  • \n
  • Product Width
  • \n
\n

Provides Schema Product markup for Google price drop appearance in search results.

\n

Fixes common Google testing tool warnings like “aggregateRating field is recommended” and “review field is recommended”.

\n

Fixes Google testing tool warnings for supported WPSSO Core Premium e-commerce products, like “brand field is recommended”, “missing a global identifier”, etc.

\n

The WPSSO Schema JSON-LD Markup Standard add-on is designed to satisfy the requirements of most standard WordPress sites. If your content requires additional customization of some Schema properties for products, events, places / locations, recipes, etc., then you may want to get the WPSSO JSON Premium add-on for those additional features.

\n

[Premium] Includes additional customizable option values in the Document SSO metabox (shown based on the Schema Type selected):

\n
    \n
  • All Schema Types\n
      \n
    • Name (Title)
    • \n
    • Alternate Name
    • \n
    • Description
    • \n
    • Microdata Type URLs
    • \n
    • Same-As URLs
    • \n
    \n
  • \n
  • Creative Work Information\n
      \n
    • Is Part of URL
    • \n
    • Headline
    • \n
    • Full Text
    • \n
    • Keywords
    • \n
    • Language
    • \n
    • Family Friendly
    • \n
    • Copyright Year
    • \n
    • License URL
    • \n
    • Publisher (Org)
    • \n
    • Publisher (Person)
    • \n
    • Service Provider (Org)
    • \n
    • Service Provider (Person)
    • \n
    \n
  • \n
  • Event Information\n
      \n
    • Event Language
    • \n
    • Event Attendance
    • \n
    • Event Online URL
    • \n
    • Event Physical Venue
    • \n
    • Event Organizer (Org)
    • \n
    • Event Organizer (Person)
    • \n
    • Event Performer (Org)
    • \n
    • Event Performer (Person)
    • \n
    • Event Start (date, time, timezone)
    • \n
    • Event End (date, time, timezone)
    • \n
    • Event Offers Start (date, time, timezone)
    • \n
    • Event Offers End (date, time, timezone)
    • \n
    • Event Offers (name, price, currency, availability)
    • \n
    \n
  • \n
  • How-To\n
      \n
    • How-To Makes
    • \n
    • How-To Preparation Time
    • \n
    • How-To Total Time
    • \n
    • How-To Supplies
    • \n
    • How-To Tools
    • \n
    • How-To Steps (section name, section description, step name, direction text and image)
    • \n
    \n
  • \n
  • Job Posting Information\n
      \n
    • Job Title
    • \n
    • Hiring Organization
    • \n
    • Job Location
    • \n
    • Job Location Type
    • \n
    • Base Salary
    • \n
    • Employment Type
    • \n
    • Jpb Posting Expires
    • \n
    \n
  • \n
  • Movie Information\n
      \n
    • Cast Names
    • \n
    • Director Names
    • \n
    • Production Company
    • \n
    • Movie Runtime
    • \n
    \n
  • \n
  • Organization Information\n
      \n
    • Select an Organization
    • \n
    \n
  • \n
  • Person Information\n
      \n
    • Select a Person
    • \n
    \n
  • \n
  • Product Information (Additional)\n
      \n
    • Product Length (cm)
    • \n
    • Product Width (cm)
    • \n
    • Product Height (cm)
    • \n
    • Product Depth (cm)
    • \n
    • Product Fluid Volume (ml)
    • \n
    • Product GTIN-14
    • \n
    • Product GTIN-13 (EAN)
    • \n
    • Product GTIN-12 (UPC)
    • \n
    • Product GTIN-8
    • \n
    • Product GTIN
    • \n
    \n
  • \n
  • QA Page Information\n
      \n
    • QA Heading
    • \n
    \n
  • \n
  • Recipe Information\n
      \n
    • Recipe Cuisine
    • \n
    • Recipe Course
    • \n
    • Recipe Makes
    • \n
    • Cooking Method
    • \n
    • Preparation Time
    • \n
    • Cooking Time
    • \n
    • Total Time
    • \n
    • Recipe Ingredients
    • \n
    • Recipe Instructions
    • \n
    • Nutrition Information per Serving\n
        \n
      • Serving Size
      • \n
      • Calories
      • \n
      • Protein
      • \n
      • Fiber
      • \n
      • Carbohydrates
      • \n
      • Sugar
      • \n
      • Sodium
      • \n
      • Fat
      • \n
      • Saturated Fat
      • \n
      • Unsaturated Fat
      • \n
      • Trans Fat
      • \n
      • Cholesterol
      • \n
      \n
    • \n
    \n
  • \n
  • Review Information\n
      \n
    • Review Rating
    • \n
    • Rating Value Name
    • \n
    • Subject of the Review\n
        \n
      • Subject Webpage Type
      • \n
      • Subject Webpage URL
      • \n
      • Subject Same-As URL
      • \n
      • Subject Name
      • \n
      • Subject Description
      • \n
      • Subject Image ID or URL
      • \n
      • Claim Subject Information (for Claim Review)\n
          \n
        • Short Summary of Claim
        • \n
        • First Appearance URL
        • \n
        \n
      • \n
      • Creative Work Subject Information\n
          \n
        • C.W. Author Type
        • \n
        • C.W. Author Name
        • \n
        • C.W. Author URL
        • \n
        • C.W. Published Date
        • \n
        • C.W. Created Date
        • \n
        \n
      • \n
      • Book Subject Information\n
          \n
        • Book ISBN
        • \n
        \n
      • \n
      • Movie Subject Information\n
          \n
        • Movie Cast Names
        • \n
        • Movie Director Names
        • \n
        \n
      • \n
      • Product Subject Information\n
          \n
        • Product Brand
        • \n
        • Product Offers (name, price, currency, availability)
        • \n
        • Product SKU
        • \n
        • Product MPN
        • \n
        \n
      • \n
      • Software App Subject Information\n
          \n
        • Operating System
        • \n
        • Application Category
        • \n
        • Software App Offers (name, price, currency, availability)
        • \n
        \n
      • \n
      \n
    • \n
    \n
  • \n
  • Software Application Information\n
      \n
    • Operating System
    • \n
    • Application Category
    • \n
    \n
  • \n
\n

WPSSO Core Required

\n

WPSSO Schema JSON-LD Markup (WPSSO JSON) is an add-on for the WPSSO Core plugin.

\n","download_link":"https://downloads.wordpress.org/plugin/wpsso-schema-json-ld.4.18.0.zip","tags":{"rich-results":"rich results","rich-snippets":"rich snippets","schema-org":"schema.org","video-seo":"video seo","woocommerce":"woocommerce"},"donate_link":"","icons":{"1x":"https://ps.w.org/wpsso-schema-json-ld/assets/icon-128x128.png?rev=2480083","2x":"https://ps.w.org/wpsso-schema-json-ld/assets/icon-256x256.png?rev=2480083"},"wporg":true},{"name":"ShortPixel Image Optimizer","slug":"shortpixel-image-optimiser","version":"4.22.5","author":"ShortPixel","author_profile":"https://profiles.wordpress.org/shortpixel","requires":"4.2.0","tested":"5.8","requires_php":"5.6","rating":92,"ratings":{"1":54,"2":10,"3":8,"4":10,"5":544},"num_ratings":626,"support_threads":7,"support_threads_resolved":6,"active_installs":300000,"downloaded":6850963,"last_updated":"2021-08-31 5:54pm GMT","added":"2014-11-05","homepage":"https://shortpixel.com/","short_description":"Speed up your website & boost your SEO by compressing old & new images and PDFs. AVIF & WebP convert and optimize support.","description":"

A freemium, easy to use, comprehensive, stable and frequently updated image compression plugin supported by the friendly team that created it. 🙂

\n

Increase your website’s SEO ranking, number of visitors and ultimately your sales by optimising any image or PDF document on your website.
\nShortPixel is an easy to use, lightweight, install-and-forget-about-it image optimization plugin that can compress all your past images and PDF documents with a single click. New images are automatically resized/rescaled and optimized on the fly, in the background. It’s also compatible with any gallery, slider or ecommerce plugin.

\n

Ready for a quick DEMO? Test our plugin here.
\nOr you can create a staging copy of your site using WP Staging and test it there.

\n

Short Pixel uses minimal resources and works well with any shared, cloud, VPS or dedicated web hosting. It can optimize any image you have on your website even the images that aren’t listed in Media Library like those in galleries like NextGEN, Modula or added directly via FTP!

\n

Both lossy and lossless image compression are available for the most common image types (JPG, PNG, GIF, WebP and AVIF) plus PDF files.
\nWe also offer glossy JPEG compression which is a very high quality lossy optimization algorithm. Specially designed for photographers!
\nOptimized images mean better user experience, better PageSpeed Insights or GTmetrix results, better Google PageRank and more visitors.

\n

Make an instant image compression test of your site or compress some images to test our optimization algorithms.

\n

Why is ShortPixel the best choice when it comes to image optimization or PDF compression?

\n
    \n
  • popular plugin with over 300,000 active installations – according to WordPress
  • \n
  • compress JPG (and its variations JPEG, JPEG 2000, JPEG XR), PNG, GIF (still or animated) images and also PDF documents
  • \n
  • option to convert any JPEG, PNG or GIF (even animated ones!) to WebP and AVIF for more Google love. How to enable WebP?. What is AVIF and why is it good?.
  • \n
  • option to automatically convert PNG to JPG if that will result in smaller images. Ideal for large images in PNG format
  • \n
  • option to include the next generation images (WebP and AVIF) into the front-end pages by using the <picture> tag instead of <img>, independent from generating them through the plugin
  • \n
  • compatible with WP Retina 2x – all retina images are automatically compressed. How to benefit from Retina displays?
  • \n
  • optimize thumbnails as well as featured images. You can also select individual thumbnails to exclude from optimization
  • \n
  • ability to optimize any image on your site including images in NextGEN Gallery and any other image galleries or sliders
  • \n
  • option to scale images down, with 2 different options, which is very useful to automatically resize large images. This applies to the featured images and there is no need for additional plugins like Imsanity
  • \n
  • CMYK to RGB conversion
  • \n
  • skip already optimized images
  • \n
  • 24h stellar support (24/7) directly from developers.
  • \n
  • easily test lossy/glossy/lossless versions of the images with a single click in your Media Library
  • \n
  • great for photographers: keep or remove EXIF data from your images, compress photos with lossless option
  • \n
  • works well with both HTTPS and HTTP websites
  • \n
  • uses progressive JPEG for larger images in order to speed up the image display
  • \n
  • you can run ShortPixel plugin on multiple websites or on a multisite with a single API Key
  • \n
  • it is safe to test and use the plugin: all the original images are by default saved in a local backup that can be restored with a click, either one by one or in bulk
  • \n
  • ‘Bulk’ optimize all the existing images in Media Library or in any gallery with one click
  • \n
  • works great for eCommerce websites using WooCommerce or other plugins
  • \n
  • works great with NextGEN gallery, Foo Gallery and any other galleries and sliders
  • \n
  • compatible with WP Engine hosted websites and all the major hosting providers
  • \n
  • compatible with WPML and WPML Media plugins
  • \n
  • no file size limit
  • \n
  • integrates with Gravity Forms post_image field type optimizing the images upon upload
  • \n
  • compatible with watermarking plugins
  • \n
  • option to deactivate auto-optimizing images on upload
  • \n
  • no credits are used for the images that are optimised less that 5%
  • \n
  • direct integration with CloudFlare, either by using an API Key or a Token
  • \n
  • 30 days optimization report with all image details and overall statistics
  • \n
  • We are GDPR compliant! Read more.
  • \n
  • free optimization credits for non-profits, contact us for details
  • \n
\n

How much does it cost?
\nShortPixel comes with 100 free credits/month and additional credits can be bought for as little as $4.99 for 5,000 image credits.
\nCheck out our prices.

\n
\n

Testimonials:
\n ★★★★★ A Super Plugin works very well 62% reduction overall. robertvarns
\n ★★★★★ The secret sauce for a WordPress website. mark1mark
\n ★★★★★ A must have plugin, great support! ElColo13
\n ★★★★★ Excellent Plugin! Even Better Customer Service! scaliendo
\n ★★★★★ Great image compression, solid plugin, equally great support. matters1959
\n more testimonials

\n
\n\n

Help us spread the word by recommending ShortPixel to your friends and collect 100 lifetime monthly additional image credits for each referred active user. Make money by promoting a great plugin with our 30% commission affiliate program.

\n

Other plugins by ShortPixel

\n\n

Get in touch!

\n\n

Actions and Filters for Developers

\n

The ShortPixel Image Optimiser plugin calls the following actions and filters:

\n
do_action( 'shortpixel_image_optimised', $post_id );\n
\n

upon successful optimization;

\n
do_action(\"shortpixel_before_restore_image\", $post_id);\n
\n

before restoring an image from backup;

\n
do_action(\"shortpixel_after_restore_image\", $post_id);\n
\n

after succesful restore;

\n
apply_filters(\"shortpixel_backup_folder\", $backup_folder, $main_file_path, $sizes);\n
\n

just before returning the ShortPixel backup folder, usually /wp-content/uploads/ShortpixelBackups. The $sizes are the sizes array from metadata;

\n
apply_filters('shortpixel_image_exists', file_exists($path), $path, $post_id);\n
\n

post ID is not always set, only if it’s an image from Media Library;

\n
apply_filters('shortpixel_image_urls', $URLs, $post_id);\n
\n

filters the URLs that will be sent to optimisation, $URLs is a plain array;

\n
apply_filters('shortpixel/db/chunk_size', $chunk);\n
\n

the $chunk is the value ShortPixel chooses to use as number of selected records in one query (based on total table size), some hosts work better with a different value;

\n
apply_filters('shortpixel/backup/paths', $PATHs, $mainPath);\n
\n

filters the array of paths of the images sent for backup and can be used to exclude certain paths/images/thumbs from being backed up, based on the image path. $mainPath is the path of the main image, while $PATHs is an array with all files to be backed up (including thumbnails);

\n
apply_filters('shortpixel/settings/image_sizes', $sizes);\n
\n

filters the array ($sizes) of image sizes which can be excluded from processing (displayed in the plugin Advanced settings).

\n

In order to define custom thumbnails to be picked up by the optimization you have two options, both comma separated defines:

\n
define('SHORTPIXEL_CUSTOM_THUMB_SUFFIXES', '_tl,_tr');\n
\n

will handle custom thumbnails like image-100x100_tl.jpg;

\n
define('SHORTPIXEL_CUSTOM_THUMB_INFIXES', '-uae');\n
\n

will handle custom thumbnails like image-uae-100×100.jpg;

\n
define('SHORTPIXEL_USE_DOUBLE_WEBP_EXTENSION', true);\n
\n

will tell the plugin to create double extensions for the WebP image counterparts, for example image.jpg.webp for image.jpg;

\n
define(\"SHORTPIXEL_NOFLOCK\", true);\n
\n

don’t use flock queue, only activate this when you have flock() denied errors on your installation;

\n
define(\"SHORTPIXEL_EXPERIMENTAL_SECURICACHE\", true);\n
\n

adds timestamps to URLS, to prevent hitting the cache. Useful for persistent caches.

\n

Hide the Cloudflare settings by defining these constants in wp-config.php:

\n
define('SHORTPIXEL_CFTOKEN', 'the Cloudflare API token that has Purge Cache right');\ndefine('SHORTPIXEL_CFZONE', 'The Zone ID from the domain settings in Cloudflare');\n
\n

Hide the WSO banner in the settings by defining this constant in wp-config.php:

\n
define('SHORTPIXEL_NO_BANNER', true);\n
\n

Alternatively, you can use this filter in your theme’s functions.php file:

\n
add_filter('shortpixel/settings/no_banner', true);\n
\n","download_link":"https://downloads.wordpress.org/plugin/shortpixel-image-optimiser.4.22.5.zip","tags":{"compressor":"compressor","convert-webp":"convert webp","image-optimization":"image optimization","optimize-images":"optimize images","resize":"resize"},"donate_link":"","icons":{"1x":"https://ps.w.org/shortpixel-image-optimiser/assets/icon-128x128.png?rev=1038819","2x":"https://ps.w.org/shortpixel-image-optimiser/assets/icon-256x256.png?rev=1038819"},"wporg":true},{"name":"Theme Kit for Twenty Twenty-One & Twenty Twenty (Customization, Gutenberg Blocks, Templates) – Twentig","slug":"twentig","version":"1.3.5","author":"Twentig","author_profile":"https://profiles.wordpress.org/twentig","requires":"5.5","tested":"5.8","requires_php":"5.6","rating":100,"ratings":{"1":0,"2":0,"3":0,"4":2,"5":104},"num_ratings":106,"support_threads":30,"support_threads_resolved":29,"active_installs":10000,"downloaded":138963,"last_updated":"2021-08-10 11:02am GMT","added":"2019-05-29","homepage":"https://twentig.com","short_description":"Supercharge your WordPress theme (Twenty Twenty-One & Twenty Twenty) with customization options, enhanced Gutenberg blocks,…","description":"

The easy way to build a beautiful website.

\n

Twentig helps you customize the default WordPress theme (Twenty Twenty-One and Twenty Twenty) the way you want with Google Fonts, colors, custom layouts, and many more options.

\n

With enhanced Gutenberg blocks, pre-designed block templates, and starter websites, you’ve got everything you need to build stunning pages that look great on any device — no coding or design skills needed.

\n
\n

“Twentig is a plugin that essentially gives superpowers to the default theme.” — Justin Tadlock, WP Tavern

\n
\n

Customize the most popular WordPress theme. Your way.

\n

Twentig offers powerful features to customize the Twenty Twenty-One and Twenty Twenty themes — making it easier than ever to create your own professional website.

\n

Advanced theme customization. From post grid to sidebar to sticky header to footer layout, our plugin provides endless ways to enhance your WordPress theme. Change the look and feel of your website by customizing the fonts (Google Fonts), colors, global styles, 404 page, and more.

\n

Custom page templates. Control the look of your entire page with our page templates. Easily remove the page title, header, footer, or set a transparent header. Now you can use Gutenberg blocks to create a custom hero, landing page, coming soon page, and more.

\n

Tailored design. Twentig brings design improvements to the default WordPress theme. Our additional block settings and pre-designed block templates are specially built for it — so it’s simple to make beautiful pages with Gutenberg blocks.

\n

Start with a pre-built website.

\n

Instead of starting from scratch, you can quickly import one of Twentig’s starter websites crafted by award-winning designers.

\n

The simple way to import starter websites. Choose from a variety of starter websites and seamlessly load them in a few seconds in the Customizer. Preview and customize your theme any way you like before publishing it to your live site.

\n

Flexible import. Twentig lets you import full websites (Customizer settings, menus, widgets, and pages built with Gutenberg blocks). You can also only import what you need, be it the styling or the pages, on a fresh install or an existing website.

\n

Check out the starter websites to see the power and flexibility of Twentig.

\n

Do more with Gutenberg blocks.

\n

Twentig enhances the existing Gutenberg blocks — taking the WordPress block editor to a new level of design and creativity.

\n

Block customization made easy. We’ve added the right amount of features to the Gutenberg core blocks. So you can easily customize your blocks to fit your needs with just a few clicks.

\n

Powerful Gutenberg block features. Twentig provides alternative styles, advanced block settings, margin controls, and CSS classes. From columns style to group shape divider to typography settings, you have the best tools to customize the Gutenberg blocks and build gorgeous pages.

\n

Build your pages with ready-to-use templates.

\n

Twentig brings hundreds of pre-designed block patterns and page templates — making it easier and faster than ever to create stunning pages.

\n

Flexible block templates. Choose from a variety of versatile block patterns and page templates that you can mix and match to fit your project. Our block template library is designed to enable a wide range of uses and endless design possibilities.

\n

Professional design. Our templates are responsive and give your pages a professional look right from the start — no coding or design skills needed.

\n

Twentig features list

\n

Check out the screenshots to see how Twentig can transform your theme and the Gutenberg blocks.

\n

ADDITIONAL THEME OPTIONS

\n

Header

\n
    \n
  • Header layouts
  • \n
  • Sticky header
  • \n
  • Header width
  • \n
  • Header decoration
  • \n
  • Additional elements: search bar, social icons, button
  • \n
  • Logo width
  • \n
  • Custom logo for transparent header
  • \n
  • Menu link style
  • \n
  • Option to display the burger menu on tablet
  • \n
\n

Footer

\n
    \n
  • Footer layouts
  • \n
  • Footer widgets layout
  • \n
  • Footer width
  • \n
  • Custom copyright and remove “Powered by WordPress”
  • \n
  • Social icons
  • \n
\n

Site Layout

\n
    \n
  • Text width
  • \n
  • Wide width (Twenty Twenty-One theme)
  • \n
  • Site width to create a boxed layout site (Twenty Twenty-One theme)
  • \n
\n

Blog Posts Page

\n
    \n
  • Option to display the page title (Twenty Twenty-One theme)
  • \n
  • Blog layouts: stack, post grid, post grid card
  • \n
  • Blog sidebar (Twenty Twenty-One theme)
  • \n
  • Number of columns for post grid layouts
  • \n
  • Featured image options
  • \n
  • Blog content options
  • \n
  • Blog meta options
  • \n
  • Pagination style (Twenty Twenty-One theme)
  • \n
\n

Single Blog Post

\n
    \n
  • Featured image and post title layouts
  • \n
  • Blog sidebar (Twenty Twenty-One theme)
  • \n
  • Option to display the manual excerpt below the title
  • \n
  • Single post meta options
  • \n
  • Post navigation layout (Twenty Twenty theme)
  • \n
  • Hide comments section
  • \n
\n

Typography & Colors

\n
    \n
  • Google Fonts options (curated collection and custom Google Fonts)
  • \n
  • Google Fonts pairings and Google Fonts presets
  • \n
  • Font settings
  • \n
  • Color options
  • \n
\n

Pages

\n
    \n
  • Custom page templates: remove the page title, header, and footer, or set a transparent header
  • \n
  • Featured image and page title layouts
  • \n
\n

Custom 404 Page

\n
    \n
  • Option to assign any page as the 404 page
  • \n
\n

Additional Settings

\n
    \n
  • Minimal style for links (Twenty Twenty-One theme)
  • \n
  • Button style
  • \n
  • Separator style
  • \n
  • Social icons style (Twenty Twenty theme)
  • \n
\n

ADDITIONAL GUTENBERG BLOCK SETTINGS

\n
    \n
  • Gutenberg core blocks: top margin and bottom margin
  • \n
  • Group: shadow, border, shape divider, full height
  • \n
  • Columns: gutter, responsive layout, columns style (card, border), text alignment, stretched link
  • \n
  • Media & Text: styles (shadow, overlap), responsive layout, reverse stack order, stretched link, full height
  • \n
  • Cover: styles (shadow, inner border), stretched link, hover effect
  • \n
  • Heading: typography options, decoration
  • \n
  • Paragraph: wide width, typography options
  • \n
  • List: styles (dash, checkmark, arrow, border, no bullet, inline), typography options, spacing
  • \n
  • Image: styles (rounded, shadow, frame, border), image filter
  • \n
  • Gallery: stack variation, styles (rounded, frame), fixed width columns, image aspect ratio, gutter, responsive layout, caption size, border, image filter
  • \n
  • YouTube, Vimeo, SoundCloud, and Video blocks: style (frame)
  • \n
  • Latest Posts: styles (card, border), image aspect ratio, heading size, stretched link, text alignment
  • \n
  • Social Icons: hover effect
  • \n
  • Quote: additional styles
  • \n
  • Pullquote: additional styles
  • \n
  • Table: styles (border, inner border), vertical alignment
  • \n
  • Separator: style (short line), responsive visibility
  • \n
  • Spacer: responsive visibility
  • \n
\n

GUTENBERG TEMPLATE LIBRARY

\n

Hundreds of Gutenberg block patterns grouped by following categories:

\n
    \n
  • Columns
  • \n
  • Text Columns
  • \n
  • Text and Image
  • \n
  • Text
  • \n
  • Hero
  • \n
  • Cover
  • \n
  • Call to Action
  • \n
  • List
  • \n
  • Numbers, Stats
  • \n
  • Gallery
  • \n
  • Video, Audio
  • \n
  • Latest Posts
  • \n
  • Contact
  • \n
  • Team
  • \n
  • Testimonials
  • \n
  • Logos, Clients
  • \n
  • Pricing
  • \n
  • FAQ
  • \n
  • Events, Schedule
  • \n
\n

Dozens of pre-designed page templates grouped by following categories:

\n
    \n
  • Homepage
  • \n
  • About
  • \n
  • Services
  • \n
  • Contact
  • \n
  • Single Page
  • \n
\n

Get more

\n\n

Enjoying Twentig?

\n\n","download_link":"https://downloads.wordpress.org/plugin/twentig.1.3.5.zip","tags":{"gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","templates":"templates","theme":"theme","twenty-twenty-one":"twenty-twenty-one"},"donate_link":"https://www.paypal.com/donate?hosted_button_id=JTBTPQAFEA94E","icons":{"1x":"https://ps.w.org/twentig/assets/icon.svg?rev=2569439","2x":"https://ps.w.org/twentig/assets/icon-256x256.png?rev=2569439","svg":"https://ps.w.org/twentig/assets/icon.svg?rev=2569439"},"wporg":true},{"name":"Custom Post Type UI","slug":"custom-post-type-ui","version":"1.9.2","author":"WebDevStudios","author_profile":"https://profiles.wordpress.org/williamsba1","requires":"5.5","tested":"5.7.2","requires_php":"5.6","rating":94,"ratings":{"1":12,"2":3,"3":6,"4":9,"5":202},"num_ratings":232,"support_threads":66,"support_threads_resolved":29,"active_installs":1000000,"downloaded":8717067,"last_updated":"2021-06-17 2:40am GMT","added":"2010-02-26","homepage":"https://github.com/WebDevStudios/custom-post-type-ui/","short_description":"Admin UI for creating custom post types and custom taxonomies for WordPress","description":"

Custom Post Type UI provides an easy to use interface for registering and managing custom post types and taxonomies for your website.

\n

While CPTUI helps solve the problem of creating custom post types, displaying the data gleaned from them can be a whole new challenge. That’s why we created Custom Post Type UI Extended. View our Layouts page to see some examples that are available with Custom Post Type UI Extended.

\n

Official development of Custom Post Type UI is on GitHub, with official stable releases published on WordPress.org. The GitHub repo can be found at https://github.com/WebDevStudios/custom-post-type-ui. Please use the Support tab for potential bugs, issues, or enhancement ideas.

\n

Pluginize was launched in 2016 by WebDevStudios to promote, support, and house all of their WordPress products. Pluginize is not only creating new products for WordPress all the time, like CPTUI Extended, but also provides ongoing support and development for WordPress community favorites like CMB2 and more.

\n","download_link":"https://downloads.wordpress.org/plugin/custom-post-type-ui.zip","tags":{"cms":"cms","cpt":"cpt","custom-post-types":"custom post types","post":"post","types":"types"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=3084056","icons":{"1x":"https://ps.w.org/custom-post-type-ui/assets/icon-128x128.png?rev=2549362","2x":"https://ps.w.org/custom-post-type-ui/assets/icon-256x256.png?rev=2549362"},"wporg":true},{"name":"Flex Posts – Widget and Gutenberg Block","slug":"flex-posts","version":"1.8.1","author":"Tajam","author_profile":"https://profiles.wordpress.org/tajam","requires":"5.2","tested":"5.8","requires_php":false,"rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":17},"num_ratings":17,"support_threads":8,"support_threads_resolved":3,"active_installs":3000,"downloaded":24490,"last_updated":"2021-07-29 10:41am GMT","added":"2018-05-10","homepage":"https://tajam.id/flex-posts/","short_description":"A widget to display posts with thumbnails in various layouts. Fits nicely in any widget…","description":"

Flex Posts is a widget to display posts in various different layouts. It is useful for a news site where you need to display a lot of posts in a page.

\n

The widget is responsive so you can place it in any widget area. The widget content will adapt based on the width of its container. In a narrow area like standard sidebar, posts will be displayed vertically, but in a wider area, posts will be displayed in 2 or 3 columns depends on the container’s width.

\n

Widget Settings

\n
    \n
  • Title: Set the widget title. Leave it empty to hide the title section.
  • \n
  • Title URL: Set the title link url. Leave it empty to disable link in the title.
  • \n
  • Layout: Select a widget layout, from layout 1 to 4.
  • \n
  • Post type: Select the post type. Options include: Post, Page, custom post types if available, and any.
  • \n
  • Category: Select a category for the posts, or choose All Categories to disable this filter.
  • \n
  • Tag(s): Set a post tag (using the tag slug). You can also use comma separated value for multiple tags. Prepending a tag with a hyphen will exclude posts matching that tag. Eg, featured, -video will show posts tagged with featured but not video.
  • \n
  • Order by: Set the order in which the posts will be displayed. Options include: Newest, Oldest, Most Commented, Alphabetical, Random, Modified Date.
  • \n
  • Number of posts to show: Set the number of posts displayed.
  • \n
  • Number of posts to skip: Set the number of posts to displace or pass over.
  • \n
  • Show image on: Select in which posts the image will be displayed. Options include: All posts, First post only, or none.
  • \n
  • Image size: Select image size from registered image sizes.
  • \n
  • Show post title: Choose to show or hide the post title.
  • \n
  • Show categories: Choose to show or hide the categories.
  • \n
  • Show author: Choose to show or hide the author.
  • \n
  • Show date: Choose to show or hide the date.
  • \n
  • Show comments number: Choose to show or hide the comments number.
  • \n
  • Show excerpt: Choose to show or hide the excerpt
  • \n
  • Excerpt length: Set the number of words for the excerpt.
  • \n
  • Show read more link: Choose to show or hide the Read More link.
  • \n
  • Read more text: Set the text for the read more link. You can leave it empty to use the default text Read More.
  • \n
  • Show pagination: Choose to show or hide the pagination links.
  • \n
  • Additional class(es): Set a custom class for the widget container. You can use spaces to separate multiple classes.
  • \n
\n

Gutenberg Block

\n

Since version 1.1.0, Flex Posts also includes a gutenberg block. You can add the widget directly into the post/page content with the WP 5.0 block editor.

\n

Demo

\n

Please visit the live demo here: Flex Posts Demo

\n

Requirements

\n

This plugin has been tested and works with at least PHP 5.3 installed in your environment. But we strongly recommend you to use the latest PHP version, as using older versions may expose you to security vulnerabilities.

\n","download_link":"https://downloads.wordpress.org/plugin/flex-posts.zip","tags":{"category-posts":"category posts","grid":"grid","magazine":"magazine","news":"news","responsive":"responsive"},"donate_link":"https://tajam.id/","icons":{"1x":"https://ps.w.org/flex-posts/assets/icon-128x128.png?rev=1871802"},"wporg":true},{"name":"YARPP – Yet Another Related Posts Plugin","slug":"yet-another-related-posts-plugin","version":"5.27.4","author":"YARPP","author_profile":"https://profiles.wordpress.org/jeffparker","requires":"3.7","tested":"5.8","requires_php":"5.3","rating":94,"ratings":{"1":33,"2":2,"3":14,"4":45,"5":625},"num_ratings":719,"support_threads":28,"support_threads_resolved":12,"active_installs":100000,"downloaded":6483750,"last_updated":"2021-08-25 5:56pm GMT","added":"2008-01-02","homepage":"https://yarpp.com/","short_description":"The best WordPress plugin for displaying related posts. Simple and flexible, with a powerful proven…","description":"

Related Posts Plugin for WordPress

\n

Yet Another Related Posts Plugin (YARPP) is a professionally maintained, highly customizable, performant and feature rich plugin that displays pages, posts, and custom post types related to the current entry. YARPP introduces your visitors to other relevant content on your site — boosting visitor engagement, time on site and SEO. Related Posts can increase your pageviews up to 10%. Simply install, activate and watch your sessions and pageviews increase.

\n

Key Features

\n
    \n
  • An advanced and versatile algorithm: Using a customizable algorithm considering post titles, content, tags, categories, and custom taxonomies, YARPP finds related content from across your site
  • \n
  • Caching: Inbuilt cache makes subsequent queries super efficient and fast
  • \n
  • Custom Templates and Styles: Use a pre-built list or thumbnail template, or use the YARPP custom templating system for 100% control of how results are styles and displayed
  • \n
  • Flexible with a full range of placement options, including:\n\n
  • \n
  • Works with all languages, including those with full-width (double-byte) characters and those that don’t use spaces between words
  • \n
  • Custom post type and taxonomy support
  • \n
  • WordPress Multisite support
  • \n
  • bbPress forums support
  • \n
  • WooCommerce support
  • \n
  • Professionally maintained and supported with regular updates
  • \n
\n

YARPP Algorithm Explained

\n

\n

Contribute: Translate YARPP

\n

YARPP is available for translation directly on WordPress.org. Please check out the official Translator Handbook.

\n

Wide Support

\n

YARPP is the most popular and the highest rated Related Posts Plugin for WordPress. With your support, this plugin always strives to be the best WordPress plugin for Content Discovery and Related Posts.

\n

✔ Over 10 years of development
\n✔ Over 6 million downloads
\n✔ Translated into more than a dozen languages
\n✔ Professionally maintained and actively supported with regular updates
\n✔ Works with all languages

\n

YARPP works best with PHP 5.3 or greater, MySQL 5.6 or greater OR MariaDB 10.1 or greater, and WordPress 3.7 or greater. See the FAQ for answers to common questions.

\n","download_link":"https://downloads.wordpress.org/plugin/yet-another-related-posts-plugin.5.27.4.zip","tags":{"contextual-related-posts":"contextual related posts","posts":"posts","related-posts":"related posts","seo":"seo","similar-posts":"similar posts"},"donate_link":"https://yarpp.com","icons":{"1x":"https://ps.w.org/yet-another-related-posts-plugin/assets/icon-128x128.png?rev=2549977","2x":"https://ps.w.org/yet-another-related-posts-plugin/assets/icon-256x256.png?rev=2549977"},"wporg":true},{"name":"Superb WordPress Table (SEO Optimized Tables With Schema)","slug":"superb-tables","version":"1.0.8","author":"SuPlugins","author_profile":"https://profiles.wordpress.org/suplugins","requires":"3.0.1","tested":"5.7.2","requires_php":"5.2.4","rating":80,"ratings":{"1":0,"2":1,"3":0,"4":0,"5":2},"num_ratings":3,"support_threads":1,"support_threads_resolved":1,"active_installs":4000,"downloaded":33932,"last_updated":"2021-05-26 8:49pm GMT","added":"2019-03-05","homepage":"https://superbthemes.com/plugins/superb-tables/","short_description":"Responsive & SEO Optimized tables. Get your Google Featured Snippets. Different table designs, table shortcodes & lightweight code.","description":"

Responsive & SEO Optimized tables. Get your Google Featured Snippets. Different table designs, table shortcodes & lightweight code.

\n

Click here to view the demo!

\n

Features

\n
    \n
  • Table Shortcodes
  • \n
  • Multiple Color Schemes
  • \n
  • Use Themes Own Table Design
  • \n
  • Schema Markup (Micro Data)
  • \n
  • Create Unlimited Tables
  • \n
  • Create Unlimited Rows
  • \n
  • Create unlimited Columns
  • \n
  • SEO-friendly Tables With Schema markup
  • \n
  • Purple Color Scheme
  • \n
  • Black/White Color Scheme
  • \n
  • Swap around on columns & rows with drag n’ drop
  • \n
  • Delete Tables & Remove Them From Your Database
  • \n
  • Gives you a better chance to get Google Featured Snippets
  • \n
  • Friendly User Support)
  • \n
  • GDPR Compliant
  • \n
  • W3C Valid Code
  • \n
  • WYSIWYG Functionality Editor
  • \n
\n

Configuring the plugin

\n

Once you’ve installed the plugin, check the left sidebar, and you will notice the Superb Table section. Click on it, and you can now create your first table. Just click on the Add New Table button.

\n

Feel free to add as many columns and rows as you want—inserting rows and columns is extremely easy.

\n

You have a few options to make your table stand apart. First, choose one of the three color schemes: standard, purple, or black. Second, choose your table design: default or custom. Block, left, and inline-block are the floating modes for your table. Finally, enable or disable the full width of the table.

\n

Once you finish your table, name it and save it. All you have to do now is to copy the shortcode and paste wherever you want, you can for example embed it in the Gutenberg Shortcode Block! (It works in the classic WordPress editor too)

\n

Consider purchasing our premium version for $11 to unlock more features!

\n

Why use a HTML table

\n

Displaying data within a comparison table is beneficial for not only readers but also content creators. A table does a better job than long paragraphs of text, underlined phrases, and bulleted lists. It shows a lot of information side by side in a concise format. Bloggers and content creators should create tables and insert the data. There’s no need to search for breathtaking expressions, cool descriptions, or digestible lists of items. It’s just pure data, and everyone is happy with this situation. You can read our full guide on How to Add a Table to Your WordPress Website with Superb Tables.

\n

Responsive Tables

\n

We developed Superb Tables mobile friendly by taking responsiveness into account, and as a result, you can make a WordPress table responsive by using our plugin. The tables are fully responsive regardless of the number of rows and columns. The plugin works on all mobile devices and tablets (iPhone, Android etc.). The plugin works with AMP.

\n

SEO Friendly WordPress Tables With Schema Markup

\n

“Schema markup“ and “featured snippets“ are two interconnected terms that are being used by more and more bloggers, SEO practitioners, and developers. Have you noticed that Google now provides complex answers in the form of lists, tables, paragraphs, or videos directly on the results page? Those are featured snippets.

\n

Moz claims that 23% of all search results include a featured snippet—a descriptive box displayed on the search results page providing information for your query. It may include paragraphs, lists, videos, or tables. You have to consider featured snippets when choosing a table plugin—can it help Google generate a featured snippet from the data within your table?

\n

We developed Superb Tables with featured snippets in mind, and you can use the plugin worry-free. We used schema markup, which is the code that helps search engine bots generate snippets from your content, including tables. It’s a great way for affiliate websites and blogs to promote their content.

\n

You must use WordPress tables with schema markup to get featured snippets on search engines, and Superb Tables is a reliable solution in this respect.

\n

Add Tables everywhere & use them for Any Purpose

\n

You can insert the SEO optimised tables with microdata everywhere through the shortcode. For example in a popup, widgets, Gutenberg blocks, email newsletter sent from your WordPress website. You can also insert it on any post or page, even category pages, blog feed, search page and your 404 page! The plugin is made for affiliates marketers and affiliate websites, having a good SERP rank in Google and Bing is critical. When you’re looking to improve your ranking then all of your plugins must be SEO optimized, otherwise it’s gonna be hard to create monetization through ads programs such as AdSense and Amazon Associates Program.

\n

We know that business is important for any modern blog or affiliate marketing website that’s looking to make a revenue from it. Remember to use HTTPS (SSL) on your website, a CDN and lightweight stats tracking tools such as Google Analytics to better your SEO as well.

\n

Guide to creating your Superb Tables

\n
    \n
  1. In the wordpress admin panel, go to the sidebar and click ‘Superb Tables’.
  2. \n
  3. Click the green ‘Add new table’ in the top left corner
  4. \n
  5. Fill in your table data, click ‘Save’
  6. \n
  7. Click ‘Superb Tables’ in the left sidebar and copy paste the ‘Table Shortcode’
  8. \n
  9. Insert the Table Shortcode (For example [spbtbl_sc id=1] ) in a post, page, widget or in HTML.
  10. \n
\n

You’re done!

\n

Resources & Inspiration

\n
    \n
  • Auto-Expand: https://codepen.io/vsync/pen/frudD
  • \n
  • Data Table: https://codepen.io/alassetter/pen/cyrfB
  • \n
  • Table DnD: https://github.com/isocra/TableDnD/
  • \n
  • Table icon: https://www.iconfinder.com/icons/1608863/table_icon#size=256
  • \n
  • Custom confirm: https://codepen.io/Ana_Champion/pen/JRbZEL
  • \n
  • Table design inspiration: https://codepen.io/lukepeters/pen/bfFur
  • \n
  • Table design inspiration: https://codepen.io/alassetter/pen/cyrfB
  • \n
  • Table design inspiration: https://uicookies.com/wp-content/uploads/2018/05/table-responsive-v2-1000×750.jpg
  • \n
  • Table design inspiration: https://uicookies.com/wp-content/uploads/2018/05/table-responsive-v1.jpg
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/superb-tables.1.0.8.zip","tags":{"content-tables":"content tables","responsive-tables":"responsive tables","table":"table","tables":"tables"},"donate_link":"","icons":{"1x":"https://ps.w.org/superb-tables/assets/icon-256x256.png?rev=2044672","2x":"https://ps.w.org/superb-tables/assets/icon-256x256.png?rev=2044672"},"wporg":true},{"name":"Floating Button","slug":"floating-button","version":"4.3","author":"Wow-Company","author_profile":"https://profiles.wordpress.org/wpcalc","requires":"3.2","tested":"5.8","requires_php":"5.3","rating":80,"ratings":{"1":1,"2":1,"3":0,"4":0,"5":5},"num_ratings":7,"support_threads":1,"support_threads_resolved":0,"active_installs":2000,"downloaded":32490,"last_updated":"2021-07-21 5:47am GMT","added":"2018-09-08","homepage":"https://wordpress.org/plugins/floating-button/","short_description":"Easily create a custom sticky floating buttons. The Floating Button will be the effective solution…","description":"

The Floating Button is the free WordPress plugin for creating the original sticky floating actions buttons. It allows you to install on the site floating buttons with unique thematic icons. The extension serves for placing both traditional navigation bar and additional block with useful information for user.

\n

The Floating Button plugin will be the effective solution for increasing the recognition of your web resource. Its connection will bring originality and novelty to the used theme of the site. The extension helps to configure user-friendly navigation, place useful information or contact panel.

\n

Main features

\n
    \n
  • 2 submenu;
  • \n
  • more than 1500+ FontAwesome icons;
  • \n
  • any links insertion;
  • \n
  • using the tooltips to provide more information;
  • \n
  • round buttons shape;
  • \n
  • LogIn link;
  • \n
  • LogOut link;
  • \n
  • Lost password link
  • \n
\n

Floating Button can be used for:

\n
    \n
  • site navigation;
  • \n
  • additional menu;
  • \n
  • social panel;
  • \n
  • user menu;
  • \n
  • Skype menu and others;
  • \n
  • And more…
  • \n
\n

Pro version

\n

Connect the Pro-version of the plugin to gain access to more features:

\n

Preview of Pro version

\n
    \n
  • create an unlimited amount of buttons;
  • \n
  • use up to 4 floating button positions;
  • \n
  • change the form of the menu display: Circle, Rounded square, Ellipse, Square;
  • \n
  • set the color of the main button and submenu items;
  • \n
  • accompany the change in navigation behavior with the highlight when hovering the mouse cursor;
  • \n
  • use the built-in user menu, social panel and print function;
  • \n
  • set the display according to the user role and status;
  • \n
  • change the menu output depending on the language of the page;
  • \n
  • add restrictions for screens with large or small resolution;
  • \n
  • use the categories on the site, exceptions and ID to place the menu on individual pages;
  • \n
  • insert the shortcode of the panel in the specified location;
  • \n
  • And more…
  • \n
\n

Buy Pro version

\n

Use with other plugins to maximize your results

\n\n

Support

\n

Search for answers and ask your questions at support center

\n","download_link":"https://downloads.wordpress.org/plugin/floating-button.4.3.zip","tags":{"circle-menu":"circle menu","float-menu":"float menu","floating-button":"floating button","floating-menu":"floating menu","sticky-button":"sticky button"},"donate_link":"https://wow-estore.com/item/floating-button-pro/","icons":{"1x":"https://ps.w.org/floating-button/assets/icon-128x128.png?rev=2533016","2x":"https://ps.w.org/floating-button/assets/icon-256x256.png?rev=2533016"},"wporg":true},{"name":"Breadcrumb NavXT","slug":"breadcrumb-navxt","version":"6.6.0","author":"John Havlik","author_profile":"https://profiles.wordpress.org/mtekk","requires":"4.9","tested":"5.7.2","requires_php":"5.5","rating":94,"ratings":{"1":5,"2":2,"3":4,"4":7,"5":104},"num_ratings":122,"support_threads":14,"support_threads_resolved":0,"active_installs":900000,"downloaded":10108065,"last_updated":"2021-04-01 2:13am GMT","added":"2007-12-01","homepage":"http://mtekk.us/code/breadcrumb-navxt/","short_description":"Breadcrumb NavXT, the successor to the popular WordPress plugin Breadcrumb Navigation XT, was written from the ground up to be better than its ancesto …","description":"

Breadcrumb NavXT, the successor to the popular WordPress plugin Breadcrumb Navigation XT, was written from the ground up to be better than its ancestor. This plugin generates locational breadcrumb trails for your WordPress powered blog or website. These breadcrumb trails are highly customizable to suit the needs of just about any website running WordPress. The Administrative interface makes setting options easy, while a direct class access is available for theme developers and more adventurous users.

\n

PHP Requirements

\n

Breadcrumb NavXT 5.2 and newer require PHP5.3
\nBreadcrumb NavXT 5.1.1 and older require PHP5.2

\n

Features (non-exhaustive)

\n
    \n
  • RDFa format Schema.org BreadcrumbList compatible breadcrumb generation.
  • \n
  • Extensive breadcrumb customization control via a settings page with appropriate default values for most use cases.
  • \n
  • Network admin settings page for managing breadcrumb settings for all subsites with configurable global priority.
  • \n
  • Built in WordPress Widget.
  • \n
  • Extensible via OOP and provided actions and filters.
  • \n
  • WPML compatible (enhanced compatibility with WPML extensions plugin).
  • \n
  • Polylang compatible (enhanced compatibility with Polylang extensions plugin).
  • \n
  • bbPress compatible (enhanced compatibility with bbPress extensions plugin).
  • \n
  • BuddyPress compatible (enhanced compatibility with BuddyPress extensions plugin).
  • \n
\n

Translations

\n

Breadcrumb NavXT now supports WordPress.org language packs. Want to translate Breadcrumb NavXT? Visit Breadcrumb NavXT’s WordPress.org translation project.

\n","download_link":"https://downloads.wordpress.org/plugin/breadcrumb-navxt.6.6.0.zip","tags":{"breadcrumb":"breadcrumb","breadcrumbs":"breadcrumbs","menu":"menu","navigation":"navigation","trail":"trail"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=FD5XEU783BR8U&lc=US&item_name=Breadcrumb%20NavXT%20Donation¤cy_code=USD&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted","icons":{"1x":"https://ps.w.org/breadcrumb-navxt/assets/icon.svg?rev=1927103","2x":"https://ps.w.org/breadcrumb-navxt/assets/icon-256x256.png?rev=2410525","svg":"https://ps.w.org/breadcrumb-navxt/assets/icon.svg?rev=1927103"},"wporg":true},{"name":"WP Recipe Maker","slug":"wp-recipe-maker","version":"7.5.1","author":"Bootstrapped Ventures","author_profile":"https://profiles.wordpress.org/brechtvds","requires":"4.4","tested":"5.8","requires_php":"5.4","rating":100,"ratings":{"1":1,"2":0,"3":1,"4":4,"5":201},"num_ratings":207,"support_threads":29,"support_threads_resolved":25,"active_installs":50000,"downloaded":1529780,"last_updated":"2021-08-31 12:27pm GMT","added":"2016-09-07","homepage":"http://bootstrapped.ventures/wp-recipe-maker/","short_description":"The easy and user-friendly recipe plugin for everyone. Automatic JSON-LD metadata for food AND how-to recipes will improve your SEO!","description":"

WP Recipe Maker is the easy recipe plugin that everyone can use. An easy workflow allows you to add recipes to any post or page with automatic JSON-LD metadata for your recipes. This metadata will improve your SEO and get you more visitors!

\n

\n

Would you like to see the plugin in action before installing it? We have a WP Recipe Maker demo website showcasing all of the features!

\n
\n

Get the most out of this plugin!
\n Join the WP Recipe Maker Email Course and we’ll help you get started and learn all the tips and trick for using WPRM.

\n
\n

Features

\n

An overview of WP Recipe Maker features:

\n
    \n
  • Compatible with both the Classic Editor and new Gutenberg editor
  • \n
  • Includes an Elementor block and shortcode can be used in other page builders
  • \n
  • Easy workflow to add recipes to any post or page
  • \n
  • Uses schema.org/Recipe JSON-LD metadata optimised for Google Recipe search
  • \n
  • Uses schema.org/How-to JSON-LD metadata optimised for non-food recipes and instructions
  • \n
  • Supports both regular and Guided Recipes for Google metadata
  • \n
  • Google AMP compatible
  • \n
  • Integrates recipe metadata with Yoast SEO schema graph
  • \n
  • Option to disable metadata per recipe if you want to publish non-food or DIY recipes
  • \n
  • Compatible with Pinterest Rich Pins and a setting to easily opt out
  • \n
  • Outputs ItemList metadata for Recipe Roundup posts
  • \n
  • Associate ingredients with instructions to have them show up exactly where needed
  • \n
  • Keyboard accessible and AMP compatible ratings for comments
  • \n
  • Interactive print recipe page with room for ads and optional credit to your website
  • \n
  • Fallback recipe shows up when the plugin is disabled
  • \n
  • Include a recipe video in the template and metadata
  • \n
  • Add photos or videos to any step of the recipe
  • \n
  • Print recipe and jump to recipe shortcodes
  • \n
  • This plugin is fully responsive, your recipes will look good on any device
  • \n
  • Easily change the look and feel to fit your website in the Template Editor
  • \n
  • Structure your ingredients and instructions in groups (e.g. icing and cake batter)
  • \n
  • Full text search for your recipes
  • \n
  • Access your recipes through the WordPress REST API
  • \n
  • Built-in SEO check for your recipe metadata
  • \n
  • Compatible with RTL languages
  • \n
  • Import your recipes from other plugins (see below)
  • \n
\n

WP Recipe Maker Premium

\n

Looking for some more advanced functionality? We also have the WP Recipe Maker Premium add-on available with the following features:

\n
    \n
  • Use ingredient links for linking to products or other recipes
  • \n
  • Adjustable servings make it easy for your visitors
  • \n
  • Display all nutrition data in a nutrition label
  • \n
  • User Ratings allow visitors to vote without commenting
  • \n
  • Add a mobile-friendly kitchen timer to your recipes
  • \n
  • More Premium templates for a unique recipe template
  • \n
  • Create custom recipe taxonomies like price level, difficulty, …
  • \n
  • Use checkboxes for your ingredients and instructions
  • \n
\n

Even more add-ons can add the following functionality:

\n
    \n
  • Integration with a Nutrition API for automatic nutrition facts
  • \n
  • Unit Conversion to reach an international audience with a different unit system
  • \n
  • Have your users send in recipes through the Recipe Submission form
  • \n
  • Give your visitors the power of Recipe Collections for favourites, meal planning and more
  • \n
\n

Import Options

\n

Currently using another recipe plugin? No problem! You can easily migrate all your existing recipes to WP Recipe Maker if you’re using any of the following plugins:

\n
    \n
  • Tasty Recipes
  • \n
  • Create by Mediavine
  • \n
  • EasyRecipe
  • \n
  • WP Ultimate Recipe
  • \n
  • Recipe Card Blocks by WPZOOM
  • \n
  • Meal Planner Pro
  • \n
  • BigOven
  • \n
  • ZipList and Zip Recipes
  • \n
  • Yummly
  • \n
  • Yumprint Recipe Card
  • \n
  • FoodiePress
  • \n
  • Cooked
  • \n
  • Cookbook
  • \n
  • Simple Recipe Pro
  • \n
  • Purr Recipe Plugin
  • \n
  • Recipes by Simmer
  • \n
  • WordPress.com shortcode
  • \n
  • JSON-LD HTML Script
  • \n
  • Multi Rating (ratings only)
  • \n
  • (Need anything else? Just ask!)
  • \n
\n

This plugin is in active development. Feel free to contact us with any feature requests or ideas.

\n","download_link":"https://downloads.wordpress.org/plugin/wp-recipe-maker.zip","tags":{"cooking":"cooking","food":"food","ingredients":"ingredients","recipe":"Recipe","recipes":"recipes"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QG7KZMGFU325Y","icons":{"1x":"https://ps.w.org/wp-recipe-maker/assets/icon-128x128.png?rev=1491788","2x":"https://ps.w.org/wp-recipe-maker/assets/icon-256x256.png?rev=1491788"},"wporg":true},{"name":"Slim SEO – Fast & Automated WordPress SEO Plugin","slug":"slim-seo","version":"3.10.1","author":"eLightUp","author_profile":"https://profiles.wordpress.org/rilwis","requires":"4.5","tested":"5.8","requires_php":"5.6","rating":92,"ratings":{"1":1,"2":3,"3":0,"4":0,"5":26},"num_ratings":30,"support_threads":16,"support_threads_resolved":12,"active_installs":10000,"downloaded":169802,"last_updated":"2021-07-22 1:33am GMT","added":"2018-12-31","homepage":"https://wpslimseo.com","short_description":"A full-featured SEO plugin for WordPress that's lightweight, blazing fast with minimum configuration. No bloats,…","description":"

A Fast & Automated SEO Plugin For WordPress

\n

Currently there are many SEO plugins for WordPress in the market. But these plugins often have too many options and are very complicated for ordinary users. Access to their configuration section, you will easily get lost in a maze of explanations and options that you sometimes don’t understand. Besides, there are ads!

\n

So how can an ordinary user use an SEO plugin?

\n

SEO should be an integrated part of WordPress, where users don’t need or need very little effort to configure for SEO. The main reason is that not everyone understands the terms of SEO and how to configure them optimally.

\n

So, we made Slim SEO.

\n

Slim SEO is a full-featured SEO plugin, that’s done right! It provides a complete SEO solution for WordPress where the configuration has been done automatically. Users do not need to care about their complex and semantic options.

\n

So what does Slim SEO do?

\n

Slim SEO Features

\n

Slim SEO helps you do the following jobs automatically:

\n

1. Meta Tags

\n

The following meta tags are auto-generated and optimized for the best SEO scores.

\n\n

2. XML Sitemap

\n

Slim SEO automatically generates XML sitemap (at domain.com/sitemap.xml) to submit to search engines. With XML sitemaps, your website are indexed fast and completely.

\n

3. Breadcrumbs

\n

The plugin allows you to output a breadcrumb trail on your website easily. It automatically fetches the information from the current post and output a hierarchy for you. You can also style the breadcrumbs to match your theme style.

\n

4. Schema (Structured Data)

\n

Schema is a way that describes structured data for search engines. Based on the data provided, search engines can show the content in the search results page in a more appealing way.

\n

Slim SEO automatically adds the some structured data to the website via JSON-LD which makes your website more SEO-friendly. Not only schemas are created by the plugin, there are also meaningful connections between them. For example, an article (single post) is the main entity of the current webpage. Slim SEO does that all without any configuration.

\n

5. Auto Redirection

\n
    \n
  • Auto redirect attachment page to the attachment file URL.
  • \n
  • Auto redirect author page to the homepage if the website has only one author or the author doesn’t have any posts.
  • \n
\n

6. Open Source

\n

Slim SEO has different contributors which help make Slim SEO a quality product. Join us on Github!

\n

Who should use Slim SEO?

\n

Everyone can use Slim SEO!

\n

However, Slim SEO is perfectly suitable for users who prefer simplicity or do not like the complicated options that other SEO plugins provide. It’s also a good choice for users with little SEO knowledge and just want to use SEO plugins to automate their jobs.

\n

If you like this plugin, you might also like our other products: Meta Box and GretaThemes.

\n","download_link":"https://downloads.wordpress.org/plugin/slim-seo.3.10.1.zip","tags":{"google":"google","schema":"schema","search-engine-optimization":"search engine optimization","seo":"seo","sitemap":"sitemap"},"donate_link":"https://wpslimseo.com/pro/","icons":{"1x":"https://ps.w.org/slim-seo/assets/icon.svg?rev=2005049","svg":"https://ps.w.org/slim-seo/assets/icon.svg?rev=2005049"},"wporg":true},{"name":"Schema & Structured Data for WP & AMP","slug":"schema-and-structured-data-for-wp","version":"1.9.83.1","author":"Magazine3","author_profile":"https://profiles.wordpress.org/magazine3","requires":"3.0","tested":"5.8","requires_php":false,"rating":94,"ratings":{"1":13,"2":1,"3":2,"4":10,"5":183},"num_ratings":209,"support_threads":30,"support_threads_resolved":19,"active_installs":80000,"downloaded":2323874,"last_updated":"2021-08-31 7:07am GMT","added":"2018-08-06","homepage":"","short_description":"Schema & Structured Data for WP & AMP adds Google Rich Snippets markup according to…","description":"

Schema & Structured Data for WP & AMP adds Google Rich Snippets markup according to Schema.org guidelines to structure your site for SEO. (AMP Compatible)

\n

Features

\n
    \n
  • Schema Types: Currently, We have more than 35 schema types such as Blog Posting, News article, Local Business, Web page, Article, Recipe, Product, and Video Object view all. We are going to add all the schema types in the future. You can request the one you want and we will add it for you!
  • \n
  • Conditional Display Fields: Meaning you include or exclude any posts, pages, post types, taxonomies and more!
  • \n
  • Knowlegde Base Support: Recognize the content based on the organization or a person via data type option.
  • \n
  • Full AMP Compatiblity: Supports the AMP for WP and AMP by Automattic plugins.
  • \n
  • Advanced Settings: Play with output of schema markup using these options (Defragment, Add in Footer, Pretty Print, MicroData CleanUp etc.)
  • \n
  • Migration: Import the data from other schema plugins such as (SEO Pressor, WP SEO Schema, Schema Plugin etc )
  • \n
  • Compatibility: Generate the schema markup for the plugins. We have provided schema support for them. Few of them are – kk Star Ratings, WP-PostRatings, bbPress
  • \n
  • Google Review: Display your business google reviews and its schema markup on your website.
  • \n
  • [Premium] Reviews ( Fetch reviews from 75+ platforms ).
  • \n
  • [Premium] Priority Support. Get it We get more than 100 technical queries a day but the Priority support plan will help you skip that and get the help from a dedicated team.
  • \n
  • Review Module: Create your own review rating box with pros and cons and its schema markup
  • \n
  • Schema Type Blocks in Gutenberg: Create your own content with the blocks and json schema markup will be added automatically
  • \n
  • Unlimited Custom Post Types: You can control to represent the Rich Snippets data in the google search console using unlimited custom post types.
  • \n
  • Easy to use with Minimal Settings
  • \n
  • Archive Page Listing Support
  • \n
  • JSON-LD Format
  • \n
  • Easy to use Setup Wizard
  • \n
  • Breadcrumbs Listing Support
  • \n
  • Comments Post comments Support
  • \n
  • Constant Development & New Features: We’ll be releasing the constant updates along with the more handy features as soon as we get the feedback from the users.
  • \n
\n

Supported Schema Types

\n
    \n
  • Apartment
  • \n
  • House
  • \n
  • SingleFamilyResidence
  • \n
  • Article
  • \n
  • Blogposting
  • \n
  • Book
  • \n
  • Course
  • \n
  • DiscussionForumPosting,
  • \n
  • DataFeed
  • \n
  • HowTo
  • \n
  • NewsArticle
  • \n
  • QAPage
  • \n
  • Review
  • \n
  • Recipe
  • \n
  • TVSeries
  • \n
  • SoftwareApplication
  • \n
  • MobileApplication
  • \n
  • SpecialAnnouncement (Related to Coronavirus)
  • \n
  • TechArticle
  • \n
  • WebPage
  • \n
  • Event
  • \n
  • VideoGame
  • \n
  • JobPosting
  • \n
  • Service
  • \n
  • Trip
  • \n
  • AudioObject
  • \n
  • VideoObject
  • \n
  • MedicalCondition
  • \n
  • MusicPlaylist
  • \n
  • MusicAlbum
  • \n
  • LocalBusiness with all the sub categories
  • \n
  • Product
  • \n
  • TouristAttraction
  • \n
  • TouristDestination
  • \n
  • LandmarksOrHistoricalBuildings
  • \n
  • HinduTemple
  • \n
  • Church
  • \n
  • Mosque
  • \n
  • Person
  • \n
  • View All
  • \n
\n

Extensions

\n

Some useful extensions to extend Schema & Structured Data for WP & AMP features, check Woocommerce Compatibility For Schema, Cooked Compatibility For Schema and We are going to add more.

\n

Support

\n

We try our best to provide support on WordPress.org forums. However, We have a special team support where you can ask us questions and get help. Delivering a good user experience means a lot to us and so we try our best to reply each and every question that gets asked.

\n

Bug Reports

\n

Bug reports for Schema & Structured Data for WP & AMP are welcomed on GitHub. Please note GitHub is not a support forum, and issues that aren’t properly qualified as bugs will be closed.

\n

Credits

\n
    \n
  • Select2 used https://github.com/select2/select2 – License URI: https://github.com/select2/select2/blob/develop/LICENSE.md,
  • \n
  • Merlin WP used https://github.com/richtabor/MerlinWP – License URI: https://github.com/richtabor/MerlinWP/blob/master/LICENSE,
  • \n
  • jquery-timepicker used https://github.com/jonthornton/jquery-timepicker
  • \n
  • Rate Yo! used https://github.com/prrashi/rateYo – License URI: https://github.com/prrashi/rateYo/commit/f3812fe96c38b08627d209795176053550fb1427
  • \n
  • Aqua Resizer used http://aquagraphite.com – License URI: WTFPL – http://sam.zoy.org/wtfpl/
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/schema-and-structured-data-for-wp.1.9.83.1.zip","tags":{"google-snippets":"google snippets","rich-snippets":"rich snippets","schema":"schema","schema-org":"schema.org","structured-data":"structured data"},"donate_link":"","icons":{"1x":"https://ps.w.org/schema-and-structured-data-for-wp/assets/icon-128x128.png?rev=1922284","2x":"https://ps.w.org/schema-and-structured-data-for-wp/assets/icon-256x256.png?rev=1922284"},"wporg":true},{"name":"GenerateBlocks","slug":"generateblocks","version":"1.3.5","author":"Tom Usborne","author_profile":"https://profiles.wordpress.org/edge22","requires":"5.4","tested":"5.8","requires_php":"5.6","rating":98,"ratings":{"1":0,"2":0,"3":2,"4":1,"5":72},"num_ratings":75,"support_threads":28,"support_threads_resolved":12,"active_installs":50000,"downloaded":238382,"last_updated":"2021-07-19 6:12pm GMT","added":"2020-05-19","homepage":"https://generateblocks.com","short_description":"A small collection of lightweight WordPress blocks that can accomplish nearly anything.","description":"

\n

\n

Add incredible versatility to your editor without bloating it with tons of one-dimensional Gutenberg blocks. With GenerateBlocks, you can learn a handful of blocks deeply and use them to build anything.

\n

GenerateBlocks works hand-in-hand with GeneratePress, but is built to work with any theme.

\n

Looking for more features? Check out GenerateBlocks Pro.

\n

Container

\n

Organize your content into rows and sections. The Container block is the foundation of your content, allowing you to design unique sections for your content.

\n

Grid

\n

Create advanced layouts with flexible grids. The Grid block gives you the ability to create any kind of layout you can imagine.

\n

Headline

\n

Craft text-rich content with advanced typography. Everything from headings to paragraphs – take full control of your text.

\n

Buttons

\n

Drive conversions with beautiful buttons.

\n

Performance

\n

We take performance seriously. Minimal CSS is generated only for the blocks you need, and our HTML structure is as simple as possible while allowing for maximum flexibility.

\n

Coding standards

\n

Built to the highest coding standards for security, stability and future compatibility.

\n

Fully responsive

\n

Every block comes with tablet and mobile controls, giving you total control of your responsive design.

\n

Documentation

\n

Check out our documentation for more information on the individual blocks and how to use them.

\n","download_link":"https://downloads.wordpress.org/plugin/generateblocks.1.3.5.zip","tags":{"blocks":"blocks","container":"container","grid":"grid","gutenberg":"gutenberg","headline":"headline"},"donate_link":"https://generateblocks.com","icons":{"1x":"https://ps.w.org/generateblocks/assets/icon-128x128.png?rev=2336822","2x":"https://ps.w.org/generateblocks/assets/icon-256x256.png?rev=2336822"},"wporg":true},{"name":"Blackhole for Bad Bots","slug":"blackhole-bad-bots","version":"3.2","author":"Jeff Starr","author_profile":"https://profiles.wordpress.org/specialk","requires":"4.1","tested":"5.8","requires_php":"5.6.20","rating":98,"ratings":{"1":2,"2":0,"3":3,"4":2,"5":108},"num_ratings":115,"support_threads":3,"support_threads_resolved":3,"active_installs":30000,"downloaded":305663,"last_updated":"2021-07-19 8:41pm GMT","added":"2016-02-18","homepage":"https://perishablepress.com/blackhole-bad-bots/","short_description":"Blackhole is a WordPress security plugin that detects and traps bad bots in a virtual black hole, where they are denied access to your entire site.","description":"
\n

Add your own virtual black hole trap for bad bots.

\n
\n

Bye bye bad bots..

\n

Bad bots are the worst. They do all sorts of nasty stuff and waste server resources. The Blackhole plugin helps to stop bad bots and save precious resources for legit visitors.

\n

How does it work?

\n

First the plugin adds a hidden trigger link to the footer of your pages. You then add a line to your robots.txt file that forbids all bots from following the hidden link. Bots that then ignore or disobey your robots rules will crawl the link and fall into the trap. Once trapped, bad bots are denied further access to your WordPress site.

\n

I call it the “one-strike” rule: bots have one chance to obey your site’s robots.txt rule. Failure to comply results in immediate banishment. The best part is that the Blackhole only affects bad bots: human users never see the hidden link, and good bots obey the robots rules in the first place. Win-win! 🙂

\n

Using a caching plugin? Check out the Installation notes for important info.

\n

Features

\n
    \n
  • Easy to set up
  • \n
  • Squeaky clean code
  • \n
  • Focused and modular
  • \n
  • Lightweight, fast and flexible
  • \n
  • Built with the WordPress API
  • \n
  • Works with other security plugins
  • \n
  • Easy to reset the list of bad bots
  • \n
  • Easy to delete any bot from the list
  • \n
  • Regularly updated and “future proof”
  • \n
  • Blackhole link includes “nofollow” attribute
  • \n
  • Plugin options configurable via settings screen
  • \n
  • Works silently behind the scenes to protect your site
  • \n
  • Whitelists all major search engines to never block
  • \n
  • Focused on flexibility, performance, and security
  • \n
  • Email alerts with WHOIS lookup for blocked bots
  • \n
  • Complete inline documentation via the Help tab
  • \n
  • Provides setting to whitelist any IP addresses
  • \n
  • Customize the message displayed to bad bots 😉
  • \n
  • One-click restore the plugin default options
  • \n
  • Does NOT use or require any .htaccess rules
  • \n
\n

Blackhole for Bad Bots protects your site against bad bots, spammers, scrapers, scanners, and other automated threats.

\n

Not using WordPress? Check out the standalone PHP version of Blackhole!

\n

Check out Blackhole Pro and level up with advanced features!

\n

Whitelist

\n

By default, this plugin does NOT block any of the major search engines (user agents):

\n
    \n
  • AOL.com
  • \n
  • Baidu
  • \n
  • Bingbot/MSN
  • \n
  • DuckDuckGo
  • \n
  • Googlebot
  • \n
  • Teoma
  • \n
  • Yahoo!
  • \n
  • Yandex
  • \n
\n

These search engines (and all of their myriad variations) are whitelisted via user agent. So are a bunch of other “useful” bots. They always are allowed full access to your site, even if they disobey your robots.txt rules. This list can be customized in the plugin settings. For a complete list of whitelisted bots, visit the Help tab in the plugin settings (under “Whitelist Settings”).

\n

Privacy

\n

User Data: This plugin automatically blocks bad bots. When bad bots fall into the trap, their IP address, user agent, and other request data are stored in the WP database. No other user data is collected by this plugin. At any time, the administrator may delete all saved data via the plugin settings.

\n

Services: This plugin does not connect to any third-party locations or services.

\n

Cookies: This plugin does not set any cookies.

\n

Header Image Courtesy NASA/JPL-Caltech.

\n

Support development of this plugin

\n

I develop and maintain this free plugin with love for the WordPress community. To show support, you can make a donation or purchase one of my books:

\n\n

And/or purchase one of my premium WordPress plugins:

\n\n

Links, tweets and likes also appreciated. Thanks! 🙂

\n","download_link":"https://downloads.wordpress.org/plugin/blackhole-bad-bots.3.2.zip","tags":{"anti-spam":"anti-spam","bad-bots":"bad bots","blackhole":"blackhole","honeypot":"honeypot","security":"security"},"donate_link":"https://monzillamedia.com/donate.html","icons":{"1x":"https://ps.w.org/blackhole-bad-bots/assets/icon-128x128.png?rev=1471215","2x":"https://ps.w.org/blackhole-bad-bots/assets/icon-256x256.png?rev=1471215"},"wporg":true},{"name":"Page View Count","slug":"page-views-count","version":"2.4.12","author":"a3rev Software","author_profile":"https://profiles.wordpress.org/a3rev","requires":"5.0","tested":"5.8","requires_php":false,"rating":78,"ratings":{"1":8,"2":5,"3":2,"4":3,"5":30},"num_ratings":48,"support_threads":2,"support_threads_resolved":0,"active_installs":20000,"downloaded":403671,"last_updated":"2021-07-19 10:48am GMT","added":"2012-12-21","homepage":"","short_description":"Places an icon, all time views count and views today count at the bottom of…","description":"

A beautifully simple to set up plugin that gives site visitors and site owners the ability to quickly and easily see how many people have visited that page or post.

\n

FEATURES

\n
    \n
  • On the front end it adds an icon and page views count to the bottom or top of pages and posts on your WordPress website.
  • \n
  • Switch ON | OFF hide Page Views Count for all Posts, Pages and all custom posts types including WooCommerce custom post types.
  • \n
  • Set the Position of the counter to show at the top of the page or post or at the bottom
  • \n
  • Set alignment of the counter Left, Right or Centre
  • \n
  • Set the colour and size of the counter icon
  • \n
  • Option to use load by Ajax to prevent the count from being cached by caching plugins
  • \n
  • Option to Manually set / edit total views and views today from Page View Count meta box on any post or page editor
  • \n
  • Add Page Views counter via the PVC Gutenberg block
  • \n
  • Add Page Views counter via shortcode
  • \n
  • Add Page Views counter via widget
  • \n
  • Developers can add the Page Views Counter via php tag
  • \n
  • All options and settings are point click – absolutely no coding required
  • \n
\n

COMPATIBILTY

\n

Compatible with WordPress 5.3+ and backwards to WP 4.9.0. Compatible with Classic Editor plugin with 5.0+ (Gutenberg Deactivated)

\n

GUTENBERG BLOCK

\n

Using the Gutenberg Editor. Use the Page View Count Block to add the counter to any page or post content. Block search for ‘Page Views’ or selecting the block from the a3rev Blocks menu.

\n

Adding the Page Views block to your content automatically deactivates the Global Page View counter on the post or page.

\n

ELEMENTOR TEMPLATES

\n

Fully compatible with Elementor templates. Add counter via Shortcode or widget to any template.

\n

DEVELOPERS

\n

On the plugins dashboard in the + Page Views Count Function options box you will find the Page Views Count functions and notes on how to use them.

\n
    \n
  • Use to manually add Page views count to any content or object in the theme.
  • \n
  • Use to add page View Count to any content that is not create using WordPress custom post / taxonomy type.
  • \n
  • Use to create a custom position of the Page Views Count
  • \n
  • Functions support echo and return parameters when getting visitor stats on any variable.
  • \n
\n

TROUBLESHOOTING

\n
    \n
  • The number 1 support request we get about the plugin is that it double or triple counts page or post loads. Yes it does and if you see that it is a Red Flag that you have a misconfiguration or bug in your theme or a plugin. Page Views Count does exactly that – counts each time the page or post is loading in the browser – if its counting twice it is because the browser is double loading the page. That is a bad thing and you or your developer needs to fix that.
  • \n
\n

CONTRIBUTE

\n

When you download Page Views Count, you join our community. Regardless of if you are a WordPress beginner or experienced developer if you’?re interested in contributing to Page Views Count development head over to the Page Views Count GitHub Repository to find out how you can contribute.
\nWant to add a new language to Page Views Count? Great! You can contribute via translate.wordpress.org

\n

Usage

\n
    \n
  1. \n

    Install and activate the plugin

    \n
  2. \n
  3. \n

    Go to WordPress Settings menu > Page View Count Menu

    \n
  4. \n
  5. \n

    Activate Page Views Count and use the options box settings to make the desired configuration

    \n
  6. \n
  7. \n

    Be sure to clear any caching and browser cache to see your Page Views Count

    \n
  8. \n
\n","download_link":"https://downloads.wordpress.org/plugin/page-views-count.2.4.12.zip","tags":{"gutenberg":"gutenberg","page-view-count":"page view count","post-view-count":"post view count","post-views":"post views","wordpress-page-view":"wordpress page view"},"donate_link":"","icons":{"1x":"https://ps.w.org/page-views-count/assets/icon.svg?rev=986301","2x":"https://ps.w.org/page-views-count/assets/icon-256x256.png?rev=986301","svg":"https://ps.w.org/page-views-count/assets/icon.svg?rev=986301"},"wporg":true},{"name":"Newspack Listings","slug":"newspack-listings","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://github.com/Automattic/newspack-listings/releases","short_description":"

Create reusable content as listings and add them to lists wherever core blocks can be used

\n","description":"\n\n\n

Create reusable content as listings and add them to lists wherever core blocks can be used

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2021/02/listings2-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2021/02/listings2-372x209.jpg","svg":""},"wporg":false},{"name":"Newspack Newsletters","slug":"newspack-newsletters","version":"1.31.1","author":"Automattic","author_profile":"https://profiles.wordpress.org/automattic","requires":"5.3","tested":"5.8.0","requires_php":"5.6","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":1,"support_threads_resolved":1,"active_installs":500,"downloaded":2866,"last_updated":"2021-08-10 8:45pm GMT","added":"2021-02-15","homepage":"https://newspack.pub","short_description":"Create email newsletters with the Gutenberg editor and distribute them with your Mailchimp or Constant…","description":"

Create email newsletters with the Gutenberg editor and send them via Mailchimp or Constant Contact, all without leaving WP Admin! Newspack Newsletters lets you build eye-catching newsletters using the WordPress editing tools you’re already familiar with, and lets you save drafts, create reusable layouts, send to your existing mailing list, and also publish them to your website.

\n

Use and create newsletter layouts

\n

Newspack Newsletters comes with four default layouts to help you start building newsletters quickly. You can use an existing layout, or start fresh with a blank page. You can also create and save your own layouts, or alter the ones that come bundled with the plugin and save the settings, and use them for future campaigns.

\n

Use Gutenberg blocks and settings

\n

Newspack Newsletters supports most core Gutenberg blocks and configurations, letting you use blocks like Group, Button, Columns, and more, to create dynamic layouts. The plugin will warn you when a block will not display as expected in an email.

\n

Customize your newsletter’s appearance

\n

You can customize your newsletters further by changing the header and body fonts, or picking a background color.

\n

Newspack Blocks

\n

Newspack Newsletters comes bundled with the Newspack Post Inserter block. This block lets you insert excerpts from live posts on your site, and, once inserted, will turn those posts into static content using the Header and Paragraph blocks, linking back to your site.

\n

Need to target a post title to your newsletter audience? Not a problem! You can edit these blocks, and add others, to make sure they’ speak to your readers.

\n

Add ads!

\n

Monetize your newsletters by including advertising. The Newspack Newsletters plugin lets you create ads, which are stored as a custom post type. Ads are automatically inserted into your newsletters, and can also be toggled off on a newsletter-by-newsletter basis.

\n

Send with ease

\n

Newspack Newsletters connects to your Mailchimp or Constant Contact accounts to send emails using the mailing lists you’ve collected there, all without leaving the WordPress Admin.

\n

Before sending your campaign, you can send test emails to one or more email addresses at a time from the newsletter editor, to make sure everything is pixel perfect before sharing with the world.

\n

About Newspack

\n

The Newspack Newletters plugin is part of Newspack, a suite of tools to help small to mid-sized news organizations publish and generate revenue with WordPress. Newspack is a collaborative project by WordPress.com and the Google News Initiative. You can learn more about Newspack by visiting our website.

\n

Credits

\n

The beach photograph in the screenshot is by Life of Pix, licensed CC0.

\n","download_link":"https://downloads.wordpress.org/plugin/newspack-newsletters.zip","tags":{"constant-contact":"constant contact","mailchimp":"mailchimp","newsletters":"newsletters","newspack":"Newspack","wordpress-com":"WordPress.com"},"donate_link":"","icons":{"1x":"https://ps.w.org/newspack-newsletters/assets/icon.svg?rev=2475195","2x":"https://ps.w.org/newspack-newsletters/assets/icon-256x256.png?rev=2475195","svg":"https://ps.w.org/newspack-newsletters/assets/icon.svg?rev=2475195"},"wporg":true},{"name":"Web Stories","slug":"web-stories","version":"1.10.1","author":"Google","author_profile":"https://profiles.wordpress.org/google","requires":"5.5","tested":"5.8","requires_php":"7.0","rating":84,"ratings":{"1":5,"2":2,"3":2,"4":4,"5":31},"num_ratings":44,"support_threads":111,"support_threads_resolved":86,"active_installs":20000,"downloaded":322933,"last_updated":"2021-08-25 7:02pm GMT","added":"2020-09-22","homepage":"https://wp.stories.google/","short_description":"Web Stories are a visual storytelling format for the open web which immerses your readers…","description":"

Web Stories are a free, open-web, visual storytelling format for the web, enabling you to easily create visual narratives with engaging animations and tappable interactions, and immerse your readers in great and fast-loading full-screen experiences.

\n

Benefits of Web Stories

\n

The Web Stories format puts features and capabilities at your fingertips to engage with your audience via the power of storytelling on the open web. Specifically, you can:

\n
    \n
  • Create beautiful and engaging content easily: Web Stories make the production of stories as easy as possible from a technical perspective.
  • \n
  • Enjoy creative flexibility for editorial freedom and branding: The Web Stories format comes with preset but flexible layout templates, standardized UI controls, and components for sharing and adding follow-on content.
  • \n
  • Share and link your stories on the open web: Web Stories are part of the open web and can be shared and embedded across sites and apps without being confined to a single ecosystem.
  • \n
  • Track and measure your stories: Supports analytics and bookend capabilities for viral sharing and monetization.
  • \n
  • Capture the attention of your readers by offering fast loading times to your stories: Web Stories are lightning fast so that your audience stays engaged and entertained.
  • \n
  • Engage with your readers via immersive storytelling: Web Stories are a new and modern way to reach existing readers.
  • \n
  • Monetize effectively the beautiful and engaging stories you create: Web Stories enable monetization capability for publishers using affiliate links. For advertisers, Stories is a way to reach a unique audience within a new storytelling experience.
  • \n
\n

Web Stories Editor

\n

The Web Stories editor for WordPress brings together a robust set of story creation capabilities in a user-friendly, WYSIWYG creation tool. Some of the key features you can leverage out of the box are:

\n
    \n
  • A visually rich and intuitive dashboard, allowing you to easily navigate the story creation process
  • \n
  • Beautiful and expressive page templates to you get your story creation process started quickly and smoothly
  • \n
  • Easy drag-and-drop capabilities, making it easy to compose beautiful stories
  • \n
  • Convenient access to WordPress’ media library, enabling you to grab your media assets right from the plugin dashboard as you create your stories
  • \n
  • Customizable color and text style presets, making it easy to tailor the style of your stories to the needs of your content strategy
  • \n
  • And much more!
  • \n
\n

Using the Web Stories editor for WordPress, you can easily create visual narratives with tappable interactions, and share freely across the web, or embed them on your existing content strategies. The Stories you create are yours in every way, as Web Stories belong to the open web, instead of being confined to any specific closed ecosystem or platform.

\n

Audience: Everyone

\n

Web Stories are for everyone! If you are a site owner, content creator, or publisher on the web, embracing the Web Stories format would be great as a way to enhance the quality of your content strategy, the value you bring to your readers, and consequently your chances of achieving sustainable success.

\n

Terms of Service

\n

By using this plugin, you agree to Google’s Terms of Service. By using third-party imagery and video provided by Unsplash, Coverr and Tenor, you agree to adhere to the respective Terms of Service.

\n","download_link":"https://downloads.wordpress.org/plugin/web-stories.1.10.1.zip","tags":{"amp":"amp","google":"google","stories":"stories","storytelling":"storytelling","web-stories":"web stories"},"donate_link":"","icons":{"1x":"https://ps.w.org/web-stories/assets/icon.svg?rev=2386543","2x":"https://ps.w.org/web-stories/assets/icon-256x256.png?rev=2386543","svg":"https://ps.w.org/web-stories/assets/icon.svg?rev=2386543"},"wporg":true},{"name":"Jetpack – WP Security, Backup, Speed, & Growth","slug":"jetpack","version":"10.0","author":"Automattic","author_profile":"https://profiles.wordpress.org/automattic","requires":"5.7","tested":"5.8","requires_php":"5.6","rating":78,"ratings":{"1":320,"2":80,"3":81,"4":137,"5":1014},"num_ratings":1632,"support_threads":352,"support_threads_resolved":316,"active_installs":5000000,"downloaded":242892336,"last_updated":"2021-08-03 4:25pm GMT","added":"2011-01-20","homepage":"https://jetpack.com","short_description":"Improve your WP security with powerful one-click tools like backup and malware scan. Get essential…","description":"

The most popular WordPress plugin for just about everything.

\n

WordPress security, performance, marketing, and design tools — Jetpack is made by WordPress experts to make WP sites safer and faster, and help you grow your traffic.

\n

24/7 AUTO SITE SECURITY

\n

We guard your site so you can run your site or business. Jetpack Security provides easy-to-use, comprehensive WordPress site security including auto real-time backups and easy restores, malware scans, and spam protection. Essential features like brute force protection and downtime / uptime monitoring are free.

\n
    \n
  • Back up your site automatically in real time and restore to any point with one click. Unlimited storage for your backup. Great for eCommerce stores especially Woo.
  • \n
  • Manage migration to a new host, migrate theme files and plugins to a new database, easily duplicate websites, create full database backups, clone websites, repair broken websites by restoring older backups or easily set up a test site by creating a duplicate of your existing WP website.
  • \n
  • See every site change and who made it with the activity log, great for coordination, debug, maintenance, or troubleshooting.
  • \n
  • Automatically perform malware scans and security scans for other code threats. One click fix to restore your site for malware.
  • \n
  • Block spam comments and form responses with anti spam features powered by Akismet.
  • \n
  • Brute force attack protection to protect your WordPress login page from attacks.
  • \n
  • Monitor your site uptime / downtime and get an instant alert of any change by email.
  • \n
  • Secure WordPress.com powered login used by millions of sites with optional 2FA (two factor authentication) for extra protection.
  • \n
  • Auto update individual plugins for easy site maintenance and management.
  • \n
\n

PEAK SPEED AND PERFORMANCE

\n

Get blazing fast site speed with Jetpack, the premier WP plugin built to leverage the power of AMP, a tool that helps optimize your site on mobile devices. Jetpack’s free CDN (content delivery network) auto optimizes your images. Watch your page load times decrease — we’ll optimize your images and serve them from our own powerful global network, and speed up your site on mobile devices to reduce bandwidth usage and save money!

\n
    \n
  • Jetpack has partnered with Google AMP to create the best, highest performance all-in-one toolkit for WordPress. By using Jetpack and AMP together, you get all the features you need to build a beautiful, fast, modern website with no coding required.
  • \n
  • Image CDN for images and static files, like CSS and JavaScript, served from our servers, not yours, which saves you money and bandwidth.
  • \n
  • Lazy load images for a super fast experience, even on mobile. Jetpack’s lazy loading automatically delays the loading of media on your posts and pages until your visitors scroll down to where they appear on the page.
  • \n
  • Unlimited, high speed, ad free video hosting keeps the focus on your content, not on ads or recommendations that lead people off site.
  • \n
  • Custom site search is incredibly powerful and customizable. Helps your visitors instantly find the right content so they read and buy more. Works great with WooCommerce / eCommerce sites to help filter products so customers get what they want on your site faster.
  • \n
  • Recommended to use with WP Super Cache for ultimate WordPress site speed.
  • \n
\n

POWERFUL TOOLS FOR GROWTH

\n

Create and customize your WordPress site, optimize it for visitors and revenue, and enjoy watching your stats tick up. Build it, share it, and watch it grow.

\n
    \n
  • Advanced site stats and analytics to help you understand your audience.
  • \n
  • Auto publish blog posts and products to social media by simply using our tools to connect to Facebook, Twitter, and Linkedin.
  • \n
  • Easily share Instagram posts on your pages and blog posts.
  • \n
  • Collect a payment or donation, sell a product, service, or membership with simple integrations with PayPal and Stripe.
  • \n
  • Grow traffic with SEO tools for Google, Bing, Twitter, Facebook, and WordPress.com. XML sitemap created automatically.
  • \n
  • Advertise on your site to generate revenue. The ad network automatically does the work for you to find high-quality ads that are placed on your site.
  • \n
  • Manage Jetpack features from anywhere with the official WordPress mobile app, available for Apple iOS (iPhone or iPad) and Google Android.
  • \n
  • Looking for Customer Relationship Management? Check out the Jetpack CRM plugin which works alongside Jetpack to give you a simple and practical way to build relationships with your customers and leads.
  • \n
\n

EASY DESIGN TOOLS

\n

Quickly customize your site to make it stand out — no coding needed.

\n
    \n
  • Themes — Simple themes to get started or pick a professional theme to make your site stand out.
  • \n
  • Related posts — Keep visitors on your site by automatically showing them related content they will be interested in.
  • \n
  • Gallery and Slideshow tools — Image galleries, carousel slider, and slideshows for WP sites and stores.
  • \n
  • Subscriptions — Make it easy for visitors to sign up to receive notifications of your latest posts and comments.
  • \n
  • Contact form — Easily build unlimited contact forms for free without any coding. Receive email notifications for each response. Integrate with mail solutions like Creative Mail to reach your customers and leads quickly. Connect to Jetpack Anti spam (powered by Akismet) to filter submissions.
  • \n
  • oEmbed Support — easily embed images, posts, and links from Facebook and Instagram.
  • \n
\n

INTEGRATIONS

\n

Jetpack is updated monthly to ensure seamless integration with top WordPress plugins and other tech products.

\n
    \n
  • Built for WooCommerce: Jetpack and WooCommerce are both made by Automattic. Backup, Scan, Anti-spam, integrate perfectly for Woo / eComm stores
  • \n
  • Jetpack is fully compatible with v2.0 of the official AMP plugin for WordPress.
  • \n
  • Better understand your customers and marketing with Google Analytics (GA) integration
  • \n
  • Social media platforms: Instagram, Facebook, Twitter, LinkedIn
  • \n
  • Simple Blocks to customize your site: Pinterest, Whatsapp, Podcast player, GIFs, maps, tiled gallery, slideshow
  • \n
  • Payment processors: easily collect payments or donations and sell products through Stripe and PayPal
  • \n
  • Site speed and performance plugins: Works great with WP Super Cache by Automattic and Cloudflare.
  • \n
  • Contact form: Anti-spam (Powered by Akismet) blocks spam comments for Jetpack forms, Contact Form 7, Ninja Forms, Gravity Forms, Formidable Forms, and more.
  • \n
  • Other tech integrations: Instagram, Creative Mail, Mailchimp, Calendly, Whatsapp, Pinterest, Revue, and more.
  • \n
\n

EXPERT SUPPORT

\n

We have a global team of Happiness Engineers ready to provide incredible support. Ask your questions in the support forum or contact us directly.

\n

GET STARTED

\n

Installation is free, quick, and easy. Set up Jetpack in minutes. Take advantage of more robust features like WordPress site security and design and growth tools by upgrading to a paid plan.

\n","download_link":"https://downloads.wordpress.org/plugin/jetpack.10.0.zip","tags":{"backup":"backup","malware":"malware","scan":"scan","security":"security","woo":"woo"},"donate_link":"","icons":{"1x":"https://ps.w.org/jetpack/assets/icon.svg?rev=2394525","2x":"https://ps.w.org/jetpack/assets/icon-256x256.png?rev=2394525","svg":"https://ps.w.org/jetpack/assets/icon.svg?rev=2394525"},"wporg":true},{"name":"Easy Notification Bar","slug":"easy-notification-bar","version":"1.4.2","author":"WPExplorer","author_profile":"https://profiles.wordpress.org/wpexplorer","requires":"5.2.0","tested":"5.8","requires_php":"5.6.2","rating":82,"ratings":{"1":0,"2":1,"3":1,"4":1,"5":4},"num_ratings":7,"support_threads":3,"support_threads_resolved":1,"active_installs":4000,"downloaded":33875,"last_updated":"2021-08-22 1:48am GMT","added":"2019-06-20","homepage":"https://wordpress.org/plugins/easy-notification-bar/","short_description":"Easily add a custom top bar notification message to on your site with live customization options via the WordPress customizer.","description":"

Easily add a custom top bar notification message to on your site with live customization options via the WordPress customizer. The plugin allows you to enter your notification bar text as well as an optional button to display next to your text. Perfect for notifying visitors of a current sale, hot product, warnings or other important messages.

\n

The Easy Notification Bar plugin makes use of the newer “wp_body_open” action hook introduced in WordPress 5.2.0 which allows the plugin to work better with any theme that has been updated to support the tag. Contrary to other notice bar solutions which rely on absolute positioning, this plugin inserts the notice bar right after the body tag so it should display perfectly without any conflicts on any well-coded theme.

\n

By default, the notification bar is “static” which means it displays at the top of your site so when you scroll down the page it will become “hidden”. This is generally better for usability and SEO. However, in version 1.4 we added a new sticky option which you can enable in the Customizer so that the notification bar remains visible as you scroll down the page. The sticky functionality makes use of the CSS sticky property (not javascript).

\n

Although disabled by default, you can enable a close icon for your notice. When enabled, your visitors will see an “x” icon over the top bar which they can click to hide the message for their current and future sessions. This functionality makes use of localStorage (not cookies).

\n

Live Demo: You can view a live demo for the notification bar on our More Widgets Plugin Demo

\n

Features

\n
    \n
  • Sitewide (or homepage only) top notification bar.
  • \n
  • Easy setup via the WordPress customizer.
  • \n
  • Optional close icon.
  • \n
  • Optional sticky display.
  • \n
  • Custom background, color, text alignment and font size settings.
  • \n
  • Optional callout button.
  • \n
  • Responsive design so it looks good on mobile.
  • \n
  • Minimal code.
  • \n
  • Vanilla Javascript used for close icon (jQuery not needed).
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/easy-notification-bar.zip","tags":{"notice":"notice","notice-bar":"notice bar","notification":"notification","notification-bar":"notification bar","top-bar":"top bar"},"donate_link":"","icons":{"1x":"https://ps.w.org/easy-notification-bar/assets/icon-128x128.png?rev=2515988","2x":"https://ps.w.org/easy-notification-bar/assets/icon-256x256.png?rev=2515988"},"wporg":true},{"name":"Antispam Bee","slug":"antispam-bee","version":"2.10.0","author":"pluginkollektiv","author_profile":"https://profiles.wordpress.org/pluginkollektiv","requires":"4.5","tested":"5.8","requires_php":"5.2","rating":96,"ratings":{"1":7,"2":1,"3":1,"4":2,"5":175},"num_ratings":186,"support_threads":7,"support_threads_resolved":5,"active_installs":700000,"downloaded":5039538,"last_updated":"2021-07-29 11:15am GMT","added":"2009-01-10","homepage":"https://antispambee.pluginkollektiv.org/","short_description":"Antispam plugin with a sophisticated tool set for effective day to day comment and trackback spam-fighting. Build with data protection and privacy in …","description":"

Say Goodbye to comment spam on your WordPress blog or website. Antispam Bee blocks spam comments and trackbacks effectively, without captchas and without sending personal information to third party services. It is free of charge, ad-free and 100% GDPR compliant.

\n

Feature/Settings Overview

\n
    \n
  • Trust approved commenters.
  • \n
  • Trust commenters with a Gravatar.
  • \n
  • Consider the comment time.
  • \n
  • Allow comments only in a certain language.
  • \n
  • Block or allow commenters from certain countries.
  • \n
  • Treat BBCode links as spam.
  • \n
  • Validate the IP address of commenters.
  • \n
  • Use regular expressions.
  • \n
  • Search local spam database for commenters previously marked as spammers.
  • \n
  • Notify admins by e-mail about incoming spam.
  • \n
  • Delete existing spam after n days.
  • \n
  • Limit approval to comments/pings (will delete other comment types).
  • \n
  • Select spam indicators to send comments to deletion directly.
  • \n
  • Optionally exclude trackbacks and pingbacks from spam detection.
  • \n
  • Optionally spam-check comment forms on archive pages.
  • \n
  • Display spam statistics on the dashboard, including daily updates of spam detection rate and a total of blocked spam comments.
  • \n
\n

Support

\n\n

Contribute

\n
    \n
  • Active development of this plugin is handled on GitHub.
  • \n
  • Pull requests for documented bugs are highly appreciated.
  • \n
  • If you think you’ve found a bug (e.g. you’re experiencing unexpected behavior), please post at the support forums first.
  • \n
  • If you want to help us translate this plugin you can do so on WordPress Translate.
  • \n
\n

Credits

\n\n","download_link":"https://downloads.wordpress.org/plugin/antispam-bee.2.10.0.zip","tags":{"anti-spam":"anti-spam","antispam":"antispam","block-spam":"block spam","comment":"comment","comments":"comments"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=TD4AMD2D8EMZW","icons":{"1x":"https://ps.w.org/antispam-bee/assets/icon-128x128.png?rev=977629","2x":"https://ps.w.org/antispam-bee/assets/icon-256x256.png?rev=977629"},"wporg":true},{"name":"SimpleTOC – Table of Contents Block","slug":"simpletoc","version":"4.8","author":"Marc Tönsing","author_profile":"https://profiles.wordpress.org/marcdk","requires":"5.0","tested":"5.8","requires_php":false,"rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":24},"num_ratings":24,"support_threads":2,"support_threads_resolved":1,"active_installs":2000,"downloaded":20616,"last_updated":"2021-07-29 9:07pm GMT","added":"2020-04-14","homepage":"https://marc.tv/simpletoc-wordpress-inhaltsverzeichnis-plugin-gutenberg/","short_description":"Adds a custom Table of Contents Gutenberg block.","description":"

In Gutenberg, add a block and search for “SimpleTOC” or just “TOC”. You need to save your post before you add the block. It works by parsing the post content and retrieving the heading blocks and creates a new dynamic block with a list of links to the headings.

\n

Hide the headline “Table of Contents” and set a maximum display depth in the blocks’ sidebar configuration. Add the CSS class “simpletoc-hidden” to a heading block to remove that specific heading from the generated TOC.

\n

Features

\n
    \n
  • No javascript or css added.
  • \n
  • Designed for Gutenberg.
  • \n
  • Compatible with AMP plugins.
  • \n
  • Minimal and valid HTML output.
  • \n
  • Inherits the style of your theme.
  • \n
  • Support for column block layouts.
  • \n
  • Control the maximum depth of the headings.
  • \n
  • Choose between an ordered and unordered html list.
  • \n
  • SEO friendly: Disable the h2 heading of the TOC block and add your own.
  • \n
  • Comes with English, French, Spanish, German, and Brazilian Portuguese translations.
  • \n
  • Works with non-latin texts. Tested with Japanese and Arabic.
  • \n
  • Finds headlines in groups and reusable blocks. And in groups within reusable blocks.
  • \n
  • Rank Math support.
  • \n
\n

Credits

\n

This plugin is forked from https://github.com/pdewouters/gutentoc by pdewouters and uses code from https://github.com/shazahm1/Easy-Table-of-Contents by shazahm1

\n

Many thanks to Tom J Nowell https://tomjn.com and and Sally CJ who both helped me a lot with my questions over at wordpress.stackexchange.com

\n","download_link":"https://downloads.wordpress.org/plugin/simpletoc.4.8.zip","tags":{"amp":"amp","block":"block","gutenberg":"gutenberg","table-of-contents":"table of contents","toc":"toc"},"donate_link":"https://marc.tv/out/donate","icons":{"1x":"https://ps.w.org/simpletoc/assets/icon.svg?rev=2451408","2x":"https://ps.w.org/simpletoc/assets/icon-256x256.png?rev=2451408","svg":"https://ps.w.org/simpletoc/assets/icon.svg?rev=2451408"},"wporg":true},{"name":"Log in with Google","slug":"login-with-google","version":"1.2.1","author":"rtCamp","author_profile":"https://profiles.wordpress.org/rtcamp","requires":"5.4.2","tested":"5.7.2","requires_php":"7.3","rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":6},"num_ratings":6,"support_threads":5,"support_threads_resolved":2,"active_installs":300,"downloaded":2919,"last_updated":"2021-07-23 10:00pm GMT","added":"2020-10-01","homepage":"","short_description":"Minimal plugin that allows WordPress users to log in using Google.","description":"

Ultra minimal plugin to let your users login to WordPress applications using their Google accounts. No more remembering hefty passwords!

\n

Initial Setup

\n
    \n
  1. \n

    Create a project from Google Developers Console if none exists.

    \n
  2. \n
  3. \n

    Go to Credentials tab, then create credential for OAuth client.

    \n
      \n
    • Application type will be Web Application
    • \n
    • Add YOUR_DOMAIN/wp-login.php in Authorized redirect URIs
    • \n
    \n
  4. \n
  5. \n

    This will give you Client ID and Secret key.

    \n
  6. \n
  7. \n

    Input these values either in WP Admin > Settings > WP Google Login, or in wp-config.php using the following code snippet:

    \n

    `
    \ndefine( ‘WP_GOOGLE_LOGIN_CLIENT_ID’, ‘YOUR_GOOGLE_CLIENT_ID’ );
    \ndefine( ‘WP_GOOGLE_LOGIN_SECRET’, ‘YOUR_SECRET_KEY’ );
    \n“

    \n
  8. \n
\n

Browser support

\n

These browsers are supported. Note, for example, that One Tap Login is not supported in Safari.

\n

How to enable automatic user registration

\n

You can enable user registration either by
\n– Enabling Settings > WP Google Login > Enable Google Login Registration

\n

OR

\n
    \n
  • Adding
    \ndefine( 'WP_GOOGLE_LOGIN_USER_REGISTRATION', 'true' );
    \nin wp-config.php file.
  • \n
\n

Note: If the checkbox is ON then, it will register valid Google users even when WordPress default setting, under

\n

Settings > General Settings > Membership > Anyone can register checkbox

\n

is OFF.

\n

Restrict user registration to one or more domain(s)

\n

By default, when you enable user registration via constant WP_GOOGLE_LOGIN_USER_REGISTRATION or enable Settings > WP Google Login > Enable Google Login Registration, it will create a user for any Google login (including gmail.com users). If you are planning to use this plugin on a private, internal site, then you may like to restrict user registration to users under a single Google Suite organization. This configuration variable does that.

\n

Add your domain name, without any schema prefix and www, as the value of WP_GOOGLE_LOGIN_WHITELIST_DOMAINS constant or in the settings Settings > WP Google Login > Whitelisted Domains. You can whitelist multiple domains. Please separate domains with commas. See the below example to know how to do it via constants:

\n
`\n
\n

define( ‘WP_GOOGLE_LOGIN_WHITELIST_DOMAINS’, ‘example.com,sample.com’ );
\n `

\n

Note: If a user already exists, they will be allowed to login with Google regardless of whether their domain is whitelisted or not. Whitelisting will only prevent users from registering with email addresses from non-whitelisted domains.

\n

Hooks

\n

Filter wp_google_login_scopes
\nThis filter can be used to filter existing scope used in Google Sign in.
\nYou can ask for additional permission while user logs in.
\nThis filter will provide 1 parameter scopes in callback, which contains array of scopes.

\n

wp-config.php parameters list

\n
    \n
  • \n

    WP_GOOGLE_LOGIN_CLIENT_ID (string): Google client ID of your application.

    \n
  • \n
  • \n

    WP_GOOGLE_LOGIN_SECRET (string): Secret key of your application

    \n
  • \n
  • \n

    WP_GOOGLE_LOGIN_USER_REGISTRATION (boolean) (optional): Set true If you want to enable new user registration. By default, user registration defers to Settings > General Settings > Membership if constant is not set.

    \n
  • \n
  • \n

    WP_GOOGLE_LOGIN_WHITELIST_DOMAINS (string) (optional): Domain names, if you want to restrict login with your custom domain. By default, it will allow all domains. You can whitelist multiple domains.

    \n
  • \n
\n

BTW, We’re Hiring!

\n

\n","download_link":"https://downloads.wordpress.org/plugin/login-with-google.1.2.1.zip","tags":{"authentication":"authentication","google-login":"Google Login","oauth":"oauth","sign-in":"sign in","sso":"sso"},"donate_link":"https://rtcamp.com/","icons":{"1x":"https://ps.w.org/login-with-google/assets/icon-128x128.png?rev=2402713","2x":"https://ps.w.org/login-with-google/assets/icon-256x256.png?rev=2402713"},"wporg":true},{"name":"Search with Google","slug":"search-with-google","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://wordpress.org/plugins/search-with-google/","short_description":"

This plugin replaces the WordPress default search query with server-side results from Custom Search Site Restricted JSON API. 

\n","description":"\n\n\n

This plugin replaces the WordPress default search query with server-side results from Custom Search Site Restricted JSON API

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2020/11/searchWithGoogle-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2020/11/searchWithGoogle-372x209.jpg","svg":""},"wporg":false},{"name":"Page Builder Gutenberg Blocks – CoBlocks","slug":"coblocks","version":"2.16.0","author":"GoDaddy","author_profile":"https://profiles.wordpress.org/godaddy","requires":"5.0","tested":"5.8","requires_php":"5.6","rating":88,"ratings":{"1":7,"2":3,"3":4,"4":5,"5":63},"num_ratings":82,"support_threads":16,"support_threads_resolved":3,"active_installs":500000,"downloaded":5419192,"last_updated":"2021-08-12 8:29pm GMT","added":"2018-04-19","homepage":"","short_description":"CoBlocks is a suite of page builder WordPress blocks for Gutenberg, with 10+ new blocks and a true page builder experience with rows and columns.","description":"

CoBlocks is the most innovative collection of page building WordPress blocks for the new Gutenberg WordPress block editor.

\n

With additional blocks and true row and column building, CoBlocks gives you a true page builder experience for Gutenberg.

\n

CoBlocks is powerful but lightweight: it adds functionality to the WordPress editor without bloat. This is the plugin you’ve been waiting for, and it will make you rethink what WordPress is capable of.

\n

Make Beautiful Web Pages With Gutenberg & CoBlocks

\n

CoBlocks is the last page builder you’ll ever need: you get a winning mix of additional WordPress blocks, and page builder functionality. With CoBlocks you have everything you need to make beautiful web pages with the new block editor:

\n
    \n
  • Accordion Block
  • \n
  • Alert Block
  • \n
  • Author Profile Block
  • \n
  • Buttons Block
  • \n
  • Carousel Gallery Block
  • \n
  • Click to Tweet Block
  • \n
  • Collage Gallery Block
  • \n
  • Dynamic Separator Block
  • \n
  • Events Block (New!)
  • \n
  • Features Block
  • \n
  • Food & Drinks Block
  • \n
  • Form Block
  • \n
  • Gif Block
  • \n
  • GitHub Gist Block
  • \n
  • Hero Block
  • \n
  • Highlight Block
  • \n
  • Icon Block
  • \n
  • Logos & Badges Block
  • \n
  • Map Block
  • \n
  • Masonry Gallery Block
  • \n
  • Media Card Block
  • \n
  • Offset Gallery Block
  • \n
  • Post Carousel Block
  • \n
  • Posts Block
  • \n
  • Pricing Table Block
  • \n
  • Resizable Row/Columns Blocks
  • \n
  • Services Block
  • \n
  • Shape Divider Block
  • \n
  • Social Profiles Block
  • \n
  • Social Sharing Block
  • \n
  • Stacked Gallery Block
  • \n
\n

Breakthrough Page Builder System

\n

CoBlocks features an innovative block system that allows you to create stunning web pages, and even entire websites, with the new WordPress editor.

\n

You get the extra blocks you need and the layout and design functionality for a true page builder experience.

\n

Use the exceptional Row and Columns blocks to add dynamically generated content areas with specific responsive margin and padding settings that only CoBlocks provides.

\n

Style these with innovative new blocks such as the Shape Divider, which lets you split up your content with beautiful dividers.

\n

Each of the WordPress blocks within CoBlocks have been precisely fined tuned to offer a familiar, yet powerful, customization experience. Tailor each block to your taste using our custom controls and settings. Change fonts, set margin and padding, pick colors and more.

\n

Custom Typography Controls

\n

The breakthrough Typography Control Panel within CoBlocks lets you design web pages with alluring typographic elements. Set fonts, sizes, weights, transformations and more, in our CoBlocks blocks, and in core WordPress blocks.

\n

Free Companion Theme

\n

CoBlocks is built to show off the best of Gutenberg, but it requires a Gutenberg-first theme to unlock its full potential. We also created the free Go theme in the WordPress theme repository as the perfect companion for CoBlocks.

\n

Going Beyond Gutenberg Blocks

\n

The vision for CoBlocks is to create a suite of Gutenberg blocks to help folks make beautiful websites easily. These newest releases of CoBlocks is the ultimate expression of that vision.

\n

Built With Developers in Mind

\n

Extensible, adaptable, and open source — CoBlocks is created with theme and plugin developers in mind. If you’re interested to jump in the project, there are opportunities for developers at all levels to get involved. Contribute to CoBlocks on GitHub and join the party. 🎉

\n","download_link":"https://downloads.wordpress.org/plugin/coblocks.2.16.0.zip","tags":{"blocks":"blocks","gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","page-builder":"page builder","wordpress-blocks":"wordpress blocks"},"donate_link":"","icons":{"1x":"https://ps.w.org/coblocks/assets/icon-128x128.jpg?rev=2243972","2x":"https://ps.w.org/coblocks/assets/icon-256x256.jpg?rev=2243972"},"wporg":true},{"name":"Simple Author Box","slug":"simple-author-box","version":"2.42","author":"WebFactory Ltd","author_profile":"https://profiles.wordpress.org/webfactory","requires":"4.6","tested":"5.8","requires_php":"5.6","rating":88,"ratings":{"1":9,"2":0,"3":5,"4":8,"5":75},"num_ratings":97,"support_threads":12,"support_threads_resolved":12,"active_installs":50000,"downloaded":896531,"last_updated":"2021-08-13 8:08am GMT","added":"2014-08-08","homepage":"https://wpauthorbox.com/","short_description":"Add a responsive author box with social icons to any post. Great author box for…","description":"

Simple Author Box adds a responsive author box at the end of your posts, showing the author name, author gravatar and author description – author bio. It also adds over 30 social profile fields on WordPress user profile screen, allowing to display the author social icons in the author box.

\n

Main Features

\n
    \n
  • Shows author gravatar, name, website, description (author bio) and social icons
  • \n
  • Fully customizable to match your theme design (style, color, size and text options)
  • \n
  • Nice looking on desktop, laptop, tablet or mobile phones
  • \n
  • Automatically insert the author box at the end of your post
  • \n
  • Option to manually insert the author box on your template file (single.php or author.php)
  • \n
  • Simple Author Box has RTL support
  • \n
  • Simple Author Box has AMP support
  • \n
  • Great for guest posts, and guest authors
  • \n
\n

Simple Author Box Pro Features

\n
\n

Premium features only available in Simple Author Box Pro

\n
    \n
  • Change author box position to before/after content
  • \n
  • Choose whether the author’s name should link to its website/page/none
  • \n
  • Select where to show author box on
  • \n
  • Add rotate effect on author avatar hover
  • \n
  • Option to open author website link in a new tab
  • \n
  • Option to add “nofollow” attribute on author website link
  • \n
  • Choose the author website’s position: right/left
  • \n
  • Social icons type, style, rotate effect, shadow effect, thin border
  • \n
  • Option to change the color palette
  • \n
  • Choose the font and font sizes for the author’s job title, website, name, and description
  • \n
  • Enable guest authors and co-authors
  • \n
  • Option to use guest authors as co-authors
  • \n
  • Top authors widget – displays the most popular authors based of comments
  • \n
  • Simple author box widget – displays the users selected
  • \n
\n
\n

Read more about the Simple Author Box advanced features.

\n","download_link":"https://downloads.wordpress.org/plugin/simple-author-box.2.42.zip","tags":{"author-bio":"author bio","author-box":"author box","author-profile-fields":"author profile fields","author-social-icons":"author social icons","responsive-author-box":"responsive author box"},"donate_link":"","icons":{"1x":"https://ps.w.org/simple-author-box/assets/icon-128x128.jpg?rev=1821054"},"wporg":true},{"name":"Genesis Blocks","slug":"genesis-blocks","version":"1.2.5","author":"StudioPress","author_profile":"https://profiles.wordpress.org/studiopress","requires":"5.3","tested":"5.8","requires_php":"7.1","rating":90,"ratings":{"1":1,"2":0,"3":1,"4":0,"5":9},"num_ratings":11,"support_threads":12,"support_threads_resolved":4,"active_installs":30000,"downloaded":194966,"last_updated":"2021-07-20 6:30pm GMT","added":"2020-08-25","homepage":"https://studiopress.com/genesis-pro/","short_description":"A collection of content blocks, sections, & full-page layouts for the block editor.","description":"

Genesis Blocks is a collection of page building blocks for the Gutenberg block editor. Building pages with the block editor and Genesis Blocks gives you more control to quickly create and launch any kind of site you want!

\n

Installing the customizable Genesis Blocks plugin adds a collection of beautiful, site-building blocks to help you customize page layouts, increase engagement, and get results for your business. Genesis Blocks provides everything from customizable buttons, to beautifully-designed page sections and full-page layout designs via the Section & Layout block.

\n

Along with the blocks themselves, Genesis Blocks extends the content creation experience by providing a library of page sections and full-page layouts, all available from within the block editor.

\n

Create compelling content faster.

\n

Create and use content quickly with prebuilt and custom content sections and full-page layouts.

\n

Enhance the Gutenberg editor.

\n

Additional content blocks and the layout selector make it easy to get the most value out of the block-based editor.

\n

Genesis Blocks currently includes the following blocks to help you build content and pages quickly and effortlessly:

\n
    \n
  • Section & Layout Block
  • \n
  • Advanced Columns Block
  • \n
  • Newsletter Block
  • \n
  • Pricing Block
  • \n
  • Post Grid Block
  • \n
  • Container Block
  • \n
  • Testimonial Block
  • \n
  • Inline Notice Block
  • \n
  • Accordion Block
  • \n
  • Share Icons Block
  • \n
  • Call-To-Action Block
  • \n
  • Customizable Button Block
  • \n
  • Spacer & Divider Block
  • \n
  • Author Profile Block
  • \n
  • Drop Cap Block
  • \n
\n

Do more with Genesis Pro

\n

For those wanting to level-up with Genesis Blocks, a Genesis Pro subscription brings even richer tooling and a bigger library of sections and layouts.

\n
    \n
  • 2 new blocks (more coming soon)
  • \n
  • 26 pre-built full-page layouts
  • \n
  • 56 pre-built sections
  • \n
  • Save & reuse your own sections & layouts
  • \n
  • Advanced block-level user permissions
  • \n
  • Access to and support for Genesis Framework & all of our 35 StudioPress-made premium child themes.
  • \n
  • Additional advanced features for the rest of the Genesis Product Suite
  • \n
\n

Genesis Pro includes even more value for modern WordPress content creators, marketers, and developers. Learn more about Genesis Pro here.

\n

Google AMP Support

\n

The Accelerated Mobile Pages (AMP) project is a publishing format created by Google to enhance site performance for mobile website users. AMP pages are specially designed for Google search users to quickly load website pages without using any extraneous data. Genesis Blocks has support for AMP built into each block!

\n

Help & Docs

\n

User and developer docs for Genesis Blocks can be found here.

\n","download_link":"https://downloads.wordpress.org/plugin/genesis-blocks.1.2.5.zip","tags":{"blocks":"blocks","editor":"editor","gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","page-builder":"page builder"},"donate_link":"https://studiopress.com","icons":{"1x":"https://ps.w.org/genesis-blocks/assets/icon-128x128.png?rev=2368839","2x":"https://ps.w.org/genesis-blocks/assets/icon-256x256.png?rev=2368840"},"wporg":true},{"name":"MathML Block","slug":"mathml-block","version":"1.2.0","author":"adamsilverstein","author_profile":"https://profiles.wordpress.org/adamsilverstein","requires":"5.0","tested":"5.5.5","requires_php":"5.6","rating":90,"ratings":{"1":0,"2":0,"3":0,"4":1,"5":1},"num_ratings":2,"support_threads":1,"support_threads_resolved":0,"active_installs":500,"downloaded":7384,"last_updated":"2020-10-01 11:05pm GMT","added":"2018-12-28","homepage":"","short_description":"A MathML block for the WordPress block editor (Gutenberg).","description":"

A MathML block for the WordPress block editor (Gutenberg).
\nRequires PHP 5.4+ and WordPress 5.0+.

\n

Development takes place on the GitHub repository: https://github.com/adamsilverstein/mathml-block.

\n

Screencast: https://cl.ly/c0f6bbfbc3b1

\n

What is MathML?

\n

Mathematical Markup Language is a mathematical markup language, an application of XML for describing mathematical notations and capturing both its structure and content. It aims at integrating mathematical formulae into World Wide Web pages and other documents.

\n

The MathML block uses MathJax to render MathML formulas in the editor and on the front end of a website. MathJax (https://www.mathjax.org/) is A JavaScript display engine for mathematics that works in all browsers.

\n

To test a MathML block and enter a formula, for example: \\[x = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}\\].

\n

To test using math formulas inline, type an formula into a block of text, select it and hit the ‘M’ icon in the control bar. For example: \\( \\cos(θ+φ)=\\cos(θ)\\cos(φ)−\\sin(θ)\\sin(φ) \\). Note: if you are copying and pasting formulas into the rich text editor, switching to HTML/code editor mode is less likely to reformat your pasted formula.

\n

This plugin is compatible with the official AMP plugin by rendering amp-mathml on AMP pages.

\n

Technical Notes

\n
    \n
  • Requires PHP 5.6+.
  • \n
  • Requires WordPress 5.0+.
  • \n
  • Issues and Pull requests welcome on the GitHub repository: https://github.com/adamsilverstein/mathml-block.
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/mathml-block.zip","tags":{"block":"block","block-editor":"block-editor","gutenberg":"gutenberg","math":"math","mathml":"mathml"},"donate_link":"","icons":{"1x":"https://ps.w.org/mathml-block/assets/icon-128x128.png?rev=2002452","2x":"https://ps.w.org/mathml-block/assets/icon-256x256.png?rev=2002452"},"wporg":true},{"name":"Calculated Fields Form","slug":"calculated-fields-form","version":"1.1.14","author":"CodePeople","author_profile":"https://profiles.wordpress.org/codepeople","requires":"3.0.5","tested":"5.8","requires_php":false,"rating":96,"ratings":{"1":20,"2":2,"3":4,"4":26,"5":675},"num_ratings":727,"support_threads":100,"support_threads_resolved":99,"active_installs":60000,"downloaded":3469627,"last_updated":"2021-08-31 10:52pm GMT","added":"2013-03-12","homepage":"https://cff.dwbooster.com","short_description":"Calculated Fields Form allows you to create both simple and rich forms, quickly like a…","description":"

The “Calculated Fields Form” plugin allows you to create web forms with calculated fields, whose values are dynamically calculated based on other fields’ values in the web form.

\n

The possibilities are unlimited. For example, you can create forms with financial calculations, date operations to create reservation forms, and calculate the product prices. The plugin includes text operations for editing, translation, or advertising services. There are more advanced operations available such as determining the distance between addresses or generating graphs. The resulting forms are 100% mobile responsive.

\n

The most impressive thing is that you don’t need to hire a programmer to create the forms. With basic knowledge, you will have a professional form in just five minutes.

\n

Creating a form is all visual. The “Calculated Fields Form” plugin includes a form editor with multiple controls. Such as text fields, numeric fields, currency fields, slider controls, email fields, radio buttons, checkboxes, container fields, page breaks to create multipage forms, and most importantly, calculated fields.

\n

The form editor includes a list of controls, a property bar to easily edit field properties, a dashboard where you can design your forms, and the attributes for form configuration. Also, the plugin comes with multiple predefined layouts to change the forms’ appearance. If there are not enough predefined layouts for your project, there is a style editor to customize the form’s design.

\n

The “Calculated Fields Form” plugin includes integration with popular page builders:

\n
    \n
  • Classic WordPress Editor
  • \n
  • Gutenberg Editor
  • \n
  • Elementor
  • \n
  • Page Builder by SiteOrigin
  • \n
  • Beaver Builder
  • \n
  • WPBakery Page Builder
  • \n
  • DIVI Builder
  • \n
\n

For other editors, it is possible to insert the form into the pages via its shortcode. Each web form has an associated shortcode that allows you to insert it wherever you want.

\n

Features

\n

Main features:

\n
    \n
  • Visual form builder with an intuitive and interactive interface.
  • \n
  • Includes general-purpose controls such as radio buttons, checkboxes, menu lists, date fields, slider controls, numeric fields, text currency fields, etc.
  • \n
  • Includes calculated fields whose values result from operations involving other form fields.
    \nInsert as many calculated fields in the form as you need.
  • \n
  • Contains an advanced formula editor associated with the calculated fields with syntax highlighting and error detection.
  • \n
  • Features many operations modules: mathematical operations, operations with dates, financial operations, distance operations, text management, operations for calling remote services, etc. The calculated fields can identify numbers and prices within the values of the fields.
  • \n
  • Distributed with several predefined forms that you can use as a starting point for your projects.
  • \n
  • Includes several design templates.
  • \n
  • Supports multi-pages forms by inserting page break controls between fields belonging to different pages.
  • \n
  • Allows the grouping of fields inside container controls (Div and Fieldset).
  • \n
  • Possible to define dependency rules between fields in the form, which is very useful in the design of wizards.
  • \n
\n

Other features:

\n
    \n
  • From the plugin configuration page, it is possible to duplicate a form by pressing the “Clone” button associated with it. By cloning a form, you can reuse the work already done.
  • \n
  • Includes a troubleshooting and optimization area.
  • \n
  • Allows you to disable forms in the indexing process to improve the speed of the website.
  • \n
  • Includes a version control in the forms to recover previous versions.
  • \n
\n

Predefined forms:

\n

“Calculated Fields Form” is distributed with five predefined sample forms.

\n
    \n
  1. Simple Calculator Operations
  2. \n
  3. Calculation with Dates (bookings with check-in and check-out dates)
  4. \n
  5. Ideal Weight Calculator
  6. \n
  7. Pregnancy Calculator
  8. \n
  9. Lease Calculator
  10. \n
\n

You can clone a sample form to implement your project, or create a new form from scratch.

\n
\n

Calculated Fields Form Commercial
\n The free version of the “Calculated Fields Form” plugin includes only basic functionality. Other distributions (Professional, Developer, and Platinum) are available with advanced functionalities, such as sending notification emails, integration with payment gateways and external services, controls for database’s connection (and connection to other data sources), complex operations, and many other features.

\n
\n

Features of the Profesional version:

\n
    \n
  • Includes all the features of the free version of the plugin.
  • \n
  • Submit the data collected by the forms and store it on the website for review.
  • \n
  • Send notification emails with the data collected by the form, as well as confirmation emails to the users.
  • \n
  • Integrate the form with PayPal and calculate the amount to be charged through a calculated field.
    \nPayments allow SCA (strong customer authentication), compatible with the new payment services (PSD 2) – Directive (EU).
  • \n
  • Export and import forms between different WordPress sites.
  • \n
  • Different mechanisms to protect forms, such as captcha, WordPress nonces, and honeypot fields.
  • \n
  • Associate “Thank You” page with the form, where you can show a summary of the form’s submission.
  • \n
  • Dashboard widget to show the last week’s submissions.
  • \n
  • Cache the forms to increase the rendering speed.
  • \n
  • Export the information submitted by the forms to a CSV file and use it with third-party tools such as Excel, OpenOffice, LibreOffice, or any other spreadsheet editor.
  • \n
\n

Features of the Developer version:

\n\n

Includes add-ons to extend the form features and make use of third-party plugins and external services

\n
    \n
  • Server-Side Equations add-on: define server-side equations.
  • \n
  • Verification Code add-on: verifies the user’s email by sending him a verification code and blocking the form’s submission until the verification code is entered.
  • \n
  • WooCommerce add-on: integrate forms with WooCommerce products and calculate their prices, dimensions, and weight at the runtime.
  • \n
  • SalesForce add-on: integrate the form with the SalesForce service.
  • \n
  • WebHooks add-on: send the information collected by the form to a WebHook URL to open countless possibilities. By connecting your form to services such as Zapier, Microsoft Flow, IFTTT, Workato, and others, you can connect to hundreds of third-party services (e.g. Zoho CRM, Dropbox, Mailchimp, Google Drive, Facebook, Twitter, etc.).
  • \n
  • User Permissions add-on: control the forms’ access, as well as allowing users to access and edit their data.
  • \n
  • User Registration Form add-on: build a user registration form that captures the user’s basic information and metadata.
  • \n
  • reCAPTCHA add-on: replace the basic captcha with Google reCAPTCHA to protect the forms.
  • \n
\n

Features of the Platinum version:

\n
    \n
  • Includes all the features of free, Professional, and Developer versions of the plugin.
  • \n
  • Unique Fields Values add-on: verifies that the values entered by users have not been used in previous submissions.
  • \n
  • Easy Digital Downloads add-on: integrate the forms into Easy Digital Downloads products and calculate their prices at the runtime.
  • \n
  • Google Analytics add-on: generate usage reports in “Google Analytics” for the users’ actions.
  • \n
  • PayPal Pro add-on: enable the payer’s credit card details to be entered directly through the website without any redirection to the PayPal website.
  • \n
  • Upload Files add-on: add uploaded files to the media library and extend the file types accepted by WordPress.
  • \n
  • DropBox Integration add-on: copy or move the uploaded files to a DropBox account.
  • \n
  • ip2location add-on: identify the users’ data using the ip2location databases.
  • \n
  • Google Places add-on: transform form fields into autocomplete address fields.
  • \n
  • Autocomplete Places add-on: transform form fields into autocomplete address fields by using the Photon API.
  • \n
  • Signature add-on: convert form fields into “Signature” fields, allowing the users to sign the form with a mouse or touchscreen.
  • \n
  • iCal add-on: send iCal file in the notification emails to import the events into most popular calendars like Outlook and Google Calendar.
  • \n
  • CSV Generator add-on: export the information collected by the form to CSV files and attach these to the notification emails.
  • \n
  • PDF Generator add-on: generate PDF files with the information collected by the forms and attach them to the notification emails.
  • \n
  • WebMerge add-on: integrate the forms with FormStack documents (formerly WebMerge) to generate PDF and Office documents at runtime with the information collected by the web forms.
  • \n
  • PrintFriendly add-on: generate PDF files with the PrintFriendly API and attach the resulting files to the notification emails.
  • \n
  • Mailchimp add-on: add new members to the MailChimp account.
  • \n
  • Mautic add-on: add new contacts (or update existing ones) into the Mautic Service.
  • \n
  • HubSpot add-on: add/update contacts in HubSpot, using the information collected by the form.
  • \n
  • Emma add-on: add new members to the Emma service.
  • \n
  • Twilio add-on: send notification messages (SMS) in the forms’ submissions.
  • \n
  • MailPoet add-on: add new subscribers to MailPoet’s Mailing Lists (MailPoet versions 2 and 3).
  • \n
  • AffiliateWP add-on: integrate the forms with the AffiliateWP plugin.
  • \n
  • Authorize.Net add-on: accept payments via Authorize.Net from the form.
  • \n
  • Stripe add-on: accept payments via the Stripe payment gateway from the form.
  • \n
  • Skrill Payments Integration add-on: integrate with the Skrill Moneybookers payment gateway.
  • \n
  • TargetPay (iDeal) add-on add-on: integrate with iDeal, the popular Dutch payment method.
  • \n
  • Mollie (iDeal) add-on: accept payments via iDeal.
  • \n
  • RedSys / Servired / Sermepa add-on provides: a secure interface for accepting credit card payments from most banks in Spain.
  • \n
  • PayTM add-on: a secure interface for accepting payments with credit cards, debit cards, net banking, wallets, and EMI.
  • \n
  • SagePay add-on: a secure interface for accepting payments via SagePay.
  • \n
  • Sage Payment add-on: a secure interface for accepting payments through a secure SSL checkout system for both bankcard and virtual check transactions.
  • \n
\n

Please keep the plugin updated. Updates contain bug fixes as well as new features. The WordPress directory distributes the updates for the free version of the plugin. But for commercial versions, it would be necessary to register your copy of the plugin. The following link describes the registration process: CLICK HEREThis section mainly contains notes on features of the form builder that are too detailed to include in the main description.

\n

Conditional rules

\n

It is possible to show or hide form fields (dependent fields) based on the options selected in checkbox fields, radio buttons, the options selected in dropdown menus, or the result of calculated fields.

\n

The value of a dependent field is zero when it is hidden/disabled. The plugin excludes the disabled form fields from the submission.

\n

Additional details about the use of dependencies

\n

Predefined values

\n

The predefined values in the fields have two possible uses:

\n

1- To fill the field by default. This makes it easier for the end-user to enter values.

\n

2- Hint of the values to be entered in the field (like “Enter your name”). To use the predefined value as a placeholder, you must tick the “Hide predefined value on click” checkbox. The value will disappear once the user starts filling in the field. The calculated fields’ equations ignore placeholders.

\n

The “User Instructions” attribute

\n

The “User instructions” attribute in the field settings allows you to instruct the user on how to fill in the field. By default, the instructions appear as smaller text on the public website. But they can be configured as tooltips.

\n

Adding CSS layout keywords

\n

The “Add CSS layout keywords” attribute in the fields settings allows you to apply CSS styles to fields. You must only enter the name of the CSS class names, and not their definitions.

\n

You can define the CSS classes via the “Customize Form Design” attribute in the “Form Settings” tab. This attribute contains a CSS editor with syntax highlighting and error checking.

\n

If you want to assign several class names to the field, separate them by space characters.

\n

The plugin includes multiple predefined classes that you can assign to the form fields.

\n

More information about the form’s design can be found by reading the following post in the plugin’s blog:

\n

Customizing the form’s design

\n

The classes listed below allow you to align two, three, or four fields on the same line:

\n
column2\ncolumn3\ncolumn4\n
\n

For example, if you want to put two fields on the same line, give both fields the class name “column2”.

\n

There are other variants for displaying several fields on the same line, such as container fields (Div or Fieldset). Container fields allow you to select the number of columns in your configuration. The following post describes all the alternatives for positioning the fields in the form:

\n

Formatting the form (distributing the fields in columns)

\n

Multi-page form

\n

To create multi-page forms, you must insert “Page break” controls between fields belonging to different pages.

\n

When the user presses the “Next Page” button, the plugin validates the fields in the current form. If there is any validation error (such as an unfilled required field), the plugin stops the “Next page” action.

\n

Hidden calculated fields

\n

Calculated fields include a checkbox in the configuration that allows them to be hidden from the public website. This feature is essential in those fields that are used to calculate intermediate values or when we want to show the results only in emails or thank you pages.

\n

Equation / Formula format for calculated fields

\n

Below, some possible formulas are included as examples, but the possibilities are endless.

\n
    \n
  • \n

    With simple mathematical operations:

    \n
    fieldname1 + fieldname2\n\nfieldname1 * fieldname2\n\nfieldname1 / fieldname2\n\nfieldname1 - fieldname2\n\nfieldname1 - fieldname2\n
    \n
  • \n
  • \n

    With mathematical operations involving multiple fields and grouped fields:

    \n
    fieldname1 * (fieldname2 + fieldname3)\n
    \n
  • \n
  • \n

    With rounding operations. Round the result to two decimal places:

    \n
    PREC(fieldname2 / fieldname3, 2)\n
    \n
  • \n
  • \n

    There are infinite number of formulas that can be created using complex structures. For example, the following formula includes conditional statements:

    \n
    (function () {\nif (100 < fieldname3) return fieldname1 + fieldname2;\nif (fieldname3 <= 100) return fieldname1 * fieldname2;\n})();\n
    \n
  • \n
  • \n

    For complex formulas/equations you must use the function format with return statement to return the result to the calculated field:

    \n
     (function () {\n    var result = 0;\n    /* Your code here */\n    return result;\n}) ();\n
    \n
  • \n
\n

Operations and operators to use in equations/formulas

\n

One of the “Calculated Fields Form” strengths is the ability to use any valid JavaScript code to implement the equations/formulas.

\n

However, the plugin includes a wide variety of operations and operators to simplify the development process.

\n

Mathematical Operations and Operators

\n

Conditional Operations

\n

Field Handling Operations

\n

Operations for interacting with external services

\n

Operations for handling URLs and query strings

\n

In addition to the operation modules listed above, the Developer and Platinum versions of the plugin include additional modules:

\n

Date Time Operations

\n

Financial Operations

\n

Distance and Travel Time Operations

\n

Operations to generate charts

\n

Controls available in the form generator of the “Calculated Fields Form”

\n

The complete list of controls is available from this link: CLICK HERE

\n

Create JavaScript variables from parameters received by “GET” or “POST”, “SESSION” variables, or “COOKIES” to use in the equations

\n

The plugin includes the shortcode [CP_CALCULATED_FIELDS_VAR] to generate JavaScript variables from parameters received by “GET” or “POST”, “SESSION” variables, or “COOKIES”:

\n
[CP_CALCULATED_FIELDS_VAR name=\"...\"]\n
\n

In the shortcode, you must replace the “…” symbols with the name of the parameter or variable. It will be the same name for the JavaScript variable.

\n

For example:

\n
[CP_CALCULATED_FIELDS_VAR name=\"varname\"]\n
\n

You can use the variables generated through the shortcode [CP_CALCULATED_FIELDS_VAR] in the formulas of the calculated fields: fieldname1*varname

\n

The complete list of parameters accepted by the variables shortcode is available at the following link: CLICK HERE

\n

Tips for calculating prices

\n

One of the most frequent uses of our plugin is for price calculation. When displaying the price of a product, you may want to split the form into two pages. The first page would request the information needed to calculate the price, and the second page would include the calculated field with the final price. Also, you could use the “Instruct. Text” fields to indicate the terms, conditions, and validity period of the offer.

\n

Note that you can make the “Instruct. Text” fields dependent on the calculated value. This allows you to vary the text displayed to the user depending on the calculated price, as the terms, conditions, or offers often depend on the transaction amount.

\n

Add-ons

\n

The add-ons are only distributed with the Developer and Platinum versions of the plugin.

\n

The plugin lists the add ons in the “Add-ons area” of the settings page. To enable the add-ons, you must tick their corresponding checkbox and press the “Activate/Deactivate Add-ons” button.

\n

Server-Side Equations add-on – included in the Developer and Platinum versions of the plugin

\n

Define equations with PHP code on the server-side. The calculated fields call the server-side equations via AJAX.

\n

CLICK HERE for additional information

\n

Verification Code add-on – included in the Developer and Platinum versions of the plugin

\n

The “Verification Code” add-on allows verifying the users’ emails by sending a verification code and blocking the form’s submission until a valid code is entered.

\n

CLICK HERE for additional information

\n

Unique Fields Values add-on – included in the Platinum version of the plugin

\n

The “Unique Fields Values” add-on verifies that the values entered by users have not been used in previous submissions. It allows to enter simple and complex verification rules (one or multiple fields separated by comma symbols).

\n

CLICK HERE for additional information

\n

WooCommerce add-on – included in the Developer and Platinum versions of the plugin

\n

Integrate the forms created by the “Calculated Fields Form” with WooCommerce products and calculate their prices, weights, dimensions, and more at the runtime.

\n

CLICK HERE for additional information

\n

Easy Digital Downloads add-on – included in the Platinum version of the plugin

\n

Integrate forms created by the “Calculated Fields Form” with the Easy Digital Downloads products, and calculate their price dynamically at the runtime.

\n

CLICK HERE for additional information

\n

SalesForce add-on – included in the Developer and Platinum versions of the plugin

\n

Add new leads to a SalesForce account using the data collected by the forms.

\n

CLICK HERE for additional information

\n

WebHook add-on – included in the Developer and Platinum versions of the plugin

\n

Post the information collected by the forms to WebHook URLs.

\n

Through connecting the forms created by the plugin with services like Zapier, Microsoft Flow, Workato, or IFTTT (and many others), you will have access to hundreds of third-party services, like Zoho CRM, Dropbox, Mailchimp, Evernote, Google Drive, Facebook, Twitter, and more than 300 services https://zapier.com/zapbook/apps/, https://flow.microsoft.com/, https://ifttt.com/discover

\n

CLICK HERE for additional information

\n

User Permissions add-on – included in the Developer and Platinum versions of the plugin

\n

Control access to forms. Access can be restricted to registered users, users with certain roles, or to specific users.

\n

The add-on adds a new shortcode to the plugin to list the data submitted by the logged-in user (it is possible to insert the new shortcode into the user’s profile) and assign user permissions to edit their information or delete an entry.

\n

Limit the number of submissions (e.g. one submission per form/user).

\n

CLICK HERE for additional information

\n

User Registration Form add-on – included in the Developer and Platinum versions of the plugin

\n

Build user registration forms. The form can collect basic user information and metadata required by other plugins.

\n

CLICK HERE for additional information

\n

reCAPTCHA add-on – included in the Developer and Platinum versions of the plugin

\n

Protect forms using Google reCAPTCHA instead of the basic captcha distributed with the plugin, as reCAPTCHA is more visual and intuitive than traditional captchas.

\n

CLICK HERE for additional information

\n

Google Analytics add-on – included in the Platinum version of the plugin

\n

Generate usage reports in “Google Analytics” for the users’ actions.

\n

CLICK HERE for additional information

\n

PayPal Pro add-on – included in the Platinum version of the plugin

\n

Allow the user to enter their credit card details directly on your website without redirecting them to the PayPal website. Once the user has filled the form fields and clicked the submit button, the payment is processed and the posted data (excluding the credit card information) is stored in the WordPress database.

\n

CLICK HERE for additional information

\n

Upload Files add-on – included in the Platinum version of the plugin

\n

Every commercial version of the plugin includes the “Upload File” control to upload files from the form. However, the “Upload Files” add-on allows the uploaded files to be added to the Media Library and be accessed from the pages and posts of the website.

\n

WordPress restricts the file types that can be uploaded. The “Uploads Files” add-on allows the list of accepted files to be extended.

\n

CLICK HERE for additional information

\n

DropBox Integration add-on – included in the Platinum version of the plugin

\n

Copy or move files uploaded through the forms to a DropBox account.

\n

CLICK HERE for additional information

\n

ip2location add-on – included in the Platinum version of the plugin

\n

Use the ip2location databases to identify additional user information based on their IP. Address such as country, city, coordinates, weather station, time zone, ZIP code, etc.

\n

CLICK HERE for additional information

\n

Google Places add-on – included in the Platinum version of the plugin

\n

Transform fields into autocomplete address fields calling the Google Places API.

\n

CLICK HERE for additional information

\n

Autocomplete Places add-on – included in the Platinum version of the plugin

\n

Transform fields into autocomplete address fields by calling the Photon API.

\n

CLICK HERE for additional information

\n

Signature add-on – included in the Platinum version of the plugin

\n

Transform fields into “Signature” fields to allow the users to sign the form with their mouse or touchscreens.

\n

CLICK HERE for additional information

\n

iCal add-on – included in the Platinum version of the plugin

\n

Send the users iCal files attached to the confirmation emails to import events into the most popular calendars like Outlook and Google Calendar.

\n

CLICK HERE for additional information

\n

CSV Generator add-on – included in the Platinum version of the plugin

\n

Export the information collected by the form to CSV files and attach them to the notification emails.

\n

CLICK HERE for additional information

\n

PDF Generator add-on – included in the Platinum version of the plugin

\n

An experimental add-on that generates PDF files with the information collected by the forms and attaches them to the notification emails.

\n

CLICK HERE for additional information

\n

WebMerge add-on – included in the Platinum version of the plugin

\n

Integrate the forms with the FormStack Documents service (formerly WebMerge) to generate PDF and Office documents with the information collected from the form.

\n

CLICK HERE for additional information

\n

Integrate the form with the Silverpop service (now: IBM Watson Campaign Automation) CLICK HERE for additional information

\n

PrintFriendly add-on – included in the Platinum version of the plugin

\n

Send the information collected by the forms to PrintFriendly and attach the resulting PDF files to the notification emails.

\n

CLICK HERE for additional information

\n

Mailchimp add-on – included in the Platinum version of the plugin

\n

Add new members to the MailChimp lists with the information collected by the form.

\n

CLICK HERE for additional information

\n

Mautic add-on – included in the Platinum version of the plugin

\n

Add/update contacts in the Mautic service with information collected by the forms.

\n

CLICK HERE for additional information

\n

HubSpot add-on – included in the Platinum version of the plugin

\n

Add/update HubSpot contacts with information collected by the forms.

\n

CLICK HERE for additional information

\n

Emma add-on – included in the Platinum version of the plugin

\n

Connect the forms to the Emma service to add new members to Emma groups.

\n

CLICK HERE for additional information

\n

Twilio add-on – included in the Platinum version of the plugin

\n

Send notification messages (SMS) through Twilio in the form’s submissions.

\n

CLICK HERE for additional information

\n

MailPoet add-on – included in the Platinum version of the plugin

\n

Adds subscribers to MailPoet Mailing Lists (MailPoet versions 2 and 3).

\n

CLICK HERE for additional information

\n

AffiliateWP add-on – included in the Platinum version of the plugin

\n

Integrate the forms with the “AffiliateWP” plugin.

\n

CLICK HERE for additional information

\n

Authorize.Net add-on – included in the Platinum version of the plugin

\n

The Authorize.net Server Integration Method (Authorize.net SIM) is a hosted payment processing solution that handles all of the steps in processing a transaction.

\n

CLICK HERE for additional information

\n

Stripe add-on – included in the Platinum version of the plugin

\n

The Stripe Payments add-on (www.stripe.com) provides a way to accept all major cards from customers around the world.

\n

CLICK HERE for additional information

\n

Skrill Payments Integration add-on – included in the Platinum version of the plugin

\n

An interface for accepting payments through secure pages.

\n

You can accept cards, more than 20 local payment methods, and over 80 direct bank transfer connections with a single integration.

\n

CLICK HERE for additional information

\n

TargetPay (iDeal) add-on – included in the Platinum version of the plugin

\n

Integrate with iDeal, the most popular Dutch payment method. The integration is made via TargetPay: https://www.targetpay.com/info/ideal?setlang=en

\n

CLICK HERE for additional information

\n

Mollie (iDeal) add-on – included in the Platinum version of the plugin

\n

Integrate with iDeal, the popular Dutch payment method.

\n

CLICK HERE for additional information

\n

RedSys / Servired / Sermepa add-on – included in the Platinum version of the plugin

\n

A secure interface for accepting credit card payments through most banks in Spain (Sabadell, Banco Popular, BBVA, Santander, Bankia-Caixa, Bankinter, etc.)

\n

CLICK HERE for additional information

\n

PayTM add-on – included in the Platinum version of the plugin

\n

A secure interface for accepting payments through credit cards, debit cards, net banking, wallets, and EMI. With over 100 million PayTM users in India, your customers will appreciate the option to pay with their trusted PayTM Wallet.

\n

CLICK HERE for additional information

\n

SagePay add-on – included in the Platinum version of the plugin

\n

A secure interface for accepting payments through SagePay.

\n

CLICK HERE for additional information

\n

Sage Payment add-on – included in the Platinum version of the plugin

\n

An interface for accepting payments through a secure SSL-checkout system for both bank cards and virtual check transactions. All authorized and approved transactions will be delivered to your current bank card and/or virtual check batches, viewable within the Virtual Terminal for order processing and settlement.

\n

CLICK HERE for additional information

\n","download_link":"https://downloads.wordpress.org/plugin/calculated-fields-form.zip","tags":{"calculator":"calculator","contact-form":"contact form","form":"form","form-builder":"form builder","quote-form":"quote form"},"donate_link":"http://cff.dwbooster.com","icons":{"1x":"https://ps.w.org/calculated-fields-form/assets/icon-128x128.jpg?rev=1734377","2x":"https://ps.w.org/calculated-fields-form/assets/icon-256x256.jpg?rev=1734377"},"wporg":true},{"name":"All in One SEO – Best WordPress SEO Plugin – Easily Improve SEO Rankings & Increase Traffic","slug":"all-in-one-seo-pack","version":"4.1.3.3","author":"All in One SEO Team","author_profile":"https://profiles.wordpress.org/smub","requires":"4.9","tested":"5.8","requires_php":"5.4","rating":90,"ratings":{"1":163,"2":21,"3":15,"4":58,"5":1495},"num_ratings":1752,"support_threads":113,"support_threads_resolved":105,"active_installs":2000000,"downloaded":82947899,"last_updated":"2021-08-16 1:02pm GMT","added":"2007-03-30","homepage":"https://aioseo.com/","short_description":"The original WordPress SEO plugin. Improve your WordPress SEO rankings and traffic with our comprehensive SEO tools and smart SEO optimizations.","description":"

AIOSEO – The Best WordPress SEO Plugin & Toolkit

\n

All in One SEO for WordPress is the original WordPress SEO plugin started in 2007. Over 2 million smart website owners use AIOSEO to properly setup WordPress SEO, so their websites can rank higher in search engines.

\n

We believe you shouldn’t have to hire an SEO expert or developer to properly setup WordPress SEO. That’s why we built AIOSEO as the most comprehensive WordPress SEO plugin and marketing toolkit, so you can improve your website’s SEO rankings and uncover new SEO growth opportunities in less than 10 minutes.

\n

At All in One SEO (AIOSEO), user experience is our #1 priority. From website SEO setup to ongoing SEO optimization, our team of SEO experts have created easy to follow SEO workflows that will help you outrank your competitors in search results. This is why many industry leaders award AIOSEO as the most beginner friendly WordPress SEO plugin that’s both EASY and POWERFUL!

\n

AIOSEO’s WordPress SEO plugin features are highly optimized for Google and other popular search engine algorithm because we follow the most up to date SEO standards and SEO best practices. We can honestly say that AIOSEO is the best WordPress SEO plugin in the world.

\n
\n

AIOSEO Pro
\n This plugin is the lite version of the All in One WordPress SEO Pro plugin that comes with all the SEO features you will ever need to rank higher in search engines including smart SEO schema markup, advanced SEO modules, powerful SEO sitemap suite, local SEO module, Google AMP SEO, WooCommerce SEO, and tons more. Click here to purchase the best premium WordPress SEO plugin now!

\n
\n

We took the pain out of optimizing WordPress SEO and made it easy. Here’s why smart business owners, SEO experts, marketers, and developers love AIOSEO, and you will too!

\n

\n

Properly Setup WordPress SEO (without Hiring an Expert)

\n

AIOSEO makes it easy to setup WordPress SEO, the RIGHT WAY. Our smart WordPress SEO setup wizard helps you optimize your website’s SEO settings based on your unique industry needs.

\n

In less than 10 minutes, you will be able to setup all the advanced WordPress SEO features like XML sitemaps, optimized search appearance, SEO meta title, SEO meta description, SEO keywords, Open Graph SEO Knowledge Panel information, social media integration, SEO search console / webmaster tool connections, local SEO, schema markup for SEO, and more.

\n

But don’t just take our word. See what another website owner like yourself is saying:

\n
\n

Swift, honest, full control. After all these years and having used almost every WP SEO plugin I’m amazed by AIOSEO’s depth, simplicity and fast workflow ❤️
\n @aaronbol

\n
\n

Optimize Your Pages for Higher SEO Rankings with TruSEO Analysis

\n

Creating SEO optimized content used to be hard. Why?

\n

Because most business owners aren’t SEO experts.

\n

That’s why we created the TruSEO score. This gives you a more in-depth SEO optimization analysis and an actionable SEO checklist, so you can easily optimize your website pages for any keyword to get higher SEO rankings and maximum traffic.

\n

Our SEO content analysis tool is enabled by default in both the Gutenberg block editor and Classic Editor, so you can quickly optimize your blog posts and pages for your SEO keywords to get higher SEO rankings.

\n

Our SEO readability analysis gives you further insights on how to improve your content for maximum SEO benefits.

\n

The best part about TruSEO analysis is that you can use it to optimize your posts / pages for unlimited SEO keywords.

\n

Seamless SEO Integrations with Webmaster Tools & Social Media

\n

All in One SEO for WordPress offers seamless integration with popular social media platforms like Facebook, Twitter, Pinterest, YouTube, LinkedIn, Instagram, and more.

\n

This ensures that your website preview is optimized for both search engines (SEO), and social media networks.

\n

AIOSEO also makes it easy to connect your website with Google Search Console, Bing webmaster tools, Yandex webmaster tools, Baidu webmaster tools, Google Analytics, and all other SEO webmaster tools.

\n

This helps you easily measure your SEO results and progress.

\n
\n

I’m a professional SEO and used many tools and extensions. Regarding simplicity, individuality and configurability All in One SEO Pro is by far the best SEO plugin out there for WordPress.
\n Joel Steinmann

\n
\n

Smart XML Sitemaps and Rich Snippets (SEO Schema Markup)

\n

Proper website SEO markup plays an important role in improving SEO rankings. That’s why smart SEO experts use AIOSEO for on-page SEO optimization.

\n

Aside from the comprehensive WordPress XML sitemap feature, we also offer News SEO sitemap and Video SEO sitemap to help you improve your website’s SEO ranking and get more traffic.

\n

AIOSEO comes with built-in smart SEO schema markup feature to help you get more traffic through SEO rich snippets, Google featured snippets, breadcrumb site links in SEO, and image SEO search results.

\n
\n

The best SEO plugin. All in One SEO is the best SEO Plugin. I personally find it better than Yoast. This plugin offers so much freedom in configuration.
\n hanapupu

\n
\n

Local SEO, WooCommerce SEO, Google AMP, and More

\n

All in One SEO is the most comprehensive WordPress SEO plugin / marketing toolkit in the world.

\n

We offer complete support for Google Knowledge Graph and Schema.org markup for local businesses. You can add multiple business locations, opening hours, contact info (business email, business phone, business address, etc) and more with our Local SEO module.

\n

AIOSEO also makes WooCommerce SEO easy. With our SEO plugin, you can optimize your product pages and product categories for better SEO rankings (with just a few clicks).

\n

Since AIOSEO is the original WordPress SEO plugin, we have SEO integrations with all popular WordPress plugins such as membership plugin SEO, landing page plugin SEO, Semrush SEO integration, etc. AIOSEO also offers Google AMP integration and works seamlessly with all popular speed & caching plugins.

\n
\n

Best SEO Plugin for WordPress. We continue to use All in One SEO on all our WordPress sites and Clients sites, and we recommend it too all other clients.
\n MySEOGuy

\n
\n

Since SEO is an essential feature, AIOSEO is a must have plugin for every website!

\n

SEO Redirection Manager and 404 Monitoring

\n

AIOSEO Redirection manager helps you set up proper 301 redirects to improve your SEO rankings.

\n

We also support other advanced SEO redirects including 302 redirects, 307 redirects, 410 redirection, 404 redirects, REGEX redirects for advanced SEO needs, and more.

\n

We have an automatic 404 error monitor that helps you track and redirect 404 errors, so you can prevent losing SEO rankings.

\n

Since redirect speed is important for SEO, we built in both Apache / NGINX server level redirects to help you get maximum SEO benefit.

\n

Full All in One SEO Feature List

\n
    \n
  • WordPress SEO Setup Wizard – Properly setup WordPress SEO in less than 10 minutes.
  • \n
  • On-page SEO Optimization – optimize SEO code markup (without hiring a developer)
  • \n
  • TruSEO score – detailed content & readability analysis to help you optimize your pages for higher SEO rankings.
  • \n
  • Smart Meta Title & Description – Automatic SEO generation, dynamic SEO smart tags, and more.
  • \n
  • Unlimited SEO Keywords – our SEO content analyzer helps you optimize your pages for unlimited SEO keywords.
  • \n
  • XML Sitemap – Advanced XML sitemaps to boost your SEO rankings.
  • \n
  • Video SEO Sitemap – Improve your SEO rankings with video sitemap.
  • \n
  • News SEO Sitemap – Increase your SEO traffic with Google News sitemap.
  • \n
  • RSS SEO Sitemap – Improve SEO crawl frequency with RSS sitemap.
  • \n
  • Automatic Image SEO – Our image SEO module helps your images rank higher.
  • \n
  • Local Business SEO – Improve your local business SEO presence with our local SEO module.
  • \n
  • Multiple location SEO – Great for SEO optimization for businesses with multiple local store locations.
  • \n
  • Rich Snippets Schema – Get better click through rate (CTR) and increase SEO rankings with rich snippets schema.
  • \n
  • SEO Knowledge Graph Support – Improve your website’s search appearance with SEO Knowledge panel.
  • \n
  • Advanced SEO Schema – Easily add advanced SEO schema markups like FAQ schema, product schema, recipe schema (food blogger SEO), software application schema markup (SaaS SEO), online course schema (for course SEO), and more.
  • \n
  • Sitelinks Search Box – Helps you get a search box in Google SEO rankings.
  • \n
  • Google Site Links – Our SEO markup can help you get sitelinks for your brand.
  • \n
  • Robots.txt Editor – Control what SEO robots can see with our easy SEO robots.txt editor.
  • \n
  • SEO Audit Checklist – Improve your website’s SEO ranking with our SEO audit checklist.
  • \n
  • Google Search Console – Connect your WordPress site with Google webmaster tools to see additional SEO insights.
  • \n
  • Search Engine Verification Tools – Easily integrate with other popular SEO webmaster tools to improve search visibility.
  • \n
  • Google AMP SEO – Improve your mobile SEO rankings with Google AMP SEO.
  • \n
  • Advanced SEO Canonical URLs – Prevent duplicate content in SEO with automatic canonical URLs and boost your SEO rankings.
  • \n
  • Advanced Robots Meta SEO Settings – granular controls for no index, no follow, no archive, no snippet, max snippet, max video, and more.
  • \n
  • RSS Content for SEO – Stop content theft from hurting your SEO rankings with our RSS Content tool.
  • \n
  • User Access Control – Control who can manage your SEO settings with our advanced SEO access control.
  • \n
  • Competitor Site SEO Analysis – Use our competitor SEO analysis to outrank them by improving your website’s SEO optimization.
  • \n
  • Smart Breadcrumbs – Add Breadcrumb navigation to improve user experience and boost your SEO rankings. Comes with full SEO JSON+LD support.
  • \n
  • Smart SEO Redirects – Setup proper 301 redirects to improve your SEO rankings.
  • \n
  • 404 Error Monitor for SEO – Monitor website 404 errors and set up proper SEO redirects to prevent losing SEO rankings.
  • \n
  • Title and Nofollow for SEO – We make it easy for you to add title and nofollow to external links to improve SEO rankings.
  • \n
\n

WordPress SEO Integrations

\n
    \n
  • WooCommerce SEO – optimize your WooCommerce product pages and improve your WooCommerce store’s SEO rankings.
  • \n
  • MemberPress SEO – optimize your MemberPress course pages and improve your membership site’s SEO rankings.
  • \n
  • Elementor SEO – add SEO optimization for your Elementor landing pages.
  • \n
  • LearnDash SEO – SEO optimization for LearnDash courses.
  • \n
  • Facebook SEO – SEO optimize your website preview on Facebook.
  • \n
  • Twitter SEO – SEO optimize your website preview on Twitter.
  • \n
  • Pinterest SEO – SEO optimize your website preview on Pinterest.
  • \n
  • Open Graph Support – improve your SEO with open graph meta data.
  • \n
  • Knowledge Panel SEO – improve website SEO apperance by adding social media profile links for Facebook, Twitter, Wikpedia, Instagram, LinkedIn, Yelp, YouTube, and more.
  • \n
  • SEO Webmaster Tool Content – Connect your WordPress site with various webmaster tools to improve SEO rankings.
  • \n
  • Semrush SEO integration – See additional SEO keywords and relevant SEO keyphrases with our Semrush SEO integration.
  • \n
\n

WordPress SEO Plugin Importer

\n
    \n
  • Yoast SEO Importer – easily switch from Yoast SEO to AIOSEO with our full SEO migration wizard that includes SEO keywords, SEO title, meta description, XML sitemaps and more.
  • \n
  • Yoast SEO Premium Importer – easily import Yoast SEO premium settings including SEO redirects to AIOSEO with our full SEO migration wizard.
  • \n
  • RankMath SEO Importer – easily switch from RankMath SEO to AIOSEO with our SEO migration wizard.
  • \n
  • SEO Settings Backup – create a backup of your AIOSEO settings.
  • \n
  • Advanced SEO Import / Export – easily import / export AIOSEO settings from one site to another.
  • \n
  • Redirection Importer – import your SEO redirects from the Redirection plugin with our SEO migration wizard.
  • \n
  • Simple 301 Redirects Importer – import your SEO redirects from Simple 301 redirets with our SEO migration wizard.
  • \n
  • Safe Redirection Manager – easily import SEO redirects from safe redirect manager with our SEO migration wizard.
  • \n
\n

After reading this feature list, you can probably imagine why AIOSEO is the best WordPress SEO plugin in the market.

\n

Give AIOSEO a try.

\n

Want to unlock more SEO features? Upgrade to AIOSEO Pro.

\n

Credits

\n

This plugin is created by Benjamin Rojas and Syed Balkhi.

\n

Branding Guideline

\n

AIOSEO® is a registered trademark of Semper Plugins LLC. When writing about the WordPress SEO plugin by AIOSEO, please use the following format.

\n
    \n
  • AIOSEO (correct)
  • \n
  • All in One SEO (correct)
  • \n
  • AIO SEO (incorrect)
  • \n
  • All in 1 SEO (incorrect)
  • \n
  • AISEO (incorrect)
  • \n
\n

What’s Next

\n

If you like our WordPress SEO plugin, then consider checking out our other projects:

\n
    \n
  • OptinMonster – Get More Email Subscribers with the most popular conversion optimization plugin for WordPress.
  • \n
  • WPForms – #1 drag & drop online form builder for WordPress.
  • \n
  • MonsterInsights – See the Stats that Matter and Grow Your Business with Confidence. Best Google Analytics Plugin for WordPress.
  • \n
  • SeedProd – Create beautiful landing pages with our powerful drag & drop landing page builder.
  • \n
  • WP Mail SMTP – Improve email deliverability for your contact form with the most popular SMTP plugin for WordPress.
  • \n
  • RafflePress – Best WordPress giveaway and contest plugin.
  • \n
  • Smash Balloon – #1 social feeds plugin for WordPress.
  • \n
  • SearchWP – advanced WordPress search plugin.
  • \n
  • PushEngage – best web push notification plugin.
  • \n
\n

Visit WPBeginner to learn from our WordPress Tutorials and find out about other best WordPress plugins.

\n","download_link":"https://downloads.wordpress.org/plugin/all-in-one-seo-pack.4.1.3.3.zip","tags":{"google-search-console":"google search console","meta-description":"meta description","schema":"schema","seo":"seo","xml-sitemap":"xml sitemap"},"donate_link":"","icons":{"1x":"https://ps.w.org/all-in-one-seo-pack/assets/icon.svg?rev=2443290","2x":"https://ps.w.org/all-in-one-seo-pack/assets/icon-256x256.png?rev=2443290","svg":"https://ps.w.org/all-in-one-seo-pack/assets/icon.svg?rev=2443290"},"wporg":true},{"name":"Translate WordPress – Weglot Translate","slug":"weglot","version":"3.3.6","author":"Weglot Translate team","author_profile":"https://profiles.wordpress.org/remyb92","requires":"4.5","tested":"5.8","requires_php":"5.6","rating":96,"ratings":{"1":39,"2":7,"3":6,"4":27,"5":1205},"num_ratings":1284,"support_threads":8,"support_threads_resolved":3,"active_installs":40000,"downloaded":1203261,"last_updated":"2021-08-18 2:44pm GMT","added":"2015-09-27","homepage":"http://wordpress.org/plugins/weglot/","short_description":"Translate your WordPress website in 110+ languages within minutes with Weglot Translate, without any coding.","description":"

Weglot Translate is the leading WordPress translation plugin, trusted by 60,000+ users worldwide. Translate your WordPress website into 110+ languages within minutes, no coding required.

\n

Increase visibility and boost conversions with ease by adding multilingual functionality. Weglot Translate is fully optimized for SEO, with every translated page automatically indexed by Google. Say hello in multiple languages to millions of new visitors.

\n

Make your website multilingual in minutes with a free trial. Visit https://weglot.com/ to learn more!

\n

How Weglot Translate works

\n\n

Why Weglot Translate

\n

It’s easy to install: Weglot Translate is quick to set up to have a multilingual WordPress website ready, instantly. Reach out to millions of new visitors worldwide with a few clicks, without any coding.

\n

It’s built for maximum compatibility: Weglot Translate is fully compatible with all platforms, WordPress themes, and plugins. From WooCommerce product descriptions to Elementor order forms, everything is translated into the languages of your choice. So you can focus on your content, not the technical details.

\n

It’s optimized for SEO: Weglot Translate follows Google’s best practices for multilingual website translation, serving all translated web pages with clean source code. Google will automatically index every translated page with dedicated URLs.

\n

It’s easy to set and forget: Weglot Translate automatically detects all your website content for easy translation. No more time-consuming manual duplication of every single line of content to get a multilingual website. All translations are updated in real-time, so you don’t need to worry about maintenance and any newly added content is automatically translated.

\n

It takes translation seriously: Weglot Translate gives you an edge on your translation tasks with the first layer of automatic translation provided by the best machine learning providers on the market (DeepL, Google, Microsoft, and Yandex). You can also edit the translations and collaborate with your team to work on translations together, directly within Weglot.

\n

It partners with the pros: Weglot Translate lets you order from vetted professional translators directly inside your Weglot dashboard. Set translation quality the way you want it to be, with Weglot Translate.

\n

“Within a week of translating our site to English with Weglot, international sales doubled, by the following month – they had quadrupled.”
\nClara Champion – Director of Digital and E-Commerce, Jimmy Fairly
\nRead the case study

\n

Multilingual functionality like no other

\n

Increase visibility: All translated pages are automatically indexed following Google’s best practices with dedicated URLs. Get new traffic with your multilingual website.

\n

Reduce bounce rate: Redirect visitors automatically to serve them in the language of their choice, based on their browser settings.

\n

Enhance user experience: From the landing page to the email confirmation, get all your key conversion steps translated in your customers’ language. You can even add different images and videos for various languages. Useful for images with text, Weglot Translate makes it easy to display “translated” images in your translated versions. Media localization is an essential aspect of any multilingual project and Weglot Translate makes it simple to do so.

\n

“We really loved the localization features provided by Weglot, such as the ability to translate images and other types of media depending on the language the visitor is viewing the site in.”
\nKim Martin – Senior Communications and Marketing Officer, The Challenge Initiative
\nRead the case study

\n

An all-in-one language translation platform

\n
    \n
  • Manage and edit all of your translations through a user-friendly interface.
  • \n
  • Collaborate with team members and trusted translators to translate together, directly inside Weglot.
  • \n
  • Is it a title? Is it a link? No more guessing the context of the text. Weglot Translate’s in-context editor lets you translate directly within the webpage.
  • \n
  • Make it your own. The language switcher is fully customizable for multiple design choices.
  • \n
  • Weglot Translate makes it easy to migrate from other WordPress multilingual plugins like Polylang or WPML. Simply deactivate your existing translation plugin and install Weglot Translate.
  • \n
\n

“Weglot removed the pain of having to manage multiple stores for multiple locales. The integration was easy, and the support is incredibly helpful. I highly recommend Weglot to anyone looking for a simple and cost-effective solution to translate their stores!”
\nMike Robertson – Director of Sales Operations, Nikon

\n

With an increase in site visitors and session duration thanks to your multilingual website, you can expect a massive boost to your conversions. See why thousands of e-commerce platforms, SaaS firms, marketplaces, corporate websites, and blogs worldwide love Weglot Translate. Try it today for free

\n","download_link":"https://downloads.wordpress.org/plugin/weglot.3.3.6.zip","tags":{"language":"language","localization":"localization","multilingual":"multilingual","translate":"translate","translation":"translation"},"donate_link":"","icons":{"1x":"https://ps.w.org/weglot/assets/icon-128x128.png?rev=2186774","2x":"https://ps.w.org/weglot/assets/icon-256x256.png?rev=2186774"},"wporg":true},{"name":"Rank Math SEO – Best SEO Plugin For WordPress To Increase Your SEO Traffic","slug":"seo-by-rank-math","version":"1.0.71.1","author":"Rank Math","author_profile":"https://profiles.wordpress.org/rankmath","requires":"5.6","tested":"5.8","requires_php":"7.2","rating":98,"ratings":{"1":68,"2":17,"3":20,"4":47,"5":3367},"num_ratings":3519,"support_threads":135,"support_threads_resolved":132,"active_installs":900000,"downloaded":19544694,"last_updated":"2021-09-03 7:13pm GMT","added":"2018-11-19","homepage":"https://s.rankmath.com/home","short_description":"Rank Math SEO is the Best WordPress SEO plugin combines the features of many SEO…","description":"

Rank Math SEO – Best SEO Plugin for WordPress
\n★★★★★

\n

SEO is the most consistent source of traffic for any website. We created Rank Math SEO, a WordPress SEO plugin, to help every website owner get access to the SEO tools they need to improve their SEO and attract more traffic to their website.

\n

Try The Demo

\n\n

Features | Why Choose Rank Math SEO? | Compare | Screenshots | Benefits

\n

SEO might be the best and most consistent source of traffic for one’s website, but it’s not without its quirks. The constant process of optimizing your posts can sometimes take more time than actually writing the content. If you always feel that you can do more on the SEO front for your website but don’t have the time, then Rank Math SEO is what you’re looking for.

\n

Its host of intelligent features brings top SEO capabilities in your hands that were previously out of reach. The smart automation features give you the power of an entire SEO team with just a few clicks. A well thought out design, powerful features, and years of development by the MyThemeShop squad make Rank Math SEO a game-changing SEO plugin that will level the SEO playing field in your favor to help increase traffic.

\n

Rank Math SEO beats all of its competitors, hands down.

\n

See the features which are exclusive to the Rank Math SEO plugin and understand why Rank Math SEO is possibly the Best SEO Plugin for WordPress.

\n
    \n
  • \n

    Setup Wizard (Easy to follow)
    \nRank Math SEO practically configures itself. Rank Math SEO features a step-by-step installation and configuration wizard that sets up SEO for WordPress perfectly.

    \n
  • \n
  • \n

    Google Schema Markup aka Rich Snippets Integrated
    \nConfiguring Google Schema Markup, aka Rich Snippets, is now easy, thanks to Rank Math SEO. With support for 16+ types of Schema Markups, aka Rich Snippets, including the Rating Schema, you’ll be able to optimize your posts in just a few clicks. It also includes the FAQ Schema aka FAQPage Schema Block & the HowTo aka How To Schema Block in the plugin.

    \n
  • \n
  • \n

    Optimize Unlimited Keywords
    \nUnlike other plugins, Rank Math SEO lets you optimize your posts for unlimited focus keywords per post. 5 by default. Increase by adding this filter.

    \n
  • \n
  • \n

    Google Search Console Integration
    \nRank Math SEO saves you a ton of time by integrating with Google Search Console and displaying important information about your website right inside WordPress.

    \n
  • \n
  • \n

    Google Keyword Ranking
    \nWith Rank Math SEO Plugin, you can track your keyword rankings in Google.

    \n
  • \n
  • \n

    Google Analytics Integration
    \nRank Math SEO offers a one-click solution to install Google Analytics script without pasting anything manually anywhere. You can also exclude the Logged-in users.

    \n
  • \n
  • \n

    Optimal Settings Pre-Selected
    \nConfiguring an SEO plugin takes time, and can be confusing. Rank Math SEO saves you the trouble with its optimal default settings, which are ideal for most websites, and if needed, can be changed.

    \n
  • \n
  • \n

    LSI Keyword Tool Integrated
    \nRank Math SEO’s integrated LSI keyword tool gives you multiple keyword variations of your focus keyword, which helps you attract more traffic to your posts. Free account needed.

    \n
  • \n
  • \n

    Add Overlay Icons On Social Images
    \nRank Math SEO makes social thumbnails click magnets by giving you the option of overlaying a GIF or a video icon on the thumbnail.

    \n
  • \n
  • \n

    Advanced SEO Analysis Tool
    \nWith just a single click, Rank Math SEO can perform an SEO audit of your website.

    \n
  • \n
  • \n

    30 Detailed SEO Tests
    \nRank Math SEO is designed to completely supercharge your website’s SEO with its 30 detailed SEO tests. Free account needed.

    \n
  • \n
  • \n

    Module Based System
    \nRank Math SEO has been designed with a module-based system, each of which can be enabled or disabled as per your needs, giving you extra speed and control.

    \n
  • \n
  • \n

    Smart Redirection Manager
    \nRank Math SEO’s built-in smart redirection manager will help you create, manage, delete, enable, or disable redirects at scale.

    \n
  • \n
  • \n

    Local Business SEO
    \nRank Math SEO is designed to be used by Global websites and local websites alike. With its local SEO features, local sites can stand out in the search engine results like Google’s and attract more traffic.

    \n
  • \n
  • \n

    SEO Optimized Breadcrumbs
    \nRank Math SEO can display SEO optimized Breadcrumbs on all websites, even if the theme doesn’t support Schema.org coding.

    \n
  • \n
  • \n

    404 Monitor
    \nRank Math SEO has a built-in 404 error monitor that helps you find and resolve 404 errors for a better user experience.

    \n
  • \n
  • \n

    Deep Content Analysis Tests
    \nOn-Page SEO is no longer a mystery with Rank Math SEO’s deep content analysis and precise SEO recommendations.

    \n
  • \n
  • \n

    Internal Linking Suggestions
    \nRank Math SEO intelligently suggests other posts from your website for internal linking from your current posts, improving the chances of ranking higher in the SERPs.

    \n
  • \n
  • \n

    Role Manager
    \nEven if you have multiple employees manage your website, you can precisely control what each of them has to access to in Rank Math SEO with its role manager.

    \n
  • \n
  • \n

    Multisite Ready
    \nWhether you run a single WordPress website or an entire network of sites – we are ready for you. Rank Math SEO fully supports the WordPress Multiuser project (WPMU).

    \n
  • \n
  • \n

    and has lightweight Code compared to slow-loading in other SEO plugins.
    \nEven with significantly more features than other plugins, Rank Math SEO loads amazingly fast and keeps your website fast always.

    \n
  • \n
\n

Why is Rank Math SEO such a game-changer?

\n
    \n
  • \n

    Auto Configuration — All you have to do is set a few options, and Rank Math SEO will configure itself perfectly for your website.

    \n
  • \n
  • \n

    Super Fast SEO Plugin — Even after packing so many features, Rank Math SEO has a negligible load on your server, thus making it one of the fastest SEO plugins for WordPress.

    \n
  • \n
  • \n

    Automatic Keyword Suggestions from Google — Get keyword suggestions from Google as you start typing letters in the focus keyword field of Rank Math SEO.

    \n
  • \n
  • \n

    New SEO Analyzer — Rank Math SEO’s built-in SEO analysis will give you SEO recommendations that you’d normally spend hundreds of dollars to get.

    \n
  • \n
  • \n

    Elementor SEO – Deep integration with the Elementor Page builder. Now, you don’t need to go back and forth between tabs to configure your page’s SEO. Everything related to SEO for Elementor can be configured in the visual editor.

    \n
  • \n
  • \n

    Divi SEO – One of its kind integration with the Divi Page Builder and theme. Handle everything related to SEO from the page editor screen without jumping back to the default editor. This helps you optimize your website in real-time for SEO.

    \n
  • \n
  • \n

    Page Builder SEO – The Rank Math SEO plugin’s content analysis works perfectly with popular page builders and themes like Oxygen Builder, WPBakery, Avada, Astra, Kadence, Themify, Beaver Builder, Page Builder Framework, Schema theme, Flothemes, OceanWP, etc.

    \n
  • \n
  • \n

    Optimize UNLIMITED Keywords At Once — You can optimize your post for up to 5 different keywords by default with the Rank Math SEO plugin and can use a filter to optimize for unlimited keywords.

    \n
  • \n
  • \n

    Image SEO – With Rank Math SEO’s perfect solution to add ALT & Title tags on the fly, to optimize images, showing inside the content, and that too for FREE, there is no reason to choose any other SEO solution that does not provide all the essential SEO features.

    \n
  • \n
  • \n

    Web Stories SEO – Make any Story created with the Google’s Web Stories plugin SEO-Ready. Automatically adds AMP-friendly Schema markup and Meta tags.

    \n
  • \n
  • \n

    WooCommerce SEO – Optimizing your store products is easier with Rank Math. SEO Meta tags and Schema are automatically added but can be customized with total control as well. Rank Math SEO has the most advanced SEO for WooCommerce.

    \n
  • \n
  • \n

    Google AMP SEO – Accelerated Mobile Pages need to be prepared for search engines. What better way to do that than letting Rank Math SEO use your regular SEO details and optimizing AMPs based on that data?

    \n
  • \n
  • \n

    bbPress SEO – User-generated content in bbPress is properly optimized with Rank Math handling all the important SEO aspects. Q&A Schema is added to bbPress topics along with other essential meta tags.

    \n
  • \n
  • \n

    BuddyPress SEO – As with bbPress, SEO for BuddyPress content is done automatically done using Rank Math. You get all the options you need to get higher rankings with your user-generated content.

    \n
  • \n
  • \n

    Quick Edit SEO Details – Go through a lot of posts/pages quickly by ensuring they are optimized for search engines. Quickly edit multiple SEO fields at once using Rank Math SEO.

    \n
  • \n
  • \n

    Instant Indexing for Bing – Get your content instantly indexed by Bing. Enter a few key details and you are all set and ready to go.

    \n
  • \n
  • \n

    Instant Indexing for Google – Instantly getting indexed by Google used to be reserved to huge brands and large websites. Not anymore. Just about anyone can take advantage of Google’s Instant Indexing feature using Rank Math SEO.

    \n
  • \n
  • \n

    Version Control – Rollback or try beta versions. Updating and downgrading your plugins is now a matter of few clicks. Automatically update to the latest versions or try out the latest beta builds.

    \n
  • \n
  • \n

    Translation Plugins Support — Rank Math SEO works flawlessly with the top translations plugins like WPML, TranslatePress, Weglot, Polylang (not entirely compatible yet), etc., making it a perfect companion.

    \n
  • \n
  • \n

    XML Sitemap – The Rank Math SEO plugin comes with a fast-loading Sitemap feature that works with different post types, including the custom ones, and provides deep controlling. One can also generate a Locations KML file via filter for Local Sitemap, & a WooCommerce Sitemap.

    \n
  • \n
  • \n

    1-Click Import From Yoast — With a single click of your mouse, Rank Math SEO can import all your settings from Yoast SEO & Yoast SEO Premium to itself. The transfer is instant, and you don’t lose any SERP rankings as a result.

    \n
  • \n
  • \n

    1-Click Import From AIO SEO — Rank Math SEO can also import all your settings from AIO SEO & All in One SEO Pack Pro in a single click. The transfer is instant, and you don’t lose any SERP rankings as a result.

    \n
  • \n
  • \n

    1-Click Import From All In One Schema Rich Snippets — Rank Math SEO can also import all of AIO’s Rich Snippet & Schema Pro settings in a few clicks, which help preserve your rich rankings when moving to Rank Math SEO.

    \n
  • \n
  • \n

    1-Click Import From SEOPress SEO — With a single click of your mouse, Rank Math SEO can import all your settings from SEOPress & SEOPress Pro SEO plugin to itself. The transfer is instant, and you don’t lose any SERP rankings as a result.

    \n
  • \n
  • \n

    1-Click Import From Redirection — Moving all your redirects shouldn’t be a hassle. That’s why we have made importing redirections from the popular Redirection plugin as simple as clicking a button.

    \n
  • \n
  • \n

    Google Keyword Suggestion — When deciding on focus keywords, Rank Math SEO can help you discover more keywords by pulling in automatic keyword suggestions from Google.

    \n
  • \n
\n

Who Can Benefit From Rank Math SEO?

\n

Rank Math SEO Plugin is perfect for:

\n

✔ Bloggers
\n✔ eCommerce Store Owners
\n✔ Niche Sites
\n✔ Businesses
\n✔ Local Businesses
\n✔ Startups
\n✔ The Real Estate
\n✔ Artists & Photographers
\n✔ The Solution Offerer
\n✔ Directories
\n✔ Vloggers (Video Bloggers)
\n✔ Or any WordPress Website

\n

Take a sneak peek into Rank Math SEO’s features

\n

Detailed Setup Tutorial

\n\n

List of Best Rank Math SEO Features

\n
    \n
  • Clean, & Simple User Interface
  • \n
  • Optimal Settings Pre-Selected
  • \n
  • Simple Setup Wizard\n
      \n
    • Compatibility Check
    • \n
    \n
  • \n
  • Auto Canonical URLs
  • \n
  • LSI Keyword Tool Integrated
  • \n
  • Google Search Console Integration
  • \n
  • Google Keyword Ranking
  • \n
  • Import Other Plugin Settings\n
      \n
    • 1 Click Import From Yoast SEO Plugin
    • \n
    • 1 Click Import From AIO SEO
    • \n
    • 1 Click Import From SEOPress & SEOPress Pro
    • \n
    • 1 Click Import From All In One Schema Rich Snippets & Schema Pro
    • \n
    • 1 Click Import From Redirection Plugin
    • \n
    \n
  • \n
  • Role Manager
  • \n
  • ACF Support
  • \n
  • AMP Ready
  • \n
  • bbPress & BuddyPress Modules
  • \n
  • Google Schema Markup Integrated\n
      \n
    • Article Rich Snippet
    • \n
    • Review Rich Snippet
    • \n
    • Book Rich Snippet
    • \n
    • Course Rich Snippet
    • \n
    • Event Rich Snippet
    • \n
    • Job Posting Rich Snippet
    • \n
    • Local Business Rich Snippet
    • \n
    • 193 Local Business Types
    • \n
    • Music Rich Snippet
    • \n
    • Person Rich Snippet
    • \n
    • Product Rich Snippet
    • \n
    • Recipe Rich Snippet
    • \n
    • Restaurant Rich Snippet
    • \n
    • Service Rich Snippet
    • \n
    • Software Application Rich Snippet
    • \n
    • Video Rich Snippet
    • \n
    • Author Stay Rating
    • \n
    \n
  • \n
  • Social Media Optimization\n
      \n
    • Add Overlay Icons On Social Images
    • \n
    • Default OpenGraph Thumbnail
    • \n
    • Auto Facebook Open Graph
    • \n
    • Facebook Authorship
    • \n
    • Facebook Open Graph for Homepage
    • \n
    • Automatic Twitter Meta Cards
    • \n
    • Twitter Card for Homepage
    • \n
    • Default Twitter Card Type
    • \n
    • Social Previews
    • \n
    \n
  • \n
  • Add Knowledge Graph\n
      \n
    • Represent site as a Person
    • \n
    • Represent site as a Company
    • \n
    • Set a Site Logo
    • \n
    \n
  • \n
  • Advanced SEO Analysis Tool\n
      \n
    • 30 Detailed SEO Tests
    • \n
    • SEO Analysis Score
    • \n
    \n
  • \n
  • Automated Image SEO
  • \n
  • Powerful Post Optimization\n
      \n
    • Add SEO Meta Box to all post types
    • \n
    • Bulk Edit Titles & Descriptions
    • \n
    • Post Preview on Google
    • \n
    • Content Analysis
    • \n
    • Control SEO For Single Pages
    • \n
    • Control The Title
    • \n
    • Control Meta Description
    • \n
    • Auto Add Additional Meta Data
    • \n
    • Control ROBOTS Meta
    • \n
    • Choose a Primary Category
    • \n
    \n
  • \n
  • Single Post/page Optimization\n
      \n
    • Focus Keyword
    • \n
    • Google Keyword Suggestion
    • \n
    • Optimize UNLIMITED Keywords (5 by default)
    • \n
    • Choose Pillar Posts & Pages
    • \n
    • Internal Linking Suggestions
    • \n
    • Capitalize Titles
    • \n
    • SEO Failed Tests
    • \n
    • SEO Warnings
    • \n
    \n
  • \n
  • XML Sitemap (New!)
  • \n
  • Module Based System
  • \n
  • Choose Any Separator Character
  • \n
  • Modify Global Meta
  • \n
  • Search Engine Verification Tools\n
      \n
    • Bing Site Verification
    • \n
    • Baidu Site Verification
    • \n
    • Alexa Site Verification
    • \n
    • Yandex Site Verification
    • \n
    • Google Site Verification
    • \n
    • Pinterest Site Verification
    • \n
    • Norton Safe Web Site Verification
    • \n
    \n
  • \n
  • Advanced Redirection Manager\n
      \n
    • Smart & Automatic Post Redirects
    • \n
    • 301 Redirection Type
    • \n
    • 302 Redirection Type
    • \n
    • 307 Redirection Type
    • \n
    • 410 Redirection Type
    • \n
    • 451 Redirection Type
    • \n
    • Support for REGEX
    • \n
    • Debug Redirections
    • \n
    \n
  • \n
  • Simple 404 Monitor\n
      \n
    • Advanced 404 Monitor
    • \n
    \n
  • \n
  • Advanced SEO Breadcrumbs\n
      \n
    • Auto Show SEO Breadcrumbs
    • \n
    \n
  • \n
  • Advanced Link Options\n
      \n
    • Nofollow All External Image Links
    • \n
    • Nofollow All External Links
    • \n
    • Open External Links in New Tab/Window
    • \n
    • Redirect Attachments to Parent
    • \n
    • Strip Category Base
    • \n
    \n
  • \n
  • Remove Stopwords from Permalinks
  • \n
  • Ping Search Engines
  • \n
  • Local SEO Optimization\n
      \n
    • Contact Info Shortcode
    • \n
    \n
  • \n
  • Deep Support For WooCommerce SEO
  • \n
  • Compatible for EDD SEO (Easy Digital Downloads SEO)
  • \n
  • Only 30k Lines of Code\n
      \n
    • PSR-4 Coding Standards (wherever possible)
    • \n
    \n
  • \n
  • Optimize Different Archives\n
      \n
    • Optimize Author Archive Pages
    • \n
    • Optimize Date Archive Pages
    • \n
    • Optimize Archive Pages
    • \n
    \n
  • \n
  • .htaccess Editor
  • \n
  • Robots.txt Editor
  • \n
  • Import/Export Settings
  • \n
  • Import/Export Redirections
  • \n
  • Add Content Before the RSS Feed
  • \n
  • Add Content After the RSS Feed
  • \n
  • Detailed Documentation\n
      \n
    • Contextual Help
    • \n
    \n
  • \n
\n

BIG Publications are Raving About Rank Math SEO

\n

Rank Math SEO Reviews

\n\n\n

Rank Math SEO Review – Why I Ditched Yoast For Rank Math SEO

\n

Rank Math SEO on Product Hunt

\n

Rank Math SEO Plugin Review from an SEO Consultant

\n

and many more

\n

Check RANK MATH PRO WHICH MAKES SEO EASIER & FASTER

\n\n

FREE VS PRO COMPARISON

\n

UNIQUE FEATURES OF RANK MATH PRO

\n

Google Analytics & Search Console Integration (The only SEO plugin that provides it)
\n✔ Integrated Google Analytics, AdSense & Search Console Data
\n✔ Analyze SEO Performance of Each Post & Page
\n✔ See Top Winning/Losing Posts & Keywords
\n✔ Keep Track of Position History
\n✔ Rank Tracker for Important Keywords

\n

Schema aka Structured Data aka Rich Snippets. The BEST Schema Generator Available Online
\n✔ 20+ Pre-defined Schema types (more than any other plugin) –
\n✔ Import Schema from Other Websites
\n✔ Advanced Schema Builder [Advanced SEOs can use this to create any complex Schema Markup)
\n✔ Schema Templates for Automation
\n✔ Conditional Schema Markup
\n✔ Inbuilt Schema Code Preview and Validation
\n✔ Multiple Location Schema On Any Page (using the Shortcode)

\n

Automation At Its BEST
\n✔ Automated Image SEO
\n✔ Advanced Filtering for Images [https://i.rankmath.com/zAUHHP]
\n✔ Watermark Your images
\n✔ Advanced Post filtering
\n✔ Bulk Actions [index, noindex, redirect, etc.]
\n✔ Quick Edit SEO Details
\n✔ Bulk Import SEO Meta Details Using CSV file
\n✔ Auto Detect Videos and Generate Schema Markup for Them
\n✔ Auto Fetch Thumbnail, Duration of YouTube & Vimeo Videos
\n✔ Automatically Flush Facebook Thumbnails
\n✔ Open External Links in New Tabs
\n✔ Nofollow External Links
\n✔ Noindex Paginated, Archive, Search Result Pages
\n✔ Instant Indexing for Bing [Also Google using our Instant Indexing Plugin]

\n

WooCommerce SEO
\n✔ Automatic Schema for WooCommerce Products
\n✔ Advanced Open Graph Tags for WooCommerce Products
\n✔ Automatic NoIndex Hidden Products
\n✔ Remove WooCommerce Product and Category Base
\n✔ Add Custom Brands to Products
\n✔ Add Global Identifier Like GTIN/MPN – Even to Variations

\n

Workflow Improvements
\n✔ Internal Role Manager
\n✔ Inbuilt Google Trends Insights
\n✔ Site Audit with 29 Unique Tests
\n✔ Import Redirections Using CSV File
\n✔ Categorize Redirections for Grouping
\n✔ One-Click Redirection for 404s
\n✔ Monitor Search Performance of Entire Portfolio
\n✔ Easy and Advanced Mode

\n

Miscellaneous
\n✔ Supports bbPress and BuddyPress SEO
\n✔ Version Control – Rollback or Try Beta Versions

\n

MANY MORE FEATURES
\n✔ PREMIUM 24x7x365 Dedicated Support Managers
\n✔ MOST COMPETITIVE PRICING EVER!

\n

CHEK ALL THE PREMIUM FEATURES AND PRICING HERE

\n

CONNECT WITH THE TEAM AND SEO EXPERTS

\n

JOIN FACEBOOK GROUP COMMUNITY: The purpose of this Facebook group is to have a collective place where the community can help each other, and we can get some feedback to improve Rank Math SEO as well. Joining the group is also a great way to connect with like-minded people and share your SEO experience.

\n

Branding Guideline

\n

Rank Math SEO® is a registered trademark. Please use the following format when mentioning the Rank Math SEO plugin anywhere.
\n* Rank Math SEO [correct]
\n* Rank Math SEO [incorrect]
\n* Rank Math SEO [incorrect]
\n* Rank Math SEO [incorrect]
\n* RankMath [incorrect]
\n* Rankmath [incorrect]
\n* rankmath [incorrect]
\n* rankMath [incorrect]

\n

Getting Started:

\n

1. How to Setup Rank Math SEO: Once you install Rank Math SEO for the first time, you will be greeted with the Setup Wizard, which is discussed in detail here.

\n

2. Facebook Group: In this group, you will find the team of Rank Math SEO plugin fairly active and ready to answer your SEO related queries.

\n

3. User Documentation: Although Rank Math SEO is already easy to set up, we’ve put together tutorials, guides, and some knowledge bases to help you set up and get started with Rank Math SEO.

\n

4. Contribute (Sharing is caring): If you are one of those caring hearts that want to help, go to our Rank Math SEO’s GitHub Repository and see how you can contribute to the SEO community. You can also add a new language via translate.wordpress.org.

\n

5. Fixing Common Errors: Sometimes, avoidable or common issues can get you stuck. We’ve created a common guide where we discuss all the common issues and how to fix them.

\n

6. Support Ticket Forum: Our dedicated forum is where you can get support for any issues that you face with Rank Math SEO. In the forum, we’ll also try to answer some SEO queries. User experience is important to us, and our aim is to answer all the queries on the forum in a timely manner.

\n

7. Frequently Asked Questions: Here, we’ve answered the most commonly asked questions about Rank Math SEO. The questions are related to features, pricing, and others.

\n","download_link":"https://downloads.wordpress.org/plugin/seo-by-rank-math.1.0.71.1.zip","tags":{"google-search-console":"google search console","redirection":"redirection","schema":"schema","seo":"seo","sitemap":"sitemap"},"donate_link":"","icons":{"1x":"https://ps.w.org/seo-by-rank-math/assets/icon.svg?rev=2348086","2x":"https://ps.w.org/seo-by-rank-math/assets/icon-256x256.png?rev=2348086","svg":"https://ps.w.org/seo-by-rank-math/assets/icon.svg?rev=2348086"},"wporg":true},{"name":"Head, Footer and Post Injections","slug":"header-footer","version":"3.2.2","author":"Stefano Lissa","author_profile":"https://profiles.wordpress.org/satollo","requires":"4.0","tested":"5.7.2","requires_php":"5.6","rating":98,"ratings":{"1":3,"2":2,"3":4,"4":13,"5":620},"num_ratings":642,"support_threads":1,"support_threads_resolved":0,"active_installs":300000,"downloaded":2774331,"last_updated":"2021-03-17 1:26pm GMT","added":"2008-04-07","homepage":"https://www.satollo.net/plugins/header-footer","short_description":"Header and Footer plugin let you to add html code to the head and footer sections of your blog... and more!","description":"

About WordPress SEO and Facebook Open Graph: I was very unpleased by Yoast invitation to
\nremove my plugin, and it’s not the case.
\nRead more here.

\n

Head and Footer Codes

\n

Why you have to install 10 plugins to add Google Analytics, Facebook Pixel, custom
\ntracking code, Google DFP code, Google Webmaster/Alexa/Bing/Tradedoubler verification code and so on…

\n

With Header and Footer plugin you can just copy the code those services give you
\nin a centralized point to manage them all. And theme independent: you can change your theme
\nwithout loosing the code injected!

\n

Injection points and features

\n
    \n
  • in the page section where most if the codes are usually added
  • \n
  • just after the tag as required by some JavaScript SDK (like Facebook)
  • \n
  • in the page footer (just before the tag)
  • \n
  • recognize and execute PHP code to add logic to your injections
  • \n
  • distinct desktop and mobile injections
  • \n
\n

AMP

\n

A new AMP dedicated section compatible with AMP plugin lets you to inject specific codes in
\nAMP pages. Should be ok even with other AMP plugins.

\n

Post Top and Bottom Codes

\n

Do you need to inject a banner over the post content or after it? No problem. With Header and
\nFooter you can:

\n
    \n
  • Add codes on top, bottom and in the middle of posts and pages
  • \n
  • Differentiate between mobile and desktop (you don’t display the same ad format on both, true?)
  • \n
  • Separate post and page configuration
  • \n
  • Native PHP code enabled
  • \n
  • Shortcodes enabled
  • \n
\n

Special Injections

\n
    \n
  • Just after the opening BODY tag
  • \n
  • In the middle of post content (using configurable rules)
  • \n
  • Everywhere on template (using placeholders)
  • \n
\n

bbPress

\n

The specific bbPress injections are going to be removed. Switch to my
\nAds for bbPress, which is more flexible and complete.

\n

Limits

\n

This plugin cannot change the menu or the footer layout, those features must be covered by your theme!

\n

Official page: Header and Footer.

\n

Other plugins by Stefano Lissa:

\n\n

Translation

\n

You can contribute to translate this plugin in your language on WordPress Translate

\n

Privacy and GDPR

\n

This plugin does not collect or process any personal user data.

\n","download_link":"https://downloads.wordpress.org/plugin/header-footer.3.2.2.zip","tags":{"blog":"blog","footer":"footer","header":"header","page":"page","single":"single"},"donate_link":"http://www.satollo.net/donations","icons":{"1x":"https://ps.w.org/header-footer/assets/icon-256x256.png?rev=1064219","2x":"https://ps.w.org/header-footer/assets/icon-256x256.png?rev=1064219"},"wporg":true},{"name":"WP Rocket","slug":"wp-rocket","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://wp-rocket.me/","short_description":"

Powerful caching to speed up your WordPress website in a few clicks. No coding required.

\n","description":"\n\n\n

Powerful caching to speed up your WordPress website in a few clicks. No coding required.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2020/06/WP-Rocket-285x160.png","2x":"https://amp-wp.org/wp-content/uploads/2020/06/WP-Rocket-372x209.png","svg":""},"wporg":false},{"name":"Statify","slug":"statify","version":"1.8.3","author":"pluginkollektiv","author_profile":"https://profiles.wordpress.org/pluginkollektiv","requires":"4.7","tested":"5.8","requires_php":"5.2","rating":94,"ratings":{"1":2,"2":0,"3":0,"4":3,"5":33},"num_ratings":38,"support_threads":3,"support_threads_resolved":1,"active_installs":200000,"downloaded":1497095,"last_updated":"2021-07-17 8:46am GMT","added":"2011-03-16","homepage":"https://statify.pluginkollektiv.org/","short_description":"Visitor statistics for WordPress with focus on data protection, transparency and clarity. Perfect as a widget in your WordPress Dashboard.","description":"

Statify provides a straightforward and compact access to the number of site views. It is privacy-friendly as it uses neither cookies nor a third party.

\n

An interactive chart is followed by lists of the most common reference sources and target pages. The period of statistics and length of lists can be set directly in the dashboard widget.

\n

Data Privacy

\n

In direct comparison to statistics services such as Google Analytics, WordPress.com Stats and Matomo (Piwik) Statify doesn’t process and store personal data as e.g. IP addresses – Statify counts site views, not visitors.

\n

Absolute privacy compliance coupled with transparent procedures: A locally in WordPress created database table consists of only four fields (ID, date, source, target) and can be viewed at any time, cleaned up and cleared by the administrator.

\n

Due to this tracking approach, Statify is 100% compliant with GDPR and serves as an lightweight alternative to other tracking services.

\n

Display of the widget

\n

The plugin configuration can be changed directly in the Statify Widget on the dashboard by clicking the Configure link.

\n

The amount of links shown in the Statify Widget can be set as well as the option to only count views from today. Of course, older entries are not deleted when changing this setting.

\n

The statistics for the dashboard widget are cached for four minutes.

\n

Period of data saving

\n

Statify stores the data only for a limited period (default: two weeks), longer intervals can be selected as option in the widget. Data which is older than the selected period is deleted by a daily cron job.

\n

An increase in the database volume can be expected because all statistic values are collected and managed in the local WordPress database (especially if you increase the period of data saving).

\n

JavaScript tracking for caching compatibility

\n

For compatibility with caching plugins like Cachify Statify offers an optional switchable tracking via JavaScript. This function allows reliable count of cached blog pages.

\n

For this to work correctly, the active theme has to call wp_footer(), typically in a file named footer.php.

\n

Skip tracking for spam referrers

\n

The comment blacklist can be enabled to skip tracking for views with a referrer URL listed in comment blacklist, i. e. which considered as spam.

\n

Support

\n

If you’ve problems or think you’ve found a bug (e.g. you’re experiencing unexpected behavior), please post at the support forums.

\n

Contribute

\n
    \n
  • Active development of this plugin is handled on GitHub.
  • \n
  • Pull requests for documented bugs are highly appreciated.
  • \n
  • If you want to help us translate this plugin you can do so on WordPress Translate.
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/statify.1.8.3.zip","tags":{"analytics":"analytics","dashboard":"dashboard","pageviews":"pageviews","privacy":"privacy","statistics":"statistics"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=TD4AMD2D8EMZW","icons":{"1x":"https://ps.w.org/statify/assets/icon-128x128.png?rev=2355063","2x":"https://ps.w.org/statify/assets/icon-256x256.png?rev=2355063"},"wporg":true},{"name":"LIQUID BLOCKS GALLERY 37+ Free Designs","slug":"liquid-blocks","version":"1.1.1","author":"LIQUID DESIGN Ltd.","author_profile":"https://profiles.wordpress.org/lqd","requires":"5.2","tested":"5.8","requires_php":false,"rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"num_ratings":1,"support_threads":1,"support_threads_resolved":0,"active_installs":4000,"downloaded":19990,"last_updated":"2021-07-22 6:55am GMT","added":"2019-10-18","homepage":"https://lqd.jp/wp/plugin.html","short_description":"If you’re looking to create block page sections that look great give LIQUID BLOCKS a…","description":"

If you’re looking to create block page sections that look great give LIQUID BLOCKS a try.

\n

In Gutenberg Block Template & Design Gallery, Just select your favorite design. Instantly create page section elements. Like a very simple page builder.

\n

You can manage Block Pattern. (WordPress 5.5+)
\nFully compatible with Gutenberg and themes and AMP.
\nlatest information on LIQUID PRESS.

\n

\n

Design Gallery

\n

Carefully selected 37+ Free Designs.
\n* Headlines
\n* Layouts (Q&A, Ranking, Column, Step, Fluid Shape.)
\n* Price list
\n* CTA
\n* Landing pages
\n* Block Patterns (You can register.)

\n

Toolbar

\n

Add to RichText Toolbar.
\n* Mark
\n* Underline
\n* Big
\n* Small

\n","download_link":"https://downloads.wordpress.org/plugin/liquid-blocks.zip","tags":{"block":"block","block-editor":"block-editor","blocks":"blocks","editor":"editor","gutenberg":"gutenberg"},"donate_link":"https://lqd.jp/wp/plugin.html","icons":{"1x":"https://ps.w.org/liquid-blocks/assets/icon-128x128.png?rev=2175390"},"wporg":true},{"name":"Schema","slug":"schema","version":"1.7.9.2","author":"Hesham","author_profile":"https://profiles.wordpress.org/hishaman","requires":"4.0","tested":"5.7.2","requires_php":"5.4","rating":90,"ratings":{"1":15,"2":6,"3":4,"4":8,"5":162},"num_ratings":195,"support_threads":3,"support_threads_resolved":0,"active_installs":60000,"downloaded":1082875,"last_updated":"2021-05-19 2:51pm GMT","added":"2016-05-11","homepage":"https://schema.press","short_description":"Get the next generation of Schema Structured Data to enhance your WordPress site presentation in Google search results.","description":"

Like Schema plugin? Consider leaving a 5 star review.

\n

Super fast, light-weight plugin for adding schema.org structured data markup in recommended JSON-LD format automatically to WordPress sites.

\n

Enhanced Presentation in Search Results By including structured data appropriate to your content, your site can enhance its search results and presentation.

\n

Check out the Plugin Homepage for more info and documentation.

\n

What is Schema markup?

\n

Schema markup is code (semantic vocabulary) that you put on your website to help the search engines return more informative results for users. So, Schema is not just for SEO reasons, it’s also for the benefit of the searcher.

\n

Schema.org Structured Data Demo & Examples

\n\n

Schema Key Features

\n
    \n
  • Easy to use, set it and forget it, with minimal settings.
  • \n
  • [Premium] Support for different schema.org types.
  • \n
  • Enable Schema types at once per post type or post category.
  • \n
  • [Premium] Enable Schema types anywhere you want on your site content.
  • \n
  • [Premium] Customize source data of schema.org properties.
  • \n
  • Valid markup, test it in Google Structured Data Testing Tool.
  • \n
  • Output JSON-LD format, the most recommended by Google.
  • \n
  • Reuse data saved in post meta, which is created by other plugins.
  • \n
  • Extensible, means you can extend its functionality via other plugins, extensions or within your Theme’s functions.php file.
  • \n
\n
\n

Note: some features are Premium. Which means you need Schema Premium to have those features. Get Schema Premium here!

\n
\n

Free vs Premium

\n
\n

See: a Free vs Premium comparison.

\n
\n

Free Plugin Extensions

\n
    \n
  • Schema Review: Extend Schema functionality by adding review and rating Structured Data functionality for Editors and Authors.
  • \n
  • Schema Default Image: Add ability to set a default WordPress Featured image for schema.org markup.
  • \n
\n

Premium Plugin Extensions

\n\n

Supported Google/Schema Markups

\n\n

Supported Schema.org Types

\n\n

Premium Supported Schema.org Types

\n
\n

Schema Premium has additional support for schema.org types, including:

\n
\n\n

Schema.org Markup Examples

\n

View our Live Structured Data Demo examples.

\n

Supported Plugins

\n

Schema plugin integrates and/or play nicely with (not necessarily a full integration):

\n
    \n
  • Yoast SEO
  • \n
  • AMP plugin (Automattic’s Accelerated Mobile Pages)
  • \n
  • Accelerated Mobile Pages – AMP for WP
  • \n
  • WPRichSnippets
  • \n
  • The SEO Framework
  • \n
  • WPBakery Page Builder
  • \n
  • ThirstyAffiliates
  • \n
  • [Premium] WooCommerce: Schema for WooCommerce extension.
  • \n
  • Easy Digital Downloads (EDD)
  • \n
\n

Supported Themes

\n

The plugin should work fine with any well coded WordPress theme, however these themes were tested and works properly with the plugin.

\n
    \n
  • Genesis 2.x
  • \n
  • Thesis 2.x
  • \n
  • Divi
  • \n
\n

Premium support

\n

schema.press team does not always provide active support for the Schema plugin on the WordPress.org forums, as we prioritize our email support. One-on-one email support is available to people who bought Schema Premium only.

\n

Note that the premium Schema Plugin also has several extra features too, including the option to enable more schema.org types, set content location target for markup, and map schema.org properties, so it is well worth your investment!

\n

Developers?

\n

Feel free to fork the project on GitHub and submit your contributions via pull request.

\n","download_link":"https://downloads.wordpress.org/plugin/schema.zip","tags":{"json-ld":"JSON-LD","rich-snippets":"rich snippets","schema":"schema","schema-org":"schema.org","structured-data":"structured data"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=NGVUBT2QXN7YL","icons":{"1x":"https://ps.w.org/schema/assets/icon-128x128.png?rev=1750172","2x":"https://ps.w.org/schema/assets/icon-256x256.png?rev=1750173"},"wporg":true},{"name":"Iframely – rich media embeds for 2000+ publishers","slug":"iframely","version":"0.7.2","author":"Itteco Corp.","author_profile":"https://profiles.wordpress.org/ivanp","requires":"3.5.1","tested":"5.4.6","requires_php":false,"rating":80,"ratings":{"1":2,"2":0,"3":1,"4":0,"5":7},"num_ratings":10,"support_threads":1,"support_threads_resolved":0,"active_installs":3000,"downloaded":97227,"last_updated":"2020-05-22 5:21pm GMT","added":"2013-10-03","homepage":"http://wordpress.org/plugins/iframely/","short_description":"Iframely extends WordPress default rich media embeds and adds support of over 2000 more providers…","description":"

Iframely extends WordPress default embeds and adds over 2000 more providers and cards as URL previews for the rest of the Web. Provides responsive embed codes, works with AMP.

\n

Just like default WordPress embeds, Iframely will detect URLs in your posts and replace it with responsive embed codes. Supports all usual suspects such as YouTube, Vimeo, Instagram, Facebook, Giphy, GfyCat, Imgur, Google +, GitHub Gists, Storify, SlideShare, Streamable, Vidme, Reddit, Dailymotion, Spotify, Tableau, Prezi, Apester, QZZR, Tidal, MLB. Well over two thousand of providers and keeps growing.

\n

Test your URL here to check if we support it.

\n

Iframely also generates and hosts summary cards as URL previews for general articles. It includes your own site, and Iframely can replace the default embed cards that your publish via WordPress for other sites to use.

\n

API key and paid/free

\n

Powered by Iframely cloud service and requires an account with us. Grab an API key for extended trial at iframely.com, or test the plugin out without an API key.

\n

Before you push the plugin to production, a service subscription is required to avoid any possible disruptions.

\n

We maintain an overwhelming number of integrations and widgets in the background for you, and make sure your sites remains fast and keeps your users happy. This requires a substantial effort on our part, and we won’t be able to provide it without requiring a service subscription.

\n

How to use:

\n

The plugin works the same way the standard oEmbed is supported by WordPress: URL on a separate line.

\n

For example,

\n
Check out this cool video:\n\nhttp://your.url/here\n\nThat was a cool video.\n
\n

Iframely also has its own shortcode [iframely]http://your.url/here[/iframely].

\n

Heads-up:

\n

Iframely does not simply wrap URLs with <iframe src=...> code. That’s not what Iframely is for. We can only match URLs to the known embed codes if publisher offers them for manual copy-paste, or generate a summary card for URL preview if a publisher provides at least a thumnnail image.

\n

To keep default embed providers

\n

By default, Iframely will inject itself to be the first embeds provider in the list, thus intercepting all URLs. It means that the default providers that are later in the list won’t get called and will thus be disabled.

\n

It means Iframely replaces default YouTube, Vimeo, Twitter, other oEmbed plugins that you might have(like JetPack), etc.

\n

Although we should support the same providers and output the same code, just make it responsive and add extra features, you can still disable such behavior and tell Iframely to only process links that otherwise don’t have an embed provider.

\n

Just choose this option in your settings. It will essentially put Iframely to be the last in the list, be “a catcher”, rather then “an interceptor”.

\n

URL editor options

\n

You can fine-tune many aspects of Iframely on your dashboard at iframely.com. This would include some most common settings for popular rich media publishers. Our support team can also fine-tune many other publishers, just for you.

\n

However, you might need a per-post editor for the widgets options. And, Iframely does provide this too. It’s done via URL options editor, and available for higher-tier plans, or during your initial trial period. Make sure to check it out.

\n

AMP support

\n

Yes, Iframely works nicely with AMP WP plugin. It catches all missing embeds and follow your Iframely settings. But you can also opt to have Iframely for all embeds, including default AMP embeds too. For example, Facebook video will be indeed a nice video without user’s text message.

\n","download_link":"https://downloads.wordpress.org/plugin/iframely.zip","tags":{"embed":"embed","embed-code":"embed code","iframely":"iframely","oembed":"oembed","responsive":"responsive"},"donate_link":"","icons":{"default":"https://s.w.org/plugins/geopattern-icon/iframely.svg"},"wporg":true},{"name":"Pym.js Embeds","slug":"pym-shortcode","version":"1.3.2.4","author":"INN Labs","author_profile":"https://profiles.wordpress.org/automattic","requires":"3.0.1","tested":"5.4.6","requires_php":"5.3","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":1,"support_threads_resolved":0,"active_installs":100,"downloaded":2287,"last_updated":"2020-03-26 6:09pm GMT","added":"2016-06-17","homepage":"https://github.com/INN/pym-shortcode","short_description":"A WordPress block and shortcode for embedding iframes that are responsive horizontally and vertically, using the NPR Visuals Team's Pym.js.","description":"

Pym.js Embeds provides shortcode and Gutenberg block wrappers for embedding responsive iframes using Pym.js, developed by the NPR Visuals Team. Embedded content resizes vertically to match its container’s width.

\n

AMP compatibility is provided by the official AMP plugin.

\n

Pym.js Resources from NPR

\n

You may also want to look at NPR’s Pym.js resources:

\n\n","download_link":"https://downloads.wordpress.org/plugin/pym-shortcode.1.3.2.4.zip","tags":{"embeds":"Embeds","iframe":"iframe","javascript":"javascript","responsive":"responsive","shortcode":"shortcode"},"donate_link":"https://inn.org/donate","icons":{"1x":"https://ps.w.org/pym-shortcode/assets/icon.svg?rev=1944461","svg":"https://ps.w.org/pym-shortcode/assets/icon.svg?rev=1944461"},"wporg":true},{"name":"PWA","slug":"pwa","version":"0.6.0","author":"PWA Plugin Contributors","author_profile":"https://profiles.wordpress.org/westonruter","requires":"5.5","tested":"5.7.2","requires_php":"5.6","rating":84,"ratings":{"1":3,"2":0,"3":0,"4":0,"5":12},"num_ratings":15,"support_threads":7,"support_threads_resolved":5,"active_installs":40000,"downloaded":291196,"last_updated":"2021-03-09 8:50pm GMT","added":"2018-07-12","homepage":"https://github.com/GoogleChromeLabs/pwa-wp","short_description":"WordPress feature plugin to bring Progressive Web App (PWA) capabilities to Core","description":"

\nProgressive Web Apps are user experiences that have the reach of the web, and are:

\n
    \n
  • Reliable – Load instantly and never show the downasaur, even in uncertain network conditions.
  • \n
  • Fast – Respond quickly to user interactions with silky smooth animations and no janky scrolling.
  • \n
  • Engaging – Feel like a natural app on the device, with an immersive user experience.
  • \n
\n

This new level of quality allows Progressive Web Apps to earn a place on the user’s home screen.\n

\n

Continue reading more about Progressive Web Apps (PWA) from Google.

\n

In general a PWA depends on the following technologies to be available:

\n\n

This plugin serves as a place to implement support for these in WordPress with the intention of being proposed for core merge, piece by piece.

\n

This feature plugin is not intended to obsolete the other plugins and themes which turn WordPress sites into PWAs. Rather, this plugin is intended to provide the PWA building blocks and coordination mechanism for these themes and plugins to not reinvent the wheel and also to not conflict with each other. For example, a theme that implements the app shell model should be able to extend the core service worker while a plugin that provides push notifications should be able to do the same. Themes and plugins no longer should have to each create a service worker on their own, something which is inherently problematic because only one service worker can be active at a time: only one service worker can win. If you are developing a plugin or theme that includes a service worker, consider relying on this PWA plugin, or at least only use the built-in implementation as a fallback for when the PWA plugin is not available.

\n

In versions prior to 0.6, no caching strategies were added by default. The only service worker behavior was to serve an offline template when the client’s connection is down or the site is down, and also to serve an error page when the server returns with 500 Internal Server Error. As of 0.6, there is a new “Offline browsing” toggle on the Reading Settings screen in the admin. It is disabled by default, but when enabled a network-first caching strategy is registered for navigations so that the offline page won’t be shown when accessing previously-accessed pages. The network-first strategy is also used for assets from themes, plugins, and WordPress core. In addition, uploaded images get served with a stale-while-revalidate strategy. For all the details on these changes, see the pull request.

\n

Documentation for the plugin can be found on the GitHub project Wiki.

\n

Development of this plugin is done on GitHub. Pull requests welcome. Please see issues reported there before going to the plugin forum.

\n","download_link":"https://downloads.wordpress.org/plugin/pwa.0.6.0.zip","tags":{"https":"https","progressive-web-apps":"progressive web apps","pwa":"pwa","service-workers":"service-workers.","web-app-manifest":"web app manifest"},"donate_link":"","icons":{"1x":"https://ps.w.org/pwa/assets/icon.svg?rev=1908485","2x":"https://ps.w.org/pwa/assets/icon-256x256.png?rev=1908485","svg":"https://ps.w.org/pwa/assets/icon.svg?rev=1908485"},"wporg":true},{"name":"MC4WP: Mailchimp for WordPress","slug":"mailchimp-for-wp","version":"4.8.6","author":"ibericode","author_profile":"https://profiles.wordpress.org/dvankooten","requires":"4.6","tested":"5.8","requires_php":"5.3","rating":96,"ratings":{"1":35,"2":10,"3":16,"4":35,"5":1277},"num_ratings":1373,"support_threads":46,"support_threads_resolved":43,"active_installs":2000000,"downloaded":35686721,"last_updated":"2021-08-04 7:14am GMT","added":"2013-06-19","homepage":"https://www.mc4wp.com/#utm_source=wp-plugin&utm_medium=mailchimp-for-wp&utm_campaign=plugins-page","short_description":"Mailchimp for WordPress, the #1 unofficial Mailchimp plugin.","description":"

Mailchimp for WordPress

\n

Allowing your visitors to subscribe to your newsletter should be easy. With this plugin, it finally is.

\n

This plugin helps you grow your Mailchimp lists and write better newsletters through various methods. You can create good looking opt-in forms or integrate with any existing form on your site, like your comment, contact or checkout form.

\n\n

Some (but not all) features

\n
    \n
  • \n

    Connect with your Mailchimp account in seconds.

    \n
  • \n
  • \n

    Sign-up forms which are good looking, user-friendly and mobile optimized. You have complete control over the form fields and can send anything you like to Mailchimp.

    \n
  • \n
  • \n

    Seamless integration with the following plugins:

    \n
      \n
    • Default WordPress Comment Form
    • \n
    • Default WordPress Registration Form
    • \n
    • Contact Form 7
    • \n
    • WooCommerce
    • \n
    • Gravity Forms
    • \n
    • Ninja Forms 3
    • \n
    • WPForms
    • \n
    • BuddyPress
    • \n
    • MemberPress
    • \n
    • Events Manager
    • \n
    • Easy Digital Downloads
    • \n
    • Give
    • \n
    • UltimateMember
    • \n
    \n
  • \n
  • \n

    A multitude of available add-on plugins and integrations:

    \n\n
  • \n
  • \n

    Well documented. Our knowledge base is updated daily.

    \n
  • \n
  • \n

    Developer friendly. For inspiration, check out our repository of example code snippets.

    \n
  • \n
\n
\n

Become a Premium user

\n

Mailchimp for WordPress has a Premium add-on which comes with several additional benefits.

\n
    \n
  • Multiple forms
  • \n
  • Advanced e-commerce integration for WooCommerce
  • \n
  • Email notifications
  • \n
  • An easy way to style your forms
  • \n
  • Detailed reports & statistics
  • \n
\n

View more Premium features

\n
\n

What is Mailchimp?

\n

Mailchimp is a newsletter service that allows you to send out email campaigns to a list of email subscribers. It is free for lists up to 2000 subscribers, which is why it is the newsletter-service of choice for thousands of businesses.

\n

This plugin allows you to tightly integrate your WordPress site with your Mailchimp account.

\n

If you are not yet using Mailchimp, creating an account is 100% free and only takes you about 30 seconds.

\n

Support

\n

Use the WordPress.org plugin forums for community support where we try to help all of our users. If you found a bug, please create an issue on Github where we can act upon them more efficiently.

\n

If you’re a premium user, please use the email address inside the plugin for support as that will guarantee a faster response time.

\n

Please take a look at the Mailchimp for WordPress knowledge base as well.

\n

Add-on plugins

\n

There are several add-on plugins available, which help you get even more out of your site.

\n

Translations

\n

You can help translate Mailchimp for WordPress into your language using your WordPress.org account.

\n

Development

\n

This plugin is being developed on GitHub. If you want to collaborate, please look at ibericode/mailchimp-for-wordpress.

\n

Customizing the plugin

\n

The plugin provides various filter & action hooks that allow you to modify or extend default behavior. We’re also maintaining a collection of sample code snippets.

\n","download_link":"https://downloads.wordpress.org/plugin/mailchimp-for-wp.4.8.6.zip","tags":{"email":"email","mailchimp":"mailchimp","marketing":"marketing","mc4wp":"mc4wp","newsletter":"newsletter"},"donate_link":"https://www.mc4wp.com/#utm_source=wp-plugin-repo&utm_medium=mailchimp-for-wp&utm_campaign=donate-link","icons":{"1x":"https://ps.w.org/mailchimp-for-wp/assets/icon-128x128.png?rev=1224577","2x":"https://ps.w.org/mailchimp-for-wp/assets/icon-256x256.png?rev=1224577"},"wporg":true},{"name":"Site Kit by Google","slug":"google-site-kit","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://sitekit.withgoogle.com/","short_description":"

Site Kit is the official WordPress plugin from Google for insights about how people find and use your site. Site Kit is the one-stop solution to deploy, manage, and get insights from critical Google tools to make the site successful on the web. It provides authoritative, up-to-date insights from multiple Google products directly on the

\n

Read More

\n","description":"\n\n\n

Site Kit is the official WordPress plugin from Google for insights about how people find and use your site. Site Kit is the one-stop solution to deploy, manage, and get insights from critical Google tools to make the site successful on the web. It provides authoritative, up-to-date insights from multiple Google products directly on the WordPress dashboard for easy access, all for free.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2019/12/site-kit-by-google-logo-285x160.png","2x":"https://amp-wp.org/wp-content/uploads/2019/12/site-kit-by-google-logo-372x209.png","svg":""},"wporg":false},{"name":"Newspack Blocks","slug":"newspack-blocks","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://github.com/Automattic/newspack-blocks","short_description":"

A collection of useful and easy to use Gutenberg based blocks, developed primarily for the Newspack project.

\n","description":"\n\n\n

A collection of useful and easy to use Gutenberg based blocks, developed primarily for the Newspack project.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2019/11/newspack_blocks-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2019/11/newspack_blocks-372x209.jpg","svg":""},"wporg":false},{"name":"Advanced Ads – Ad Manager & AdSense","slug":"advanced-ads","version":"1.27.0","author":"Thomas Maier, Advanced Ads GmbH","author_profile":"https://profiles.wordpress.org/webzunft","requires":"4.9","tested":"5.8","requires_php":"5.6","rating":98,"ratings":{"1":17,"2":1,"3":9,"4":21,"5":1181},"num_ratings":1229,"support_threads":69,"support_threads_resolved":63,"active_installs":100000,"downloaded":5146011,"last_updated":"2021-08-24 9:21am GMT","added":"2014-06-23","homepage":"https://wpadvancedads.com","short_description":"Manage and optimize all ad types. Support for Google AdSense Auto ads, Amazon, image banners, HTML, page builder, ad widget, ad rotations, ads.txt","description":"

Are you looking for a simple ad manager plugin? These are the top arguments to use Advanced Ads:

\n
    \n
  • approved in publishing and ad optimization since 2009
  • \n
  • works with all ad types and networks, including Google AdSense, Google Ad Manager (formerly Google DoubleClick for Publishers, DFP), Amazon ads, or media.net ads
  • \n
  • most features to test and optimize ads
  • \n
  • unlimited ad units
  • \n
  • ads.txt support
  • \n
  • dedicated ad block for the block editor
  • \n
  • Google AdSense Partner, who implements all technical changes early and in 100% compliance with the Google AdSense policies
  • \n
  • the only advertising solution with Ad Health integration and Google AdSense violation checks
  • \n
  • best rated free support
  • \n
\n

This is what our users are saying about Advanced Ads:

\n
\n

We use this plugin to deliver rotating ads on a community news site, and it’s great. Both feature-rich and reliable, your imagination is the limit when it comes to the product you want to create for your users. We’ve delivered over a million ad impressions since we launched less than a year ago, using a combination of sidebar, top, sticky and in-content placements — both HTML5 and images. Advanced Ads makes it easy for our small team to deliver a good experience to our users and our advertisers.
\n mytown304 on wp.org

\n
\n

Would you like to know if there is a certain feature, what the optimized setup would be, or how to implement your client’s demands? Just open a thread in the forum!

\n

Advanced Ads allowed us to grow from 0 to 100 MM monthly ad impressions. Benefit from our experience as a publisher and monetize your website today!

\n

Full Feature List.

\n

ad management

\n
    \n
  • create and display unlimited ad units
  • \n
  • rotate ads
  • \n
  • schedule ads and set start time and expiration date
  • \n
  • target ads by content and user groups
  • \n
  • inject ads into posts and pages automatically without coding
  • \n
\n

ad types

\n

choose between different ad types that enable you to:

\n
    \n
  • insert ads and banners from all ad and affiliate networks (e.g., Google AdSense, Amazon, BuySellAds, Google Ad Manager (formerly Google DoubleClick for Publishers, DFP), Ezoic, media.net, Booking.com, Tradedoubler, Awin, Getyourguide, The Moneytizer, Infolinks…)
  • \n
  • dedicated support for all types of Google AdSense ads, including text and display ads, native ads (In-article, In-feed, matched content), Auto ads, and Auto ads for AMP
  • \n
  • display images and image banners
  • \n
  • create content-rich ads with the WordPress TinyMCE editor
  • \n
  • insert contextual Amazon Native Shopping Ads
  • \n
  • inject HTML, CSS, Javascript or PHP code
  • \n
  • use shortcodes within ads (to also deliver advertisements from another ad plugin like Ad Inserter, AdRotate, Quick AdSense, WP Bannerize, or the Google AdSense Plugin WP QUADS)
  • \n
\n

display ads for WP

\n
    \n
  • auto-inject ads via placements
  • \n
  • use functions to display ads in template files
  • \n
  • use shortcodes to place ads manually in post content
  • \n
  • show ads in the sidebar and in widgets
  • \n
  • disable all ads on specific pages
  • \n
  • display multiple ads (ad blocks)
  • \n
  • display a customizable ad label, e.g., “Advertisements” above each banner ad
  • \n
\n

display conditions

\n

show ads based on conditions like:

\n
    \n
  • individual posts, pages, and other post types
  • \n
  • posts by category, tags, taxonomies, author, and age
  • \n
  • archive pages by category, tags, taxonomies
  • \n
  • special page types like 404, attachment and front page
  • \n
  • hide ads on secondary queries (e.g., posts in sidebars)
  • \n
  • display or hide banners within the post feed
  • \n
  • hide all ads from specific page types, e.g., 404 pages, feed
  • \n
  • hide ads from bots and web crawlers
  • \n
\n

visitor conditions

\n

serve ads by conditions based on the visitor. List of all visitor conditions

\n
    \n
  • display or hide a banner by device: mobile and tablet or desktop
  • \n
  • display or hide a banner by role and for logged-in visitors
  • \n
  • advanced visitor conditions: previously visited URL (referrer), user capability, browser language, browser and device, URL parameters included in Pro
  • \n
  • display ads by geolocation with the Geo Targeting add-on
  • \n
  • display ads by browser width with the Responsive add-on
  • \n
\n
\n

Fantastic plugin and outstanding support
\n I tried at least three other ad plugins for WordPress and ‘Advanced Ads’ is by and far the best one. Last but not least in the support. The first port of call are a number of excellent tutorials. And finally the hands on support. I don’t quite know how he does it but the speed and depth of responses are absolutely amazing.
\n djsawyer on wp.org

\n
\n

ad injection | placements

\n

Placements to insert ads in pre-defined positions in your theme and content. List of all placements

\n
    \n
  • ads after any given paragraph, headline, image, or other HTML element
  • \n
  • ads at the top or bottom of the post content
  • \n
  • ads before closing </head> tag
  • \n
  • ads in the footer
  • \n
  • test placements against each other with Pro (A/B testing)
  • \n
  • many more ad positions with add-ons
  • \n
  • automatic insertion of any kind of code into header or footer, not only advertising
  • \n
\n

mobile devices

\n
    \n
  • display ads on mobile and tablets or desktop only
  • \n
  • display responsive image ads
  • \n
  • ads for specific browser sizes only using Responsive Ads
  • \n
  • inserting ads on AMP pages with Responsive Ads
  • \n
\n

Google AdSense

\n

Amazing features of the most powerful and easy Google AdSense plugin.

\n
    \n
  • unlimited Google AdSense ads banners
  • \n
  • pull ad units directly from your Google AdSense account
  • \n
  • show AdSense revenue in WP Admin
  • \n
  • change settings of your Google AdSense ads directly from your WordPress backend
  • \n
  • supports all Google AdSense ad types, including Google AdSense display ads, native ads like In-feed ads, In-article ads, matched content ads, Google AdSense Auto ads, and Google AdSense Auto ads for AMP
  • \n
  • change type and sizes of AdSense ads without going into your Google AdSense account
  • \n
  • hide Google AdSense advertisements on 404 pages by default (to comply with Google AdSense terms)
  • \n
  • insert Google AdSense code for verification and AdSense Auto Ads
  • \n
  • enable AdSense Auto ads on AMP
  • \n
  • easy Ad Health integration and Google AdSense violation checks
  • \n
  • option to remove the Google AdSense background color
  • \n
  • place Google AdSense In-feed ads using the also free In-feed add-on
  • \n
  • assistant for exact sizes of responsive Google AdSense ads with the Responsive add-on
  • \n
  • convert Google AdSense ads into AMP ads automatically with the Responsive add-on
  • \n
  • ads.txt generated with the correct AdSense information automatically
  • \n
  • works along with Google Site Kit or can replace it if you want to control your ad placements
  • \n
\n

\n

\n

Like j4ckson185, there are thousands of happy AdSense users:

\n
\n

Your app is awesome, congratulations! Google Adsense suggests using your app on its official website, it’s incredible!

\n
\n

ads.txt

\n
    \n
  • generates an ads.txt with custom content
  • \n
  • adds the content for AdSense to the ads.txt automatically
  • \n
\n

\n

\n

ad blocker

\n
    \n
  • basic features to prevent ads from being removed by AdBlock and other ad blockers
  • \n
  • prevent ad blockers from breaking sites where plugin scripts are running
  • \n
  • ad blocking detection: show alternative content to ad block users with Pro and improve the monetization of your website
  • \n
\n

Learn more on the plugin homepage.

\n

Thank you for motivating us with your positive review.

\n

Localizations: Arabic, Chinese, Czech, Danish, Dutch, English, French, German, Hungarian, Italian, Japanese, Norwegian, Polish, Portuguese, Russian, Slovak, Spanish, Turkish, Vietnamese

\n
\n

Add-Ons

\n
    \n
  • all add-ons include priority email support
  • \n
  • Advanced Ads Pro – powerful tools for ad optimizations: cache-busting, more placements, lazy loading, ad blocker module, click fraud protection, and many more
  • \n
  • Tracking – track ad impressions and ad clicks with local methods or Google Analytics
  • \n
  • Responsive Ads – target ads to specific browser sizes and create ads for AMP
  • \n
  • Google Ad Manager Integration – a quick and error-free way to load ad units from your Google Ad Manager (formerly Google DoubleClick for Publishers, DFP) account without touching any ad codes
  • \n
  • Geo Targeting – display ads based on the geo location of the visitor
  • \n
  • Sticky Ads – increase click rates with fixed, sticky, and anchor ads
  • \n
  • Fixed Widget for WordPress – turn sidebar widgets into performant fixed sticky ads
  • \n
  • PopUp and Layer Ads – display ads and other content in layers and popups
  • \n
  • Selling Ads – allows you to sell ads on your website fully automated, including payments and advertiser profiles.
  • \n
  • Ad Slider – create a simple slider from your ads
  • \n
\n
\n

If you have problems with Advanced Ads, please reach out to our support or open a new topic in our forums on wordpress.org
\n.

\n

Integrations

\n

Advanced Ads integrates with plenty of other plugins:

\n\n","download_link":"https://downloads.wordpress.org/plugin/advanced-ads.1.27.0.zip","tags":{"ad-manager":"ad manager","ad-rotation":"ad rotation","ads":"ads","adsense":"adsense","banner":"banner"},"donate_link":"","icons":{"1x":"https://ps.w.org/advanced-ads/assets/icon-128x128.gif?rev=2293174","2x":"https://ps.w.org/advanced-ads/assets/icon-256x256.gif?rev=2293174"},"wporg":true},{"name":"Syntax-highlighting Code Block (with Server-side Rendering)","slug":"syntax-highlighting-code-block","version":"1.3.1","author":"Weston Ruter","author_profile":"https://profiles.wordpress.org/westonruter","requires":"5.5","tested":"5.7.2","requires_php":"5.6","rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":17},"num_ratings":17,"support_threads":1,"support_threads_resolved":1,"active_installs":1000,"downloaded":11948,"last_updated":"2021-03-09 8:51pm GMT","added":"2019-07-30","homepage":"https://github.com/westonruter/syntax-highlighting-code-block","short_description":"Extending the Code block with syntax highlighting rendered on the server, thus being AMP-compatible and having faster frontend performance.","description":"

This plugin extends the Code block in WordPress core to add syntax highlighting which is rendered on the server. Pre-existing Code blocks on a site are automatically extended to include syntax highlighting. Doing server-side syntax highlighting eliminates the need to enqueue any JavaScript on the frontend (e.g. Highlight.js or Prism.js) and this ensures there is no flash of unhighlighted code (FOUC?). Reducing script on the frontend improves frontend performance and it also allows for the syntax highlighted code to appear properly in AMP pages as rendered by the official AMP plugin (see also ampproject/amp-wp#972) or when JavaScript is turned off in the browser.

\n

In addition to not adding any JavaScript to the frontend, the stylesheets needed for styling the Code block will only be added to the page if there is a Code block present. The stylesheets are added inline when the Code block is rendered, ensuring that they do not block rendering of any content higher in the page. If stylesheets fail to load for any reason, the block simply renders without styling, with one key exception: highlighted lines are wrapped in mark elements so they’ll get highlighted regardless, including in RSS Feeds and posts syndicated in email (as long as the mark element is supported in the client).

\n

This extended Code block uses language auto-detection to add syntax highlighting, but you can override the language in the block’s settings sidebar. (There is currently no syntax highlighting of the Code block in the editor.) The plugin supports all programming languages that highlight.php supports (being a port of highlight.js). The Code block also is extended to support specifying the aforementioned highlighted lines. There is also a checkbox for whether to show line numbers on the frontend (with the numbers being non-selectable). Lastly, given inconsistencies across themes as to whether lines in a Code block should be wrapped, this plugin adds styling to force them to no-wrap by default, with a checkbox to opt-in to wrapping when desired.

\n

For advanced usage, please see the plugin wiki.

\n

This plugin is developed on GitHub. See list of current issues with the plugin. Please feel free to file any additional issues or requests that you may come across. Pull requests are welcome.

\n

Credits

\n

This is a fork of Code Syntax Block by Marcus Kazmierczak (mkaz), which is also available on WordPress.org. Copyright (c) 2018 Marcus Kazmierczak. Licensed under GPL 2.0 or later.

\n

highlight.php is released under the BSD 3-Clause License. Copyright © 2006-2013, Ivan Sagalaev (maniac@softwaremaniacs.org), highlight.js (original author). Copyright © 2013, Geert Bergman (geert@scrivo.nl), highlight.php

\n","download_link":"https://downloads.wordpress.org/plugin/syntax-highlighting-code-block.1.3.1.zip","tags":{"block":"block","code":"code","code-highlighting":"code highlighting","code-syntax":"code syntax","syntax-highlight":"syntax highlight"},"donate_link":"","icons":{"1x":"https://ps.w.org/syntax-highlighting-code-block/assets/icon.svg?rev=2131108","2x":"https://ps.w.org/syntax-highlighting-code-block/assets/icon-256x256.png?rev=2131108","svg":"https://ps.w.org/syntax-highlighting-code-block/assets/icon.svg?rev=2131108"},"wporg":true},{"name":"Contact Form by WPForms – Drag & Drop Form Builder for WordPress","slug":"wpforms-lite","version":"1.6.9","author":"WPForms","author_profile":"https://profiles.wordpress.org/jaredatch","requires":"4.9","tested":"5.8","requires_php":"5.5","rating":98,"ratings":{"1":210,"2":46,"3":54,"4":219,"5":9567},"num_ratings":10096,"support_threads":96,"support_threads_resolved":83,"active_installs":4000000,"downloaded":81432246,"last_updated":"2021-08-26 11:06am GMT","added":"2016-03-14","homepage":"https://wpforms.com","short_description":"The best WordPress contact form plugin. Drag & Drop online form builder that helps you…","description":"

WordPress Contact Form Builder Plugin

\n

We believe that you shouldn’t have to hire a developer to create a WordPress contact form. That’s why we built WPForms, a drag & drop WordPress form builder that’s EASY and POWERFUL.

\n

WPForms allows you to create beautiful contact forms, feedback form, subscription forms, payment forms, and other types of forms for your site in minutes, not hours!

\n

At WPForms, user experience is our #1 priority. Our pre-built form templates and workflows make WPForms the most beginner friendly contact form plugin in the market.

\n

The WPForms Challenge guides you through creating your first form in under 5 minutes. We walk you through using the form builder all the way to adding a form to a page on your site! WPForms includes integrations for popular page builders like the WordPress Block Editor (Gutenberg), Classic Editor, Elementor, and Divi making the whole process seamless.

\n

WPForms is a 100% mobile responsive contact form solution, so your contact forms will always look great on all devices (mobile, tablet, laptop, and desktop).

\n

WPForms’ contact forms are also highly optimized for web and server performance because we understand the importance of speed when it comes to SEO, marketing, and conversion. We can honestly say that WPForms is one of the fastest WordPress contact form builder plugins in the world.

\n
\n

WPForms Pro
\n This plugin is the lite version of the WPForms Pro plugin that comes with all the contact form features you will ever need including email subscription forms, multi-page contact forms, file uploads, conditional logic, payment integrations, form templates, and tons more. Click here to purchase the best premium WordPress contact form plugin now!

\n
\n

We took the pain out of creating contact forms and made it easy. Here’s why smart business owners, designers, and developers love WPForms, and you will too!

\n

\n

Drag & Drop Contact Form Builder

\n

We were tired of the bloated and buggy contact form builder plugins. That’s why we built WPForms to adapt to your workflow and allow you to create custom contact forms in minutes. By using our easy to use drag and drop online form builder, you can easily add custom form fields, rearrange them, and basically create a complete contact form in 5 minutes or less.

\n

But don’t just take our word. See what one of the WordPress experts are saying:

\n
\n

WPForms is by far the easiest form plugin to use. My clients love WPForms and it’s one of the few plugins they can use without any training. As a developer I appreciate how fast, modern, clean and extensible it is.
\n Bill Erickson – Expert WordPress Consultant

\n
\n

Pre-built Form Templates

\n

Building contact forms in WordPress can be time consuming. Why?

\n

Because every other WordPress contact form builder plugin requires you to build your contact form from scratch. The truth is it’s often not necessary to create a contact form completely from scratch unless you really want to.

\n

Whether you’re looking to create a simple contact form, marketing form, request a quote form, donation form, payment order form, registration form, or a subscription form, we have a form template for you inside our contact form builder.

\n

WPForms comes with pre-built form templates to help you save time. You can add, remove, or re-arrange fields as necessary.

\n

See 100+ Pre-Made WPForms Form Template Demo

\n

Mobile Ready, SEO Friendly and Optimized for Speed

\n

WPForms’ contact forms are 100% responsive and mobile-friendly by default. We also optimized every query on the front-end and the back-end to ensure maximum speed – Yes, WPForms is one of the fastest WordPress contact form plugin.

\n

You can embed your contact form on any page with optimized title and description. With the speed and proper formatting, WPForms is also one of the most SEO friendly contact form plugin.

\n

All the Fields & Features that You Need to Succeed

\n

From star ratings to file uploads to multi-page contact forms with progress bar, we have all the fields you need.

\n

You can easily integrate your contact forms with an email marketing service or collect payments for bookings and orders. WPForms allows you to do it all.

\n

The best part is, you can do it all without hiring a developer.

\n

See what one business owner has to say about WPForms’ contact form:

\n
\n

As a business owner, time is my most valuable asset. WPForms allow me to create smart contact forms with just a few clicks. With their pre-built form templates and the drag & drop builder, I can create a new form that works in less than 2 minutes without writing a single line of code. Well worth the investment.
\n David Henzel – Co-founder of MaxCDN

\n
\n

Surveys & Polls

\n

Along with contact form, you can also use WPForms to create surveys and polls.

\n

Our WordPress Survey plugin addon comes with smart survey fields including likert scale, star ratings, multiple choice, Net Promoter Score (NPS), and more, so you can create custom survey forms like Survey Monkey (without the high costs).

\n

WPForms offer the best-in class survey reporting. You can use our interactive reports to customize the graphs, export them for your presentations, and even display the aggregate results to your users.

\n

The best part about WPForms survey reports is that it can retroactively work on any old contact form or feedback survey contact form created with WPForms.

\n

Thousands of businesses love WPForms surveys for creating employee feedback form, customer feedback form, online petition form, and more.

\n

You can also use the surveys & polls addon to easily create a poll on your site. To save you time when creating a user poll, we have added a built-in poll forms template. Our poll feature offers real-time reports, so you can share poll results with the user immediately after they submit their vote.

\n

Just like the contact form, you can embed your surveys and polls inside any post, page, or widget area in WordPress.

\n

Membership and Default WordPress Forms

\n

Aside from building simple contact forms which every WordPress site needs, WPForms also helps you create better default WordPress forms.

\n

For example, you can use WPForms to create custom WordPress login forms and custom WordPress user registration forms which are great for membership sites.

\n

For membership sites, you can also use WPForms to create a password-protected contact form or even a members only contact form which is restricited to logged-in users only.

\n

Even if you’re not using a WordPress membership plugin, you can use WPForms to create membership registration forms, online RSVP forms, and other address book contact forms.

\n

Bloggers and publishers can use our WordPress post submission forms to accept guest posts, testimonials contact form to collect testiomnials, and partnership agreement forms to grow their business.

\n

Payment Form, Donation Form, Booking Form, and More

\n

While WPForms started out as a contact form plugin, it has evolved into a powerful custom forms solution that you can use to create a payment form, donation form, registration form, online booking form, mobile form, and basically any type of custom form you need.

\n

WPForms integrates with both PayPal and Stripe, so you can easily create a credit card payment form to accept payments on your website. If you’re using SSL, then you can use our Stripe Payment form to accept credit card payments. Alternatively you can use our PayPal payment form to make a donation form and accept payments online.

\n

Aside from simple order forms, business owners also use WPForms to create custom product purchase forms, t-shirt order forms, online booking forms, and more.

\n

We understand that sometimes you may need to create a contact form that require a signature. WPForms comes with a signature field to collect user signature on your WordPress forms or even create custom signature forms.

\n

You can do all of this while still using the same easy-to-use contact form builder that’s loved by over 4 million users.

\n
\n

I am so impressed with this plugin. I decided to give it a shot over some of the other form plugins, and I am so glad I did. It works well, is so easy to use and customize. The support is amazing on top of it all. I got the pro version because I was so pleased. Highly recommend.
\n Micky73 – WordPress user

\n
\n

Forms that are Optimized for Conversion and Results

\n

With our Form Pages addon, you can create distraction-free custom form landing pages like Google Forms and Wufoo right inside WordPress, so you can increase conversions without the high costs (See Form Pages Demo).

\n

To improve form completion rate, we created Conversational Forms® which helps you make your generic feedback form and other custom contact forms feel more human by adding an interactive form layout. Our conversational forms are similar to Typeform without the high subscription costs (See Conversational Forms Demo).

\n

WPForms also has other conversion optimization features such as our smart form logic that lets you create dynamic contact forms where fields change based on user’s answer, multi-page contact forms with progress bar, and other advanced contact forms.

\n

WPForms form analytics integration with MonsterInsights allow you to easily track your lead capture forms, newsletter signup forms, request a quote contact form, and other important forms on your site.

\n

Easy to Customize and Extend

\n

You can easily customize your contact forms with our section dividers, HTML blocks, and custom CSS.

\n

If you’re using Elementor or Divi page builders our native integrations let you easily customize the style of your forms.

\n

We also knew that our developer friends may want to extend simple contact forms further. That’s why WPForms come with tons of hooks and filters to create custom functionality.

\n

Since contact forms are essential for marketing, WPForms is a must have plugin for every website!

\n

Full WPForms Feature List

\n
    \n
  • Online Form Builder – Our powerful drag & drop contact form builder allows you to easily create WordPress contact forms and other online forms in just a few minutes without writing any code.
  • \n
  • 100% Responsive – Mobile Friendly contact forms.
  • \n
  • GDPR Friendly – Make your contact form GDPR compatible with just a few clicks.
  • \n
  • Form Templates – Use our pre-built form templates to save time. Never start from scratch again (see all form templates demos).
  • \n
  • Spam Protection – WPForms provides smart anti-spam protection out-of-the-box, plus direct integrations with hCaptcha and Google reCAPTCHA.
  • \n
  • Instant Form Notification – Quickly respond to incoming inquiries with our instant contact form notification system.
  • \n
  • Smart Form Confirmation – Show a custom success message, or redirect users to a custom thank you page.
  • \n
  • File Uploads – Collect files and media through your contact forms with File Uploads.
  • \n
  • Multi-Page Forms – Split long forms into multiple pages with progress bar to improve user experience.
  • \n
  • Smart Conditional Logic – Show or hide fields and contact form sections based on user behavior.
  • \n
  • Signature Forms – Create signature forms or add the signature field to your contact form, application form, booking form, etc.
  • \n
  • User Registration Forms – Create custom user registration form and custom login form in WordPress.
  • \n
  • Post Submissions – Collect user-submitted content in WordPress with our front-end post submission form. Great for guest posts, testimonials, business directory, listings, etc.
  • \n
  • Geolocation – Display location information about your users.
  • \n
  • Custom Captchas – Create custom captchas for your contact form.
  • \n
  • Surveys and Polls – Easily create surveys forms and analyze the data with interactive reports.
  • \n
  • Form Abandonment – Unlock more leads and grow your business with partial-form submission.
  • \n
  • Form Locker – Manage form permissions and add access control rules including password-protected forms, members only forms, limit contact form entry per person, close form after specific date / time, etc.
  • \n
  • Offline Forms – Let your visitors save their entered data offline and submit when their internet connection is restored.
  • \n
  • Form Landing Pages – Create “distraction-free” form landing pages to boost conversions. Great Google Forms and Wufoo alternative.
  • \n
  • Conversational Forms – Interactive form layout that makes your form feels more human and boost overall completion rate. Great for surveys and registration forms. Perfect Typeform alternative for WordPress without the high costs.
  • \n
  • Webhooks – Send form entry data to secondary tools and external services. No code required, and no need for a third party connector.
  • \n
  • User Journey Reporting – Discover the steps your visitors take before they submit your forms. Right in the WordPress dashboard, you can easily see the content that’s driving the most valuable form conversions.
  • \n
\n

Integrations

\n
    \n
  • PayPal Payment Forms – Create PayPal forms to easily collect payments, donations, and online orders.
  • \n
  • Stripe Forms – Easily collect credit card payments, donations, and online orders with our Stripe addon.
  • \n
  • Authorize.Net Forms – Connect your WordPress site with Authorize.Net to collect payments, donations, and online orders.
  • \n
  • Mailchimp Forms – Create Mailchimp newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • AWeber Forms – Create AWeber newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • Campaign Monitor Forms – Create Campaign Monitor newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • GetResponse Forms – Create GetResponse newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • Constant Contact Forms – Create Constant Contact newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • Drip Forms – Create Drip newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • ActiveCampaign Forms – Add contacts to your ActiveCampaign account, record events, add notes to contacts, and more.
  • \n
  • Sendinblue Forms – Create Sendinblue forms to automate your marketing and engage your subscribers.
  • \n
  • Salesforce Forms – Easily send your WordPress form contacts and leads to your Salesforce CRM account.
  • \n
  • Zapier Addon – Connect your WordPress forms with over 1000+ apps. Route your contact form data to your favorite CRM, email marketing service, etc.
  • \n
\n

After reading this feature list, you can probably imagine why WPForms is the best WordPress contact form plugin in the market.

\n

Give WPForms a try.

\n

Want to unlock more features? Upgrade to our Pro version.

\n

Credits

\n

This plugin is created by Jared Atchison and Syed Balkhi.

\n

Branding Guideline

\n

WPForms® is a registered trademark of WPForms LLC. When writing about the contact form plugin by WPForms, please make sure to uppercase the initial 3 letters.

\n
    \n
  • WPForms (correct)
  • \n
  • WP Forms (incorrect)
  • \n
  • wpforms (incorrect)
  • \n
  • wpform (incorrect)
  • \n
\n

What’s Next

\n

If you like this plugin, then consider checking out our other projects:

\n
    \n
  • OptinMonster – Get More Email Subscribers with the most popular conversion optimization plugin for WordPress.
  • \n
  • MonsterInsights – See the stats that matter and grow your business with confidence. The best Google Analytics plugin for WordPress.
  • \n
  • SeedProd – Create beautiful landing pages with our powerful drag & drop landing page builder.
  • \n
  • WP Mail SMTP – Improve email deliverability for your contact form with the most popular SMTP plugin for WordPress.
  • \n
  • RafflePress – Best WordPress giveaway and contest plugin to grow traffic and social followers.
  • \n
  • Smash Baloon – #1 social feeds plugin for WordPress – display social media content in WordPress without code.
  • \n
  • AIOSEO – The original WordPress SEO plugin to help you rank higher in search results (trusted by over 2 million sites).
  • \n
  • Push Engage – Connect with visitors after they leave your website with the leading web push notification plugin.
  • \n
  • TrustPulse – Add real-time social proof notifications to boost your store conversions by up to 15%.
  • \n
\n

Visit WPBeginner to learn from our WordPress Tutorials and find out about other best WordPress plugins.

\n

Notes

\n

WPForms is absolutely, positively the most beginner friendly WordPress contact form plugin on the market. It is both easy and powerful.

\n

We took the pain out of creating online forms and made it easy. Check out all WPForms features.

\n

Also, I’m the founder of WPBeginner, the largest WordPress resource site for beginners. It was a huge priority for me to make a WordPress contact form plugin that beginners can use without any training.

\n

I feel that we have done that here. I hope you enjoy using WPForms.

\n

Thank you

\n

Syed Balkhi

\n","download_link":"https://downloads.wordpress.org/plugin/wpforms-lite.1.6.9.zip","tags":{"contact-form":"contact form","contact-form-plugin":"contact form plugin","custom-form":"custom form","form-builder":"form builder","forms":"forms"},"donate_link":"","icons":{"1x":"https://ps.w.org/wpforms-lite/assets/icon.svg?rev=2574198","2x":"https://ps.w.org/wpforms-lite/assets/icon-256x256.png?rev=2574201","svg":"https://ps.w.org/wpforms-lite/assets/icon.svg?rev=2574198"},"wporg":true},{"name":"MonsterInsights – Google Analytics Dashboard for WordPress (Website Stats Made Easy)","slug":"google-analytics-for-wordpress","version":"7.18.0","author":"MonsterInsights","author_profile":"https://profiles.wordpress.org/chriscct7","requires":"3.8.0","tested":"5.8","requires_php":"5.2","rating":92,"ratings":{"1":194,"2":39,"3":34,"4":75,"5":2076},"num_ratings":2418,"support_threads":8,"support_threads_resolved":8,"active_installs":3000000,"downloaded":96768014,"last_updated":"2021-08-10 9:06pm GMT","added":"2007-09-14","homepage":"https://www.monsterinsights.com/?utm_source=liteplugin&utm_medium=pluginheader&utm_campaign=pluginurl&utm_content=7%2E0%2E0","short_description":"The best free Google Analytics plugin for WordPress. See how visitors find and use your website, so you can grow your business.","description":"

Google Analytics Plugin for WordPress

\n

With over 3 million active installs, MonsterInsights is the most popular Google Analytics plugin for WordPress.

\n

We believe that it’s easy to double your traffic and sales when you know exactly how people find and use your website. MonsterInsights shows you the analytics and stats that matter, so you can grow your business with confidence.

\n

At MonsterInsights, we make it “effortless” to properly connect your WordPress site with Google Analytics, so you can start making data-driven decisions to grow your business.

\n

Unlike other Google Analytics plugins, MonsterInsights allow you to enable all advanced Google Analytics tracking features with just a few clicks (no need to hire a developer).

\n

The best part is that MonsterInsights comes with an analytics dashboard for WordPress that shows you actionable analytics reports right inside your WordPress dashboard. We have created customized reports that eliminate the fluff and only show you the stats that matter, so you can see exactly what’s working and what’s not!

\n

Simply put, MonsterInsights is the most complete Google Analytics plugin for WordPress that’s both EASY and POWERFUL.

\n

That’s why millions of small businesses and top companies like Microsoft, Bloomberg, FedEx, Yelp, Subway, etc. use MonsterInsights to setup Google Analytics on their WordPress sites.

\n
\n

MonsterInsights Pro
\n This plugin is the lite version of MonsterInsights Pro plugin that comes with all the tracking features you will ever need including events tracking, ecommerce tracking, custom dimensions tracking, page speed reports, popular post tracking, custom dimensions, affiliate link tracking, and tons more. Click here to purchase the best premium Google Analytics plugin for WordPress now!

\n
\n

We took the pain out of installing Google Analytics in WordPress and made it easy. Here’s why over 3 million smart business owners, designers, and developers love MonsterInsights, and you will too!

\n

\n

Quick & Easy Google Analytics Setup

\n

Properly setting up Google Analytics is complicated. You have to either hire a developer or learn how to add advanced code snippets to your website in many different areas. This process can take days or weeks…and can even break your website!

\n

With MonsterInsights, we made it “effortless” to properly setup Google Analytics in WordPress. Yes, you can enable all advanced Google Analytics features with just a few clicks.

\n

If you can point-and-click, then you can set up Google Analytics inside WordPress and start seeing insights in under 15 minutes (no code necessary).

\n

We keep up with all Google Analytics updates, so you can sleep well at night knowing that your website will always stay up to date with the newest features.

\n

See what one business owner is saying about MonsterInsights:

\n
\n

It just works. Really easy way to insert Google Analytics tracking code and keep it there when switching themes. No need to copy/paste code anywhere. This is the best way to handle Google Analytics in WordPress.
\n Steven Gliebe

\n
\n

Google Analytics Dashboard + Real Time Stats

\n

Our goal at MonsterInsights is to make Google Analytics easy and accessible for everyone.

\n

We understand that Google Analytics has a steep learning curve which often prevents small business owners from making informed decisions to grow their business.

\n

That’s why MonsterInsights comes with a built-in Google Analytics Dashboard for your WordPress site, so you can see all the useful information about your visitors right inside your WordPress dashboard without needing to login somewhere else.

\n

We have even created customized reports to help you filter through the noise and see the stats that really matter!

\n
    \n
  • \n

    Audience Report helps you get to know your visitors in a whole new way. It shows you detailed insights like which country your visitors are coming from, what are they most interested in, which device are they using, their age, gender, and a whole lot more. You can use this demographics report and audience clues to tweak your website design and content accordingly.

    \n
  • \n
  • \n

    **Publishers Report ** helps you understand which pages your visitors are arriving, and which pages they are leaving from. Designed specifically for blogs and other resource sites, this powerful report will show you which outbound links are getting clicked so you can easily optimize for higher conversions.

    \n
  • \n
  • \n

    Behavior Report shows you exactly how people find your website, which keywords did they search for, who referred them, what did they click on your site, and more. You can use these useful stats to identify low-hanging fruits, new partnership opportunities, and promotional areas to focus on.

    \n
  • \n
  • \n

    Content Report shows you stats on exactly which content gets the most visits, so you can stop guessing and start creating content that gets more traffic and conversion.

    \n
  • \n
  • \n

    Ecommerce Report shows you important store stats like total revenue, conversion rate, average order value, top referral sources, and more (all in one place).

    \n
  • \n
  • \n

    Forms Report shows you conversion stats for various contact forms and lead forms on your website, so you can improve the conversions to grow your business.

    \n
  • \n
  • \n

    Search Console Report shows you exactly how well your website is ranking in Google, so you can further optimize your SEO to grow your organic traffic.

    \n
  • \n
  • \n

    Custom Dimensions Report helps you dig deeper by showing you useful stats like who are your most popular authors, what are the best publication times, which are your most popular categories or tags, how well are your Yoast focus keywords and SEO score performing, and more.

    \n
  • \n
  • \n

    Site Speed Report makes it easy to track pagespeed insights and loading times for your website and get the information you need to improve user experience and your SEO rankings.

    \n
  • \n
\n

Our custom Google Analytics Dashboard reports are based on over 12+ years of online business experience. We built MonsterInsights to be the Google Analytics plugin that we wish we had.

\n

We currently use MonsterInsights on all our portfolio companies which include both media sites generating tens of millions of pageviews and eCommerce sites generating millions in sales.

\n

That’s why we can confidently say that MonsterInsights is the ultimate Google Analytics Shortcut for seeing the stats that matter and making data-driven decisions to grow your business.

\n
\n

I love being able to drill down into the analytics via the reporting feature. I have the PRO version and it makes a big difference what you can analyze. I’m glad that I can integrate with Pretty Links too!
\n Kim Beasley – MonsterInsights user

\n
\n

Google Analytics Enhanced Ecommerce Tracking Made Easy

\n

Google Analytics Enhanced Ecommerce tracking is a powerful feature that lets you track user behavior across your online store starting from product views to checkout page to thank you page and beyond.

\n

With MonsterInsights’ easy WooCommerce integration, you can setup WooCommerce analytics with literally 1-click.

\n

Once you have enabled WooCommerce tracking, MonsterInsights will show you all important WooCommerce metrics in a single dashboard including WooCommerce conversion rate, top products in your WooCommerce store, total transactions, total revenue, average order value, top referral sources, and more.

\n

Our WooCommerce analytics report also includes other detailed WooCommerce event tracking data like total add to carts, total removed from cart, time to purchase, and sessions to purchase.

\n

For those who want to go beyond our WooCommerce stats dashboard, you can easily open up the Google Analytics dashboard to combine WooCommerce data with other secondary dimensions and filters to find exactly what you’re looking for.

\n

Aside from WooCommerce Google Analytics integration, MonsterInsights’ eCommerce addon also offers seamless integration for the Easy Digital Downloads plugin.

\n

Our Easy Digital Downloads Google Analytics integration allows you to set up Enhanced Ecommerce Tracking on your store with just 1-click.

\n

Simply put, MonsterInsights’ Enhanced Ecommerce for WordPress feature is by far the easiest and most powerful in the market.

\n

Google Analytics + GDPR Compliance

\n

MonsterInsights helps make Google Analytics GDPR compliance easier for business owners.

\n

Our EU compliance addon allows you to:

\n
    \n
  • Anonymize IP in Google Analytics
  • \n
  • Disable the Demographics and Interest Reports for Remarketing and Advertising
  • \n
  • Disable UserID and author name tracking
  • \n
  • Enable the ga() compatibility mode
  • \n
  • Integrate with Cookie Notice and CookieBot plugins to collect user consent before tracking
  • \n
  • Integrate with Google AMP Consent Box before enable tracking
  • \n
  • Integrate with Google Analytics’s Chrome browser opt-out extension and built-in cookie opt-out system
  • \n
  • Offer Easy Opt Out link for Google Analytics tracking
  • \n
\n

While no single plugin can guarantee 100% GDPR compliance in WordPress, MonsterInsights goes to great length in helping business owners with GDPR compliance.

\n

For more details, see: GDPR and MonsterInsights – Everything You Need to Know.

\n

Universal Tracking + Google Analytics for AMP and Instant Articles

\n

MonsterInsights uses Google Analytics universal tracking, so you can track your users across devices and platforms.

\n

Accelerated Mobile Pages (AMP) is a project by Google that helps you speed up your website. However if you don’t set it up properly, Google AMP can cause you to lose your website analytics. Our Google Analytics AMP integration allows you to have accurate tracking on all AMP enabled pages. It works seamlessly with AMP for WordPress plugin.

\n

We also offer 1-click Google Analytics integration with Facebook Instant Articles.

\n

At MonsterInsights, we always stay ahead of the curve in helping you integrate WordPress with the latest Google Analytics tracking features.

\n
\n

Analytics for PROs! This plugin brings it all, great features and helpful info to easily see what you are doing.
\n Frank van der Sluijs

\n
\n

Google AdSense Tracking and Affiliate Link Tracking

\n

With MonsterInsights Ads tracking addon, publishers can easily track the performance of their Google AdSense Ads inside their Google Analytics dashboard.

\n

Our affiliate link tracking makes it easy for bloggers and affiliate marketers to track their affiliate links with Google Analytics.

\n

MonsterInsights uses event tracking for all WordPress outbound link tracking which is far more accurate than any built-in WordPress analytics solution.

\n

Unlike other WordPress analytics plugin, our Google Analytics affiliate link tracking does NOT slow down your website because all events are recorded via JavaScript and sent straight to your account.

\n

Most other WordPress stats plugin track data on your WordPress hosting server which slows down your website and does not scale for larger websites.

\n

Since our affiliate link tracking uses Google Analytics’ powerful servers, we can skip WordPress entirely.

\n

MonsterInsights’ affiliate link tracking feature works with all WordPress affiliate link management plugins including Pretty Links, Thirsty Affiliates, and others.

\n

Custom Dimensions Tracking, Custom Google Analytics Event Tracking, and More

\n

Our Google Analytics event tracking feature for WordPress doesn’t just stop at affiliate link tracking.

\n

You can use MonsterInsights custom Google analytics event tracking feature to easily add outbound-link tracking, file downloads tracking, call-to-action button tracking, hashmark tracking, telephone link tracking, and more.

\n

Our powerful Forms Tracking addon uses Google Analytics custom event tracking feature to enable form analytics in WordPress. With just 1-click, you can enable form conversion tracking for your contact forms, lead generation forms, registration forms, surveys, and any other type of form in WordPress.

\n

MonsterInsights’ Custom Dimensions addon allows you to push WordPress analytics even further. You can use Google Analytics custom dimensions to generate helpful WordPress stats for:

\n
    \n
  • Author Tracking – see stats for each author to find which author’s posts generate the most traffic.
  • \n
  • Post Type Tracking – see stats for WordPress post types to find out which sections are performing the best.
  • \n
  • Category Tracking – see stats for your WordPress categories to find out which sections of your sites are the most popular.
  • \n
  • Tags Tracking – see stats for your WordPress tags to find out which tags are the most popular.
  • \n
  • SEO Score Tracking – see stats for your Yoast SEO score and see how it impacts your traffic.
  • \n
  • Focus Keyword Tracking – see stats for Yoast focus keyword and see how it correlates with your traffic.
  • \n
  • Logged-in User Tracking – see WordPress stats for what percentage of your users are logged-in.
  • \n
  • User ID Tracking – see stats for each individual logged-in user’s activity through User ID custom dimension – great for Ecommerce and membership sites.
  • \n
  • Published Time Tracking – track the performance of your posts based on their published time.
  • \n
\n

Simply put, MonsterInsights allow you to take full advantage of all the powerful Google Analytics features.

\n
\n

I like how simple it is for client users and how I can turn on the advanced features for myself to get all the details right.
\n Skip Shean

\n
\n

Google Analytics Dashboard Plugin for WordPress Multisite Networks

\n

MonsterInsights is the most popular analytics plugin for adding Google Analytics to WordPress multisite.

\n

We have built-in all permissions and controls that you would need to successfully run Google Analytics on a WordPress multi-site.

\n

You can control who has access to view the Google Analytics Dashboard report in WordPress. Our permissions setting allows you to hide analytics reports for specific user roles.

\n

Similarly, we understand that some sites may want to exclude logged-in users from tracking. MonsterInsights gives you granular control to exclude admin in Analytics as well as other user roles.

\n

Our performance addon allows you to adjust sample rate and site speed sample rates for Google Analytics.

\n

By now you can probably see why MonsterInsights has become the most popular Google Analytics plugin for WordPress.

\n

We understand Google Analytics better than any other analytics plugin for WordPress.

\n

Full MonsterInsights Feature List

\n
    \n
  • Quick and Easy Setup – Easily setup Google Analytics for WordPress with just a few clicks (no coding needed)
  • \n
  • Real Time Stats – See real time stats inside your Google Analytics dashboard.
  • \n
  • Universal Tracking – Get better insights with Google Analytics’ universal tracking.
  • \n
  • Google Analytics Dashboard – See the stats that matter from right inside your WordPress dashboard with custom Publisher Report, Ecommerce report, and Search Console report.
  • \n
  • eCommerce Tracking – Add Google Analytics Ecommerce tracking to WordPress.
  • \n
  • WooCommerce Google Analytics – Add Enhanced Ecommerce Tracking to your WooCommerce store.
  • \n
  • Easy Digital Downloads Google Analytics – Add Enhanced Ecommerce Tracking to your EDD store.
  • \n
  • Ads Tracking – Track your Google Adsense ads with Google Analytics.
  • \n
  • Affiliate Link Tracking – Track your affiliate links and get stats that matter.
  • \n
  • File Download Tracking – Enable file download stats with just a click.
  • \n
  • Custom Link Tracking – Track your outbound link clicks with Google Analytics.
  • \n
  • Events Tracking – Track custom button and banner clicks with Google Analytics.
  • \n
  • Custom Dimensions Tracking – Enable Google analytics custom dimensions tracking for WordPress.
  • \n
  • Author Tracking – See author stats and discover who’s the most popular author on your site.
  • \n
  • Popular Post Tracking – See which blog post and section is the most popular.
  • \n
  • Contextual Insights – Get actionable tips on how to improve engagement and get more visitors based on your site’s traffic.
  • \n
  • Headline Analyzer – Get more clicks and improve SEO following suggestions from our Headline Analyzer directly in the WordPress editor
  • \n
  • Custom Post Type Tracking – Track the performance of your custom post types.
  • \n
  • Referral Tracking – See how visitors are finding your website to better focus your marketing efforts.
  • \n
  • Performance Tracking – Control the performance rate and sample rate for your Google Analytics report.
  • \n
  • Enhanced Link Attribution – Get better analytics with enhanced link attribution.
  • \n
  • Email Summaries – Your site’s Google Analytics traffic report delivered straight to your inbox every week.
  • \n
  • Google Analytics for AMP – Add proper tracking for Google AMP.
  • \n
  • Google Analytics for Facebook Instant Articles – Add proper tracking for Facebook Analytics.
  • \n
  • Google Analytics GDPR Compliance – EU compliance addon helps you improve Google Analytics GDPR compliance by adding anonymize IP, cookie consent for opt-out tracking, and more.
  • \n
  • Form Conversion Tracking – Track conversions for your WordPress forms. Works with all popular plugins including WPForms, Contact Form 7, Gravity Forms, Formidable Forms, and more.
  • \n
  • Google Optimize Tracking – Enable Google Analytics support for Google Optimize A/B Testing.
  • \n
  • Google Analytics Tools – Helpful tools for Google Analytics such as UTM link tracking builder.
  • \n
  • Want us to add something else? Suggest a feature and we’ll get it added!
  • \n
\n

After reading this exhaustive feature list, you can probably imagine why MonsterInsights is the best Google Analytics plugin for WordPress.

\n

Give MonsterInsights a try.

\n

Want to unlock even more features? Upgrade to our Pro version.

\n
\n

Simple, yet powerful. Amazing piece of plugin, does exactly what expected and even more.
\n Matt Jaworski

\n
\n

Popular Google Analytics Tutorials

\n\n

Note for Beginners

\n

Like all WordPress plugins, Google Analytics by MonsterInsights is only available for self-hosted WordPress sites. This means you will need to switch from WordPress.com to WordPress.org if you want to use this plugin on your WordPress site.

\n

For more details, see this infographic on self hosted WordPress.org vs free WordPress.com

\n

Credits

\n

This plugin is created by Chris Christoff and Syed Balkhi with sponsorship from WPBeginner.

\n

Branding Guidelines

\n

MonsterInsights® is a registered trademark of MonsterInsights LLC. When writing about the Google Analytics for WordPress plugin by MonsterInsights, please make sure to uppercase the first letters of both word.

\n
    \n
  • MonsterInsights (correct)
  • \n
  • Monster Insights (incorrect)
  • \n
  • monsterinsights (incorrect)
  • \n
  • monsterinsight (incorrect)
  • \n
\n

What’s Next

\n

If you like this plugin, then consider checking out our other projects:

\n
    \n
  • OptinMonster – Get More Email Subscribers
  • \n
  • WPForms – Best WordPress Contact Form Plugin
  • \n
  • AIOSEO – The original WordPress SEO plugin to help you rank higher in search results (trusted by over 2 million sites)
  • \n
  • SeedProd – Most popular coming soon & maintenance mode plugin for WordPress
  • \n
  • WP Mail SMTP – Improve email deliverability for your contact form with the most popular SMTP plugin for WordPress
  • \n
  • RafflePress – Best WordPress giveaway and contest plugin to grow traffic and social followers
  • \n
  • Smash Balloon – #1 social feeds plugin for WordPress – display social media content in WordPress without code
  • \n
  • PushEngage – Connect with visitors after they leave your website with the leading web push notification plugin
  • \n
  • TrustPulse – Add real-time social proof notifications to boost your store conversions by up to 15%
  • \n
\n

This plugin would not be possible without the help and support of WPBeginner, the largest WordPress resource site. You can learn from our free WordPress Tutorials like how to install WordPress, choose the best WordPress hosting, WordPress glossary, and more.

\n

You can also learn about other best WordPress plugins.

\n","download_link":"https://downloads.wordpress.org/plugin/google-analytics-for-wordpress.7.18.0.zip","tags":{"google-analytics":"google analytics","google-analytics-dashboard":"google analytics dashboard","google-analytics-widget":"google analytics widget","woocommerce-stats":"WooCommerce stats","wordpress-analytics":"WordPress analytics"},"donate_link":"http://www.wpbeginner.com/wpbeginner-needs-your-help/","icons":{"1x":"https://ps.w.org/google-analytics-for-wordpress/assets/icon.svg?rev=1598927","2x":"https://ps.w.org/google-analytics-for-wordpress/assets/icon-256x256.png?rev=1598927","svg":"https://ps.w.org/google-analytics-for-wordpress/assets/icon.svg?rev=1598927"},"wporg":true},{"name":"Atomic Blocks – Gutenberg Blocks Collection","slug":"atomic-blocks","version":"2.9.0","author":"atomicblocks","author_profile":"https://profiles.wordpress.org/atomicblocks","requires":"5.3","tested":"5.5.5","requires_php":"5.6","rating":86,"ratings":{"1":5,"2":0,"3":1,"4":6,"5":31},"num_ratings":43,"support_threads":1,"support_threads_resolved":0,"active_installs":40000,"downloaded":991486,"last_updated":"2020-10-28 4:53pm GMT","added":"2018-03-26","homepage":"https://atomicblocks.com","short_description":"A collection of beautiful, customizable Gutenberg blocks for the new block editor.","description":"

Atomic Blocks has moved!

\n

Same powerful blocks, same beautiful designs, same innovative team. Atomic Blocks has been renamed to Genesis Blocks. Learn more about Genesis Blocks. With our migration tool built right into Genesis Blocks, the transition between plugins will be simple and seamless – plus you’ll be ready to receive the new blocks and features we’re releasing soon.

\n

Atomic Blocks is a collection of page building blocks for the new Gutenberg block editor. Building pages with the block editor and Atomic Blocks gives you more control to quickly create and launch any kind of site you want!

\n

Installing the customizable Atomic Block plugin adds a collection of beautiful, site-building blocks to help you customize page layouts, increase engagement, and get results for your business. Atomic Blocks provides everything from customizable buttons, to beautifully-designed page sections and full-page layout designs via the Section & Layout block.

\n

Along with the content blocks you’ll find in Atomic Blocks, we’re also publishing helpful articles and tutorials to help you get started with Gutenberg.

\n

New Section and Layout Block!

\n

\n

On top of the handy, time-saving blocks already found in Atomic Blocks, we’re excited to introduce the brand new Section and Layout block! This block comes with a library of pre-designed sections and layouts to help you quickly and easily build a beautiful site with the new block editor.

\n

Using the Section and Layout modal window, you can browse designs by category, search, and even add sections and layouts to a Favorites tab for quick access later. Paired with the free Atomic Blocks theme, which has support for full-width, block-based page building, you have everything you need to start building your site today!

\n

Atomic Blocks currently includes the following blocks:

\n\n

Atomic Blocks WordPress Theme

\n

We’ve created a beautiful WordPress theme to help you get started with the Atomic Blocks plugin and the new WordPress block editor. The theme integrates seamlessly with the blocks you’ll find in the plugin!

\n\n

In addition to the Atomic Block Theme, we’ve built Revolution Pro with the StudioPress team. This theme is built from the ground up with blocks—Gutenberg core and Atomic. Using this Theme and the Genesis One-Click Theme Install you can have a new block-based site up and running in minutes.

\n\n

Google AMP Support

\n

The Accelerated Mobile Pages (AMP) project is a publishing format created by Google to enhance site performance for mobile website users. AMP pages are specially designed for Google search users to quickly load website pages without using any extraneous data. Atomic Blocks has support for AMP built into each block!

\n

Atomic Blocks Help File

\n

We’ve created a handy help file that you can check out here. The help file covers how to setup the plugin and get started with the blocks.

\n

The help file is also available in the plugin once activated. Click the Atomic Blocks admin menu item to visit the Getting Started page.

\n

View the plugin help file

\n

Follow Along:

\n\n","download_link":"https://downloads.wordpress.org/plugin/atomic-blocks.2.9.0.zip","tags":{"blocks":"blocks","editor":"editor","gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","page-builder":"page builder"},"donate_link":"https://atomicblocks.com","icons":{"1x":"https://ps.w.org/atomic-blocks/assets/icon-128x128.jpg?rev=1914920","2x":"https://ps.w.org/atomic-blocks/assets/icon-256x256.jpg?rev=1914921"},"wporg":true},{"name":"Akismet Spam Protection","slug":"akismet","version":"4.1.12","author":"Automattic","author_profile":"https://profiles.wordpress.org/automattic","requires":"4.6","tested":"5.8","requires_php":false,"rating":94,"ratings":{"1":40,"2":9,"3":13,"4":45,"5":811},"num_ratings":918,"support_threads":9,"support_threads_resolved":8,"active_installs":5000000,"downloaded":208775698,"last_updated":"2021-09-03 4:53pm GMT","added":"2005-10-20","homepage":"https://akismet.com/","short_description":"The best anti-spam protection to block spam comments and spam in a contact form. The most trusted antispam solution for WordPress and WooCommerce.","description":"

Akismet checks your comments and contact form submissions against our global database of spam to prevent your site from publishing malicious content. You can review the comment spam it catches on your blog’s “Comments” admin screen.

\n

Major features in Akismet include:

\n
    \n
  • Automatically checks all comments and filters out the ones that look like spam.
  • \n
  • Each comment has a status history, so you can easily see which comments were caught or cleared by Akismet and which were spammed or unspammed by a moderator.
  • \n
  • URLs are shown in the comment body to reveal hidden or misleading links.
  • \n
  • Moderators can see the number of approved comments for each user.
  • \n
  • A discard feature that outright blocks the worst spam, saving you disk space and speeding up your site.
  • \n
\n

PS: You’ll be prompted to get an Akismet.com API key to use it, once activated. Keys are free for personal blogs; paid subscriptions are available for businesses and commercial sites.

\n","download_link":"https://downloads.wordpress.org/plugin/akismet.4.1.12.zip","tags":{"anti-spam":"anti-spam","antispam":"antispam","comments":"comments","contact-form":"contact form","spam":"spam"},"donate_link":"","icons":{"1x":"https://ps.w.org/akismet/assets/icon-128x128.png?rev=969272","2x":"https://ps.w.org/akismet/assets/icon-256x256.png?rev=969272"},"wporg":true},{"name":"WP GDPR Cookie Notice","slug":"wp-gdpr-cookie-notice","version":"1.0.0-rc.1","author":"Felix Arntz","author_profile":"https://profiles.wordpress.org/flixos90","requires":"4.9.6","tested":"5.7.2","requires_php":"7.0","rating":76,"ratings":{"1":4,"2":0,"3":0,"4":0,"5":9},"num_ratings":13,"support_threads":1,"support_threads_resolved":0,"active_installs":700,"downloaded":5941,"last_updated":"2021-04-02 11:51pm GMT","added":"2019-03-01","homepage":"https://wordpress.org/plugins/wp-gdpr-cookie-notice/","short_description":"Simple performant cookie consent notice that supports AMP, Web Stories, granular cookie control and live…","description":"

This plugin adds a simple performant cookie consent notice to your WordPress site that supports AMP, Web Stories, granular cookie control and live preview customization.

\n

Not only does the notice allow you to provide the regular message that your site uses cookies, you can also optionally grant your site visitors permission to granularly allow which cookie types are allowed, supporting groups of functional (always required), preferences, analytics and marketing cookies. This aims towards compliance with how the new GDPR regulations recommend implementing cookie control for your site.

\n

In addition to the Privacy Policy page setting that WordPress core provides, you also get a settings to optionally set an extra Cookie Policy page, and you can easily link to either of them from the cookie consent notice.

\n

The cookie notice content and appearance can easily be tweaked using the Customizer, with an immediate live-preview of what your changes will look like.

\n

Last but not least, another important thing that this plugin takes care of, other than most other cookie consent plugins, is that it actually ensures cookies are only placed if the respective cookie type has been allowed by the visitor. The plugin does this by implementing cookie rules for WordPress itself, and also for the following plugins:

\n\n

More plugins will be supported in the future. If you are a developer though, it’s also very easy to add cookie rules for other code, by using the flexible cookie rule component the plugin provides as an extension point.

\n

Feature Summary

\n
    \n
  • Lightweight and easy-to-use: Simply activate the plugin, and the notice will appear.
  • \n
  • Live Preview: Use the Customizer to adjust the notice to your needs, with an instant live preview.
  • \n
  • Customizable Appearance: Specify the notice position, colors, border, button size and more.
  • \n
  • Customizable Content: Adjust the notice heading, text and button label to your preferences. You can easily link to your cookie policy page or privacy policy page, and even give visitors granular control about which cookie types they allow.
  • \n
  • Cookie Policy Support: Define an optional cookie policy page if your site has one, or alternatively provide an ID attribute to the cookie section in your privacy policy.
  • \n
  • Cookie Integrations: Supported cookies are only set once the visitor has given their consent. The cookie rules implemented also respect the more granular cookie control.
  • \n
  • JavaScript-driven: The cookie notice is inserted into the page as necessary via JavaScript, but at the same time provides easy access to whether it should be displayed via its PHP API.
  • \n
  • AMP Support: The notice is fully AMP-compatible using <amp-consent>, integrating seamlessly with the AMP plugin. It integrates with Web Stories as well.
  • \n
  • Coding Best Practices: The plugin is fully object-oriented and is coded after best practices, such as using interfaces, traits, dependency injection or the single responsibility principle. It also implements modern coding features requiring PHP 7, such as scalar type hints or return type hints.
  • \n
\n

Disclaimer

\n

This plugin does not provide any legal protection. You as a site administrator are required to ensure that it meets legal standards. This plugin is a technical tool, not a lawyer.

\n","download_link":"https://downloads.wordpress.org/plugin/wp-gdpr-cookie-notice.1.0.0-rc.1.zip","tags":{"amp":"amp","cookie-consent":"cookie consent","cookie-notice":"cookie notice","gdpr":"GDPR","web-stories":"web stories"},"donate_link":"","icons":{"1x":"https://ps.w.org/wp-gdpr-cookie-notice/assets/icon-128x128.png?rev=2042024","2x":"https://ps.w.org/wp-gdpr-cookie-notice/assets/icon-256x256.png?rev=2042024"},"wporg":true},{"name":"WordPress Share Buttons Plugin – AddThis","slug":"addthis","version":"6.2.6","author":"The AddThis Team","author_profile":"https://profiles.wordpress.org/arnavarro","requires":"3.0","tested":"5.2.11","requires_php":false,"rating":84,"ratings":{"1":75,"2":25,"3":22,"4":46,"5":444},"num_ratings":612,"support_threads":2,"support_threads_resolved":0,"active_installs":100000,"downloaded":5068675,"last_updated":"2019-07-10 5:19pm GMT","added":"2008-12-23","homepage":"https://wordpress.org/plugins/addthis/","short_description":"Now compatible with the AMP Plugin! Free Share Buttons from AddThis. Share to Messenger, WhatsApp, Facebook, Twitter, Pinterest and many more.","description":"

Now compatible with the AMP Plugin! The Free WordPress Share Buttons Plugin from AddThis makes it easier than ever for your audience to spread your content around the web. Our quick-loading Share Buttons Plugin lets you connect to over 200 social channels including Messenger, WhatsApp, Facebook, Twitter, Pinterest and many more.

\n

Our clean, customizable and simple share buttons are beautiful, quick to load and recognized all over the web.

\n

AddThis is trusted by over 15,000,000 websites with over 2 billion unique users, sharing content all over the world, in more than sixty languages.

\n

Types of Share Buttons:

\n
    \n
  • \n

    Floating share buttons: Placed on the side of your page, following your reader as they scroll. A great way to promote sharing without getting too in-your-face.

    \n
  • \n
  • \n

    Expanding share buttons: Modern, clean, and best suited for sites with tons of mobile traffic. This button expands to reveal sharing options on hover or click.

    \n
  • \n
  • \n

    Inline share buttons: Integrate share buttons into your own content for a seamless sharing experience.

    \n
  • \n
  • \n

    Image sharing buttons: Seamlessly integrate sharing into your layout with adjustable image sharing buttons. Perfect for pages with tons of shareable content.

    \n
  • \n
\n

Customizable:

\n
    \n
  • \n

    Designed for desktop, tablet, and mobile

    \n
  • \n
  • \n

    Choose from over 200 social media channels to display

    \n
  • \n
  • \n

    Adjust coloring to match your brand

    \n
  • \n
\n

Analytics:

\n
    \n
  • Sign up for a free AddThis account to get analytics on how your content is performing such as your top shared content, referring social networks and more. After you register, these analytics are accessible by logging into your AddThis.com account and visiting your AddThis dashboard. Analytics include site pageviews, your top shared content, referring social networks, and more.
  • \n
\n

Support:

\n

We strive to provide best-in-class support with a response time of around two hours, and a customer satisfaction rate of over 98%. To get in touch with our team, head to http://www.addthis.com/support.

\n

Check out our other plugins to help you grow and engage your audience!

\n
    \n
  • \n

    Follow Buttons: Add followers to 65+ social networks, including Facebook, Snapchat, Instagram, and more.

    \n
  • \n
  • \n

    Related Posts: Boost your on-site engagement with our Related Posts tool, which recommends content not only by what’s popular, but also what’s most relevant.

    \n
  • \n
\n

Want more? Visit our website to learn how you can activate our Email List Building and Link Promotion Tools.

\n

AddThis Academy | Privacy Policy

\n","download_link":"https://downloads.wordpress.org/plugin/addthis.6.2.6.zip","tags":{"share-buttons":"share buttons","social":"social","social-marketing":"Social Marketing","social-share":"social share","social-sharing":"social sharing"},"donate_link":"","icons":{"1x":"https://ps.w.org/addthis/assets/icon-128x128.png?rev=1223867","2x":"https://ps.w.org/addthis/assets/icon-256x256.png?rev=1223867"},"wporg":true},{"name":"BigCommerce For WordPress","slug":"bigcommerce","version":"4.16.0","author":"BigCommerce","author_profile":"https://profiles.wordpress.org/bigcommerce","requires":"5.2","tested":"5.5.5","requires_php":"7.2.0","rating":80,"ratings":{"1":8,"2":1,"3":0,"4":3,"5":27},"num_ratings":39,"support_threads":3,"support_threads_resolved":1,"active_installs":1000,"downloaded":57476,"last_updated":"2021-08-12 3:08am GMT","added":"2018-11-16","homepage":"","short_description":"Scale your ecommerce business with WordPress on the front-end and BigCommerce on the back end. Free up server resources from things like catalog manag …","description":"

BigCommerce for WordPress is a plugin that allows you to scale ecommerce further than ever before on WordPress. Scale your business with WordPress on the front-end and free up server resources from things like catalog management, processing payments, managing fulfillment logistics and more with BigCommerce on the back end.

\n

Built to integrate seamlessly with WordPress, you get access to our native ecommerce features from a single plugin, the ability to sell across multiple channels and marketplaces from a single location, and best of all, an embedded checkout experience that takes on PCI compliance and customer security on your behalf.

\n

Quick Start!

\n

Look at details from the latest release, including new features and enhancements here: https://github.com/bigcommerce/bigcommerce-for-wordpress/releases

\n

Dive into how you set up and customize your site using BC4WP using our guides here: https://developer.bigcommerce.com/bigcommerce-for-wordpress/getting-started/introduction

\n

Have a suggestion for how we can be better? Ping the team! wordpress-suggestions@bigcommerce.com

\n

DIFFERENT FROM YOUR TRADITIONAL PLUGIN

\n

We’ve taken a very different approach to ecommerce in WordPress. We set out to build our plugin the WordPress Way: deliver value to the community, build it with WordPress experts and make something developers can call their own.

\n

The BigCommerce for WordPress plugin leverages the best aspects of both platforms, allowing WordPress to manage content and BigCommerce to manage ecommerce.

\n

SCALABLE ECOMMERCE FOR WORDPRESS

\n

Continue to tap into the unrestricted customization of WordPress while pairing it with the most scalable SaaS ecommerce engine. BigCommerce lets you build complex catalogs, manage large volumes of concurrent traffic, orders and analytics.

\n

The BigCommerce plugin ports over a copy of your product catalog and stores products as custom post types in WordPress. It also creates pages for your cart, checkout, account profiles, sign in, shipping & returns, gift certificates and order history.

\n

The key difference to our approach is that you don’t need to install additional extensions to get access to common ecommerce features. Instead, you get instant access to many common (and advanced) features, such as complex catalog support, global payment gateways, currency handling, taxation, shipping calculations and centralized channel management; all out-of-the-box.

\n

OFFLOAD BACKEND RESOURCES

\n

Our philosophy is that processing orders and running your store shouldn’t affect the uptime and speed of your site — which can hurt your SEO, conversion, and brand. The BigCommerce plugin does the heavy commerce lifting, letting you scale your ecommerce without losing speed or uptime.

\n

LET US HANDLE PCI COMPLIANCE

\n

Taking on your own PCI compliance comes with a huge amount of liability and risk. BigCommerce powers the full checkout experience, assuming the burden of PCI compliance for you.

\n

EXTENSIVE PAYMENT GATEWAYS

\n

BigCommerce has over 65 payment gateway integrations available out-of-the box, serving 100+ countries and over 250 local payment methods.

\n

To help you reduce costs, we’ve pre-negotiated special credit and debit card processing rates with PayPal, our preferred payment solution. The more you grow with BigCommerce and upgrade your plan, the lower your rates can go.

\n

HIGHLY SCALABLE PRODUCT CATALOG

\n

BigCommerce is built for large, complex catalogs with up to 600 SKUs per product, and 250 product values for a single option. Our native catalog structure treats single products (including variants, details, SKUs, etc.) as a single API call, making inventory syncing with ERPs, PIMs (and WordPress) fast.

\n

MULTI-CHANNEL SELLING & MANAGEMENT

\n

With the core BigCommerce platform, you now have access within the control panel to sell across multiple marketplaces simultaneously, such as eBay, Amazon, Facebook, Instagram, Google Shopping, Square and more! Save time and eliminate errors and overselling with bulk listing, automatic inventory syncing and unified order and fulfillment management.

\n

USE YOUR FAVORITE WORDPRESS THEME

\n

BigCommerce for WordPress will work with any WordPress theme, but it may require some styling to make it fit perfectly. Are you a theme developer? We’d love to promote your BigCommerce for WordPress compatible theme. Get in touch with us here.

\n

To start, we recommend choosing a cross-browser compatible WordPress ecommerce theme, since the theme options included will better match what an online store requires.

\n

ECOMMERCE WITH GUTENBERG

\n

We’re big supporters of Gutenberg and built our plugin to support both the classic editor and Gutenberg. Whether you’re inserting shortcodes in classic mode or product blocks in Gutenberg, we will continue to enable support for both.

\n

SECURED USER ACCOUNTS & LOGINS

\n

In addition to offering you peace of mind with a secure checkout experience, we also extend this level of security to your shoppers, their accounts and logins, and payment information — all managed by BigCommerce.

\n

GLOBAL SHIPPING STREAMLINED

\n

We support all major global carriers, offer real-time carrier quotes, allow for free shipping, flat rates, dropshipping and more. With our deep ShipperHQ integration, you can even specify rates by product, category, customer group, quantity, destination, dimensions and more.

\n

FLEXIBLE SHOPPING CART

\n

We are bringing over a decade of focusing on building online stores to every WordPress website. Through this we bring our flexible shopping cart, along with it’s extensive customization options, so can offer enterprise grade promotions and discounts within a fully responsive layout, without additional extensions that other WordPress ecommerce plugins require.

\n

MULTIPLE SITES; ONE CONTROL PANEL

\n

Even if you sell across multiple WordPress sites, you shouldn’t have to manage them all in separate places. BigCommerce gives you a single control panel to manage your catalog, orders and shipping, all from one place. Streamline your admin experience and spend less time managing ecommerce on WordPress.

\n

Beyond WordPress, the endpoints we’ve opened on our platform allow you to build commerce into any sort of experience. Looking to launch a site in React? Interested in developing a mobile app? Want to integrate with an in-house POS? All of these can be built and managed from within the BigCommerce Control Panel.

\n

COMPLEX ENTERPRISE SYSTEMS INTEGRATIONS

\n

A huge benefit of having a SaaS ecommerce engine behind the scenes is that the core platform is already built for mid-market and enterprise use cases. Natively connect to your existing ERP suites, PIM software, OMS solutions, POS systems or marketing automation tools right out of the box.

\n

AMP SUPPORT

\n

Unique to most WordPress ecommerce plugins, BigCommerce for WordPress also includes support for Accelerated Mobile Pages. To activate, install the official Google plugin.

\n

SUPPORT AND SERVICES

\n

All of our BigCommerce customers have access to our 24/7 live phone, chat, and email support, run from our headquarters in Austin, Texas. For larger enterprise customers, we offer dedicated account management and implementation management services as part of your plan. We also have an ever-growing collection of help, support, and how-to guides in our help center.

\n

BUILT WITH DEVELOPERS IN MIND

\n

BigCommerce for WordPress was built by WordPress developers, with developers in mind. Our plugin is open source and available for you to fork, extend and modify as your needs require.

\n

Our plugin supports WordPress’ standard method of overriding template files so you can modify out-of-the-box designs. Customize your product cards, lists and shopping cart without risking plugin updates that will undo your changes.

\n

Additionally, there are many hooks and filters, so you can manipulate content to your heart’s content.

\n

JOIN OUR BIGCOMMERCE COMMUNITY

\n

All BigCommerce customers get access to our ever-growing online community to answer questions, discuss ecommerce strategies, learn about the latest product updates, contribute ideas and more.

\n

If you’re interested in contributing to BigCommerce for WordPress, head over to our GitHub Repository.

\n","download_link":"https://downloads.wordpress.org/plugin/bigcommerce.4.16.0.zip","tags":{"ecommerce":"ecommerce","online-store":"online store","retail":"retail","sell-online":"sell online","storefront":"storefront"},"donate_link":"","icons":{"1x":"https://ps.w.org/bigcommerce/assets/icon-256x256.png?rev=2141502","2x":"https://ps.w.org/bigcommerce/assets/icon-256x256.png?rev=2141502"},"wporg":true},{"name":"Yoast SEO","slug":"wordpress-seo","version":"17.0","author":"Team Yoast","author_profile":"https://profiles.wordpress.org/joostdevalk","requires":"5.6","tested":"5.8","requires_php":"5.6.20","rating":96,"ratings":{"1":718,"2":124,"3":170,"4":616,"5":25755},"num_ratings":27383,"support_threads":541,"support_threads_resolved":492,"active_installs":5000000,"downloaded":351601183,"last_updated":"2021-08-24 7:59am GMT","added":"2010-10-11","homepage":"https://yoa.st/1uj","short_description":"Improve your WordPress SEO: Write better content and have a fully optimized WordPress site using the Yoast SEO plugin.","description":"

Yoast SEO: the #1 WordPress SEO plugin

\n

Since 2008 Yoast SEO has helped millions of websites worldwide to rank higher in search engines.

\n

Yoast’s mission is SEO for Everyone. Our plugin’s users range from the bakery around the corner to some of the most popular sites on the planet.

\n

Yoast SEO Free contains everything that you need to manage your SEO, and the Yoast SEO Premium plugin and its extensions unlock even more tools and functionality.

\n

GET AHEAD OF THE COMPETITION

\n

To rank highly in search engines, you need to beat the competition. You need a better, faster, stronger website than the people who sell or do the same kinds of things as you.

\n

Yoast SEO is the most-used WordPress SEO plugin, and has helped millions of people like you to get ahead, and to stay ahead.

\n

TAKING CARE OF YOUR WORDPRESS SEO

\n

Yoast SEO is packed full of features, designed to help visitors and search engines to get the most out of your website. Some of our favourites are:

\n
    \n
  • Automated technical SEO improvements, like canonical URLs and meta tags.
  • \n
  • Advanced XML sitemaps; making it easy for Google to understand your site structure.
  • \n
  • Title and meta description templating, for better branding and consistent snippets in the search results.
  • \n
  • An in-depth Schema.org integration that will increase your chance of getting rich results, by helping search engines to understand your content.
  • \n
  • Full control over site breadcrumbs, so that users and search engines always know where they are.
  • \n
  • Faster loading times for your whole website, due to an innovative way of managing data in WordPress.
  • \n
  • [Premium] E-mail support for our Yoast SEO Premium users.
  • \n
  • [Premium] The possibility to expand Yoast SEO with the News SEO, Video SEO, Local SEO and WooCommerce SEO extensions.
  • \n
\n

WRITE KILLER CONTENT WITH YOAST SEO

\n

We know content is king, that’s why Yoast SEO is famous for its state-of-the-art content and SEO analysis. Yoast SEO gives you:

\n
    \n
  • SEO analysis: an invaluable tool while writing SEO-friendly content with the right (focus) keyphrases in mind.
  • \n
  • Readability analysis: ensures that humans and search engines can read and understand your content.
  • \n
  • Full language support for: English, German, French, Dutch, Spanish, Italian, Russian, Indonesian, Polish, Portuguese, Arabic, Swedish, Hebrew, Hungarian, Turkish, Czech, Norwegian and Slovak.
  • \n
  • A Google preview, which shows what your listings will look like in the search results. Even on mobile devices!
  • \n
  • Innovative Schema blocks for the WordPress block editor, so that your FAQ and HowTo content can be shown directly in the search results. Plus a breadcrumbs block to guide your users.
  • \n
  • [Premium] Internal linking blocks to easily improve the structure of your content. Easily add a table of contents block, a related links block, a subpages block, or siblings block! Plus, we’ll keep adding these easy-to-add blocks to improve your site structure.
  • \n
  • [Premium] Social previews to show you how your content will be shown on Twitter and Facebook. Plus: Social Appearance Templates to guarantee a consistent look.
  • \n
  • [Premium] The Insights tool that shows you what your text focuses on. This way you can keep your article in line with your keyphrases.
  • \n
  • [Premium] Optimize your content for synonyms and related keyphrases.
  • \n
  • [Premium] Optimize your article for different word forms of your keyphrases, as the singular and plural. But also different verb forms, synonyms, and related keyphrases. This makes for more natural content!
  • \n
  • [Premium] Automatic internal linking suggestions: write your article and get automatic suggested posts to link to!
  • \n
  • [Premium] An orphaned content filter to detect posts that have no links pointing towards them!
  • \n
  • [Premium] SEO workouts to make working on your site as easy as ABC. These SEO workflows will get your site into shape in no time!
  • \n
\n

KEEP YOUR SITE IN PERFECT SHAPE

\n

Whether you are an online entrepreneur, blogger or content creator, a developer, a (WordPress) SEO expert or a business owner, Yoast SEO helps you keep your website in perfect shape by:

\n
    \n
  • Tuning the engine of your website, so you can work on creating great content!
  • \n
  • Giving you cornerstone content and internal linking features to help you optimize your site structure in a breeze.
  • \n
  • Translating your content to structured data where possible, to help search engines understand your website.
  • \n
  • Helping you manage your team: with our SEO roles you can give colleagues access to specific sections of the Yoast SEO plugin.
  • \n
  • [Premium] Automatically creating redirects when URLs change or when pages are deleted, and providing tools to manage or create redirects.
  • \n
  • [Premium] Showing you social previews to manage the way your page is shared on social networks like Facebook and Twitter.
  • \n
\n

TRUST THE EXPERTS

\n

Yoast is powered by a team of expert developers, testers, software architects, and SEO consultants. They work constantly to stay at the cutting edge of WordPress SEO, and to improve the plugin with every release.

\n

Yoast SEO is the only WordPress SEO plugin made by world-renowned SEO experts.

\n

GET PREMIUM SUPPORT

\n

The Yoast team offers regular support on the WordPress.org forums. But we hope you understand that we prioritize our Premium customers. This one-on-one email support is available to people who have purchased Yoast SEO Premium.

\n

Did you know that Yoast SEO Premium contains a lot of extra features:

\n
    \n
  • A redirect manager that prevents “404: page not found” errors
  • \n
  • Optimize without worrying about over-optimization with intelligent word form recognition available in multiple languages.
  • \n
  • Internal linking blocks to structure your site easily.
  • \n
  • Internal linking suggestions while you’re writing.
  • \n
  • Preview your content to see what it will look like in the search results and when shared on social media using the Google preview and social preview.
  • \n
  • Cornerstone content checks that point search engines to your most important pages.
  • \n
  • Connect Yoast SEO to Zapier to easily create zaps that instantly share your published posts with 2000+ destinations like Twitter, Facebook, and much more.
  • \n
\n

If you are serious about your WordPress SEO, install the Yoast SEO Premium plugin! Costs a little, saves a lot of time!

\n

OUR EXTENSIONS TO FURTHER IMPROVE YOUR WORDPRESS SEO

\n

Check out these SEO add-ons by Yoast:

\n
    \n
  • Yoast Local SEO optimizes your website for a local audience.
  • \n
  • Yoast Video SEO ensures that Google understands what your video is about, increasing the chances of ranking in the video results.
  • \n
  • Yoast News SEO for news websites that want to improve their visibility and performance in Google News.
  • \n
  • WooCommerce SEO for all online shops that want to perform better in the search results and social media.
  • \n
\n

These extensions work fine with the free version of Yoast SEO. Of course, the premium extensions also include 24/7 support.

\n

Oh, don’t forget: our Yoast Academy is for all entrepreneurs, bloggers, and anyone who wants to learn more about optimizing websites, improving your WordPress SEO, and if you want to take your content to the next level!

\n

INTEGRATIONS

\n

Yoast SEO integrates seamlessly into a range of themes and plugins. We work particularly well with:

\n\n

BUG REPORTS

\n

Do you want to report a bug for Yoast SEO? Best to do so in the WordPress SEO repository on GitHub. Please note that GitHub is not a support forum and issues will be closed if they don’t meet the bug requirements.

\n

READ MORE

\n

Want more information on search engine optimization and Yoast SEO? Have a look at:

\n\n","download_link":"https://downloads.wordpress.org/plugin/wordpress-seo.17.0.zip","tags":{"content-analysis":"Content analysis","readability":"Readability","schema":"schema","seo":"seo","xml-sitemap":"xml sitemap"},"donate_link":"https://yoa.st/1up","icons":{"1x":"https://ps.w.org/wordpress-seo/assets/icon.svg?rev=2363699","2x":"https://ps.w.org/wordpress-seo/assets/icon-256x256.png?rev=2363699","svg":"https://ps.w.org/wordpress-seo/assets/icon.svg?rev=2363699"},"wporg":true},{"name":"Gutenberg","slug":"gutenberg","version":"11.4.1","author":"Gutenberg Team","author_profile":"https://profiles.wordpress.org/matveb","requires":"5.6","tested":"5.8","requires_php":"5.6","rating":42,"ratings":{"1":2266,"2":201,"3":126,"4":133,"5":700},"num_ratings":3426,"support_threads":57,"support_threads_resolved":10,"active_installs":300000,"downloaded":24410009,"last_updated":"2021-09-03 3:27pm GMT","added":"2017-06-16","homepage":"https://github.com/WordPress/gutenberg","short_description":"The Gutenberg plugin provides editing, customization, and site building features to WordPress. This beta plugin…","description":"

“Gutenberg” is a codename for a whole new paradigm in WordPress site building and publishing, that aims to revolutionize the entire publishing experience as much as Gutenberg did the printed word. Right now, the project is in the first phase of a four-phase process that will touch every piece of WordPress — Editing, Customization, Collaboration, and Multilingual — and is focused on a new editing experience, the block editor.

\n

The block editor introduces a modular approach to pages and posts: each piece of content in the editor, from a paragraph to an image gallery to a headline, is its own block. And just like physical blocks, WordPress blocks can added, arranged, and rearranged, allowing WordPress users to create media-rich pages in a visually intuitive way — and without work-arounds like shortcodes or custom HTML.

\n

The block editor first became available in December 2018, and we’re still hard at work refining the experience, creating more and better blocks, and laying the groundwork for the next three phases of work. The Gutenberg plugin gives you the latest version of the block editor so you can join us in testing bleeding-edge features, start playing with blocks, and maybe get inspired to build your own.

\n

Discover More

\n
    \n
  • \n

    User Documentation: See the WordPress Editor documentation for detailed docs on using the editor as an author creating posts and pages.

    \n
  • \n
  • \n

    Developer Documentation: Extending and customizing is at the heart of the WordPress platform, see the Developer Documentation for extensive tutorials, documentation, and API reference on how to extend the editor.

    \n
  • \n
  • \n

    Contributors: Gutenberg is an open-source project and welcomes all contributors from code to design, from documentation to triage. See the Contributor’s Handbook for all the details on how you can help.

    \n
  • \n
\n

The development hub for the Gutenberg project is on Github at: https://github.com/wordpress/gutenberg

\n

Discussion for the project is on Make Blog and the #core-editor channel in Slack, signup information.

\n","download_link":"https://downloads.wordpress.org/plugin/gutenberg.11.4.1.zip","tags":[],"donate_link":"","icons":{"1x":"https://ps.w.org/gutenberg/assets/icon-128x128.jpg?rev=1776042","2x":"https://ps.w.org/gutenberg/assets/icon-256x256.jpg?rev=1776042"},"wporg":true},{"name":"Setka Editor","slug":"setka-editor","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://setka.io/","short_description":"

Setka Editor is the first WYSIWYG plugin with page builder functionality.

\n","description":"\n\n\n

Setka Editor is the first WYSIWYG plugin with page builder functionality.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2018/11/Setka-Banner-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2018/11/Setka-Banner-372x209.jpg","svg":""},"wporg":false}] \ No newline at end of file From 1dc1f8dae0f510ca7d1f11a5e0e993e8792aee03 Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Sat, 4 Sep 2021 22:14:06 +0530 Subject: [PATCH 006/105] Add basic markup for AMP tab in plugin install screen --- data/plugins.json | 2 +- data/themes.json | 2 +- .../class-amp-twitter-embed-handler.php | 1 + src/Admin/PluginInstallTab.php | 29 ++++++++++++++++++- 4 files changed, 31 insertions(+), 3 deletions(-) diff --git a/data/plugins.json b/data/plugins.json index 633c9b87005..eb2cf971774 100644 --- a/data/plugins.json +++ b/data/plugins.json @@ -1 +1 @@ -[{"name":"Podcast Player – Your Podcasting Companion","slug":"podcast-player","version":"5.0.1","author":"vedathemes","author_profile":"https://profiles.wordpress.org/vedathemes","requires":"4.9","tested":"5.8","requires_php":"5.6","rating":98,"ratings":{"1":0,"2":1,"3":0,"4":2,"5":43},"num_ratings":46,"support_threads":8,"support_threads_resolved":6,"active_installs":8000,"downloaded":111293,"last_updated":"2021-08-09 4:59am GMT","added":"2019-02-06","homepage":"https://vedathemes.com/podcast-player/","short_description":"Showcase your podcast only using podcasting feed url. Use custom widget, shortcode or editor block…","description":"

Podcast Player provides an easy way to show and play your podcast episodes using podcasting feed url. It is a must have plugin for your podcast website. Give your listeners an easy access to all your episodes from any page or even from all the pages of your website.

\n

Podcast Player Pro | Documentation

\n\n

Podcast player key features

\n
    \n
  • Give your listeners an easy access to your podcast episodes.
  • \n
  • Display responsive podcast player just by entering your podcast’s feed url.
  • \n
  • Fetch all required details from feed url.
  • \n
  • Option to modify fetched details of your podcast.
  • \n
  • Option to Show or Hide individual player elements.
  • \n
  • Give your listener an option to share your podcast episodes.
  • \n
  • Ajax live search episodes from the podcast.
  • \n
  • It is possible to have multiple instances of podcast player on single page.
  • \n
  • Self adjusting layout according to width of the podcast player.
  • \n
\n

Podcast player pro features

\n
    \n
  • Professionally showcase your podcast using our unified player, episode list and grid templates.
  • \n
  • Use powerful filter options to choose which episodes or seasons you want to display on your website.
  • \n
  • Make your entire podcast catalogue easily available using our ajax approximate search feature.
  • \n
  • Add an audio message within your podcast episode.
  • \n
  • Add audio mp3 to your WordPress posts and display as podcast episodes.
  • \n
  • Show or hide specific elements and customize color and fonts to personalize your podcast display
  • \n
\n

Setup Podcast Player Widget

\n

Display searchable podcast episodes list on any widget area of your website.

\n

Minimum Setup

\n
    \n
  1. After activating the plugin, visit Appearance > Widgets in admin dashboard.
  2. \n
  3. Look for ‘Podcast player’ widget in left ‘Available Widgets’ section.
  4. \n
  5. Drag the widget to any available sidebar/widget area.
  6. \n
  7. Enter feed url in the appropriate field.
  8. \n
  9. Click [Save] button.
  10. \n
\n

Advanced Setup

\n
    \n
  1. After activating the plugin, visit Appearance > Widgets in admin dashboard.
  2. \n
  3. Look for ‘Podcast player’ widget in left ‘Available Widgets’ section.
  4. \n
  5. Drag the widget to any available sidebar/widget area.
  6. \n
  7. Enter feed url in the appropriate field.
  8. \n
  9. Optionally, click on “Change podcast content” button to customize feed’s auto fetched details.
  10. \n
  11. Optionally, click on “Show/Hide player items” button to show or hide player elements.
  12. \n
  13. Optionally, click on “Podcast player styling” button to customize player’s accent color.
  14. \n
  15. Optionally, click on “Sort & Filter” button to sort or filter podcast episodes.
  16. \n
  17. Click [Save] button.
  18. \n
\n

Setup Podcast Player Block

\n

Display searchable podcast episodes list on any post or page. Make sure you have not disabled WordPress latest block editor.

\n

Setup

\n
    \n
  1. After activating the plugin, visit any post or page’s edit screen.
  2. \n
  3. In main content area, click on ‘+’ icon to add a new block.
  4. \n
  5. Search for ‘Podcast Player’ block.
  6. \n
  7. Enter feed url in the appropriate field. A preview of your podcast player will appear.
  8. \n
  9. Click on the podcast player preview.
  10. \n
  11. Select appropriate options from the right sidebar to customize the player.
  12. \n
  13. Save or Update the post.
  14. \n
\n

Setup Podcast Player using shortcode

\n

Minimum Setup

\n
[podcastplayer feed_url ='']\n
\n
    \n
  1. feed_url – Your podcast feed url.
  2. \n
\n

Advanced Setup

\n
[podcastplayer feed_url ='' number='' podcast_menu='' cover_image_url='' hide_cover='true' hide_description='true' hide_subscribe='true' hide_search='true' hide_loadmore='true' hide_download='true' accent_color='#65b84f']Short Description [/podcastplayer]\n
\n
    \n
  1. feed_url: Your podcast feed url.
  2. \n
  3. number: Number of podcasts episodes to be displayed at a time.
  4. \n
  5. podcast_menu: Any previously created WordPress menu’s name OR ID OR slug. (optional)
  6. \n
  7. cover_image_url: Podcast’s cover image url. The image must be from your WP media library. (optional)
  8. \n
  9. header_default: (false/true) Show player header items by default
  10. \n
  11. hide_header: Hide player header items
  12. \n
  13. hide_title: (false/true) Show / Hide podcast Title in header info section
  14. \n
  15. hide_cover: (false/true) Show / Hide podcast cover image
  16. \n
  17. hide_description: (false/true) Show / Hide podcast description
  18. \n
  19. hide_subscribe: (false/true) Show / Hide podcast subscribe button.
  20. \n
  21. hide_search: (false/true) Show / Hide podcast search field.
  22. \n
  23. hide_author: (false/true) Show / Hide author/podcaster’s name.
  24. \n
  25. hide_content: (false/true) Show / Hide podcast episode’s content.
  26. \n
  27. hide_loadmore: (false/true) Show / Hide podcast load more button.
  28. \n
  29. hide_download: (false/true) Show/ Hide podcast episode download link.
  30. \n
  31. hide_social: (false/true) Show/ Hide podcast episode social sharing links.
  32. \n
  33. accent_color: Podcast player’s accent color (Color hex-code to be entered).
  34. \n
  35. sortby: Sort podcast episodes (sort_date_desc/sort_date_asc/sort_title_desc/sort_title_asc)
  36. \n
  37. filterby: Filter by any string in episode’s title
  38. \n
  39. list_default: (false/true) Display Episodes list by default on small screen
  40. \n
  41. hide_featured: (false/true) Show / Hide podcast episode featured image
  42. \n
  43. apple_sub: Apple podcast subscription link
  44. \n
  45. google_sub: Google podcast subscription link
  46. \n
  47. Short Description: Podcast short text description. (optional)
  48. \n
\n","download_link":"https://downloads.wordpress.org/plugin/podcast-player.5.0.1.zip","tags":{"feed-to-audio":"feed to audio","podcast":"podcast","podcaster":"podcaster","podcasting":"podcasting","rss-feed":"rss feed"},"donate_link":"","icons":{"1x":"https://ps.w.org/podcast-player/assets/icon-256x256.png?rev=2025683","2x":"https://ps.w.org/podcast-player/assets/icon-256x256.png?rev=2025683"},"wporg":true},{"name":"WPSSO Schema JSON-LD Markup | Google Rich Results, Rich Snippets, and Structured Data","slug":"wpsso-schema-json-ld","version":"4.18.0","author":"JS Morisset","author_profile":"https://profiles.wordpress.org/jsmoriss","requires":"5.0","tested":"5.8","requires_php":"7.0","rating":90,"ratings":{"1":5,"2":2,"3":1,"4":1,"5":54},"num_ratings":63,"support_threads":3,"support_threads_resolved":3,"active_installs":4000,"downloaded":282689,"last_updated":"2021-09-03 6:34pm GMT","added":"2016-02-14","homepage":"https://wpsso.com/extend/plugins/wpsso-schema-json-ld/","short_description":"Google Rich Results for Articles, Carousels, Events, FAQ pages, How-Tos, Local SEO, Products, Recipes, Ratings,…","description":"

Supports over 500 different Schema (aka Schema.org) types and sub-types:

\n

Google Rich Results with JSON-LD structured data for Articles, Carousels (aka Item Lists), Claim Reviews, Events, FAQ pages, How-Tos, Images, Local Business / Local SEO, Organizations, Products, Ratings, Recipes, Restaurants, Reviews, Video Objects, and much more.

\n

Reads your existing content, plugin data, and service API data:

\n

There’s no need to manually re-enter descriptions, titles, product information, and re-select images / videos like other SEO and Schema markup plugins.

\n

Provides comprehensive Schema JSON-LD markup for posts, pages, custom post types, terms (category, tags, etc.), custom taxonomies, user profile pages, search result pages, archive pages, and Accelerated Mobile Pages (AMP) pages – including image SEO, video SEO, local business, organization, publisher, person, author and co-authors, extensive e-Commerce product markup, product variations, product ratings, aggregate ratings, reviews, recipe information, event details, collection pages, profile pages, search pages, FAQ pages, item lists for Google’s Carousel Rich Results, and much more.

\n

Most complete Schema JSON-LD markup for WooCommerce products:

\n

Note that WooCommerce offers incomplete Schema markup for Google Rich Results by default. The WPSSO Core Premium plugin and this add-on provide a solution by offering complete product meta tags for Facebook / Pinterest and complete Schema product markup for Google Rich Results – including additional product images, product variations, product information (brand, color, condition, EAN, dimensions, GTIN-8/12/13/14, ISBN, material, MPN, size, SKU, volume, weight, etc), product reviews, product ratings, sale start / end dates, sale prices, pre-tax prices, VAT prices, shipping rates, shipping times, and much, much more.

\n

Fixes all Google Search Console and Schema Markup Validator (aka Google Structured Data Testing Tool) errors:

\n
    \n
  • A value for the headline field is required.
  • \n
  • A value for the image field is required.
  • \n
  • A value for the logo field is required.
  • \n
  • A value for the publisher field is required.
  • \n
  • The aggregateRating field is recommended.
  • \n
  • The brand field is recommended.
  • \n
  • The headline field is recommended.
  • \n
  • The image field is recommended.
  • \n
  • The mainEntityOfPage field is recommended.
  • \n
  • The review field is recommended.
  • \n
  • This Product is missing a global identifier (e.g. isbn, mpn or gtin8).
  • \n
  • No global identifier provided (e.g. gtin mpn isbn).
  • \n
  • Not a known valid target type for the itemReviewed property.
  • \n
  • And more…
  • \n
\n

Some Schema property values may require data from WPSSO Core Premium supported third-party plugins and service APIs.

\n

Google regularly updates and changes their Schema markup requirements – WPSSO JSON Premium customers can also open a Premium support ticket for timely assistance with any new Google testing tool errors.

\n

Users Love the WPSSO JSON Add-on

\n

★★★★★ – “Forget everything else this is the best schema plugin – Sincerely, we bought other plugins that we had to abandon due to the lack of important features, but with this [WPSSO JSON] we get all that we need – and our schema has more features than the competition!” – zuki305

\n

★★★★★ – “Tried three other plugins before this one – for our Woocommerce site, this was by far the best one. Thanks!” – EntoMarket

\n

★★★★★ – “Crazy good! This plugin is one of my favorites! JS aggressively develops and improves this suite of plugins, continuously improving and adding features – with great customer support to boot! Highly recommended to improve your SEO for all kinds of JSON schemas!” – mikegoubeaux

\n

★★★★★ – “This plugin is heaven sent. I know little about SSO and this has taken care of everything. The support makes this an even better plugin to have. Keep up the great work!” – kevanchetty

\n

WPSSO JSON Add-on Features

\n

Extends the features of the WPSSO Core plugin (required plugin).

\n

Provides accurate and comprehensive Schema JSON-LD markup for Google Rich Results (aka Rich Snippets) with Structured Data.

\n

Provides complete Schema ImageObject SEO markup with image information from the WordPress Media Library (name, alternateName, alternativeHeadline, caption, description, fileFormat, uploadDate, and more).

\n

Provides complete Schema VideoObject SEO markup with video information from WPSSO Core Premium service APIs (Facebook, Slideshare, Soundcloud, Vimeo, Wistia, YouTube) including the ’embedUrl’ and ‘contentUrl’ properties for Google.

\n

Provides Schema 1:1, 4:3, and 16:9 images for Google Rich Results (see the Google rich results search library for details).

\n

Provides Schema FAQPage and Question / Answer markup for the WPSSO FAQ Manager add-on.

\n

Includes Schema JSON-LD scripts from shortcodes and WordPress editor blocks in the Schema CreativeWork type and sub-types.

\n

Built-in support for AMP and AMP for WP plugins.

\n

Includes contributor markup for Co-Authors Plus authors and guest authors (WPSSO Core Premium plugin required).

\n

Supports additional custom product information and WooCommerce product attributes from the WPSSO Core Premium plugin:

\n
    \n
  • Product Availability
  • \n
  • Product Brand
  • \n
  • Product Color
  • \n
  • Product Condition
  • \n
  • Product Depth
  • \n
  • Product Fluid Volume
  • \n
  • Product GTIN-14
  • \n
  • Product GTIN-13 (EAN)
  • \n
  • Product GTIN-12 (UPC)
  • \n
  • Product GTIN-8
  • \n
  • Product GTIN
  • \n
  • Product ISBN
  • \n
  • Product Length
  • \n
  • Product Material
  • \n
  • Product MPN
  • \n
  • Product Price
  • \n
  • Product Size
  • \n
  • Product SKU
  • \n
  • Product Target Gender
  • \n
  • Product Type
  • \n
  • Product Weight
  • \n
  • Product Width
  • \n
\n

Provides Schema Product markup for Google price drop appearance in search results.

\n

Fixes common Google testing tool warnings like “aggregateRating field is recommended” and “review field is recommended”.

\n

Fixes Google testing tool warnings for supported WPSSO Core Premium e-commerce products, like “brand field is recommended”, “missing a global identifier”, etc.

\n

The WPSSO Schema JSON-LD Markup Standard add-on is designed to satisfy the requirements of most standard WordPress sites. If your content requires additional customization of some Schema properties for products, events, places / locations, recipes, etc., then you may want to get the WPSSO JSON Premium add-on for those additional features.

\n

[Premium] Includes additional customizable option values in the Document SSO metabox (shown based on the Schema Type selected):

\n
    \n
  • All Schema Types\n
      \n
    • Name (Title)
    • \n
    • Alternate Name
    • \n
    • Description
    • \n
    • Microdata Type URLs
    • \n
    • Same-As URLs
    • \n
    \n
  • \n
  • Creative Work Information\n
      \n
    • Is Part of URL
    • \n
    • Headline
    • \n
    • Full Text
    • \n
    • Keywords
    • \n
    • Language
    • \n
    • Family Friendly
    • \n
    • Copyright Year
    • \n
    • License URL
    • \n
    • Publisher (Org)
    • \n
    • Publisher (Person)
    • \n
    • Service Provider (Org)
    • \n
    • Service Provider (Person)
    • \n
    \n
  • \n
  • Event Information\n
      \n
    • Event Language
    • \n
    • Event Attendance
    • \n
    • Event Online URL
    • \n
    • Event Physical Venue
    • \n
    • Event Organizer (Org)
    • \n
    • Event Organizer (Person)
    • \n
    • Event Performer (Org)
    • \n
    • Event Performer (Person)
    • \n
    • Event Start (date, time, timezone)
    • \n
    • Event End (date, time, timezone)
    • \n
    • Event Offers Start (date, time, timezone)
    • \n
    • Event Offers End (date, time, timezone)
    • \n
    • Event Offers (name, price, currency, availability)
    • \n
    \n
  • \n
  • How-To\n
      \n
    • How-To Makes
    • \n
    • How-To Preparation Time
    • \n
    • How-To Total Time
    • \n
    • How-To Supplies
    • \n
    • How-To Tools
    • \n
    • How-To Steps (section name, section description, step name, direction text and image)
    • \n
    \n
  • \n
  • Job Posting Information\n
      \n
    • Job Title
    • \n
    • Hiring Organization
    • \n
    • Job Location
    • \n
    • Job Location Type
    • \n
    • Base Salary
    • \n
    • Employment Type
    • \n
    • Jpb Posting Expires
    • \n
    \n
  • \n
  • Movie Information\n
      \n
    • Cast Names
    • \n
    • Director Names
    • \n
    • Production Company
    • \n
    • Movie Runtime
    • \n
    \n
  • \n
  • Organization Information\n
      \n
    • Select an Organization
    • \n
    \n
  • \n
  • Person Information\n
      \n
    • Select a Person
    • \n
    \n
  • \n
  • Product Information (Additional)\n
      \n
    • Product Length (cm)
    • \n
    • Product Width (cm)
    • \n
    • Product Height (cm)
    • \n
    • Product Depth (cm)
    • \n
    • Product Fluid Volume (ml)
    • \n
    • Product GTIN-14
    • \n
    • Product GTIN-13 (EAN)
    • \n
    • Product GTIN-12 (UPC)
    • \n
    • Product GTIN-8
    • \n
    • Product GTIN
    • \n
    \n
  • \n
  • QA Page Information\n
      \n
    • QA Heading
    • \n
    \n
  • \n
  • Recipe Information\n
      \n
    • Recipe Cuisine
    • \n
    • Recipe Course
    • \n
    • Recipe Makes
    • \n
    • Cooking Method
    • \n
    • Preparation Time
    • \n
    • Cooking Time
    • \n
    • Total Time
    • \n
    • Recipe Ingredients
    • \n
    • Recipe Instructions
    • \n
    • Nutrition Information per Serving\n
        \n
      • Serving Size
      • \n
      • Calories
      • \n
      • Protein
      • \n
      • Fiber
      • \n
      • Carbohydrates
      • \n
      • Sugar
      • \n
      • Sodium
      • \n
      • Fat
      • \n
      • Saturated Fat
      • \n
      • Unsaturated Fat
      • \n
      • Trans Fat
      • \n
      • Cholesterol
      • \n
      \n
    • \n
    \n
  • \n
  • Review Information\n
      \n
    • Review Rating
    • \n
    • Rating Value Name
    • \n
    • Subject of the Review\n
        \n
      • Subject Webpage Type
      • \n
      • Subject Webpage URL
      • \n
      • Subject Same-As URL
      • \n
      • Subject Name
      • \n
      • Subject Description
      • \n
      • Subject Image ID or URL
      • \n
      • Claim Subject Information (for Claim Review)\n
          \n
        • Short Summary of Claim
        • \n
        • First Appearance URL
        • \n
        \n
      • \n
      • Creative Work Subject Information\n
          \n
        • C.W. Author Type
        • \n
        • C.W. Author Name
        • \n
        • C.W. Author URL
        • \n
        • C.W. Published Date
        • \n
        • C.W. Created Date
        • \n
        \n
      • \n
      • Book Subject Information\n
          \n
        • Book ISBN
        • \n
        \n
      • \n
      • Movie Subject Information\n
          \n
        • Movie Cast Names
        • \n
        • Movie Director Names
        • \n
        \n
      • \n
      • Product Subject Information\n
          \n
        • Product Brand
        • \n
        • Product Offers (name, price, currency, availability)
        • \n
        • Product SKU
        • \n
        • Product MPN
        • \n
        \n
      • \n
      • Software App Subject Information\n
          \n
        • Operating System
        • \n
        • Application Category
        • \n
        • Software App Offers (name, price, currency, availability)
        • \n
        \n
      • \n
      \n
    • \n
    \n
  • \n
  • Software Application Information\n
      \n
    • Operating System
    • \n
    • Application Category
    • \n
    \n
  • \n
\n

WPSSO Core Required

\n

WPSSO Schema JSON-LD Markup (WPSSO JSON) is an add-on for the WPSSO Core plugin.

\n","download_link":"https://downloads.wordpress.org/plugin/wpsso-schema-json-ld.4.18.0.zip","tags":{"rich-results":"rich results","rich-snippets":"rich snippets","schema-org":"schema.org","video-seo":"video seo","woocommerce":"woocommerce"},"donate_link":"","icons":{"1x":"https://ps.w.org/wpsso-schema-json-ld/assets/icon-128x128.png?rev=2480083","2x":"https://ps.w.org/wpsso-schema-json-ld/assets/icon-256x256.png?rev=2480083"},"wporg":true},{"name":"ShortPixel Image Optimizer","slug":"shortpixel-image-optimiser","version":"4.22.5","author":"ShortPixel","author_profile":"https://profiles.wordpress.org/shortpixel","requires":"4.2.0","tested":"5.8","requires_php":"5.6","rating":92,"ratings":{"1":54,"2":10,"3":8,"4":10,"5":544},"num_ratings":626,"support_threads":7,"support_threads_resolved":6,"active_installs":300000,"downloaded":6850963,"last_updated":"2021-08-31 5:54pm GMT","added":"2014-11-05","homepage":"https://shortpixel.com/","short_description":"Speed up your website & boost your SEO by compressing old & new images and PDFs. AVIF & WebP convert and optimize support.","description":"

A freemium, easy to use, comprehensive, stable and frequently updated image compression plugin supported by the friendly team that created it. 🙂

\n

Increase your website’s SEO ranking, number of visitors and ultimately your sales by optimising any image or PDF document on your website.
\nShortPixel is an easy to use, lightweight, install-and-forget-about-it image optimization plugin that can compress all your past images and PDF documents with a single click. New images are automatically resized/rescaled and optimized on the fly, in the background. It’s also compatible with any gallery, slider or ecommerce plugin.

\n

Ready for a quick DEMO? Test our plugin here.
\nOr you can create a staging copy of your site using WP Staging and test it there.

\n

Short Pixel uses minimal resources and works well with any shared, cloud, VPS or dedicated web hosting. It can optimize any image you have on your website even the images that aren’t listed in Media Library like those in galleries like NextGEN, Modula or added directly via FTP!

\n

Both lossy and lossless image compression are available for the most common image types (JPG, PNG, GIF, WebP and AVIF) plus PDF files.
\nWe also offer glossy JPEG compression which is a very high quality lossy optimization algorithm. Specially designed for photographers!
\nOptimized images mean better user experience, better PageSpeed Insights or GTmetrix results, better Google PageRank and more visitors.

\n

Make an instant image compression test of your site or compress some images to test our optimization algorithms.

\n

Why is ShortPixel the best choice when it comes to image optimization or PDF compression?

\n
    \n
  • popular plugin with over 300,000 active installations – according to WordPress
  • \n
  • compress JPG (and its variations JPEG, JPEG 2000, JPEG XR), PNG, GIF (still or animated) images and also PDF documents
  • \n
  • option to convert any JPEG, PNG or GIF (even animated ones!) to WebP and AVIF for more Google love. How to enable WebP?. What is AVIF and why is it good?.
  • \n
  • option to automatically convert PNG to JPG if that will result in smaller images. Ideal for large images in PNG format
  • \n
  • option to include the next generation images (WebP and AVIF) into the front-end pages by using the <picture> tag instead of <img>, independent from generating them through the plugin
  • \n
  • compatible with WP Retina 2x – all retina images are automatically compressed. How to benefit from Retina displays?
  • \n
  • optimize thumbnails as well as featured images. You can also select individual thumbnails to exclude from optimization
  • \n
  • ability to optimize any image on your site including images in NextGEN Gallery and any other image galleries or sliders
  • \n
  • option to scale images down, with 2 different options, which is very useful to automatically resize large images. This applies to the featured images and there is no need for additional plugins like Imsanity
  • \n
  • CMYK to RGB conversion
  • \n
  • skip already optimized images
  • \n
  • 24h stellar support (24/7) directly from developers.
  • \n
  • easily test lossy/glossy/lossless versions of the images with a single click in your Media Library
  • \n
  • great for photographers: keep or remove EXIF data from your images, compress photos with lossless option
  • \n
  • works well with both HTTPS and HTTP websites
  • \n
  • uses progressive JPEG for larger images in order to speed up the image display
  • \n
  • you can run ShortPixel plugin on multiple websites or on a multisite with a single API Key
  • \n
  • it is safe to test and use the plugin: all the original images are by default saved in a local backup that can be restored with a click, either one by one or in bulk
  • \n
  • ‘Bulk’ optimize all the existing images in Media Library or in any gallery with one click
  • \n
  • works great for eCommerce websites using WooCommerce or other plugins
  • \n
  • works great with NextGEN gallery, Foo Gallery and any other galleries and sliders
  • \n
  • compatible with WP Engine hosted websites and all the major hosting providers
  • \n
  • compatible with WPML and WPML Media plugins
  • \n
  • no file size limit
  • \n
  • integrates with Gravity Forms post_image field type optimizing the images upon upload
  • \n
  • compatible with watermarking plugins
  • \n
  • option to deactivate auto-optimizing images on upload
  • \n
  • no credits are used for the images that are optimised less that 5%
  • \n
  • direct integration with CloudFlare, either by using an API Key or a Token
  • \n
  • 30 days optimization report with all image details and overall statistics
  • \n
  • We are GDPR compliant! Read more.
  • \n
  • free optimization credits for non-profits, contact us for details
  • \n
\n

How much does it cost?
\nShortPixel comes with 100 free credits/month and additional credits can be bought for as little as $4.99 for 5,000 image credits.
\nCheck out our prices.

\n
\n

Testimonials:
\n ★★★★★ A Super Plugin works very well 62% reduction overall. robertvarns
\n ★★★★★ The secret sauce for a WordPress website. mark1mark
\n ★★★★★ A must have plugin, great support! ElColo13
\n ★★★★★ Excellent Plugin! Even Better Customer Service! scaliendo
\n ★★★★★ Great image compression, solid plugin, equally great support. matters1959
\n more testimonials

\n
\n\n

Help us spread the word by recommending ShortPixel to your friends and collect 100 lifetime monthly additional image credits for each referred active user. Make money by promoting a great plugin with our 30% commission affiliate program.

\n

Other plugins by ShortPixel

\n\n

Get in touch!

\n\n

Actions and Filters for Developers

\n

The ShortPixel Image Optimiser plugin calls the following actions and filters:

\n
do_action( 'shortpixel_image_optimised', $post_id );\n
\n

upon successful optimization;

\n
do_action(\"shortpixel_before_restore_image\", $post_id);\n
\n

before restoring an image from backup;

\n
do_action(\"shortpixel_after_restore_image\", $post_id);\n
\n

after succesful restore;

\n
apply_filters(\"shortpixel_backup_folder\", $backup_folder, $main_file_path, $sizes);\n
\n

just before returning the ShortPixel backup folder, usually /wp-content/uploads/ShortpixelBackups. The $sizes are the sizes array from metadata;

\n
apply_filters('shortpixel_image_exists', file_exists($path), $path, $post_id);\n
\n

post ID is not always set, only if it’s an image from Media Library;

\n
apply_filters('shortpixel_image_urls', $URLs, $post_id);\n
\n

filters the URLs that will be sent to optimisation, $URLs is a plain array;

\n
apply_filters('shortpixel/db/chunk_size', $chunk);\n
\n

the $chunk is the value ShortPixel chooses to use as number of selected records in one query (based on total table size), some hosts work better with a different value;

\n
apply_filters('shortpixel/backup/paths', $PATHs, $mainPath);\n
\n

filters the array of paths of the images sent for backup and can be used to exclude certain paths/images/thumbs from being backed up, based on the image path. $mainPath is the path of the main image, while $PATHs is an array with all files to be backed up (including thumbnails);

\n
apply_filters('shortpixel/settings/image_sizes', $sizes);\n
\n

filters the array ($sizes) of image sizes which can be excluded from processing (displayed in the plugin Advanced settings).

\n

In order to define custom thumbnails to be picked up by the optimization you have two options, both comma separated defines:

\n
define('SHORTPIXEL_CUSTOM_THUMB_SUFFIXES', '_tl,_tr');\n
\n

will handle custom thumbnails like image-100x100_tl.jpg;

\n
define('SHORTPIXEL_CUSTOM_THUMB_INFIXES', '-uae');\n
\n

will handle custom thumbnails like image-uae-100×100.jpg;

\n
define('SHORTPIXEL_USE_DOUBLE_WEBP_EXTENSION', true);\n
\n

will tell the plugin to create double extensions for the WebP image counterparts, for example image.jpg.webp for image.jpg;

\n
define(\"SHORTPIXEL_NOFLOCK\", true);\n
\n

don’t use flock queue, only activate this when you have flock() denied errors on your installation;

\n
define(\"SHORTPIXEL_EXPERIMENTAL_SECURICACHE\", true);\n
\n

adds timestamps to URLS, to prevent hitting the cache. Useful for persistent caches.

\n

Hide the Cloudflare settings by defining these constants in wp-config.php:

\n
define('SHORTPIXEL_CFTOKEN', 'the Cloudflare API token that has Purge Cache right');\ndefine('SHORTPIXEL_CFZONE', 'The Zone ID from the domain settings in Cloudflare');\n
\n

Hide the WSO banner in the settings by defining this constant in wp-config.php:

\n
define('SHORTPIXEL_NO_BANNER', true);\n
\n

Alternatively, you can use this filter in your theme’s functions.php file:

\n
add_filter('shortpixel/settings/no_banner', true);\n
\n","download_link":"https://downloads.wordpress.org/plugin/shortpixel-image-optimiser.4.22.5.zip","tags":{"compressor":"compressor","convert-webp":"convert webp","image-optimization":"image optimization","optimize-images":"optimize images","resize":"resize"},"donate_link":"","icons":{"1x":"https://ps.w.org/shortpixel-image-optimiser/assets/icon-128x128.png?rev=1038819","2x":"https://ps.w.org/shortpixel-image-optimiser/assets/icon-256x256.png?rev=1038819"},"wporg":true},{"name":"Theme Kit for Twenty Twenty-One & Twenty Twenty (Customization, Gutenberg Blocks, Templates) – Twentig","slug":"twentig","version":"1.3.5","author":"Twentig","author_profile":"https://profiles.wordpress.org/twentig","requires":"5.5","tested":"5.8","requires_php":"5.6","rating":100,"ratings":{"1":0,"2":0,"3":0,"4":2,"5":104},"num_ratings":106,"support_threads":30,"support_threads_resolved":29,"active_installs":10000,"downloaded":138963,"last_updated":"2021-08-10 11:02am GMT","added":"2019-05-29","homepage":"https://twentig.com","short_description":"Supercharge your WordPress theme (Twenty Twenty-One & Twenty Twenty) with customization options, enhanced Gutenberg blocks,…","description":"

The easy way to build a beautiful website.

\n

Twentig helps you customize the default WordPress theme (Twenty Twenty-One and Twenty Twenty) the way you want with Google Fonts, colors, custom layouts, and many more options.

\n

With enhanced Gutenberg blocks, pre-designed block templates, and starter websites, you’ve got everything you need to build stunning pages that look great on any device — no coding or design skills needed.

\n
\n

“Twentig is a plugin that essentially gives superpowers to the default theme.” — Justin Tadlock, WP Tavern

\n
\n

Customize the most popular WordPress theme. Your way.

\n

Twentig offers powerful features to customize the Twenty Twenty-One and Twenty Twenty themes — making it easier than ever to create your own professional website.

\n

Advanced theme customization. From post grid to sidebar to sticky header to footer layout, our plugin provides endless ways to enhance your WordPress theme. Change the look and feel of your website by customizing the fonts (Google Fonts), colors, global styles, 404 page, and more.

\n

Custom page templates. Control the look of your entire page with our page templates. Easily remove the page title, header, footer, or set a transparent header. Now you can use Gutenberg blocks to create a custom hero, landing page, coming soon page, and more.

\n

Tailored design. Twentig brings design improvements to the default WordPress theme. Our additional block settings and pre-designed block templates are specially built for it — so it’s simple to make beautiful pages with Gutenberg blocks.

\n

Start with a pre-built website.

\n

Instead of starting from scratch, you can quickly import one of Twentig’s starter websites crafted by award-winning designers.

\n

The simple way to import starter websites. Choose from a variety of starter websites and seamlessly load them in a few seconds in the Customizer. Preview and customize your theme any way you like before publishing it to your live site.

\n

Flexible import. Twentig lets you import full websites (Customizer settings, menus, widgets, and pages built with Gutenberg blocks). You can also only import what you need, be it the styling or the pages, on a fresh install or an existing website.

\n

Check out the starter websites to see the power and flexibility of Twentig.

\n

Do more with Gutenberg blocks.

\n

Twentig enhances the existing Gutenberg blocks — taking the WordPress block editor to a new level of design and creativity.

\n

Block customization made easy. We’ve added the right amount of features to the Gutenberg core blocks. So you can easily customize your blocks to fit your needs with just a few clicks.

\n

Powerful Gutenberg block features. Twentig provides alternative styles, advanced block settings, margin controls, and CSS classes. From columns style to group shape divider to typography settings, you have the best tools to customize the Gutenberg blocks and build gorgeous pages.

\n

Build your pages with ready-to-use templates.

\n

Twentig brings hundreds of pre-designed block patterns and page templates — making it easier and faster than ever to create stunning pages.

\n

Flexible block templates. Choose from a variety of versatile block patterns and page templates that you can mix and match to fit your project. Our block template library is designed to enable a wide range of uses and endless design possibilities.

\n

Professional design. Our templates are responsive and give your pages a professional look right from the start — no coding or design skills needed.

\n

Twentig features list

\n

Check out the screenshots to see how Twentig can transform your theme and the Gutenberg blocks.

\n

ADDITIONAL THEME OPTIONS

\n

Header

\n
    \n
  • Header layouts
  • \n
  • Sticky header
  • \n
  • Header width
  • \n
  • Header decoration
  • \n
  • Additional elements: search bar, social icons, button
  • \n
  • Logo width
  • \n
  • Custom logo for transparent header
  • \n
  • Menu link style
  • \n
  • Option to display the burger menu on tablet
  • \n
\n

Footer

\n
    \n
  • Footer layouts
  • \n
  • Footer widgets layout
  • \n
  • Footer width
  • \n
  • Custom copyright and remove “Powered by WordPress”
  • \n
  • Social icons
  • \n
\n

Site Layout

\n
    \n
  • Text width
  • \n
  • Wide width (Twenty Twenty-One theme)
  • \n
  • Site width to create a boxed layout site (Twenty Twenty-One theme)
  • \n
\n

Blog Posts Page

\n
    \n
  • Option to display the page title (Twenty Twenty-One theme)
  • \n
  • Blog layouts: stack, post grid, post grid card
  • \n
  • Blog sidebar (Twenty Twenty-One theme)
  • \n
  • Number of columns for post grid layouts
  • \n
  • Featured image options
  • \n
  • Blog content options
  • \n
  • Blog meta options
  • \n
  • Pagination style (Twenty Twenty-One theme)
  • \n
\n

Single Blog Post

\n
    \n
  • Featured image and post title layouts
  • \n
  • Blog sidebar (Twenty Twenty-One theme)
  • \n
  • Option to display the manual excerpt below the title
  • \n
  • Single post meta options
  • \n
  • Post navigation layout (Twenty Twenty theme)
  • \n
  • Hide comments section
  • \n
\n

Typography & Colors

\n
    \n
  • Google Fonts options (curated collection and custom Google Fonts)
  • \n
  • Google Fonts pairings and Google Fonts presets
  • \n
  • Font settings
  • \n
  • Color options
  • \n
\n

Pages

\n
    \n
  • Custom page templates: remove the page title, header, and footer, or set a transparent header
  • \n
  • Featured image and page title layouts
  • \n
\n

Custom 404 Page

\n
    \n
  • Option to assign any page as the 404 page
  • \n
\n

Additional Settings

\n
    \n
  • Minimal style for links (Twenty Twenty-One theme)
  • \n
  • Button style
  • \n
  • Separator style
  • \n
  • Social icons style (Twenty Twenty theme)
  • \n
\n

ADDITIONAL GUTENBERG BLOCK SETTINGS

\n
    \n
  • Gutenberg core blocks: top margin and bottom margin
  • \n
  • Group: shadow, border, shape divider, full height
  • \n
  • Columns: gutter, responsive layout, columns style (card, border), text alignment, stretched link
  • \n
  • Media & Text: styles (shadow, overlap), responsive layout, reverse stack order, stretched link, full height
  • \n
  • Cover: styles (shadow, inner border), stretched link, hover effect
  • \n
  • Heading: typography options, decoration
  • \n
  • Paragraph: wide width, typography options
  • \n
  • List: styles (dash, checkmark, arrow, border, no bullet, inline), typography options, spacing
  • \n
  • Image: styles (rounded, shadow, frame, border), image filter
  • \n
  • Gallery: stack variation, styles (rounded, frame), fixed width columns, image aspect ratio, gutter, responsive layout, caption size, border, image filter
  • \n
  • YouTube, Vimeo, SoundCloud, and Video blocks: style (frame)
  • \n
  • Latest Posts: styles (card, border), image aspect ratio, heading size, stretched link, text alignment
  • \n
  • Social Icons: hover effect
  • \n
  • Quote: additional styles
  • \n
  • Pullquote: additional styles
  • \n
  • Table: styles (border, inner border), vertical alignment
  • \n
  • Separator: style (short line), responsive visibility
  • \n
  • Spacer: responsive visibility
  • \n
\n

GUTENBERG TEMPLATE LIBRARY

\n

Hundreds of Gutenberg block patterns grouped by following categories:

\n
    \n
  • Columns
  • \n
  • Text Columns
  • \n
  • Text and Image
  • \n
  • Text
  • \n
  • Hero
  • \n
  • Cover
  • \n
  • Call to Action
  • \n
  • List
  • \n
  • Numbers, Stats
  • \n
  • Gallery
  • \n
  • Video, Audio
  • \n
  • Latest Posts
  • \n
  • Contact
  • \n
  • Team
  • \n
  • Testimonials
  • \n
  • Logos, Clients
  • \n
  • Pricing
  • \n
  • FAQ
  • \n
  • Events, Schedule
  • \n
\n

Dozens of pre-designed page templates grouped by following categories:

\n
    \n
  • Homepage
  • \n
  • About
  • \n
  • Services
  • \n
  • Contact
  • \n
  • Single Page
  • \n
\n

Get more

\n\n

Enjoying Twentig?

\n\n","download_link":"https://downloads.wordpress.org/plugin/twentig.1.3.5.zip","tags":{"gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","templates":"templates","theme":"theme","twenty-twenty-one":"twenty-twenty-one"},"donate_link":"https://www.paypal.com/donate?hosted_button_id=JTBTPQAFEA94E","icons":{"1x":"https://ps.w.org/twentig/assets/icon.svg?rev=2569439","2x":"https://ps.w.org/twentig/assets/icon-256x256.png?rev=2569439","svg":"https://ps.w.org/twentig/assets/icon.svg?rev=2569439"},"wporg":true},{"name":"Custom Post Type UI","slug":"custom-post-type-ui","version":"1.9.2","author":"WebDevStudios","author_profile":"https://profiles.wordpress.org/williamsba1","requires":"5.5","tested":"5.7.2","requires_php":"5.6","rating":94,"ratings":{"1":12,"2":3,"3":6,"4":9,"5":202},"num_ratings":232,"support_threads":66,"support_threads_resolved":29,"active_installs":1000000,"downloaded":8717067,"last_updated":"2021-06-17 2:40am GMT","added":"2010-02-26","homepage":"https://github.com/WebDevStudios/custom-post-type-ui/","short_description":"Admin UI for creating custom post types and custom taxonomies for WordPress","description":"

Custom Post Type UI provides an easy to use interface for registering and managing custom post types and taxonomies for your website.

\n

While CPTUI helps solve the problem of creating custom post types, displaying the data gleaned from them can be a whole new challenge. That’s why we created Custom Post Type UI Extended. View our Layouts page to see some examples that are available with Custom Post Type UI Extended.

\n

Official development of Custom Post Type UI is on GitHub, with official stable releases published on WordPress.org. The GitHub repo can be found at https://github.com/WebDevStudios/custom-post-type-ui. Please use the Support tab for potential bugs, issues, or enhancement ideas.

\n

Pluginize was launched in 2016 by WebDevStudios to promote, support, and house all of their WordPress products. Pluginize is not only creating new products for WordPress all the time, like CPTUI Extended, but also provides ongoing support and development for WordPress community favorites like CMB2 and more.

\n","download_link":"https://downloads.wordpress.org/plugin/custom-post-type-ui.zip","tags":{"cms":"cms","cpt":"cpt","custom-post-types":"custom post types","post":"post","types":"types"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=3084056","icons":{"1x":"https://ps.w.org/custom-post-type-ui/assets/icon-128x128.png?rev=2549362","2x":"https://ps.w.org/custom-post-type-ui/assets/icon-256x256.png?rev=2549362"},"wporg":true},{"name":"Flex Posts – Widget and Gutenberg Block","slug":"flex-posts","version":"1.8.1","author":"Tajam","author_profile":"https://profiles.wordpress.org/tajam","requires":"5.2","tested":"5.8","requires_php":false,"rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":17},"num_ratings":17,"support_threads":8,"support_threads_resolved":3,"active_installs":3000,"downloaded":24490,"last_updated":"2021-07-29 10:41am GMT","added":"2018-05-10","homepage":"https://tajam.id/flex-posts/","short_description":"A widget to display posts with thumbnails in various layouts. Fits nicely in any widget…","description":"

Flex Posts is a widget to display posts in various different layouts. It is useful for a news site where you need to display a lot of posts in a page.

\n

The widget is responsive so you can place it in any widget area. The widget content will adapt based on the width of its container. In a narrow area like standard sidebar, posts will be displayed vertically, but in a wider area, posts will be displayed in 2 or 3 columns depends on the container’s width.

\n

Widget Settings

\n
    \n
  • Title: Set the widget title. Leave it empty to hide the title section.
  • \n
  • Title URL: Set the title link url. Leave it empty to disable link in the title.
  • \n
  • Layout: Select a widget layout, from layout 1 to 4.
  • \n
  • Post type: Select the post type. Options include: Post, Page, custom post types if available, and any.
  • \n
  • Category: Select a category for the posts, or choose All Categories to disable this filter.
  • \n
  • Tag(s): Set a post tag (using the tag slug). You can also use comma separated value for multiple tags. Prepending a tag with a hyphen will exclude posts matching that tag. Eg, featured, -video will show posts tagged with featured but not video.
  • \n
  • Order by: Set the order in which the posts will be displayed. Options include: Newest, Oldest, Most Commented, Alphabetical, Random, Modified Date.
  • \n
  • Number of posts to show: Set the number of posts displayed.
  • \n
  • Number of posts to skip: Set the number of posts to displace or pass over.
  • \n
  • Show image on: Select in which posts the image will be displayed. Options include: All posts, First post only, or none.
  • \n
  • Image size: Select image size from registered image sizes.
  • \n
  • Show post title: Choose to show or hide the post title.
  • \n
  • Show categories: Choose to show or hide the categories.
  • \n
  • Show author: Choose to show or hide the author.
  • \n
  • Show date: Choose to show or hide the date.
  • \n
  • Show comments number: Choose to show or hide the comments number.
  • \n
  • Show excerpt: Choose to show or hide the excerpt
  • \n
  • Excerpt length: Set the number of words for the excerpt.
  • \n
  • Show read more link: Choose to show or hide the Read More link.
  • \n
  • Read more text: Set the text for the read more link. You can leave it empty to use the default text Read More.
  • \n
  • Show pagination: Choose to show or hide the pagination links.
  • \n
  • Additional class(es): Set a custom class for the widget container. You can use spaces to separate multiple classes.
  • \n
\n

Gutenberg Block

\n

Since version 1.1.0, Flex Posts also includes a gutenberg block. You can add the widget directly into the post/page content with the WP 5.0 block editor.

\n

Demo

\n

Please visit the live demo here: Flex Posts Demo

\n

Requirements

\n

This plugin has been tested and works with at least PHP 5.3 installed in your environment. But we strongly recommend you to use the latest PHP version, as using older versions may expose you to security vulnerabilities.

\n","download_link":"https://downloads.wordpress.org/plugin/flex-posts.zip","tags":{"category-posts":"category posts","grid":"grid","magazine":"magazine","news":"news","responsive":"responsive"},"donate_link":"https://tajam.id/","icons":{"1x":"https://ps.w.org/flex-posts/assets/icon-128x128.png?rev=1871802"},"wporg":true},{"name":"YARPP – Yet Another Related Posts Plugin","slug":"yet-another-related-posts-plugin","version":"5.27.4","author":"YARPP","author_profile":"https://profiles.wordpress.org/jeffparker","requires":"3.7","tested":"5.8","requires_php":"5.3","rating":94,"ratings":{"1":33,"2":2,"3":14,"4":45,"5":625},"num_ratings":719,"support_threads":28,"support_threads_resolved":12,"active_installs":100000,"downloaded":6483750,"last_updated":"2021-08-25 5:56pm GMT","added":"2008-01-02","homepage":"https://yarpp.com/","short_description":"The best WordPress plugin for displaying related posts. Simple and flexible, with a powerful proven…","description":"

Related Posts Plugin for WordPress

\n

Yet Another Related Posts Plugin (YARPP) is a professionally maintained, highly customizable, performant and feature rich plugin that displays pages, posts, and custom post types related to the current entry. YARPP introduces your visitors to other relevant content on your site — boosting visitor engagement, time on site and SEO. Related Posts can increase your pageviews up to 10%. Simply install, activate and watch your sessions and pageviews increase.

\n

Key Features

\n
    \n
  • An advanced and versatile algorithm: Using a customizable algorithm considering post titles, content, tags, categories, and custom taxonomies, YARPP finds related content from across your site
  • \n
  • Caching: Inbuilt cache makes subsequent queries super efficient and fast
  • \n
  • Custom Templates and Styles: Use a pre-built list or thumbnail template, or use the YARPP custom templating system for 100% control of how results are styles and displayed
  • \n
  • Flexible with a full range of placement options, including:\n\n
  • \n
  • Works with all languages, including those with full-width (double-byte) characters and those that don’t use spaces between words
  • \n
  • Custom post type and taxonomy support
  • \n
  • WordPress Multisite support
  • \n
  • bbPress forums support
  • \n
  • WooCommerce support
  • \n
  • Professionally maintained and supported with regular updates
  • \n
\n

YARPP Algorithm Explained

\n

\n

Contribute: Translate YARPP

\n

YARPP is available for translation directly on WordPress.org. Please check out the official Translator Handbook.

\n

Wide Support

\n

YARPP is the most popular and the highest rated Related Posts Plugin for WordPress. With your support, this plugin always strives to be the best WordPress plugin for Content Discovery and Related Posts.

\n

✔ Over 10 years of development
\n✔ Over 6 million downloads
\n✔ Translated into more than a dozen languages
\n✔ Professionally maintained and actively supported with regular updates
\n✔ Works with all languages

\n

YARPP works best with PHP 5.3 or greater, MySQL 5.6 or greater OR MariaDB 10.1 or greater, and WordPress 3.7 or greater. See the FAQ for answers to common questions.

\n","download_link":"https://downloads.wordpress.org/plugin/yet-another-related-posts-plugin.5.27.4.zip","tags":{"contextual-related-posts":"contextual related posts","posts":"posts","related-posts":"related posts","seo":"seo","similar-posts":"similar posts"},"donate_link":"https://yarpp.com","icons":{"1x":"https://ps.w.org/yet-another-related-posts-plugin/assets/icon-128x128.png?rev=2549977","2x":"https://ps.w.org/yet-another-related-posts-plugin/assets/icon-256x256.png?rev=2549977"},"wporg":true},{"name":"Superb WordPress Table (SEO Optimized Tables With Schema)","slug":"superb-tables","version":"1.0.8","author":"SuPlugins","author_profile":"https://profiles.wordpress.org/suplugins","requires":"3.0.1","tested":"5.7.2","requires_php":"5.2.4","rating":80,"ratings":{"1":0,"2":1,"3":0,"4":0,"5":2},"num_ratings":3,"support_threads":1,"support_threads_resolved":1,"active_installs":4000,"downloaded":33932,"last_updated":"2021-05-26 8:49pm GMT","added":"2019-03-05","homepage":"https://superbthemes.com/plugins/superb-tables/","short_description":"Responsive & SEO Optimized tables. Get your Google Featured Snippets. Different table designs, table shortcodes & lightweight code.","description":"

Responsive & SEO Optimized tables. Get your Google Featured Snippets. Different table designs, table shortcodes & lightweight code.

\n

Click here to view the demo!

\n

Features

\n
    \n
  • Table Shortcodes
  • \n
  • Multiple Color Schemes
  • \n
  • Use Themes Own Table Design
  • \n
  • Schema Markup (Micro Data)
  • \n
  • Create Unlimited Tables
  • \n
  • Create Unlimited Rows
  • \n
  • Create unlimited Columns
  • \n
  • SEO-friendly Tables With Schema markup
  • \n
  • Purple Color Scheme
  • \n
  • Black/White Color Scheme
  • \n
  • Swap around on columns & rows with drag n’ drop
  • \n
  • Delete Tables & Remove Them From Your Database
  • \n
  • Gives you a better chance to get Google Featured Snippets
  • \n
  • Friendly User Support)
  • \n
  • GDPR Compliant
  • \n
  • W3C Valid Code
  • \n
  • WYSIWYG Functionality Editor
  • \n
\n

Configuring the plugin

\n

Once you’ve installed the plugin, check the left sidebar, and you will notice the Superb Table section. Click on it, and you can now create your first table. Just click on the Add New Table button.

\n

Feel free to add as many columns and rows as you want—inserting rows and columns is extremely easy.

\n

You have a few options to make your table stand apart. First, choose one of the three color schemes: standard, purple, or black. Second, choose your table design: default or custom. Block, left, and inline-block are the floating modes for your table. Finally, enable or disable the full width of the table.

\n

Once you finish your table, name it and save it. All you have to do now is to copy the shortcode and paste wherever you want, you can for example embed it in the Gutenberg Shortcode Block! (It works in the classic WordPress editor too)

\n

Consider purchasing our premium version for $11 to unlock more features!

\n

Why use a HTML table

\n

Displaying data within a comparison table is beneficial for not only readers but also content creators. A table does a better job than long paragraphs of text, underlined phrases, and bulleted lists. It shows a lot of information side by side in a concise format. Bloggers and content creators should create tables and insert the data. There’s no need to search for breathtaking expressions, cool descriptions, or digestible lists of items. It’s just pure data, and everyone is happy with this situation. You can read our full guide on How to Add a Table to Your WordPress Website with Superb Tables.

\n

Responsive Tables

\n

We developed Superb Tables mobile friendly by taking responsiveness into account, and as a result, you can make a WordPress table responsive by using our plugin. The tables are fully responsive regardless of the number of rows and columns. The plugin works on all mobile devices and tablets (iPhone, Android etc.). The plugin works with AMP.

\n

SEO Friendly WordPress Tables With Schema Markup

\n

“Schema markup“ and “featured snippets“ are two interconnected terms that are being used by more and more bloggers, SEO practitioners, and developers. Have you noticed that Google now provides complex answers in the form of lists, tables, paragraphs, or videos directly on the results page? Those are featured snippets.

\n

Moz claims that 23% of all search results include a featured snippet—a descriptive box displayed on the search results page providing information for your query. It may include paragraphs, lists, videos, or tables. You have to consider featured snippets when choosing a table plugin—can it help Google generate a featured snippet from the data within your table?

\n

We developed Superb Tables with featured snippets in mind, and you can use the plugin worry-free. We used schema markup, which is the code that helps search engine bots generate snippets from your content, including tables. It’s a great way for affiliate websites and blogs to promote their content.

\n

You must use WordPress tables with schema markup to get featured snippets on search engines, and Superb Tables is a reliable solution in this respect.

\n

Add Tables everywhere & use them for Any Purpose

\n

You can insert the SEO optimised tables with microdata everywhere through the shortcode. For example in a popup, widgets, Gutenberg blocks, email newsletter sent from your WordPress website. You can also insert it on any post or page, even category pages, blog feed, search page and your 404 page! The plugin is made for affiliates marketers and affiliate websites, having a good SERP rank in Google and Bing is critical. When you’re looking to improve your ranking then all of your plugins must be SEO optimized, otherwise it’s gonna be hard to create monetization through ads programs such as AdSense and Amazon Associates Program.

\n

We know that business is important for any modern blog or affiliate marketing website that’s looking to make a revenue from it. Remember to use HTTPS (SSL) on your website, a CDN and lightweight stats tracking tools such as Google Analytics to better your SEO as well.

\n

Guide to creating your Superb Tables

\n
    \n
  1. In the wordpress admin panel, go to the sidebar and click ‘Superb Tables’.
  2. \n
  3. Click the green ‘Add new table’ in the top left corner
  4. \n
  5. Fill in your table data, click ‘Save’
  6. \n
  7. Click ‘Superb Tables’ in the left sidebar and copy paste the ‘Table Shortcode’
  8. \n
  9. Insert the Table Shortcode (For example [spbtbl_sc id=1] ) in a post, page, widget or in HTML.
  10. \n
\n

You’re done!

\n

Resources & Inspiration

\n
    \n
  • Auto-Expand: https://codepen.io/vsync/pen/frudD
  • \n
  • Data Table: https://codepen.io/alassetter/pen/cyrfB
  • \n
  • Table DnD: https://github.com/isocra/TableDnD/
  • \n
  • Table icon: https://www.iconfinder.com/icons/1608863/table_icon#size=256
  • \n
  • Custom confirm: https://codepen.io/Ana_Champion/pen/JRbZEL
  • \n
  • Table design inspiration: https://codepen.io/lukepeters/pen/bfFur
  • \n
  • Table design inspiration: https://codepen.io/alassetter/pen/cyrfB
  • \n
  • Table design inspiration: https://uicookies.com/wp-content/uploads/2018/05/table-responsive-v2-1000×750.jpg
  • \n
  • Table design inspiration: https://uicookies.com/wp-content/uploads/2018/05/table-responsive-v1.jpg
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/superb-tables.1.0.8.zip","tags":{"content-tables":"content tables","responsive-tables":"responsive tables","table":"table","tables":"tables"},"donate_link":"","icons":{"1x":"https://ps.w.org/superb-tables/assets/icon-256x256.png?rev=2044672","2x":"https://ps.w.org/superb-tables/assets/icon-256x256.png?rev=2044672"},"wporg":true},{"name":"Floating Button","slug":"floating-button","version":"4.3","author":"Wow-Company","author_profile":"https://profiles.wordpress.org/wpcalc","requires":"3.2","tested":"5.8","requires_php":"5.3","rating":80,"ratings":{"1":1,"2":1,"3":0,"4":0,"5":5},"num_ratings":7,"support_threads":1,"support_threads_resolved":0,"active_installs":2000,"downloaded":32490,"last_updated":"2021-07-21 5:47am GMT","added":"2018-09-08","homepage":"https://wordpress.org/plugins/floating-button/","short_description":"Easily create a custom sticky floating buttons. The Floating Button will be the effective solution…","description":"

The Floating Button is the free WordPress plugin for creating the original sticky floating actions buttons. It allows you to install on the site floating buttons with unique thematic icons. The extension serves for placing both traditional navigation bar and additional block with useful information for user.

\n

The Floating Button plugin will be the effective solution for increasing the recognition of your web resource. Its connection will bring originality and novelty to the used theme of the site. The extension helps to configure user-friendly navigation, place useful information or contact panel.

\n

Main features

\n
    \n
  • 2 submenu;
  • \n
  • more than 1500+ FontAwesome icons;
  • \n
  • any links insertion;
  • \n
  • using the tooltips to provide more information;
  • \n
  • round buttons shape;
  • \n
  • LogIn link;
  • \n
  • LogOut link;
  • \n
  • Lost password link
  • \n
\n

Floating Button can be used for:

\n
    \n
  • site navigation;
  • \n
  • additional menu;
  • \n
  • social panel;
  • \n
  • user menu;
  • \n
  • Skype menu and others;
  • \n
  • And more…
  • \n
\n

Pro version

\n

Connect the Pro-version of the plugin to gain access to more features:

\n

Preview of Pro version

\n
    \n
  • create an unlimited amount of buttons;
  • \n
  • use up to 4 floating button positions;
  • \n
  • change the form of the menu display: Circle, Rounded square, Ellipse, Square;
  • \n
  • set the color of the main button and submenu items;
  • \n
  • accompany the change in navigation behavior with the highlight when hovering the mouse cursor;
  • \n
  • use the built-in user menu, social panel and print function;
  • \n
  • set the display according to the user role and status;
  • \n
  • change the menu output depending on the language of the page;
  • \n
  • add restrictions for screens with large or small resolution;
  • \n
  • use the categories on the site, exceptions and ID to place the menu on individual pages;
  • \n
  • insert the shortcode of the panel in the specified location;
  • \n
  • And more…
  • \n
\n

Buy Pro version

\n

Use with other plugins to maximize your results

\n\n

Support

\n

Search for answers and ask your questions at support center

\n","download_link":"https://downloads.wordpress.org/plugin/floating-button.4.3.zip","tags":{"circle-menu":"circle menu","float-menu":"float menu","floating-button":"floating button","floating-menu":"floating menu","sticky-button":"sticky button"},"donate_link":"https://wow-estore.com/item/floating-button-pro/","icons":{"1x":"https://ps.w.org/floating-button/assets/icon-128x128.png?rev=2533016","2x":"https://ps.w.org/floating-button/assets/icon-256x256.png?rev=2533016"},"wporg":true},{"name":"Breadcrumb NavXT","slug":"breadcrumb-navxt","version":"6.6.0","author":"John Havlik","author_profile":"https://profiles.wordpress.org/mtekk","requires":"4.9","tested":"5.7.2","requires_php":"5.5","rating":94,"ratings":{"1":5,"2":2,"3":4,"4":7,"5":104},"num_ratings":122,"support_threads":14,"support_threads_resolved":0,"active_installs":900000,"downloaded":10108065,"last_updated":"2021-04-01 2:13am GMT","added":"2007-12-01","homepage":"http://mtekk.us/code/breadcrumb-navxt/","short_description":"Breadcrumb NavXT, the successor to the popular WordPress plugin Breadcrumb Navigation XT, was written from the ground up to be better than its ancesto …","description":"

Breadcrumb NavXT, the successor to the popular WordPress plugin Breadcrumb Navigation XT, was written from the ground up to be better than its ancestor. This plugin generates locational breadcrumb trails for your WordPress powered blog or website. These breadcrumb trails are highly customizable to suit the needs of just about any website running WordPress. The Administrative interface makes setting options easy, while a direct class access is available for theme developers and more adventurous users.

\n

PHP Requirements

\n

Breadcrumb NavXT 5.2 and newer require PHP5.3
\nBreadcrumb NavXT 5.1.1 and older require PHP5.2

\n

Features (non-exhaustive)

\n
    \n
  • RDFa format Schema.org BreadcrumbList compatible breadcrumb generation.
  • \n
  • Extensive breadcrumb customization control via a settings page with appropriate default values for most use cases.
  • \n
  • Network admin settings page for managing breadcrumb settings for all subsites with configurable global priority.
  • \n
  • Built in WordPress Widget.
  • \n
  • Extensible via OOP and provided actions and filters.
  • \n
  • WPML compatible (enhanced compatibility with WPML extensions plugin).
  • \n
  • Polylang compatible (enhanced compatibility with Polylang extensions plugin).
  • \n
  • bbPress compatible (enhanced compatibility with bbPress extensions plugin).
  • \n
  • BuddyPress compatible (enhanced compatibility with BuddyPress extensions plugin).
  • \n
\n

Translations

\n

Breadcrumb NavXT now supports WordPress.org language packs. Want to translate Breadcrumb NavXT? Visit Breadcrumb NavXT’s WordPress.org translation project.

\n","download_link":"https://downloads.wordpress.org/plugin/breadcrumb-navxt.6.6.0.zip","tags":{"breadcrumb":"breadcrumb","breadcrumbs":"breadcrumbs","menu":"menu","navigation":"navigation","trail":"trail"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=FD5XEU783BR8U&lc=US&item_name=Breadcrumb%20NavXT%20Donation¤cy_code=USD&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted","icons":{"1x":"https://ps.w.org/breadcrumb-navxt/assets/icon.svg?rev=1927103","2x":"https://ps.w.org/breadcrumb-navxt/assets/icon-256x256.png?rev=2410525","svg":"https://ps.w.org/breadcrumb-navxt/assets/icon.svg?rev=1927103"},"wporg":true},{"name":"WP Recipe Maker","slug":"wp-recipe-maker","version":"7.5.1","author":"Bootstrapped Ventures","author_profile":"https://profiles.wordpress.org/brechtvds","requires":"4.4","tested":"5.8","requires_php":"5.4","rating":100,"ratings":{"1":1,"2":0,"3":1,"4":4,"5":201},"num_ratings":207,"support_threads":29,"support_threads_resolved":25,"active_installs":50000,"downloaded":1529780,"last_updated":"2021-08-31 12:27pm GMT","added":"2016-09-07","homepage":"http://bootstrapped.ventures/wp-recipe-maker/","short_description":"The easy and user-friendly recipe plugin for everyone. Automatic JSON-LD metadata for food AND how-to recipes will improve your SEO!","description":"

WP Recipe Maker is the easy recipe plugin that everyone can use. An easy workflow allows you to add recipes to any post or page with automatic JSON-LD metadata for your recipes. This metadata will improve your SEO and get you more visitors!

\n

\n

Would you like to see the plugin in action before installing it? We have a WP Recipe Maker demo website showcasing all of the features!

\n
\n

Get the most out of this plugin!
\n Join the WP Recipe Maker Email Course and we’ll help you get started and learn all the tips and trick for using WPRM.

\n
\n

Features

\n

An overview of WP Recipe Maker features:

\n
    \n
  • Compatible with both the Classic Editor and new Gutenberg editor
  • \n
  • Includes an Elementor block and shortcode can be used in other page builders
  • \n
  • Easy workflow to add recipes to any post or page
  • \n
  • Uses schema.org/Recipe JSON-LD metadata optimised for Google Recipe search
  • \n
  • Uses schema.org/How-to JSON-LD metadata optimised for non-food recipes and instructions
  • \n
  • Supports both regular and Guided Recipes for Google metadata
  • \n
  • Google AMP compatible
  • \n
  • Integrates recipe metadata with Yoast SEO schema graph
  • \n
  • Option to disable metadata per recipe if you want to publish non-food or DIY recipes
  • \n
  • Compatible with Pinterest Rich Pins and a setting to easily opt out
  • \n
  • Outputs ItemList metadata for Recipe Roundup posts
  • \n
  • Associate ingredients with instructions to have them show up exactly where needed
  • \n
  • Keyboard accessible and AMP compatible ratings for comments
  • \n
  • Interactive print recipe page with room for ads and optional credit to your website
  • \n
  • Fallback recipe shows up when the plugin is disabled
  • \n
  • Include a recipe video in the template and metadata
  • \n
  • Add photos or videos to any step of the recipe
  • \n
  • Print recipe and jump to recipe shortcodes
  • \n
  • This plugin is fully responsive, your recipes will look good on any device
  • \n
  • Easily change the look and feel to fit your website in the Template Editor
  • \n
  • Structure your ingredients and instructions in groups (e.g. icing and cake batter)
  • \n
  • Full text search for your recipes
  • \n
  • Access your recipes through the WordPress REST API
  • \n
  • Built-in SEO check for your recipe metadata
  • \n
  • Compatible with RTL languages
  • \n
  • Import your recipes from other plugins (see below)
  • \n
\n

WP Recipe Maker Premium

\n

Looking for some more advanced functionality? We also have the WP Recipe Maker Premium add-on available with the following features:

\n
    \n
  • Use ingredient links for linking to products or other recipes
  • \n
  • Adjustable servings make it easy for your visitors
  • \n
  • Display all nutrition data in a nutrition label
  • \n
  • User Ratings allow visitors to vote without commenting
  • \n
  • Add a mobile-friendly kitchen timer to your recipes
  • \n
  • More Premium templates for a unique recipe template
  • \n
  • Create custom recipe taxonomies like price level, difficulty, …
  • \n
  • Use checkboxes for your ingredients and instructions
  • \n
\n

Even more add-ons can add the following functionality:

\n
    \n
  • Integration with a Nutrition API for automatic nutrition facts
  • \n
  • Unit Conversion to reach an international audience with a different unit system
  • \n
  • Have your users send in recipes through the Recipe Submission form
  • \n
  • Give your visitors the power of Recipe Collections for favourites, meal planning and more
  • \n
\n

Import Options

\n

Currently using another recipe plugin? No problem! You can easily migrate all your existing recipes to WP Recipe Maker if you’re using any of the following plugins:

\n
    \n
  • Tasty Recipes
  • \n
  • Create by Mediavine
  • \n
  • EasyRecipe
  • \n
  • WP Ultimate Recipe
  • \n
  • Recipe Card Blocks by WPZOOM
  • \n
  • Meal Planner Pro
  • \n
  • BigOven
  • \n
  • ZipList and Zip Recipes
  • \n
  • Yummly
  • \n
  • Yumprint Recipe Card
  • \n
  • FoodiePress
  • \n
  • Cooked
  • \n
  • Cookbook
  • \n
  • Simple Recipe Pro
  • \n
  • Purr Recipe Plugin
  • \n
  • Recipes by Simmer
  • \n
  • WordPress.com shortcode
  • \n
  • JSON-LD HTML Script
  • \n
  • Multi Rating (ratings only)
  • \n
  • (Need anything else? Just ask!)
  • \n
\n

This plugin is in active development. Feel free to contact us with any feature requests or ideas.

\n","download_link":"https://downloads.wordpress.org/plugin/wp-recipe-maker.zip","tags":{"cooking":"cooking","food":"food","ingredients":"ingredients","recipe":"Recipe","recipes":"recipes"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QG7KZMGFU325Y","icons":{"1x":"https://ps.w.org/wp-recipe-maker/assets/icon-128x128.png?rev=1491788","2x":"https://ps.w.org/wp-recipe-maker/assets/icon-256x256.png?rev=1491788"},"wporg":true},{"name":"Slim SEO – Fast & Automated WordPress SEO Plugin","slug":"slim-seo","version":"3.10.1","author":"eLightUp","author_profile":"https://profiles.wordpress.org/rilwis","requires":"4.5","tested":"5.8","requires_php":"5.6","rating":92,"ratings":{"1":1,"2":3,"3":0,"4":0,"5":26},"num_ratings":30,"support_threads":16,"support_threads_resolved":12,"active_installs":10000,"downloaded":169802,"last_updated":"2021-07-22 1:33am GMT","added":"2018-12-31","homepage":"https://wpslimseo.com","short_description":"A full-featured SEO plugin for WordPress that's lightweight, blazing fast with minimum configuration. No bloats,…","description":"

A Fast & Automated SEO Plugin For WordPress

\n

Currently there are many SEO plugins for WordPress in the market. But these plugins often have too many options and are very complicated for ordinary users. Access to their configuration section, you will easily get lost in a maze of explanations and options that you sometimes don’t understand. Besides, there are ads!

\n

So how can an ordinary user use an SEO plugin?

\n

SEO should be an integrated part of WordPress, where users don’t need or need very little effort to configure for SEO. The main reason is that not everyone understands the terms of SEO and how to configure them optimally.

\n

So, we made Slim SEO.

\n

Slim SEO is a full-featured SEO plugin, that’s done right! It provides a complete SEO solution for WordPress where the configuration has been done automatically. Users do not need to care about their complex and semantic options.

\n

So what does Slim SEO do?

\n

Slim SEO Features

\n

Slim SEO helps you do the following jobs automatically:

\n

1. Meta Tags

\n

The following meta tags are auto-generated and optimized for the best SEO scores.

\n\n

2. XML Sitemap

\n

Slim SEO automatically generates XML sitemap (at domain.com/sitemap.xml) to submit to search engines. With XML sitemaps, your website are indexed fast and completely.

\n

3. Breadcrumbs

\n

The plugin allows you to output a breadcrumb trail on your website easily. It automatically fetches the information from the current post and output a hierarchy for you. You can also style the breadcrumbs to match your theme style.

\n

4. Schema (Structured Data)

\n

Schema is a way that describes structured data for search engines. Based on the data provided, search engines can show the content in the search results page in a more appealing way.

\n

Slim SEO automatically adds the some structured data to the website via JSON-LD which makes your website more SEO-friendly. Not only schemas are created by the plugin, there are also meaningful connections between them. For example, an article (single post) is the main entity of the current webpage. Slim SEO does that all without any configuration.

\n

5. Auto Redirection

\n
    \n
  • Auto redirect attachment page to the attachment file URL.
  • \n
  • Auto redirect author page to the homepage if the website has only one author or the author doesn’t have any posts.
  • \n
\n

6. Open Source

\n

Slim SEO has different contributors which help make Slim SEO a quality product. Join us on Github!

\n

Who should use Slim SEO?

\n

Everyone can use Slim SEO!

\n

However, Slim SEO is perfectly suitable for users who prefer simplicity or do not like the complicated options that other SEO plugins provide. It’s also a good choice for users with little SEO knowledge and just want to use SEO plugins to automate their jobs.

\n

If you like this plugin, you might also like our other products: Meta Box and GretaThemes.

\n","download_link":"https://downloads.wordpress.org/plugin/slim-seo.3.10.1.zip","tags":{"google":"google","schema":"schema","search-engine-optimization":"search engine optimization","seo":"seo","sitemap":"sitemap"},"donate_link":"https://wpslimseo.com/pro/","icons":{"1x":"https://ps.w.org/slim-seo/assets/icon.svg?rev=2005049","svg":"https://ps.w.org/slim-seo/assets/icon.svg?rev=2005049"},"wporg":true},{"name":"Schema & Structured Data for WP & AMP","slug":"schema-and-structured-data-for-wp","version":"1.9.83.1","author":"Magazine3","author_profile":"https://profiles.wordpress.org/magazine3","requires":"3.0","tested":"5.8","requires_php":false,"rating":94,"ratings":{"1":13,"2":1,"3":2,"4":10,"5":183},"num_ratings":209,"support_threads":30,"support_threads_resolved":19,"active_installs":80000,"downloaded":2323874,"last_updated":"2021-08-31 7:07am GMT","added":"2018-08-06","homepage":"","short_description":"Schema & Structured Data for WP & AMP adds Google Rich Snippets markup according to…","description":"

Schema & Structured Data for WP & AMP adds Google Rich Snippets markup according to Schema.org guidelines to structure your site for SEO. (AMP Compatible)

\n

Features

\n
    \n
  • Schema Types: Currently, We have more than 35 schema types such as Blog Posting, News article, Local Business, Web page, Article, Recipe, Product, and Video Object view all. We are going to add all the schema types in the future. You can request the one you want and we will add it for you!
  • \n
  • Conditional Display Fields: Meaning you include or exclude any posts, pages, post types, taxonomies and more!
  • \n
  • Knowlegde Base Support: Recognize the content based on the organization or a person via data type option.
  • \n
  • Full AMP Compatiblity: Supports the AMP for WP and AMP by Automattic plugins.
  • \n
  • Advanced Settings: Play with output of schema markup using these options (Defragment, Add in Footer, Pretty Print, MicroData CleanUp etc.)
  • \n
  • Migration: Import the data from other schema plugins such as (SEO Pressor, WP SEO Schema, Schema Plugin etc )
  • \n
  • Compatibility: Generate the schema markup for the plugins. We have provided schema support for them. Few of them are – kk Star Ratings, WP-PostRatings, bbPress
  • \n
  • Google Review: Display your business google reviews and its schema markup on your website.
  • \n
  • [Premium] Reviews ( Fetch reviews from 75+ platforms ).
  • \n
  • [Premium] Priority Support. Get it We get more than 100 technical queries a day but the Priority support plan will help you skip that and get the help from a dedicated team.
  • \n
  • Review Module: Create your own review rating box with pros and cons and its schema markup
  • \n
  • Schema Type Blocks in Gutenberg: Create your own content with the blocks and json schema markup will be added automatically
  • \n
  • Unlimited Custom Post Types: You can control to represent the Rich Snippets data in the google search console using unlimited custom post types.
  • \n
  • Easy to use with Minimal Settings
  • \n
  • Archive Page Listing Support
  • \n
  • JSON-LD Format
  • \n
  • Easy to use Setup Wizard
  • \n
  • Breadcrumbs Listing Support
  • \n
  • Comments Post comments Support
  • \n
  • Constant Development & New Features: We’ll be releasing the constant updates along with the more handy features as soon as we get the feedback from the users.
  • \n
\n

Supported Schema Types

\n
    \n
  • Apartment
  • \n
  • House
  • \n
  • SingleFamilyResidence
  • \n
  • Article
  • \n
  • Blogposting
  • \n
  • Book
  • \n
  • Course
  • \n
  • DiscussionForumPosting,
  • \n
  • DataFeed
  • \n
  • HowTo
  • \n
  • NewsArticle
  • \n
  • QAPage
  • \n
  • Review
  • \n
  • Recipe
  • \n
  • TVSeries
  • \n
  • SoftwareApplication
  • \n
  • MobileApplication
  • \n
  • SpecialAnnouncement (Related to Coronavirus)
  • \n
  • TechArticle
  • \n
  • WebPage
  • \n
  • Event
  • \n
  • VideoGame
  • \n
  • JobPosting
  • \n
  • Service
  • \n
  • Trip
  • \n
  • AudioObject
  • \n
  • VideoObject
  • \n
  • MedicalCondition
  • \n
  • MusicPlaylist
  • \n
  • MusicAlbum
  • \n
  • LocalBusiness with all the sub categories
  • \n
  • Product
  • \n
  • TouristAttraction
  • \n
  • TouristDestination
  • \n
  • LandmarksOrHistoricalBuildings
  • \n
  • HinduTemple
  • \n
  • Church
  • \n
  • Mosque
  • \n
  • Person
  • \n
  • View All
  • \n
\n

Extensions

\n

Some useful extensions to extend Schema & Structured Data for WP & AMP features, check Woocommerce Compatibility For Schema, Cooked Compatibility For Schema and We are going to add more.

\n

Support

\n

We try our best to provide support on WordPress.org forums. However, We have a special team support where you can ask us questions and get help. Delivering a good user experience means a lot to us and so we try our best to reply each and every question that gets asked.

\n

Bug Reports

\n

Bug reports for Schema & Structured Data for WP & AMP are welcomed on GitHub. Please note GitHub is not a support forum, and issues that aren’t properly qualified as bugs will be closed.

\n

Credits

\n
    \n
  • Select2 used https://github.com/select2/select2 – License URI: https://github.com/select2/select2/blob/develop/LICENSE.md,
  • \n
  • Merlin WP used https://github.com/richtabor/MerlinWP – License URI: https://github.com/richtabor/MerlinWP/blob/master/LICENSE,
  • \n
  • jquery-timepicker used https://github.com/jonthornton/jquery-timepicker
  • \n
  • Rate Yo! used https://github.com/prrashi/rateYo – License URI: https://github.com/prrashi/rateYo/commit/f3812fe96c38b08627d209795176053550fb1427
  • \n
  • Aqua Resizer used http://aquagraphite.com – License URI: WTFPL – http://sam.zoy.org/wtfpl/
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/schema-and-structured-data-for-wp.1.9.83.1.zip","tags":{"google-snippets":"google snippets","rich-snippets":"rich snippets","schema":"schema","schema-org":"schema.org","structured-data":"structured data"},"donate_link":"","icons":{"1x":"https://ps.w.org/schema-and-structured-data-for-wp/assets/icon-128x128.png?rev=1922284","2x":"https://ps.w.org/schema-and-structured-data-for-wp/assets/icon-256x256.png?rev=1922284"},"wporg":true},{"name":"GenerateBlocks","slug":"generateblocks","version":"1.3.5","author":"Tom Usborne","author_profile":"https://profiles.wordpress.org/edge22","requires":"5.4","tested":"5.8","requires_php":"5.6","rating":98,"ratings":{"1":0,"2":0,"3":2,"4":1,"5":72},"num_ratings":75,"support_threads":28,"support_threads_resolved":12,"active_installs":50000,"downloaded":238382,"last_updated":"2021-07-19 6:12pm GMT","added":"2020-05-19","homepage":"https://generateblocks.com","short_description":"A small collection of lightweight WordPress blocks that can accomplish nearly anything.","description":"

\n

\n

Add incredible versatility to your editor without bloating it with tons of one-dimensional Gutenberg blocks. With GenerateBlocks, you can learn a handful of blocks deeply and use them to build anything.

\n

GenerateBlocks works hand-in-hand with GeneratePress, but is built to work with any theme.

\n

Looking for more features? Check out GenerateBlocks Pro.

\n

Container

\n

Organize your content into rows and sections. The Container block is the foundation of your content, allowing you to design unique sections for your content.

\n

Grid

\n

Create advanced layouts with flexible grids. The Grid block gives you the ability to create any kind of layout you can imagine.

\n

Headline

\n

Craft text-rich content with advanced typography. Everything from headings to paragraphs – take full control of your text.

\n

Buttons

\n

Drive conversions with beautiful buttons.

\n

Performance

\n

We take performance seriously. Minimal CSS is generated only for the blocks you need, and our HTML structure is as simple as possible while allowing for maximum flexibility.

\n

Coding standards

\n

Built to the highest coding standards for security, stability and future compatibility.

\n

Fully responsive

\n

Every block comes with tablet and mobile controls, giving you total control of your responsive design.

\n

Documentation

\n

Check out our documentation for more information on the individual blocks and how to use them.

\n","download_link":"https://downloads.wordpress.org/plugin/generateblocks.1.3.5.zip","tags":{"blocks":"blocks","container":"container","grid":"grid","gutenberg":"gutenberg","headline":"headline"},"donate_link":"https://generateblocks.com","icons":{"1x":"https://ps.w.org/generateblocks/assets/icon-128x128.png?rev=2336822","2x":"https://ps.w.org/generateblocks/assets/icon-256x256.png?rev=2336822"},"wporg":true},{"name":"Blackhole for Bad Bots","slug":"blackhole-bad-bots","version":"3.2","author":"Jeff Starr","author_profile":"https://profiles.wordpress.org/specialk","requires":"4.1","tested":"5.8","requires_php":"5.6.20","rating":98,"ratings":{"1":2,"2":0,"3":3,"4":2,"5":108},"num_ratings":115,"support_threads":3,"support_threads_resolved":3,"active_installs":30000,"downloaded":305663,"last_updated":"2021-07-19 8:41pm GMT","added":"2016-02-18","homepage":"https://perishablepress.com/blackhole-bad-bots/","short_description":"Blackhole is a WordPress security plugin that detects and traps bad bots in a virtual black hole, where they are denied access to your entire site.","description":"
\n

Add your own virtual black hole trap for bad bots.

\n
\n

Bye bye bad bots..

\n

Bad bots are the worst. They do all sorts of nasty stuff and waste server resources. The Blackhole plugin helps to stop bad bots and save precious resources for legit visitors.

\n

How does it work?

\n

First the plugin adds a hidden trigger link to the footer of your pages. You then add a line to your robots.txt file that forbids all bots from following the hidden link. Bots that then ignore or disobey your robots rules will crawl the link and fall into the trap. Once trapped, bad bots are denied further access to your WordPress site.

\n

I call it the “one-strike” rule: bots have one chance to obey your site’s robots.txt rule. Failure to comply results in immediate banishment. The best part is that the Blackhole only affects bad bots: human users never see the hidden link, and good bots obey the robots rules in the first place. Win-win! 🙂

\n

Using a caching plugin? Check out the Installation notes for important info.

\n

Features

\n
    \n
  • Easy to set up
  • \n
  • Squeaky clean code
  • \n
  • Focused and modular
  • \n
  • Lightweight, fast and flexible
  • \n
  • Built with the WordPress API
  • \n
  • Works with other security plugins
  • \n
  • Easy to reset the list of bad bots
  • \n
  • Easy to delete any bot from the list
  • \n
  • Regularly updated and “future proof”
  • \n
  • Blackhole link includes “nofollow” attribute
  • \n
  • Plugin options configurable via settings screen
  • \n
  • Works silently behind the scenes to protect your site
  • \n
  • Whitelists all major search engines to never block
  • \n
  • Focused on flexibility, performance, and security
  • \n
  • Email alerts with WHOIS lookup for blocked bots
  • \n
  • Complete inline documentation via the Help tab
  • \n
  • Provides setting to whitelist any IP addresses
  • \n
  • Customize the message displayed to bad bots 😉
  • \n
  • One-click restore the plugin default options
  • \n
  • Does NOT use or require any .htaccess rules
  • \n
\n

Blackhole for Bad Bots protects your site against bad bots, spammers, scrapers, scanners, and other automated threats.

\n

Not using WordPress? Check out the standalone PHP version of Blackhole!

\n

Check out Blackhole Pro and level up with advanced features!

\n

Whitelist

\n

By default, this plugin does NOT block any of the major search engines (user agents):

\n
    \n
  • AOL.com
  • \n
  • Baidu
  • \n
  • Bingbot/MSN
  • \n
  • DuckDuckGo
  • \n
  • Googlebot
  • \n
  • Teoma
  • \n
  • Yahoo!
  • \n
  • Yandex
  • \n
\n

These search engines (and all of their myriad variations) are whitelisted via user agent. So are a bunch of other “useful” bots. They always are allowed full access to your site, even if they disobey your robots.txt rules. This list can be customized in the plugin settings. For a complete list of whitelisted bots, visit the Help tab in the plugin settings (under “Whitelist Settings”).

\n

Privacy

\n

User Data: This plugin automatically blocks bad bots. When bad bots fall into the trap, their IP address, user agent, and other request data are stored in the WP database. No other user data is collected by this plugin. At any time, the administrator may delete all saved data via the plugin settings.

\n

Services: This plugin does not connect to any third-party locations or services.

\n

Cookies: This plugin does not set any cookies.

\n

Header Image Courtesy NASA/JPL-Caltech.

\n

Support development of this plugin

\n

I develop and maintain this free plugin with love for the WordPress community. To show support, you can make a donation or purchase one of my books:

\n\n

And/or purchase one of my premium WordPress plugins:

\n\n

Links, tweets and likes also appreciated. Thanks! 🙂

\n","download_link":"https://downloads.wordpress.org/plugin/blackhole-bad-bots.3.2.zip","tags":{"anti-spam":"anti-spam","bad-bots":"bad bots","blackhole":"blackhole","honeypot":"honeypot","security":"security"},"donate_link":"https://monzillamedia.com/donate.html","icons":{"1x":"https://ps.w.org/blackhole-bad-bots/assets/icon-128x128.png?rev=1471215","2x":"https://ps.w.org/blackhole-bad-bots/assets/icon-256x256.png?rev=1471215"},"wporg":true},{"name":"Page View Count","slug":"page-views-count","version":"2.4.12","author":"a3rev Software","author_profile":"https://profiles.wordpress.org/a3rev","requires":"5.0","tested":"5.8","requires_php":false,"rating":78,"ratings":{"1":8,"2":5,"3":2,"4":3,"5":30},"num_ratings":48,"support_threads":2,"support_threads_resolved":0,"active_installs":20000,"downloaded":403671,"last_updated":"2021-07-19 10:48am GMT","added":"2012-12-21","homepage":"","short_description":"Places an icon, all time views count and views today count at the bottom of…","description":"

A beautifully simple to set up plugin that gives site visitors and site owners the ability to quickly and easily see how many people have visited that page or post.

\n

FEATURES

\n
    \n
  • On the front end it adds an icon and page views count to the bottom or top of pages and posts on your WordPress website.
  • \n
  • Switch ON | OFF hide Page Views Count for all Posts, Pages and all custom posts types including WooCommerce custom post types.
  • \n
  • Set the Position of the counter to show at the top of the page or post or at the bottom
  • \n
  • Set alignment of the counter Left, Right or Centre
  • \n
  • Set the colour and size of the counter icon
  • \n
  • Option to use load by Ajax to prevent the count from being cached by caching plugins
  • \n
  • Option to Manually set / edit total views and views today from Page View Count meta box on any post or page editor
  • \n
  • Add Page Views counter via the PVC Gutenberg block
  • \n
  • Add Page Views counter via shortcode
  • \n
  • Add Page Views counter via widget
  • \n
  • Developers can add the Page Views Counter via php tag
  • \n
  • All options and settings are point click – absolutely no coding required
  • \n
\n

COMPATIBILTY

\n

Compatible with WordPress 5.3+ and backwards to WP 4.9.0. Compatible with Classic Editor plugin with 5.0+ (Gutenberg Deactivated)

\n

GUTENBERG BLOCK

\n

Using the Gutenberg Editor. Use the Page View Count Block to add the counter to any page or post content. Block search for ‘Page Views’ or selecting the block from the a3rev Blocks menu.

\n

Adding the Page Views block to your content automatically deactivates the Global Page View counter on the post or page.

\n

ELEMENTOR TEMPLATES

\n

Fully compatible with Elementor templates. Add counter via Shortcode or widget to any template.

\n

DEVELOPERS

\n

On the plugins dashboard in the + Page Views Count Function options box you will find the Page Views Count functions and notes on how to use them.

\n
    \n
  • Use to manually add Page views count to any content or object in the theme.
  • \n
  • Use to add page View Count to any content that is not create using WordPress custom post / taxonomy type.
  • \n
  • Use to create a custom position of the Page Views Count
  • \n
  • Functions support echo and return parameters when getting visitor stats on any variable.
  • \n
\n

TROUBLESHOOTING

\n
    \n
  • The number 1 support request we get about the plugin is that it double or triple counts page or post loads. Yes it does and if you see that it is a Red Flag that you have a misconfiguration or bug in your theme or a plugin. Page Views Count does exactly that – counts each time the page or post is loading in the browser – if its counting twice it is because the browser is double loading the page. That is a bad thing and you or your developer needs to fix that.
  • \n
\n

CONTRIBUTE

\n

When you download Page Views Count, you join our community. Regardless of if you are a WordPress beginner or experienced developer if you’?re interested in contributing to Page Views Count development head over to the Page Views Count GitHub Repository to find out how you can contribute.
\nWant to add a new language to Page Views Count? Great! You can contribute via translate.wordpress.org

\n

Usage

\n
    \n
  1. \n

    Install and activate the plugin

    \n
  2. \n
  3. \n

    Go to WordPress Settings menu > Page View Count Menu

    \n
  4. \n
  5. \n

    Activate Page Views Count and use the options box settings to make the desired configuration

    \n
  6. \n
  7. \n

    Be sure to clear any caching and browser cache to see your Page Views Count

    \n
  8. \n
\n","download_link":"https://downloads.wordpress.org/plugin/page-views-count.2.4.12.zip","tags":{"gutenberg":"gutenberg","page-view-count":"page view count","post-view-count":"post view count","post-views":"post views","wordpress-page-view":"wordpress page view"},"donate_link":"","icons":{"1x":"https://ps.w.org/page-views-count/assets/icon.svg?rev=986301","2x":"https://ps.w.org/page-views-count/assets/icon-256x256.png?rev=986301","svg":"https://ps.w.org/page-views-count/assets/icon.svg?rev=986301"},"wporg":true},{"name":"Newspack Listings","slug":"newspack-listings","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://github.com/Automattic/newspack-listings/releases","short_description":"

Create reusable content as listings and add them to lists wherever core blocks can be used

\n","description":"\n\n\n

Create reusable content as listings and add them to lists wherever core blocks can be used

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2021/02/listings2-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2021/02/listings2-372x209.jpg","svg":""},"wporg":false},{"name":"Newspack Newsletters","slug":"newspack-newsletters","version":"1.31.1","author":"Automattic","author_profile":"https://profiles.wordpress.org/automattic","requires":"5.3","tested":"5.8.0","requires_php":"5.6","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":1,"support_threads_resolved":1,"active_installs":500,"downloaded":2866,"last_updated":"2021-08-10 8:45pm GMT","added":"2021-02-15","homepage":"https://newspack.pub","short_description":"Create email newsletters with the Gutenberg editor and distribute them with your Mailchimp or Constant…","description":"

Create email newsletters with the Gutenberg editor and send them via Mailchimp or Constant Contact, all without leaving WP Admin! Newspack Newsletters lets you build eye-catching newsletters using the WordPress editing tools you’re already familiar with, and lets you save drafts, create reusable layouts, send to your existing mailing list, and also publish them to your website.

\n

Use and create newsletter layouts

\n

Newspack Newsletters comes with four default layouts to help you start building newsletters quickly. You can use an existing layout, or start fresh with a blank page. You can also create and save your own layouts, or alter the ones that come bundled with the plugin and save the settings, and use them for future campaigns.

\n

Use Gutenberg blocks and settings

\n

Newspack Newsletters supports most core Gutenberg blocks and configurations, letting you use blocks like Group, Button, Columns, and more, to create dynamic layouts. The plugin will warn you when a block will not display as expected in an email.

\n

Customize your newsletter’s appearance

\n

You can customize your newsletters further by changing the header and body fonts, or picking a background color.

\n

Newspack Blocks

\n

Newspack Newsletters comes bundled with the Newspack Post Inserter block. This block lets you insert excerpts from live posts on your site, and, once inserted, will turn those posts into static content using the Header and Paragraph blocks, linking back to your site.

\n

Need to target a post title to your newsletter audience? Not a problem! You can edit these blocks, and add others, to make sure they’ speak to your readers.

\n

Add ads!

\n

Monetize your newsletters by including advertising. The Newspack Newsletters plugin lets you create ads, which are stored as a custom post type. Ads are automatically inserted into your newsletters, and can also be toggled off on a newsletter-by-newsletter basis.

\n

Send with ease

\n

Newspack Newsletters connects to your Mailchimp or Constant Contact accounts to send emails using the mailing lists you’ve collected there, all without leaving the WordPress Admin.

\n

Before sending your campaign, you can send test emails to one or more email addresses at a time from the newsletter editor, to make sure everything is pixel perfect before sharing with the world.

\n

About Newspack

\n

The Newspack Newletters plugin is part of Newspack, a suite of tools to help small to mid-sized news organizations publish and generate revenue with WordPress. Newspack is a collaborative project by WordPress.com and the Google News Initiative. You can learn more about Newspack by visiting our website.

\n

Credits

\n

The beach photograph in the screenshot is by Life of Pix, licensed CC0.

\n","download_link":"https://downloads.wordpress.org/plugin/newspack-newsletters.zip","tags":{"constant-contact":"constant contact","mailchimp":"mailchimp","newsletters":"newsletters","newspack":"Newspack","wordpress-com":"WordPress.com"},"donate_link":"","icons":{"1x":"https://ps.w.org/newspack-newsletters/assets/icon.svg?rev=2475195","2x":"https://ps.w.org/newspack-newsletters/assets/icon-256x256.png?rev=2475195","svg":"https://ps.w.org/newspack-newsletters/assets/icon.svg?rev=2475195"},"wporg":true},{"name":"Web Stories","slug":"web-stories","version":"1.10.1","author":"Google","author_profile":"https://profiles.wordpress.org/google","requires":"5.5","tested":"5.8","requires_php":"7.0","rating":84,"ratings":{"1":5,"2":2,"3":2,"4":4,"5":31},"num_ratings":44,"support_threads":111,"support_threads_resolved":86,"active_installs":20000,"downloaded":322933,"last_updated":"2021-08-25 7:02pm GMT","added":"2020-09-22","homepage":"https://wp.stories.google/","short_description":"Web Stories are a visual storytelling format for the open web which immerses your readers…","description":"

Web Stories are a free, open-web, visual storytelling format for the web, enabling you to easily create visual narratives with engaging animations and tappable interactions, and immerse your readers in great and fast-loading full-screen experiences.

\n

Benefits of Web Stories

\n

The Web Stories format puts features and capabilities at your fingertips to engage with your audience via the power of storytelling on the open web. Specifically, you can:

\n
    \n
  • Create beautiful and engaging content easily: Web Stories make the production of stories as easy as possible from a technical perspective.
  • \n
  • Enjoy creative flexibility for editorial freedom and branding: The Web Stories format comes with preset but flexible layout templates, standardized UI controls, and components for sharing and adding follow-on content.
  • \n
  • Share and link your stories on the open web: Web Stories are part of the open web and can be shared and embedded across sites and apps without being confined to a single ecosystem.
  • \n
  • Track and measure your stories: Supports analytics and bookend capabilities for viral sharing and monetization.
  • \n
  • Capture the attention of your readers by offering fast loading times to your stories: Web Stories are lightning fast so that your audience stays engaged and entertained.
  • \n
  • Engage with your readers via immersive storytelling: Web Stories are a new and modern way to reach existing readers.
  • \n
  • Monetize effectively the beautiful and engaging stories you create: Web Stories enable monetization capability for publishers using affiliate links. For advertisers, Stories is a way to reach a unique audience within a new storytelling experience.
  • \n
\n

Web Stories Editor

\n

The Web Stories editor for WordPress brings together a robust set of story creation capabilities in a user-friendly, WYSIWYG creation tool. Some of the key features you can leverage out of the box are:

\n
    \n
  • A visually rich and intuitive dashboard, allowing you to easily navigate the story creation process
  • \n
  • Beautiful and expressive page templates to you get your story creation process started quickly and smoothly
  • \n
  • Easy drag-and-drop capabilities, making it easy to compose beautiful stories
  • \n
  • Convenient access to WordPress’ media library, enabling you to grab your media assets right from the plugin dashboard as you create your stories
  • \n
  • Customizable color and text style presets, making it easy to tailor the style of your stories to the needs of your content strategy
  • \n
  • And much more!
  • \n
\n

Using the Web Stories editor for WordPress, you can easily create visual narratives with tappable interactions, and share freely across the web, or embed them on your existing content strategies. The Stories you create are yours in every way, as Web Stories belong to the open web, instead of being confined to any specific closed ecosystem or platform.

\n

Audience: Everyone

\n

Web Stories are for everyone! If you are a site owner, content creator, or publisher on the web, embracing the Web Stories format would be great as a way to enhance the quality of your content strategy, the value you bring to your readers, and consequently your chances of achieving sustainable success.

\n

Terms of Service

\n

By using this plugin, you agree to Google’s Terms of Service. By using third-party imagery and video provided by Unsplash, Coverr and Tenor, you agree to adhere to the respective Terms of Service.

\n","download_link":"https://downloads.wordpress.org/plugin/web-stories.1.10.1.zip","tags":{"amp":"amp","google":"google","stories":"stories","storytelling":"storytelling","web-stories":"web stories"},"donate_link":"","icons":{"1x":"https://ps.w.org/web-stories/assets/icon.svg?rev=2386543","2x":"https://ps.w.org/web-stories/assets/icon-256x256.png?rev=2386543","svg":"https://ps.w.org/web-stories/assets/icon.svg?rev=2386543"},"wporg":true},{"name":"Jetpack – WP Security, Backup, Speed, & Growth","slug":"jetpack","version":"10.0","author":"Automattic","author_profile":"https://profiles.wordpress.org/automattic","requires":"5.7","tested":"5.8","requires_php":"5.6","rating":78,"ratings":{"1":320,"2":80,"3":81,"4":137,"5":1014},"num_ratings":1632,"support_threads":352,"support_threads_resolved":316,"active_installs":5000000,"downloaded":242892336,"last_updated":"2021-08-03 4:25pm GMT","added":"2011-01-20","homepage":"https://jetpack.com","short_description":"Improve your WP security with powerful one-click tools like backup and malware scan. Get essential…","description":"

The most popular WordPress plugin for just about everything.

\n

WordPress security, performance, marketing, and design tools — Jetpack is made by WordPress experts to make WP sites safer and faster, and help you grow your traffic.

\n

24/7 AUTO SITE SECURITY

\n

We guard your site so you can run your site or business. Jetpack Security provides easy-to-use, comprehensive WordPress site security including auto real-time backups and easy restores, malware scans, and spam protection. Essential features like brute force protection and downtime / uptime monitoring are free.

\n
    \n
  • Back up your site automatically in real time and restore to any point with one click. Unlimited storage for your backup. Great for eCommerce stores especially Woo.
  • \n
  • Manage migration to a new host, migrate theme files and plugins to a new database, easily duplicate websites, create full database backups, clone websites, repair broken websites by restoring older backups or easily set up a test site by creating a duplicate of your existing WP website.
  • \n
  • See every site change and who made it with the activity log, great for coordination, debug, maintenance, or troubleshooting.
  • \n
  • Automatically perform malware scans and security scans for other code threats. One click fix to restore your site for malware.
  • \n
  • Block spam comments and form responses with anti spam features powered by Akismet.
  • \n
  • Brute force attack protection to protect your WordPress login page from attacks.
  • \n
  • Monitor your site uptime / downtime and get an instant alert of any change by email.
  • \n
  • Secure WordPress.com powered login used by millions of sites with optional 2FA (two factor authentication) for extra protection.
  • \n
  • Auto update individual plugins for easy site maintenance and management.
  • \n
\n

PEAK SPEED AND PERFORMANCE

\n

Get blazing fast site speed with Jetpack, the premier WP plugin built to leverage the power of AMP, a tool that helps optimize your site on mobile devices. Jetpack’s free CDN (content delivery network) auto optimizes your images. Watch your page load times decrease — we’ll optimize your images and serve them from our own powerful global network, and speed up your site on mobile devices to reduce bandwidth usage and save money!

\n
    \n
  • Jetpack has partnered with Google AMP to create the best, highest performance all-in-one toolkit for WordPress. By using Jetpack and AMP together, you get all the features you need to build a beautiful, fast, modern website with no coding required.
  • \n
  • Image CDN for images and static files, like CSS and JavaScript, served from our servers, not yours, which saves you money and bandwidth.
  • \n
  • Lazy load images for a super fast experience, even on mobile. Jetpack’s lazy loading automatically delays the loading of media on your posts and pages until your visitors scroll down to where they appear on the page.
  • \n
  • Unlimited, high speed, ad free video hosting keeps the focus on your content, not on ads or recommendations that lead people off site.
  • \n
  • Custom site search is incredibly powerful and customizable. Helps your visitors instantly find the right content so they read and buy more. Works great with WooCommerce / eCommerce sites to help filter products so customers get what they want on your site faster.
  • \n
  • Recommended to use with WP Super Cache for ultimate WordPress site speed.
  • \n
\n

POWERFUL TOOLS FOR GROWTH

\n

Create and customize your WordPress site, optimize it for visitors and revenue, and enjoy watching your stats tick up. Build it, share it, and watch it grow.

\n
    \n
  • Advanced site stats and analytics to help you understand your audience.
  • \n
  • Auto publish blog posts and products to social media by simply using our tools to connect to Facebook, Twitter, and Linkedin.
  • \n
  • Easily share Instagram posts on your pages and blog posts.
  • \n
  • Collect a payment or donation, sell a product, service, or membership with simple integrations with PayPal and Stripe.
  • \n
  • Grow traffic with SEO tools for Google, Bing, Twitter, Facebook, and WordPress.com. XML sitemap created automatically.
  • \n
  • Advertise on your site to generate revenue. The ad network automatically does the work for you to find high-quality ads that are placed on your site.
  • \n
  • Manage Jetpack features from anywhere with the official WordPress mobile app, available for Apple iOS (iPhone or iPad) and Google Android.
  • \n
  • Looking for Customer Relationship Management? Check out the Jetpack CRM plugin which works alongside Jetpack to give you a simple and practical way to build relationships with your customers and leads.
  • \n
\n

EASY DESIGN TOOLS

\n

Quickly customize your site to make it stand out — no coding needed.

\n
    \n
  • Themes — Simple themes to get started or pick a professional theme to make your site stand out.
  • \n
  • Related posts — Keep visitors on your site by automatically showing them related content they will be interested in.
  • \n
  • Gallery and Slideshow tools — Image galleries, carousel slider, and slideshows for WP sites and stores.
  • \n
  • Subscriptions — Make it easy for visitors to sign up to receive notifications of your latest posts and comments.
  • \n
  • Contact form — Easily build unlimited contact forms for free without any coding. Receive email notifications for each response. Integrate with mail solutions like Creative Mail to reach your customers and leads quickly. Connect to Jetpack Anti spam (powered by Akismet) to filter submissions.
  • \n
  • oEmbed Support — easily embed images, posts, and links from Facebook and Instagram.
  • \n
\n

INTEGRATIONS

\n

Jetpack is updated monthly to ensure seamless integration with top WordPress plugins and other tech products.

\n
    \n
  • Built for WooCommerce: Jetpack and WooCommerce are both made by Automattic. Backup, Scan, Anti-spam, integrate perfectly for Woo / eComm stores
  • \n
  • Jetpack is fully compatible with v2.0 of the official AMP plugin for WordPress.
  • \n
  • Better understand your customers and marketing with Google Analytics (GA) integration
  • \n
  • Social media platforms: Instagram, Facebook, Twitter, LinkedIn
  • \n
  • Simple Blocks to customize your site: Pinterest, Whatsapp, Podcast player, GIFs, maps, tiled gallery, slideshow
  • \n
  • Payment processors: easily collect payments or donations and sell products through Stripe and PayPal
  • \n
  • Site speed and performance plugins: Works great with WP Super Cache by Automattic and Cloudflare.
  • \n
  • Contact form: Anti-spam (Powered by Akismet) blocks spam comments for Jetpack forms, Contact Form 7, Ninja Forms, Gravity Forms, Formidable Forms, and more.
  • \n
  • Other tech integrations: Instagram, Creative Mail, Mailchimp, Calendly, Whatsapp, Pinterest, Revue, and more.
  • \n
\n

EXPERT SUPPORT

\n

We have a global team of Happiness Engineers ready to provide incredible support. Ask your questions in the support forum or contact us directly.

\n

GET STARTED

\n

Installation is free, quick, and easy. Set up Jetpack in minutes. Take advantage of more robust features like WordPress site security and design and growth tools by upgrading to a paid plan.

\n","download_link":"https://downloads.wordpress.org/plugin/jetpack.10.0.zip","tags":{"backup":"backup","malware":"malware","scan":"scan","security":"security","woo":"woo"},"donate_link":"","icons":{"1x":"https://ps.w.org/jetpack/assets/icon.svg?rev=2394525","2x":"https://ps.w.org/jetpack/assets/icon-256x256.png?rev=2394525","svg":"https://ps.w.org/jetpack/assets/icon.svg?rev=2394525"},"wporg":true},{"name":"Easy Notification Bar","slug":"easy-notification-bar","version":"1.4.2","author":"WPExplorer","author_profile":"https://profiles.wordpress.org/wpexplorer","requires":"5.2.0","tested":"5.8","requires_php":"5.6.2","rating":82,"ratings":{"1":0,"2":1,"3":1,"4":1,"5":4},"num_ratings":7,"support_threads":3,"support_threads_resolved":1,"active_installs":4000,"downloaded":33875,"last_updated":"2021-08-22 1:48am GMT","added":"2019-06-20","homepage":"https://wordpress.org/plugins/easy-notification-bar/","short_description":"Easily add a custom top bar notification message to on your site with live customization options via the WordPress customizer.","description":"

Easily add a custom top bar notification message to on your site with live customization options via the WordPress customizer. The plugin allows you to enter your notification bar text as well as an optional button to display next to your text. Perfect for notifying visitors of a current sale, hot product, warnings or other important messages.

\n

The Easy Notification Bar plugin makes use of the newer “wp_body_open” action hook introduced in WordPress 5.2.0 which allows the plugin to work better with any theme that has been updated to support the tag. Contrary to other notice bar solutions which rely on absolute positioning, this plugin inserts the notice bar right after the body tag so it should display perfectly without any conflicts on any well-coded theme.

\n

By default, the notification bar is “static” which means it displays at the top of your site so when you scroll down the page it will become “hidden”. This is generally better for usability and SEO. However, in version 1.4 we added a new sticky option which you can enable in the Customizer so that the notification bar remains visible as you scroll down the page. The sticky functionality makes use of the CSS sticky property (not javascript).

\n

Although disabled by default, you can enable a close icon for your notice. When enabled, your visitors will see an “x” icon over the top bar which they can click to hide the message for their current and future sessions. This functionality makes use of localStorage (not cookies).

\n

Live Demo: You can view a live demo for the notification bar on our More Widgets Plugin Demo

\n

Features

\n
    \n
  • Sitewide (or homepage only) top notification bar.
  • \n
  • Easy setup via the WordPress customizer.
  • \n
  • Optional close icon.
  • \n
  • Optional sticky display.
  • \n
  • Custom background, color, text alignment and font size settings.
  • \n
  • Optional callout button.
  • \n
  • Responsive design so it looks good on mobile.
  • \n
  • Minimal code.
  • \n
  • Vanilla Javascript used for close icon (jQuery not needed).
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/easy-notification-bar.zip","tags":{"notice":"notice","notice-bar":"notice bar","notification":"notification","notification-bar":"notification bar","top-bar":"top bar"},"donate_link":"","icons":{"1x":"https://ps.w.org/easy-notification-bar/assets/icon-128x128.png?rev=2515988","2x":"https://ps.w.org/easy-notification-bar/assets/icon-256x256.png?rev=2515988"},"wporg":true},{"name":"Antispam Bee","slug":"antispam-bee","version":"2.10.0","author":"pluginkollektiv","author_profile":"https://profiles.wordpress.org/pluginkollektiv","requires":"4.5","tested":"5.8","requires_php":"5.2","rating":96,"ratings":{"1":7,"2":1,"3":1,"4":2,"5":175},"num_ratings":186,"support_threads":7,"support_threads_resolved":5,"active_installs":700000,"downloaded":5039538,"last_updated":"2021-07-29 11:15am GMT","added":"2009-01-10","homepage":"https://antispambee.pluginkollektiv.org/","short_description":"Antispam plugin with a sophisticated tool set for effective day to day comment and trackback spam-fighting. Build with data protection and privacy in …","description":"

Say Goodbye to comment spam on your WordPress blog or website. Antispam Bee blocks spam comments and trackbacks effectively, without captchas and without sending personal information to third party services. It is free of charge, ad-free and 100% GDPR compliant.

\n

Feature/Settings Overview

\n
    \n
  • Trust approved commenters.
  • \n
  • Trust commenters with a Gravatar.
  • \n
  • Consider the comment time.
  • \n
  • Allow comments only in a certain language.
  • \n
  • Block or allow commenters from certain countries.
  • \n
  • Treat BBCode links as spam.
  • \n
  • Validate the IP address of commenters.
  • \n
  • Use regular expressions.
  • \n
  • Search local spam database for commenters previously marked as spammers.
  • \n
  • Notify admins by e-mail about incoming spam.
  • \n
  • Delete existing spam after n days.
  • \n
  • Limit approval to comments/pings (will delete other comment types).
  • \n
  • Select spam indicators to send comments to deletion directly.
  • \n
  • Optionally exclude trackbacks and pingbacks from spam detection.
  • \n
  • Optionally spam-check comment forms on archive pages.
  • \n
  • Display spam statistics on the dashboard, including daily updates of spam detection rate and a total of blocked spam comments.
  • \n
\n

Support

\n\n

Contribute

\n
    \n
  • Active development of this plugin is handled on GitHub.
  • \n
  • Pull requests for documented bugs are highly appreciated.
  • \n
  • If you think you’ve found a bug (e.g. you’re experiencing unexpected behavior), please post at the support forums first.
  • \n
  • If you want to help us translate this plugin you can do so on WordPress Translate.
  • \n
\n

Credits

\n\n","download_link":"https://downloads.wordpress.org/plugin/antispam-bee.2.10.0.zip","tags":{"anti-spam":"anti-spam","antispam":"antispam","block-spam":"block spam","comment":"comment","comments":"comments"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=TD4AMD2D8EMZW","icons":{"1x":"https://ps.w.org/antispam-bee/assets/icon-128x128.png?rev=977629","2x":"https://ps.w.org/antispam-bee/assets/icon-256x256.png?rev=977629"},"wporg":true},{"name":"SimpleTOC – Table of Contents Block","slug":"simpletoc","version":"4.8","author":"Marc Tönsing","author_profile":"https://profiles.wordpress.org/marcdk","requires":"5.0","tested":"5.8","requires_php":false,"rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":24},"num_ratings":24,"support_threads":2,"support_threads_resolved":1,"active_installs":2000,"downloaded":20616,"last_updated":"2021-07-29 9:07pm GMT","added":"2020-04-14","homepage":"https://marc.tv/simpletoc-wordpress-inhaltsverzeichnis-plugin-gutenberg/","short_description":"Adds a custom Table of Contents Gutenberg block.","description":"

In Gutenberg, add a block and search for “SimpleTOC” or just “TOC”. You need to save your post before you add the block. It works by parsing the post content and retrieving the heading blocks and creates a new dynamic block with a list of links to the headings.

\n

Hide the headline “Table of Contents” and set a maximum display depth in the blocks’ sidebar configuration. Add the CSS class “simpletoc-hidden” to a heading block to remove that specific heading from the generated TOC.

\n

Features

\n
    \n
  • No javascript or css added.
  • \n
  • Designed for Gutenberg.
  • \n
  • Compatible with AMP plugins.
  • \n
  • Minimal and valid HTML output.
  • \n
  • Inherits the style of your theme.
  • \n
  • Support for column block layouts.
  • \n
  • Control the maximum depth of the headings.
  • \n
  • Choose between an ordered and unordered html list.
  • \n
  • SEO friendly: Disable the h2 heading of the TOC block and add your own.
  • \n
  • Comes with English, French, Spanish, German, and Brazilian Portuguese translations.
  • \n
  • Works with non-latin texts. Tested with Japanese and Arabic.
  • \n
  • Finds headlines in groups and reusable blocks. And in groups within reusable blocks.
  • \n
  • Rank Math support.
  • \n
\n

Credits

\n

This plugin is forked from https://github.com/pdewouters/gutentoc by pdewouters and uses code from https://github.com/shazahm1/Easy-Table-of-Contents by shazahm1

\n

Many thanks to Tom J Nowell https://tomjn.com and and Sally CJ who both helped me a lot with my questions over at wordpress.stackexchange.com

\n","download_link":"https://downloads.wordpress.org/plugin/simpletoc.4.8.zip","tags":{"amp":"amp","block":"block","gutenberg":"gutenberg","table-of-contents":"table of contents","toc":"toc"},"donate_link":"https://marc.tv/out/donate","icons":{"1x":"https://ps.w.org/simpletoc/assets/icon.svg?rev=2451408","2x":"https://ps.w.org/simpletoc/assets/icon-256x256.png?rev=2451408","svg":"https://ps.w.org/simpletoc/assets/icon.svg?rev=2451408"},"wporg":true},{"name":"Log in with Google","slug":"login-with-google","version":"1.2.1","author":"rtCamp","author_profile":"https://profiles.wordpress.org/rtcamp","requires":"5.4.2","tested":"5.7.2","requires_php":"7.3","rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":6},"num_ratings":6,"support_threads":5,"support_threads_resolved":2,"active_installs":300,"downloaded":2919,"last_updated":"2021-07-23 10:00pm GMT","added":"2020-10-01","homepage":"","short_description":"Minimal plugin that allows WordPress users to log in using Google.","description":"

Ultra minimal plugin to let your users login to WordPress applications using their Google accounts. No more remembering hefty passwords!

\n

Initial Setup

\n
    \n
  1. \n

    Create a project from Google Developers Console if none exists.

    \n
  2. \n
  3. \n

    Go to Credentials tab, then create credential for OAuth client.

    \n
      \n
    • Application type will be Web Application
    • \n
    • Add YOUR_DOMAIN/wp-login.php in Authorized redirect URIs
    • \n
    \n
  4. \n
  5. \n

    This will give you Client ID and Secret key.

    \n
  6. \n
  7. \n

    Input these values either in WP Admin > Settings > WP Google Login, or in wp-config.php using the following code snippet:

    \n

    `
    \ndefine( ‘WP_GOOGLE_LOGIN_CLIENT_ID’, ‘YOUR_GOOGLE_CLIENT_ID’ );
    \ndefine( ‘WP_GOOGLE_LOGIN_SECRET’, ‘YOUR_SECRET_KEY’ );
    \n“

    \n
  8. \n
\n

Browser support

\n

These browsers are supported. Note, for example, that One Tap Login is not supported in Safari.

\n

How to enable automatic user registration

\n

You can enable user registration either by
\n– Enabling Settings > WP Google Login > Enable Google Login Registration

\n

OR

\n
    \n
  • Adding
    \ndefine( 'WP_GOOGLE_LOGIN_USER_REGISTRATION', 'true' );
    \nin wp-config.php file.
  • \n
\n

Note: If the checkbox is ON then, it will register valid Google users even when WordPress default setting, under

\n

Settings > General Settings > Membership > Anyone can register checkbox

\n

is OFF.

\n

Restrict user registration to one or more domain(s)

\n

By default, when you enable user registration via constant WP_GOOGLE_LOGIN_USER_REGISTRATION or enable Settings > WP Google Login > Enable Google Login Registration, it will create a user for any Google login (including gmail.com users). If you are planning to use this plugin on a private, internal site, then you may like to restrict user registration to users under a single Google Suite organization. This configuration variable does that.

\n

Add your domain name, without any schema prefix and www, as the value of WP_GOOGLE_LOGIN_WHITELIST_DOMAINS constant or in the settings Settings > WP Google Login > Whitelisted Domains. You can whitelist multiple domains. Please separate domains with commas. See the below example to know how to do it via constants:

\n
`\n
\n

define( ‘WP_GOOGLE_LOGIN_WHITELIST_DOMAINS’, ‘example.com,sample.com’ );
\n `

\n

Note: If a user already exists, they will be allowed to login with Google regardless of whether their domain is whitelisted or not. Whitelisting will only prevent users from registering with email addresses from non-whitelisted domains.

\n

Hooks

\n

Filter wp_google_login_scopes
\nThis filter can be used to filter existing scope used in Google Sign in.
\nYou can ask for additional permission while user logs in.
\nThis filter will provide 1 parameter scopes in callback, which contains array of scopes.

\n

wp-config.php parameters list

\n
    \n
  • \n

    WP_GOOGLE_LOGIN_CLIENT_ID (string): Google client ID of your application.

    \n
  • \n
  • \n

    WP_GOOGLE_LOGIN_SECRET (string): Secret key of your application

    \n
  • \n
  • \n

    WP_GOOGLE_LOGIN_USER_REGISTRATION (boolean) (optional): Set true If you want to enable new user registration. By default, user registration defers to Settings > General Settings > Membership if constant is not set.

    \n
  • \n
  • \n

    WP_GOOGLE_LOGIN_WHITELIST_DOMAINS (string) (optional): Domain names, if you want to restrict login with your custom domain. By default, it will allow all domains. You can whitelist multiple domains.

    \n
  • \n
\n

BTW, We’re Hiring!

\n

\n","download_link":"https://downloads.wordpress.org/plugin/login-with-google.1.2.1.zip","tags":{"authentication":"authentication","google-login":"Google Login","oauth":"oauth","sign-in":"sign in","sso":"sso"},"donate_link":"https://rtcamp.com/","icons":{"1x":"https://ps.w.org/login-with-google/assets/icon-128x128.png?rev=2402713","2x":"https://ps.w.org/login-with-google/assets/icon-256x256.png?rev=2402713"},"wporg":true},{"name":"Search with Google","slug":"search-with-google","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://wordpress.org/plugins/search-with-google/","short_description":"

This plugin replaces the WordPress default search query with server-side results from Custom Search Site Restricted JSON API. 

\n","description":"\n\n\n

This plugin replaces the WordPress default search query with server-side results from Custom Search Site Restricted JSON API

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2020/11/searchWithGoogle-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2020/11/searchWithGoogle-372x209.jpg","svg":""},"wporg":false},{"name":"Page Builder Gutenberg Blocks – CoBlocks","slug":"coblocks","version":"2.16.0","author":"GoDaddy","author_profile":"https://profiles.wordpress.org/godaddy","requires":"5.0","tested":"5.8","requires_php":"5.6","rating":88,"ratings":{"1":7,"2":3,"3":4,"4":5,"5":63},"num_ratings":82,"support_threads":16,"support_threads_resolved":3,"active_installs":500000,"downloaded":5419192,"last_updated":"2021-08-12 8:29pm GMT","added":"2018-04-19","homepage":"","short_description":"CoBlocks is a suite of page builder WordPress blocks for Gutenberg, with 10+ new blocks and a true page builder experience with rows and columns.","description":"

CoBlocks is the most innovative collection of page building WordPress blocks for the new Gutenberg WordPress block editor.

\n

With additional blocks and true row and column building, CoBlocks gives you a true page builder experience for Gutenberg.

\n

CoBlocks is powerful but lightweight: it adds functionality to the WordPress editor without bloat. This is the plugin you’ve been waiting for, and it will make you rethink what WordPress is capable of.

\n

Make Beautiful Web Pages With Gutenberg & CoBlocks

\n

CoBlocks is the last page builder you’ll ever need: you get a winning mix of additional WordPress blocks, and page builder functionality. With CoBlocks you have everything you need to make beautiful web pages with the new block editor:

\n
    \n
  • Accordion Block
  • \n
  • Alert Block
  • \n
  • Author Profile Block
  • \n
  • Buttons Block
  • \n
  • Carousel Gallery Block
  • \n
  • Click to Tweet Block
  • \n
  • Collage Gallery Block
  • \n
  • Dynamic Separator Block
  • \n
  • Events Block (New!)
  • \n
  • Features Block
  • \n
  • Food & Drinks Block
  • \n
  • Form Block
  • \n
  • Gif Block
  • \n
  • GitHub Gist Block
  • \n
  • Hero Block
  • \n
  • Highlight Block
  • \n
  • Icon Block
  • \n
  • Logos & Badges Block
  • \n
  • Map Block
  • \n
  • Masonry Gallery Block
  • \n
  • Media Card Block
  • \n
  • Offset Gallery Block
  • \n
  • Post Carousel Block
  • \n
  • Posts Block
  • \n
  • Pricing Table Block
  • \n
  • Resizable Row/Columns Blocks
  • \n
  • Services Block
  • \n
  • Shape Divider Block
  • \n
  • Social Profiles Block
  • \n
  • Social Sharing Block
  • \n
  • Stacked Gallery Block
  • \n
\n

Breakthrough Page Builder System

\n

CoBlocks features an innovative block system that allows you to create stunning web pages, and even entire websites, with the new WordPress editor.

\n

You get the extra blocks you need and the layout and design functionality for a true page builder experience.

\n

Use the exceptional Row and Columns blocks to add dynamically generated content areas with specific responsive margin and padding settings that only CoBlocks provides.

\n

Style these with innovative new blocks such as the Shape Divider, which lets you split up your content with beautiful dividers.

\n

Each of the WordPress blocks within CoBlocks have been precisely fined tuned to offer a familiar, yet powerful, customization experience. Tailor each block to your taste using our custom controls and settings. Change fonts, set margin and padding, pick colors and more.

\n

Custom Typography Controls

\n

The breakthrough Typography Control Panel within CoBlocks lets you design web pages with alluring typographic elements. Set fonts, sizes, weights, transformations and more, in our CoBlocks blocks, and in core WordPress blocks.

\n

Free Companion Theme

\n

CoBlocks is built to show off the best of Gutenberg, but it requires a Gutenberg-first theme to unlock its full potential. We also created the free Go theme in the WordPress theme repository as the perfect companion for CoBlocks.

\n

Going Beyond Gutenberg Blocks

\n

The vision for CoBlocks is to create a suite of Gutenberg blocks to help folks make beautiful websites easily. These newest releases of CoBlocks is the ultimate expression of that vision.

\n

Built With Developers in Mind

\n

Extensible, adaptable, and open source — CoBlocks is created with theme and plugin developers in mind. If you’re interested to jump in the project, there are opportunities for developers at all levels to get involved. Contribute to CoBlocks on GitHub and join the party. 🎉

\n","download_link":"https://downloads.wordpress.org/plugin/coblocks.2.16.0.zip","tags":{"blocks":"blocks","gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","page-builder":"page builder","wordpress-blocks":"wordpress blocks"},"donate_link":"","icons":{"1x":"https://ps.w.org/coblocks/assets/icon-128x128.jpg?rev=2243972","2x":"https://ps.w.org/coblocks/assets/icon-256x256.jpg?rev=2243972"},"wporg":true},{"name":"Simple Author Box","slug":"simple-author-box","version":"2.42","author":"WebFactory Ltd","author_profile":"https://profiles.wordpress.org/webfactory","requires":"4.6","tested":"5.8","requires_php":"5.6","rating":88,"ratings":{"1":9,"2":0,"3":5,"4":8,"5":75},"num_ratings":97,"support_threads":12,"support_threads_resolved":12,"active_installs":50000,"downloaded":896531,"last_updated":"2021-08-13 8:08am GMT","added":"2014-08-08","homepage":"https://wpauthorbox.com/","short_description":"Add a responsive author box with social icons to any post. Great author box for…","description":"

Simple Author Box adds a responsive author box at the end of your posts, showing the author name, author gravatar and author description – author bio. It also adds over 30 social profile fields on WordPress user profile screen, allowing to display the author social icons in the author box.

\n

Main Features

\n
    \n
  • Shows author gravatar, name, website, description (author bio) and social icons
  • \n
  • Fully customizable to match your theme design (style, color, size and text options)
  • \n
  • Nice looking on desktop, laptop, tablet or mobile phones
  • \n
  • Automatically insert the author box at the end of your post
  • \n
  • Option to manually insert the author box on your template file (single.php or author.php)
  • \n
  • Simple Author Box has RTL support
  • \n
  • Simple Author Box has AMP support
  • \n
  • Great for guest posts, and guest authors
  • \n
\n

Simple Author Box Pro Features

\n
\n

Premium features only available in Simple Author Box Pro

\n
    \n
  • Change author box position to before/after content
  • \n
  • Choose whether the author’s name should link to its website/page/none
  • \n
  • Select where to show author box on
  • \n
  • Add rotate effect on author avatar hover
  • \n
  • Option to open author website link in a new tab
  • \n
  • Option to add “nofollow” attribute on author website link
  • \n
  • Choose the author website’s position: right/left
  • \n
  • Social icons type, style, rotate effect, shadow effect, thin border
  • \n
  • Option to change the color palette
  • \n
  • Choose the font and font sizes for the author’s job title, website, name, and description
  • \n
  • Enable guest authors and co-authors
  • \n
  • Option to use guest authors as co-authors
  • \n
  • Top authors widget – displays the most popular authors based of comments
  • \n
  • Simple author box widget – displays the users selected
  • \n
\n
\n

Read more about the Simple Author Box advanced features.

\n","download_link":"https://downloads.wordpress.org/plugin/simple-author-box.2.42.zip","tags":{"author-bio":"author bio","author-box":"author box","author-profile-fields":"author profile fields","author-social-icons":"author social icons","responsive-author-box":"responsive author box"},"donate_link":"","icons":{"1x":"https://ps.w.org/simple-author-box/assets/icon-128x128.jpg?rev=1821054"},"wporg":true},{"name":"Genesis Blocks","slug":"genesis-blocks","version":"1.2.5","author":"StudioPress","author_profile":"https://profiles.wordpress.org/studiopress","requires":"5.3","tested":"5.8","requires_php":"7.1","rating":90,"ratings":{"1":1,"2":0,"3":1,"4":0,"5":9},"num_ratings":11,"support_threads":12,"support_threads_resolved":4,"active_installs":30000,"downloaded":194966,"last_updated":"2021-07-20 6:30pm GMT","added":"2020-08-25","homepage":"https://studiopress.com/genesis-pro/","short_description":"A collection of content blocks, sections, & full-page layouts for the block editor.","description":"

Genesis Blocks is a collection of page building blocks for the Gutenberg block editor. Building pages with the block editor and Genesis Blocks gives you more control to quickly create and launch any kind of site you want!

\n

Installing the customizable Genesis Blocks plugin adds a collection of beautiful, site-building blocks to help you customize page layouts, increase engagement, and get results for your business. Genesis Blocks provides everything from customizable buttons, to beautifully-designed page sections and full-page layout designs via the Section & Layout block.

\n

Along with the blocks themselves, Genesis Blocks extends the content creation experience by providing a library of page sections and full-page layouts, all available from within the block editor.

\n

Create compelling content faster.

\n

Create and use content quickly with prebuilt and custom content sections and full-page layouts.

\n

Enhance the Gutenberg editor.

\n

Additional content blocks and the layout selector make it easy to get the most value out of the block-based editor.

\n

Genesis Blocks currently includes the following blocks to help you build content and pages quickly and effortlessly:

\n
    \n
  • Section & Layout Block
  • \n
  • Advanced Columns Block
  • \n
  • Newsletter Block
  • \n
  • Pricing Block
  • \n
  • Post Grid Block
  • \n
  • Container Block
  • \n
  • Testimonial Block
  • \n
  • Inline Notice Block
  • \n
  • Accordion Block
  • \n
  • Share Icons Block
  • \n
  • Call-To-Action Block
  • \n
  • Customizable Button Block
  • \n
  • Spacer & Divider Block
  • \n
  • Author Profile Block
  • \n
  • Drop Cap Block
  • \n
\n

Do more with Genesis Pro

\n

For those wanting to level-up with Genesis Blocks, a Genesis Pro subscription brings even richer tooling and a bigger library of sections and layouts.

\n
    \n
  • 2 new blocks (more coming soon)
  • \n
  • 26 pre-built full-page layouts
  • \n
  • 56 pre-built sections
  • \n
  • Save & reuse your own sections & layouts
  • \n
  • Advanced block-level user permissions
  • \n
  • Access to and support for Genesis Framework & all of our 35 StudioPress-made premium child themes.
  • \n
  • Additional advanced features for the rest of the Genesis Product Suite
  • \n
\n

Genesis Pro includes even more value for modern WordPress content creators, marketers, and developers. Learn more about Genesis Pro here.

\n

Google AMP Support

\n

The Accelerated Mobile Pages (AMP) project is a publishing format created by Google to enhance site performance for mobile website users. AMP pages are specially designed for Google search users to quickly load website pages without using any extraneous data. Genesis Blocks has support for AMP built into each block!

\n

Help & Docs

\n

User and developer docs for Genesis Blocks can be found here.

\n","download_link":"https://downloads.wordpress.org/plugin/genesis-blocks.1.2.5.zip","tags":{"blocks":"blocks","editor":"editor","gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","page-builder":"page builder"},"donate_link":"https://studiopress.com","icons":{"1x":"https://ps.w.org/genesis-blocks/assets/icon-128x128.png?rev=2368839","2x":"https://ps.w.org/genesis-blocks/assets/icon-256x256.png?rev=2368840"},"wporg":true},{"name":"MathML Block","slug":"mathml-block","version":"1.2.0","author":"adamsilverstein","author_profile":"https://profiles.wordpress.org/adamsilverstein","requires":"5.0","tested":"5.5.5","requires_php":"5.6","rating":90,"ratings":{"1":0,"2":0,"3":0,"4":1,"5":1},"num_ratings":2,"support_threads":1,"support_threads_resolved":0,"active_installs":500,"downloaded":7384,"last_updated":"2020-10-01 11:05pm GMT","added":"2018-12-28","homepage":"","short_description":"A MathML block for the WordPress block editor (Gutenberg).","description":"

A MathML block for the WordPress block editor (Gutenberg).
\nRequires PHP 5.4+ and WordPress 5.0+.

\n

Development takes place on the GitHub repository: https://github.com/adamsilverstein/mathml-block.

\n

Screencast: https://cl.ly/c0f6bbfbc3b1

\n

What is MathML?

\n

Mathematical Markup Language is a mathematical markup language, an application of XML for describing mathematical notations and capturing both its structure and content. It aims at integrating mathematical formulae into World Wide Web pages and other documents.

\n

The MathML block uses MathJax to render MathML formulas in the editor and on the front end of a website. MathJax (https://www.mathjax.org/) is A JavaScript display engine for mathematics that works in all browsers.

\n

To test a MathML block and enter a formula, for example: \\[x = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}\\].

\n

To test using math formulas inline, type an formula into a block of text, select it and hit the ‘M’ icon in the control bar. For example: \\( \\cos(θ+φ)=\\cos(θ)\\cos(φ)−\\sin(θ)\\sin(φ) \\). Note: if you are copying and pasting formulas into the rich text editor, switching to HTML/code editor mode is less likely to reformat your pasted formula.

\n

This plugin is compatible with the official AMP plugin by rendering amp-mathml on AMP pages.

\n

Technical Notes

\n
    \n
  • Requires PHP 5.6+.
  • \n
  • Requires WordPress 5.0+.
  • \n
  • Issues and Pull requests welcome on the GitHub repository: https://github.com/adamsilverstein/mathml-block.
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/mathml-block.zip","tags":{"block":"block","block-editor":"block-editor","gutenberg":"gutenberg","math":"math","mathml":"mathml"},"donate_link":"","icons":{"1x":"https://ps.w.org/mathml-block/assets/icon-128x128.png?rev=2002452","2x":"https://ps.w.org/mathml-block/assets/icon-256x256.png?rev=2002452"},"wporg":true},{"name":"Calculated Fields Form","slug":"calculated-fields-form","version":"1.1.14","author":"CodePeople","author_profile":"https://profiles.wordpress.org/codepeople","requires":"3.0.5","tested":"5.8","requires_php":false,"rating":96,"ratings":{"1":20,"2":2,"3":4,"4":26,"5":675},"num_ratings":727,"support_threads":100,"support_threads_resolved":99,"active_installs":60000,"downloaded":3469627,"last_updated":"2021-08-31 10:52pm GMT","added":"2013-03-12","homepage":"https://cff.dwbooster.com","short_description":"Calculated Fields Form allows you to create both simple and rich forms, quickly like a…","description":"

The “Calculated Fields Form” plugin allows you to create web forms with calculated fields, whose values are dynamically calculated based on other fields’ values in the web form.

\n

The possibilities are unlimited. For example, you can create forms with financial calculations, date operations to create reservation forms, and calculate the product prices. The plugin includes text operations for editing, translation, or advertising services. There are more advanced operations available such as determining the distance between addresses or generating graphs. The resulting forms are 100% mobile responsive.

\n

The most impressive thing is that you don’t need to hire a programmer to create the forms. With basic knowledge, you will have a professional form in just five minutes.

\n

Creating a form is all visual. The “Calculated Fields Form” plugin includes a form editor with multiple controls. Such as text fields, numeric fields, currency fields, slider controls, email fields, radio buttons, checkboxes, container fields, page breaks to create multipage forms, and most importantly, calculated fields.

\n

The form editor includes a list of controls, a property bar to easily edit field properties, a dashboard where you can design your forms, and the attributes for form configuration. Also, the plugin comes with multiple predefined layouts to change the forms’ appearance. If there are not enough predefined layouts for your project, there is a style editor to customize the form’s design.

\n

The “Calculated Fields Form” plugin includes integration with popular page builders:

\n
    \n
  • Classic WordPress Editor
  • \n
  • Gutenberg Editor
  • \n
  • Elementor
  • \n
  • Page Builder by SiteOrigin
  • \n
  • Beaver Builder
  • \n
  • WPBakery Page Builder
  • \n
  • DIVI Builder
  • \n
\n

For other editors, it is possible to insert the form into the pages via its shortcode. Each web form has an associated shortcode that allows you to insert it wherever you want.

\n

Features

\n

Main features:

\n
    \n
  • Visual form builder with an intuitive and interactive interface.
  • \n
  • Includes general-purpose controls such as radio buttons, checkboxes, menu lists, date fields, slider controls, numeric fields, text currency fields, etc.
  • \n
  • Includes calculated fields whose values result from operations involving other form fields.
    \nInsert as many calculated fields in the form as you need.
  • \n
  • Contains an advanced formula editor associated with the calculated fields with syntax highlighting and error detection.
  • \n
  • Features many operations modules: mathematical operations, operations with dates, financial operations, distance operations, text management, operations for calling remote services, etc. The calculated fields can identify numbers and prices within the values of the fields.
  • \n
  • Distributed with several predefined forms that you can use as a starting point for your projects.
  • \n
  • Includes several design templates.
  • \n
  • Supports multi-pages forms by inserting page break controls between fields belonging to different pages.
  • \n
  • Allows the grouping of fields inside container controls (Div and Fieldset).
  • \n
  • Possible to define dependency rules between fields in the form, which is very useful in the design of wizards.
  • \n
\n

Other features:

\n
    \n
  • From the plugin configuration page, it is possible to duplicate a form by pressing the “Clone” button associated with it. By cloning a form, you can reuse the work already done.
  • \n
  • Includes a troubleshooting and optimization area.
  • \n
  • Allows you to disable forms in the indexing process to improve the speed of the website.
  • \n
  • Includes a version control in the forms to recover previous versions.
  • \n
\n

Predefined forms:

\n

“Calculated Fields Form” is distributed with five predefined sample forms.

\n
    \n
  1. Simple Calculator Operations
  2. \n
  3. Calculation with Dates (bookings with check-in and check-out dates)
  4. \n
  5. Ideal Weight Calculator
  6. \n
  7. Pregnancy Calculator
  8. \n
  9. Lease Calculator
  10. \n
\n

You can clone a sample form to implement your project, or create a new form from scratch.

\n
\n

Calculated Fields Form Commercial
\n The free version of the “Calculated Fields Form” plugin includes only basic functionality. Other distributions (Professional, Developer, and Platinum) are available with advanced functionalities, such as sending notification emails, integration with payment gateways and external services, controls for database’s connection (and connection to other data sources), complex operations, and many other features.

\n
\n

Features of the Profesional version:

\n
    \n
  • Includes all the features of the free version of the plugin.
  • \n
  • Submit the data collected by the forms and store it on the website for review.
  • \n
  • Send notification emails with the data collected by the form, as well as confirmation emails to the users.
  • \n
  • Integrate the form with PayPal and calculate the amount to be charged through a calculated field.
    \nPayments allow SCA (strong customer authentication), compatible with the new payment services (PSD 2) – Directive (EU).
  • \n
  • Export and import forms between different WordPress sites.
  • \n
  • Different mechanisms to protect forms, such as captcha, WordPress nonces, and honeypot fields.
  • \n
  • Associate “Thank You” page with the form, where you can show a summary of the form’s submission.
  • \n
  • Dashboard widget to show the last week’s submissions.
  • \n
  • Cache the forms to increase the rendering speed.
  • \n
  • Export the information submitted by the forms to a CSV file and use it with third-party tools such as Excel, OpenOffice, LibreOffice, or any other spreadsheet editor.
  • \n
\n

Features of the Developer version:

\n\n

Includes add-ons to extend the form features and make use of third-party plugins and external services

\n
    \n
  • Server-Side Equations add-on: define server-side equations.
  • \n
  • Verification Code add-on: verifies the user’s email by sending him a verification code and blocking the form’s submission until the verification code is entered.
  • \n
  • WooCommerce add-on: integrate forms with WooCommerce products and calculate their prices, dimensions, and weight at the runtime.
  • \n
  • SalesForce add-on: integrate the form with the SalesForce service.
  • \n
  • WebHooks add-on: send the information collected by the form to a WebHook URL to open countless possibilities. By connecting your form to services such as Zapier, Microsoft Flow, IFTTT, Workato, and others, you can connect to hundreds of third-party services (e.g. Zoho CRM, Dropbox, Mailchimp, Google Drive, Facebook, Twitter, etc.).
  • \n
  • User Permissions add-on: control the forms’ access, as well as allowing users to access and edit their data.
  • \n
  • User Registration Form add-on: build a user registration form that captures the user’s basic information and metadata.
  • \n
  • reCAPTCHA add-on: replace the basic captcha with Google reCAPTCHA to protect the forms.
  • \n
\n

Features of the Platinum version:

\n
    \n
  • Includes all the features of free, Professional, and Developer versions of the plugin.
  • \n
  • Unique Fields Values add-on: verifies that the values entered by users have not been used in previous submissions.
  • \n
  • Easy Digital Downloads add-on: integrate the forms into Easy Digital Downloads products and calculate their prices at the runtime.
  • \n
  • Google Analytics add-on: generate usage reports in “Google Analytics” for the users’ actions.
  • \n
  • PayPal Pro add-on: enable the payer’s credit card details to be entered directly through the website without any redirection to the PayPal website.
  • \n
  • Upload Files add-on: add uploaded files to the media library and extend the file types accepted by WordPress.
  • \n
  • DropBox Integration add-on: copy or move the uploaded files to a DropBox account.
  • \n
  • ip2location add-on: identify the users’ data using the ip2location databases.
  • \n
  • Google Places add-on: transform form fields into autocomplete address fields.
  • \n
  • Autocomplete Places add-on: transform form fields into autocomplete address fields by using the Photon API.
  • \n
  • Signature add-on: convert form fields into “Signature” fields, allowing the users to sign the form with a mouse or touchscreen.
  • \n
  • iCal add-on: send iCal file in the notification emails to import the events into most popular calendars like Outlook and Google Calendar.
  • \n
  • CSV Generator add-on: export the information collected by the form to CSV files and attach these to the notification emails.
  • \n
  • PDF Generator add-on: generate PDF files with the information collected by the forms and attach them to the notification emails.
  • \n
  • WebMerge add-on: integrate the forms with FormStack documents (formerly WebMerge) to generate PDF and Office documents at runtime with the information collected by the web forms.
  • \n
  • PrintFriendly add-on: generate PDF files with the PrintFriendly API and attach the resulting files to the notification emails.
  • \n
  • Mailchimp add-on: add new members to the MailChimp account.
  • \n
  • Mautic add-on: add new contacts (or update existing ones) into the Mautic Service.
  • \n
  • HubSpot add-on: add/update contacts in HubSpot, using the information collected by the form.
  • \n
  • Emma add-on: add new members to the Emma service.
  • \n
  • Twilio add-on: send notification messages (SMS) in the forms’ submissions.
  • \n
  • MailPoet add-on: add new subscribers to MailPoet’s Mailing Lists (MailPoet versions 2 and 3).
  • \n
  • AffiliateWP add-on: integrate the forms with the AffiliateWP plugin.
  • \n
  • Authorize.Net add-on: accept payments via Authorize.Net from the form.
  • \n
  • Stripe add-on: accept payments via the Stripe payment gateway from the form.
  • \n
  • Skrill Payments Integration add-on: integrate with the Skrill Moneybookers payment gateway.
  • \n
  • TargetPay (iDeal) add-on add-on: integrate with iDeal, the popular Dutch payment method.
  • \n
  • Mollie (iDeal) add-on: accept payments via iDeal.
  • \n
  • RedSys / Servired / Sermepa add-on provides: a secure interface for accepting credit card payments from most banks in Spain.
  • \n
  • PayTM add-on: a secure interface for accepting payments with credit cards, debit cards, net banking, wallets, and EMI.
  • \n
  • SagePay add-on: a secure interface for accepting payments via SagePay.
  • \n
  • Sage Payment add-on: a secure interface for accepting payments through a secure SSL checkout system for both bankcard and virtual check transactions.
  • \n
\n

Please keep the plugin updated. Updates contain bug fixes as well as new features. The WordPress directory distributes the updates for the free version of the plugin. But for commercial versions, it would be necessary to register your copy of the plugin. The following link describes the registration process: CLICK HEREThis section mainly contains notes on features of the form builder that are too detailed to include in the main description.

\n

Conditional rules

\n

It is possible to show or hide form fields (dependent fields) based on the options selected in checkbox fields, radio buttons, the options selected in dropdown menus, or the result of calculated fields.

\n

The value of a dependent field is zero when it is hidden/disabled. The plugin excludes the disabled form fields from the submission.

\n

Additional details about the use of dependencies

\n

Predefined values

\n

The predefined values in the fields have two possible uses:

\n

1- To fill the field by default. This makes it easier for the end-user to enter values.

\n

2- Hint of the values to be entered in the field (like “Enter your name”). To use the predefined value as a placeholder, you must tick the “Hide predefined value on click” checkbox. The value will disappear once the user starts filling in the field. The calculated fields’ equations ignore placeholders.

\n

The “User Instructions” attribute

\n

The “User instructions” attribute in the field settings allows you to instruct the user on how to fill in the field. By default, the instructions appear as smaller text on the public website. But they can be configured as tooltips.

\n

Adding CSS layout keywords

\n

The “Add CSS layout keywords” attribute in the fields settings allows you to apply CSS styles to fields. You must only enter the name of the CSS class names, and not their definitions.

\n

You can define the CSS classes via the “Customize Form Design” attribute in the “Form Settings” tab. This attribute contains a CSS editor with syntax highlighting and error checking.

\n

If you want to assign several class names to the field, separate them by space characters.

\n

The plugin includes multiple predefined classes that you can assign to the form fields.

\n

More information about the form’s design can be found by reading the following post in the plugin’s blog:

\n

Customizing the form’s design

\n

The classes listed below allow you to align two, three, or four fields on the same line:

\n
column2\ncolumn3\ncolumn4\n
\n

For example, if you want to put two fields on the same line, give both fields the class name “column2”.

\n

There are other variants for displaying several fields on the same line, such as container fields (Div or Fieldset). Container fields allow you to select the number of columns in your configuration. The following post describes all the alternatives for positioning the fields in the form:

\n

Formatting the form (distributing the fields in columns)

\n

Multi-page form

\n

To create multi-page forms, you must insert “Page break” controls between fields belonging to different pages.

\n

When the user presses the “Next Page” button, the plugin validates the fields in the current form. If there is any validation error (such as an unfilled required field), the plugin stops the “Next page” action.

\n

Hidden calculated fields

\n

Calculated fields include a checkbox in the configuration that allows them to be hidden from the public website. This feature is essential in those fields that are used to calculate intermediate values or when we want to show the results only in emails or thank you pages.

\n

Equation / Formula format for calculated fields

\n

Below, some possible formulas are included as examples, but the possibilities are endless.

\n
    \n
  • \n

    With simple mathematical operations:

    \n
    fieldname1 + fieldname2\n\nfieldname1 * fieldname2\n\nfieldname1 / fieldname2\n\nfieldname1 - fieldname2\n\nfieldname1 - fieldname2\n
    \n
  • \n
  • \n

    With mathematical operations involving multiple fields and grouped fields:

    \n
    fieldname1 * (fieldname2 + fieldname3)\n
    \n
  • \n
  • \n

    With rounding operations. Round the result to two decimal places:

    \n
    PREC(fieldname2 / fieldname3, 2)\n
    \n
  • \n
  • \n

    There are infinite number of formulas that can be created using complex structures. For example, the following formula includes conditional statements:

    \n
    (function () {\nif (100 < fieldname3) return fieldname1 + fieldname2;\nif (fieldname3 <= 100) return fieldname1 * fieldname2;\n})();\n
    \n
  • \n
  • \n

    For complex formulas/equations you must use the function format with return statement to return the result to the calculated field:

    \n
     (function () {\n    var result = 0;\n    /* Your code here */\n    return result;\n}) ();\n
    \n
  • \n
\n

Operations and operators to use in equations/formulas

\n

One of the “Calculated Fields Form” strengths is the ability to use any valid JavaScript code to implement the equations/formulas.

\n

However, the plugin includes a wide variety of operations and operators to simplify the development process.

\n

Mathematical Operations and Operators

\n

Conditional Operations

\n

Field Handling Operations

\n

Operations for interacting with external services

\n

Operations for handling URLs and query strings

\n

In addition to the operation modules listed above, the Developer and Platinum versions of the plugin include additional modules:

\n

Date Time Operations

\n

Financial Operations

\n

Distance and Travel Time Operations

\n

Operations to generate charts

\n

Controls available in the form generator of the “Calculated Fields Form”

\n

The complete list of controls is available from this link: CLICK HERE

\n

Create JavaScript variables from parameters received by “GET” or “POST”, “SESSION” variables, or “COOKIES” to use in the equations

\n

The plugin includes the shortcode [CP_CALCULATED_FIELDS_VAR] to generate JavaScript variables from parameters received by “GET” or “POST”, “SESSION” variables, or “COOKIES”:

\n
[CP_CALCULATED_FIELDS_VAR name=\"...\"]\n
\n

In the shortcode, you must replace the “…” symbols with the name of the parameter or variable. It will be the same name for the JavaScript variable.

\n

For example:

\n
[CP_CALCULATED_FIELDS_VAR name=\"varname\"]\n
\n

You can use the variables generated through the shortcode [CP_CALCULATED_FIELDS_VAR] in the formulas of the calculated fields: fieldname1*varname

\n

The complete list of parameters accepted by the variables shortcode is available at the following link: CLICK HERE

\n

Tips for calculating prices

\n

One of the most frequent uses of our plugin is for price calculation. When displaying the price of a product, you may want to split the form into two pages. The first page would request the information needed to calculate the price, and the second page would include the calculated field with the final price. Also, you could use the “Instruct. Text” fields to indicate the terms, conditions, and validity period of the offer.

\n

Note that you can make the “Instruct. Text” fields dependent on the calculated value. This allows you to vary the text displayed to the user depending on the calculated price, as the terms, conditions, or offers often depend on the transaction amount.

\n

Add-ons

\n

The add-ons are only distributed with the Developer and Platinum versions of the plugin.

\n

The plugin lists the add ons in the “Add-ons area” of the settings page. To enable the add-ons, you must tick their corresponding checkbox and press the “Activate/Deactivate Add-ons” button.

\n

Server-Side Equations add-on – included in the Developer and Platinum versions of the plugin

\n

Define equations with PHP code on the server-side. The calculated fields call the server-side equations via AJAX.

\n

CLICK HERE for additional information

\n

Verification Code add-on – included in the Developer and Platinum versions of the plugin

\n

The “Verification Code” add-on allows verifying the users’ emails by sending a verification code and blocking the form’s submission until a valid code is entered.

\n

CLICK HERE for additional information

\n

Unique Fields Values add-on – included in the Platinum version of the plugin

\n

The “Unique Fields Values” add-on verifies that the values entered by users have not been used in previous submissions. It allows to enter simple and complex verification rules (one or multiple fields separated by comma symbols).

\n

CLICK HERE for additional information

\n

WooCommerce add-on – included in the Developer and Platinum versions of the plugin

\n

Integrate the forms created by the “Calculated Fields Form” with WooCommerce products and calculate their prices, weights, dimensions, and more at the runtime.

\n

CLICK HERE for additional information

\n

Easy Digital Downloads add-on – included in the Platinum version of the plugin

\n

Integrate forms created by the “Calculated Fields Form” with the Easy Digital Downloads products, and calculate their price dynamically at the runtime.

\n

CLICK HERE for additional information

\n

SalesForce add-on – included in the Developer and Platinum versions of the plugin

\n

Add new leads to a SalesForce account using the data collected by the forms.

\n

CLICK HERE for additional information

\n

WebHook add-on – included in the Developer and Platinum versions of the plugin

\n

Post the information collected by the forms to WebHook URLs.

\n

Through connecting the forms created by the plugin with services like Zapier, Microsoft Flow, Workato, or IFTTT (and many others), you will have access to hundreds of third-party services, like Zoho CRM, Dropbox, Mailchimp, Evernote, Google Drive, Facebook, Twitter, and more than 300 services https://zapier.com/zapbook/apps/, https://flow.microsoft.com/, https://ifttt.com/discover

\n

CLICK HERE for additional information

\n

User Permissions add-on – included in the Developer and Platinum versions of the plugin

\n

Control access to forms. Access can be restricted to registered users, users with certain roles, or to specific users.

\n

The add-on adds a new shortcode to the plugin to list the data submitted by the logged-in user (it is possible to insert the new shortcode into the user’s profile) and assign user permissions to edit their information or delete an entry.

\n

Limit the number of submissions (e.g. one submission per form/user).

\n

CLICK HERE for additional information

\n

User Registration Form add-on – included in the Developer and Platinum versions of the plugin

\n

Build user registration forms. The form can collect basic user information and metadata required by other plugins.

\n

CLICK HERE for additional information

\n

reCAPTCHA add-on – included in the Developer and Platinum versions of the plugin

\n

Protect forms using Google reCAPTCHA instead of the basic captcha distributed with the plugin, as reCAPTCHA is more visual and intuitive than traditional captchas.

\n

CLICK HERE for additional information

\n

Google Analytics add-on – included in the Platinum version of the plugin

\n

Generate usage reports in “Google Analytics” for the users’ actions.

\n

CLICK HERE for additional information

\n

PayPal Pro add-on – included in the Platinum version of the plugin

\n

Allow the user to enter their credit card details directly on your website without redirecting them to the PayPal website. Once the user has filled the form fields and clicked the submit button, the payment is processed and the posted data (excluding the credit card information) is stored in the WordPress database.

\n

CLICK HERE for additional information

\n

Upload Files add-on – included in the Platinum version of the plugin

\n

Every commercial version of the plugin includes the “Upload File” control to upload files from the form. However, the “Upload Files” add-on allows the uploaded files to be added to the Media Library and be accessed from the pages and posts of the website.

\n

WordPress restricts the file types that can be uploaded. The “Uploads Files” add-on allows the list of accepted files to be extended.

\n

CLICK HERE for additional information

\n

DropBox Integration add-on – included in the Platinum version of the plugin

\n

Copy or move files uploaded through the forms to a DropBox account.

\n

CLICK HERE for additional information

\n

ip2location add-on – included in the Platinum version of the plugin

\n

Use the ip2location databases to identify additional user information based on their IP. Address such as country, city, coordinates, weather station, time zone, ZIP code, etc.

\n

CLICK HERE for additional information

\n

Google Places add-on – included in the Platinum version of the plugin

\n

Transform fields into autocomplete address fields calling the Google Places API.

\n

CLICK HERE for additional information

\n

Autocomplete Places add-on – included in the Platinum version of the plugin

\n

Transform fields into autocomplete address fields by calling the Photon API.

\n

CLICK HERE for additional information

\n

Signature add-on – included in the Platinum version of the plugin

\n

Transform fields into “Signature” fields to allow the users to sign the form with their mouse or touchscreens.

\n

CLICK HERE for additional information

\n

iCal add-on – included in the Platinum version of the plugin

\n

Send the users iCal files attached to the confirmation emails to import events into the most popular calendars like Outlook and Google Calendar.

\n

CLICK HERE for additional information

\n

CSV Generator add-on – included in the Platinum version of the plugin

\n

Export the information collected by the form to CSV files and attach them to the notification emails.

\n

CLICK HERE for additional information

\n

PDF Generator add-on – included in the Platinum version of the plugin

\n

An experimental add-on that generates PDF files with the information collected by the forms and attaches them to the notification emails.

\n

CLICK HERE for additional information

\n

WebMerge add-on – included in the Platinum version of the plugin

\n

Integrate the forms with the FormStack Documents service (formerly WebMerge) to generate PDF and Office documents with the information collected from the form.

\n

CLICK HERE for additional information

\n

Integrate the form with the Silverpop service (now: IBM Watson Campaign Automation) CLICK HERE for additional information

\n

PrintFriendly add-on – included in the Platinum version of the plugin

\n

Send the information collected by the forms to PrintFriendly and attach the resulting PDF files to the notification emails.

\n

CLICK HERE for additional information

\n

Mailchimp add-on – included in the Platinum version of the plugin

\n

Add new members to the MailChimp lists with the information collected by the form.

\n

CLICK HERE for additional information

\n

Mautic add-on – included in the Platinum version of the plugin

\n

Add/update contacts in the Mautic service with information collected by the forms.

\n

CLICK HERE for additional information

\n

HubSpot add-on – included in the Platinum version of the plugin

\n

Add/update HubSpot contacts with information collected by the forms.

\n

CLICK HERE for additional information

\n

Emma add-on – included in the Platinum version of the plugin

\n

Connect the forms to the Emma service to add new members to Emma groups.

\n

CLICK HERE for additional information

\n

Twilio add-on – included in the Platinum version of the plugin

\n

Send notification messages (SMS) through Twilio in the form’s submissions.

\n

CLICK HERE for additional information

\n

MailPoet add-on – included in the Platinum version of the plugin

\n

Adds subscribers to MailPoet Mailing Lists (MailPoet versions 2 and 3).

\n

CLICK HERE for additional information

\n

AffiliateWP add-on – included in the Platinum version of the plugin

\n

Integrate the forms with the “AffiliateWP” plugin.

\n

CLICK HERE for additional information

\n

Authorize.Net add-on – included in the Platinum version of the plugin

\n

The Authorize.net Server Integration Method (Authorize.net SIM) is a hosted payment processing solution that handles all of the steps in processing a transaction.

\n

CLICK HERE for additional information

\n

Stripe add-on – included in the Platinum version of the plugin

\n

The Stripe Payments add-on (www.stripe.com) provides a way to accept all major cards from customers around the world.

\n

CLICK HERE for additional information

\n

Skrill Payments Integration add-on – included in the Platinum version of the plugin

\n

An interface for accepting payments through secure pages.

\n

You can accept cards, more than 20 local payment methods, and over 80 direct bank transfer connections with a single integration.

\n

CLICK HERE for additional information

\n

TargetPay (iDeal) add-on – included in the Platinum version of the plugin

\n

Integrate with iDeal, the most popular Dutch payment method. The integration is made via TargetPay: https://www.targetpay.com/info/ideal?setlang=en

\n

CLICK HERE for additional information

\n

Mollie (iDeal) add-on – included in the Platinum version of the plugin

\n

Integrate with iDeal, the popular Dutch payment method.

\n

CLICK HERE for additional information

\n

RedSys / Servired / Sermepa add-on – included in the Platinum version of the plugin

\n

A secure interface for accepting credit card payments through most banks in Spain (Sabadell, Banco Popular, BBVA, Santander, Bankia-Caixa, Bankinter, etc.)

\n

CLICK HERE for additional information

\n

PayTM add-on – included in the Platinum version of the plugin

\n

A secure interface for accepting payments through credit cards, debit cards, net banking, wallets, and EMI. With over 100 million PayTM users in India, your customers will appreciate the option to pay with their trusted PayTM Wallet.

\n

CLICK HERE for additional information

\n

SagePay add-on – included in the Platinum version of the plugin

\n

A secure interface for accepting payments through SagePay.

\n

CLICK HERE for additional information

\n

Sage Payment add-on – included in the Platinum version of the plugin

\n

An interface for accepting payments through a secure SSL-checkout system for both bank cards and virtual check transactions. All authorized and approved transactions will be delivered to your current bank card and/or virtual check batches, viewable within the Virtual Terminal for order processing and settlement.

\n

CLICK HERE for additional information

\n","download_link":"https://downloads.wordpress.org/plugin/calculated-fields-form.zip","tags":{"calculator":"calculator","contact-form":"contact form","form":"form","form-builder":"form builder","quote-form":"quote form"},"donate_link":"http://cff.dwbooster.com","icons":{"1x":"https://ps.w.org/calculated-fields-form/assets/icon-128x128.jpg?rev=1734377","2x":"https://ps.w.org/calculated-fields-form/assets/icon-256x256.jpg?rev=1734377"},"wporg":true},{"name":"All in One SEO – Best WordPress SEO Plugin – Easily Improve SEO Rankings & Increase Traffic","slug":"all-in-one-seo-pack","version":"4.1.3.3","author":"All in One SEO Team","author_profile":"https://profiles.wordpress.org/smub","requires":"4.9","tested":"5.8","requires_php":"5.4","rating":90,"ratings":{"1":163,"2":21,"3":15,"4":58,"5":1495},"num_ratings":1752,"support_threads":113,"support_threads_resolved":105,"active_installs":2000000,"downloaded":82947899,"last_updated":"2021-08-16 1:02pm GMT","added":"2007-03-30","homepage":"https://aioseo.com/","short_description":"The original WordPress SEO plugin. Improve your WordPress SEO rankings and traffic with our comprehensive SEO tools and smart SEO optimizations.","description":"

AIOSEO – The Best WordPress SEO Plugin & Toolkit

\n

All in One SEO for WordPress is the original WordPress SEO plugin started in 2007. Over 2 million smart website owners use AIOSEO to properly setup WordPress SEO, so their websites can rank higher in search engines.

\n

We believe you shouldn’t have to hire an SEO expert or developer to properly setup WordPress SEO. That’s why we built AIOSEO as the most comprehensive WordPress SEO plugin and marketing toolkit, so you can improve your website’s SEO rankings and uncover new SEO growth opportunities in less than 10 minutes.

\n

At All in One SEO (AIOSEO), user experience is our #1 priority. From website SEO setup to ongoing SEO optimization, our team of SEO experts have created easy to follow SEO workflows that will help you outrank your competitors in search results. This is why many industry leaders award AIOSEO as the most beginner friendly WordPress SEO plugin that’s both EASY and POWERFUL!

\n

AIOSEO’s WordPress SEO plugin features are highly optimized for Google and other popular search engine algorithm because we follow the most up to date SEO standards and SEO best practices. We can honestly say that AIOSEO is the best WordPress SEO plugin in the world.

\n
\n

AIOSEO Pro
\n This plugin is the lite version of the All in One WordPress SEO Pro plugin that comes with all the SEO features you will ever need to rank higher in search engines including smart SEO schema markup, advanced SEO modules, powerful SEO sitemap suite, local SEO module, Google AMP SEO, WooCommerce SEO, and tons more. Click here to purchase the best premium WordPress SEO plugin now!

\n
\n

We took the pain out of optimizing WordPress SEO and made it easy. Here’s why smart business owners, SEO experts, marketers, and developers love AIOSEO, and you will too!

\n

\n

Properly Setup WordPress SEO (without Hiring an Expert)

\n

AIOSEO makes it easy to setup WordPress SEO, the RIGHT WAY. Our smart WordPress SEO setup wizard helps you optimize your website’s SEO settings based on your unique industry needs.

\n

In less than 10 minutes, you will be able to setup all the advanced WordPress SEO features like XML sitemaps, optimized search appearance, SEO meta title, SEO meta description, SEO keywords, Open Graph SEO Knowledge Panel information, social media integration, SEO search console / webmaster tool connections, local SEO, schema markup for SEO, and more.

\n

But don’t just take our word. See what another website owner like yourself is saying:

\n
\n

Swift, honest, full control. After all these years and having used almost every WP SEO plugin I’m amazed by AIOSEO’s depth, simplicity and fast workflow ❤️
\n @aaronbol

\n
\n

Optimize Your Pages for Higher SEO Rankings with TruSEO Analysis

\n

Creating SEO optimized content used to be hard. Why?

\n

Because most business owners aren’t SEO experts.

\n

That’s why we created the TruSEO score. This gives you a more in-depth SEO optimization analysis and an actionable SEO checklist, so you can easily optimize your website pages for any keyword to get higher SEO rankings and maximum traffic.

\n

Our SEO content analysis tool is enabled by default in both the Gutenberg block editor and Classic Editor, so you can quickly optimize your blog posts and pages for your SEO keywords to get higher SEO rankings.

\n

Our SEO readability analysis gives you further insights on how to improve your content for maximum SEO benefits.

\n

The best part about TruSEO analysis is that you can use it to optimize your posts / pages for unlimited SEO keywords.

\n

Seamless SEO Integrations with Webmaster Tools & Social Media

\n

All in One SEO for WordPress offers seamless integration with popular social media platforms like Facebook, Twitter, Pinterest, YouTube, LinkedIn, Instagram, and more.

\n

This ensures that your website preview is optimized for both search engines (SEO), and social media networks.

\n

AIOSEO also makes it easy to connect your website with Google Search Console, Bing webmaster tools, Yandex webmaster tools, Baidu webmaster tools, Google Analytics, and all other SEO webmaster tools.

\n

This helps you easily measure your SEO results and progress.

\n
\n

I’m a professional SEO and used many tools and extensions. Regarding simplicity, individuality and configurability All in One SEO Pro is by far the best SEO plugin out there for WordPress.
\n Joel Steinmann

\n
\n

Smart XML Sitemaps and Rich Snippets (SEO Schema Markup)

\n

Proper website SEO markup plays an important role in improving SEO rankings. That’s why smart SEO experts use AIOSEO for on-page SEO optimization.

\n

Aside from the comprehensive WordPress XML sitemap feature, we also offer News SEO sitemap and Video SEO sitemap to help you improve your website’s SEO ranking and get more traffic.

\n

AIOSEO comes with built-in smart SEO schema markup feature to help you get more traffic through SEO rich snippets, Google featured snippets, breadcrumb site links in SEO, and image SEO search results.

\n
\n

The best SEO plugin. All in One SEO is the best SEO Plugin. I personally find it better than Yoast. This plugin offers so much freedom in configuration.
\n hanapupu

\n
\n

Local SEO, WooCommerce SEO, Google AMP, and More

\n

All in One SEO is the most comprehensive WordPress SEO plugin / marketing toolkit in the world.

\n

We offer complete support for Google Knowledge Graph and Schema.org markup for local businesses. You can add multiple business locations, opening hours, contact info (business email, business phone, business address, etc) and more with our Local SEO module.

\n

AIOSEO also makes WooCommerce SEO easy. With our SEO plugin, you can optimize your product pages and product categories for better SEO rankings (with just a few clicks).

\n

Since AIOSEO is the original WordPress SEO plugin, we have SEO integrations with all popular WordPress plugins such as membership plugin SEO, landing page plugin SEO, Semrush SEO integration, etc. AIOSEO also offers Google AMP integration and works seamlessly with all popular speed & caching plugins.

\n
\n

Best SEO Plugin for WordPress. We continue to use All in One SEO on all our WordPress sites and Clients sites, and we recommend it too all other clients.
\n MySEOGuy

\n
\n

Since SEO is an essential feature, AIOSEO is a must have plugin for every website!

\n

SEO Redirection Manager and 404 Monitoring

\n

AIOSEO Redirection manager helps you set up proper 301 redirects to improve your SEO rankings.

\n

We also support other advanced SEO redirects including 302 redirects, 307 redirects, 410 redirection, 404 redirects, REGEX redirects for advanced SEO needs, and more.

\n

We have an automatic 404 error monitor that helps you track and redirect 404 errors, so you can prevent losing SEO rankings.

\n

Since redirect speed is important for SEO, we built in both Apache / NGINX server level redirects to help you get maximum SEO benefit.

\n

Full All in One SEO Feature List

\n
    \n
  • WordPress SEO Setup Wizard – Properly setup WordPress SEO in less than 10 minutes.
  • \n
  • On-page SEO Optimization – optimize SEO code markup (without hiring a developer)
  • \n
  • TruSEO score – detailed content & readability analysis to help you optimize your pages for higher SEO rankings.
  • \n
  • Smart Meta Title & Description – Automatic SEO generation, dynamic SEO smart tags, and more.
  • \n
  • Unlimited SEO Keywords – our SEO content analyzer helps you optimize your pages for unlimited SEO keywords.
  • \n
  • XML Sitemap – Advanced XML sitemaps to boost your SEO rankings.
  • \n
  • Video SEO Sitemap – Improve your SEO rankings with video sitemap.
  • \n
  • News SEO Sitemap – Increase your SEO traffic with Google News sitemap.
  • \n
  • RSS SEO Sitemap – Improve SEO crawl frequency with RSS sitemap.
  • \n
  • Automatic Image SEO – Our image SEO module helps your images rank higher.
  • \n
  • Local Business SEO – Improve your local business SEO presence with our local SEO module.
  • \n
  • Multiple location SEO – Great for SEO optimization for businesses with multiple local store locations.
  • \n
  • Rich Snippets Schema – Get better click through rate (CTR) and increase SEO rankings with rich snippets schema.
  • \n
  • SEO Knowledge Graph Support – Improve your website’s search appearance with SEO Knowledge panel.
  • \n
  • Advanced SEO Schema – Easily add advanced SEO schema markups like FAQ schema, product schema, recipe schema (food blogger SEO), software application schema markup (SaaS SEO), online course schema (for course SEO), and more.
  • \n
  • Sitelinks Search Box – Helps you get a search box in Google SEO rankings.
  • \n
  • Google Site Links – Our SEO markup can help you get sitelinks for your brand.
  • \n
  • Robots.txt Editor – Control what SEO robots can see with our easy SEO robots.txt editor.
  • \n
  • SEO Audit Checklist – Improve your website’s SEO ranking with our SEO audit checklist.
  • \n
  • Google Search Console – Connect your WordPress site with Google webmaster tools to see additional SEO insights.
  • \n
  • Search Engine Verification Tools – Easily integrate with other popular SEO webmaster tools to improve search visibility.
  • \n
  • Google AMP SEO – Improve your mobile SEO rankings with Google AMP SEO.
  • \n
  • Advanced SEO Canonical URLs – Prevent duplicate content in SEO with automatic canonical URLs and boost your SEO rankings.
  • \n
  • Advanced Robots Meta SEO Settings – granular controls for no index, no follow, no archive, no snippet, max snippet, max video, and more.
  • \n
  • RSS Content for SEO – Stop content theft from hurting your SEO rankings with our RSS Content tool.
  • \n
  • User Access Control – Control who can manage your SEO settings with our advanced SEO access control.
  • \n
  • Competitor Site SEO Analysis – Use our competitor SEO analysis to outrank them by improving your website’s SEO optimization.
  • \n
  • Smart Breadcrumbs – Add Breadcrumb navigation to improve user experience and boost your SEO rankings. Comes with full SEO JSON+LD support.
  • \n
  • Smart SEO Redirects – Setup proper 301 redirects to improve your SEO rankings.
  • \n
  • 404 Error Monitor for SEO – Monitor website 404 errors and set up proper SEO redirects to prevent losing SEO rankings.
  • \n
  • Title and Nofollow for SEO – We make it easy for you to add title and nofollow to external links to improve SEO rankings.
  • \n
\n

WordPress SEO Integrations

\n
    \n
  • WooCommerce SEO – optimize your WooCommerce product pages and improve your WooCommerce store’s SEO rankings.
  • \n
  • MemberPress SEO – optimize your MemberPress course pages and improve your membership site’s SEO rankings.
  • \n
  • Elementor SEO – add SEO optimization for your Elementor landing pages.
  • \n
  • LearnDash SEO – SEO optimization for LearnDash courses.
  • \n
  • Facebook SEO – SEO optimize your website preview on Facebook.
  • \n
  • Twitter SEO – SEO optimize your website preview on Twitter.
  • \n
  • Pinterest SEO – SEO optimize your website preview on Pinterest.
  • \n
  • Open Graph Support – improve your SEO with open graph meta data.
  • \n
  • Knowledge Panel SEO – improve website SEO apperance by adding social media profile links for Facebook, Twitter, Wikpedia, Instagram, LinkedIn, Yelp, YouTube, and more.
  • \n
  • SEO Webmaster Tool Content – Connect your WordPress site with various webmaster tools to improve SEO rankings.
  • \n
  • Semrush SEO integration – See additional SEO keywords and relevant SEO keyphrases with our Semrush SEO integration.
  • \n
\n

WordPress SEO Plugin Importer

\n
    \n
  • Yoast SEO Importer – easily switch from Yoast SEO to AIOSEO with our full SEO migration wizard that includes SEO keywords, SEO title, meta description, XML sitemaps and more.
  • \n
  • Yoast SEO Premium Importer – easily import Yoast SEO premium settings including SEO redirects to AIOSEO with our full SEO migration wizard.
  • \n
  • RankMath SEO Importer – easily switch from RankMath SEO to AIOSEO with our SEO migration wizard.
  • \n
  • SEO Settings Backup – create a backup of your AIOSEO settings.
  • \n
  • Advanced SEO Import / Export – easily import / export AIOSEO settings from one site to another.
  • \n
  • Redirection Importer – import your SEO redirects from the Redirection plugin with our SEO migration wizard.
  • \n
  • Simple 301 Redirects Importer – import your SEO redirects from Simple 301 redirets with our SEO migration wizard.
  • \n
  • Safe Redirection Manager – easily import SEO redirects from safe redirect manager with our SEO migration wizard.
  • \n
\n

After reading this feature list, you can probably imagine why AIOSEO is the best WordPress SEO plugin in the market.

\n

Give AIOSEO a try.

\n

Want to unlock more SEO features? Upgrade to AIOSEO Pro.

\n

Credits

\n

This plugin is created by Benjamin Rojas and Syed Balkhi.

\n

Branding Guideline

\n

AIOSEO® is a registered trademark of Semper Plugins LLC. When writing about the WordPress SEO plugin by AIOSEO, please use the following format.

\n
    \n
  • AIOSEO (correct)
  • \n
  • All in One SEO (correct)
  • \n
  • AIO SEO (incorrect)
  • \n
  • All in 1 SEO (incorrect)
  • \n
  • AISEO (incorrect)
  • \n
\n

What’s Next

\n

If you like our WordPress SEO plugin, then consider checking out our other projects:

\n
    \n
  • OptinMonster – Get More Email Subscribers with the most popular conversion optimization plugin for WordPress.
  • \n
  • WPForms – #1 drag & drop online form builder for WordPress.
  • \n
  • MonsterInsights – See the Stats that Matter and Grow Your Business with Confidence. Best Google Analytics Plugin for WordPress.
  • \n
  • SeedProd – Create beautiful landing pages with our powerful drag & drop landing page builder.
  • \n
  • WP Mail SMTP – Improve email deliverability for your contact form with the most popular SMTP plugin for WordPress.
  • \n
  • RafflePress – Best WordPress giveaway and contest plugin.
  • \n
  • Smash Balloon – #1 social feeds plugin for WordPress.
  • \n
  • SearchWP – advanced WordPress search plugin.
  • \n
  • PushEngage – best web push notification plugin.
  • \n
\n

Visit WPBeginner to learn from our WordPress Tutorials and find out about other best WordPress plugins.

\n","download_link":"https://downloads.wordpress.org/plugin/all-in-one-seo-pack.4.1.3.3.zip","tags":{"google-search-console":"google search console","meta-description":"meta description","schema":"schema","seo":"seo","xml-sitemap":"xml sitemap"},"donate_link":"","icons":{"1x":"https://ps.w.org/all-in-one-seo-pack/assets/icon.svg?rev=2443290","2x":"https://ps.w.org/all-in-one-seo-pack/assets/icon-256x256.png?rev=2443290","svg":"https://ps.w.org/all-in-one-seo-pack/assets/icon.svg?rev=2443290"},"wporg":true},{"name":"Translate WordPress – Weglot Translate","slug":"weglot","version":"3.3.6","author":"Weglot Translate team","author_profile":"https://profiles.wordpress.org/remyb92","requires":"4.5","tested":"5.8","requires_php":"5.6","rating":96,"ratings":{"1":39,"2":7,"3":6,"4":27,"5":1205},"num_ratings":1284,"support_threads":8,"support_threads_resolved":3,"active_installs":40000,"downloaded":1203261,"last_updated":"2021-08-18 2:44pm GMT","added":"2015-09-27","homepage":"http://wordpress.org/plugins/weglot/","short_description":"Translate your WordPress website in 110+ languages within minutes with Weglot Translate, without any coding.","description":"

Weglot Translate is the leading WordPress translation plugin, trusted by 60,000+ users worldwide. Translate your WordPress website into 110+ languages within minutes, no coding required.

\n

Increase visibility and boost conversions with ease by adding multilingual functionality. Weglot Translate is fully optimized for SEO, with every translated page automatically indexed by Google. Say hello in multiple languages to millions of new visitors.

\n

Make your website multilingual in minutes with a free trial. Visit https://weglot.com/ to learn more!

\n

How Weglot Translate works

\n\n

Why Weglot Translate

\n

It’s easy to install: Weglot Translate is quick to set up to have a multilingual WordPress website ready, instantly. Reach out to millions of new visitors worldwide with a few clicks, without any coding.

\n

It’s built for maximum compatibility: Weglot Translate is fully compatible with all platforms, WordPress themes, and plugins. From WooCommerce product descriptions to Elementor order forms, everything is translated into the languages of your choice. So you can focus on your content, not the technical details.

\n

It’s optimized for SEO: Weglot Translate follows Google’s best practices for multilingual website translation, serving all translated web pages with clean source code. Google will automatically index every translated page with dedicated URLs.

\n

It’s easy to set and forget: Weglot Translate automatically detects all your website content for easy translation. No more time-consuming manual duplication of every single line of content to get a multilingual website. All translations are updated in real-time, so you don’t need to worry about maintenance and any newly added content is automatically translated.

\n

It takes translation seriously: Weglot Translate gives you an edge on your translation tasks with the first layer of automatic translation provided by the best machine learning providers on the market (DeepL, Google, Microsoft, and Yandex). You can also edit the translations and collaborate with your team to work on translations together, directly within Weglot.

\n

It partners with the pros: Weglot Translate lets you order from vetted professional translators directly inside your Weglot dashboard. Set translation quality the way you want it to be, with Weglot Translate.

\n

“Within a week of translating our site to English with Weglot, international sales doubled, by the following month – they had quadrupled.”
\nClara Champion – Director of Digital and E-Commerce, Jimmy Fairly
\nRead the case study

\n

Multilingual functionality like no other

\n

Increase visibility: All translated pages are automatically indexed following Google’s best practices with dedicated URLs. Get new traffic with your multilingual website.

\n

Reduce bounce rate: Redirect visitors automatically to serve them in the language of their choice, based on their browser settings.

\n

Enhance user experience: From the landing page to the email confirmation, get all your key conversion steps translated in your customers’ language. You can even add different images and videos for various languages. Useful for images with text, Weglot Translate makes it easy to display “translated” images in your translated versions. Media localization is an essential aspect of any multilingual project and Weglot Translate makes it simple to do so.

\n

“We really loved the localization features provided by Weglot, such as the ability to translate images and other types of media depending on the language the visitor is viewing the site in.”
\nKim Martin – Senior Communications and Marketing Officer, The Challenge Initiative
\nRead the case study

\n

An all-in-one language translation platform

\n
    \n
  • Manage and edit all of your translations through a user-friendly interface.
  • \n
  • Collaborate with team members and trusted translators to translate together, directly inside Weglot.
  • \n
  • Is it a title? Is it a link? No more guessing the context of the text. Weglot Translate’s in-context editor lets you translate directly within the webpage.
  • \n
  • Make it your own. The language switcher is fully customizable for multiple design choices.
  • \n
  • Weglot Translate makes it easy to migrate from other WordPress multilingual plugins like Polylang or WPML. Simply deactivate your existing translation plugin and install Weglot Translate.
  • \n
\n

“Weglot removed the pain of having to manage multiple stores for multiple locales. The integration was easy, and the support is incredibly helpful. I highly recommend Weglot to anyone looking for a simple and cost-effective solution to translate their stores!”
\nMike Robertson – Director of Sales Operations, Nikon

\n

With an increase in site visitors and session duration thanks to your multilingual website, you can expect a massive boost to your conversions. See why thousands of e-commerce platforms, SaaS firms, marketplaces, corporate websites, and blogs worldwide love Weglot Translate. Try it today for free

\n","download_link":"https://downloads.wordpress.org/plugin/weglot.3.3.6.zip","tags":{"language":"language","localization":"localization","multilingual":"multilingual","translate":"translate","translation":"translation"},"donate_link":"","icons":{"1x":"https://ps.w.org/weglot/assets/icon-128x128.png?rev=2186774","2x":"https://ps.w.org/weglot/assets/icon-256x256.png?rev=2186774"},"wporg":true},{"name":"Rank Math SEO – Best SEO Plugin For WordPress To Increase Your SEO Traffic","slug":"seo-by-rank-math","version":"1.0.71.1","author":"Rank Math","author_profile":"https://profiles.wordpress.org/rankmath","requires":"5.6","tested":"5.8","requires_php":"7.2","rating":98,"ratings":{"1":68,"2":17,"3":20,"4":47,"5":3367},"num_ratings":3519,"support_threads":135,"support_threads_resolved":132,"active_installs":900000,"downloaded":19544694,"last_updated":"2021-09-03 7:13pm GMT","added":"2018-11-19","homepage":"https://s.rankmath.com/home","short_description":"Rank Math SEO is the Best WordPress SEO plugin combines the features of many SEO…","description":"

Rank Math SEO – Best SEO Plugin for WordPress
\n★★★★★

\n

SEO is the most consistent source of traffic for any website. We created Rank Math SEO, a WordPress SEO plugin, to help every website owner get access to the SEO tools they need to improve their SEO and attract more traffic to their website.

\n

Try The Demo

\n\n

Features | Why Choose Rank Math SEO? | Compare | Screenshots | Benefits

\n

SEO might be the best and most consistent source of traffic for one’s website, but it’s not without its quirks. The constant process of optimizing your posts can sometimes take more time than actually writing the content. If you always feel that you can do more on the SEO front for your website but don’t have the time, then Rank Math SEO is what you’re looking for.

\n

Its host of intelligent features brings top SEO capabilities in your hands that were previously out of reach. The smart automation features give you the power of an entire SEO team with just a few clicks. A well thought out design, powerful features, and years of development by the MyThemeShop squad make Rank Math SEO a game-changing SEO plugin that will level the SEO playing field in your favor to help increase traffic.

\n

Rank Math SEO beats all of its competitors, hands down.

\n

See the features which are exclusive to the Rank Math SEO plugin and understand why Rank Math SEO is possibly the Best SEO Plugin for WordPress.

\n
    \n
  • \n

    Setup Wizard (Easy to follow)
    \nRank Math SEO practically configures itself. Rank Math SEO features a step-by-step installation and configuration wizard that sets up SEO for WordPress perfectly.

    \n
  • \n
  • \n

    Google Schema Markup aka Rich Snippets Integrated
    \nConfiguring Google Schema Markup, aka Rich Snippets, is now easy, thanks to Rank Math SEO. With support for 16+ types of Schema Markups, aka Rich Snippets, including the Rating Schema, you’ll be able to optimize your posts in just a few clicks. It also includes the FAQ Schema aka FAQPage Schema Block & the HowTo aka How To Schema Block in the plugin.

    \n
  • \n
  • \n

    Optimize Unlimited Keywords
    \nUnlike other plugins, Rank Math SEO lets you optimize your posts for unlimited focus keywords per post. 5 by default. Increase by adding this filter.

    \n
  • \n
  • \n

    Google Search Console Integration
    \nRank Math SEO saves you a ton of time by integrating with Google Search Console and displaying important information about your website right inside WordPress.

    \n
  • \n
  • \n

    Google Keyword Ranking
    \nWith Rank Math SEO Plugin, you can track your keyword rankings in Google.

    \n
  • \n
  • \n

    Google Analytics Integration
    \nRank Math SEO offers a one-click solution to install Google Analytics script without pasting anything manually anywhere. You can also exclude the Logged-in users.

    \n
  • \n
  • \n

    Optimal Settings Pre-Selected
    \nConfiguring an SEO plugin takes time, and can be confusing. Rank Math SEO saves you the trouble with its optimal default settings, which are ideal for most websites, and if needed, can be changed.

    \n
  • \n
  • \n

    LSI Keyword Tool Integrated
    \nRank Math SEO’s integrated LSI keyword tool gives you multiple keyword variations of your focus keyword, which helps you attract more traffic to your posts. Free account needed.

    \n
  • \n
  • \n

    Add Overlay Icons On Social Images
    \nRank Math SEO makes social thumbnails click magnets by giving you the option of overlaying a GIF or a video icon on the thumbnail.

    \n
  • \n
  • \n

    Advanced SEO Analysis Tool
    \nWith just a single click, Rank Math SEO can perform an SEO audit of your website.

    \n
  • \n
  • \n

    30 Detailed SEO Tests
    \nRank Math SEO is designed to completely supercharge your website’s SEO with its 30 detailed SEO tests. Free account needed.

    \n
  • \n
  • \n

    Module Based System
    \nRank Math SEO has been designed with a module-based system, each of which can be enabled or disabled as per your needs, giving you extra speed and control.

    \n
  • \n
  • \n

    Smart Redirection Manager
    \nRank Math SEO’s built-in smart redirection manager will help you create, manage, delete, enable, or disable redirects at scale.

    \n
  • \n
  • \n

    Local Business SEO
    \nRank Math SEO is designed to be used by Global websites and local websites alike. With its local SEO features, local sites can stand out in the search engine results like Google’s and attract more traffic.

    \n
  • \n
  • \n

    SEO Optimized Breadcrumbs
    \nRank Math SEO can display SEO optimized Breadcrumbs on all websites, even if the theme doesn’t support Schema.org coding.

    \n
  • \n
  • \n

    404 Monitor
    \nRank Math SEO has a built-in 404 error monitor that helps you find and resolve 404 errors for a better user experience.

    \n
  • \n
  • \n

    Deep Content Analysis Tests
    \nOn-Page SEO is no longer a mystery with Rank Math SEO’s deep content analysis and precise SEO recommendations.

    \n
  • \n
  • \n

    Internal Linking Suggestions
    \nRank Math SEO intelligently suggests other posts from your website for internal linking from your current posts, improving the chances of ranking higher in the SERPs.

    \n
  • \n
  • \n

    Role Manager
    \nEven if you have multiple employees manage your website, you can precisely control what each of them has to access to in Rank Math SEO with its role manager.

    \n
  • \n
  • \n

    Multisite Ready
    \nWhether you run a single WordPress website or an entire network of sites – we are ready for you. Rank Math SEO fully supports the WordPress Multiuser project (WPMU).

    \n
  • \n
  • \n

    and has lightweight Code compared to slow-loading in other SEO plugins.
    \nEven with significantly more features than other plugins, Rank Math SEO loads amazingly fast and keeps your website fast always.

    \n
  • \n
\n

Why is Rank Math SEO such a game-changer?

\n
    \n
  • \n

    Auto Configuration — All you have to do is set a few options, and Rank Math SEO will configure itself perfectly for your website.

    \n
  • \n
  • \n

    Super Fast SEO Plugin — Even after packing so many features, Rank Math SEO has a negligible load on your server, thus making it one of the fastest SEO plugins for WordPress.

    \n
  • \n
  • \n

    Automatic Keyword Suggestions from Google — Get keyword suggestions from Google as you start typing letters in the focus keyword field of Rank Math SEO.

    \n
  • \n
  • \n

    New SEO Analyzer — Rank Math SEO’s built-in SEO analysis will give you SEO recommendations that you’d normally spend hundreds of dollars to get.

    \n
  • \n
  • \n

    Elementor SEO – Deep integration with the Elementor Page builder. Now, you don’t need to go back and forth between tabs to configure your page’s SEO. Everything related to SEO for Elementor can be configured in the visual editor.

    \n
  • \n
  • \n

    Divi SEO – One of its kind integration with the Divi Page Builder and theme. Handle everything related to SEO from the page editor screen without jumping back to the default editor. This helps you optimize your website in real-time for SEO.

    \n
  • \n
  • \n

    Page Builder SEO – The Rank Math SEO plugin’s content analysis works perfectly with popular page builders and themes like Oxygen Builder, WPBakery, Avada, Astra, Kadence, Themify, Beaver Builder, Page Builder Framework, Schema theme, Flothemes, OceanWP, etc.

    \n
  • \n
  • \n

    Optimize UNLIMITED Keywords At Once — You can optimize your post for up to 5 different keywords by default with the Rank Math SEO plugin and can use a filter to optimize for unlimited keywords.

    \n
  • \n
  • \n

    Image SEO – With Rank Math SEO’s perfect solution to add ALT & Title tags on the fly, to optimize images, showing inside the content, and that too for FREE, there is no reason to choose any other SEO solution that does not provide all the essential SEO features.

    \n
  • \n
  • \n

    Web Stories SEO – Make any Story created with the Google’s Web Stories plugin SEO-Ready. Automatically adds AMP-friendly Schema markup and Meta tags.

    \n
  • \n
  • \n

    WooCommerce SEO – Optimizing your store products is easier with Rank Math. SEO Meta tags and Schema are automatically added but can be customized with total control as well. Rank Math SEO has the most advanced SEO for WooCommerce.

    \n
  • \n
  • \n

    Google AMP SEO – Accelerated Mobile Pages need to be prepared for search engines. What better way to do that than letting Rank Math SEO use your regular SEO details and optimizing AMPs based on that data?

    \n
  • \n
  • \n

    bbPress SEO – User-generated content in bbPress is properly optimized with Rank Math handling all the important SEO aspects. Q&A Schema is added to bbPress topics along with other essential meta tags.

    \n
  • \n
  • \n

    BuddyPress SEO – As with bbPress, SEO for BuddyPress content is done automatically done using Rank Math. You get all the options you need to get higher rankings with your user-generated content.

    \n
  • \n
  • \n

    Quick Edit SEO Details – Go through a lot of posts/pages quickly by ensuring they are optimized for search engines. Quickly edit multiple SEO fields at once using Rank Math SEO.

    \n
  • \n
  • \n

    Instant Indexing for Bing – Get your content instantly indexed by Bing. Enter a few key details and you are all set and ready to go.

    \n
  • \n
  • \n

    Instant Indexing for Google – Instantly getting indexed by Google used to be reserved to huge brands and large websites. Not anymore. Just about anyone can take advantage of Google’s Instant Indexing feature using Rank Math SEO.

    \n
  • \n
  • \n

    Version Control – Rollback or try beta versions. Updating and downgrading your plugins is now a matter of few clicks. Automatically update to the latest versions or try out the latest beta builds.

    \n
  • \n
  • \n

    Translation Plugins Support — Rank Math SEO works flawlessly with the top translations plugins like WPML, TranslatePress, Weglot, Polylang (not entirely compatible yet), etc., making it a perfect companion.

    \n
  • \n
  • \n

    XML Sitemap – The Rank Math SEO plugin comes with a fast-loading Sitemap feature that works with different post types, including the custom ones, and provides deep controlling. One can also generate a Locations KML file via filter for Local Sitemap, & a WooCommerce Sitemap.

    \n
  • \n
  • \n

    1-Click Import From Yoast — With a single click of your mouse, Rank Math SEO can import all your settings from Yoast SEO & Yoast SEO Premium to itself. The transfer is instant, and you don’t lose any SERP rankings as a result.

    \n
  • \n
  • \n

    1-Click Import From AIO SEO — Rank Math SEO can also import all your settings from AIO SEO & All in One SEO Pack Pro in a single click. The transfer is instant, and you don’t lose any SERP rankings as a result.

    \n
  • \n
  • \n

    1-Click Import From All In One Schema Rich Snippets — Rank Math SEO can also import all of AIO’s Rich Snippet & Schema Pro settings in a few clicks, which help preserve your rich rankings when moving to Rank Math SEO.

    \n
  • \n
  • \n

    1-Click Import From SEOPress SEO — With a single click of your mouse, Rank Math SEO can import all your settings from SEOPress & SEOPress Pro SEO plugin to itself. The transfer is instant, and you don’t lose any SERP rankings as a result.

    \n
  • \n
  • \n

    1-Click Import From Redirection — Moving all your redirects shouldn’t be a hassle. That’s why we have made importing redirections from the popular Redirection plugin as simple as clicking a button.

    \n
  • \n
  • \n

    Google Keyword Suggestion — When deciding on focus keywords, Rank Math SEO can help you discover more keywords by pulling in automatic keyword suggestions from Google.

    \n
  • \n
\n

Who Can Benefit From Rank Math SEO?

\n

Rank Math SEO Plugin is perfect for:

\n

✔ Bloggers
\n✔ eCommerce Store Owners
\n✔ Niche Sites
\n✔ Businesses
\n✔ Local Businesses
\n✔ Startups
\n✔ The Real Estate
\n✔ Artists & Photographers
\n✔ The Solution Offerer
\n✔ Directories
\n✔ Vloggers (Video Bloggers)
\n✔ Or any WordPress Website

\n

Take a sneak peek into Rank Math SEO’s features

\n

Detailed Setup Tutorial

\n\n

List of Best Rank Math SEO Features

\n
    \n
  • Clean, & Simple User Interface
  • \n
  • Optimal Settings Pre-Selected
  • \n
  • Simple Setup Wizard\n
      \n
    • Compatibility Check
    • \n
    \n
  • \n
  • Auto Canonical URLs
  • \n
  • LSI Keyword Tool Integrated
  • \n
  • Google Search Console Integration
  • \n
  • Google Keyword Ranking
  • \n
  • Import Other Plugin Settings\n
      \n
    • 1 Click Import From Yoast SEO Plugin
    • \n
    • 1 Click Import From AIO SEO
    • \n
    • 1 Click Import From SEOPress & SEOPress Pro
    • \n
    • 1 Click Import From All In One Schema Rich Snippets & Schema Pro
    • \n
    • 1 Click Import From Redirection Plugin
    • \n
    \n
  • \n
  • Role Manager
  • \n
  • ACF Support
  • \n
  • AMP Ready
  • \n
  • bbPress & BuddyPress Modules
  • \n
  • Google Schema Markup Integrated\n
      \n
    • Article Rich Snippet
    • \n
    • Review Rich Snippet
    • \n
    • Book Rich Snippet
    • \n
    • Course Rich Snippet
    • \n
    • Event Rich Snippet
    • \n
    • Job Posting Rich Snippet
    • \n
    • Local Business Rich Snippet
    • \n
    • 193 Local Business Types
    • \n
    • Music Rich Snippet
    • \n
    • Person Rich Snippet
    • \n
    • Product Rich Snippet
    • \n
    • Recipe Rich Snippet
    • \n
    • Restaurant Rich Snippet
    • \n
    • Service Rich Snippet
    • \n
    • Software Application Rich Snippet
    • \n
    • Video Rich Snippet
    • \n
    • Author Stay Rating
    • \n
    \n
  • \n
  • Social Media Optimization\n
      \n
    • Add Overlay Icons On Social Images
    • \n
    • Default OpenGraph Thumbnail
    • \n
    • Auto Facebook Open Graph
    • \n
    • Facebook Authorship
    • \n
    • Facebook Open Graph for Homepage
    • \n
    • Automatic Twitter Meta Cards
    • \n
    • Twitter Card for Homepage
    • \n
    • Default Twitter Card Type
    • \n
    • Social Previews
    • \n
    \n
  • \n
  • Add Knowledge Graph\n
      \n
    • Represent site as a Person
    • \n
    • Represent site as a Company
    • \n
    • Set a Site Logo
    • \n
    \n
  • \n
  • Advanced SEO Analysis Tool\n
      \n
    • 30 Detailed SEO Tests
    • \n
    • SEO Analysis Score
    • \n
    \n
  • \n
  • Automated Image SEO
  • \n
  • Powerful Post Optimization\n
      \n
    • Add SEO Meta Box to all post types
    • \n
    • Bulk Edit Titles & Descriptions
    • \n
    • Post Preview on Google
    • \n
    • Content Analysis
    • \n
    • Control SEO For Single Pages
    • \n
    • Control The Title
    • \n
    • Control Meta Description
    • \n
    • Auto Add Additional Meta Data
    • \n
    • Control ROBOTS Meta
    • \n
    • Choose a Primary Category
    • \n
    \n
  • \n
  • Single Post/page Optimization\n
      \n
    • Focus Keyword
    • \n
    • Google Keyword Suggestion
    • \n
    • Optimize UNLIMITED Keywords (5 by default)
    • \n
    • Choose Pillar Posts & Pages
    • \n
    • Internal Linking Suggestions
    • \n
    • Capitalize Titles
    • \n
    • SEO Failed Tests
    • \n
    • SEO Warnings
    • \n
    \n
  • \n
  • XML Sitemap (New!)
  • \n
  • Module Based System
  • \n
  • Choose Any Separator Character
  • \n
  • Modify Global Meta
  • \n
  • Search Engine Verification Tools\n
      \n
    • Bing Site Verification
    • \n
    • Baidu Site Verification
    • \n
    • Alexa Site Verification
    • \n
    • Yandex Site Verification
    • \n
    • Google Site Verification
    • \n
    • Pinterest Site Verification
    • \n
    • Norton Safe Web Site Verification
    • \n
    \n
  • \n
  • Advanced Redirection Manager\n
      \n
    • Smart & Automatic Post Redirects
    • \n
    • 301 Redirection Type
    • \n
    • 302 Redirection Type
    • \n
    • 307 Redirection Type
    • \n
    • 410 Redirection Type
    • \n
    • 451 Redirection Type
    • \n
    • Support for REGEX
    • \n
    • Debug Redirections
    • \n
    \n
  • \n
  • Simple 404 Monitor\n
      \n
    • Advanced 404 Monitor
    • \n
    \n
  • \n
  • Advanced SEO Breadcrumbs\n
      \n
    • Auto Show SEO Breadcrumbs
    • \n
    \n
  • \n
  • Advanced Link Options\n
      \n
    • Nofollow All External Image Links
    • \n
    • Nofollow All External Links
    • \n
    • Open External Links in New Tab/Window
    • \n
    • Redirect Attachments to Parent
    • \n
    • Strip Category Base
    • \n
    \n
  • \n
  • Remove Stopwords from Permalinks
  • \n
  • Ping Search Engines
  • \n
  • Local SEO Optimization\n
      \n
    • Contact Info Shortcode
    • \n
    \n
  • \n
  • Deep Support For WooCommerce SEO
  • \n
  • Compatible for EDD SEO (Easy Digital Downloads SEO)
  • \n
  • Only 30k Lines of Code\n
      \n
    • PSR-4 Coding Standards (wherever possible)
    • \n
    \n
  • \n
  • Optimize Different Archives\n
      \n
    • Optimize Author Archive Pages
    • \n
    • Optimize Date Archive Pages
    • \n
    • Optimize Archive Pages
    • \n
    \n
  • \n
  • .htaccess Editor
  • \n
  • Robots.txt Editor
  • \n
  • Import/Export Settings
  • \n
  • Import/Export Redirections
  • \n
  • Add Content Before the RSS Feed
  • \n
  • Add Content After the RSS Feed
  • \n
  • Detailed Documentation\n
      \n
    • Contextual Help
    • \n
    \n
  • \n
\n

BIG Publications are Raving About Rank Math SEO

\n

Rank Math SEO Reviews

\n\n\n

Rank Math SEO Review – Why I Ditched Yoast For Rank Math SEO

\n

Rank Math SEO on Product Hunt

\n

Rank Math SEO Plugin Review from an SEO Consultant

\n

and many more

\n

Check RANK MATH PRO WHICH MAKES SEO EASIER & FASTER

\n\n

FREE VS PRO COMPARISON

\n

UNIQUE FEATURES OF RANK MATH PRO

\n

Google Analytics & Search Console Integration (The only SEO plugin that provides it)
\n✔ Integrated Google Analytics, AdSense & Search Console Data
\n✔ Analyze SEO Performance of Each Post & Page
\n✔ See Top Winning/Losing Posts & Keywords
\n✔ Keep Track of Position History
\n✔ Rank Tracker for Important Keywords

\n

Schema aka Structured Data aka Rich Snippets. The BEST Schema Generator Available Online
\n✔ 20+ Pre-defined Schema types (more than any other plugin) –
\n✔ Import Schema from Other Websites
\n✔ Advanced Schema Builder [Advanced SEOs can use this to create any complex Schema Markup)
\n✔ Schema Templates for Automation
\n✔ Conditional Schema Markup
\n✔ Inbuilt Schema Code Preview and Validation
\n✔ Multiple Location Schema On Any Page (using the Shortcode)

\n

Automation At Its BEST
\n✔ Automated Image SEO
\n✔ Advanced Filtering for Images [https://i.rankmath.com/zAUHHP]
\n✔ Watermark Your images
\n✔ Advanced Post filtering
\n✔ Bulk Actions [index, noindex, redirect, etc.]
\n✔ Quick Edit SEO Details
\n✔ Bulk Import SEO Meta Details Using CSV file
\n✔ Auto Detect Videos and Generate Schema Markup for Them
\n✔ Auto Fetch Thumbnail, Duration of YouTube & Vimeo Videos
\n✔ Automatically Flush Facebook Thumbnails
\n✔ Open External Links in New Tabs
\n✔ Nofollow External Links
\n✔ Noindex Paginated, Archive, Search Result Pages
\n✔ Instant Indexing for Bing [Also Google using our Instant Indexing Plugin]

\n

WooCommerce SEO
\n✔ Automatic Schema for WooCommerce Products
\n✔ Advanced Open Graph Tags for WooCommerce Products
\n✔ Automatic NoIndex Hidden Products
\n✔ Remove WooCommerce Product and Category Base
\n✔ Add Custom Brands to Products
\n✔ Add Global Identifier Like GTIN/MPN – Even to Variations

\n

Workflow Improvements
\n✔ Internal Role Manager
\n✔ Inbuilt Google Trends Insights
\n✔ Site Audit with 29 Unique Tests
\n✔ Import Redirections Using CSV File
\n✔ Categorize Redirections for Grouping
\n✔ One-Click Redirection for 404s
\n✔ Monitor Search Performance of Entire Portfolio
\n✔ Easy and Advanced Mode

\n

Miscellaneous
\n✔ Supports bbPress and BuddyPress SEO
\n✔ Version Control – Rollback or Try Beta Versions

\n

MANY MORE FEATURES
\n✔ PREMIUM 24x7x365 Dedicated Support Managers
\n✔ MOST COMPETITIVE PRICING EVER!

\n

CHEK ALL THE PREMIUM FEATURES AND PRICING HERE

\n

CONNECT WITH THE TEAM AND SEO EXPERTS

\n

JOIN FACEBOOK GROUP COMMUNITY: The purpose of this Facebook group is to have a collective place where the community can help each other, and we can get some feedback to improve Rank Math SEO as well. Joining the group is also a great way to connect with like-minded people and share your SEO experience.

\n

Branding Guideline

\n

Rank Math SEO® is a registered trademark. Please use the following format when mentioning the Rank Math SEO plugin anywhere.
\n* Rank Math SEO [correct]
\n* Rank Math SEO [incorrect]
\n* Rank Math SEO [incorrect]
\n* Rank Math SEO [incorrect]
\n* RankMath [incorrect]
\n* Rankmath [incorrect]
\n* rankmath [incorrect]
\n* rankMath [incorrect]

\n

Getting Started:

\n

1. How to Setup Rank Math SEO: Once you install Rank Math SEO for the first time, you will be greeted with the Setup Wizard, which is discussed in detail here.

\n

2. Facebook Group: In this group, you will find the team of Rank Math SEO plugin fairly active and ready to answer your SEO related queries.

\n

3. User Documentation: Although Rank Math SEO is already easy to set up, we’ve put together tutorials, guides, and some knowledge bases to help you set up and get started with Rank Math SEO.

\n

4. Contribute (Sharing is caring): If you are one of those caring hearts that want to help, go to our Rank Math SEO’s GitHub Repository and see how you can contribute to the SEO community. You can also add a new language via translate.wordpress.org.

\n

5. Fixing Common Errors: Sometimes, avoidable or common issues can get you stuck. We’ve created a common guide where we discuss all the common issues and how to fix them.

\n

6. Support Ticket Forum: Our dedicated forum is where you can get support for any issues that you face with Rank Math SEO. In the forum, we’ll also try to answer some SEO queries. User experience is important to us, and our aim is to answer all the queries on the forum in a timely manner.

\n

7. Frequently Asked Questions: Here, we’ve answered the most commonly asked questions about Rank Math SEO. The questions are related to features, pricing, and others.

\n","download_link":"https://downloads.wordpress.org/plugin/seo-by-rank-math.1.0.71.1.zip","tags":{"google-search-console":"google search console","redirection":"redirection","schema":"schema","seo":"seo","sitemap":"sitemap"},"donate_link":"","icons":{"1x":"https://ps.w.org/seo-by-rank-math/assets/icon.svg?rev=2348086","2x":"https://ps.w.org/seo-by-rank-math/assets/icon-256x256.png?rev=2348086","svg":"https://ps.w.org/seo-by-rank-math/assets/icon.svg?rev=2348086"},"wporg":true},{"name":"Head, Footer and Post Injections","slug":"header-footer","version":"3.2.2","author":"Stefano Lissa","author_profile":"https://profiles.wordpress.org/satollo","requires":"4.0","tested":"5.7.2","requires_php":"5.6","rating":98,"ratings":{"1":3,"2":2,"3":4,"4":13,"5":620},"num_ratings":642,"support_threads":1,"support_threads_resolved":0,"active_installs":300000,"downloaded":2774331,"last_updated":"2021-03-17 1:26pm GMT","added":"2008-04-07","homepage":"https://www.satollo.net/plugins/header-footer","short_description":"Header and Footer plugin let you to add html code to the head and footer sections of your blog... and more!","description":"

About WordPress SEO and Facebook Open Graph: I was very unpleased by Yoast invitation to
\nremove my plugin, and it’s not the case.
\nRead more here.

\n

Head and Footer Codes

\n

Why you have to install 10 plugins to add Google Analytics, Facebook Pixel, custom
\ntracking code, Google DFP code, Google Webmaster/Alexa/Bing/Tradedoubler verification code and so on…

\n

With Header and Footer plugin you can just copy the code those services give you
\nin a centralized point to manage them all. And theme independent: you can change your theme
\nwithout loosing the code injected!

\n

Injection points and features

\n
    \n
  • in the page section where most if the codes are usually added
  • \n
  • just after the tag as required by some JavaScript SDK (like Facebook)
  • \n
  • in the page footer (just before the tag)
  • \n
  • recognize and execute PHP code to add logic to your injections
  • \n
  • distinct desktop and mobile injections
  • \n
\n

AMP

\n

A new AMP dedicated section compatible with AMP plugin lets you to inject specific codes in
\nAMP pages. Should be ok even with other AMP plugins.

\n

Post Top and Bottom Codes

\n

Do you need to inject a banner over the post content or after it? No problem. With Header and
\nFooter you can:

\n
    \n
  • Add codes on top, bottom and in the middle of posts and pages
  • \n
  • Differentiate between mobile and desktop (you don’t display the same ad format on both, true?)
  • \n
  • Separate post and page configuration
  • \n
  • Native PHP code enabled
  • \n
  • Shortcodes enabled
  • \n
\n

Special Injections

\n
    \n
  • Just after the opening BODY tag
  • \n
  • In the middle of post content (using configurable rules)
  • \n
  • Everywhere on template (using placeholders)
  • \n
\n

bbPress

\n

The specific bbPress injections are going to be removed. Switch to my
\nAds for bbPress, which is more flexible and complete.

\n

Limits

\n

This plugin cannot change the menu or the footer layout, those features must be covered by your theme!

\n

Official page: Header and Footer.

\n

Other plugins by Stefano Lissa:

\n\n

Translation

\n

You can contribute to translate this plugin in your language on WordPress Translate

\n

Privacy and GDPR

\n

This plugin does not collect or process any personal user data.

\n","download_link":"https://downloads.wordpress.org/plugin/header-footer.3.2.2.zip","tags":{"blog":"blog","footer":"footer","header":"header","page":"page","single":"single"},"donate_link":"http://www.satollo.net/donations","icons":{"1x":"https://ps.w.org/header-footer/assets/icon-256x256.png?rev=1064219","2x":"https://ps.w.org/header-footer/assets/icon-256x256.png?rev=1064219"},"wporg":true},{"name":"WP Rocket","slug":"wp-rocket","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://wp-rocket.me/","short_description":"

Powerful caching to speed up your WordPress website in a few clicks. No coding required.

\n","description":"\n\n\n

Powerful caching to speed up your WordPress website in a few clicks. No coding required.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2020/06/WP-Rocket-285x160.png","2x":"https://amp-wp.org/wp-content/uploads/2020/06/WP-Rocket-372x209.png","svg":""},"wporg":false},{"name":"Statify","slug":"statify","version":"1.8.3","author":"pluginkollektiv","author_profile":"https://profiles.wordpress.org/pluginkollektiv","requires":"4.7","tested":"5.8","requires_php":"5.2","rating":94,"ratings":{"1":2,"2":0,"3":0,"4":3,"5":33},"num_ratings":38,"support_threads":3,"support_threads_resolved":1,"active_installs":200000,"downloaded":1497095,"last_updated":"2021-07-17 8:46am GMT","added":"2011-03-16","homepage":"https://statify.pluginkollektiv.org/","short_description":"Visitor statistics for WordPress with focus on data protection, transparency and clarity. Perfect as a widget in your WordPress Dashboard.","description":"

Statify provides a straightforward and compact access to the number of site views. It is privacy-friendly as it uses neither cookies nor a third party.

\n

An interactive chart is followed by lists of the most common reference sources and target pages. The period of statistics and length of lists can be set directly in the dashboard widget.

\n

Data Privacy

\n

In direct comparison to statistics services such as Google Analytics, WordPress.com Stats and Matomo (Piwik) Statify doesn’t process and store personal data as e.g. IP addresses – Statify counts site views, not visitors.

\n

Absolute privacy compliance coupled with transparent procedures: A locally in WordPress created database table consists of only four fields (ID, date, source, target) and can be viewed at any time, cleaned up and cleared by the administrator.

\n

Due to this tracking approach, Statify is 100% compliant with GDPR and serves as an lightweight alternative to other tracking services.

\n

Display of the widget

\n

The plugin configuration can be changed directly in the Statify Widget on the dashboard by clicking the Configure link.

\n

The amount of links shown in the Statify Widget can be set as well as the option to only count views from today. Of course, older entries are not deleted when changing this setting.

\n

The statistics for the dashboard widget are cached for four minutes.

\n

Period of data saving

\n

Statify stores the data only for a limited period (default: two weeks), longer intervals can be selected as option in the widget. Data which is older than the selected period is deleted by a daily cron job.

\n

An increase in the database volume can be expected because all statistic values are collected and managed in the local WordPress database (especially if you increase the period of data saving).

\n

JavaScript tracking for caching compatibility

\n

For compatibility with caching plugins like Cachify Statify offers an optional switchable tracking via JavaScript. This function allows reliable count of cached blog pages.

\n

For this to work correctly, the active theme has to call wp_footer(), typically in a file named footer.php.

\n

Skip tracking for spam referrers

\n

The comment blacklist can be enabled to skip tracking for views with a referrer URL listed in comment blacklist, i. e. which considered as spam.

\n

Support

\n

If you’ve problems or think you’ve found a bug (e.g. you’re experiencing unexpected behavior), please post at the support forums.

\n

Contribute

\n
    \n
  • Active development of this plugin is handled on GitHub.
  • \n
  • Pull requests for documented bugs are highly appreciated.
  • \n
  • If you want to help us translate this plugin you can do so on WordPress Translate.
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/statify.1.8.3.zip","tags":{"analytics":"analytics","dashboard":"dashboard","pageviews":"pageviews","privacy":"privacy","statistics":"statistics"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=TD4AMD2D8EMZW","icons":{"1x":"https://ps.w.org/statify/assets/icon-128x128.png?rev=2355063","2x":"https://ps.w.org/statify/assets/icon-256x256.png?rev=2355063"},"wporg":true},{"name":"LIQUID BLOCKS GALLERY 37+ Free Designs","slug":"liquid-blocks","version":"1.1.1","author":"LIQUID DESIGN Ltd.","author_profile":"https://profiles.wordpress.org/lqd","requires":"5.2","tested":"5.8","requires_php":false,"rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"num_ratings":1,"support_threads":1,"support_threads_resolved":0,"active_installs":4000,"downloaded":19990,"last_updated":"2021-07-22 6:55am GMT","added":"2019-10-18","homepage":"https://lqd.jp/wp/plugin.html","short_description":"If you’re looking to create block page sections that look great give LIQUID BLOCKS a…","description":"

If you’re looking to create block page sections that look great give LIQUID BLOCKS a try.

\n

In Gutenberg Block Template & Design Gallery, Just select your favorite design. Instantly create page section elements. Like a very simple page builder.

\n

You can manage Block Pattern. (WordPress 5.5+)
\nFully compatible with Gutenberg and themes and AMP.
\nlatest information on LIQUID PRESS.

\n

\n

Design Gallery

\n

Carefully selected 37+ Free Designs.
\n* Headlines
\n* Layouts (Q&A, Ranking, Column, Step, Fluid Shape.)
\n* Price list
\n* CTA
\n* Landing pages
\n* Block Patterns (You can register.)

\n

Toolbar

\n

Add to RichText Toolbar.
\n* Mark
\n* Underline
\n* Big
\n* Small

\n","download_link":"https://downloads.wordpress.org/plugin/liquid-blocks.zip","tags":{"block":"block","block-editor":"block-editor","blocks":"blocks","editor":"editor","gutenberg":"gutenberg"},"donate_link":"https://lqd.jp/wp/plugin.html","icons":{"1x":"https://ps.w.org/liquid-blocks/assets/icon-128x128.png?rev=2175390"},"wporg":true},{"name":"Schema","slug":"schema","version":"1.7.9.2","author":"Hesham","author_profile":"https://profiles.wordpress.org/hishaman","requires":"4.0","tested":"5.7.2","requires_php":"5.4","rating":90,"ratings":{"1":15,"2":6,"3":4,"4":8,"5":162},"num_ratings":195,"support_threads":3,"support_threads_resolved":0,"active_installs":60000,"downloaded":1082875,"last_updated":"2021-05-19 2:51pm GMT","added":"2016-05-11","homepage":"https://schema.press","short_description":"Get the next generation of Schema Structured Data to enhance your WordPress site presentation in Google search results.","description":"

Like Schema plugin? Consider leaving a 5 star review.

\n

Super fast, light-weight plugin for adding schema.org structured data markup in recommended JSON-LD format automatically to WordPress sites.

\n

Enhanced Presentation in Search Results By including structured data appropriate to your content, your site can enhance its search results and presentation.

\n

Check out the Plugin Homepage for more info and documentation.

\n

What is Schema markup?

\n

Schema markup is code (semantic vocabulary) that you put on your website to help the search engines return more informative results for users. So, Schema is not just for SEO reasons, it’s also for the benefit of the searcher.

\n

Schema.org Structured Data Demo & Examples

\n\n

Schema Key Features

\n
    \n
  • Easy to use, set it and forget it, with minimal settings.
  • \n
  • [Premium] Support for different schema.org types.
  • \n
  • Enable Schema types at once per post type or post category.
  • \n
  • [Premium] Enable Schema types anywhere you want on your site content.
  • \n
  • [Premium] Customize source data of schema.org properties.
  • \n
  • Valid markup, test it in Google Structured Data Testing Tool.
  • \n
  • Output JSON-LD format, the most recommended by Google.
  • \n
  • Reuse data saved in post meta, which is created by other plugins.
  • \n
  • Extensible, means you can extend its functionality via other plugins, extensions or within your Theme’s functions.php file.
  • \n
\n
\n

Note: some features are Premium. Which means you need Schema Premium to have those features. Get Schema Premium here!

\n
\n

Free vs Premium

\n
\n

See: a Free vs Premium comparison.

\n
\n

Free Plugin Extensions

\n
    \n
  • Schema Review: Extend Schema functionality by adding review and rating Structured Data functionality for Editors and Authors.
  • \n
  • Schema Default Image: Add ability to set a default WordPress Featured image for schema.org markup.
  • \n
\n

Premium Plugin Extensions

\n\n

Supported Google/Schema Markups

\n\n

Supported Schema.org Types

\n\n

Premium Supported Schema.org Types

\n
\n

Schema Premium has additional support for schema.org types, including:

\n
\n\n

Schema.org Markup Examples

\n

View our Live Structured Data Demo examples.

\n

Supported Plugins

\n

Schema plugin integrates and/or play nicely with (not necessarily a full integration):

\n
    \n
  • Yoast SEO
  • \n
  • AMP plugin (Automattic’s Accelerated Mobile Pages)
  • \n
  • Accelerated Mobile Pages – AMP for WP
  • \n
  • WPRichSnippets
  • \n
  • The SEO Framework
  • \n
  • WPBakery Page Builder
  • \n
  • ThirstyAffiliates
  • \n
  • [Premium] WooCommerce: Schema for WooCommerce extension.
  • \n
  • Easy Digital Downloads (EDD)
  • \n
\n

Supported Themes

\n

The plugin should work fine with any well coded WordPress theme, however these themes were tested and works properly with the plugin.

\n
    \n
  • Genesis 2.x
  • \n
  • Thesis 2.x
  • \n
  • Divi
  • \n
\n

Premium support

\n

schema.press team does not always provide active support for the Schema plugin on the WordPress.org forums, as we prioritize our email support. One-on-one email support is available to people who bought Schema Premium only.

\n

Note that the premium Schema Plugin also has several extra features too, including the option to enable more schema.org types, set content location target for markup, and map schema.org properties, so it is well worth your investment!

\n

Developers?

\n

Feel free to fork the project on GitHub and submit your contributions via pull request.

\n","download_link":"https://downloads.wordpress.org/plugin/schema.zip","tags":{"json-ld":"JSON-LD","rich-snippets":"rich snippets","schema":"schema","schema-org":"schema.org","structured-data":"structured data"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=NGVUBT2QXN7YL","icons":{"1x":"https://ps.w.org/schema/assets/icon-128x128.png?rev=1750172","2x":"https://ps.w.org/schema/assets/icon-256x256.png?rev=1750173"},"wporg":true},{"name":"Iframely – rich media embeds for 2000+ publishers","slug":"iframely","version":"0.7.2","author":"Itteco Corp.","author_profile":"https://profiles.wordpress.org/ivanp","requires":"3.5.1","tested":"5.4.6","requires_php":false,"rating":80,"ratings":{"1":2,"2":0,"3":1,"4":0,"5":7},"num_ratings":10,"support_threads":1,"support_threads_resolved":0,"active_installs":3000,"downloaded":97227,"last_updated":"2020-05-22 5:21pm GMT","added":"2013-10-03","homepage":"http://wordpress.org/plugins/iframely/","short_description":"Iframely extends WordPress default rich media embeds and adds support of over 2000 more providers…","description":"

Iframely extends WordPress default embeds and adds over 2000 more providers and cards as URL previews for the rest of the Web. Provides responsive embed codes, works with AMP.

\n

Just like default WordPress embeds, Iframely will detect URLs in your posts and replace it with responsive embed codes. Supports all usual suspects such as YouTube, Vimeo, Instagram, Facebook, Giphy, GfyCat, Imgur, Google +, GitHub Gists, Storify, SlideShare, Streamable, Vidme, Reddit, Dailymotion, Spotify, Tableau, Prezi, Apester, QZZR, Tidal, MLB. Well over two thousand of providers and keeps growing.

\n

Test your URL here to check if we support it.

\n

Iframely also generates and hosts summary cards as URL previews for general articles. It includes your own site, and Iframely can replace the default embed cards that your publish via WordPress for other sites to use.

\n

API key and paid/free

\n

Powered by Iframely cloud service and requires an account with us. Grab an API key for extended trial at iframely.com, or test the plugin out without an API key.

\n

Before you push the plugin to production, a service subscription is required to avoid any possible disruptions.

\n

We maintain an overwhelming number of integrations and widgets in the background for you, and make sure your sites remains fast and keeps your users happy. This requires a substantial effort on our part, and we won’t be able to provide it without requiring a service subscription.

\n

How to use:

\n

The plugin works the same way the standard oEmbed is supported by WordPress: URL on a separate line.

\n

For example,

\n
Check out this cool video:\n\nhttp://your.url/here\n\nThat was a cool video.\n
\n

Iframely also has its own shortcode [iframely]http://your.url/here[/iframely].

\n

Heads-up:

\n

Iframely does not simply wrap URLs with <iframe src=...> code. That’s not what Iframely is for. We can only match URLs to the known embed codes if publisher offers them for manual copy-paste, or generate a summary card for URL preview if a publisher provides at least a thumnnail image.

\n

To keep default embed providers

\n

By default, Iframely will inject itself to be the first embeds provider in the list, thus intercepting all URLs. It means that the default providers that are later in the list won’t get called and will thus be disabled.

\n

It means Iframely replaces default YouTube, Vimeo, Twitter, other oEmbed plugins that you might have(like JetPack), etc.

\n

Although we should support the same providers and output the same code, just make it responsive and add extra features, you can still disable such behavior and tell Iframely to only process links that otherwise don’t have an embed provider.

\n

Just choose this option in your settings. It will essentially put Iframely to be the last in the list, be “a catcher”, rather then “an interceptor”.

\n

URL editor options

\n

You can fine-tune many aspects of Iframely on your dashboard at iframely.com. This would include some most common settings for popular rich media publishers. Our support team can also fine-tune many other publishers, just for you.

\n

However, you might need a per-post editor for the widgets options. And, Iframely does provide this too. It’s done via URL options editor, and available for higher-tier plans, or during your initial trial period. Make sure to check it out.

\n

AMP support

\n

Yes, Iframely works nicely with AMP WP plugin. It catches all missing embeds and follow your Iframely settings. But you can also opt to have Iframely for all embeds, including default AMP embeds too. For example, Facebook video will be indeed a nice video without user’s text message.

\n","download_link":"https://downloads.wordpress.org/plugin/iframely.zip","tags":{"embed":"embed","embed-code":"embed code","iframely":"iframely","oembed":"oembed","responsive":"responsive"},"donate_link":"","icons":{"default":"https://s.w.org/plugins/geopattern-icon/iframely.svg"},"wporg":true},{"name":"Pym.js Embeds","slug":"pym-shortcode","version":"1.3.2.4","author":"INN Labs","author_profile":"https://profiles.wordpress.org/automattic","requires":"3.0.1","tested":"5.4.6","requires_php":"5.3","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":1,"support_threads_resolved":0,"active_installs":100,"downloaded":2287,"last_updated":"2020-03-26 6:09pm GMT","added":"2016-06-17","homepage":"https://github.com/INN/pym-shortcode","short_description":"A WordPress block and shortcode for embedding iframes that are responsive horizontally and vertically, using the NPR Visuals Team's Pym.js.","description":"

Pym.js Embeds provides shortcode and Gutenberg block wrappers for embedding responsive iframes using Pym.js, developed by the NPR Visuals Team. Embedded content resizes vertically to match its container’s width.

\n

AMP compatibility is provided by the official AMP plugin.

\n

Pym.js Resources from NPR

\n

You may also want to look at NPR’s Pym.js resources:

\n\n","download_link":"https://downloads.wordpress.org/plugin/pym-shortcode.1.3.2.4.zip","tags":{"embeds":"Embeds","iframe":"iframe","javascript":"javascript","responsive":"responsive","shortcode":"shortcode"},"donate_link":"https://inn.org/donate","icons":{"1x":"https://ps.w.org/pym-shortcode/assets/icon.svg?rev=1944461","svg":"https://ps.w.org/pym-shortcode/assets/icon.svg?rev=1944461"},"wporg":true},{"name":"PWA","slug":"pwa","version":"0.6.0","author":"PWA Plugin Contributors","author_profile":"https://profiles.wordpress.org/westonruter","requires":"5.5","tested":"5.7.2","requires_php":"5.6","rating":84,"ratings":{"1":3,"2":0,"3":0,"4":0,"5":12},"num_ratings":15,"support_threads":7,"support_threads_resolved":5,"active_installs":40000,"downloaded":291196,"last_updated":"2021-03-09 8:50pm GMT","added":"2018-07-12","homepage":"https://github.com/GoogleChromeLabs/pwa-wp","short_description":"WordPress feature plugin to bring Progressive Web App (PWA) capabilities to Core","description":"

\nProgressive Web Apps are user experiences that have the reach of the web, and are:

\n
    \n
  • Reliable – Load instantly and never show the downasaur, even in uncertain network conditions.
  • \n
  • Fast – Respond quickly to user interactions with silky smooth animations and no janky scrolling.
  • \n
  • Engaging – Feel like a natural app on the device, with an immersive user experience.
  • \n
\n

This new level of quality allows Progressive Web Apps to earn a place on the user’s home screen.\n

\n

Continue reading more about Progressive Web Apps (PWA) from Google.

\n

In general a PWA depends on the following technologies to be available:

\n\n

This plugin serves as a place to implement support for these in WordPress with the intention of being proposed for core merge, piece by piece.

\n

This feature plugin is not intended to obsolete the other plugins and themes which turn WordPress sites into PWAs. Rather, this plugin is intended to provide the PWA building blocks and coordination mechanism for these themes and plugins to not reinvent the wheel and also to not conflict with each other. For example, a theme that implements the app shell model should be able to extend the core service worker while a plugin that provides push notifications should be able to do the same. Themes and plugins no longer should have to each create a service worker on their own, something which is inherently problematic because only one service worker can be active at a time: only one service worker can win. If you are developing a plugin or theme that includes a service worker, consider relying on this PWA plugin, or at least only use the built-in implementation as a fallback for when the PWA plugin is not available.

\n

In versions prior to 0.6, no caching strategies were added by default. The only service worker behavior was to serve an offline template when the client’s connection is down or the site is down, and also to serve an error page when the server returns with 500 Internal Server Error. As of 0.6, there is a new “Offline browsing” toggle on the Reading Settings screen in the admin. It is disabled by default, but when enabled a network-first caching strategy is registered for navigations so that the offline page won’t be shown when accessing previously-accessed pages. The network-first strategy is also used for assets from themes, plugins, and WordPress core. In addition, uploaded images get served with a stale-while-revalidate strategy. For all the details on these changes, see the pull request.

\n

Documentation for the plugin can be found on the GitHub project Wiki.

\n

Development of this plugin is done on GitHub. Pull requests welcome. Please see issues reported there before going to the plugin forum.

\n","download_link":"https://downloads.wordpress.org/plugin/pwa.0.6.0.zip","tags":{"https":"https","progressive-web-apps":"progressive web apps","pwa":"pwa","service-workers":"service-workers.","web-app-manifest":"web app manifest"},"donate_link":"","icons":{"1x":"https://ps.w.org/pwa/assets/icon.svg?rev=1908485","2x":"https://ps.w.org/pwa/assets/icon-256x256.png?rev=1908485","svg":"https://ps.w.org/pwa/assets/icon.svg?rev=1908485"},"wporg":true},{"name":"MC4WP: Mailchimp for WordPress","slug":"mailchimp-for-wp","version":"4.8.6","author":"ibericode","author_profile":"https://profiles.wordpress.org/dvankooten","requires":"4.6","tested":"5.8","requires_php":"5.3","rating":96,"ratings":{"1":35,"2":10,"3":16,"4":35,"5":1277},"num_ratings":1373,"support_threads":46,"support_threads_resolved":43,"active_installs":2000000,"downloaded":35686721,"last_updated":"2021-08-04 7:14am GMT","added":"2013-06-19","homepage":"https://www.mc4wp.com/#utm_source=wp-plugin&utm_medium=mailchimp-for-wp&utm_campaign=plugins-page","short_description":"Mailchimp for WordPress, the #1 unofficial Mailchimp plugin.","description":"

Mailchimp for WordPress

\n

Allowing your visitors to subscribe to your newsletter should be easy. With this plugin, it finally is.

\n

This plugin helps you grow your Mailchimp lists and write better newsletters through various methods. You can create good looking opt-in forms or integrate with any existing form on your site, like your comment, contact or checkout form.

\n\n

Some (but not all) features

\n
    \n
  • \n

    Connect with your Mailchimp account in seconds.

    \n
  • \n
  • \n

    Sign-up forms which are good looking, user-friendly and mobile optimized. You have complete control over the form fields and can send anything you like to Mailchimp.

    \n
  • \n
  • \n

    Seamless integration with the following plugins:

    \n
      \n
    • Default WordPress Comment Form
    • \n
    • Default WordPress Registration Form
    • \n
    • Contact Form 7
    • \n
    • WooCommerce
    • \n
    • Gravity Forms
    • \n
    • Ninja Forms 3
    • \n
    • WPForms
    • \n
    • BuddyPress
    • \n
    • MemberPress
    • \n
    • Events Manager
    • \n
    • Easy Digital Downloads
    • \n
    • Give
    • \n
    • UltimateMember
    • \n
    \n
  • \n
  • \n

    A multitude of available add-on plugins and integrations:

    \n\n
  • \n
  • \n

    Well documented. Our knowledge base is updated daily.

    \n
  • \n
  • \n

    Developer friendly. For inspiration, check out our repository of example code snippets.

    \n
  • \n
\n
\n

Become a Premium user

\n

Mailchimp for WordPress has a Premium add-on which comes with several additional benefits.

\n
    \n
  • Multiple forms
  • \n
  • Advanced e-commerce integration for WooCommerce
  • \n
  • Email notifications
  • \n
  • An easy way to style your forms
  • \n
  • Detailed reports & statistics
  • \n
\n

View more Premium features

\n
\n

What is Mailchimp?

\n

Mailchimp is a newsletter service that allows you to send out email campaigns to a list of email subscribers. It is free for lists up to 2000 subscribers, which is why it is the newsletter-service of choice for thousands of businesses.

\n

This plugin allows you to tightly integrate your WordPress site with your Mailchimp account.

\n

If you are not yet using Mailchimp, creating an account is 100% free and only takes you about 30 seconds.

\n

Support

\n

Use the WordPress.org plugin forums for community support where we try to help all of our users. If you found a bug, please create an issue on Github where we can act upon them more efficiently.

\n

If you’re a premium user, please use the email address inside the plugin for support as that will guarantee a faster response time.

\n

Please take a look at the Mailchimp for WordPress knowledge base as well.

\n

Add-on plugins

\n

There are several add-on plugins available, which help you get even more out of your site.

\n

Translations

\n

You can help translate Mailchimp for WordPress into your language using your WordPress.org account.

\n

Development

\n

This plugin is being developed on GitHub. If you want to collaborate, please look at ibericode/mailchimp-for-wordpress.

\n

Customizing the plugin

\n

The plugin provides various filter & action hooks that allow you to modify or extend default behavior. We’re also maintaining a collection of sample code snippets.

\n","download_link":"https://downloads.wordpress.org/plugin/mailchimp-for-wp.4.8.6.zip","tags":{"email":"email","mailchimp":"mailchimp","marketing":"marketing","mc4wp":"mc4wp","newsletter":"newsletter"},"donate_link":"https://www.mc4wp.com/#utm_source=wp-plugin-repo&utm_medium=mailchimp-for-wp&utm_campaign=donate-link","icons":{"1x":"https://ps.w.org/mailchimp-for-wp/assets/icon-128x128.png?rev=1224577","2x":"https://ps.w.org/mailchimp-for-wp/assets/icon-256x256.png?rev=1224577"},"wporg":true},{"name":"Site Kit by Google","slug":"google-site-kit","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://sitekit.withgoogle.com/","short_description":"

Site Kit is the official WordPress plugin from Google for insights about how people find and use your site. Site Kit is the one-stop solution to deploy, manage, and get insights from critical Google tools to make the site successful on the web. It provides authoritative, up-to-date insights from multiple Google products directly on the

\n

Read More

\n","description":"\n\n\n

Site Kit is the official WordPress plugin from Google for insights about how people find and use your site. Site Kit is the one-stop solution to deploy, manage, and get insights from critical Google tools to make the site successful on the web. It provides authoritative, up-to-date insights from multiple Google products directly on the WordPress dashboard for easy access, all for free.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2019/12/site-kit-by-google-logo-285x160.png","2x":"https://amp-wp.org/wp-content/uploads/2019/12/site-kit-by-google-logo-372x209.png","svg":""},"wporg":false},{"name":"Newspack Blocks","slug":"newspack-blocks","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://github.com/Automattic/newspack-blocks","short_description":"

A collection of useful and easy to use Gutenberg based blocks, developed primarily for the Newspack project.

\n","description":"\n\n\n

A collection of useful and easy to use Gutenberg based blocks, developed primarily for the Newspack project.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2019/11/newspack_blocks-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2019/11/newspack_blocks-372x209.jpg","svg":""},"wporg":false},{"name":"Advanced Ads – Ad Manager & AdSense","slug":"advanced-ads","version":"1.27.0","author":"Thomas Maier, Advanced Ads GmbH","author_profile":"https://profiles.wordpress.org/webzunft","requires":"4.9","tested":"5.8","requires_php":"5.6","rating":98,"ratings":{"1":17,"2":1,"3":9,"4":21,"5":1181},"num_ratings":1229,"support_threads":69,"support_threads_resolved":63,"active_installs":100000,"downloaded":5146011,"last_updated":"2021-08-24 9:21am GMT","added":"2014-06-23","homepage":"https://wpadvancedads.com","short_description":"Manage and optimize all ad types. Support for Google AdSense Auto ads, Amazon, image banners, HTML, page builder, ad widget, ad rotations, ads.txt","description":"

Are you looking for a simple ad manager plugin? These are the top arguments to use Advanced Ads:

\n
    \n
  • approved in publishing and ad optimization since 2009
  • \n
  • works with all ad types and networks, including Google AdSense, Google Ad Manager (formerly Google DoubleClick for Publishers, DFP), Amazon ads, or media.net ads
  • \n
  • most features to test and optimize ads
  • \n
  • unlimited ad units
  • \n
  • ads.txt support
  • \n
  • dedicated ad block for the block editor
  • \n
  • Google AdSense Partner, who implements all technical changes early and in 100% compliance with the Google AdSense policies
  • \n
  • the only advertising solution with Ad Health integration and Google AdSense violation checks
  • \n
  • best rated free support
  • \n
\n

This is what our users are saying about Advanced Ads:

\n
\n

We use this plugin to deliver rotating ads on a community news site, and it’s great. Both feature-rich and reliable, your imagination is the limit when it comes to the product you want to create for your users. We’ve delivered over a million ad impressions since we launched less than a year ago, using a combination of sidebar, top, sticky and in-content placements — both HTML5 and images. Advanced Ads makes it easy for our small team to deliver a good experience to our users and our advertisers.
\n mytown304 on wp.org

\n
\n

Would you like to know if there is a certain feature, what the optimized setup would be, or how to implement your client’s demands? Just open a thread in the forum!

\n

Advanced Ads allowed us to grow from 0 to 100 MM monthly ad impressions. Benefit from our experience as a publisher and monetize your website today!

\n

Full Feature List.

\n

ad management

\n
    \n
  • create and display unlimited ad units
  • \n
  • rotate ads
  • \n
  • schedule ads and set start time and expiration date
  • \n
  • target ads by content and user groups
  • \n
  • inject ads into posts and pages automatically without coding
  • \n
\n

ad types

\n

choose between different ad types that enable you to:

\n
    \n
  • insert ads and banners from all ad and affiliate networks (e.g., Google AdSense, Amazon, BuySellAds, Google Ad Manager (formerly Google DoubleClick for Publishers, DFP), Ezoic, media.net, Booking.com, Tradedoubler, Awin, Getyourguide, The Moneytizer, Infolinks…)
  • \n
  • dedicated support for all types of Google AdSense ads, including text and display ads, native ads (In-article, In-feed, matched content), Auto ads, and Auto ads for AMP
  • \n
  • display images and image banners
  • \n
  • create content-rich ads with the WordPress TinyMCE editor
  • \n
  • insert contextual Amazon Native Shopping Ads
  • \n
  • inject HTML, CSS, Javascript or PHP code
  • \n
  • use shortcodes within ads (to also deliver advertisements from another ad plugin like Ad Inserter, AdRotate, Quick AdSense, WP Bannerize, or the Google AdSense Plugin WP QUADS)
  • \n
\n

display ads for WP

\n
    \n
  • auto-inject ads via placements
  • \n
  • use functions to display ads in template files
  • \n
  • use shortcodes to place ads manually in post content
  • \n
  • show ads in the sidebar and in widgets
  • \n
  • disable all ads on specific pages
  • \n
  • display multiple ads (ad blocks)
  • \n
  • display a customizable ad label, e.g., “Advertisements” above each banner ad
  • \n
\n

display conditions

\n

show ads based on conditions like:

\n
    \n
  • individual posts, pages, and other post types
  • \n
  • posts by category, tags, taxonomies, author, and age
  • \n
  • archive pages by category, tags, taxonomies
  • \n
  • special page types like 404, attachment and front page
  • \n
  • hide ads on secondary queries (e.g., posts in sidebars)
  • \n
  • display or hide banners within the post feed
  • \n
  • hide all ads from specific page types, e.g., 404 pages, feed
  • \n
  • hide ads from bots and web crawlers
  • \n
\n

visitor conditions

\n

serve ads by conditions based on the visitor. List of all visitor conditions

\n
    \n
  • display or hide a banner by device: mobile and tablet or desktop
  • \n
  • display or hide a banner by role and for logged-in visitors
  • \n
  • advanced visitor conditions: previously visited URL (referrer), user capability, browser language, browser and device, URL parameters included in Pro
  • \n
  • display ads by geolocation with the Geo Targeting add-on
  • \n
  • display ads by browser width with the Responsive add-on
  • \n
\n
\n

Fantastic plugin and outstanding support
\n I tried at least three other ad plugins for WordPress and ‘Advanced Ads’ is by and far the best one. Last but not least in the support. The first port of call are a number of excellent tutorials. And finally the hands on support. I don’t quite know how he does it but the speed and depth of responses are absolutely amazing.
\n djsawyer on wp.org

\n
\n

ad injection | placements

\n

Placements to insert ads in pre-defined positions in your theme and content. List of all placements

\n
    \n
  • ads after any given paragraph, headline, image, or other HTML element
  • \n
  • ads at the top or bottom of the post content
  • \n
  • ads before closing </head> tag
  • \n
  • ads in the footer
  • \n
  • test placements against each other with Pro (A/B testing)
  • \n
  • many more ad positions with add-ons
  • \n
  • automatic insertion of any kind of code into header or footer, not only advertising
  • \n
\n

mobile devices

\n
    \n
  • display ads on mobile and tablets or desktop only
  • \n
  • display responsive image ads
  • \n
  • ads for specific browser sizes only using Responsive Ads
  • \n
  • inserting ads on AMP pages with Responsive Ads
  • \n
\n

Google AdSense

\n

Amazing features of the most powerful and easy Google AdSense plugin.

\n
    \n
  • unlimited Google AdSense ads banners
  • \n
  • pull ad units directly from your Google AdSense account
  • \n
  • show AdSense revenue in WP Admin
  • \n
  • change settings of your Google AdSense ads directly from your WordPress backend
  • \n
  • supports all Google AdSense ad types, including Google AdSense display ads, native ads like In-feed ads, In-article ads, matched content ads, Google AdSense Auto ads, and Google AdSense Auto ads for AMP
  • \n
  • change type and sizes of AdSense ads without going into your Google AdSense account
  • \n
  • hide Google AdSense advertisements on 404 pages by default (to comply with Google AdSense terms)
  • \n
  • insert Google AdSense code for verification and AdSense Auto Ads
  • \n
  • enable AdSense Auto ads on AMP
  • \n
  • easy Ad Health integration and Google AdSense violation checks
  • \n
  • option to remove the Google AdSense background color
  • \n
  • place Google AdSense In-feed ads using the also free In-feed add-on
  • \n
  • assistant for exact sizes of responsive Google AdSense ads with the Responsive add-on
  • \n
  • convert Google AdSense ads into AMP ads automatically with the Responsive add-on
  • \n
  • ads.txt generated with the correct AdSense information automatically
  • \n
  • works along with Google Site Kit or can replace it if you want to control your ad placements
  • \n
\n

\n

\n

Like j4ckson185, there are thousands of happy AdSense users:

\n
\n

Your app is awesome, congratulations! Google Adsense suggests using your app on its official website, it’s incredible!

\n
\n

ads.txt

\n
    \n
  • generates an ads.txt with custom content
  • \n
  • adds the content for AdSense to the ads.txt automatically
  • \n
\n

\n

\n

ad blocker

\n
    \n
  • basic features to prevent ads from being removed by AdBlock and other ad blockers
  • \n
  • prevent ad blockers from breaking sites where plugin scripts are running
  • \n
  • ad blocking detection: show alternative content to ad block users with Pro and improve the monetization of your website
  • \n
\n

Learn more on the plugin homepage.

\n

Thank you for motivating us with your positive review.

\n

Localizations: Arabic, Chinese, Czech, Danish, Dutch, English, French, German, Hungarian, Italian, Japanese, Norwegian, Polish, Portuguese, Russian, Slovak, Spanish, Turkish, Vietnamese

\n
\n

Add-Ons

\n
    \n
  • all add-ons include priority email support
  • \n
  • Advanced Ads Pro – powerful tools for ad optimizations: cache-busting, more placements, lazy loading, ad blocker module, click fraud protection, and many more
  • \n
  • Tracking – track ad impressions and ad clicks with local methods or Google Analytics
  • \n
  • Responsive Ads – target ads to specific browser sizes and create ads for AMP
  • \n
  • Google Ad Manager Integration – a quick and error-free way to load ad units from your Google Ad Manager (formerly Google DoubleClick for Publishers, DFP) account without touching any ad codes
  • \n
  • Geo Targeting – display ads based on the geo location of the visitor
  • \n
  • Sticky Ads – increase click rates with fixed, sticky, and anchor ads
  • \n
  • Fixed Widget for WordPress – turn sidebar widgets into performant fixed sticky ads
  • \n
  • PopUp and Layer Ads – display ads and other content in layers and popups
  • \n
  • Selling Ads – allows you to sell ads on your website fully automated, including payments and advertiser profiles.
  • \n
  • Ad Slider – create a simple slider from your ads
  • \n
\n
\n

If you have problems with Advanced Ads, please reach out to our support or open a new topic in our forums on wordpress.org
\n.

\n

Integrations

\n

Advanced Ads integrates with plenty of other plugins:

\n\n","download_link":"https://downloads.wordpress.org/plugin/advanced-ads.1.27.0.zip","tags":{"ad-manager":"ad manager","ad-rotation":"ad rotation","ads":"ads","adsense":"adsense","banner":"banner"},"donate_link":"","icons":{"1x":"https://ps.w.org/advanced-ads/assets/icon-128x128.gif?rev=2293174","2x":"https://ps.w.org/advanced-ads/assets/icon-256x256.gif?rev=2293174"},"wporg":true},{"name":"Syntax-highlighting Code Block (with Server-side Rendering)","slug":"syntax-highlighting-code-block","version":"1.3.1","author":"Weston Ruter","author_profile":"https://profiles.wordpress.org/westonruter","requires":"5.5","tested":"5.7.2","requires_php":"5.6","rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":17},"num_ratings":17,"support_threads":1,"support_threads_resolved":1,"active_installs":1000,"downloaded":11948,"last_updated":"2021-03-09 8:51pm GMT","added":"2019-07-30","homepage":"https://github.com/westonruter/syntax-highlighting-code-block","short_description":"Extending the Code block with syntax highlighting rendered on the server, thus being AMP-compatible and having faster frontend performance.","description":"

This plugin extends the Code block in WordPress core to add syntax highlighting which is rendered on the server. Pre-existing Code blocks on a site are automatically extended to include syntax highlighting. Doing server-side syntax highlighting eliminates the need to enqueue any JavaScript on the frontend (e.g. Highlight.js or Prism.js) and this ensures there is no flash of unhighlighted code (FOUC?). Reducing script on the frontend improves frontend performance and it also allows for the syntax highlighted code to appear properly in AMP pages as rendered by the official AMP plugin (see also ampproject/amp-wp#972) or when JavaScript is turned off in the browser.

\n

In addition to not adding any JavaScript to the frontend, the stylesheets needed for styling the Code block will only be added to the page if there is a Code block present. The stylesheets are added inline when the Code block is rendered, ensuring that they do not block rendering of any content higher in the page. If stylesheets fail to load for any reason, the block simply renders without styling, with one key exception: highlighted lines are wrapped in mark elements so they’ll get highlighted regardless, including in RSS Feeds and posts syndicated in email (as long as the mark element is supported in the client).

\n

This extended Code block uses language auto-detection to add syntax highlighting, but you can override the language in the block’s settings sidebar. (There is currently no syntax highlighting of the Code block in the editor.) The plugin supports all programming languages that highlight.php supports (being a port of highlight.js). The Code block also is extended to support specifying the aforementioned highlighted lines. There is also a checkbox for whether to show line numbers on the frontend (with the numbers being non-selectable). Lastly, given inconsistencies across themes as to whether lines in a Code block should be wrapped, this plugin adds styling to force them to no-wrap by default, with a checkbox to opt-in to wrapping when desired.

\n

For advanced usage, please see the plugin wiki.

\n

This plugin is developed on GitHub. See list of current issues with the plugin. Please feel free to file any additional issues or requests that you may come across. Pull requests are welcome.

\n

Credits

\n

This is a fork of Code Syntax Block by Marcus Kazmierczak (mkaz), which is also available on WordPress.org. Copyright (c) 2018 Marcus Kazmierczak. Licensed under GPL 2.0 or later.

\n

highlight.php is released under the BSD 3-Clause License. Copyright © 2006-2013, Ivan Sagalaev (maniac@softwaremaniacs.org), highlight.js (original author). Copyright © 2013, Geert Bergman (geert@scrivo.nl), highlight.php

\n","download_link":"https://downloads.wordpress.org/plugin/syntax-highlighting-code-block.1.3.1.zip","tags":{"block":"block","code":"code","code-highlighting":"code highlighting","code-syntax":"code syntax","syntax-highlight":"syntax highlight"},"donate_link":"","icons":{"1x":"https://ps.w.org/syntax-highlighting-code-block/assets/icon.svg?rev=2131108","2x":"https://ps.w.org/syntax-highlighting-code-block/assets/icon-256x256.png?rev=2131108","svg":"https://ps.w.org/syntax-highlighting-code-block/assets/icon.svg?rev=2131108"},"wporg":true},{"name":"Contact Form by WPForms – Drag & Drop Form Builder for WordPress","slug":"wpforms-lite","version":"1.6.9","author":"WPForms","author_profile":"https://profiles.wordpress.org/jaredatch","requires":"4.9","tested":"5.8","requires_php":"5.5","rating":98,"ratings":{"1":210,"2":46,"3":54,"4":219,"5":9567},"num_ratings":10096,"support_threads":96,"support_threads_resolved":83,"active_installs":4000000,"downloaded":81432246,"last_updated":"2021-08-26 11:06am GMT","added":"2016-03-14","homepage":"https://wpforms.com","short_description":"The best WordPress contact form plugin. Drag & Drop online form builder that helps you…","description":"

WordPress Contact Form Builder Plugin

\n

We believe that you shouldn’t have to hire a developer to create a WordPress contact form. That’s why we built WPForms, a drag & drop WordPress form builder that’s EASY and POWERFUL.

\n

WPForms allows you to create beautiful contact forms, feedback form, subscription forms, payment forms, and other types of forms for your site in minutes, not hours!

\n

At WPForms, user experience is our #1 priority. Our pre-built form templates and workflows make WPForms the most beginner friendly contact form plugin in the market.

\n

The WPForms Challenge guides you through creating your first form in under 5 minutes. We walk you through using the form builder all the way to adding a form to a page on your site! WPForms includes integrations for popular page builders like the WordPress Block Editor (Gutenberg), Classic Editor, Elementor, and Divi making the whole process seamless.

\n

WPForms is a 100% mobile responsive contact form solution, so your contact forms will always look great on all devices (mobile, tablet, laptop, and desktop).

\n

WPForms’ contact forms are also highly optimized for web and server performance because we understand the importance of speed when it comes to SEO, marketing, and conversion. We can honestly say that WPForms is one of the fastest WordPress contact form builder plugins in the world.

\n
\n

WPForms Pro
\n This plugin is the lite version of the WPForms Pro plugin that comes with all the contact form features you will ever need including email subscription forms, multi-page contact forms, file uploads, conditional logic, payment integrations, form templates, and tons more. Click here to purchase the best premium WordPress contact form plugin now!

\n
\n

We took the pain out of creating contact forms and made it easy. Here’s why smart business owners, designers, and developers love WPForms, and you will too!

\n

\n

Drag & Drop Contact Form Builder

\n

We were tired of the bloated and buggy contact form builder plugins. That’s why we built WPForms to adapt to your workflow and allow you to create custom contact forms in minutes. By using our easy to use drag and drop online form builder, you can easily add custom form fields, rearrange them, and basically create a complete contact form in 5 minutes or less.

\n

But don’t just take our word. See what one of the WordPress experts are saying:

\n
\n

WPForms is by far the easiest form plugin to use. My clients love WPForms and it’s one of the few plugins they can use without any training. As a developer I appreciate how fast, modern, clean and extensible it is.
\n Bill Erickson – Expert WordPress Consultant

\n
\n

Pre-built Form Templates

\n

Building contact forms in WordPress can be time consuming. Why?

\n

Because every other WordPress contact form builder plugin requires you to build your contact form from scratch. The truth is it’s often not necessary to create a contact form completely from scratch unless you really want to.

\n

Whether you’re looking to create a simple contact form, marketing form, request a quote form, donation form, payment order form, registration form, or a subscription form, we have a form template for you inside our contact form builder.

\n

WPForms comes with pre-built form templates to help you save time. You can add, remove, or re-arrange fields as necessary.

\n

See 100+ Pre-Made WPForms Form Template Demo

\n

Mobile Ready, SEO Friendly and Optimized for Speed

\n

WPForms’ contact forms are 100% responsive and mobile-friendly by default. We also optimized every query on the front-end and the back-end to ensure maximum speed – Yes, WPForms is one of the fastest WordPress contact form plugin.

\n

You can embed your contact form on any page with optimized title and description. With the speed and proper formatting, WPForms is also one of the most SEO friendly contact form plugin.

\n

All the Fields & Features that You Need to Succeed

\n

From star ratings to file uploads to multi-page contact forms with progress bar, we have all the fields you need.

\n

You can easily integrate your contact forms with an email marketing service or collect payments for bookings and orders. WPForms allows you to do it all.

\n

The best part is, you can do it all without hiring a developer.

\n

See what one business owner has to say about WPForms’ contact form:

\n
\n

As a business owner, time is my most valuable asset. WPForms allow me to create smart contact forms with just a few clicks. With their pre-built form templates and the drag & drop builder, I can create a new form that works in less than 2 minutes without writing a single line of code. Well worth the investment.
\n David Henzel – Co-founder of MaxCDN

\n
\n

Surveys & Polls

\n

Along with contact form, you can also use WPForms to create surveys and polls.

\n

Our WordPress Survey plugin addon comes with smart survey fields including likert scale, star ratings, multiple choice, Net Promoter Score (NPS), and more, so you can create custom survey forms like Survey Monkey (without the high costs).

\n

WPForms offer the best-in class survey reporting. You can use our interactive reports to customize the graphs, export them for your presentations, and even display the aggregate results to your users.

\n

The best part about WPForms survey reports is that it can retroactively work on any old contact form or feedback survey contact form created with WPForms.

\n

Thousands of businesses love WPForms surveys for creating employee feedback form, customer feedback form, online petition form, and more.

\n

You can also use the surveys & polls addon to easily create a poll on your site. To save you time when creating a user poll, we have added a built-in poll forms template. Our poll feature offers real-time reports, so you can share poll results with the user immediately after they submit their vote.

\n

Just like the contact form, you can embed your surveys and polls inside any post, page, or widget area in WordPress.

\n

Membership and Default WordPress Forms

\n

Aside from building simple contact forms which every WordPress site needs, WPForms also helps you create better default WordPress forms.

\n

For example, you can use WPForms to create custom WordPress login forms and custom WordPress user registration forms which are great for membership sites.

\n

For membership sites, you can also use WPForms to create a password-protected contact form or even a members only contact form which is restricited to logged-in users only.

\n

Even if you’re not using a WordPress membership plugin, you can use WPForms to create membership registration forms, online RSVP forms, and other address book contact forms.

\n

Bloggers and publishers can use our WordPress post submission forms to accept guest posts, testimonials contact form to collect testiomnials, and partnership agreement forms to grow their business.

\n

Payment Form, Donation Form, Booking Form, and More

\n

While WPForms started out as a contact form plugin, it has evolved into a powerful custom forms solution that you can use to create a payment form, donation form, registration form, online booking form, mobile form, and basically any type of custom form you need.

\n

WPForms integrates with both PayPal and Stripe, so you can easily create a credit card payment form to accept payments on your website. If you’re using SSL, then you can use our Stripe Payment form to accept credit card payments. Alternatively you can use our PayPal payment form to make a donation form and accept payments online.

\n

Aside from simple order forms, business owners also use WPForms to create custom product purchase forms, t-shirt order forms, online booking forms, and more.

\n

We understand that sometimes you may need to create a contact form that require a signature. WPForms comes with a signature field to collect user signature on your WordPress forms or even create custom signature forms.

\n

You can do all of this while still using the same easy-to-use contact form builder that’s loved by over 4 million users.

\n
\n

I am so impressed with this plugin. I decided to give it a shot over some of the other form plugins, and I am so glad I did. It works well, is so easy to use and customize. The support is amazing on top of it all. I got the pro version because I was so pleased. Highly recommend.
\n Micky73 – WordPress user

\n
\n

Forms that are Optimized for Conversion and Results

\n

With our Form Pages addon, you can create distraction-free custom form landing pages like Google Forms and Wufoo right inside WordPress, so you can increase conversions without the high costs (See Form Pages Demo).

\n

To improve form completion rate, we created Conversational Forms® which helps you make your generic feedback form and other custom contact forms feel more human by adding an interactive form layout. Our conversational forms are similar to Typeform without the high subscription costs (See Conversational Forms Demo).

\n

WPForms also has other conversion optimization features such as our smart form logic that lets you create dynamic contact forms where fields change based on user’s answer, multi-page contact forms with progress bar, and other advanced contact forms.

\n

WPForms form analytics integration with MonsterInsights allow you to easily track your lead capture forms, newsletter signup forms, request a quote contact form, and other important forms on your site.

\n

Easy to Customize and Extend

\n

You can easily customize your contact forms with our section dividers, HTML blocks, and custom CSS.

\n

If you’re using Elementor or Divi page builders our native integrations let you easily customize the style of your forms.

\n

We also knew that our developer friends may want to extend simple contact forms further. That’s why WPForms come with tons of hooks and filters to create custom functionality.

\n

Since contact forms are essential for marketing, WPForms is a must have plugin for every website!

\n

Full WPForms Feature List

\n
    \n
  • Online Form Builder – Our powerful drag & drop contact form builder allows you to easily create WordPress contact forms and other online forms in just a few minutes without writing any code.
  • \n
  • 100% Responsive – Mobile Friendly contact forms.
  • \n
  • GDPR Friendly – Make your contact form GDPR compatible with just a few clicks.
  • \n
  • Form Templates – Use our pre-built form templates to save time. Never start from scratch again (see all form templates demos).
  • \n
  • Spam Protection – WPForms provides smart anti-spam protection out-of-the-box, plus direct integrations with hCaptcha and Google reCAPTCHA.
  • \n
  • Instant Form Notification – Quickly respond to incoming inquiries with our instant contact form notification system.
  • \n
  • Smart Form Confirmation – Show a custom success message, or redirect users to a custom thank you page.
  • \n
  • File Uploads – Collect files and media through your contact forms with File Uploads.
  • \n
  • Multi-Page Forms – Split long forms into multiple pages with progress bar to improve user experience.
  • \n
  • Smart Conditional Logic – Show or hide fields and contact form sections based on user behavior.
  • \n
  • Signature Forms – Create signature forms or add the signature field to your contact form, application form, booking form, etc.
  • \n
  • User Registration Forms – Create custom user registration form and custom login form in WordPress.
  • \n
  • Post Submissions – Collect user-submitted content in WordPress with our front-end post submission form. Great for guest posts, testimonials, business directory, listings, etc.
  • \n
  • Geolocation – Display location information about your users.
  • \n
  • Custom Captchas – Create custom captchas for your contact form.
  • \n
  • Surveys and Polls – Easily create surveys forms and analyze the data with interactive reports.
  • \n
  • Form Abandonment – Unlock more leads and grow your business with partial-form submission.
  • \n
  • Form Locker – Manage form permissions and add access control rules including password-protected forms, members only forms, limit contact form entry per person, close form after specific date / time, etc.
  • \n
  • Offline Forms – Let your visitors save their entered data offline and submit when their internet connection is restored.
  • \n
  • Form Landing Pages – Create “distraction-free” form landing pages to boost conversions. Great Google Forms and Wufoo alternative.
  • \n
  • Conversational Forms – Interactive form layout that makes your form feels more human and boost overall completion rate. Great for surveys and registration forms. Perfect Typeform alternative for WordPress without the high costs.
  • \n
  • Webhooks – Send form entry data to secondary tools and external services. No code required, and no need for a third party connector.
  • \n
  • User Journey Reporting – Discover the steps your visitors take before they submit your forms. Right in the WordPress dashboard, you can easily see the content that’s driving the most valuable form conversions.
  • \n
\n

Integrations

\n
    \n
  • PayPal Payment Forms – Create PayPal forms to easily collect payments, donations, and online orders.
  • \n
  • Stripe Forms – Easily collect credit card payments, donations, and online orders with our Stripe addon.
  • \n
  • Authorize.Net Forms – Connect your WordPress site with Authorize.Net to collect payments, donations, and online orders.
  • \n
  • Mailchimp Forms – Create Mailchimp newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • AWeber Forms – Create AWeber newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • Campaign Monitor Forms – Create Campaign Monitor newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • GetResponse Forms – Create GetResponse newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • Constant Contact Forms – Create Constant Contact newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • Drip Forms – Create Drip newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • ActiveCampaign Forms – Add contacts to your ActiveCampaign account, record events, add notes to contacts, and more.
  • \n
  • Sendinblue Forms – Create Sendinblue forms to automate your marketing and engage your subscribers.
  • \n
  • Salesforce Forms – Easily send your WordPress form contacts and leads to your Salesforce CRM account.
  • \n
  • Zapier Addon – Connect your WordPress forms with over 1000+ apps. Route your contact form data to your favorite CRM, email marketing service, etc.
  • \n
\n

After reading this feature list, you can probably imagine why WPForms is the best WordPress contact form plugin in the market.

\n

Give WPForms a try.

\n

Want to unlock more features? Upgrade to our Pro version.

\n

Credits

\n

This plugin is created by Jared Atchison and Syed Balkhi.

\n

Branding Guideline

\n

WPForms® is a registered trademark of WPForms LLC. When writing about the contact form plugin by WPForms, please make sure to uppercase the initial 3 letters.

\n
    \n
  • WPForms (correct)
  • \n
  • WP Forms (incorrect)
  • \n
  • wpforms (incorrect)
  • \n
  • wpform (incorrect)
  • \n
\n

What’s Next

\n

If you like this plugin, then consider checking out our other projects:

\n
    \n
  • OptinMonster – Get More Email Subscribers with the most popular conversion optimization plugin for WordPress.
  • \n
  • MonsterInsights – See the stats that matter and grow your business with confidence. The best Google Analytics plugin for WordPress.
  • \n
  • SeedProd – Create beautiful landing pages with our powerful drag & drop landing page builder.
  • \n
  • WP Mail SMTP – Improve email deliverability for your contact form with the most popular SMTP plugin for WordPress.
  • \n
  • RafflePress – Best WordPress giveaway and contest plugin to grow traffic and social followers.
  • \n
  • Smash Baloon – #1 social feeds plugin for WordPress – display social media content in WordPress without code.
  • \n
  • AIOSEO – The original WordPress SEO plugin to help you rank higher in search results (trusted by over 2 million sites).
  • \n
  • Push Engage – Connect with visitors after they leave your website with the leading web push notification plugin.
  • \n
  • TrustPulse – Add real-time social proof notifications to boost your store conversions by up to 15%.
  • \n
\n

Visit WPBeginner to learn from our WordPress Tutorials and find out about other best WordPress plugins.

\n

Notes

\n

WPForms is absolutely, positively the most beginner friendly WordPress contact form plugin on the market. It is both easy and powerful.

\n

We took the pain out of creating online forms and made it easy. Check out all WPForms features.

\n

Also, I’m the founder of WPBeginner, the largest WordPress resource site for beginners. It was a huge priority for me to make a WordPress contact form plugin that beginners can use without any training.

\n

I feel that we have done that here. I hope you enjoy using WPForms.

\n

Thank you

\n

Syed Balkhi

\n","download_link":"https://downloads.wordpress.org/plugin/wpforms-lite.1.6.9.zip","tags":{"contact-form":"contact form","contact-form-plugin":"contact form plugin","custom-form":"custom form","form-builder":"form builder","forms":"forms"},"donate_link":"","icons":{"1x":"https://ps.w.org/wpforms-lite/assets/icon.svg?rev=2574198","2x":"https://ps.w.org/wpforms-lite/assets/icon-256x256.png?rev=2574201","svg":"https://ps.w.org/wpforms-lite/assets/icon.svg?rev=2574198"},"wporg":true},{"name":"MonsterInsights – Google Analytics Dashboard for WordPress (Website Stats Made Easy)","slug":"google-analytics-for-wordpress","version":"7.18.0","author":"MonsterInsights","author_profile":"https://profiles.wordpress.org/chriscct7","requires":"3.8.0","tested":"5.8","requires_php":"5.2","rating":92,"ratings":{"1":194,"2":39,"3":34,"4":75,"5":2076},"num_ratings":2418,"support_threads":8,"support_threads_resolved":8,"active_installs":3000000,"downloaded":96768014,"last_updated":"2021-08-10 9:06pm GMT","added":"2007-09-14","homepage":"https://www.monsterinsights.com/?utm_source=liteplugin&utm_medium=pluginheader&utm_campaign=pluginurl&utm_content=7%2E0%2E0","short_description":"The best free Google Analytics plugin for WordPress. See how visitors find and use your website, so you can grow your business.","description":"

Google Analytics Plugin for WordPress

\n

With over 3 million active installs, MonsterInsights is the most popular Google Analytics plugin for WordPress.

\n

We believe that it’s easy to double your traffic and sales when you know exactly how people find and use your website. MonsterInsights shows you the analytics and stats that matter, so you can grow your business with confidence.

\n

At MonsterInsights, we make it “effortless” to properly connect your WordPress site with Google Analytics, so you can start making data-driven decisions to grow your business.

\n

Unlike other Google Analytics plugins, MonsterInsights allow you to enable all advanced Google Analytics tracking features with just a few clicks (no need to hire a developer).

\n

The best part is that MonsterInsights comes with an analytics dashboard for WordPress that shows you actionable analytics reports right inside your WordPress dashboard. We have created customized reports that eliminate the fluff and only show you the stats that matter, so you can see exactly what’s working and what’s not!

\n

Simply put, MonsterInsights is the most complete Google Analytics plugin for WordPress that’s both EASY and POWERFUL.

\n

That’s why millions of small businesses and top companies like Microsoft, Bloomberg, FedEx, Yelp, Subway, etc. use MonsterInsights to setup Google Analytics on their WordPress sites.

\n
\n

MonsterInsights Pro
\n This plugin is the lite version of MonsterInsights Pro plugin that comes with all the tracking features you will ever need including events tracking, ecommerce tracking, custom dimensions tracking, page speed reports, popular post tracking, custom dimensions, affiliate link tracking, and tons more. Click here to purchase the best premium Google Analytics plugin for WordPress now!

\n
\n

We took the pain out of installing Google Analytics in WordPress and made it easy. Here’s why over 3 million smart business owners, designers, and developers love MonsterInsights, and you will too!

\n

\n

Quick & Easy Google Analytics Setup

\n

Properly setting up Google Analytics is complicated. You have to either hire a developer or learn how to add advanced code snippets to your website in many different areas. This process can take days or weeks…and can even break your website!

\n

With MonsterInsights, we made it “effortless” to properly setup Google Analytics in WordPress. Yes, you can enable all advanced Google Analytics features with just a few clicks.

\n

If you can point-and-click, then you can set up Google Analytics inside WordPress and start seeing insights in under 15 minutes (no code necessary).

\n

We keep up with all Google Analytics updates, so you can sleep well at night knowing that your website will always stay up to date with the newest features.

\n

See what one business owner is saying about MonsterInsights:

\n
\n

It just works. Really easy way to insert Google Analytics tracking code and keep it there when switching themes. No need to copy/paste code anywhere. This is the best way to handle Google Analytics in WordPress.
\n Steven Gliebe

\n
\n

Google Analytics Dashboard + Real Time Stats

\n

Our goal at MonsterInsights is to make Google Analytics easy and accessible for everyone.

\n

We understand that Google Analytics has a steep learning curve which often prevents small business owners from making informed decisions to grow their business.

\n

That’s why MonsterInsights comes with a built-in Google Analytics Dashboard for your WordPress site, so you can see all the useful information about your visitors right inside your WordPress dashboard without needing to login somewhere else.

\n

We have even created customized reports to help you filter through the noise and see the stats that really matter!

\n
    \n
  • \n

    Audience Report helps you get to know your visitors in a whole new way. It shows you detailed insights like which country your visitors are coming from, what are they most interested in, which device are they using, their age, gender, and a whole lot more. You can use this demographics report and audience clues to tweak your website design and content accordingly.

    \n
  • \n
  • \n

    **Publishers Report ** helps you understand which pages your visitors are arriving, and which pages they are leaving from. Designed specifically for blogs and other resource sites, this powerful report will show you which outbound links are getting clicked so you can easily optimize for higher conversions.

    \n
  • \n
  • \n

    Behavior Report shows you exactly how people find your website, which keywords did they search for, who referred them, what did they click on your site, and more. You can use these useful stats to identify low-hanging fruits, new partnership opportunities, and promotional areas to focus on.

    \n
  • \n
  • \n

    Content Report shows you stats on exactly which content gets the most visits, so you can stop guessing and start creating content that gets more traffic and conversion.

    \n
  • \n
  • \n

    Ecommerce Report shows you important store stats like total revenue, conversion rate, average order value, top referral sources, and more (all in one place).

    \n
  • \n
  • \n

    Forms Report shows you conversion stats for various contact forms and lead forms on your website, so you can improve the conversions to grow your business.

    \n
  • \n
  • \n

    Search Console Report shows you exactly how well your website is ranking in Google, so you can further optimize your SEO to grow your organic traffic.

    \n
  • \n
  • \n

    Custom Dimensions Report helps you dig deeper by showing you useful stats like who are your most popular authors, what are the best publication times, which are your most popular categories or tags, how well are your Yoast focus keywords and SEO score performing, and more.

    \n
  • \n
  • \n

    Site Speed Report makes it easy to track pagespeed insights and loading times for your website and get the information you need to improve user experience and your SEO rankings.

    \n
  • \n
\n

Our custom Google Analytics Dashboard reports are based on over 12+ years of online business experience. We built MonsterInsights to be the Google Analytics plugin that we wish we had.

\n

We currently use MonsterInsights on all our portfolio companies which include both media sites generating tens of millions of pageviews and eCommerce sites generating millions in sales.

\n

That’s why we can confidently say that MonsterInsights is the ultimate Google Analytics Shortcut for seeing the stats that matter and making data-driven decisions to grow your business.

\n
\n

I love being able to drill down into the analytics via the reporting feature. I have the PRO version and it makes a big difference what you can analyze. I’m glad that I can integrate with Pretty Links too!
\n Kim Beasley – MonsterInsights user

\n
\n

Google Analytics Enhanced Ecommerce Tracking Made Easy

\n

Google Analytics Enhanced Ecommerce tracking is a powerful feature that lets you track user behavior across your online store starting from product views to checkout page to thank you page and beyond.

\n

With MonsterInsights’ easy WooCommerce integration, you can setup WooCommerce analytics with literally 1-click.

\n

Once you have enabled WooCommerce tracking, MonsterInsights will show you all important WooCommerce metrics in a single dashboard including WooCommerce conversion rate, top products in your WooCommerce store, total transactions, total revenue, average order value, top referral sources, and more.

\n

Our WooCommerce analytics report also includes other detailed WooCommerce event tracking data like total add to carts, total removed from cart, time to purchase, and sessions to purchase.

\n

For those who want to go beyond our WooCommerce stats dashboard, you can easily open up the Google Analytics dashboard to combine WooCommerce data with other secondary dimensions and filters to find exactly what you’re looking for.

\n

Aside from WooCommerce Google Analytics integration, MonsterInsights’ eCommerce addon also offers seamless integration for the Easy Digital Downloads plugin.

\n

Our Easy Digital Downloads Google Analytics integration allows you to set up Enhanced Ecommerce Tracking on your store with just 1-click.

\n

Simply put, MonsterInsights’ Enhanced Ecommerce for WordPress feature is by far the easiest and most powerful in the market.

\n

Google Analytics + GDPR Compliance

\n

MonsterInsights helps make Google Analytics GDPR compliance easier for business owners.

\n

Our EU compliance addon allows you to:

\n
    \n
  • Anonymize IP in Google Analytics
  • \n
  • Disable the Demographics and Interest Reports for Remarketing and Advertising
  • \n
  • Disable UserID and author name tracking
  • \n
  • Enable the ga() compatibility mode
  • \n
  • Integrate with Cookie Notice and CookieBot plugins to collect user consent before tracking
  • \n
  • Integrate with Google AMP Consent Box before enable tracking
  • \n
  • Integrate with Google Analytics’s Chrome browser opt-out extension and built-in cookie opt-out system
  • \n
  • Offer Easy Opt Out link for Google Analytics tracking
  • \n
\n

While no single plugin can guarantee 100% GDPR compliance in WordPress, MonsterInsights goes to great length in helping business owners with GDPR compliance.

\n

For more details, see: GDPR and MonsterInsights – Everything You Need to Know.

\n

Universal Tracking + Google Analytics for AMP and Instant Articles

\n

MonsterInsights uses Google Analytics universal tracking, so you can track your users across devices and platforms.

\n

Accelerated Mobile Pages (AMP) is a project by Google that helps you speed up your website. However if you don’t set it up properly, Google AMP can cause you to lose your website analytics. Our Google Analytics AMP integration allows you to have accurate tracking on all AMP enabled pages. It works seamlessly with AMP for WordPress plugin.

\n

We also offer 1-click Google Analytics integration with Facebook Instant Articles.

\n

At MonsterInsights, we always stay ahead of the curve in helping you integrate WordPress with the latest Google Analytics tracking features.

\n
\n

Analytics for PROs! This plugin brings it all, great features and helpful info to easily see what you are doing.
\n Frank van der Sluijs

\n
\n

Google AdSense Tracking and Affiliate Link Tracking

\n

With MonsterInsights Ads tracking addon, publishers can easily track the performance of their Google AdSense Ads inside their Google Analytics dashboard.

\n

Our affiliate link tracking makes it easy for bloggers and affiliate marketers to track their affiliate links with Google Analytics.

\n

MonsterInsights uses event tracking for all WordPress outbound link tracking which is far more accurate than any built-in WordPress analytics solution.

\n

Unlike other WordPress analytics plugin, our Google Analytics affiliate link tracking does NOT slow down your website because all events are recorded via JavaScript and sent straight to your account.

\n

Most other WordPress stats plugin track data on your WordPress hosting server which slows down your website and does not scale for larger websites.

\n

Since our affiliate link tracking uses Google Analytics’ powerful servers, we can skip WordPress entirely.

\n

MonsterInsights’ affiliate link tracking feature works with all WordPress affiliate link management plugins including Pretty Links, Thirsty Affiliates, and others.

\n

Custom Dimensions Tracking, Custom Google Analytics Event Tracking, and More

\n

Our Google Analytics event tracking feature for WordPress doesn’t just stop at affiliate link tracking.

\n

You can use MonsterInsights custom Google analytics event tracking feature to easily add outbound-link tracking, file downloads tracking, call-to-action button tracking, hashmark tracking, telephone link tracking, and more.

\n

Our powerful Forms Tracking addon uses Google Analytics custom event tracking feature to enable form analytics in WordPress. With just 1-click, you can enable form conversion tracking for your contact forms, lead generation forms, registration forms, surveys, and any other type of form in WordPress.

\n

MonsterInsights’ Custom Dimensions addon allows you to push WordPress analytics even further. You can use Google Analytics custom dimensions to generate helpful WordPress stats for:

\n
    \n
  • Author Tracking – see stats for each author to find which author’s posts generate the most traffic.
  • \n
  • Post Type Tracking – see stats for WordPress post types to find out which sections are performing the best.
  • \n
  • Category Tracking – see stats for your WordPress categories to find out which sections of your sites are the most popular.
  • \n
  • Tags Tracking – see stats for your WordPress tags to find out which tags are the most popular.
  • \n
  • SEO Score Tracking – see stats for your Yoast SEO score and see how it impacts your traffic.
  • \n
  • Focus Keyword Tracking – see stats for Yoast focus keyword and see how it correlates with your traffic.
  • \n
  • Logged-in User Tracking – see WordPress stats for what percentage of your users are logged-in.
  • \n
  • User ID Tracking – see stats for each individual logged-in user’s activity through User ID custom dimension – great for Ecommerce and membership sites.
  • \n
  • Published Time Tracking – track the performance of your posts based on their published time.
  • \n
\n

Simply put, MonsterInsights allow you to take full advantage of all the powerful Google Analytics features.

\n
\n

I like how simple it is for client users and how I can turn on the advanced features for myself to get all the details right.
\n Skip Shean

\n
\n

Google Analytics Dashboard Plugin for WordPress Multisite Networks

\n

MonsterInsights is the most popular analytics plugin for adding Google Analytics to WordPress multisite.

\n

We have built-in all permissions and controls that you would need to successfully run Google Analytics on a WordPress multi-site.

\n

You can control who has access to view the Google Analytics Dashboard report in WordPress. Our permissions setting allows you to hide analytics reports for specific user roles.

\n

Similarly, we understand that some sites may want to exclude logged-in users from tracking. MonsterInsights gives you granular control to exclude admin in Analytics as well as other user roles.

\n

Our performance addon allows you to adjust sample rate and site speed sample rates for Google Analytics.

\n

By now you can probably see why MonsterInsights has become the most popular Google Analytics plugin for WordPress.

\n

We understand Google Analytics better than any other analytics plugin for WordPress.

\n

Full MonsterInsights Feature List

\n
    \n
  • Quick and Easy Setup – Easily setup Google Analytics for WordPress with just a few clicks (no coding needed)
  • \n
  • Real Time Stats – See real time stats inside your Google Analytics dashboard.
  • \n
  • Universal Tracking – Get better insights with Google Analytics’ universal tracking.
  • \n
  • Google Analytics Dashboard – See the stats that matter from right inside your WordPress dashboard with custom Publisher Report, Ecommerce report, and Search Console report.
  • \n
  • eCommerce Tracking – Add Google Analytics Ecommerce tracking to WordPress.
  • \n
  • WooCommerce Google Analytics – Add Enhanced Ecommerce Tracking to your WooCommerce store.
  • \n
  • Easy Digital Downloads Google Analytics – Add Enhanced Ecommerce Tracking to your EDD store.
  • \n
  • Ads Tracking – Track your Google Adsense ads with Google Analytics.
  • \n
  • Affiliate Link Tracking – Track your affiliate links and get stats that matter.
  • \n
  • File Download Tracking – Enable file download stats with just a click.
  • \n
  • Custom Link Tracking – Track your outbound link clicks with Google Analytics.
  • \n
  • Events Tracking – Track custom button and banner clicks with Google Analytics.
  • \n
  • Custom Dimensions Tracking – Enable Google analytics custom dimensions tracking for WordPress.
  • \n
  • Author Tracking – See author stats and discover who’s the most popular author on your site.
  • \n
  • Popular Post Tracking – See which blog post and section is the most popular.
  • \n
  • Contextual Insights – Get actionable tips on how to improve engagement and get more visitors based on your site’s traffic.
  • \n
  • Headline Analyzer – Get more clicks and improve SEO following suggestions from our Headline Analyzer directly in the WordPress editor
  • \n
  • Custom Post Type Tracking – Track the performance of your custom post types.
  • \n
  • Referral Tracking – See how visitors are finding your website to better focus your marketing efforts.
  • \n
  • Performance Tracking – Control the performance rate and sample rate for your Google Analytics report.
  • \n
  • Enhanced Link Attribution – Get better analytics with enhanced link attribution.
  • \n
  • Email Summaries – Your site’s Google Analytics traffic report delivered straight to your inbox every week.
  • \n
  • Google Analytics for AMP – Add proper tracking for Google AMP.
  • \n
  • Google Analytics for Facebook Instant Articles – Add proper tracking for Facebook Analytics.
  • \n
  • Google Analytics GDPR Compliance – EU compliance addon helps you improve Google Analytics GDPR compliance by adding anonymize IP, cookie consent for opt-out tracking, and more.
  • \n
  • Form Conversion Tracking – Track conversions for your WordPress forms. Works with all popular plugins including WPForms, Contact Form 7, Gravity Forms, Formidable Forms, and more.
  • \n
  • Google Optimize Tracking – Enable Google Analytics support for Google Optimize A/B Testing.
  • \n
  • Google Analytics Tools – Helpful tools for Google Analytics such as UTM link tracking builder.
  • \n
  • Want us to add something else? Suggest a feature and we’ll get it added!
  • \n
\n

After reading this exhaustive feature list, you can probably imagine why MonsterInsights is the best Google Analytics plugin for WordPress.

\n

Give MonsterInsights a try.

\n

Want to unlock even more features? Upgrade to our Pro version.

\n
\n

Simple, yet powerful. Amazing piece of plugin, does exactly what expected and even more.
\n Matt Jaworski

\n
\n

Popular Google Analytics Tutorials

\n\n

Note for Beginners

\n

Like all WordPress plugins, Google Analytics by MonsterInsights is only available for self-hosted WordPress sites. This means you will need to switch from WordPress.com to WordPress.org if you want to use this plugin on your WordPress site.

\n

For more details, see this infographic on self hosted WordPress.org vs free WordPress.com

\n

Credits

\n

This plugin is created by Chris Christoff and Syed Balkhi with sponsorship from WPBeginner.

\n

Branding Guidelines

\n

MonsterInsights® is a registered trademark of MonsterInsights LLC. When writing about the Google Analytics for WordPress plugin by MonsterInsights, please make sure to uppercase the first letters of both word.

\n
    \n
  • MonsterInsights (correct)
  • \n
  • Monster Insights (incorrect)
  • \n
  • monsterinsights (incorrect)
  • \n
  • monsterinsight (incorrect)
  • \n
\n

What’s Next

\n

If you like this plugin, then consider checking out our other projects:

\n
    \n
  • OptinMonster – Get More Email Subscribers
  • \n
  • WPForms – Best WordPress Contact Form Plugin
  • \n
  • AIOSEO – The original WordPress SEO plugin to help you rank higher in search results (trusted by over 2 million sites)
  • \n
  • SeedProd – Most popular coming soon & maintenance mode plugin for WordPress
  • \n
  • WP Mail SMTP – Improve email deliverability for your contact form with the most popular SMTP plugin for WordPress
  • \n
  • RafflePress – Best WordPress giveaway and contest plugin to grow traffic and social followers
  • \n
  • Smash Balloon – #1 social feeds plugin for WordPress – display social media content in WordPress without code
  • \n
  • PushEngage – Connect with visitors after they leave your website with the leading web push notification plugin
  • \n
  • TrustPulse – Add real-time social proof notifications to boost your store conversions by up to 15%
  • \n
\n

This plugin would not be possible without the help and support of WPBeginner, the largest WordPress resource site. You can learn from our free WordPress Tutorials like how to install WordPress, choose the best WordPress hosting, WordPress glossary, and more.

\n

You can also learn about other best WordPress plugins.

\n","download_link":"https://downloads.wordpress.org/plugin/google-analytics-for-wordpress.7.18.0.zip","tags":{"google-analytics":"google analytics","google-analytics-dashboard":"google analytics dashboard","google-analytics-widget":"google analytics widget","woocommerce-stats":"WooCommerce stats","wordpress-analytics":"WordPress analytics"},"donate_link":"http://www.wpbeginner.com/wpbeginner-needs-your-help/","icons":{"1x":"https://ps.w.org/google-analytics-for-wordpress/assets/icon.svg?rev=1598927","2x":"https://ps.w.org/google-analytics-for-wordpress/assets/icon-256x256.png?rev=1598927","svg":"https://ps.w.org/google-analytics-for-wordpress/assets/icon.svg?rev=1598927"},"wporg":true},{"name":"Atomic Blocks – Gutenberg Blocks Collection","slug":"atomic-blocks","version":"2.9.0","author":"atomicblocks","author_profile":"https://profiles.wordpress.org/atomicblocks","requires":"5.3","tested":"5.5.5","requires_php":"5.6","rating":86,"ratings":{"1":5,"2":0,"3":1,"4":6,"5":31},"num_ratings":43,"support_threads":1,"support_threads_resolved":0,"active_installs":40000,"downloaded":991486,"last_updated":"2020-10-28 4:53pm GMT","added":"2018-03-26","homepage":"https://atomicblocks.com","short_description":"A collection of beautiful, customizable Gutenberg blocks for the new block editor.","description":"

Atomic Blocks has moved!

\n

Same powerful blocks, same beautiful designs, same innovative team. Atomic Blocks has been renamed to Genesis Blocks. Learn more about Genesis Blocks. With our migration tool built right into Genesis Blocks, the transition between plugins will be simple and seamless – plus you’ll be ready to receive the new blocks and features we’re releasing soon.

\n

Atomic Blocks is a collection of page building blocks for the new Gutenberg block editor. Building pages with the block editor and Atomic Blocks gives you more control to quickly create and launch any kind of site you want!

\n

Installing the customizable Atomic Block plugin adds a collection of beautiful, site-building blocks to help you customize page layouts, increase engagement, and get results for your business. Atomic Blocks provides everything from customizable buttons, to beautifully-designed page sections and full-page layout designs via the Section & Layout block.

\n

Along with the content blocks you’ll find in Atomic Blocks, we’re also publishing helpful articles and tutorials to help you get started with Gutenberg.

\n

New Section and Layout Block!

\n

\n

On top of the handy, time-saving blocks already found in Atomic Blocks, we’re excited to introduce the brand new Section and Layout block! This block comes with a library of pre-designed sections and layouts to help you quickly and easily build a beautiful site with the new block editor.

\n

Using the Section and Layout modal window, you can browse designs by category, search, and even add sections and layouts to a Favorites tab for quick access later. Paired with the free Atomic Blocks theme, which has support for full-width, block-based page building, you have everything you need to start building your site today!

\n

Atomic Blocks currently includes the following blocks:

\n\n

Atomic Blocks WordPress Theme

\n

We’ve created a beautiful WordPress theme to help you get started with the Atomic Blocks plugin and the new WordPress block editor. The theme integrates seamlessly with the blocks you’ll find in the plugin!

\n\n

In addition to the Atomic Block Theme, we’ve built Revolution Pro with the StudioPress team. This theme is built from the ground up with blocks—Gutenberg core and Atomic. Using this Theme and the Genesis One-Click Theme Install you can have a new block-based site up and running in minutes.

\n\n

Google AMP Support

\n

The Accelerated Mobile Pages (AMP) project is a publishing format created by Google to enhance site performance for mobile website users. AMP pages are specially designed for Google search users to quickly load website pages without using any extraneous data. Atomic Blocks has support for AMP built into each block!

\n

Atomic Blocks Help File

\n

We’ve created a handy help file that you can check out here. The help file covers how to setup the plugin and get started with the blocks.

\n

The help file is also available in the plugin once activated. Click the Atomic Blocks admin menu item to visit the Getting Started page.

\n

View the plugin help file

\n

Follow Along:

\n\n","download_link":"https://downloads.wordpress.org/plugin/atomic-blocks.2.9.0.zip","tags":{"blocks":"blocks","editor":"editor","gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","page-builder":"page builder"},"donate_link":"https://atomicblocks.com","icons":{"1x":"https://ps.w.org/atomic-blocks/assets/icon-128x128.jpg?rev=1914920","2x":"https://ps.w.org/atomic-blocks/assets/icon-256x256.jpg?rev=1914921"},"wporg":true},{"name":"Akismet Spam Protection","slug":"akismet","version":"4.1.12","author":"Automattic","author_profile":"https://profiles.wordpress.org/automattic","requires":"4.6","tested":"5.8","requires_php":false,"rating":94,"ratings":{"1":40,"2":9,"3":13,"4":45,"5":811},"num_ratings":918,"support_threads":9,"support_threads_resolved":8,"active_installs":5000000,"downloaded":208775698,"last_updated":"2021-09-03 4:53pm GMT","added":"2005-10-20","homepage":"https://akismet.com/","short_description":"The best anti-spam protection to block spam comments and spam in a contact form. The most trusted antispam solution for WordPress and WooCommerce.","description":"

Akismet checks your comments and contact form submissions against our global database of spam to prevent your site from publishing malicious content. You can review the comment spam it catches on your blog’s “Comments” admin screen.

\n

Major features in Akismet include:

\n
    \n
  • Automatically checks all comments and filters out the ones that look like spam.
  • \n
  • Each comment has a status history, so you can easily see which comments were caught or cleared by Akismet and which were spammed or unspammed by a moderator.
  • \n
  • URLs are shown in the comment body to reveal hidden or misleading links.
  • \n
  • Moderators can see the number of approved comments for each user.
  • \n
  • A discard feature that outright blocks the worst spam, saving you disk space and speeding up your site.
  • \n
\n

PS: You’ll be prompted to get an Akismet.com API key to use it, once activated. Keys are free for personal blogs; paid subscriptions are available for businesses and commercial sites.

\n","download_link":"https://downloads.wordpress.org/plugin/akismet.4.1.12.zip","tags":{"anti-spam":"anti-spam","antispam":"antispam","comments":"comments","contact-form":"contact form","spam":"spam"},"donate_link":"","icons":{"1x":"https://ps.w.org/akismet/assets/icon-128x128.png?rev=969272","2x":"https://ps.w.org/akismet/assets/icon-256x256.png?rev=969272"},"wporg":true},{"name":"WP GDPR Cookie Notice","slug":"wp-gdpr-cookie-notice","version":"1.0.0-rc.1","author":"Felix Arntz","author_profile":"https://profiles.wordpress.org/flixos90","requires":"4.9.6","tested":"5.7.2","requires_php":"7.0","rating":76,"ratings":{"1":4,"2":0,"3":0,"4":0,"5":9},"num_ratings":13,"support_threads":1,"support_threads_resolved":0,"active_installs":700,"downloaded":5941,"last_updated":"2021-04-02 11:51pm GMT","added":"2019-03-01","homepage":"https://wordpress.org/plugins/wp-gdpr-cookie-notice/","short_description":"Simple performant cookie consent notice that supports AMP, Web Stories, granular cookie control and live…","description":"

This plugin adds a simple performant cookie consent notice to your WordPress site that supports AMP, Web Stories, granular cookie control and live preview customization.

\n

Not only does the notice allow you to provide the regular message that your site uses cookies, you can also optionally grant your site visitors permission to granularly allow which cookie types are allowed, supporting groups of functional (always required), preferences, analytics and marketing cookies. This aims towards compliance with how the new GDPR regulations recommend implementing cookie control for your site.

\n

In addition to the Privacy Policy page setting that WordPress core provides, you also get a settings to optionally set an extra Cookie Policy page, and you can easily link to either of them from the cookie consent notice.

\n

The cookie notice content and appearance can easily be tweaked using the Customizer, with an immediate live-preview of what your changes will look like.

\n

Last but not least, another important thing that this plugin takes care of, other than most other cookie consent plugins, is that it actually ensures cookies are only placed if the respective cookie type has been allowed by the visitor. The plugin does this by implementing cookie rules for WordPress itself, and also for the following plugins:

\n\n

More plugins will be supported in the future. If you are a developer though, it’s also very easy to add cookie rules for other code, by using the flexible cookie rule component the plugin provides as an extension point.

\n

Feature Summary

\n
    \n
  • Lightweight and easy-to-use: Simply activate the plugin, and the notice will appear.
  • \n
  • Live Preview: Use the Customizer to adjust the notice to your needs, with an instant live preview.
  • \n
  • Customizable Appearance: Specify the notice position, colors, border, button size and more.
  • \n
  • Customizable Content: Adjust the notice heading, text and button label to your preferences. You can easily link to your cookie policy page or privacy policy page, and even give visitors granular control about which cookie types they allow.
  • \n
  • Cookie Policy Support: Define an optional cookie policy page if your site has one, or alternatively provide an ID attribute to the cookie section in your privacy policy.
  • \n
  • Cookie Integrations: Supported cookies are only set once the visitor has given their consent. The cookie rules implemented also respect the more granular cookie control.
  • \n
  • JavaScript-driven: The cookie notice is inserted into the page as necessary via JavaScript, but at the same time provides easy access to whether it should be displayed via its PHP API.
  • \n
  • AMP Support: The notice is fully AMP-compatible using <amp-consent>, integrating seamlessly with the AMP plugin. It integrates with Web Stories as well.
  • \n
  • Coding Best Practices: The plugin is fully object-oriented and is coded after best practices, such as using interfaces, traits, dependency injection or the single responsibility principle. It also implements modern coding features requiring PHP 7, such as scalar type hints or return type hints.
  • \n
\n

Disclaimer

\n

This plugin does not provide any legal protection. You as a site administrator are required to ensure that it meets legal standards. This plugin is a technical tool, not a lawyer.

\n","download_link":"https://downloads.wordpress.org/plugin/wp-gdpr-cookie-notice.1.0.0-rc.1.zip","tags":{"amp":"amp","cookie-consent":"cookie consent","cookie-notice":"cookie notice","gdpr":"GDPR","web-stories":"web stories"},"donate_link":"","icons":{"1x":"https://ps.w.org/wp-gdpr-cookie-notice/assets/icon-128x128.png?rev=2042024","2x":"https://ps.w.org/wp-gdpr-cookie-notice/assets/icon-256x256.png?rev=2042024"},"wporg":true},{"name":"WordPress Share Buttons Plugin – AddThis","slug":"addthis","version":"6.2.6","author":"The AddThis Team","author_profile":"https://profiles.wordpress.org/arnavarro","requires":"3.0","tested":"5.2.11","requires_php":false,"rating":84,"ratings":{"1":75,"2":25,"3":22,"4":46,"5":444},"num_ratings":612,"support_threads":2,"support_threads_resolved":0,"active_installs":100000,"downloaded":5068675,"last_updated":"2019-07-10 5:19pm GMT","added":"2008-12-23","homepage":"https://wordpress.org/plugins/addthis/","short_description":"Now compatible with the AMP Plugin! Free Share Buttons from AddThis. Share to Messenger, WhatsApp, Facebook, Twitter, Pinterest and many more.","description":"

Now compatible with the AMP Plugin! The Free WordPress Share Buttons Plugin from AddThis makes it easier than ever for your audience to spread your content around the web. Our quick-loading Share Buttons Plugin lets you connect to over 200 social channels including Messenger, WhatsApp, Facebook, Twitter, Pinterest and many more.

\n

Our clean, customizable and simple share buttons are beautiful, quick to load and recognized all over the web.

\n

AddThis is trusted by over 15,000,000 websites with over 2 billion unique users, sharing content all over the world, in more than sixty languages.

\n

Types of Share Buttons:

\n
    \n
  • \n

    Floating share buttons: Placed on the side of your page, following your reader as they scroll. A great way to promote sharing without getting too in-your-face.

    \n
  • \n
  • \n

    Expanding share buttons: Modern, clean, and best suited for sites with tons of mobile traffic. This button expands to reveal sharing options on hover or click.

    \n
  • \n
  • \n

    Inline share buttons: Integrate share buttons into your own content for a seamless sharing experience.

    \n
  • \n
  • \n

    Image sharing buttons: Seamlessly integrate sharing into your layout with adjustable image sharing buttons. Perfect for pages with tons of shareable content.

    \n
  • \n
\n

Customizable:

\n
    \n
  • \n

    Designed for desktop, tablet, and mobile

    \n
  • \n
  • \n

    Choose from over 200 social media channels to display

    \n
  • \n
  • \n

    Adjust coloring to match your brand

    \n
  • \n
\n

Analytics:

\n
    \n
  • Sign up for a free AddThis account to get analytics on how your content is performing such as your top shared content, referring social networks and more. After you register, these analytics are accessible by logging into your AddThis.com account and visiting your AddThis dashboard. Analytics include site pageviews, your top shared content, referring social networks, and more.
  • \n
\n

Support:

\n

We strive to provide best-in-class support with a response time of around two hours, and a customer satisfaction rate of over 98%. To get in touch with our team, head to http://www.addthis.com/support.

\n

Check out our other plugins to help you grow and engage your audience!

\n
    \n
  • \n

    Follow Buttons: Add followers to 65+ social networks, including Facebook, Snapchat, Instagram, and more.

    \n
  • \n
  • \n

    Related Posts: Boost your on-site engagement with our Related Posts tool, which recommends content not only by what’s popular, but also what’s most relevant.

    \n
  • \n
\n

Want more? Visit our website to learn how you can activate our Email List Building and Link Promotion Tools.

\n

AddThis Academy | Privacy Policy

\n","download_link":"https://downloads.wordpress.org/plugin/addthis.6.2.6.zip","tags":{"share-buttons":"share buttons","social":"social","social-marketing":"Social Marketing","social-share":"social share","social-sharing":"social sharing"},"donate_link":"","icons":{"1x":"https://ps.w.org/addthis/assets/icon-128x128.png?rev=1223867","2x":"https://ps.w.org/addthis/assets/icon-256x256.png?rev=1223867"},"wporg":true},{"name":"BigCommerce For WordPress","slug":"bigcommerce","version":"4.16.0","author":"BigCommerce","author_profile":"https://profiles.wordpress.org/bigcommerce","requires":"5.2","tested":"5.5.5","requires_php":"7.2.0","rating":80,"ratings":{"1":8,"2":1,"3":0,"4":3,"5":27},"num_ratings":39,"support_threads":3,"support_threads_resolved":1,"active_installs":1000,"downloaded":57476,"last_updated":"2021-08-12 3:08am GMT","added":"2018-11-16","homepage":"","short_description":"Scale your ecommerce business with WordPress on the front-end and BigCommerce on the back end. Free up server resources from things like catalog manag …","description":"

BigCommerce for WordPress is a plugin that allows you to scale ecommerce further than ever before on WordPress. Scale your business with WordPress on the front-end and free up server resources from things like catalog management, processing payments, managing fulfillment logistics and more with BigCommerce on the back end.

\n

Built to integrate seamlessly with WordPress, you get access to our native ecommerce features from a single plugin, the ability to sell across multiple channels and marketplaces from a single location, and best of all, an embedded checkout experience that takes on PCI compliance and customer security on your behalf.

\n

Quick Start!

\n

Look at details from the latest release, including new features and enhancements here: https://github.com/bigcommerce/bigcommerce-for-wordpress/releases

\n

Dive into how you set up and customize your site using BC4WP using our guides here: https://developer.bigcommerce.com/bigcommerce-for-wordpress/getting-started/introduction

\n

Have a suggestion for how we can be better? Ping the team! wordpress-suggestions@bigcommerce.com

\n

DIFFERENT FROM YOUR TRADITIONAL PLUGIN

\n

We’ve taken a very different approach to ecommerce in WordPress. We set out to build our plugin the WordPress Way: deliver value to the community, build it with WordPress experts and make something developers can call their own.

\n

The BigCommerce for WordPress plugin leverages the best aspects of both platforms, allowing WordPress to manage content and BigCommerce to manage ecommerce.

\n

SCALABLE ECOMMERCE FOR WORDPRESS

\n

Continue to tap into the unrestricted customization of WordPress while pairing it with the most scalable SaaS ecommerce engine. BigCommerce lets you build complex catalogs, manage large volumes of concurrent traffic, orders and analytics.

\n

The BigCommerce plugin ports over a copy of your product catalog and stores products as custom post types in WordPress. It also creates pages for your cart, checkout, account profiles, sign in, shipping & returns, gift certificates and order history.

\n

The key difference to our approach is that you don’t need to install additional extensions to get access to common ecommerce features. Instead, you get instant access to many common (and advanced) features, such as complex catalog support, global payment gateways, currency handling, taxation, shipping calculations and centralized channel management; all out-of-the-box.

\n

OFFLOAD BACKEND RESOURCES

\n

Our philosophy is that processing orders and running your store shouldn’t affect the uptime and speed of your site — which can hurt your SEO, conversion, and brand. The BigCommerce plugin does the heavy commerce lifting, letting you scale your ecommerce without losing speed or uptime.

\n

LET US HANDLE PCI COMPLIANCE

\n

Taking on your own PCI compliance comes with a huge amount of liability and risk. BigCommerce powers the full checkout experience, assuming the burden of PCI compliance for you.

\n

EXTENSIVE PAYMENT GATEWAYS

\n

BigCommerce has over 65 payment gateway integrations available out-of-the box, serving 100+ countries and over 250 local payment methods.

\n

To help you reduce costs, we’ve pre-negotiated special credit and debit card processing rates with PayPal, our preferred payment solution. The more you grow with BigCommerce and upgrade your plan, the lower your rates can go.

\n

HIGHLY SCALABLE PRODUCT CATALOG

\n

BigCommerce is built for large, complex catalogs with up to 600 SKUs per product, and 250 product values for a single option. Our native catalog structure treats single products (including variants, details, SKUs, etc.) as a single API call, making inventory syncing with ERPs, PIMs (and WordPress) fast.

\n

MULTI-CHANNEL SELLING & MANAGEMENT

\n

With the core BigCommerce platform, you now have access within the control panel to sell across multiple marketplaces simultaneously, such as eBay, Amazon, Facebook, Instagram, Google Shopping, Square and more! Save time and eliminate errors and overselling with bulk listing, automatic inventory syncing and unified order and fulfillment management.

\n

USE YOUR FAVORITE WORDPRESS THEME

\n

BigCommerce for WordPress will work with any WordPress theme, but it may require some styling to make it fit perfectly. Are you a theme developer? We’d love to promote your BigCommerce for WordPress compatible theme. Get in touch with us here.

\n

To start, we recommend choosing a cross-browser compatible WordPress ecommerce theme, since the theme options included will better match what an online store requires.

\n

ECOMMERCE WITH GUTENBERG

\n

We’re big supporters of Gutenberg and built our plugin to support both the classic editor and Gutenberg. Whether you’re inserting shortcodes in classic mode or product blocks in Gutenberg, we will continue to enable support for both.

\n

SECURED USER ACCOUNTS & LOGINS

\n

In addition to offering you peace of mind with a secure checkout experience, we also extend this level of security to your shoppers, their accounts and logins, and payment information — all managed by BigCommerce.

\n

GLOBAL SHIPPING STREAMLINED

\n

We support all major global carriers, offer real-time carrier quotes, allow for free shipping, flat rates, dropshipping and more. With our deep ShipperHQ integration, you can even specify rates by product, category, customer group, quantity, destination, dimensions and more.

\n

FLEXIBLE SHOPPING CART

\n

We are bringing over a decade of focusing on building online stores to every WordPress website. Through this we bring our flexible shopping cart, along with it’s extensive customization options, so can offer enterprise grade promotions and discounts within a fully responsive layout, without additional extensions that other WordPress ecommerce plugins require.

\n

MULTIPLE SITES; ONE CONTROL PANEL

\n

Even if you sell across multiple WordPress sites, you shouldn’t have to manage them all in separate places. BigCommerce gives you a single control panel to manage your catalog, orders and shipping, all from one place. Streamline your admin experience and spend less time managing ecommerce on WordPress.

\n

Beyond WordPress, the endpoints we’ve opened on our platform allow you to build commerce into any sort of experience. Looking to launch a site in React? Interested in developing a mobile app? Want to integrate with an in-house POS? All of these can be built and managed from within the BigCommerce Control Panel.

\n

COMPLEX ENTERPRISE SYSTEMS INTEGRATIONS

\n

A huge benefit of having a SaaS ecommerce engine behind the scenes is that the core platform is already built for mid-market and enterprise use cases. Natively connect to your existing ERP suites, PIM software, OMS solutions, POS systems or marketing automation tools right out of the box.

\n

AMP SUPPORT

\n

Unique to most WordPress ecommerce plugins, BigCommerce for WordPress also includes support for Accelerated Mobile Pages. To activate, install the official Google plugin.

\n

SUPPORT AND SERVICES

\n

All of our BigCommerce customers have access to our 24/7 live phone, chat, and email support, run from our headquarters in Austin, Texas. For larger enterprise customers, we offer dedicated account management and implementation management services as part of your plan. We also have an ever-growing collection of help, support, and how-to guides in our help center.

\n

BUILT WITH DEVELOPERS IN MIND

\n

BigCommerce for WordPress was built by WordPress developers, with developers in mind. Our plugin is open source and available for you to fork, extend and modify as your needs require.

\n

Our plugin supports WordPress’ standard method of overriding template files so you can modify out-of-the-box designs. Customize your product cards, lists and shopping cart without risking plugin updates that will undo your changes.

\n

Additionally, there are many hooks and filters, so you can manipulate content to your heart’s content.

\n

JOIN OUR BIGCOMMERCE COMMUNITY

\n

All BigCommerce customers get access to our ever-growing online community to answer questions, discuss ecommerce strategies, learn about the latest product updates, contribute ideas and more.

\n

If you’re interested in contributing to BigCommerce for WordPress, head over to our GitHub Repository.

\n","download_link":"https://downloads.wordpress.org/plugin/bigcommerce.4.16.0.zip","tags":{"ecommerce":"ecommerce","online-store":"online store","retail":"retail","sell-online":"sell online","storefront":"storefront"},"donate_link":"","icons":{"1x":"https://ps.w.org/bigcommerce/assets/icon-256x256.png?rev=2141502","2x":"https://ps.w.org/bigcommerce/assets/icon-256x256.png?rev=2141502"},"wporg":true},{"name":"Yoast SEO","slug":"wordpress-seo","version":"17.0","author":"Team Yoast","author_profile":"https://profiles.wordpress.org/joostdevalk","requires":"5.6","tested":"5.8","requires_php":"5.6.20","rating":96,"ratings":{"1":718,"2":124,"3":170,"4":616,"5":25755},"num_ratings":27383,"support_threads":541,"support_threads_resolved":492,"active_installs":5000000,"downloaded":351601183,"last_updated":"2021-08-24 7:59am GMT","added":"2010-10-11","homepage":"https://yoa.st/1uj","short_description":"Improve your WordPress SEO: Write better content and have a fully optimized WordPress site using the Yoast SEO plugin.","description":"

Yoast SEO: the #1 WordPress SEO plugin

\n

Since 2008 Yoast SEO has helped millions of websites worldwide to rank higher in search engines.

\n

Yoast’s mission is SEO for Everyone. Our plugin’s users range from the bakery around the corner to some of the most popular sites on the planet.

\n

Yoast SEO Free contains everything that you need to manage your SEO, and the Yoast SEO Premium plugin and its extensions unlock even more tools and functionality.

\n

GET AHEAD OF THE COMPETITION

\n

To rank highly in search engines, you need to beat the competition. You need a better, faster, stronger website than the people who sell or do the same kinds of things as you.

\n

Yoast SEO is the most-used WordPress SEO plugin, and has helped millions of people like you to get ahead, and to stay ahead.

\n

TAKING CARE OF YOUR WORDPRESS SEO

\n

Yoast SEO is packed full of features, designed to help visitors and search engines to get the most out of your website. Some of our favourites are:

\n
    \n
  • Automated technical SEO improvements, like canonical URLs and meta tags.
  • \n
  • Advanced XML sitemaps; making it easy for Google to understand your site structure.
  • \n
  • Title and meta description templating, for better branding and consistent snippets in the search results.
  • \n
  • An in-depth Schema.org integration that will increase your chance of getting rich results, by helping search engines to understand your content.
  • \n
  • Full control over site breadcrumbs, so that users and search engines always know where they are.
  • \n
  • Faster loading times for your whole website, due to an innovative way of managing data in WordPress.
  • \n
  • [Premium] E-mail support for our Yoast SEO Premium users.
  • \n
  • [Premium] The possibility to expand Yoast SEO with the News SEO, Video SEO, Local SEO and WooCommerce SEO extensions.
  • \n
\n

WRITE KILLER CONTENT WITH YOAST SEO

\n

We know content is king, that’s why Yoast SEO is famous for its state-of-the-art content and SEO analysis. Yoast SEO gives you:

\n
    \n
  • SEO analysis: an invaluable tool while writing SEO-friendly content with the right (focus) keyphrases in mind.
  • \n
  • Readability analysis: ensures that humans and search engines can read and understand your content.
  • \n
  • Full language support for: English, German, French, Dutch, Spanish, Italian, Russian, Indonesian, Polish, Portuguese, Arabic, Swedish, Hebrew, Hungarian, Turkish, Czech, Norwegian and Slovak.
  • \n
  • A Google preview, which shows what your listings will look like in the search results. Even on mobile devices!
  • \n
  • Innovative Schema blocks for the WordPress block editor, so that your FAQ and HowTo content can be shown directly in the search results. Plus a breadcrumbs block to guide your users.
  • \n
  • [Premium] Internal linking blocks to easily improve the structure of your content. Easily add a table of contents block, a related links block, a subpages block, or siblings block! Plus, we’ll keep adding these easy-to-add blocks to improve your site structure.
  • \n
  • [Premium] Social previews to show you how your content will be shown on Twitter and Facebook. Plus: Social Appearance Templates to guarantee a consistent look.
  • \n
  • [Premium] The Insights tool that shows you what your text focuses on. This way you can keep your article in line with your keyphrases.
  • \n
  • [Premium] Optimize your content for synonyms and related keyphrases.
  • \n
  • [Premium] Optimize your article for different word forms of your keyphrases, as the singular and plural. But also different verb forms, synonyms, and related keyphrases. This makes for more natural content!
  • \n
  • [Premium] Automatic internal linking suggestions: write your article and get automatic suggested posts to link to!
  • \n
  • [Premium] An orphaned content filter to detect posts that have no links pointing towards them!
  • \n
  • [Premium] SEO workouts to make working on your site as easy as ABC. These SEO workflows will get your site into shape in no time!
  • \n
\n

KEEP YOUR SITE IN PERFECT SHAPE

\n

Whether you are an online entrepreneur, blogger or content creator, a developer, a (WordPress) SEO expert or a business owner, Yoast SEO helps you keep your website in perfect shape by:

\n
    \n
  • Tuning the engine of your website, so you can work on creating great content!
  • \n
  • Giving you cornerstone content and internal linking features to help you optimize your site structure in a breeze.
  • \n
  • Translating your content to structured data where possible, to help search engines understand your website.
  • \n
  • Helping you manage your team: with our SEO roles you can give colleagues access to specific sections of the Yoast SEO plugin.
  • \n
  • [Premium] Automatically creating redirects when URLs change or when pages are deleted, and providing tools to manage or create redirects.
  • \n
  • [Premium] Showing you social previews to manage the way your page is shared on social networks like Facebook and Twitter.
  • \n
\n

TRUST THE EXPERTS

\n

Yoast is powered by a team of expert developers, testers, software architects, and SEO consultants. They work constantly to stay at the cutting edge of WordPress SEO, and to improve the plugin with every release.

\n

Yoast SEO is the only WordPress SEO plugin made by world-renowned SEO experts.

\n

GET PREMIUM SUPPORT

\n

The Yoast team offers regular support on the WordPress.org forums. But we hope you understand that we prioritize our Premium customers. This one-on-one email support is available to people who have purchased Yoast SEO Premium.

\n

Did you know that Yoast SEO Premium contains a lot of extra features:

\n
    \n
  • A redirect manager that prevents “404: page not found” errors
  • \n
  • Optimize without worrying about over-optimization with intelligent word form recognition available in multiple languages.
  • \n
  • Internal linking blocks to structure your site easily.
  • \n
  • Internal linking suggestions while you’re writing.
  • \n
  • Preview your content to see what it will look like in the search results and when shared on social media using the Google preview and social preview.
  • \n
  • Cornerstone content checks that point search engines to your most important pages.
  • \n
  • Connect Yoast SEO to Zapier to easily create zaps that instantly share your published posts with 2000+ destinations like Twitter, Facebook, and much more.
  • \n
\n

If you are serious about your WordPress SEO, install the Yoast SEO Premium plugin! Costs a little, saves a lot of time!

\n

OUR EXTENSIONS TO FURTHER IMPROVE YOUR WORDPRESS SEO

\n

Check out these SEO add-ons by Yoast:

\n
    \n
  • Yoast Local SEO optimizes your website for a local audience.
  • \n
  • Yoast Video SEO ensures that Google understands what your video is about, increasing the chances of ranking in the video results.
  • \n
  • Yoast News SEO for news websites that want to improve their visibility and performance in Google News.
  • \n
  • WooCommerce SEO for all online shops that want to perform better in the search results and social media.
  • \n
\n

These extensions work fine with the free version of Yoast SEO. Of course, the premium extensions also include 24/7 support.

\n

Oh, don’t forget: our Yoast Academy is for all entrepreneurs, bloggers, and anyone who wants to learn more about optimizing websites, improving your WordPress SEO, and if you want to take your content to the next level!

\n

INTEGRATIONS

\n

Yoast SEO integrates seamlessly into a range of themes and plugins. We work particularly well with:

\n\n

BUG REPORTS

\n

Do you want to report a bug for Yoast SEO? Best to do so in the WordPress SEO repository on GitHub. Please note that GitHub is not a support forum and issues will be closed if they don’t meet the bug requirements.

\n

READ MORE

\n

Want more information on search engine optimization and Yoast SEO? Have a look at:

\n\n","download_link":"https://downloads.wordpress.org/plugin/wordpress-seo.17.0.zip","tags":{"content-analysis":"Content analysis","readability":"Readability","schema":"schema","seo":"seo","xml-sitemap":"xml sitemap"},"donate_link":"https://yoa.st/1up","icons":{"1x":"https://ps.w.org/wordpress-seo/assets/icon.svg?rev=2363699","2x":"https://ps.w.org/wordpress-seo/assets/icon-256x256.png?rev=2363699","svg":"https://ps.w.org/wordpress-seo/assets/icon.svg?rev=2363699"},"wporg":true},{"name":"Gutenberg","slug":"gutenberg","version":"11.4.1","author":"Gutenberg Team","author_profile":"https://profiles.wordpress.org/matveb","requires":"5.6","tested":"5.8","requires_php":"5.6","rating":42,"ratings":{"1":2266,"2":201,"3":126,"4":133,"5":700},"num_ratings":3426,"support_threads":57,"support_threads_resolved":10,"active_installs":300000,"downloaded":24410009,"last_updated":"2021-09-03 3:27pm GMT","added":"2017-06-16","homepage":"https://github.com/WordPress/gutenberg","short_description":"The Gutenberg plugin provides editing, customization, and site building features to WordPress. This beta plugin…","description":"

“Gutenberg” is a codename for a whole new paradigm in WordPress site building and publishing, that aims to revolutionize the entire publishing experience as much as Gutenberg did the printed word. Right now, the project is in the first phase of a four-phase process that will touch every piece of WordPress — Editing, Customization, Collaboration, and Multilingual — and is focused on a new editing experience, the block editor.

\n

The block editor introduces a modular approach to pages and posts: each piece of content in the editor, from a paragraph to an image gallery to a headline, is its own block. And just like physical blocks, WordPress blocks can added, arranged, and rearranged, allowing WordPress users to create media-rich pages in a visually intuitive way — and without work-arounds like shortcodes or custom HTML.

\n

The block editor first became available in December 2018, and we’re still hard at work refining the experience, creating more and better blocks, and laying the groundwork for the next three phases of work. The Gutenberg plugin gives you the latest version of the block editor so you can join us in testing bleeding-edge features, start playing with blocks, and maybe get inspired to build your own.

\n

Discover More

\n
    \n
  • \n

    User Documentation: See the WordPress Editor documentation for detailed docs on using the editor as an author creating posts and pages.

    \n
  • \n
  • \n

    Developer Documentation: Extending and customizing is at the heart of the WordPress platform, see the Developer Documentation for extensive tutorials, documentation, and API reference on how to extend the editor.

    \n
  • \n
  • \n

    Contributors: Gutenberg is an open-source project and welcomes all contributors from code to design, from documentation to triage. See the Contributor’s Handbook for all the details on how you can help.

    \n
  • \n
\n

The development hub for the Gutenberg project is on Github at: https://github.com/wordpress/gutenberg

\n

Discussion for the project is on Make Blog and the #core-editor channel in Slack, signup information.

\n","download_link":"https://downloads.wordpress.org/plugin/gutenberg.11.4.1.zip","tags":[],"donate_link":"","icons":{"1x":"https://ps.w.org/gutenberg/assets/icon-128x128.jpg?rev=1776042","2x":"https://ps.w.org/gutenberg/assets/icon-256x256.jpg?rev=1776042"},"wporg":true},{"name":"Setka Editor","slug":"setka-editor","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://setka.io/","short_description":"

Setka Editor is the first WYSIWYG plugin with page builder functionality.

\n","description":"\n\n\n

Setka Editor is the first WYSIWYG plugin with page builder functionality.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2018/11/Setka-Banner-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2018/11/Setka-Banner-372x209.jpg","svg":""},"wporg":false}] \ No newline at end of file +[{"name":"Podcast Player – Your Podcasting Companion","slug":"podcast-player","version":"5.0.1","author":"vedathemes","author_profile":"https://profiles.wordpress.org/vedathemes","requires":"4.9","tested":"5.8","requires_php":"5.6","rating":98,"ratings":{"1":0,"2":1,"3":0,"4":2,"5":43},"num_ratings":46,"support_threads":8,"support_threads_resolved":6,"active_installs":8000,"downloaded":111339,"last_updated":"2021-08-09 4:59am GMT","added":"2019-02-06","homepage":"https://vedathemes.com/podcast-player/","short_description":"Showcase your podcast only using podcasting feed url. Use custom widget, shortcode or editor block to display podcast player anywhere on your site.","description":"

Podcast Player provides an easy way to show and play your podcast episodes using podcasting feed url. It is a must have plugin for your podcast website. Give your listeners an easy access to all your episodes from any page or even from all the pages of your website.

\n

Podcast Player Pro | Documentation

\n\n

Podcast player key features

\n
    \n
  • Give your listeners an easy access to your podcast episodes.
  • \n
  • Display responsive podcast player just by entering your podcast’s feed url.
  • \n
  • Fetch all required details from feed url.
  • \n
  • Option to modify fetched details of your podcast.
  • \n
  • Option to Show or Hide individual player elements.
  • \n
  • Give your listener an option to share your podcast episodes.
  • \n
  • Ajax live search episodes from the podcast.
  • \n
  • It is possible to have multiple instances of podcast player on single page.
  • \n
  • Self adjusting layout according to width of the podcast player.
  • \n
\n

Podcast player pro features

\n
    \n
  • Professionally showcase your podcast using our unified player, episode list and grid templates.
  • \n
  • Use powerful filter options to choose which episodes or seasons you want to display on your website.
  • \n
  • Make your entire podcast catalogue easily available using our ajax approximate search feature.
  • \n
  • Add an audio message within your podcast episode.
  • \n
  • Add audio mp3 to your WordPress posts and display as podcast episodes.
  • \n
  • Show or hide specific elements and customize color and fonts to personalize your podcast display
  • \n
\n

Setup Podcast Player Widget

\n

Display searchable podcast episodes list on any widget area of your website.

\n

Minimum Setup

\n
    \n
  1. After activating the plugin, visit Appearance > Widgets in admin dashboard.
  2. \n
  3. Look for ‘Podcast player’ widget in left ‘Available Widgets’ section.
  4. \n
  5. Drag the widget to any available sidebar/widget area.
  6. \n
  7. Enter feed url in the appropriate field.
  8. \n
  9. Click [Save] button.
  10. \n
\n

Advanced Setup

\n
    \n
  1. After activating the plugin, visit Appearance > Widgets in admin dashboard.
  2. \n
  3. Look for ‘Podcast player’ widget in left ‘Available Widgets’ section.
  4. \n
  5. Drag the widget to any available sidebar/widget area.
  6. \n
  7. Enter feed url in the appropriate field.
  8. \n
  9. Optionally, click on “Change podcast content” button to customize feed’s auto fetched details.
  10. \n
  11. Optionally, click on “Show/Hide player items” button to show or hide player elements.
  12. \n
  13. Optionally, click on “Podcast player styling” button to customize player’s accent color.
  14. \n
  15. Optionally, click on “Sort & Filter” button to sort or filter podcast episodes.
  16. \n
  17. Click [Save] button.
  18. \n
\n

Setup Podcast Player Block

\n

Display searchable podcast episodes list on any post or page. Make sure you have not disabled WordPress latest block editor.

\n

Setup

\n
    \n
  1. After activating the plugin, visit any post or page’s edit screen.
  2. \n
  3. In main content area, click on ‘+’ icon to add a new block.
  4. \n
  5. Search for ‘Podcast Player’ block.
  6. \n
  7. Enter feed url in the appropriate field. A preview of your podcast player will appear.
  8. \n
  9. Click on the podcast player preview.
  10. \n
  11. Select appropriate options from the right sidebar to customize the player.
  12. \n
  13. Save or Update the post.
  14. \n
\n

Setup Podcast Player using shortcode

\n

Minimum Setup

\n
[podcastplayer feed_url ='']\n
\n
    \n
  1. feed_url – Your podcast feed url.
  2. \n
\n

Advanced Setup

\n
[podcastplayer feed_url ='' number='' podcast_menu='' cover_image_url='' hide_cover='true' hide_description='true' hide_subscribe='true' hide_search='true' hide_loadmore='true' hide_download='true' accent_color='#65b84f']Short Description [/podcastplayer]\n
\n
    \n
  1. feed_url: Your podcast feed url.
  2. \n
  3. number: Number of podcasts episodes to be displayed at a time.
  4. \n
  5. podcast_menu: Any previously created WordPress menu’s name OR ID OR slug. (optional)
  6. \n
  7. cover_image_url: Podcast’s cover image url. The image must be from your WP media library. (optional)
  8. \n
  9. header_default: (false/true) Show player header items by default
  10. \n
  11. hide_header: Hide player header items
  12. \n
  13. hide_title: (false/true) Show / Hide podcast Title in header info section
  14. \n
  15. hide_cover: (false/true) Show / Hide podcast cover image
  16. \n
  17. hide_description: (false/true) Show / Hide podcast description
  18. \n
  19. hide_subscribe: (false/true) Show / Hide podcast subscribe button.
  20. \n
  21. hide_search: (false/true) Show / Hide podcast search field.
  22. \n
  23. hide_author: (false/true) Show / Hide author/podcaster’s name.
  24. \n
  25. hide_content: (false/true) Show / Hide podcast episode’s content.
  26. \n
  27. hide_loadmore: (false/true) Show / Hide podcast load more button.
  28. \n
  29. hide_download: (false/true) Show/ Hide podcast episode download link.
  30. \n
  31. hide_social: (false/true) Show/ Hide podcast episode social sharing links.
  32. \n
  33. accent_color: Podcast player’s accent color (Color hex-code to be entered).
  34. \n
  35. sortby: Sort podcast episodes (sort_date_desc/sort_date_asc/sort_title_desc/sort_title_asc)
  36. \n
  37. filterby: Filter by any string in episode’s title
  38. \n
  39. list_default: (false/true) Display Episodes list by default on small screen
  40. \n
  41. hide_featured: (false/true) Show / Hide podcast episode featured image
  42. \n
  43. apple_sub: Apple podcast subscription link
  44. \n
  45. google_sub: Google podcast subscription link
  46. \n
  47. Short Description: Podcast short text description. (optional)
  48. \n
\n","download_link":"https://downloads.wordpress.org/plugin/podcast-player.5.0.1.zip","tags":{"feed-to-audio":"feed to audio","podcast":"podcast","podcaster":"podcaster","podcasting":"podcasting","rss-feed":"rss feed"},"donate_link":"","icons":{"1x":"https://ps.w.org/podcast-player/assets/icon-256x256.png?rev=2025683","2x":"https://ps.w.org/podcast-player/assets/icon-256x256.png?rev=2025683"},"wporg":true},{"name":"WPSSO Schema JSON-LD Markup | Google Rich Results, Rich Snippets, and Structured Data","slug":"wpsso-schema-json-ld","version":"4.18.1","author":"JS Morisset","author_profile":"https://profiles.wordpress.org/jsmoriss","requires":"5.0","tested":"5.8","requires_php":"7.0","rating":90,"ratings":{"1":5,"2":2,"3":1,"4":1,"5":54},"num_ratings":63,"support_threads":4,"support_threads_resolved":4,"active_installs":4000,"downloaded":283692,"last_updated":"2021-09-04 3:57pm GMT","added":"2016-02-14","homepage":"https://wpsso.com/extend/plugins/wpsso-schema-json-ld/","short_description":"Google Rich Results for Articles, Carousels, Events, FAQ pages, How-Tos, Local SEO, Products, Recipes, Ratings, Reviews, and more.","description":"

Supports over 500 different Schema (aka Schema.org) types and sub-types:

\n

Google Rich Results with JSON-LD structured data for Articles, Carousels (aka Item Lists), Claim Reviews, Events, FAQ pages, How-Tos, Images, Local Business / Local SEO, Organizations, Products, Ratings, Recipes, Restaurants, Reviews, Video Objects, and much more.

\n

Reads your existing content, plugin data, and service API data:

\n

There’s no need to manually re-enter descriptions, titles, product information, and re-select images / videos like other SEO and Schema markup plugins.

\n

Provides comprehensive Schema JSON-LD markup for posts, pages, custom post types, terms (category, tags, etc.), custom taxonomies, user profile pages, search result pages, archive pages, and Accelerated Mobile Pages (AMP) pages – including image SEO, video SEO, local business, organization, publisher, person, author and co-authors, extensive e-Commerce product markup, product variations, product ratings, aggregate ratings, reviews, recipe information, event details, collection pages, profile pages, search pages, FAQ pages, item lists for Google’s Carousel Rich Results, and much more.

\n

Most complete Schema JSON-LD markup for WooCommerce products:

\n

Note that WooCommerce offers incomplete Schema markup for Google Rich Results by default. The WPSSO Core Premium plugin and this add-on provide a solution by offering complete product meta tags for Facebook / Pinterest and complete Schema product markup for Google Rich Results – including additional product images, product variations, product information (brand, color, condition, EAN, dimensions, GTIN-8/12/13/14, ISBN, material, MPN, size, SKU, volume, weight, etc), product reviews, product ratings, sale start / end dates, sale prices, pre-tax prices, VAT prices, shipping rates, shipping times, and much, much more.

\n

Fixes all Google Search Console and Schema Markup Validator (aka Google Structured Data Testing Tool) errors:

\n
    \n
  • A value for the headline field is required.
  • \n
  • A value for the image field is required.
  • \n
  • A value for the logo field is required.
  • \n
  • A value for the publisher field is required.
  • \n
  • The aggregateRating field is recommended.
  • \n
  • The brand field is recommended.
  • \n
  • The headline field is recommended.
  • \n
  • The image field is recommended.
  • \n
  • The mainEntityOfPage field is recommended.
  • \n
  • The review field is recommended.
  • \n
  • This Product is missing a global identifier (e.g. isbn, mpn or gtin8).
  • \n
  • No global identifier provided (e.g. gtin mpn isbn).
  • \n
  • Not a known valid target type for the itemReviewed property.
  • \n
  • And more…
  • \n
\n

Some Schema property values may require data from WPSSO Core Premium supported third-party plugins and service APIs.

\n

Google regularly updates and changes their Schema markup requirements – WPSSO JSON Premium customers can also open a Premium support ticket for timely assistance with any new Google testing tool errors.

\n

Users Love the WPSSO JSON Add-on

\n

★★★★★ – “Forget everything else this is the best schema plugin – Sincerely, we bought other plugins that we had to abandon due to the lack of important features, but with this [WPSSO JSON] we get all that we need – and our schema has more features than the competition!” – zuki305

\n

★★★★★ – “Tried three other plugins before this one – for our Woocommerce site, this was by far the best one. Thanks!” – EntoMarket

\n

★★★★★ – “Crazy good! This plugin is one of my favorites! JS aggressively develops and improves this suite of plugins, continuously improving and adding features – with great customer support to boot! Highly recommended to improve your SEO for all kinds of JSON schemas!” – mikegoubeaux

\n

★★★★★ – “This plugin is heaven sent. I know little about SSO and this has taken care of everything. The support makes this an even better plugin to have. Keep up the great work!” – kevanchetty

\n

WPSSO JSON Add-on Features

\n

Extends the features of the WPSSO Core plugin (required plugin).

\n

Provides accurate and comprehensive Schema JSON-LD markup for Google Rich Results (aka Rich Snippets) with Structured Data.

\n

Provides complete Schema ImageObject SEO markup with image information from the WordPress Media Library (name, alternateName, alternativeHeadline, caption, description, fileFormat, uploadDate, and more).

\n

Provides complete Schema VideoObject SEO markup with video information from WPSSO Core Premium service APIs (Facebook, Slideshare, Soundcloud, Vimeo, Wistia, YouTube) including the ’embedUrl’ and ‘contentUrl’ properties for Google.

\n

Provides Schema 1:1, 4:3, and 16:9 images for Google Rich Results (see the Google rich results search library for details).

\n

Provides Schema FAQPage and Question / Answer markup for the WPSSO FAQ Manager add-on.

\n

Includes Schema JSON-LD scripts from shortcodes and WordPress editor blocks in the Schema CreativeWork type and sub-types.

\n

Built-in support for AMP and AMP for WP plugins.

\n

Includes contributor markup for Co-Authors Plus authors and guest authors (WPSSO Core Premium plugin required).

\n

Supports additional custom product information and WooCommerce product attributes from the WPSSO Core Premium plugin:

\n
    \n
  • Product Availability
  • \n
  • Product Brand
  • \n
  • Product Color
  • \n
  • Product Condition
  • \n
  • Product Depth
  • \n
  • Product Fluid Volume
  • \n
  • Product GTIN-14
  • \n
  • Product GTIN-13 (EAN)
  • \n
  • Product GTIN-12 (UPC)
  • \n
  • Product GTIN-8
  • \n
  • Product GTIN
  • \n
  • Product ISBN
  • \n
  • Product Length
  • \n
  • Product Material
  • \n
  • Product MPN
  • \n
  • Product Price
  • \n
  • Product Size
  • \n
  • Product SKU
  • \n
  • Product Target Gender
  • \n
  • Product Type
  • \n
  • Product Weight
  • \n
  • Product Width
  • \n
\n

Provides Schema Product markup for Google price drop appearance in search results.

\n

Fixes common Google testing tool warnings like “aggregateRating field is recommended” and “review field is recommended”.

\n

Fixes Google testing tool warnings for supported WPSSO Core Premium e-commerce products, like “brand field is recommended”, “missing a global identifier”, etc.

\n

The WPSSO Schema JSON-LD Markup Standard add-on is designed to satisfy the requirements of most standard WordPress sites. If your content requires additional customization of some Schema properties for products, events, places / locations, recipes, etc., then you may want to get the WPSSO JSON Premium add-on for those additional features.

\n

[Premium] Includes additional customizable option values in the Document SSO metabox (shown based on the Schema Type selected):

\n
    \n
  • All Schema Types\n
      \n
    • Name (Title)
    • \n
    • Alternate Name
    • \n
    • Description
    • \n
    • Microdata Type URLs
    • \n
    • Same-As URLs
    • \n
    \n
  • \n
  • Creative Work Information\n
      \n
    • Is Part of URL
    • \n
    • Headline
    • \n
    • Full Text
    • \n
    • Keywords
    • \n
    • Language
    • \n
    • Family Friendly
    • \n
    • Copyright Year
    • \n
    • License URL
    • \n
    • Publisher (Org)
    • \n
    • Publisher (Person)
    • \n
    • Service Provider (Org)
    • \n
    • Service Provider (Person)
    • \n
    \n
  • \n
  • Event Information\n
      \n
    • Event Language
    • \n
    • Event Attendance
    • \n
    • Event Online URL
    • \n
    • Event Physical Venue
    • \n
    • Event Organizer (Org)
    • \n
    • Event Organizer (Person)
    • \n
    • Event Performer (Org)
    • \n
    • Event Performer (Person)
    • \n
    • Event Start (date, time, timezone)
    • \n
    • Event End (date, time, timezone)
    • \n
    • Event Offers Start (date, time, timezone)
    • \n
    • Event Offers End (date, time, timezone)
    • \n
    • Event Offers (name, price, currency, availability)
    • \n
    \n
  • \n
  • How-To\n
      \n
    • How-To Makes
    • \n
    • How-To Preparation Time
    • \n
    • How-To Total Time
    • \n
    • How-To Supplies
    • \n
    • How-To Tools
    • \n
    • How-To Steps (section name, section description, step name, direction text and image)
    • \n
    \n
  • \n
  • Job Posting Information\n
      \n
    • Job Title
    • \n
    • Hiring Organization
    • \n
    • Job Location
    • \n
    • Job Location Type
    • \n
    • Base Salary
    • \n
    • Employment Type
    • \n
    • Jpb Posting Expires
    • \n
    \n
  • \n
  • Movie Information\n
      \n
    • Cast Names
    • \n
    • Director Names
    • \n
    • Production Company
    • \n
    • Movie Runtime
    • \n
    \n
  • \n
  • Organization Information\n
      \n
    • Select an Organization
    • \n
    \n
  • \n
  • Person Information\n
      \n
    • Select a Person
    • \n
    \n
  • \n
  • Product Information (Additional)\n
      \n
    • Product Length (cm)
    • \n
    • Product Width (cm)
    • \n
    • Product Height (cm)
    • \n
    • Product Depth (cm)
    • \n
    • Product Fluid Volume (ml)
    • \n
    • Product GTIN-14
    • \n
    • Product GTIN-13 (EAN)
    • \n
    • Product GTIN-12 (UPC)
    • \n
    • Product GTIN-8
    • \n
    • Product GTIN
    • \n
    \n
  • \n
  • QA Page Information\n
      \n
    • QA Heading
    • \n
    \n
  • \n
  • Recipe Information\n
      \n
    • Recipe Cuisine
    • \n
    • Recipe Course
    • \n
    • Recipe Makes
    • \n
    • Cooking Method
    • \n
    • Preparation Time
    • \n
    • Cooking Time
    • \n
    • Total Time
    • \n
    • Recipe Ingredients
    • \n
    • Recipe Instructions
    • \n
    • Nutrition Information per Serving\n
        \n
      • Serving Size
      • \n
      • Calories
      • \n
      • Protein
      • \n
      • Fiber
      • \n
      • Carbohydrates
      • \n
      • Sugar
      • \n
      • Sodium
      • \n
      • Fat
      • \n
      • Saturated Fat
      • \n
      • Unsaturated Fat
      • \n
      • Trans Fat
      • \n
      • Cholesterol
      • \n
      \n
    • \n
    \n
  • \n
  • Review Information\n
      \n
    • Review Rating
    • \n
    • Rating Value Name
    • \n
    • Subject of the Review\n
        \n
      • Subject Webpage Type
      • \n
      • Subject Webpage URL
      • \n
      • Subject Same-As URL
      • \n
      • Subject Name
      • \n
      • Subject Description
      • \n
      • Subject Image ID or URL
      • \n
      • Claim Subject Information (for Claim Review)\n
          \n
        • Short Summary of Claim
        • \n
        • First Appearance URL
        • \n
        \n
      • \n
      • Creative Work Subject Information\n
          \n
        • C.W. Author Type
        • \n
        • C.W. Author Name
        • \n
        • C.W. Author URL
        • \n
        • C.W. Published Date
        • \n
        • C.W. Created Date
        • \n
        \n
      • \n
      • Book Subject Information\n
          \n
        • Book ISBN
        • \n
        \n
      • \n
      • Movie Subject Information\n
          \n
        • Movie Cast Names
        • \n
        • Movie Director Names
        • \n
        \n
      • \n
      • Product Subject Information\n
          \n
        • Product Brand
        • \n
        • Product Offers (name, price, currency, availability)
        • \n
        • Product SKU
        • \n
        • Product MPN
        • \n
        \n
      • \n
      • Software App Subject Information\n
          \n
        • Operating System
        • \n
        • Application Category
        • \n
        • Software App Offers (name, price, currency, availability)
        • \n
        \n
      • \n
      \n
    • \n
    \n
  • \n
  • Software Application Information\n
      \n
    • Operating System
    • \n
    • Application Category
    • \n
    \n
  • \n
\n

WPSSO Core Required

\n

WPSSO Schema JSON-LD Markup (WPSSO JSON) is an add-on for the WPSSO Core plugin.

\n","download_link":"https://downloads.wordpress.org/plugin/wpsso-schema-json-ld.4.18.1.zip","tags":{"rich-results":"rich results","rich-snippets":"rich snippets","schema-org":"schema.org","video-seo":"video seo","woocommerce":"woocommerce"},"donate_link":"","icons":{"1x":"https://ps.w.org/wpsso-schema-json-ld/assets/icon-128x128.png?rev=2480083","2x":"https://ps.w.org/wpsso-schema-json-ld/assets/icon-256x256.png?rev=2480083"},"wporg":true},{"name":"ShortPixel Image Optimizer","slug":"shortpixel-image-optimiser","version":"4.22.5","author":"ShortPixel","author_profile":"https://profiles.wordpress.org/shortpixel","requires":"4.2.0","tested":"5.8","requires_php":"5.6","rating":92,"ratings":{"1":54,"2":10,"3":8,"4":10,"5":544},"num_ratings":626,"support_threads":8,"support_threads_resolved":6,"active_installs":300000,"downloaded":6854881,"last_updated":"2021-08-31 5:54pm GMT","added":"2014-11-05","homepage":"https://shortpixel.com/","short_description":"Speed up your website & boost your SEO by compressing old & new images and PDFs. AVIF & WebP convert and optimize support.","description":"

A freemium, easy to use, comprehensive, stable and frequently updated image compression plugin supported by the friendly team that created it. 🙂

\n

Increase your website’s SEO ranking, number of visitors and ultimately your sales by optimising any image or PDF document on your website.
\nShortPixel is an easy to use, lightweight, install-and-forget-about-it image optimization plugin that can compress all your past images and PDF documents with a single click. New images are automatically resized/rescaled and optimized on the fly, in the background. It’s also compatible with any gallery, slider or ecommerce plugin.

\n

Ready for a quick DEMO? Test our plugin here.
\nOr you can create a staging copy of your site using WP Staging and test it there.

\n

Short Pixel uses minimal resources and works well with any shared, cloud, VPS or dedicated web hosting. It can optimize any image you have on your website even the images that aren’t listed in Media Library like those in galleries like NextGEN, Modula or added directly via FTP!

\n

Both lossy and lossless image compression are available for the most common image types (JPG, PNG, GIF, WebP and AVIF) plus PDF files.
\nWe also offer glossy JPEG compression which is a very high quality lossy optimization algorithm. Specially designed for photographers!
\nOptimized images mean better user experience, better PageSpeed Insights or GTmetrix results, better Google PageRank and more visitors.

\n

Make an instant image compression test of your site or compress some images to test our optimization algorithms.

\n

Why is ShortPixel the best choice when it comes to image optimization or PDF compression?

\n
    \n
  • popular plugin with over 300,000 active installations – according to WordPress
  • \n
  • compress JPG (and its variations JPEG, JPEG 2000, JPEG XR), PNG, GIF (still or animated) images and also PDF documents
  • \n
  • option to convert any JPEG, PNG or GIF (even animated ones!) to WebP and AVIF for more Google love. How to enable WebP?. What is AVIF and why is it good?.
  • \n
  • option to automatically convert PNG to JPG if that will result in smaller images. Ideal for large images in PNG format
  • \n
  • option to include the next generation images (WebP and AVIF) into the front-end pages by using the <picture> tag instead of <img>, independent from generating them through the plugin
  • \n
  • compatible with WP Retina 2x – all retina images are automatically compressed. How to benefit from Retina displays?
  • \n
  • optimize thumbnails as well as featured images. You can also select individual thumbnails to exclude from optimization
  • \n
  • ability to optimize any image on your site including images in NextGEN Gallery and any other image galleries or sliders
  • \n
  • option to scale images down, with 2 different options, which is very useful to automatically resize large images. This applies to the featured images and there is no need for additional plugins like Imsanity
  • \n
  • CMYK to RGB conversion
  • \n
  • skip already optimized images
  • \n
  • 24h stellar support (24/7) directly from developers.
  • \n
  • easily test lossy/glossy/lossless versions of the images with a single click in your Media Library
  • \n
  • great for photographers: keep or remove EXIF data from your images, compress photos with lossless option
  • \n
  • works well with both HTTPS and HTTP websites
  • \n
  • uses progressive JPEG for larger images in order to speed up the image display
  • \n
  • you can run ShortPixel plugin on multiple websites or on a multisite with a single API Key
  • \n
  • it is safe to test and use the plugin: all the original images are by default saved in a local backup that can be restored with a click, either one by one or in bulk
  • \n
  • ‘Bulk’ optimize all the existing images in Media Library or in any gallery with one click
  • \n
  • works great for eCommerce websites using WooCommerce or other plugins
  • \n
  • works great with NextGEN gallery, Foo Gallery and any other galleries and sliders
  • \n
  • compatible with WP Engine hosted websites and all the major hosting providers
  • \n
  • compatible with WPML and WPML Media plugins
  • \n
  • no file size limit
  • \n
  • integrates with Gravity Forms post_image field type optimizing the images upon upload
  • \n
  • compatible with watermarking plugins
  • \n
  • option to deactivate auto-optimizing images on upload
  • \n
  • no credits are used for the images that are optimised less that 5%
  • \n
  • direct integration with CloudFlare, either by using an API Key or a Token
  • \n
  • 30 days optimization report with all image details and overall statistics
  • \n
  • We are GDPR compliant! Read more.
  • \n
  • free optimization credits for non-profits, contact us for details
  • \n
\n

How much does it cost?
\nShortPixel comes with 100 free credits/month and additional credits can be bought for as little as $4.99 for 5,000 image credits.
\nCheck out our prices.

\n
\n

Testimonials:
\n ★★★★★ A Super Plugin works very well 62% reduction overall. robertvarns
\n ★★★★★ The secret sauce for a WordPress website. mark1mark
\n ★★★★★ A must have plugin, great support! ElColo13
\n ★★★★★ Excellent Plugin! Even Better Customer Service! scaliendo
\n ★★★★★ Great image compression, solid plugin, equally great support. matters1959
\n more testimonials

\n
\n\n

Help us spread the word by recommending ShortPixel to your friends and collect 100 lifetime monthly additional image credits for each referred active user. Make money by promoting a great plugin with our 30% commission affiliate program.

\n

Other plugins by ShortPixel

\n\n

Get in touch!

\n\n

Actions and Filters for Developers

\n

The ShortPixel Image Optimiser plugin calls the following actions and filters:

\n
do_action( 'shortpixel_image_optimised', $post_id );\n
\n

upon successful optimization;

\n
do_action(\"shortpixel_before_restore_image\", $post_id);\n
\n

before restoring an image from backup;

\n
do_action(\"shortpixel_after_restore_image\", $post_id);\n
\n

after succesful restore;

\n
apply_filters(\"shortpixel_backup_folder\", $backup_folder, $main_file_path, $sizes);\n
\n

just before returning the ShortPixel backup folder, usually /wp-content/uploads/ShortpixelBackups. The $sizes are the sizes array from metadata;

\n
apply_filters('shortpixel_image_exists', file_exists($path), $path, $post_id);\n
\n

post ID is not always set, only if it’s an image from Media Library;

\n
apply_filters('shortpixel_image_urls', $URLs, $post_id);\n
\n

filters the URLs that will be sent to optimisation, $URLs is a plain array;

\n
apply_filters('shortpixel/db/chunk_size', $chunk);\n
\n

the $chunk is the value ShortPixel chooses to use as number of selected records in one query (based on total table size), some hosts work better with a different value;

\n
apply_filters('shortpixel/backup/paths', $PATHs, $mainPath);\n
\n

filters the array of paths of the images sent for backup and can be used to exclude certain paths/images/thumbs from being backed up, based on the image path. $mainPath is the path of the main image, while $PATHs is an array with all files to be backed up (including thumbnails);

\n
apply_filters('shortpixel/settings/image_sizes', $sizes);\n
\n

filters the array ($sizes) of image sizes which can be excluded from processing (displayed in the plugin Advanced settings).

\n

In order to define custom thumbnails to be picked up by the optimization you have two options, both comma separated defines:

\n
define('SHORTPIXEL_CUSTOM_THUMB_SUFFIXES', '_tl,_tr');\n
\n

will handle custom thumbnails like image-100x100_tl.jpg;

\n
define('SHORTPIXEL_CUSTOM_THUMB_INFIXES', '-uae');\n
\n

will handle custom thumbnails like image-uae-100×100.jpg;

\n
define('SHORTPIXEL_USE_DOUBLE_WEBP_EXTENSION', true);\n
\n

will tell the plugin to create double extensions for the WebP image counterparts, for example image.jpg.webp for image.jpg;

\n
define(\"SHORTPIXEL_NOFLOCK\", true);\n
\n

don’t use flock queue, only activate this when you have flock() denied errors on your installation;

\n
define(\"SHORTPIXEL_EXPERIMENTAL_SECURICACHE\", true);\n
\n

adds timestamps to URLS, to prevent hitting the cache. Useful for persistent caches.

\n

Hide the Cloudflare settings by defining these constants in wp-config.php:

\n
define('SHORTPIXEL_CFTOKEN', 'the Cloudflare API token that has Purge Cache right');\ndefine('SHORTPIXEL_CFZONE', 'The Zone ID from the domain settings in Cloudflare');\n
\n

Hide the WSO banner in the settings by defining this constant in wp-config.php:

\n
define('SHORTPIXEL_NO_BANNER', true);\n
\n

Alternatively, you can use this filter in your theme’s functions.php file:

\n
add_filter('shortpixel/settings/no_banner', true);\n
\n","download_link":"https://downloads.wordpress.org/plugin/shortpixel-image-optimiser.4.22.5.zip","tags":{"compressor":"compressor","convert-webp":"convert webp","image-optimization":"image optimization","optimize-images":"optimize images","resize":"resize"},"donate_link":"","icons":{"1x":"https://ps.w.org/shortpixel-image-optimiser/assets/icon-128x128.png?rev=1038819","2x":"https://ps.w.org/shortpixel-image-optimiser/assets/icon-256x256.png?rev=1038819"},"wporg":true},{"name":"Theme Kit for Twenty Twenty-One & Twenty Twenty (Customization, Gutenberg Blocks, Templates) – Twentig","slug":"twentig","version":"1.3.5","author":"Twentig","author_profile":"https://profiles.wordpress.org/twentig","requires":"5.5","tested":"5.8","requires_php":"5.6","rating":100,"ratings":{"1":0,"2":0,"3":0,"4":2,"5":104},"num_ratings":106,"support_threads":31,"support_threads_resolved":29,"active_installs":10000,"downloaded":139063,"last_updated":"2021-08-10 11:02am GMT","added":"2019-05-29","homepage":"https://twentig.com","short_description":"Supercharge your WordPress theme (Twenty Twenty-One & Twenty Twenty) with customization options, enhanced Gutenberg blocks,…","description":"

The easy way to build a beautiful website.

\n

Twentig helps you customize the default WordPress theme (Twenty Twenty-One and Twenty Twenty) the way you want with Google Fonts, colors, custom layouts, and many more options.

\n

With enhanced Gutenberg blocks, pre-designed block templates, and starter websites, you’ve got everything you need to build stunning pages that look great on any device — no coding or design skills needed.

\n
\n

“Twentig is a plugin that essentially gives superpowers to the default theme.” — Justin Tadlock, WP Tavern

\n
\n

Customize the most popular WordPress theme. Your way.

\n

Twentig offers powerful features to customize the Twenty Twenty-One and Twenty Twenty themes — making it easier than ever to create your own professional website.

\n

Advanced theme customization. From post grid to sidebar to sticky header to footer layout, our plugin provides endless ways to enhance your WordPress theme. Change the look and feel of your website by customizing the fonts (Google Fonts), colors, global styles, 404 page, and more.

\n

Custom page templates. Control the look of your entire page with our page templates. Easily remove the page title, header, footer, or set a transparent header. Now you can use Gutenberg blocks to create a custom hero, landing page, coming soon page, and more.

\n

Tailored design. Twentig brings design improvements to the default WordPress theme. Our additional block settings and pre-designed block templates are specially built for it — so it’s simple to make beautiful pages with Gutenberg blocks.

\n

Start with a pre-built website.

\n

Instead of starting from scratch, you can quickly import one of Twentig’s starter websites crafted by award-winning designers.

\n

The simple way to import starter websites. Choose from a variety of starter websites and seamlessly load them in a few seconds in the Customizer. Preview and customize your theme any way you like before publishing it to your live site.

\n

Flexible import. Twentig lets you import full websites (Customizer settings, menus, widgets, and pages built with Gutenberg blocks). You can also only import what you need, be it the styling or the pages, on a fresh install or an existing website.

\n

Check out the starter websites to see the power and flexibility of Twentig.

\n

Do more with Gutenberg blocks.

\n

Twentig enhances the existing Gutenberg blocks — taking the WordPress block editor to a new level of design and creativity.

\n

Block customization made easy. We’ve added the right amount of features to the Gutenberg core blocks. So you can easily customize your blocks to fit your needs with just a few clicks.

\n

Powerful Gutenberg block features. Twentig provides alternative styles, advanced block settings, margin controls, and CSS classes. From columns style to group shape divider to typography settings, you have the best tools to customize the Gutenberg blocks and build gorgeous pages.

\n

Build your pages with ready-to-use templates.

\n

Twentig brings hundreds of pre-designed block patterns and page templates — making it easier and faster than ever to create stunning pages.

\n

Flexible block templates. Choose from a variety of versatile block patterns and page templates that you can mix and match to fit your project. Our block template library is designed to enable a wide range of uses and endless design possibilities.

\n

Professional design. Our templates are responsive and give your pages a professional look right from the start — no coding or design skills needed.

\n

Twentig features list

\n

Check out the screenshots to see how Twentig can transform your theme and the Gutenberg blocks.

\n

ADDITIONAL THEME OPTIONS

\n

Header

\n
    \n
  • Header layouts
  • \n
  • Sticky header
  • \n
  • Header width
  • \n
  • Header decoration
  • \n
  • Additional elements: search bar, social icons, button
  • \n
  • Logo width
  • \n
  • Custom logo for transparent header
  • \n
  • Menu link style
  • \n
  • Option to display the burger menu on tablet
  • \n
\n

Footer

\n
    \n
  • Footer layouts
  • \n
  • Footer widgets layout
  • \n
  • Footer width
  • \n
  • Custom copyright and remove “Powered by WordPress”
  • \n
  • Social icons
  • \n
\n

Site Layout

\n
    \n
  • Text width
  • \n
  • Wide width (Twenty Twenty-One theme)
  • \n
  • Site width to create a boxed layout site (Twenty Twenty-One theme)
  • \n
\n

Blog Posts Page

\n
    \n
  • Option to display the page title (Twenty Twenty-One theme)
  • \n
  • Blog layouts: stack, post grid, post grid card
  • \n
  • Blog sidebar (Twenty Twenty-One theme)
  • \n
  • Number of columns for post grid layouts
  • \n
  • Featured image options
  • \n
  • Blog content options
  • \n
  • Blog meta options
  • \n
  • Pagination style (Twenty Twenty-One theme)
  • \n
\n

Single Blog Post

\n
    \n
  • Featured image and post title layouts
  • \n
  • Blog sidebar (Twenty Twenty-One theme)
  • \n
  • Option to display the manual excerpt below the title
  • \n
  • Single post meta options
  • \n
  • Post navigation layout (Twenty Twenty theme)
  • \n
  • Hide comments section
  • \n
\n

Typography & Colors

\n
    \n
  • Google Fonts options (curated collection and custom Google Fonts)
  • \n
  • Google Fonts pairings and Google Fonts presets
  • \n
  • Font settings
  • \n
  • Color options
  • \n
\n

Pages

\n
    \n
  • Custom page templates: remove the page title, header, and footer, or set a transparent header
  • \n
  • Featured image and page title layouts
  • \n
\n

Custom 404 Page

\n
    \n
  • Option to assign any page as the 404 page
  • \n
\n

Additional Settings

\n
    \n
  • Minimal style for links (Twenty Twenty-One theme)
  • \n
  • Button style
  • \n
  • Separator style
  • \n
  • Social icons style (Twenty Twenty theme)
  • \n
\n

ADDITIONAL GUTENBERG BLOCK SETTINGS

\n
    \n
  • Gutenberg core blocks: top margin and bottom margin
  • \n
  • Group: shadow, border, shape divider, full height
  • \n
  • Columns: gutter, responsive layout, columns style (card, border), text alignment, stretched link
  • \n
  • Media & Text: styles (shadow, overlap), responsive layout, reverse stack order, stretched link, full height
  • \n
  • Cover: styles (shadow, inner border), stretched link, hover effect
  • \n
  • Heading: typography options, decoration
  • \n
  • Paragraph: wide width, typography options
  • \n
  • List: styles (dash, checkmark, arrow, border, no bullet, inline), typography options, spacing
  • \n
  • Image: styles (rounded, shadow, frame, border), image filter
  • \n
  • Gallery: stack variation, styles (rounded, frame), fixed width columns, image aspect ratio, gutter, responsive layout, caption size, border, image filter
  • \n
  • YouTube, Vimeo, SoundCloud, and Video blocks: style (frame)
  • \n
  • Latest Posts: styles (card, border), image aspect ratio, heading size, stretched link, text alignment
  • \n
  • Social Icons: hover effect
  • \n
  • Quote: additional styles
  • \n
  • Pullquote: additional styles
  • \n
  • Table: styles (border, inner border), vertical alignment
  • \n
  • Separator: style (short line), responsive visibility
  • \n
  • Spacer: responsive visibility
  • \n
\n

GUTENBERG TEMPLATE LIBRARY

\n

Hundreds of Gutenberg block patterns grouped by following categories:

\n
    \n
  • Columns
  • \n
  • Text Columns
  • \n
  • Text and Image
  • \n
  • Text
  • \n
  • Hero
  • \n
  • Cover
  • \n
  • Call to Action
  • \n
  • List
  • \n
  • Numbers, Stats
  • \n
  • Gallery
  • \n
  • Video, Audio
  • \n
  • Latest Posts
  • \n
  • Contact
  • \n
  • Team
  • \n
  • Testimonials
  • \n
  • Logos, Clients
  • \n
  • Pricing
  • \n
  • FAQ
  • \n
  • Events, Schedule
  • \n
\n

Dozens of pre-designed page templates grouped by following categories:

\n
    \n
  • Homepage
  • \n
  • About
  • \n
  • Services
  • \n
  • Contact
  • \n
  • Single Page
  • \n
\n

Get more

\n\n

Enjoying Twentig?

\n\n","download_link":"https://downloads.wordpress.org/plugin/twentig.1.3.5.zip","tags":{"gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","templates":"templates","theme":"theme","twenty-twenty-one":"twenty-twenty-one"},"donate_link":"https://www.paypal.com/donate?hosted_button_id=JTBTPQAFEA94E","icons":{"1x":"https://ps.w.org/twentig/assets/icon.svg?rev=2569439","2x":"https://ps.w.org/twentig/assets/icon-256x256.png?rev=2569439","svg":"https://ps.w.org/twentig/assets/icon.svg?rev=2569439"},"wporg":true},{"name":"Custom Post Type UI","slug":"custom-post-type-ui","version":"1.9.2","author":"WebDevStudios","author_profile":"https://profiles.wordpress.org/williamsba1","requires":"5.5","tested":"5.7.2","requires_php":"5.6","rating":94,"ratings":{"1":12,"2":3,"3":6,"4":9,"5":202},"num_ratings":232,"support_threads":66,"support_threads_resolved":29,"active_installs":1000000,"downloaded":8718437,"last_updated":"2021-06-17 2:40am GMT","added":"2010-02-26","homepage":"https://github.com/WebDevStudios/custom-post-type-ui/","short_description":"Admin UI for creating custom post types and custom taxonomies for WordPress","description":"

Custom Post Type UI provides an easy to use interface for registering and managing custom post types and taxonomies for your website.

\n

While CPTUI helps solve the problem of creating custom post types, displaying the data gleaned from them can be a whole new challenge. That’s why we created Custom Post Type UI Extended. View our Layouts page to see some examples that are available with Custom Post Type UI Extended.

\n

Official development of Custom Post Type UI is on GitHub, with official stable releases published on WordPress.org. The GitHub repo can be found at https://github.com/WebDevStudios/custom-post-type-ui. Please use the Support tab for potential bugs, issues, or enhancement ideas.

\n

Pluginize was launched in 2016 by WebDevStudios to promote, support, and house all of their WordPress products. Pluginize is not only creating new products for WordPress all the time, like CPTUI Extended, but also provides ongoing support and development for WordPress community favorites like CMB2 and more.

\n","download_link":"https://downloads.wordpress.org/plugin/custom-post-type-ui.zip","tags":{"cms":"cms","cpt":"cpt","custom-post-types":"custom post types","post":"post","types":"types"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=3084056","icons":{"1x":"https://ps.w.org/custom-post-type-ui/assets/icon-128x128.png?rev=2549362","2x":"https://ps.w.org/custom-post-type-ui/assets/icon-256x256.png?rev=2549362"},"wporg":true},{"name":"Flex Posts – Widget and Gutenberg Block","slug":"flex-posts","version":"1.8.1","author":"Tajam","author_profile":"https://profiles.wordpress.org/tajam","requires":"5.2","tested":"5.8","requires_php":false,"rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":17},"num_ratings":17,"support_threads":8,"support_threads_resolved":3,"active_installs":3000,"downloaded":24512,"last_updated":"2021-07-29 10:41am GMT","added":"2018-05-10","homepage":"https://tajam.id/flex-posts/","short_description":"A widget to display posts with thumbnails in various layouts. Fits nicely in any widget…","description":"

Flex Posts is a widget to display posts in various different layouts. It is useful for a news site where you need to display a lot of posts in a page.

\n

The widget is responsive so you can place it in any widget area. The widget content will adapt based on the width of its container. In a narrow area like standard sidebar, posts will be displayed vertically, but in a wider area, posts will be displayed in 2 or 3 columns depends on the container’s width.

\n

Widget Settings

\n
    \n
  • Title: Set the widget title. Leave it empty to hide the title section.
  • \n
  • Title URL: Set the title link url. Leave it empty to disable link in the title.
  • \n
  • Layout: Select a widget layout, from layout 1 to 4.
  • \n
  • Post type: Select the post type. Options include: Post, Page, custom post types if available, and any.
  • \n
  • Category: Select a category for the posts, or choose All Categories to disable this filter.
  • \n
  • Tag(s): Set a post tag (using the tag slug). You can also use comma separated value for multiple tags. Prepending a tag with a hyphen will exclude posts matching that tag. Eg, featured, -video will show posts tagged with featured but not video.
  • \n
  • Order by: Set the order in which the posts will be displayed. Options include: Newest, Oldest, Most Commented, Alphabetical, Random, Modified Date.
  • \n
  • Number of posts to show: Set the number of posts displayed.
  • \n
  • Number of posts to skip: Set the number of posts to displace or pass over.
  • \n
  • Show image on: Select in which posts the image will be displayed. Options include: All posts, First post only, or none.
  • \n
  • Image size: Select image size from registered image sizes.
  • \n
  • Show post title: Choose to show or hide the post title.
  • \n
  • Show categories: Choose to show or hide the categories.
  • \n
  • Show author: Choose to show or hide the author.
  • \n
  • Show date: Choose to show or hide the date.
  • \n
  • Show comments number: Choose to show or hide the comments number.
  • \n
  • Show excerpt: Choose to show or hide the excerpt
  • \n
  • Excerpt length: Set the number of words for the excerpt.
  • \n
  • Show read more link: Choose to show or hide the Read More link.
  • \n
  • Read more text: Set the text for the read more link. You can leave it empty to use the default text Read More.
  • \n
  • Show pagination: Choose to show or hide the pagination links.
  • \n
  • Additional class(es): Set a custom class for the widget container. You can use spaces to separate multiple classes.
  • \n
\n

Gutenberg Block

\n

Since version 1.1.0, Flex Posts also includes a gutenberg block. You can add the widget directly into the post/page content with the WP 5.0 block editor.

\n

Demo

\n

Please visit the live demo here: Flex Posts Demo

\n

Requirements

\n

This plugin has been tested and works with at least PHP 5.3 installed in your environment. But we strongly recommend you to use the latest PHP version, as using older versions may expose you to security vulnerabilities.

\n","download_link":"https://downloads.wordpress.org/plugin/flex-posts.zip","tags":{"category-posts":"category posts","grid":"grid","magazine":"magazine","news":"news","responsive":"responsive"},"donate_link":"https://tajam.id/","icons":{"1x":"https://ps.w.org/flex-posts/assets/icon-128x128.png?rev=1871802"},"wporg":true},{"name":"YARPP – Yet Another Related Posts Plugin","slug":"yet-another-related-posts-plugin","version":"5.27.4","author":"YARPP","author_profile":"https://profiles.wordpress.org/jeffparker","requires":"3.7","tested":"5.8","requires_php":"5.3","rating":94,"ratings":{"1":33,"2":2,"3":14,"4":45,"5":626},"num_ratings":720,"support_threads":28,"support_threads_resolved":12,"active_installs":100000,"downloaded":6484415,"last_updated":"2021-08-25 5:56pm GMT","added":"2008-01-02","homepage":"https://yarpp.com/","short_description":"The best WordPress plugin for displaying related posts. Simple and flexible, with a powerful proven algorithm and inbuilt caching.","description":"

Related Posts Plugin for WordPress

\n

Yet Another Related Posts Plugin (YARPP) is a professionally maintained, highly customizable, performant and feature rich plugin that displays pages, posts, and custom post types related to the current entry. YARPP introduces your visitors to other relevant content on your site — boosting visitor engagement, time on site and SEO. Related Posts can increase your pageviews up to 10%. Simply install, activate and watch your sessions and pageviews increase.

\n

Key Features

\n
    \n
  • An advanced and versatile algorithm: Using a customizable algorithm considering post titles, content, tags, categories, and custom taxonomies, YARPP finds related content from across your site
  • \n
  • Caching: Inbuilt cache makes subsequent queries super efficient and fast
  • \n
  • Custom Templates and Styles: Use a pre-built list or thumbnail template, or use the YARPP custom templating system for 100% control of how results are styles and displayed
  • \n
  • Flexible with a full range of placement options, including:\n\n
  • \n
  • Works with all languages, including those with full-width (double-byte) characters and those that don’t use spaces between words
  • \n
  • Custom post type and taxonomy support
  • \n
  • WordPress Multisite support
  • \n
  • bbPress forums support
  • \n
  • WooCommerce support
  • \n
  • Professionally maintained and supported with regular updates
  • \n
\n

YARPP Algorithm Explained

\n

\n

Contribute: Translate YARPP

\n

YARPP is available for translation directly on WordPress.org. Please check out the official Translator Handbook.

\n

Wide Support

\n

YARPP is the most popular and the highest rated Related Posts Plugin for WordPress. With your support, this plugin always strives to be the best WordPress plugin for Content Discovery and Related Posts.

\n

✔ Over 10 years of development
\n✔ Over 6 million downloads
\n✔ Translated into more than a dozen languages
\n✔ Professionally maintained and actively supported with regular updates
\n✔ Works with all languages

\n

YARPP works best with PHP 5.3 or greater, MySQL 5.6 or greater OR MariaDB 10.1 or greater, and WordPress 3.7 or greater. See the FAQ for answers to common questions.

\n","download_link":"https://downloads.wordpress.org/plugin/yet-another-related-posts-plugin.5.27.4.zip","tags":{"contextual-related-posts":"contextual related posts","posts":"posts","related-posts":"related posts","seo":"seo","similar-posts":"similar posts"},"donate_link":"https://yarpp.com","icons":{"1x":"https://ps.w.org/yet-another-related-posts-plugin/assets/icon-128x128.png?rev=2549977","2x":"https://ps.w.org/yet-another-related-posts-plugin/assets/icon-256x256.png?rev=2549977"},"wporg":true},{"name":"Superb WordPress Table (SEO Optimized Tables With Schema)","slug":"superb-tables","version":"1.0.8","author":"SuPlugins","author_profile":"https://profiles.wordpress.org/suplugins","requires":"3.0.1","tested":"5.7.2","requires_php":"5.2.4","rating":80,"ratings":{"1":0,"2":1,"3":0,"4":0,"5":2},"num_ratings":3,"support_threads":1,"support_threads_resolved":1,"active_installs":4000,"downloaded":33954,"last_updated":"2021-05-26 8:49pm GMT","added":"2019-03-05","homepage":"https://superbthemes.com/plugins/superb-tables/","short_description":"Responsive & SEO Optimized tables. Get your Google Featured Snippets. Different table designs, table shortcodes & lightweight code.","description":"

Responsive & SEO Optimized tables. Get your Google Featured Snippets. Different table designs, table shortcodes & lightweight code.

\n

Click here to view the demo!

\n

Features

\n
    \n
  • Table Shortcodes
  • \n
  • Multiple Color Schemes
  • \n
  • Use Themes Own Table Design
  • \n
  • Schema Markup (Micro Data)
  • \n
  • Create Unlimited Tables
  • \n
  • Create Unlimited Rows
  • \n
  • Create unlimited Columns
  • \n
  • SEO-friendly Tables With Schema markup
  • \n
  • Purple Color Scheme
  • \n
  • Black/White Color Scheme
  • \n
  • Swap around on columns & rows with drag n’ drop
  • \n
  • Delete Tables & Remove Them From Your Database
  • \n
  • Gives you a better chance to get Google Featured Snippets
  • \n
  • Friendly User Support)
  • \n
  • GDPR Compliant
  • \n
  • W3C Valid Code
  • \n
  • WYSIWYG Functionality Editor
  • \n
\n

Configuring the plugin

\n

Once you’ve installed the plugin, check the left sidebar, and you will notice the Superb Table section. Click on it, and you can now create your first table. Just click on the Add New Table button.

\n

Feel free to add as many columns and rows as you want—inserting rows and columns is extremely easy.

\n

You have a few options to make your table stand apart. First, choose one of the three color schemes: standard, purple, or black. Second, choose your table design: default or custom. Block, left, and inline-block are the floating modes for your table. Finally, enable or disable the full width of the table.

\n

Once you finish your table, name it and save it. All you have to do now is to copy the shortcode and paste wherever you want, you can for example embed it in the Gutenberg Shortcode Block! (It works in the classic WordPress editor too)

\n

Consider purchasing our premium version for $11 to unlock more features!

\n

Why use a HTML table

\n

Displaying data within a comparison table is beneficial for not only readers but also content creators. A table does a better job than long paragraphs of text, underlined phrases, and bulleted lists. It shows a lot of information side by side in a concise format. Bloggers and content creators should create tables and insert the data. There’s no need to search for breathtaking expressions, cool descriptions, or digestible lists of items. It’s just pure data, and everyone is happy with this situation. You can read our full guide on How to Add a Table to Your WordPress Website with Superb Tables.

\n

Responsive Tables

\n

We developed Superb Tables mobile friendly by taking responsiveness into account, and as a result, you can make a WordPress table responsive by using our plugin. The tables are fully responsive regardless of the number of rows and columns. The plugin works on all mobile devices and tablets (iPhone, Android etc.). The plugin works with AMP.

\n

SEO Friendly WordPress Tables With Schema Markup

\n

“Schema markup“ and “featured snippets“ are two interconnected terms that are being used by more and more bloggers, SEO practitioners, and developers. Have you noticed that Google now provides complex answers in the form of lists, tables, paragraphs, or videos directly on the results page? Those are featured snippets.

\n

Moz claims that 23% of all search results include a featured snippet—a descriptive box displayed on the search results page providing information for your query. It may include paragraphs, lists, videos, or tables. You have to consider featured snippets when choosing a table plugin—can it help Google generate a featured snippet from the data within your table?

\n

We developed Superb Tables with featured snippets in mind, and you can use the plugin worry-free. We used schema markup, which is the code that helps search engine bots generate snippets from your content, including tables. It’s a great way for affiliate websites and blogs to promote their content.

\n

You must use WordPress tables with schema markup to get featured snippets on search engines, and Superb Tables is a reliable solution in this respect.

\n

Add Tables everywhere & use them for Any Purpose

\n

You can insert the SEO optimised tables with microdata everywhere through the shortcode. For example in a popup, widgets, Gutenberg blocks, email newsletter sent from your WordPress website. You can also insert it on any post or page, even category pages, blog feed, search page and your 404 page! The plugin is made for affiliates marketers and affiliate websites, having a good SERP rank in Google and Bing is critical. When you’re looking to improve your ranking then all of your plugins must be SEO optimized, otherwise it’s gonna be hard to create monetization through ads programs such as AdSense and Amazon Associates Program.

\n

We know that business is important for any modern blog or affiliate marketing website that’s looking to make a revenue from it. Remember to use HTTPS (SSL) on your website, a CDN and lightweight stats tracking tools such as Google Analytics to better your SEO as well.

\n

Guide to creating your Superb Tables

\n
    \n
  1. In the wordpress admin panel, go to the sidebar and click ‘Superb Tables’.
  2. \n
  3. Click the green ‘Add new table’ in the top left corner
  4. \n
  5. Fill in your table data, click ‘Save’
  6. \n
  7. Click ‘Superb Tables’ in the left sidebar and copy paste the ‘Table Shortcode’
  8. \n
  9. Insert the Table Shortcode (For example [spbtbl_sc id=1] ) in a post, page, widget or in HTML.
  10. \n
\n

You’re done!

\n

Resources & Inspiration

\n
    \n
  • Auto-Expand: https://codepen.io/vsync/pen/frudD
  • \n
  • Data Table: https://codepen.io/alassetter/pen/cyrfB
  • \n
  • Table DnD: https://github.com/isocra/TableDnD/
  • \n
  • Table icon: https://www.iconfinder.com/icons/1608863/table_icon#size=256
  • \n
  • Custom confirm: https://codepen.io/Ana_Champion/pen/JRbZEL
  • \n
  • Table design inspiration: https://codepen.io/lukepeters/pen/bfFur
  • \n
  • Table design inspiration: https://codepen.io/alassetter/pen/cyrfB
  • \n
  • Table design inspiration: https://uicookies.com/wp-content/uploads/2018/05/table-responsive-v2-1000×750.jpg
  • \n
  • Table design inspiration: https://uicookies.com/wp-content/uploads/2018/05/table-responsive-v1.jpg
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/superb-tables.1.0.8.zip","tags":{"content-tables":"content tables","responsive-tables":"responsive tables","table":"table","tables":"tables"},"donate_link":"","icons":{"1x":"https://ps.w.org/superb-tables/assets/icon-256x256.png?rev=2044672","2x":"https://ps.w.org/superb-tables/assets/icon-256x256.png?rev=2044672"},"wporg":true},{"name":"Floating Button","slug":"floating-button","version":"4.3","author":"Wow-Company","author_profile":"https://profiles.wordpress.org/wpcalc","requires":"3.2","tested":"5.8","requires_php":"5.3","rating":80,"ratings":{"1":1,"2":1,"3":0,"4":0,"5":5},"num_ratings":7,"support_threads":1,"support_threads_resolved":0,"active_installs":2000,"downloaded":32501,"last_updated":"2021-07-21 5:47am GMT","added":"2018-09-08","homepage":"https://wordpress.org/plugins/floating-button/","short_description":"Easily create a custom sticky floating buttons. The Floating Button will be the effective solution for increasing the recognition of your web resource","description":"

The Floating Button is the free WordPress plugin for creating the original sticky floating actions buttons. It allows you to install on the site floating buttons with unique thematic icons. The extension serves for placing both traditional navigation bar and additional block with useful information for user.

\n

The Floating Button plugin will be the effective solution for increasing the recognition of your web resource. Its connection will bring originality and novelty to the used theme of the site. The extension helps to configure user-friendly navigation, place useful information or contact panel.

\n

Main features

\n
    \n
  • 2 submenu;
  • \n
  • more than 1500+ FontAwesome icons;
  • \n
  • any links insertion;
  • \n
  • using the tooltips to provide more information;
  • \n
  • round buttons shape;
  • \n
  • LogIn link;
  • \n
  • LogOut link;
  • \n
  • Lost password link
  • \n
\n

Floating Button can be used for:

\n
    \n
  • site navigation;
  • \n
  • additional menu;
  • \n
  • social panel;
  • \n
  • user menu;
  • \n
  • Skype menu and others;
  • \n
  • And more…
  • \n
\n

Pro version

\n

Connect the Pro-version of the plugin to gain access to more features:

\n

Preview of Pro version

\n
    \n
  • create an unlimited amount of buttons;
  • \n
  • use up to 4 floating button positions;
  • \n
  • change the form of the menu display: Circle, Rounded square, Ellipse, Square;
  • \n
  • set the color of the main button and submenu items;
  • \n
  • accompany the change in navigation behavior with the highlight when hovering the mouse cursor;
  • \n
  • use the built-in user menu, social panel and print function;
  • \n
  • set the display according to the user role and status;
  • \n
  • change the menu output depending on the language of the page;
  • \n
  • add restrictions for screens with large or small resolution;
  • \n
  • use the categories on the site, exceptions and ID to place the menu on individual pages;
  • \n
  • insert the shortcode of the panel in the specified location;
  • \n
  • And more…
  • \n
\n

Buy Pro version

\n

Use with other plugins to maximize your results

\n\n

Support

\n

Search for answers and ask your questions at support center

\n","download_link":"https://downloads.wordpress.org/plugin/floating-button.4.3.zip","tags":{"circle-menu":"circle menu","float-menu":"float menu","floating-button":"floating button","floating-menu":"floating menu","sticky-button":"sticky button"},"donate_link":"https://wow-estore.com/item/floating-button-pro/","icons":{"1x":"https://ps.w.org/floating-button/assets/icon-128x128.png?rev=2533016","2x":"https://ps.w.org/floating-button/assets/icon-256x256.png?rev=2533016"},"wporg":true},{"name":"Breadcrumb NavXT","slug":"breadcrumb-navxt","version":"6.6.0","author":"John Havlik","author_profile":"https://profiles.wordpress.org/mtekk","requires":"4.9","tested":"5.7.2","requires_php":"5.5","rating":94,"ratings":{"1":5,"2":2,"3":4,"4":7,"5":104},"num_ratings":122,"support_threads":14,"support_threads_resolved":0,"active_installs":900000,"downloaded":10109275,"last_updated":"2021-04-01 2:13am GMT","added":"2007-12-01","homepage":"http://mtekk.us/code/breadcrumb-navxt/","short_description":"Breadcrumb NavXT, the successor to the popular WordPress plugin Breadcrumb Navigation XT, was written from the ground up to be better than its ancesto …","description":"

Breadcrumb NavXT, the successor to the popular WordPress plugin Breadcrumb Navigation XT, was written from the ground up to be better than its ancestor. This plugin generates locational breadcrumb trails for your WordPress powered blog or website. These breadcrumb trails are highly customizable to suit the needs of just about any website running WordPress. The Administrative interface makes setting options easy, while a direct class access is available for theme developers and more adventurous users.

\n

PHP Requirements

\n

Breadcrumb NavXT 5.2 and newer require PHP5.3
\nBreadcrumb NavXT 5.1.1 and older require PHP5.2

\n

Features (non-exhaustive)

\n
    \n
  • RDFa format Schema.org BreadcrumbList compatible breadcrumb generation.
  • \n
  • Extensive breadcrumb customization control via a settings page with appropriate default values for most use cases.
  • \n
  • Network admin settings page for managing breadcrumb settings for all subsites with configurable global priority.
  • \n
  • Built in WordPress Widget.
  • \n
  • Extensible via OOP and provided actions and filters.
  • \n
  • WPML compatible (enhanced compatibility with WPML extensions plugin).
  • \n
  • Polylang compatible (enhanced compatibility with Polylang extensions plugin).
  • \n
  • bbPress compatible (enhanced compatibility with bbPress extensions plugin).
  • \n
  • BuddyPress compatible (enhanced compatibility with BuddyPress extensions plugin).
  • \n
\n

Translations

\n

Breadcrumb NavXT now supports WordPress.org language packs. Want to translate Breadcrumb NavXT? Visit Breadcrumb NavXT’s WordPress.org translation project.

\n","download_link":"https://downloads.wordpress.org/plugin/breadcrumb-navxt.6.6.0.zip","tags":{"breadcrumb":"breadcrumb","breadcrumbs":"breadcrumbs","menu":"menu","navigation":"navigation","trail":"trail"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=FD5XEU783BR8U&lc=US&item_name=Breadcrumb%20NavXT%20Donation¤cy_code=USD&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted","icons":{"1x":"https://ps.w.org/breadcrumb-navxt/assets/icon.svg?rev=1927103","2x":"https://ps.w.org/breadcrumb-navxt/assets/icon-256x256.png?rev=2410525","svg":"https://ps.w.org/breadcrumb-navxt/assets/icon.svg?rev=1927103"},"wporg":true},{"name":"WP Recipe Maker","slug":"wp-recipe-maker","version":"7.5.1","author":"Bootstrapped Ventures","author_profile":"https://profiles.wordpress.org/brechtvds","requires":"4.4","tested":"5.8","requires_php":"5.4","rating":100,"ratings":{"1":1,"2":0,"3":1,"4":4,"5":201},"num_ratings":207,"support_threads":27,"support_threads_resolved":23,"active_installs":50000,"downloaded":1530297,"last_updated":"2021-08-31 12:27pm GMT","added":"2016-09-07","homepage":"http://bootstrapped.ventures/wp-recipe-maker/","short_description":"The easy and user-friendly recipe plugin for everyone. Automatic JSON-LD metadata for food AND how-to recipes will improve your SEO!","description":"

WP Recipe Maker is the easy recipe plugin that everyone can use. An easy workflow allows you to add recipes to any post or page with automatic JSON-LD metadata for your recipes. This metadata will improve your SEO and get you more visitors!

\n

\n

Would you like to see the plugin in action before installing it? We have a WP Recipe Maker demo website showcasing all of the features!

\n
\n

Get the most out of this plugin!
\n Join the WP Recipe Maker Email Course and we’ll help you get started and learn all the tips and trick for using WPRM.

\n
\n

Features

\n

An overview of WP Recipe Maker features:

\n
    \n
  • Compatible with both the Classic Editor and new Gutenberg editor
  • \n
  • Includes an Elementor block and shortcode can be used in other page builders
  • \n
  • Easy workflow to add recipes to any post or page
  • \n
  • Uses schema.org/Recipe JSON-LD metadata optimised for Google Recipe search
  • \n
  • Uses schema.org/How-to JSON-LD metadata optimised for non-food recipes and instructions
  • \n
  • Supports both regular and Guided Recipes for Google metadata
  • \n
  • Google AMP compatible
  • \n
  • Integrates recipe metadata with Yoast SEO schema graph
  • \n
  • Option to disable metadata per recipe if you want to publish non-food or DIY recipes
  • \n
  • Compatible with Pinterest Rich Pins and a setting to easily opt out
  • \n
  • Outputs ItemList metadata for Recipe Roundup posts
  • \n
  • Associate ingredients with instructions to have them show up exactly where needed
  • \n
  • Keyboard accessible and AMP compatible ratings for comments
  • \n
  • Interactive print recipe page with room for ads and optional credit to your website
  • \n
  • Fallback recipe shows up when the plugin is disabled
  • \n
  • Include a recipe video in the template and metadata
  • \n
  • Add photos or videos to any step of the recipe
  • \n
  • Print recipe and jump to recipe shortcodes
  • \n
  • This plugin is fully responsive, your recipes will look good on any device
  • \n
  • Easily change the look and feel to fit your website in the Template Editor
  • \n
  • Structure your ingredients and instructions in groups (e.g. icing and cake batter)
  • \n
  • Full text search for your recipes
  • \n
  • Access your recipes through the WordPress REST API
  • \n
  • Built-in SEO check for your recipe metadata
  • \n
  • Compatible with RTL languages
  • \n
  • Import your recipes from other plugins (see below)
  • \n
\n

WP Recipe Maker Premium

\n

Looking for some more advanced functionality? We also have the WP Recipe Maker Premium add-on available with the following features:

\n
    \n
  • Use ingredient links for linking to products or other recipes
  • \n
  • Adjustable servings make it easy for your visitors
  • \n
  • Display all nutrition data in a nutrition label
  • \n
  • User Ratings allow visitors to vote without commenting
  • \n
  • Add a mobile-friendly kitchen timer to your recipes
  • \n
  • More Premium templates for a unique recipe template
  • \n
  • Create custom recipe taxonomies like price level, difficulty, …
  • \n
  • Use checkboxes for your ingredients and instructions
  • \n
\n

Even more add-ons can add the following functionality:

\n
    \n
  • Integration with a Nutrition API for automatic nutrition facts
  • \n
  • Unit Conversion to reach an international audience with a different unit system
  • \n
  • Have your users send in recipes through the Recipe Submission form
  • \n
  • Give your visitors the power of Recipe Collections for favourites, meal planning and more
  • \n
\n

Import Options

\n

Currently using another recipe plugin? No problem! You can easily migrate all your existing recipes to WP Recipe Maker if you’re using any of the following plugins:

\n
    \n
  • Tasty Recipes
  • \n
  • Create by Mediavine
  • \n
  • EasyRecipe
  • \n
  • WP Ultimate Recipe
  • \n
  • Recipe Card Blocks by WPZOOM
  • \n
  • Meal Planner Pro
  • \n
  • BigOven
  • \n
  • ZipList and Zip Recipes
  • \n
  • Yummly
  • \n
  • Yumprint Recipe Card
  • \n
  • FoodiePress
  • \n
  • Cooked
  • \n
  • Cookbook
  • \n
  • Simple Recipe Pro
  • \n
  • Purr Recipe Plugin
  • \n
  • Recipes by Simmer
  • \n
  • WordPress.com shortcode
  • \n
  • JSON-LD HTML Script
  • \n
  • Multi Rating (ratings only)
  • \n
  • (Need anything else? Just ask!)
  • \n
\n

This plugin is in active development. Feel free to contact us with any feature requests or ideas.

\n","download_link":"https://downloads.wordpress.org/plugin/wp-recipe-maker.zip","tags":{"cooking":"cooking","food":"food","ingredients":"ingredients","recipe":"Recipe","recipes":"recipes"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QG7KZMGFU325Y","icons":{"1x":"https://ps.w.org/wp-recipe-maker/assets/icon-128x128.png?rev=1491788","2x":"https://ps.w.org/wp-recipe-maker/assets/icon-256x256.png?rev=1491788"},"wporg":true},{"name":"Slim SEO – Fast & Automated WordPress SEO Plugin","slug":"slim-seo","version":"3.10.1","author":"eLightUp","author_profile":"https://profiles.wordpress.org/rilwis","requires":"4.5","tested":"5.8","requires_php":"5.6","rating":92,"ratings":{"1":1,"2":3,"3":0,"4":0,"5":26},"num_ratings":30,"support_threads":17,"support_threads_resolved":12,"active_installs":10000,"downloaded":169862,"last_updated":"2021-07-22 1:33am GMT","added":"2018-12-31","homepage":"https://wpslimseo.com","short_description":"A full-featured SEO plugin for WordPress that's lightweight, blazing fast with minimum configuration. No bloats,…","description":"

A Fast & Automated SEO Plugin For WordPress

\n

Currently there are many SEO plugins for WordPress in the market. But these plugins often have too many options and are very complicated for ordinary users. Access to their configuration section, you will easily get lost in a maze of explanations and options that you sometimes don’t understand. Besides, there are ads!

\n

So how can an ordinary user use an SEO plugin?

\n

SEO should be an integrated part of WordPress, where users don’t need or need very little effort to configure for SEO. The main reason is that not everyone understands the terms of SEO and how to configure them optimally.

\n

So, we made Slim SEO.

\n

Slim SEO is a full-featured SEO plugin, that’s done right! It provides a complete SEO solution for WordPress where the configuration has been done automatically. Users do not need to care about their complex and semantic options.

\n

So what does Slim SEO do?

\n

Slim SEO Features

\n

Slim SEO helps you do the following jobs automatically:

\n

1. Meta Tags

\n

The following meta tags are auto-generated and optimized for the best SEO scores.

\n\n

2. XML Sitemap

\n

Slim SEO automatically generates XML sitemap (at domain.com/sitemap.xml) to submit to search engines. With XML sitemaps, your website are indexed fast and completely.

\n

3. Breadcrumbs

\n

The plugin allows you to output a breadcrumb trail on your website easily. It automatically fetches the information from the current post and output a hierarchy for you. You can also style the breadcrumbs to match your theme style.

\n

4. Schema (Structured Data)

\n

Schema is a way that describes structured data for search engines. Based on the data provided, search engines can show the content in the search results page in a more appealing way.

\n

Slim SEO automatically adds the some structured data to the website via JSON-LD which makes your website more SEO-friendly. Not only schemas are created by the plugin, there are also meaningful connections between them. For example, an article (single post) is the main entity of the current webpage. Slim SEO does that all without any configuration.

\n

5. Auto Redirection

\n
    \n
  • Auto redirect attachment page to the attachment file URL.
  • \n
  • Auto redirect author page to the homepage if the website has only one author or the author doesn’t have any posts.
  • \n
\n

6. Open Source

\n

Slim SEO has different contributors which help make Slim SEO a quality product. Join us on Github!

\n

Who should use Slim SEO?

\n

Everyone can use Slim SEO!

\n

However, Slim SEO is perfectly suitable for users who prefer simplicity or do not like the complicated options that other SEO plugins provide. It’s also a good choice for users with little SEO knowledge and just want to use SEO plugins to automate their jobs.

\n

If you like this plugin, you might also like our other products: Meta Box and GretaThemes.

\n","download_link":"https://downloads.wordpress.org/plugin/slim-seo.3.10.1.zip","tags":{"google":"google","schema":"schema","search-engine-optimization":"search engine optimization","seo":"seo","sitemap":"sitemap"},"donate_link":"https://wpslimseo.com/pro/","icons":{"1x":"https://ps.w.org/slim-seo/assets/icon.svg?rev=2005049","svg":"https://ps.w.org/slim-seo/assets/icon.svg?rev=2005049"},"wporg":true},{"name":"Schema & Structured Data for WP & AMP","slug":"schema-and-structured-data-for-wp","version":"1.9.83.1","author":"Magazine3","author_profile":"https://profiles.wordpress.org/magazine3","requires":"3.0","tested":"5.8","requires_php":false,"rating":94,"ratings":{"1":13,"2":1,"3":2,"4":10,"5":183},"num_ratings":209,"support_threads":29,"support_threads_resolved":19,"active_installs":80000,"downloaded":2324930,"last_updated":"2021-08-31 7:07am GMT","added":"2018-08-06","homepage":"","short_description":"Schema & Structured Data for WP & AMP adds Google Rich Snippets markup according to Schema.org guidelines to structure your site for SEO.","description":"

Schema & Structured Data for WP & AMP adds Google Rich Snippets markup according to Schema.org guidelines to structure your site for SEO. (AMP Compatible)

\n

Features

\n
    \n
  • Schema Types: Currently, We have more than 35 schema types such as Blog Posting, News article, Local Business, Web page, Article, Recipe, Product, and Video Object view all. We are going to add all the schema types in the future. You can request the one you want and we will add it for you!
  • \n
  • Conditional Display Fields: Meaning you include or exclude any posts, pages, post types, taxonomies and more!
  • \n
  • Knowlegde Base Support: Recognize the content based on the organization or a person via data type option.
  • \n
  • Full AMP Compatiblity: Supports the AMP for WP and AMP by Automattic plugins.
  • \n
  • Advanced Settings: Play with output of schema markup using these options (Defragment, Add in Footer, Pretty Print, MicroData CleanUp etc.)
  • \n
  • Migration: Import the data from other schema plugins such as (SEO Pressor, WP SEO Schema, Schema Plugin etc )
  • \n
  • Compatibility: Generate the schema markup for the plugins. We have provided schema support for them. Few of them are – kk Star Ratings, WP-PostRatings, bbPress
  • \n
  • Google Review: Display your business google reviews and its schema markup on your website.
  • \n
  • [Premium] Reviews ( Fetch reviews from 75+ platforms ).
  • \n
  • [Premium] Priority Support. Get it We get more than 100 technical queries a day but the Priority support plan will help you skip that and get the help from a dedicated team.
  • \n
  • Review Module: Create your own review rating box with pros and cons and its schema markup
  • \n
  • Schema Type Blocks in Gutenberg: Create your own content with the blocks and json schema markup will be added automatically
  • \n
  • Unlimited Custom Post Types: You can control to represent the Rich Snippets data in the google search console using unlimited custom post types.
  • \n
  • Easy to use with Minimal Settings
  • \n
  • Archive Page Listing Support
  • \n
  • JSON-LD Format
  • \n
  • Easy to use Setup Wizard
  • \n
  • Breadcrumbs Listing Support
  • \n
  • Comments Post comments Support
  • \n
  • Constant Development & New Features: We’ll be releasing the constant updates along with the more handy features as soon as we get the feedback from the users.
  • \n
\n

Supported Schema Types

\n
    \n
  • Apartment
  • \n
  • House
  • \n
  • SingleFamilyResidence
  • \n
  • Article
  • \n
  • Blogposting
  • \n
  • Book
  • \n
  • Course
  • \n
  • DiscussionForumPosting,
  • \n
  • DataFeed
  • \n
  • HowTo
  • \n
  • NewsArticle
  • \n
  • QAPage
  • \n
  • Review
  • \n
  • Recipe
  • \n
  • TVSeries
  • \n
  • SoftwareApplication
  • \n
  • MobileApplication
  • \n
  • SpecialAnnouncement (Related to Coronavirus)
  • \n
  • TechArticle
  • \n
  • WebPage
  • \n
  • Event
  • \n
  • VideoGame
  • \n
  • JobPosting
  • \n
  • Service
  • \n
  • Trip
  • \n
  • AudioObject
  • \n
  • VideoObject
  • \n
  • MedicalCondition
  • \n
  • MusicPlaylist
  • \n
  • MusicAlbum
  • \n
  • LocalBusiness with all the sub categories
  • \n
  • Product
  • \n
  • TouristAttraction
  • \n
  • TouristDestination
  • \n
  • LandmarksOrHistoricalBuildings
  • \n
  • HinduTemple
  • \n
  • Church
  • \n
  • Mosque
  • \n
  • Person
  • \n
  • View All
  • \n
\n

Extensions

\n

Some useful extensions to extend Schema & Structured Data for WP & AMP features, check Woocommerce Compatibility For Schema, Cooked Compatibility For Schema and We are going to add more.

\n

Support

\n

We try our best to provide support on WordPress.org forums. However, We have a special team support where you can ask us questions and get help. Delivering a good user experience means a lot to us and so we try our best to reply each and every question that gets asked.

\n

Bug Reports

\n

Bug reports for Schema & Structured Data for WP & AMP are welcomed on GitHub. Please note GitHub is not a support forum, and issues that aren’t properly qualified as bugs will be closed.

\n

Credits

\n
    \n
  • Select2 used https://github.com/select2/select2 – License URI: https://github.com/select2/select2/blob/develop/LICENSE.md,
  • \n
  • Merlin WP used https://github.com/richtabor/MerlinWP – License URI: https://github.com/richtabor/MerlinWP/blob/master/LICENSE,
  • \n
  • jquery-timepicker used https://github.com/jonthornton/jquery-timepicker
  • \n
  • Rate Yo! used https://github.com/prrashi/rateYo – License URI: https://github.com/prrashi/rateYo/commit/f3812fe96c38b08627d209795176053550fb1427
  • \n
  • Aqua Resizer used http://aquagraphite.com – License URI: WTFPL – http://sam.zoy.org/wtfpl/
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/schema-and-structured-data-for-wp.1.9.83.1.zip","tags":{"google-snippets":"google snippets","rich-snippets":"rich snippets","schema":"schema","schema-org":"schema.org","structured-data":"structured data"},"donate_link":"","icons":{"1x":"https://ps.w.org/schema-and-structured-data-for-wp/assets/icon-128x128.png?rev=1922284","2x":"https://ps.w.org/schema-and-structured-data-for-wp/assets/icon-256x256.png?rev=1922284"},"wporg":true},{"name":"GenerateBlocks","slug":"generateblocks","version":"1.3.5","author":"Tom Usborne","author_profile":"https://profiles.wordpress.org/edge22","requires":"5.4","tested":"5.8","requires_php":"5.6","rating":98,"ratings":{"1":0,"2":0,"3":2,"4":1,"5":72},"num_ratings":75,"support_threads":29,"support_threads_resolved":12,"active_installs":50000,"downloaded":238639,"last_updated":"2021-07-19 6:12pm GMT","added":"2020-05-19","homepage":"https://generateblocks.com","short_description":"A small collection of lightweight WordPress blocks that can accomplish nearly anything.","description":"

\n

\n

Add incredible versatility to your editor without bloating it with tons of one-dimensional Gutenberg blocks. With GenerateBlocks, you can learn a handful of blocks deeply and use them to build anything.

\n

GenerateBlocks works hand-in-hand with GeneratePress, but is built to work with any theme.

\n

Looking for more features? Check out GenerateBlocks Pro.

\n

Container

\n

Organize your content into rows and sections. The Container block is the foundation of your content, allowing you to design unique sections for your content.

\n

Grid

\n

Create advanced layouts with flexible grids. The Grid block gives you the ability to create any kind of layout you can imagine.

\n

Headline

\n

Craft text-rich content with advanced typography. Everything from headings to paragraphs – take full control of your text.

\n

Buttons

\n

Drive conversions with beautiful buttons.

\n

Performance

\n

We take performance seriously. Minimal CSS is generated only for the blocks you need, and our HTML structure is as simple as possible while allowing for maximum flexibility.

\n

Coding standards

\n

Built to the highest coding standards for security, stability and future compatibility.

\n

Fully responsive

\n

Every block comes with tablet and mobile controls, giving you total control of your responsive design.

\n

Documentation

\n

Check out our documentation for more information on the individual blocks and how to use them.

\n","download_link":"https://downloads.wordpress.org/plugin/generateblocks.1.3.5.zip","tags":{"blocks":"blocks","container":"container","grid":"grid","gutenberg":"gutenberg","headline":"headline"},"donate_link":"https://generateblocks.com","icons":{"1x":"https://ps.w.org/generateblocks/assets/icon-128x128.png?rev=2336822","2x":"https://ps.w.org/generateblocks/assets/icon-256x256.png?rev=2336822"},"wporg":true},{"name":"Blackhole for Bad Bots","slug":"blackhole-bad-bots","version":"3.2","author":"Jeff Starr","author_profile":"https://profiles.wordpress.org/specialk","requires":"4.1","tested":"5.8","requires_php":"5.6.20","rating":98,"ratings":{"1":2,"2":0,"3":3,"4":2,"5":108},"num_ratings":115,"support_threads":3,"support_threads_resolved":3,"active_installs":30000,"downloaded":305752,"last_updated":"2021-07-19 8:41pm GMT","added":"2016-02-18","homepage":"https://perishablepress.com/blackhole-bad-bots/","short_description":"Blackhole is a WordPress security plugin that detects and traps bad bots in a virtual black hole, where they are denied access to your entire site.","description":"
\n

Add your own virtual black hole trap for bad bots.

\n
\n

Bye bye bad bots..

\n

Bad bots are the worst. They do all sorts of nasty stuff and waste server resources. The Blackhole plugin helps to stop bad bots and save precious resources for legit visitors.

\n

How does it work?

\n

First the plugin adds a hidden trigger link to the footer of your pages. You then add a line to your robots.txt file that forbids all bots from following the hidden link. Bots that then ignore or disobey your robots rules will crawl the link and fall into the trap. Once trapped, bad bots are denied further access to your WordPress site.

\n

I call it the “one-strike” rule: bots have one chance to obey your site’s robots.txt rule. Failure to comply results in immediate banishment. The best part is that the Blackhole only affects bad bots: human users never see the hidden link, and good bots obey the robots rules in the first place. Win-win! 🙂

\n

Using a caching plugin? Check out the Installation notes for important info.

\n

Features

\n
    \n
  • Easy to set up
  • \n
  • Squeaky clean code
  • \n
  • Focused and modular
  • \n
  • Lightweight, fast and flexible
  • \n
  • Built with the WordPress API
  • \n
  • Works with other security plugins
  • \n
  • Easy to reset the list of bad bots
  • \n
  • Easy to delete any bot from the list
  • \n
  • Regularly updated and “future proof”
  • \n
  • Blackhole link includes “nofollow” attribute
  • \n
  • Plugin options configurable via settings screen
  • \n
  • Works silently behind the scenes to protect your site
  • \n
  • Whitelists all major search engines to never block
  • \n
  • Focused on flexibility, performance, and security
  • \n
  • Email alerts with WHOIS lookup for blocked bots
  • \n
  • Complete inline documentation via the Help tab
  • \n
  • Provides setting to whitelist any IP addresses
  • \n
  • Customize the message displayed to bad bots 😉
  • \n
  • One-click restore the plugin default options
  • \n
  • Does NOT use or require any .htaccess rules
  • \n
\n

Blackhole for Bad Bots protects your site against bad bots, spammers, scrapers, scanners, and other automated threats.

\n

Not using WordPress? Check out the standalone PHP version of Blackhole!

\n

Check out Blackhole Pro and level up with advanced features!

\n

Whitelist

\n

By default, this plugin does NOT block any of the major search engines (user agents):

\n
    \n
  • AOL.com
  • \n
  • Baidu
  • \n
  • Bingbot/MSN
  • \n
  • DuckDuckGo
  • \n
  • Googlebot
  • \n
  • Teoma
  • \n
  • Yahoo!
  • \n
  • Yandex
  • \n
\n

These search engines (and all of their myriad variations) are whitelisted via user agent. So are a bunch of other “useful” bots. They always are allowed full access to your site, even if they disobey your robots.txt rules. This list can be customized in the plugin settings. For a complete list of whitelisted bots, visit the Help tab in the plugin settings (under “Whitelist Settings”).

\n

Privacy

\n

User Data: This plugin automatically blocks bad bots. When bad bots fall into the trap, their IP address, user agent, and other request data are stored in the WP database. No other user data is collected by this plugin. At any time, the administrator may delete all saved data via the plugin settings.

\n

Services: This plugin does not connect to any third-party locations or services.

\n

Cookies: This plugin does not set any cookies.

\n

Header Image Courtesy NASA/JPL-Caltech.

\n

Support development of this plugin

\n

I develop and maintain this free plugin with love for the WordPress community. To show support, you can make a donation or purchase one of my books:

\n\n

And/or purchase one of my premium WordPress plugins:

\n\n

Links, tweets and likes also appreciated. Thanks! 🙂

\n","download_link":"https://downloads.wordpress.org/plugin/blackhole-bad-bots.3.2.zip","tags":{"anti-spam":"anti-spam","bad-bots":"bad bots","blackhole":"blackhole","honeypot":"honeypot","security":"security"},"donate_link":"https://monzillamedia.com/donate.html","icons":{"1x":"https://ps.w.org/blackhole-bad-bots/assets/icon-128x128.png?rev=1471215","2x":"https://ps.w.org/blackhole-bad-bots/assets/icon-256x256.png?rev=1471215"},"wporg":true},{"name":"Page View Count","slug":"page-views-count","version":"2.4.12","author":"a3rev Software","author_profile":"https://profiles.wordpress.org/a3rev","requires":"5.0","tested":"5.8","requires_php":false,"rating":78,"ratings":{"1":8,"2":5,"3":2,"4":3,"5":30},"num_ratings":48,"support_threads":2,"support_threads_resolved":0,"active_installs":20000,"downloaded":403731,"last_updated":"2021-07-19 10:48am GMT","added":"2012-12-21","homepage":"","short_description":"Places an icon, all time views count and views today count at the bottom of posts, pages and custom post types on any WordPress website.","description":"

A beautifully simple to set up plugin that gives site visitors and site owners the ability to quickly and easily see how many people have visited that page or post.

\n

FEATURES

\n
    \n
  • On the front end it adds an icon and page views count to the bottom or top of pages and posts on your WordPress website.
  • \n
  • Switch ON | OFF hide Page Views Count for all Posts, Pages and all custom posts types including WooCommerce custom post types.
  • \n
  • Set the Position of the counter to show at the top of the page or post or at the bottom
  • \n
  • Set alignment of the counter Left, Right or Centre
  • \n
  • Set the colour and size of the counter icon
  • \n
  • Option to use load by Ajax to prevent the count from being cached by caching plugins
  • \n
  • Option to Manually set / edit total views and views today from Page View Count meta box on any post or page editor
  • \n
  • Add Page Views counter via the PVC Gutenberg block
  • \n
  • Add Page Views counter via shortcode
  • \n
  • Add Page Views counter via widget
  • \n
  • Developers can add the Page Views Counter via php tag
  • \n
  • All options and settings are point click – absolutely no coding required
  • \n
\n

COMPATIBILTY

\n

Compatible with WordPress 5.3+ and backwards to WP 4.9.0. Compatible with Classic Editor plugin with 5.0+ (Gutenberg Deactivated)

\n

GUTENBERG BLOCK

\n

Using the Gutenberg Editor. Use the Page View Count Block to add the counter to any page or post content. Block search for ‘Page Views’ or selecting the block from the a3rev Blocks menu.

\n

Adding the Page Views block to your content automatically deactivates the Global Page View counter on the post or page.

\n

ELEMENTOR TEMPLATES

\n

Fully compatible with Elementor templates. Add counter via Shortcode or widget to any template.

\n

DEVELOPERS

\n

On the plugins dashboard in the + Page Views Count Function options box you will find the Page Views Count functions and notes on how to use them.

\n
    \n
  • Use to manually add Page views count to any content or object in the theme.
  • \n
  • Use to add page View Count to any content that is not create using WordPress custom post / taxonomy type.
  • \n
  • Use to create a custom position of the Page Views Count
  • \n
  • Functions support echo and return parameters when getting visitor stats on any variable.
  • \n
\n

TROUBLESHOOTING

\n
    \n
  • The number 1 support request we get about the plugin is that it double or triple counts page or post loads. Yes it does and if you see that it is a Red Flag that you have a misconfiguration or bug in your theme or a plugin. Page Views Count does exactly that – counts each time the page or post is loading in the browser – if its counting twice it is because the browser is double loading the page. That is a bad thing and you or your developer needs to fix that.
  • \n
\n

CONTRIBUTE

\n

When you download Page Views Count, you join our community. Regardless of if you are a WordPress beginner or experienced developer if you’?re interested in contributing to Page Views Count development head over to the Page Views Count GitHub Repository to find out how you can contribute.
\nWant to add a new language to Page Views Count? Great! You can contribute via translate.wordpress.org

\n

Usage

\n
    \n
  1. \n

    Install and activate the plugin

    \n
  2. \n
  3. \n

    Go to WordPress Settings menu > Page View Count Menu

    \n
  4. \n
  5. \n

    Activate Page Views Count and use the options box settings to make the desired configuration

    \n
  6. \n
  7. \n

    Be sure to clear any caching and browser cache to see your Page Views Count

    \n
  8. \n
\n","download_link":"https://downloads.wordpress.org/plugin/page-views-count.2.4.12.zip","tags":{"gutenberg":"gutenberg","page-view-count":"page view count","post-view-count":"post view count","post-views":"post views","wordpress-page-view":"wordpress page view"},"donate_link":"","icons":{"1x":"https://ps.w.org/page-views-count/assets/icon.svg?rev=986301","2x":"https://ps.w.org/page-views-count/assets/icon-256x256.png?rev=986301","svg":"https://ps.w.org/page-views-count/assets/icon.svg?rev=986301"},"wporg":true},{"name":"Newspack Listings","slug":"newspack-listings","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://github.com/Automattic/newspack-listings/releases","short_description":"

Create reusable content as listings and add them to lists wherever core blocks can be used

\n","description":"\n\n\n

Create reusable content as listings and add them to lists wherever core blocks can be used

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2021/02/listings2-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2021/02/listings2-372x209.jpg","svg":""},"wporg":false},{"name":"Newspack Newsletters","slug":"newspack-newsletters","version":"1.31.1","author":"Automattic","author_profile":"https://profiles.wordpress.org/automattic","requires":"5.3","tested":"5.8.0","requires_php":"5.6","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":1,"support_threads_resolved":1,"active_installs":500,"downloaded":2866,"last_updated":"2021-08-10 8:45pm GMT","added":"2021-02-15","homepage":"https://newspack.pub","short_description":"Create email newsletters with the Gutenberg editor and distribute them with your Mailchimp or Constant Contact mailing lists.","description":"

Create email newsletters with the Gutenberg editor and send them via Mailchimp or Constant Contact, all without leaving WP Admin! Newspack Newsletters lets you build eye-catching newsletters using the WordPress editing tools you’re already familiar with, and lets you save drafts, create reusable layouts, send to your existing mailing list, and also publish them to your website.

\n

Use and create newsletter layouts

\n

Newspack Newsletters comes with four default layouts to help you start building newsletters quickly. You can use an existing layout, or start fresh with a blank page. You can also create and save your own layouts, or alter the ones that come bundled with the plugin and save the settings, and use them for future campaigns.

\n

Use Gutenberg blocks and settings

\n

Newspack Newsletters supports most core Gutenberg blocks and configurations, letting you use blocks like Group, Button, Columns, and more, to create dynamic layouts. The plugin will warn you when a block will not display as expected in an email.

\n

Customize your newsletter’s appearance

\n

You can customize your newsletters further by changing the header and body fonts, or picking a background color.

\n

Newspack Blocks

\n

Newspack Newsletters comes bundled with the Newspack Post Inserter block. This block lets you insert excerpts from live posts on your site, and, once inserted, will turn those posts into static content using the Header and Paragraph blocks, linking back to your site.

\n

Need to target a post title to your newsletter audience? Not a problem! You can edit these blocks, and add others, to make sure they’ speak to your readers.

\n

Add ads!

\n

Monetize your newsletters by including advertising. The Newspack Newsletters plugin lets you create ads, which are stored as a custom post type. Ads are automatically inserted into your newsletters, and can also be toggled off on a newsletter-by-newsletter basis.

\n

Send with ease

\n

Newspack Newsletters connects to your Mailchimp or Constant Contact accounts to send emails using the mailing lists you’ve collected there, all without leaving the WordPress Admin.

\n

Before sending your campaign, you can send test emails to one or more email addresses at a time from the newsletter editor, to make sure everything is pixel perfect before sharing with the world.

\n

About Newspack

\n

The Newspack Newletters plugin is part of Newspack, a suite of tools to help small to mid-sized news organizations publish and generate revenue with WordPress. Newspack is a collaborative project by WordPress.com and the Google News Initiative. You can learn more about Newspack by visiting our website.

\n

Credits

\n

The beach photograph in the screenshot is by Life of Pix, licensed CC0.

\n","download_link":"https://downloads.wordpress.org/plugin/newspack-newsletters.zip","tags":{"constant-contact":"constant contact","mailchimp":"mailchimp","newsletters":"newsletters","newspack":"Newspack","wordpress-com":"WordPress.com"},"donate_link":"","icons":{"1x":"https://ps.w.org/newspack-newsletters/assets/icon.svg?rev=2475195","2x":"https://ps.w.org/newspack-newsletters/assets/icon-256x256.png?rev=2475195","svg":"https://ps.w.org/newspack-newsletters/assets/icon.svg?rev=2475195"},"wporg":true},{"name":"Web Stories","slug":"web-stories","version":"1.10.1","author":"Google","author_profile":"https://profiles.wordpress.org/google","requires":"5.5","tested":"5.8","requires_php":"7.0","rating":84,"ratings":{"1":5,"2":2,"3":2,"4":4,"5":31},"num_ratings":44,"support_threads":110,"support_threads_resolved":86,"active_installs":20000,"downloaded":323211,"last_updated":"2021-08-25 7:02pm GMT","added":"2020-09-22","homepage":"https://wp.stories.google/","short_description":"Web Stories are a visual storytelling format for the open web which immerses your readers in fast-loading, full-screen, and visually rich experiences.","description":"

Web Stories are a free, open-web, visual storytelling format for the web, enabling you to easily create visual narratives with engaging animations and tappable interactions, and immerse your readers in great and fast-loading full-screen experiences.

\n

Benefits of Web Stories

\n

The Web Stories format puts features and capabilities at your fingertips to engage with your audience via the power of storytelling on the open web. Specifically, you can:

\n
    \n
  • Create beautiful and engaging content easily: Web Stories make the production of stories as easy as possible from a technical perspective.
  • \n
  • Enjoy creative flexibility for editorial freedom and branding: The Web Stories format comes with preset but flexible layout templates, standardized UI controls, and components for sharing and adding follow-on content.
  • \n
  • Share and link your stories on the open web: Web Stories are part of the open web and can be shared and embedded across sites and apps without being confined to a single ecosystem.
  • \n
  • Track and measure your stories: Supports analytics and bookend capabilities for viral sharing and monetization.
  • \n
  • Capture the attention of your readers by offering fast loading times to your stories: Web Stories are lightning fast so that your audience stays engaged and entertained.
  • \n
  • Engage with your readers via immersive storytelling: Web Stories are a new and modern way to reach existing readers.
  • \n
  • Monetize effectively the beautiful and engaging stories you create: Web Stories enable monetization capability for publishers using affiliate links. For advertisers, Stories is a way to reach a unique audience within a new storytelling experience.
  • \n
\n

Web Stories Editor

\n

The Web Stories editor for WordPress brings together a robust set of story creation capabilities in a user-friendly, WYSIWYG creation tool. Some of the key features you can leverage out of the box are:

\n
    \n
  • A visually rich and intuitive dashboard, allowing you to easily navigate the story creation process
  • \n
  • Beautiful and expressive page templates to you get your story creation process started quickly and smoothly
  • \n
  • Easy drag-and-drop capabilities, making it easy to compose beautiful stories
  • \n
  • Convenient access to WordPress’ media library, enabling you to grab your media assets right from the plugin dashboard as you create your stories
  • \n
  • Customizable color and text style presets, making it easy to tailor the style of your stories to the needs of your content strategy
  • \n
  • And much more!
  • \n
\n

Using the Web Stories editor for WordPress, you can easily create visual narratives with tappable interactions, and share freely across the web, or embed them on your existing content strategies. The Stories you create are yours in every way, as Web Stories belong to the open web, instead of being confined to any specific closed ecosystem or platform.

\n

Audience: Everyone

\n

Web Stories are for everyone! If you are a site owner, content creator, or publisher on the web, embracing the Web Stories format would be great as a way to enhance the quality of your content strategy, the value you bring to your readers, and consequently your chances of achieving sustainable success.

\n

Terms of Service

\n

By using this plugin, you agree to Google’s Terms of Service. By using third-party imagery and video provided by Unsplash, Coverr and Tenor, you agree to adhere to the respective Terms of Service.

\n","download_link":"https://downloads.wordpress.org/plugin/web-stories.1.10.1.zip","tags":{"amp":"amp","google":"google","stories":"stories","storytelling":"storytelling","web-stories":"web stories"},"donate_link":"","icons":{"1x":"https://ps.w.org/web-stories/assets/icon.svg?rev=2386543","2x":"https://ps.w.org/web-stories/assets/icon-256x256.png?rev=2386543","svg":"https://ps.w.org/web-stories/assets/icon.svg?rev=2386543"},"wporg":true},{"name":"Jetpack – WP Security, Backup, Speed, & Growth","slug":"jetpack","version":"10.0","author":"Automattic","author_profile":"https://profiles.wordpress.org/automattic","requires":"5.7","tested":"5.8","requires_php":"5.6","rating":78,"ratings":{"1":320,"2":80,"3":81,"4":137,"5":1014},"num_ratings":1632,"support_threads":352,"support_threads_resolved":313,"active_installs":5000000,"downloaded":242907170,"last_updated":"2021-08-03 4:25pm GMT","added":"2011-01-20","homepage":"https://jetpack.com","short_description":"Improve your WP security with powerful one-click tools like backup and malware scan. Get essential…","description":"

The most popular WordPress plugin for just about everything.

\n

WordPress security, performance, marketing, and design tools — Jetpack is made by WordPress experts to make WP sites safer and faster, and help you grow your traffic.

\n

24/7 AUTO SITE SECURITY

\n

We guard your site so you can run your site or business. Jetpack Security provides easy-to-use, comprehensive WordPress site security including auto real-time backups and easy restores, malware scans, and spam protection. Essential features like brute force protection and downtime / uptime monitoring are free.

\n
    \n
  • Back up your site automatically in real time and restore to any point with one click. Unlimited storage for your backup. Great for eCommerce stores especially Woo.
  • \n
  • Manage migration to a new host, migrate theme files and plugins to a new database, easily duplicate websites, create full database backups, clone websites, repair broken websites by restoring older backups or easily set up a test site by creating a duplicate of your existing WP website.
  • \n
  • See every site change and who made it with the activity log, great for coordination, debug, maintenance, or troubleshooting.
  • \n
  • Automatically perform malware scans and security scans for other code threats. One click fix to restore your site for malware.
  • \n
  • Block spam comments and form responses with anti spam features powered by Akismet.
  • \n
  • Brute force attack protection to protect your WordPress login page from attacks.
  • \n
  • Monitor your site uptime / downtime and get an instant alert of any change by email.
  • \n
  • Secure WordPress.com powered login used by millions of sites with optional 2FA (two factor authentication) for extra protection.
  • \n
  • Auto update individual plugins for easy site maintenance and management.
  • \n
\n

PEAK SPEED AND PERFORMANCE

\n

Get blazing fast site speed with Jetpack, the premier WP plugin built to leverage the power of AMP, a tool that helps optimize your site on mobile devices. Jetpack’s free CDN (content delivery network) auto optimizes your images. Watch your page load times decrease — we’ll optimize your images and serve them from our own powerful global network, and speed up your site on mobile devices to reduce bandwidth usage and save money!

\n
    \n
  • Jetpack has partnered with Google AMP to create the best, highest performance all-in-one toolkit for WordPress. By using Jetpack and AMP together, you get all the features you need to build a beautiful, fast, modern website with no coding required.
  • \n
  • Image CDN for images and static files, like CSS and JavaScript, served from our servers, not yours, which saves you money and bandwidth.
  • \n
  • Lazy load images for a super fast experience, even on mobile. Jetpack’s lazy loading automatically delays the loading of media on your posts and pages until your visitors scroll down to where they appear on the page.
  • \n
  • Unlimited, high speed, ad free video hosting keeps the focus on your content, not on ads or recommendations that lead people off site.
  • \n
  • Custom site search is incredibly powerful and customizable. Helps your visitors instantly find the right content so they read and buy more. Works great with WooCommerce / eCommerce sites to help filter products so customers get what they want on your site faster.
  • \n
  • Recommended to use with WP Super Cache for ultimate WordPress site speed.
  • \n
\n

POWERFUL TOOLS FOR GROWTH

\n

Create and customize your WordPress site, optimize it for visitors and revenue, and enjoy watching your stats tick up. Build it, share it, and watch it grow.

\n
    \n
  • Advanced site stats and analytics to help you understand your audience.
  • \n
  • Auto publish blog posts and products to social media by simply using our tools to connect to Facebook, Twitter, and Linkedin.
  • \n
  • Easily share Instagram posts on your pages and blog posts.
  • \n
  • Collect a payment or donation, sell a product, service, or membership with simple integrations with PayPal and Stripe.
  • \n
  • Grow traffic with SEO tools for Google, Bing, Twitter, Facebook, and WordPress.com. XML sitemap created automatically.
  • \n
  • Advertise on your site to generate revenue. The ad network automatically does the work for you to find high-quality ads that are placed on your site.
  • \n
  • Manage Jetpack features from anywhere with the official WordPress mobile app, available for Apple iOS (iPhone or iPad) and Google Android.
  • \n
  • Looking for Customer Relationship Management? Check out the Jetpack CRM plugin which works alongside Jetpack to give you a simple and practical way to build relationships with your customers and leads.
  • \n
\n

EASY DESIGN TOOLS

\n

Quickly customize your site to make it stand out — no coding needed.

\n
    \n
  • Themes — Simple themes to get started or pick a professional theme to make your site stand out.
  • \n
  • Related posts — Keep visitors on your site by automatically showing them related content they will be interested in.
  • \n
  • Gallery and Slideshow tools — Image galleries, carousel slider, and slideshows for WP sites and stores.
  • \n
  • Subscriptions — Make it easy for visitors to sign up to receive notifications of your latest posts and comments.
  • \n
  • Contact form — Easily build unlimited contact forms for free without any coding. Receive email notifications for each response. Integrate with mail solutions like Creative Mail to reach your customers and leads quickly. Connect to Jetpack Anti spam (powered by Akismet) to filter submissions.
  • \n
  • oEmbed Support — easily embed images, posts, and links from Facebook and Instagram.
  • \n
\n

INTEGRATIONS

\n

Jetpack is updated monthly to ensure seamless integration with top WordPress plugins and other tech products.

\n
    \n
  • Built for WooCommerce: Jetpack and WooCommerce are both made by Automattic. Backup, Scan, Anti-spam, integrate perfectly for Woo / eComm stores
  • \n
  • Jetpack is fully compatible with v2.0 of the official AMP plugin for WordPress.
  • \n
  • Better understand your customers and marketing with Google Analytics (GA) integration
  • \n
  • Social media platforms: Instagram, Facebook, Twitter, LinkedIn
  • \n
  • Simple Blocks to customize your site: Pinterest, Whatsapp, Podcast player, GIFs, maps, tiled gallery, slideshow
  • \n
  • Payment processors: easily collect payments or donations and sell products through Stripe and PayPal
  • \n
  • Site speed and performance plugins: Works great with WP Super Cache by Automattic and Cloudflare.
  • \n
  • Contact form: Anti-spam (Powered by Akismet) blocks spam comments for Jetpack forms, Contact Form 7, Ninja Forms, Gravity Forms, Formidable Forms, and more.
  • \n
  • Other tech integrations: Instagram, Creative Mail, Mailchimp, Calendly, Whatsapp, Pinterest, Revue, and more.
  • \n
\n

EXPERT SUPPORT

\n

We have a global team of Happiness Engineers ready to provide incredible support. Ask your questions in the support forum or contact us directly.

\n

GET STARTED

\n

Installation is free, quick, and easy. Set up Jetpack in minutes. Take advantage of more robust features like WordPress site security and design and growth tools by upgrading to a paid plan.

\n","download_link":"https://downloads.wordpress.org/plugin/jetpack.10.0.zip","tags":{"backup":"backup","malware":"malware","scan":"scan","security":"security","woo":"woo"},"donate_link":"","icons":{"1x":"https://ps.w.org/jetpack/assets/icon.svg?rev=2394525","2x":"https://ps.w.org/jetpack/assets/icon-256x256.png?rev=2394525","svg":"https://ps.w.org/jetpack/assets/icon.svg?rev=2394525"},"wporg":true},{"name":"Easy Notification Bar","slug":"easy-notification-bar","version":"1.4.2","author":"WPExplorer","author_profile":"https://profiles.wordpress.org/wpexplorer","requires":"5.2.0","tested":"5.8","requires_php":"5.6.2","rating":82,"ratings":{"1":0,"2":1,"3":1,"4":1,"5":4},"num_ratings":7,"support_threads":3,"support_threads_resolved":1,"active_installs":4000,"downloaded":33908,"last_updated":"2021-08-22 1:48am GMT","added":"2019-06-20","homepage":"https://wordpress.org/plugins/easy-notification-bar/","short_description":"Easily add a custom top bar notification message to on your site with live customization options via the WordPress customizer.","description":"

Easily add a custom top bar notification message to on your site with live customization options via the WordPress customizer. The plugin allows you to enter your notification bar text as well as an optional button to display next to your text. Perfect for notifying visitors of a current sale, hot product, warnings or other important messages.

\n

The Easy Notification Bar plugin makes use of the newer “wp_body_open” action hook introduced in WordPress 5.2.0 which allows the plugin to work better with any theme that has been updated to support the tag. Contrary to other notice bar solutions which rely on absolute positioning, this plugin inserts the notice bar right after the body tag so it should display perfectly without any conflicts on any well-coded theme.

\n

By default, the notification bar is “static” which means it displays at the top of your site so when you scroll down the page it will become “hidden”. This is generally better for usability and SEO. However, in version 1.4 we added a new sticky option which you can enable in the Customizer so that the notification bar remains visible as you scroll down the page. The sticky functionality makes use of the CSS sticky property (not javascript).

\n

Although disabled by default, you can enable a close icon for your notice. When enabled, your visitors will see an “x” icon over the top bar which they can click to hide the message for their current and future sessions. This functionality makes use of localStorage (not cookies).

\n

Live Demo: You can view a live demo for the notification bar on our More Widgets Plugin Demo

\n

Features

\n
    \n
  • Sitewide (or homepage only) top notification bar.
  • \n
  • Easy setup via the WordPress customizer.
  • \n
  • Optional close icon.
  • \n
  • Optional sticky display.
  • \n
  • Custom background, color, text alignment and font size settings.
  • \n
  • Optional callout button.
  • \n
  • Responsive design so it looks good on mobile.
  • \n
  • Minimal code.
  • \n
  • Vanilla Javascript used for close icon (jQuery not needed).
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/easy-notification-bar.zip","tags":{"notice":"notice","notice-bar":"notice bar","notification":"notification","notification-bar":"notification bar","top-bar":"top bar"},"donate_link":"","icons":{"1x":"https://ps.w.org/easy-notification-bar/assets/icon-128x128.png?rev=2515988","2x":"https://ps.w.org/easy-notification-bar/assets/icon-256x256.png?rev=2515988"},"wporg":true},{"name":"Antispam Bee","slug":"antispam-bee","version":"2.10.0","author":"pluginkollektiv","author_profile":"https://profiles.wordpress.org/pluginkollektiv","requires":"4.5","tested":"5.8","requires_php":"5.2","rating":96,"ratings":{"1":7,"2":1,"3":1,"4":2,"5":175},"num_ratings":186,"support_threads":7,"support_threads_resolved":5,"active_installs":700000,"downloaded":5040805,"last_updated":"2021-07-29 11:15am GMT","added":"2009-01-10","homepage":"https://antispambee.pluginkollektiv.org/","short_description":"Antispam plugin with a sophisticated tool set for effective day to day comment and trackback spam-fighting. Build with data protection and privacy in …","description":"

Say Goodbye to comment spam on your WordPress blog or website. Antispam Bee blocks spam comments and trackbacks effectively, without captchas and without sending personal information to third party services. It is free of charge, ad-free and 100% GDPR compliant.

\n

Feature/Settings Overview

\n
    \n
  • Trust approved commenters.
  • \n
  • Trust commenters with a Gravatar.
  • \n
  • Consider the comment time.
  • \n
  • Allow comments only in a certain language.
  • \n
  • Block or allow commenters from certain countries.
  • \n
  • Treat BBCode links as spam.
  • \n
  • Validate the IP address of commenters.
  • \n
  • Use regular expressions.
  • \n
  • Search local spam database for commenters previously marked as spammers.
  • \n
  • Notify admins by e-mail about incoming spam.
  • \n
  • Delete existing spam after n days.
  • \n
  • Limit approval to comments/pings (will delete other comment types).
  • \n
  • Select spam indicators to send comments to deletion directly.
  • \n
  • Optionally exclude trackbacks and pingbacks from spam detection.
  • \n
  • Optionally spam-check comment forms on archive pages.
  • \n
  • Display spam statistics on the dashboard, including daily updates of spam detection rate and a total of blocked spam comments.
  • \n
\n

Support

\n\n

Contribute

\n
    \n
  • Active development of this plugin is handled on GitHub.
  • \n
  • Pull requests for documented bugs are highly appreciated.
  • \n
  • If you think you’ve found a bug (e.g. you’re experiencing unexpected behavior), please post at the support forums first.
  • \n
  • If you want to help us translate this plugin you can do so on WordPress Translate.
  • \n
\n

Credits

\n\n","download_link":"https://downloads.wordpress.org/plugin/antispam-bee.2.10.0.zip","tags":{"anti-spam":"anti-spam","antispam":"antispam","block-spam":"block spam","comment":"comment","comments":"comments"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=TD4AMD2D8EMZW","icons":{"1x":"https://ps.w.org/antispam-bee/assets/icon-128x128.png?rev=977629","2x":"https://ps.w.org/antispam-bee/assets/icon-256x256.png?rev=977629"},"wporg":true},{"name":"SimpleTOC – Table of Contents Block","slug":"simpletoc","version":"4.8","author":"Marc Tönsing","author_profile":"https://profiles.wordpress.org/marcdk","requires":"5.0","tested":"5.8","requires_php":false,"rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":24},"num_ratings":24,"support_threads":2,"support_threads_resolved":1,"active_installs":2000,"downloaded":20627,"last_updated":"2021-07-29 9:07pm GMT","added":"2020-04-14","homepage":"https://marc.tv/simpletoc-wordpress-inhaltsverzeichnis-plugin-gutenberg/","short_description":"Adds a custom Table of Contents Gutenberg block.","description":"

In Gutenberg, add a block and search for “SimpleTOC” or just “TOC”. You need to save your post before you add the block. It works by parsing the post content and retrieving the heading blocks and creates a new dynamic block with a list of links to the headings.

\n

Hide the headline “Table of Contents” and set a maximum display depth in the blocks’ sidebar configuration. Add the CSS class “simpletoc-hidden” to a heading block to remove that specific heading from the generated TOC.

\n

Features

\n
    \n
  • No javascript or css added.
  • \n
  • Designed for Gutenberg.
  • \n
  • Compatible with AMP plugins.
  • \n
  • Minimal and valid HTML output.
  • \n
  • Inherits the style of your theme.
  • \n
  • Support for column block layouts.
  • \n
  • Control the maximum depth of the headings.
  • \n
  • Choose between an ordered and unordered html list.
  • \n
  • SEO friendly: Disable the h2 heading of the TOC block and add your own.
  • \n
  • Comes with English, French, Spanish, German, and Brazilian Portuguese translations.
  • \n
  • Works with non-latin texts. Tested with Japanese and Arabic.
  • \n
  • Finds headlines in groups and reusable blocks. And in groups within reusable blocks.
  • \n
  • Rank Math support.
  • \n
\n

Credits

\n

This plugin is forked from https://github.com/pdewouters/gutentoc by pdewouters and uses code from https://github.com/shazahm1/Easy-Table-of-Contents by shazahm1

\n

Many thanks to Tom J Nowell https://tomjn.com and and Sally CJ who both helped me a lot with my questions over at wordpress.stackexchange.com

\n","download_link":"https://downloads.wordpress.org/plugin/simpletoc.4.8.zip","tags":{"amp":"amp","block":"block","gutenberg":"gutenberg","table-of-contents":"table of contents","toc":"toc"},"donate_link":"https://marc.tv/out/donate","icons":{"1x":"https://ps.w.org/simpletoc/assets/icon.svg?rev=2451408","2x":"https://ps.w.org/simpletoc/assets/icon-256x256.png?rev=2451408","svg":"https://ps.w.org/simpletoc/assets/icon.svg?rev=2451408"},"wporg":true},{"name":"Log in with Google","slug":"login-with-google","version":"1.2.1","author":"rtCamp","author_profile":"https://profiles.wordpress.org/rtcamp","requires":"5.4.2","tested":"5.7.2","requires_php":"7.3","rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":6},"num_ratings":6,"support_threads":5,"support_threads_resolved":2,"active_installs":300,"downloaded":2930,"last_updated":"2021-07-23 10:00pm GMT","added":"2020-10-01","homepage":"","short_description":"Minimal plugin that allows WordPress users to log in using Google.","description":"

Ultra minimal plugin to let your users login to WordPress applications using their Google accounts. No more remembering hefty passwords!

\n

Initial Setup

\n
    \n
  1. \n

    Create a project from Google Developers Console if none exists.

    \n
  2. \n
  3. \n

    Go to Credentials tab, then create credential for OAuth client.

    \n
      \n
    • Application type will be Web Application
    • \n
    • Add YOUR_DOMAIN/wp-login.php in Authorized redirect URIs
    • \n
    \n
  4. \n
  5. \n

    This will give you Client ID and Secret key.

    \n
  6. \n
  7. \n

    Input these values either in WP Admin > Settings > WP Google Login, or in wp-config.php using the following code snippet:

    \n

    `
    \ndefine( ‘WP_GOOGLE_LOGIN_CLIENT_ID’, ‘YOUR_GOOGLE_CLIENT_ID’ );
    \ndefine( ‘WP_GOOGLE_LOGIN_SECRET’, ‘YOUR_SECRET_KEY’ );
    \n“

    \n
  8. \n
\n

Browser support

\n

These browsers are supported. Note, for example, that One Tap Login is not supported in Safari.

\n

How to enable automatic user registration

\n

You can enable user registration either by
\n– Enabling Settings > WP Google Login > Enable Google Login Registration

\n

OR

\n
    \n
  • Adding
    \ndefine( 'WP_GOOGLE_LOGIN_USER_REGISTRATION', 'true' );
    \nin wp-config.php file.
  • \n
\n

Note: If the checkbox is ON then, it will register valid Google users even when WordPress default setting, under

\n

Settings > General Settings > Membership > Anyone can register checkbox

\n

is OFF.

\n

Restrict user registration to one or more domain(s)

\n

By default, when you enable user registration via constant WP_GOOGLE_LOGIN_USER_REGISTRATION or enable Settings > WP Google Login > Enable Google Login Registration, it will create a user for any Google login (including gmail.com users). If you are planning to use this plugin on a private, internal site, then you may like to restrict user registration to users under a single Google Suite organization. This configuration variable does that.

\n

Add your domain name, without any schema prefix and www, as the value of WP_GOOGLE_LOGIN_WHITELIST_DOMAINS constant or in the settings Settings > WP Google Login > Whitelisted Domains. You can whitelist multiple domains. Please separate domains with commas. See the below example to know how to do it via constants:

\n
`\n
\n

define( ‘WP_GOOGLE_LOGIN_WHITELIST_DOMAINS’, ‘example.com,sample.com’ );
\n `

\n

Note: If a user already exists, they will be allowed to login with Google regardless of whether their domain is whitelisted or not. Whitelisting will only prevent users from registering with email addresses from non-whitelisted domains.

\n

Hooks

\n

Filter wp_google_login_scopes
\nThis filter can be used to filter existing scope used in Google Sign in.
\nYou can ask for additional permission while user logs in.
\nThis filter will provide 1 parameter scopes in callback, which contains array of scopes.

\n

wp-config.php parameters list

\n
    \n
  • \n

    WP_GOOGLE_LOGIN_CLIENT_ID (string): Google client ID of your application.

    \n
  • \n
  • \n

    WP_GOOGLE_LOGIN_SECRET (string): Secret key of your application

    \n
  • \n
  • \n

    WP_GOOGLE_LOGIN_USER_REGISTRATION (boolean) (optional): Set true If you want to enable new user registration. By default, user registration defers to Settings > General Settings > Membership if constant is not set.

    \n
  • \n
  • \n

    WP_GOOGLE_LOGIN_WHITELIST_DOMAINS (string) (optional): Domain names, if you want to restrict login with your custom domain. By default, it will allow all domains. You can whitelist multiple domains.

    \n
  • \n
\n

BTW, We’re Hiring!

\n

\n","download_link":"https://downloads.wordpress.org/plugin/login-with-google.1.2.1.zip","tags":{"authentication":"authentication","google-login":"Google Login","oauth":"oauth","sign-in":"sign in","sso":"sso"},"donate_link":"https://rtcamp.com/","icons":{"1x":"https://ps.w.org/login-with-google/assets/icon-128x128.png?rev=2402713","2x":"https://ps.w.org/login-with-google/assets/icon-256x256.png?rev=2402713"},"wporg":true},{"name":"Search with Google","slug":"search-with-google","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://wordpress.org/plugins/search-with-google/","short_description":"

This plugin replaces the WordPress default search query with server-side results from Custom Search Site Restricted JSON API. 

\n","description":"\n\n\n

This plugin replaces the WordPress default search query with server-side results from Custom Search Site Restricted JSON API

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2020/11/searchWithGoogle-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2020/11/searchWithGoogle-372x209.jpg","svg":""},"wporg":false},{"name":"Page Builder Gutenberg Blocks – CoBlocks","slug":"coblocks","version":"2.16.0","author":"GoDaddy","author_profile":"https://profiles.wordpress.org/godaddy","requires":"5.0","tested":"5.8","requires_php":"5.6","rating":88,"ratings":{"1":7,"2":3,"3":4,"4":5,"5":63},"num_ratings":82,"support_threads":16,"support_threads_resolved":3,"active_installs":500000,"downloaded":5421384,"last_updated":"2021-08-12 8:29pm GMT","added":"2018-04-19","homepage":"","short_description":"CoBlocks is a suite of page builder WordPress blocks for Gutenberg, with 10+ new blocks and a true page builder experience with rows and columns.","description":"

CoBlocks is the most innovative collection of page building WordPress blocks for the new Gutenberg WordPress block editor.

\n

With additional blocks and true row and column building, CoBlocks gives you a true page builder experience for Gutenberg.

\n

CoBlocks is powerful but lightweight: it adds functionality to the WordPress editor without bloat. This is the plugin you’ve been waiting for, and it will make you rethink what WordPress is capable of.

\n

Make Beautiful Web Pages With Gutenberg & CoBlocks

\n

CoBlocks is the last page builder you’ll ever need: you get a winning mix of additional WordPress blocks, and page builder functionality. With CoBlocks you have everything you need to make beautiful web pages with the new block editor:

\n
    \n
  • Accordion Block
  • \n
  • Alert Block
  • \n
  • Author Profile Block
  • \n
  • Buttons Block
  • \n
  • Carousel Gallery Block
  • \n
  • Click to Tweet Block
  • \n
  • Collage Gallery Block
  • \n
  • Dynamic Separator Block
  • \n
  • Events Block (New!)
  • \n
  • Features Block
  • \n
  • Food & Drinks Block
  • \n
  • Form Block
  • \n
  • Gif Block
  • \n
  • GitHub Gist Block
  • \n
  • Hero Block
  • \n
  • Highlight Block
  • \n
  • Icon Block
  • \n
  • Logos & Badges Block
  • \n
  • Map Block
  • \n
  • Masonry Gallery Block
  • \n
  • Media Card Block
  • \n
  • Offset Gallery Block
  • \n
  • Post Carousel Block
  • \n
  • Posts Block
  • \n
  • Pricing Table Block
  • \n
  • Resizable Row/Columns Blocks
  • \n
  • Services Block
  • \n
  • Shape Divider Block
  • \n
  • Social Profiles Block
  • \n
  • Social Sharing Block
  • \n
  • Stacked Gallery Block
  • \n
\n

Breakthrough Page Builder System

\n

CoBlocks features an innovative block system that allows you to create stunning web pages, and even entire websites, with the new WordPress editor.

\n

You get the extra blocks you need and the layout and design functionality for a true page builder experience.

\n

Use the exceptional Row and Columns blocks to add dynamically generated content areas with specific responsive margin and padding settings that only CoBlocks provides.

\n

Style these with innovative new blocks such as the Shape Divider, which lets you split up your content with beautiful dividers.

\n

Each of the WordPress blocks within CoBlocks have been precisely fined tuned to offer a familiar, yet powerful, customization experience. Tailor each block to your taste using our custom controls and settings. Change fonts, set margin and padding, pick colors and more.

\n

Custom Typography Controls

\n

The breakthrough Typography Control Panel within CoBlocks lets you design web pages with alluring typographic elements. Set fonts, sizes, weights, transformations and more, in our CoBlocks blocks, and in core WordPress blocks.

\n

Free Companion Theme

\n

CoBlocks is built to show off the best of Gutenberg, but it requires a Gutenberg-first theme to unlock its full potential. We also created the free Go theme in the WordPress theme repository as the perfect companion for CoBlocks.

\n

Going Beyond Gutenberg Blocks

\n

The vision for CoBlocks is to create a suite of Gutenberg blocks to help folks make beautiful websites easily. These newest releases of CoBlocks is the ultimate expression of that vision.

\n

Built With Developers in Mind

\n

Extensible, adaptable, and open source — CoBlocks is created with theme and plugin developers in mind. If you’re interested to jump in the project, there are opportunities for developers at all levels to get involved. Contribute to CoBlocks on GitHub and join the party. 🎉

\n","download_link":"https://downloads.wordpress.org/plugin/coblocks.2.16.0.zip","tags":{"blocks":"blocks","gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","page-builder":"page builder","wordpress-blocks":"wordpress blocks"},"donate_link":"","icons":{"1x":"https://ps.w.org/coblocks/assets/icon-128x128.jpg?rev=2243972","2x":"https://ps.w.org/coblocks/assets/icon-256x256.jpg?rev=2243972"},"wporg":true},{"name":"Simple Author Box","slug":"simple-author-box","version":"2.42","author":"WebFactory Ltd","author_profile":"https://profiles.wordpress.org/webfactory","requires":"4.6","tested":"5.8","requires_php":"5.6","rating":88,"ratings":{"1":9,"2":0,"3":5,"4":8,"5":75},"num_ratings":97,"support_threads":12,"support_threads_resolved":12,"active_installs":50000,"downloaded":896750,"last_updated":"2021-08-13 8:08am GMT","added":"2014-08-08","homepage":"https://wpauthorbox.com/","short_description":"Add a responsive author box with social icons to any post. Great author box for…","description":"

Simple Author Box adds a responsive author box at the end of your posts, showing the author name, author gravatar and author description – author bio. It also adds over 30 social profile fields on WordPress user profile screen, allowing to display the author social icons in the author box.

\n

Main Features

\n
    \n
  • Shows author gravatar, name, website, description (author bio) and social icons
  • \n
  • Fully customizable to match your theme design (style, color, size and text options)
  • \n
  • Nice looking on desktop, laptop, tablet or mobile phones
  • \n
  • Automatically insert the author box at the end of your post
  • \n
  • Option to manually insert the author box on your template file (single.php or author.php)
  • \n
  • Simple Author Box has RTL support
  • \n
  • Simple Author Box has AMP support
  • \n
  • Great for guest posts, and guest authors
  • \n
\n

Simple Author Box Pro Features

\n
\n

Premium features only available in Simple Author Box Pro

\n
    \n
  • Change author box position to before/after content
  • \n
  • Choose whether the author’s name should link to its website/page/none
  • \n
  • Select where to show author box on
  • \n
  • Add rotate effect on author avatar hover
  • \n
  • Option to open author website link in a new tab
  • \n
  • Option to add “nofollow” attribute on author website link
  • \n
  • Choose the author website’s position: right/left
  • \n
  • Social icons type, style, rotate effect, shadow effect, thin border
  • \n
  • Option to change the color palette
  • \n
  • Choose the font and font sizes for the author’s job title, website, name, and description
  • \n
  • Enable guest authors and co-authors
  • \n
  • Option to use guest authors as co-authors
  • \n
  • Top authors widget – displays the most popular authors based of comments
  • \n
  • Simple author box widget – displays the users selected
  • \n
\n
\n

Read more about the Simple Author Box advanced features.

\n","download_link":"https://downloads.wordpress.org/plugin/simple-author-box.2.42.zip","tags":{"author-bio":"author bio","author-box":"author box","author-profile-fields":"author profile fields","author-social-icons":"author social icons","responsive-author-box":"responsive author box"},"donate_link":"","icons":{"1x":"https://ps.w.org/simple-author-box/assets/icon-128x128.jpg?rev=1821054"},"wporg":true},{"name":"Genesis Blocks","slug":"genesis-blocks","version":"1.2.5","author":"StudioPress","author_profile":"https://profiles.wordpress.org/studiopress","requires":"5.3","tested":"5.8","requires_php":"7.1","rating":90,"ratings":{"1":1,"2":0,"3":1,"4":0,"5":9},"num_ratings":11,"support_threads":12,"support_threads_resolved":4,"active_installs":30000,"downloaded":195130,"last_updated":"2021-07-20 6:30pm GMT","added":"2020-08-25","homepage":"https://studiopress.com/genesis-pro/","short_description":"A collection of content blocks, sections, & full-page layouts for the block editor.","description":"

Genesis Blocks is a collection of page building blocks for the Gutenberg block editor. Building pages with the block editor and Genesis Blocks gives you more control to quickly create and launch any kind of site you want!

\n

Installing the customizable Genesis Blocks plugin adds a collection of beautiful, site-building blocks to help you customize page layouts, increase engagement, and get results for your business. Genesis Blocks provides everything from customizable buttons, to beautifully-designed page sections and full-page layout designs via the Section & Layout block.

\n

Along with the blocks themselves, Genesis Blocks extends the content creation experience by providing a library of page sections and full-page layouts, all available from within the block editor.

\n

Create compelling content faster.

\n

Create and use content quickly with prebuilt and custom content sections and full-page layouts.

\n

Enhance the Gutenberg editor.

\n

Additional content blocks and the layout selector make it easy to get the most value out of the block-based editor.

\n

Genesis Blocks currently includes the following blocks to help you build content and pages quickly and effortlessly:

\n
    \n
  • Section & Layout Block
  • \n
  • Advanced Columns Block
  • \n
  • Newsletter Block
  • \n
  • Pricing Block
  • \n
  • Post Grid Block
  • \n
  • Container Block
  • \n
  • Testimonial Block
  • \n
  • Inline Notice Block
  • \n
  • Accordion Block
  • \n
  • Share Icons Block
  • \n
  • Call-To-Action Block
  • \n
  • Customizable Button Block
  • \n
  • Spacer & Divider Block
  • \n
  • Author Profile Block
  • \n
  • Drop Cap Block
  • \n
\n

Do more with Genesis Pro

\n

For those wanting to level-up with Genesis Blocks, a Genesis Pro subscription brings even richer tooling and a bigger library of sections and layouts.

\n
    \n
  • 2 new blocks (more coming soon)
  • \n
  • 26 pre-built full-page layouts
  • \n
  • 56 pre-built sections
  • \n
  • Save & reuse your own sections & layouts
  • \n
  • Advanced block-level user permissions
  • \n
  • Access to and support for Genesis Framework & all of our 35 StudioPress-made premium child themes.
  • \n
  • Additional advanced features for the rest of the Genesis Product Suite
  • \n
\n

Genesis Pro includes even more value for modern WordPress content creators, marketers, and developers. Learn more about Genesis Pro here.

\n

Google AMP Support

\n

The Accelerated Mobile Pages (AMP) project is a publishing format created by Google to enhance site performance for mobile website users. AMP pages are specially designed for Google search users to quickly load website pages without using any extraneous data. Genesis Blocks has support for AMP built into each block!

\n

Help & Docs

\n

User and developer docs for Genesis Blocks can be found here.

\n","download_link":"https://downloads.wordpress.org/plugin/genesis-blocks.1.2.5.zip","tags":{"blocks":"blocks","editor":"editor","gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","page-builder":"page builder"},"donate_link":"https://studiopress.com","icons":{"1x":"https://ps.w.org/genesis-blocks/assets/icon-128x128.png?rev=2368839","2x":"https://ps.w.org/genesis-blocks/assets/icon-256x256.png?rev=2368840"},"wporg":true},{"name":"MathML Block","slug":"mathml-block","version":"1.2.0","author":"adamsilverstein","author_profile":"https://profiles.wordpress.org/adamsilverstein","requires":"5.0","tested":"5.5.5","requires_php":"5.6","rating":90,"ratings":{"1":0,"2":0,"3":0,"4":1,"5":1},"num_ratings":2,"support_threads":1,"support_threads_resolved":0,"active_installs":500,"downloaded":7384,"last_updated":"2020-10-01 11:05pm GMT","added":"2018-12-28","homepage":"","short_description":"A MathML block for the WordPress block editor (Gutenberg).","description":"

A MathML block for the WordPress block editor (Gutenberg).
\nRequires PHP 5.4+ and WordPress 5.0+.

\n

Development takes place on the GitHub repository: https://github.com/adamsilverstein/mathml-block.

\n

Screencast: https://cl.ly/c0f6bbfbc3b1

\n

What is MathML?

\n

Mathematical Markup Language is a mathematical markup language, an application of XML for describing mathematical notations and capturing both its structure and content. It aims at integrating mathematical formulae into World Wide Web pages and other documents.

\n

The MathML block uses MathJax to render MathML formulas in the editor and on the front end of a website. MathJax (https://www.mathjax.org/) is A JavaScript display engine for mathematics that works in all browsers.

\n

To test a MathML block and enter a formula, for example: \\[x = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}\\].

\n

To test using math formulas inline, type an formula into a block of text, select it and hit the ‘M’ icon in the control bar. For example: \\( \\cos(θ+φ)=\\cos(θ)\\cos(φ)−\\sin(θ)\\sin(φ) \\). Note: if you are copying and pasting formulas into the rich text editor, switching to HTML/code editor mode is less likely to reformat your pasted formula.

\n

This plugin is compatible with the official AMP plugin by rendering amp-mathml on AMP pages.

\n

Technical Notes

\n
    \n
  • Requires PHP 5.6+.
  • \n
  • Requires WordPress 5.0+.
  • \n
  • Issues and Pull requests welcome on the GitHub repository: https://github.com/adamsilverstein/mathml-block.
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/mathml-block.zip","tags":{"block":"block","block-editor":"block-editor","gutenberg":"gutenberg","math":"math","mathml":"mathml"},"donate_link":"","icons":{"1x":"https://ps.w.org/mathml-block/assets/icon-128x128.png?rev=2002452","2x":"https://ps.w.org/mathml-block/assets/icon-256x256.png?rev=2002452"},"wporg":true},{"name":"Calculated Fields Form","slug":"calculated-fields-form","version":"1.1.14","author":"CodePeople","author_profile":"https://profiles.wordpress.org/codepeople","requires":"3.0.5","tested":"5.8","requires_php":false,"rating":96,"ratings":{"1":20,"2":2,"3":4,"4":26,"5":675},"num_ratings":727,"support_threads":101,"support_threads_resolved":101,"active_installs":60000,"downloaded":3470111,"last_updated":"2021-08-31 10:52pm GMT","added":"2013-03-12","homepage":"https://cff.dwbooster.com","short_description":"Calculated Fields Form allows you to create both simple and rich forms, quickly like a…","description":"

The “Calculated Fields Form” plugin allows you to create web forms with calculated fields, whose values are dynamically calculated based on other fields’ values in the web form.

\n

The possibilities are unlimited. For example, you can create forms with financial calculations, date operations to create reservation forms, and calculate the product prices. The plugin includes text operations for editing, translation, or advertising services. There are more advanced operations available such as determining the distance between addresses or generating graphs. The resulting forms are 100% mobile responsive.

\n

The most impressive thing is that you don’t need to hire a programmer to create the forms. With basic knowledge, you will have a professional form in just five minutes.

\n

Creating a form is all visual. The “Calculated Fields Form” plugin includes a form editor with multiple controls. Such as text fields, numeric fields, currency fields, slider controls, email fields, radio buttons, checkboxes, container fields, page breaks to create multipage forms, and most importantly, calculated fields.

\n

The form editor includes a list of controls, a property bar to easily edit field properties, a dashboard where you can design your forms, and the attributes for form configuration. Also, the plugin comes with multiple predefined layouts to change the forms’ appearance. If there are not enough predefined layouts for your project, there is a style editor to customize the form’s design.

\n

The “Calculated Fields Form” plugin includes integration with popular page builders:

\n
    \n
  • Classic WordPress Editor
  • \n
  • Gutenberg Editor
  • \n
  • Elementor
  • \n
  • Page Builder by SiteOrigin
  • \n
  • Beaver Builder
  • \n
  • WPBakery Page Builder
  • \n
  • DIVI Builder
  • \n
\n

For other editors, it is possible to insert the form into the pages via its shortcode. Each web form has an associated shortcode that allows you to insert it wherever you want.

\n

Features

\n

Main features:

\n
    \n
  • Visual form builder with an intuitive and interactive interface.
  • \n
  • Includes general-purpose controls such as radio buttons, checkboxes, menu lists, date fields, slider controls, numeric fields, text currency fields, etc.
  • \n
  • Includes calculated fields whose values result from operations involving other form fields.
    \nInsert as many calculated fields in the form as you need.
  • \n
  • Contains an advanced formula editor associated with the calculated fields with syntax highlighting and error detection.
  • \n
  • Features many operations modules: mathematical operations, operations with dates, financial operations, distance operations, text management, operations for calling remote services, etc. The calculated fields can identify numbers and prices within the values of the fields.
  • \n
  • Distributed with several predefined forms that you can use as a starting point for your projects.
  • \n
  • Includes several design templates.
  • \n
  • Supports multi-pages forms by inserting page break controls between fields belonging to different pages.
  • \n
  • Allows the grouping of fields inside container controls (Div and Fieldset).
  • \n
  • Possible to define dependency rules between fields in the form, which is very useful in the design of wizards.
  • \n
\n

Other features:

\n
    \n
  • From the plugin configuration page, it is possible to duplicate a form by pressing the “Clone” button associated with it. By cloning a form, you can reuse the work already done.
  • \n
  • Includes a troubleshooting and optimization area.
  • \n
  • Allows you to disable forms in the indexing process to improve the speed of the website.
  • \n
  • Includes a version control in the forms to recover previous versions.
  • \n
\n

Predefined forms:

\n

“Calculated Fields Form” is distributed with five predefined sample forms.

\n
    \n
  1. Simple Calculator Operations
  2. \n
  3. Calculation with Dates (bookings with check-in and check-out dates)
  4. \n
  5. Ideal Weight Calculator
  6. \n
  7. Pregnancy Calculator
  8. \n
  9. Lease Calculator
  10. \n
\n

You can clone a sample form to implement your project, or create a new form from scratch.

\n
\n

Calculated Fields Form Commercial
\n The free version of the “Calculated Fields Form” plugin includes only basic functionality. Other distributions (Professional, Developer, and Platinum) are available with advanced functionalities, such as sending notification emails, integration with payment gateways and external services, controls for database’s connection (and connection to other data sources), complex operations, and many other features.

\n
\n

Features of the Profesional version:

\n
    \n
  • Includes all the features of the free version of the plugin.
  • \n
  • Submit the data collected by the forms and store it on the website for review.
  • \n
  • Send notification emails with the data collected by the form, as well as confirmation emails to the users.
  • \n
  • Integrate the form with PayPal and calculate the amount to be charged through a calculated field.
    \nPayments allow SCA (strong customer authentication), compatible with the new payment services (PSD 2) – Directive (EU).
  • \n
  • Export and import forms between different WordPress sites.
  • \n
  • Different mechanisms to protect forms, such as captcha, WordPress nonces, and honeypot fields.
  • \n
  • Associate “Thank You” page with the form, where you can show a summary of the form’s submission.
  • \n
  • Dashboard widget to show the last week’s submissions.
  • \n
  • Cache the forms to increase the rendering speed.
  • \n
  • Export the information submitted by the forms to a CSV file and use it with third-party tools such as Excel, OpenOffice, LibreOffice, or any other spreadsheet editor.
  • \n
\n

Features of the Developer version:

\n\n

Includes add-ons to extend the form features and make use of third-party plugins and external services

\n
    \n
  • Server-Side Equations add-on: define server-side equations.
  • \n
  • Verification Code add-on: verifies the user’s email by sending him a verification code and blocking the form’s submission until the verification code is entered.
  • \n
  • WooCommerce add-on: integrate forms with WooCommerce products and calculate their prices, dimensions, and weight at the runtime.
  • \n
  • SalesForce add-on: integrate the form with the SalesForce service.
  • \n
  • WebHooks add-on: send the information collected by the form to a WebHook URL to open countless possibilities. By connecting your form to services such as Zapier, Microsoft Flow, IFTTT, Workato, and others, you can connect to hundreds of third-party services (e.g. Zoho CRM, Dropbox, Mailchimp, Google Drive, Facebook, Twitter, etc.).
  • \n
  • User Permissions add-on: control the forms’ access, as well as allowing users to access and edit their data.
  • \n
  • User Registration Form add-on: build a user registration form that captures the user’s basic information and metadata.
  • \n
  • reCAPTCHA add-on: replace the basic captcha with Google reCAPTCHA to protect the forms.
  • \n
\n

Features of the Platinum version:

\n
    \n
  • Includes all the features of free, Professional, and Developer versions of the plugin.
  • \n
  • Unique Fields Values add-on: verifies that the values entered by users have not been used in previous submissions.
  • \n
  • Easy Digital Downloads add-on: integrate the forms into Easy Digital Downloads products and calculate their prices at the runtime.
  • \n
  • Google Analytics add-on: generate usage reports in “Google Analytics” for the users’ actions.
  • \n
  • PayPal Pro add-on: enable the payer’s credit card details to be entered directly through the website without any redirection to the PayPal website.
  • \n
  • Upload Files add-on: add uploaded files to the media library and extend the file types accepted by WordPress.
  • \n
  • DropBox Integration add-on: copy or move the uploaded files to a DropBox account.
  • \n
  • ip2location add-on: identify the users’ data using the ip2location databases.
  • \n
  • Google Places add-on: transform form fields into autocomplete address fields.
  • \n
  • Autocomplete Places add-on: transform form fields into autocomplete address fields by using the Photon API.
  • \n
  • Signature add-on: convert form fields into “Signature” fields, allowing the users to sign the form with a mouse or touchscreen.
  • \n
  • iCal add-on: send iCal file in the notification emails to import the events into most popular calendars like Outlook and Google Calendar.
  • \n
  • CSV Generator add-on: export the information collected by the form to CSV files and attach these to the notification emails.
  • \n
  • PDF Generator add-on: generate PDF files with the information collected by the forms and attach them to the notification emails.
  • \n
  • WebMerge add-on: integrate the forms with FormStack documents (formerly WebMerge) to generate PDF and Office documents at runtime with the information collected by the web forms.
  • \n
  • PrintFriendly add-on: generate PDF files with the PrintFriendly API and attach the resulting files to the notification emails.
  • \n
  • Mailchimp add-on: add new members to the MailChimp account.
  • \n
  • Mautic add-on: add new contacts (or update existing ones) into the Mautic Service.
  • \n
  • HubSpot add-on: add/update contacts in HubSpot, using the information collected by the form.
  • \n
  • Emma add-on: add new members to the Emma service.
  • \n
  • Twilio add-on: send notification messages (SMS) in the forms’ submissions.
  • \n
  • MailPoet add-on: add new subscribers to MailPoet’s Mailing Lists (MailPoet versions 2 and 3).
  • \n
  • AffiliateWP add-on: integrate the forms with the AffiliateWP plugin.
  • \n
  • Authorize.Net add-on: accept payments via Authorize.Net from the form.
  • \n
  • Stripe add-on: accept payments via the Stripe payment gateway from the form.
  • \n
  • Skrill Payments Integration add-on: integrate with the Skrill Moneybookers payment gateway.
  • \n
  • TargetPay (iDeal) add-on add-on: integrate with iDeal, the popular Dutch payment method.
  • \n
  • Mollie (iDeal) add-on: accept payments via iDeal.
  • \n
  • RedSys / Servired / Sermepa add-on provides: a secure interface for accepting credit card payments from most banks in Spain.
  • \n
  • PayTM add-on: a secure interface for accepting payments with credit cards, debit cards, net banking, wallets, and EMI.
  • \n
  • SagePay add-on: a secure interface for accepting payments via SagePay.
  • \n
  • Sage Payment add-on: a secure interface for accepting payments through a secure SSL checkout system for both bankcard and virtual check transactions.
  • \n
\n

Please keep the plugin updated. Updates contain bug fixes as well as new features. The WordPress directory distributes the updates for the free version of the plugin. But for commercial versions, it would be necessary to register your copy of the plugin. The following link describes the registration process: CLICK HEREThis section mainly contains notes on features of the form builder that are too detailed to include in the main description.

\n

Conditional rules

\n

It is possible to show or hide form fields (dependent fields) based on the options selected in checkbox fields, radio buttons, the options selected in dropdown menus, or the result of calculated fields.

\n

The value of a dependent field is zero when it is hidden/disabled. The plugin excludes the disabled form fields from the submission.

\n

Additional details about the use of dependencies

\n

Predefined values

\n

The predefined values in the fields have two possible uses:

\n

1- To fill the field by default. This makes it easier for the end-user to enter values.

\n

2- Hint of the values to be entered in the field (like “Enter your name”). To use the predefined value as a placeholder, you must tick the “Hide predefined value on click” checkbox. The value will disappear once the user starts filling in the field. The calculated fields’ equations ignore placeholders.

\n

The “User Instructions” attribute

\n

The “User instructions” attribute in the field settings allows you to instruct the user on how to fill in the field. By default, the instructions appear as smaller text on the public website. But they can be configured as tooltips.

\n

Adding CSS layout keywords

\n

The “Add CSS layout keywords” attribute in the fields settings allows you to apply CSS styles to fields. You must only enter the name of the CSS class names, and not their definitions.

\n

You can define the CSS classes via the “Customize Form Design” attribute in the “Form Settings” tab. This attribute contains a CSS editor with syntax highlighting and error checking.

\n

If you want to assign several class names to the field, separate them by space characters.

\n

The plugin includes multiple predefined classes that you can assign to the form fields.

\n

More information about the form’s design can be found by reading the following post in the plugin’s blog:

\n

Customizing the form’s design

\n

The classes listed below allow you to align two, three, or four fields on the same line:

\n
column2\ncolumn3\ncolumn4\n
\n

For example, if you want to put two fields on the same line, give both fields the class name “column2”.

\n

There are other variants for displaying several fields on the same line, such as container fields (Div or Fieldset). Container fields allow you to select the number of columns in your configuration. The following post describes all the alternatives for positioning the fields in the form:

\n

Formatting the form (distributing the fields in columns)

\n

Multi-page form

\n

To create multi-page forms, you must insert “Page break” controls between fields belonging to different pages.

\n

When the user presses the “Next Page” button, the plugin validates the fields in the current form. If there is any validation error (such as an unfilled required field), the plugin stops the “Next page” action.

\n

Hidden calculated fields

\n

Calculated fields include a checkbox in the configuration that allows them to be hidden from the public website. This feature is essential in those fields that are used to calculate intermediate values or when we want to show the results only in emails or thank you pages.

\n

Equation / Formula format for calculated fields

\n

Below, some possible formulas are included as examples, but the possibilities are endless.

\n
    \n
  • \n

    With simple mathematical operations:

    \n
    fieldname1 + fieldname2\n\nfieldname1 * fieldname2\n\nfieldname1 / fieldname2\n\nfieldname1 - fieldname2\n\nfieldname1 - fieldname2\n
    \n
  • \n
  • \n

    With mathematical operations involving multiple fields and grouped fields:

    \n
    fieldname1 * (fieldname2 + fieldname3)\n
    \n
  • \n
  • \n

    With rounding operations. Round the result to two decimal places:

    \n
    PREC(fieldname2 / fieldname3, 2)\n
    \n
  • \n
  • \n

    There are infinite number of formulas that can be created using complex structures. For example, the following formula includes conditional statements:

    \n
    (function () {\nif (100 < fieldname3) return fieldname1 + fieldname2;\nif (fieldname3 <= 100) return fieldname1 * fieldname2;\n})();\n
    \n
  • \n
  • \n

    For complex formulas/equations you must use the function format with return statement to return the result to the calculated field:

    \n
     (function () {\n    var result = 0;\n    /* Your code here */\n    return result;\n}) ();\n
    \n
  • \n
\n

Operations and operators to use in equations/formulas

\n

One of the “Calculated Fields Form” strengths is the ability to use any valid JavaScript code to implement the equations/formulas.

\n

However, the plugin includes a wide variety of operations and operators to simplify the development process.

\n

Mathematical Operations and Operators

\n

Conditional Operations

\n

Field Handling Operations

\n

Operations for interacting with external services

\n

Operations for handling URLs and query strings

\n

In addition to the operation modules listed above, the Developer and Platinum versions of the plugin include additional modules:

\n

Date Time Operations

\n

Financial Operations

\n

Distance and Travel Time Operations

\n

Operations to generate charts

\n

Controls available in the form generator of the “Calculated Fields Form”

\n

The complete list of controls is available from this link: CLICK HERE

\n

Create JavaScript variables from parameters received by “GET” or “POST”, “SESSION” variables, or “COOKIES” to use in the equations

\n

The plugin includes the shortcode [CP_CALCULATED_FIELDS_VAR] to generate JavaScript variables from parameters received by “GET” or “POST”, “SESSION” variables, or “COOKIES”:

\n
[CP_CALCULATED_FIELDS_VAR name=\"...\"]\n
\n

In the shortcode, you must replace the “…” symbols with the name of the parameter or variable. It will be the same name for the JavaScript variable.

\n

For example:

\n
[CP_CALCULATED_FIELDS_VAR name=\"varname\"]\n
\n

You can use the variables generated through the shortcode [CP_CALCULATED_FIELDS_VAR] in the formulas of the calculated fields: fieldname1*varname

\n

The complete list of parameters accepted by the variables shortcode is available at the following link: CLICK HERE

\n

Tips for calculating prices

\n

One of the most frequent uses of our plugin is for price calculation. When displaying the price of a product, you may want to split the form into two pages. The first page would request the information needed to calculate the price, and the second page would include the calculated field with the final price. Also, you could use the “Instruct. Text” fields to indicate the terms, conditions, and validity period of the offer.

\n

Note that you can make the “Instruct. Text” fields dependent on the calculated value. This allows you to vary the text displayed to the user depending on the calculated price, as the terms, conditions, or offers often depend on the transaction amount.

\n

Add-ons

\n

The add-ons are only distributed with the Developer and Platinum versions of the plugin.

\n

The plugin lists the add ons in the “Add-ons area” of the settings page. To enable the add-ons, you must tick their corresponding checkbox and press the “Activate/Deactivate Add-ons” button.

\n

Server-Side Equations add-on – included in the Developer and Platinum versions of the plugin

\n

Define equations with PHP code on the server-side. The calculated fields call the server-side equations via AJAX.

\n

CLICK HERE for additional information

\n

Verification Code add-on – included in the Developer and Platinum versions of the plugin

\n

The “Verification Code” add-on allows verifying the users’ emails by sending a verification code and blocking the form’s submission until a valid code is entered.

\n

CLICK HERE for additional information

\n

Unique Fields Values add-on – included in the Platinum version of the plugin

\n

The “Unique Fields Values” add-on verifies that the values entered by users have not been used in previous submissions. It allows to enter simple and complex verification rules (one or multiple fields separated by comma symbols).

\n

CLICK HERE for additional information

\n

WooCommerce add-on – included in the Developer and Platinum versions of the plugin

\n

Integrate the forms created by the “Calculated Fields Form” with WooCommerce products and calculate their prices, weights, dimensions, and more at the runtime.

\n

CLICK HERE for additional information

\n

Easy Digital Downloads add-on – included in the Platinum version of the plugin

\n

Integrate forms created by the “Calculated Fields Form” with the Easy Digital Downloads products, and calculate their price dynamically at the runtime.

\n

CLICK HERE for additional information

\n

SalesForce add-on – included in the Developer and Platinum versions of the plugin

\n

Add new leads to a SalesForce account using the data collected by the forms.

\n

CLICK HERE for additional information

\n

WebHook add-on – included in the Developer and Platinum versions of the plugin

\n

Post the information collected by the forms to WebHook URLs.

\n

Through connecting the forms created by the plugin with services like Zapier, Microsoft Flow, Workato, or IFTTT (and many others), you will have access to hundreds of third-party services, like Zoho CRM, Dropbox, Mailchimp, Evernote, Google Drive, Facebook, Twitter, and more than 300 services https://zapier.com/zapbook/apps/, https://flow.microsoft.com/, https://ifttt.com/discover

\n

CLICK HERE for additional information

\n

User Permissions add-on – included in the Developer and Platinum versions of the plugin

\n

Control access to forms. Access can be restricted to registered users, users with certain roles, or to specific users.

\n

The add-on adds a new shortcode to the plugin to list the data submitted by the logged-in user (it is possible to insert the new shortcode into the user’s profile) and assign user permissions to edit their information or delete an entry.

\n

Limit the number of submissions (e.g. one submission per form/user).

\n

CLICK HERE for additional information

\n

User Registration Form add-on – included in the Developer and Platinum versions of the plugin

\n

Build user registration forms. The form can collect basic user information and metadata required by other plugins.

\n

CLICK HERE for additional information

\n

reCAPTCHA add-on – included in the Developer and Platinum versions of the plugin

\n

Protect forms using Google reCAPTCHA instead of the basic captcha distributed with the plugin, as reCAPTCHA is more visual and intuitive than traditional captchas.

\n

CLICK HERE for additional information

\n

Google Analytics add-on – included in the Platinum version of the plugin

\n

Generate usage reports in “Google Analytics” for the users’ actions.

\n

CLICK HERE for additional information

\n

PayPal Pro add-on – included in the Platinum version of the plugin

\n

Allow the user to enter their credit card details directly on your website without redirecting them to the PayPal website. Once the user has filled the form fields and clicked the submit button, the payment is processed and the posted data (excluding the credit card information) is stored in the WordPress database.

\n

CLICK HERE for additional information

\n

Upload Files add-on – included in the Platinum version of the plugin

\n

Every commercial version of the plugin includes the “Upload File” control to upload files from the form. However, the “Upload Files” add-on allows the uploaded files to be added to the Media Library and be accessed from the pages and posts of the website.

\n

WordPress restricts the file types that can be uploaded. The “Uploads Files” add-on allows the list of accepted files to be extended.

\n

CLICK HERE for additional information

\n

DropBox Integration add-on – included in the Platinum version of the plugin

\n

Copy or move files uploaded through the forms to a DropBox account.

\n

CLICK HERE for additional information

\n

ip2location add-on – included in the Platinum version of the plugin

\n

Use the ip2location databases to identify additional user information based on their IP. Address such as country, city, coordinates, weather station, time zone, ZIP code, etc.

\n

CLICK HERE for additional information

\n

Google Places add-on – included in the Platinum version of the plugin

\n

Transform fields into autocomplete address fields calling the Google Places API.

\n

CLICK HERE for additional information

\n

Autocomplete Places add-on – included in the Platinum version of the plugin

\n

Transform fields into autocomplete address fields by calling the Photon API.

\n

CLICK HERE for additional information

\n

Signature add-on – included in the Platinum version of the plugin

\n

Transform fields into “Signature” fields to allow the users to sign the form with their mouse or touchscreens.

\n

CLICK HERE for additional information

\n

iCal add-on – included in the Platinum version of the plugin

\n

Send the users iCal files attached to the confirmation emails to import events into the most popular calendars like Outlook and Google Calendar.

\n

CLICK HERE for additional information

\n

CSV Generator add-on – included in the Platinum version of the plugin

\n

Export the information collected by the form to CSV files and attach them to the notification emails.

\n

CLICK HERE for additional information

\n

PDF Generator add-on – included in the Platinum version of the plugin

\n

An experimental add-on that generates PDF files with the information collected by the forms and attaches them to the notification emails.

\n

CLICK HERE for additional information

\n

WebMerge add-on – included in the Platinum version of the plugin

\n

Integrate the forms with the FormStack Documents service (formerly WebMerge) to generate PDF and Office documents with the information collected from the form.

\n

CLICK HERE for additional information

\n

Integrate the form with the Silverpop service (now: IBM Watson Campaign Automation) CLICK HERE for additional information

\n

PrintFriendly add-on – included in the Platinum version of the plugin

\n

Send the information collected by the forms to PrintFriendly and attach the resulting PDF files to the notification emails.

\n

CLICK HERE for additional information

\n

Mailchimp add-on – included in the Platinum version of the plugin

\n

Add new members to the MailChimp lists with the information collected by the form.

\n

CLICK HERE for additional information

\n

Mautic add-on – included in the Platinum version of the plugin

\n

Add/update contacts in the Mautic service with information collected by the forms.

\n

CLICK HERE for additional information

\n

HubSpot add-on – included in the Platinum version of the plugin

\n

Add/update HubSpot contacts with information collected by the forms.

\n

CLICK HERE for additional information

\n

Emma add-on – included in the Platinum version of the plugin

\n

Connect the forms to the Emma service to add new members to Emma groups.

\n

CLICK HERE for additional information

\n

Twilio add-on – included in the Platinum version of the plugin

\n

Send notification messages (SMS) through Twilio in the form’s submissions.

\n

CLICK HERE for additional information

\n

MailPoet add-on – included in the Platinum version of the plugin

\n

Adds subscribers to MailPoet Mailing Lists (MailPoet versions 2 and 3).

\n

CLICK HERE for additional information

\n

AffiliateWP add-on – included in the Platinum version of the plugin

\n

Integrate the forms with the “AffiliateWP” plugin.

\n

CLICK HERE for additional information

\n

Authorize.Net add-on – included in the Platinum version of the plugin

\n

The Authorize.net Server Integration Method (Authorize.net SIM) is a hosted payment processing solution that handles all of the steps in processing a transaction.

\n

CLICK HERE for additional information

\n

Stripe add-on – included in the Platinum version of the plugin

\n

The Stripe Payments add-on (www.stripe.com) provides a way to accept all major cards from customers around the world.

\n

CLICK HERE for additional information

\n

Skrill Payments Integration add-on – included in the Platinum version of the plugin

\n

An interface for accepting payments through secure pages.

\n

You can accept cards, more than 20 local payment methods, and over 80 direct bank transfer connections with a single integration.

\n

CLICK HERE for additional information

\n

TargetPay (iDeal) add-on – included in the Platinum version of the plugin

\n

Integrate with iDeal, the most popular Dutch payment method. The integration is made via TargetPay: https://www.targetpay.com/info/ideal?setlang=en

\n

CLICK HERE for additional information

\n

Mollie (iDeal) add-on – included in the Platinum version of the plugin

\n

Integrate with iDeal, the popular Dutch payment method.

\n

CLICK HERE for additional information

\n

RedSys / Servired / Sermepa add-on – included in the Platinum version of the plugin

\n

A secure interface for accepting credit card payments through most banks in Spain (Sabadell, Banco Popular, BBVA, Santander, Bankia-Caixa, Bankinter, etc.)

\n

CLICK HERE for additional information

\n

PayTM add-on – included in the Platinum version of the plugin

\n

A secure interface for accepting payments through credit cards, debit cards, net banking, wallets, and EMI. With over 100 million PayTM users in India, your customers will appreciate the option to pay with their trusted PayTM Wallet.

\n

CLICK HERE for additional information

\n

SagePay add-on – included in the Platinum version of the plugin

\n

A secure interface for accepting payments through SagePay.

\n

CLICK HERE for additional information

\n

Sage Payment add-on – included in the Platinum version of the plugin

\n

An interface for accepting payments through a secure SSL-checkout system for both bank cards and virtual check transactions. All authorized and approved transactions will be delivered to your current bank card and/or virtual check batches, viewable within the Virtual Terminal for order processing and settlement.

\n

CLICK HERE for additional information

\n","download_link":"https://downloads.wordpress.org/plugin/calculated-fields-form.zip","tags":{"calculator":"calculator","contact-form":"contact form","form":"form","form-builder":"form builder","quote-form":"quote form"},"donate_link":"http://cff.dwbooster.com","icons":{"1x":"https://ps.w.org/calculated-fields-form/assets/icon-128x128.jpg?rev=1734377","2x":"https://ps.w.org/calculated-fields-form/assets/icon-256x256.jpg?rev=1734377"},"wporg":true},{"name":"All in One SEO – Best WordPress SEO Plugin – Easily Improve SEO Rankings & Increase Traffic","slug":"all-in-one-seo-pack","version":"4.1.3.3","author":"All in One SEO Team","author_profile":"https://profiles.wordpress.org/smub","requires":"4.9","tested":"5.8","requires_php":"5.4","rating":90,"ratings":{"1":163,"2":21,"3":15,"4":58,"5":1497},"num_ratings":1754,"support_threads":113,"support_threads_resolved":109,"active_installs":2000000,"downloaded":82959562,"last_updated":"2021-08-16 1:02pm GMT","added":"2007-03-30","homepage":"https://aioseo.com/","short_description":"The original WordPress SEO plugin. Improve your WordPress SEO rankings and traffic with our comprehensive SEO tools and smart SEO optimizations.","description":"

AIOSEO – The Best WordPress SEO Plugin & Toolkit

\n

All in One SEO for WordPress is the original WordPress SEO plugin started in 2007. Over 2 million smart website owners use AIOSEO to properly setup WordPress SEO, so their websites can rank higher in search engines.

\n

We believe you shouldn’t have to hire an SEO expert or developer to properly setup WordPress SEO. That’s why we built AIOSEO as the most comprehensive WordPress SEO plugin and marketing toolkit, so you can improve your website’s SEO rankings and uncover new SEO growth opportunities in less than 10 minutes.

\n

At All in One SEO (AIOSEO), user experience is our #1 priority. From website SEO setup to ongoing SEO optimization, our team of SEO experts have created easy to follow SEO workflows that will help you outrank your competitors in search results. This is why many industry leaders award AIOSEO as the most beginner friendly WordPress SEO plugin that’s both EASY and POWERFUL!

\n

AIOSEO’s WordPress SEO plugin features are highly optimized for Google and other popular search engine algorithm because we follow the most up to date SEO standards and SEO best practices. We can honestly say that AIOSEO is the best WordPress SEO plugin in the world.

\n
\n

AIOSEO Pro
\n This plugin is the lite version of the All in One WordPress SEO Pro plugin that comes with all the SEO features you will ever need to rank higher in search engines including smart SEO schema markup, advanced SEO modules, powerful SEO sitemap suite, local SEO module, Google AMP SEO, WooCommerce SEO, and tons more. Click here to purchase the best premium WordPress SEO plugin now!

\n
\n

We took the pain out of optimizing WordPress SEO and made it easy. Here’s why smart business owners, SEO experts, marketers, and developers love AIOSEO, and you will too!

\n

\n

Properly Setup WordPress SEO (without Hiring an Expert)

\n

AIOSEO makes it easy to setup WordPress SEO, the RIGHT WAY. Our smart WordPress SEO setup wizard helps you optimize your website’s SEO settings based on your unique industry needs.

\n

In less than 10 minutes, you will be able to setup all the advanced WordPress SEO features like XML sitemaps, optimized search appearance, SEO meta title, SEO meta description, SEO keywords, Open Graph SEO Knowledge Panel information, social media integration, SEO search console / webmaster tool connections, local SEO, schema markup for SEO, and more.

\n

But don’t just take our word. See what another website owner like yourself is saying:

\n
\n

Swift, honest, full control. After all these years and having used almost every WP SEO plugin I’m amazed by AIOSEO’s depth, simplicity and fast workflow ❤️
\n @aaronbol

\n
\n

Optimize Your Pages for Higher SEO Rankings with TruSEO Analysis

\n

Creating SEO optimized content used to be hard. Why?

\n

Because most business owners aren’t SEO experts.

\n

That’s why we created the TruSEO score. This gives you a more in-depth SEO optimization analysis and an actionable SEO checklist, so you can easily optimize your website pages for any keyword to get higher SEO rankings and maximum traffic.

\n

Our SEO content analysis tool is enabled by default in both the Gutenberg block editor and Classic Editor, so you can quickly optimize your blog posts and pages for your SEO keywords to get higher SEO rankings.

\n

Our SEO readability analysis gives you further insights on how to improve your content for maximum SEO benefits.

\n

The best part about TruSEO analysis is that you can use it to optimize your posts / pages for unlimited SEO keywords.

\n

Seamless SEO Integrations with Webmaster Tools & Social Media

\n

All in One SEO for WordPress offers seamless integration with popular social media platforms like Facebook, Twitter, Pinterest, YouTube, LinkedIn, Instagram, and more.

\n

This ensures that your website preview is optimized for both search engines (SEO), and social media networks.

\n

AIOSEO also makes it easy to connect your website with Google Search Console, Bing webmaster tools, Yandex webmaster tools, Baidu webmaster tools, Google Analytics, and all other SEO webmaster tools.

\n

This helps you easily measure your SEO results and progress.

\n
\n

I’m a professional SEO and used many tools and extensions. Regarding simplicity, individuality and configurability All in One SEO Pro is by far the best SEO plugin out there for WordPress.
\n Joel Steinmann

\n
\n

Smart XML Sitemaps and Rich Snippets (SEO Schema Markup)

\n

Proper website SEO markup plays an important role in improving SEO rankings. That’s why smart SEO experts use AIOSEO for on-page SEO optimization.

\n

Aside from the comprehensive WordPress XML sitemap feature, we also offer News SEO sitemap and Video SEO sitemap to help you improve your website’s SEO ranking and get more traffic.

\n

AIOSEO comes with built-in smart SEO schema markup feature to help you get more traffic through SEO rich snippets, Google featured snippets, breadcrumb site links in SEO, and image SEO search results.

\n
\n

The best SEO plugin. All in One SEO is the best SEO Plugin. I personally find it better than Yoast. This plugin offers so much freedom in configuration.
\n hanapupu

\n
\n

Local SEO, WooCommerce SEO, Google AMP, and More

\n

All in One SEO is the most comprehensive WordPress SEO plugin / marketing toolkit in the world.

\n

We offer complete support for Google Knowledge Graph and Schema.org markup for local businesses. You can add multiple business locations, opening hours, contact info (business email, business phone, business address, etc) and more with our Local SEO module.

\n

AIOSEO also makes WooCommerce SEO easy. With our SEO plugin, you can optimize your product pages and product categories for better SEO rankings (with just a few clicks).

\n

Since AIOSEO is the original WordPress SEO plugin, we have SEO integrations with all popular WordPress plugins such as membership plugin SEO, landing page plugin SEO, Semrush SEO integration, etc. AIOSEO also offers Google AMP integration and works seamlessly with all popular speed & caching plugins.

\n
\n

Best SEO Plugin for WordPress. We continue to use All in One SEO on all our WordPress sites and Clients sites, and we recommend it too all other clients.
\n MySEOGuy

\n
\n

Since SEO is an essential feature, AIOSEO is a must have plugin for every website!

\n

SEO Redirection Manager and 404 Monitoring

\n

AIOSEO Redirection manager helps you set up proper 301 redirects to improve your SEO rankings.

\n

We also support other advanced SEO redirects including 302 redirects, 307 redirects, 410 redirection, 404 redirects, REGEX redirects for advanced SEO needs, and more.

\n

We have an automatic 404 error monitor that helps you track and redirect 404 errors, so you can prevent losing SEO rankings.

\n

Since redirect speed is important for SEO, we built in both Apache / NGINX server level redirects to help you get maximum SEO benefit.

\n

Full All in One SEO Feature List

\n
    \n
  • WordPress SEO Setup Wizard – Properly setup WordPress SEO in less than 10 minutes.
  • \n
  • On-page SEO Optimization – optimize SEO code markup (without hiring a developer)
  • \n
  • TruSEO score – detailed content & readability analysis to help you optimize your pages for higher SEO rankings.
  • \n
  • Smart Meta Title & Description – Automatic SEO generation, dynamic SEO smart tags, and more.
  • \n
  • Unlimited SEO Keywords – our SEO content analyzer helps you optimize your pages for unlimited SEO keywords.
  • \n
  • XML Sitemap – Advanced XML sitemaps to boost your SEO rankings.
  • \n
  • Video SEO Sitemap – Improve your SEO rankings with video sitemap.
  • \n
  • News SEO Sitemap – Increase your SEO traffic with Google News sitemap.
  • \n
  • RSS SEO Sitemap – Improve SEO crawl frequency with RSS sitemap.
  • \n
  • Automatic Image SEO – Our image SEO module helps your images rank higher.
  • \n
  • Local Business SEO – Improve your local business SEO presence with our local SEO module.
  • \n
  • Multiple location SEO – Great for SEO optimization for businesses with multiple local store locations.
  • \n
  • Rich Snippets Schema – Get better click through rate (CTR) and increase SEO rankings with rich snippets schema.
  • \n
  • SEO Knowledge Graph Support – Improve your website’s search appearance with SEO Knowledge panel.
  • \n
  • Advanced SEO Schema – Easily add advanced SEO schema markups like FAQ schema, product schema, recipe schema (food blogger SEO), software application schema markup (SaaS SEO), online course schema (for course SEO), and more.
  • \n
  • Sitelinks Search Box – Helps you get a search box in Google SEO rankings.
  • \n
  • Google Site Links – Our SEO markup can help you get sitelinks for your brand.
  • \n
  • Robots.txt Editor – Control what SEO robots can see with our easy SEO robots.txt editor.
  • \n
  • SEO Audit Checklist – Improve your website’s SEO ranking with our SEO audit checklist.
  • \n
  • Google Search Console – Connect your WordPress site with Google webmaster tools to see additional SEO insights.
  • \n
  • Search Engine Verification Tools – Easily integrate with other popular SEO webmaster tools to improve search visibility.
  • \n
  • Google AMP SEO – Improve your mobile SEO rankings with Google AMP SEO.
  • \n
  • Advanced SEO Canonical URLs – Prevent duplicate content in SEO with automatic canonical URLs and boost your SEO rankings.
  • \n
  • Advanced Robots Meta SEO Settings – granular controls for no index, no follow, no archive, no snippet, max snippet, max video, and more.
  • \n
  • RSS Content for SEO – Stop content theft from hurting your SEO rankings with our RSS Content tool.
  • \n
  • User Access Control – Control who can manage your SEO settings with our advanced SEO access control.
  • \n
  • Competitor Site SEO Analysis – Use our competitor SEO analysis to outrank them by improving your website’s SEO optimization.
  • \n
  • Smart Breadcrumbs – Add Breadcrumb navigation to improve user experience and boost your SEO rankings. Comes with full SEO JSON+LD support.
  • \n
  • Smart SEO Redirects – Setup proper 301 redirects to improve your SEO rankings.
  • \n
  • 404 Error Monitor for SEO – Monitor website 404 errors and set up proper SEO redirects to prevent losing SEO rankings.
  • \n
  • Title and Nofollow for SEO – We make it easy for you to add title and nofollow to external links to improve SEO rankings.
  • \n
\n

WordPress SEO Integrations

\n
    \n
  • WooCommerce SEO – optimize your WooCommerce product pages and improve your WooCommerce store’s SEO rankings.
  • \n
  • MemberPress SEO – optimize your MemberPress course pages and improve your membership site’s SEO rankings.
  • \n
  • Elementor SEO – add SEO optimization for your Elementor landing pages.
  • \n
  • LearnDash SEO – SEO optimization for LearnDash courses.
  • \n
  • Facebook SEO – SEO optimize your website preview on Facebook.
  • \n
  • Twitter SEO – SEO optimize your website preview on Twitter.
  • \n
  • Pinterest SEO – SEO optimize your website preview on Pinterest.
  • \n
  • Open Graph Support – improve your SEO with open graph meta data.
  • \n
  • Knowledge Panel SEO – improve website SEO apperance by adding social media profile links for Facebook, Twitter, Wikpedia, Instagram, LinkedIn, Yelp, YouTube, and more.
  • \n
  • SEO Webmaster Tool Content – Connect your WordPress site with various webmaster tools to improve SEO rankings.
  • \n
  • Semrush SEO integration – See additional SEO keywords and relevant SEO keyphrases with our Semrush SEO integration.
  • \n
\n

WordPress SEO Plugin Importer

\n
    \n
  • Yoast SEO Importer – easily switch from Yoast SEO to AIOSEO with our full SEO migration wizard that includes SEO keywords, SEO title, meta description, XML sitemaps and more.
  • \n
  • Yoast SEO Premium Importer – easily import Yoast SEO premium settings including SEO redirects to AIOSEO with our full SEO migration wizard.
  • \n
  • RankMath SEO Importer – easily switch from RankMath SEO to AIOSEO with our SEO migration wizard.
  • \n
  • SEO Settings Backup – create a backup of your AIOSEO settings.
  • \n
  • Advanced SEO Import / Export – easily import / export AIOSEO settings from one site to another.
  • \n
  • Redirection Importer – import your SEO redirects from the Redirection plugin with our SEO migration wizard.
  • \n
  • Simple 301 Redirects Importer – import your SEO redirects from Simple 301 redirets with our SEO migration wizard.
  • \n
  • Safe Redirection Manager – easily import SEO redirects from safe redirect manager with our SEO migration wizard.
  • \n
\n

After reading this feature list, you can probably imagine why AIOSEO is the best WordPress SEO plugin in the market.

\n

Give AIOSEO a try.

\n

Want to unlock more SEO features? Upgrade to AIOSEO Pro.

\n

Credits

\n

This plugin is created by Benjamin Rojas and Syed Balkhi.

\n

Branding Guideline

\n

AIOSEO® is a registered trademark of Semper Plugins LLC. When writing about the WordPress SEO plugin by AIOSEO, please use the following format.

\n
    \n
  • AIOSEO (correct)
  • \n
  • All in One SEO (correct)
  • \n
  • AIO SEO (incorrect)
  • \n
  • All in 1 SEO (incorrect)
  • \n
  • AISEO (incorrect)
  • \n
\n

What’s Next

\n

If you like our WordPress SEO plugin, then consider checking out our other projects:

\n
    \n
  • OptinMonster – Get More Email Subscribers with the most popular conversion optimization plugin for WordPress.
  • \n
  • WPForms – #1 drag & drop online form builder for WordPress.
  • \n
  • MonsterInsights – See the Stats that Matter and Grow Your Business with Confidence. Best Google Analytics Plugin for WordPress.
  • \n
  • SeedProd – Create beautiful landing pages with our powerful drag & drop landing page builder.
  • \n
  • WP Mail SMTP – Improve email deliverability for your contact form with the most popular SMTP plugin for WordPress.
  • \n
  • RafflePress – Best WordPress giveaway and contest plugin.
  • \n
  • Smash Balloon – #1 social feeds plugin for WordPress.
  • \n
  • SearchWP – advanced WordPress search plugin.
  • \n
  • PushEngage – best web push notification plugin.
  • \n
\n

Visit WPBeginner to learn from our WordPress Tutorials and find out about other best WordPress plugins.

\n","download_link":"https://downloads.wordpress.org/plugin/all-in-one-seo-pack.4.1.3.3.zip","tags":{"google-search-console":"google search console","meta-description":"meta description","schema":"schema","seo":"seo","xml-sitemap":"xml sitemap"},"donate_link":"","icons":{"1x":"https://ps.w.org/all-in-one-seo-pack/assets/icon.svg?rev=2443290","2x":"https://ps.w.org/all-in-one-seo-pack/assets/icon-256x256.png?rev=2443290","svg":"https://ps.w.org/all-in-one-seo-pack/assets/icon.svg?rev=2443290"},"wporg":true},{"name":"Translate WordPress – Weglot Translate","slug":"weglot","version":"3.3.6","author":"Weglot Translate team","author_profile":"https://profiles.wordpress.org/remyb92","requires":"4.5","tested":"5.8","requires_php":"5.6","rating":96,"ratings":{"1":39,"2":7,"3":6,"4":27,"5":1205},"num_ratings":1284,"support_threads":8,"support_threads_resolved":3,"active_installs":40000,"downloaded":1203485,"last_updated":"2021-08-18 2:44pm GMT","added":"2015-09-27","homepage":"http://wordpress.org/plugins/weglot/","short_description":"Translate your WordPress website in 110+ languages within minutes with Weglot Translate, without any coding.","description":"

Weglot Translate is the leading WordPress translation plugin, trusted by 60,000+ users worldwide. Translate your WordPress website into 110+ languages within minutes, no coding required.

\n

Increase visibility and boost conversions with ease by adding multilingual functionality. Weglot Translate is fully optimized for SEO, with every translated page automatically indexed by Google. Say hello in multiple languages to millions of new visitors.

\n

Make your website multilingual in minutes with a free trial. Visit https://weglot.com/ to learn more!

\n

How Weglot Translate works

\n\n

Why Weglot Translate

\n

It’s easy to install: Weglot Translate is quick to set up to have a multilingual WordPress website ready, instantly. Reach out to millions of new visitors worldwide with a few clicks, without any coding.

\n

It’s built for maximum compatibility: Weglot Translate is fully compatible with all platforms, WordPress themes, and plugins. From WooCommerce product descriptions to Elementor order forms, everything is translated into the languages of your choice. So you can focus on your content, not the technical details.

\n

It’s optimized for SEO: Weglot Translate follows Google’s best practices for multilingual website translation, serving all translated web pages with clean source code. Google will automatically index every translated page with dedicated URLs.

\n

It’s easy to set and forget: Weglot Translate automatically detects all your website content for easy translation. No more time-consuming manual duplication of every single line of content to get a multilingual website. All translations are updated in real-time, so you don’t need to worry about maintenance and any newly added content is automatically translated.

\n

It takes translation seriously: Weglot Translate gives you an edge on your translation tasks with the first layer of automatic translation provided by the best machine learning providers on the market (DeepL, Google, Microsoft, and Yandex). You can also edit the translations and collaborate with your team to work on translations together, directly within Weglot.

\n

It partners with the pros: Weglot Translate lets you order from vetted professional translators directly inside your Weglot dashboard. Set translation quality the way you want it to be, with Weglot Translate.

\n

“Within a week of translating our site to English with Weglot, international sales doubled, by the following month – they had quadrupled.”
\nClara Champion – Director of Digital and E-Commerce, Jimmy Fairly
\nRead the case study

\n

Multilingual functionality like no other

\n

Increase visibility: All translated pages are automatically indexed following Google’s best practices with dedicated URLs. Get new traffic with your multilingual website.

\n

Reduce bounce rate: Redirect visitors automatically to serve them in the language of their choice, based on their browser settings.

\n

Enhance user experience: From the landing page to the email confirmation, get all your key conversion steps translated in your customers’ language. You can even add different images and videos for various languages. Useful for images with text, Weglot Translate makes it easy to display “translated” images in your translated versions. Media localization is an essential aspect of any multilingual project and Weglot Translate makes it simple to do so.

\n

“We really loved the localization features provided by Weglot, such as the ability to translate images and other types of media depending on the language the visitor is viewing the site in.”
\nKim Martin – Senior Communications and Marketing Officer, The Challenge Initiative
\nRead the case study

\n

An all-in-one language translation platform

\n
    \n
  • Manage and edit all of your translations through a user-friendly interface.
  • \n
  • Collaborate with team members and trusted translators to translate together, directly inside Weglot.
  • \n
  • Is it a title? Is it a link? No more guessing the context of the text. Weglot Translate’s in-context editor lets you translate directly within the webpage.
  • \n
  • Make it your own. The language switcher is fully customizable for multiple design choices.
  • \n
  • Weglot Translate makes it easy to migrate from other WordPress multilingual plugins like Polylang or WPML. Simply deactivate your existing translation plugin and install Weglot Translate.
  • \n
\n

“Weglot removed the pain of having to manage multiple stores for multiple locales. The integration was easy, and the support is incredibly helpful. I highly recommend Weglot to anyone looking for a simple and cost-effective solution to translate their stores!”
\nMike Robertson – Director of Sales Operations, Nikon

\n

With an increase in site visitors and session duration thanks to your multilingual website, you can expect a massive boost to your conversions. See why thousands of e-commerce platforms, SaaS firms, marketplaces, corporate websites, and blogs worldwide love Weglot Translate. Try it today for free

\n","download_link":"https://downloads.wordpress.org/plugin/weglot.3.3.6.zip","tags":{"language":"language","localization":"localization","multilingual":"multilingual","translate":"translate","translation":"translation"},"donate_link":"","icons":{"1x":"https://ps.w.org/weglot/assets/icon-128x128.png?rev=2186774","2x":"https://ps.w.org/weglot/assets/icon-256x256.png?rev=2186774"},"wporg":true},{"name":"Rank Math SEO – Best SEO Plugin For WordPress To Increase Your SEO Traffic","slug":"seo-by-rank-math","version":"1.0.71.1","author":"Rank Math","author_profile":"https://profiles.wordpress.org/rankmath","requires":"5.6","tested":"5.8","requires_php":"7.2","rating":98,"ratings":{"1":68,"2":17,"3":20,"4":47,"5":3375},"num_ratings":3527,"support_threads":135,"support_threads_resolved":135,"active_installs":900000,"downloaded":19834078,"last_updated":"2021-09-03 7:13pm GMT","added":"2018-11-19","homepage":"https://s.rankmath.com/home","short_description":"Rank Math SEO is the Best WordPress SEO plugin combines the features of many SEO…","description":"

Rank Math SEO – Best SEO Plugin for WordPress
\n★★★★★

\n

SEO is the most consistent source of traffic for any website. We created Rank Math SEO, a WordPress SEO plugin, to help every website owner get access to the SEO tools they need to improve their SEO and attract more traffic to their website.

\n

Try The Demo

\n\n

Features | Why Choose Rank Math SEO? | Compare | Screenshots | Benefits

\n

SEO might be the best and most consistent source of traffic for one’s website, but it’s not without its quirks. The constant process of optimizing your posts can sometimes take more time than actually writing the content. If you always feel that you can do more on the SEO front for your website but don’t have the time, then Rank Math SEO is what you’re looking for.

\n

Its host of intelligent features brings top SEO capabilities in your hands that were previously out of reach. The smart automation features give you the power of an entire SEO team with just a few clicks. A well thought out design, powerful features, and years of development by the MyThemeShop squad make Rank Math SEO a game-changing SEO plugin that will level the SEO playing field in your favor to help increase traffic.

\n

Rank Math SEO beats all of its competitors, hands down.

\n

See the features which are exclusive to the Rank Math SEO plugin and understand why Rank Math SEO is possibly the Best SEO Plugin for WordPress.

\n
    \n
  • \n

    Setup Wizard (Easy to follow)
    \nRank Math SEO practically configures itself. Rank Math SEO features a step-by-step installation and configuration wizard that sets up SEO for WordPress perfectly.

    \n
  • \n
  • \n

    Google Schema Markup aka Rich Snippets Integrated
    \nConfiguring Google Schema Markup, aka Rich Snippets, is now easy, thanks to Rank Math SEO. With support for 16+ types of Schema Markups, aka Rich Snippets, including the Rating Schema, you’ll be able to optimize your posts in just a few clicks. It also includes the FAQ Schema aka FAQPage Schema Block & the HowTo aka How To Schema Block in the plugin.

    \n
  • \n
  • \n

    Optimize Unlimited Keywords
    \nUnlike other plugins, Rank Math SEO lets you optimize your posts for unlimited focus keywords per post. 5 by default. Increase by adding this filter.

    \n
  • \n
  • \n

    Google Search Console Integration
    \nRank Math SEO saves you a ton of time by integrating with Google Search Console and displaying important information about your website right inside WordPress.

    \n
  • \n
  • \n

    Google Keyword Ranking
    \nWith Rank Math SEO Plugin, you can track your keyword rankings in Google.

    \n
  • \n
  • \n

    Google Analytics Integration
    \nRank Math SEO offers a one-click solution to install Google Analytics script without pasting anything manually anywhere. You can also exclude the Logged-in users.

    \n
  • \n
  • \n

    Optimal Settings Pre-Selected
    \nConfiguring an SEO plugin takes time, and can be confusing. Rank Math SEO saves you the trouble with its optimal default settings, which are ideal for most websites, and if needed, can be changed.

    \n
  • \n
  • \n

    LSI Keyword Tool Integrated
    \nRank Math SEO’s integrated LSI keyword tool gives you multiple keyword variations of your focus keyword, which helps you attract more traffic to your posts. Free account needed.

    \n
  • \n
  • \n

    Add Overlay Icons On Social Images
    \nRank Math SEO makes social thumbnails click magnets by giving you the option of overlaying a GIF or a video icon on the thumbnail.

    \n
  • \n
  • \n

    Advanced SEO Analysis Tool
    \nWith just a single click, Rank Math SEO can perform an SEO audit of your website.

    \n
  • \n
  • \n

    30 Detailed SEO Tests
    \nRank Math SEO is designed to completely supercharge your website’s SEO with its 30 detailed SEO tests. Free account needed.

    \n
  • \n
  • \n

    Module Based System
    \nRank Math SEO has been designed with a module-based system, each of which can be enabled or disabled as per your needs, giving you extra speed and control.

    \n
  • \n
  • \n

    Smart Redirection Manager
    \nRank Math SEO’s built-in smart redirection manager will help you create, manage, delete, enable, or disable redirects at scale.

    \n
  • \n
  • \n

    Local Business SEO
    \nRank Math SEO is designed to be used by Global websites and local websites alike. With its local SEO features, local sites can stand out in the search engine results like Google’s and attract more traffic.

    \n
  • \n
  • \n

    SEO Optimized Breadcrumbs
    \nRank Math SEO can display SEO optimized Breadcrumbs on all websites, even if the theme doesn’t support Schema.org coding.

    \n
  • \n
  • \n

    404 Monitor
    \nRank Math SEO has a built-in 404 error monitor that helps you find and resolve 404 errors for a better user experience.

    \n
  • \n
  • \n

    Deep Content Analysis Tests
    \nOn-Page SEO is no longer a mystery with Rank Math SEO’s deep content analysis and precise SEO recommendations.

    \n
  • \n
  • \n

    Internal Linking Suggestions
    \nRank Math SEO intelligently suggests other posts from your website for internal linking from your current posts, improving the chances of ranking higher in the SERPs.

    \n
  • \n
  • \n

    Role Manager
    \nEven if you have multiple employees manage your website, you can precisely control what each of them has to access to in Rank Math SEO with its role manager.

    \n
  • \n
  • \n

    Multisite Ready
    \nWhether you run a single WordPress website or an entire network of sites – we are ready for you. Rank Math SEO fully supports the WordPress Multiuser project (WPMU).

    \n
  • \n
  • \n

    and has lightweight Code compared to slow-loading in other SEO plugins.
    \nEven with significantly more features than other plugins, Rank Math SEO loads amazingly fast and keeps your website fast always.

    \n
  • \n
\n

Why is Rank Math SEO such a game-changer?

\n
    \n
  • \n

    Auto Configuration — All you have to do is set a few options, and Rank Math SEO will configure itself perfectly for your website.

    \n
  • \n
  • \n

    Super Fast SEO Plugin — Even after packing so many features, Rank Math SEO has a negligible load on your server, thus making it one of the fastest SEO plugins for WordPress.

    \n
  • \n
  • \n

    Automatic Keyword Suggestions from Google — Get keyword suggestions from Google as you start typing letters in the focus keyword field of Rank Math SEO.

    \n
  • \n
  • \n

    New SEO Analyzer — Rank Math SEO’s built-in SEO analysis will give you SEO recommendations that you’d normally spend hundreds of dollars to get.

    \n
  • \n
  • \n

    Elementor SEO – Deep integration with the Elementor Page builder. Now, you don’t need to go back and forth between tabs to configure your page’s SEO. Everything related to SEO for Elementor can be configured in the visual editor.

    \n
  • \n
  • \n

    Divi SEO – One of its kind integration with the Divi Page Builder and theme. Handle everything related to SEO from the page editor screen without jumping back to the default editor. This helps you optimize your website in real-time for SEO.

    \n
  • \n
  • \n

    Page Builder SEO – The Rank Math SEO plugin’s content analysis works perfectly with popular page builders and themes like Oxygen Builder, WPBakery, Avada, Astra, Kadence, Themify, Beaver Builder, Page Builder Framework, Schema theme, Flothemes, OceanWP, etc.

    \n
  • \n
  • \n

    Optimize UNLIMITED Keywords At Once — You can optimize your post for up to 5 different keywords by default with the Rank Math SEO plugin and can use a filter to optimize for unlimited keywords.

    \n
  • \n
  • \n

    Image SEO – With Rank Math SEO’s perfect solution to add ALT & Title tags on the fly, to optimize images, showing inside the content, and that too for FREE, there is no reason to choose any other SEO solution that does not provide all the essential SEO features.

    \n
  • \n
  • \n

    Web Stories SEO – Make any Story created with the Google’s Web Stories plugin SEO-Ready. Automatically adds AMP-friendly Schema markup and Meta tags.

    \n
  • \n
  • \n

    WooCommerce SEO – Optimizing your store products is easier with Rank Math. SEO Meta tags and Schema are automatically added but can be customized with total control as well. Rank Math SEO has the most advanced SEO for WooCommerce.

    \n
  • \n
  • \n

    Google AMP SEO – Accelerated Mobile Pages need to be prepared for search engines. What better way to do that than letting Rank Math SEO use your regular SEO details and optimizing AMPs based on that data?

    \n
  • \n
  • \n

    bbPress SEO – User-generated content in bbPress is properly optimized with Rank Math handling all the important SEO aspects. Q&A Schema is added to bbPress topics along with other essential meta tags.

    \n
  • \n
  • \n

    BuddyPress SEO – As with bbPress, SEO for BuddyPress content is done automatically done using Rank Math. You get all the options you need to get higher rankings with your user-generated content.

    \n
  • \n
  • \n

    Quick Edit SEO Details – Go through a lot of posts/pages quickly by ensuring they are optimized for search engines. Quickly edit multiple SEO fields at once using Rank Math SEO.

    \n
  • \n
  • \n

    Instant Indexing for Bing – Get your content instantly indexed by Bing. Enter a few key details and you are all set and ready to go.

    \n
  • \n
  • \n

    Instant Indexing for Google – Instantly getting indexed by Google used to be reserved to huge brands and large websites. Not anymore. Just about anyone can take advantage of Google’s Instant Indexing feature using Rank Math SEO.

    \n
  • \n
  • \n

    Version Control – Rollback or try beta versions. Updating and downgrading your plugins is now a matter of few clicks. Automatically update to the latest versions or try out the latest beta builds.

    \n
  • \n
  • \n

    Translation Plugins Support — Rank Math SEO works flawlessly with the top translations plugins like WPML, TranslatePress, Weglot, Polylang (not entirely compatible yet), etc., making it a perfect companion.

    \n
  • \n
  • \n

    XML Sitemap – The Rank Math SEO plugin comes with a fast-loading Sitemap feature that works with different post types, including the custom ones, and provides deep controlling. One can also generate a Locations KML file via filter for Local Sitemap, & a WooCommerce Sitemap.

    \n
  • \n
  • \n

    1-Click Import From Yoast — With a single click of your mouse, Rank Math SEO can import all your settings from Yoast SEO & Yoast SEO Premium to itself. The transfer is instant, and you don’t lose any SERP rankings as a result.

    \n
  • \n
  • \n

    1-Click Import From AIO SEO — Rank Math SEO can also import all your settings from AIO SEO & All in One SEO Pack Pro in a single click. The transfer is instant, and you don’t lose any SERP rankings as a result.

    \n
  • \n
  • \n

    1-Click Import From All In One Schema Rich Snippets — Rank Math SEO can also import all of AIO’s Rich Snippet & Schema Pro settings in a few clicks, which help preserve your rich rankings when moving to Rank Math SEO.

    \n
  • \n
  • \n

    1-Click Import From SEOPress SEO — With a single click of your mouse, Rank Math SEO can import all your settings from SEOPress & SEOPress Pro SEO plugin to itself. The transfer is instant, and you don’t lose any SERP rankings as a result.

    \n
  • \n
  • \n

    1-Click Import From Redirection — Moving all your redirects shouldn’t be a hassle. That’s why we have made importing redirections from the popular Redirection plugin as simple as clicking a button.

    \n
  • \n
  • \n

    Google Keyword Suggestion — When deciding on focus keywords, Rank Math SEO can help you discover more keywords by pulling in automatic keyword suggestions from Google.

    \n
  • \n
\n

Who Can Benefit From Rank Math SEO?

\n

Rank Math SEO Plugin is perfect for:

\n

✔ Bloggers
\n✔ eCommerce Store Owners
\n✔ Niche Sites
\n✔ Businesses
\n✔ Local Businesses
\n✔ Startups
\n✔ The Real Estate
\n✔ Artists & Photographers
\n✔ The Solution Offerer
\n✔ Directories
\n✔ Vloggers (Video Bloggers)
\n✔ Or any WordPress Website

\n

Take a sneak peek into Rank Math SEO’s features

\n

Detailed Setup Tutorial

\n\n

List of Best Rank Math SEO Features

\n
    \n
  • Clean, & Simple User Interface
  • \n
  • Optimal Settings Pre-Selected
  • \n
  • Simple Setup Wizard\n
      \n
    • Compatibility Check
    • \n
    \n
  • \n
  • Auto Canonical URLs
  • \n
  • LSI Keyword Tool Integrated
  • \n
  • Google Search Console Integration
  • \n
  • Google Keyword Ranking
  • \n
  • Import Other Plugin Settings\n
      \n
    • 1 Click Import From Yoast SEO Plugin
    • \n
    • 1 Click Import From AIO SEO
    • \n
    • 1 Click Import From SEOPress & SEOPress Pro
    • \n
    • 1 Click Import From All In One Schema Rich Snippets & Schema Pro
    • \n
    • 1 Click Import From Redirection Plugin
    • \n
    \n
  • \n
  • Role Manager
  • \n
  • ACF Support
  • \n
  • AMP Ready
  • \n
  • bbPress & BuddyPress Modules
  • \n
  • Google Schema Markup Integrated\n
      \n
    • Article Rich Snippet
    • \n
    • Review Rich Snippet
    • \n
    • Book Rich Snippet
    • \n
    • Course Rich Snippet
    • \n
    • Event Rich Snippet
    • \n
    • Job Posting Rich Snippet
    • \n
    • Local Business Rich Snippet
    • \n
    • 193 Local Business Types
    • \n
    • Music Rich Snippet
    • \n
    • Person Rich Snippet
    • \n
    • Product Rich Snippet
    • \n
    • Recipe Rich Snippet
    • \n
    • Restaurant Rich Snippet
    • \n
    • Service Rich Snippet
    • \n
    • Software Application Rich Snippet
    • \n
    • Video Rich Snippet
    • \n
    • Author Stay Rating
    • \n
    \n
  • \n
  • Social Media Optimization\n
      \n
    • Add Overlay Icons On Social Images
    • \n
    • Default OpenGraph Thumbnail
    • \n
    • Auto Facebook Open Graph
    • \n
    • Facebook Authorship
    • \n
    • Facebook Open Graph for Homepage
    • \n
    • Automatic Twitter Meta Cards
    • \n
    • Twitter Card for Homepage
    • \n
    • Default Twitter Card Type
    • \n
    • Social Previews
    • \n
    \n
  • \n
  • Add Knowledge Graph\n
      \n
    • Represent site as a Person
    • \n
    • Represent site as a Company
    • \n
    • Set a Site Logo
    • \n
    \n
  • \n
  • Advanced SEO Analysis Tool\n
      \n
    • 30 Detailed SEO Tests
    • \n
    • SEO Analysis Score
    • \n
    \n
  • \n
  • Automated Image SEO
  • \n
  • Powerful Post Optimization\n
      \n
    • Add SEO Meta Box to all post types
    • \n
    • Bulk Edit Titles & Descriptions
    • \n
    • Post Preview on Google
    • \n
    • Content Analysis
    • \n
    • Control SEO For Single Pages
    • \n
    • Control The Title
    • \n
    • Control Meta Description
    • \n
    • Auto Add Additional Meta Data
    • \n
    • Control ROBOTS Meta
    • \n
    • Choose a Primary Category
    • \n
    \n
  • \n
  • Single Post/page Optimization\n
      \n
    • Focus Keyword
    • \n
    • Google Keyword Suggestion
    • \n
    • Optimize UNLIMITED Keywords (5 by default)
    • \n
    • Choose Pillar Posts & Pages
    • \n
    • Internal Linking Suggestions
    • \n
    • Capitalize Titles
    • \n
    • SEO Failed Tests
    • \n
    • SEO Warnings
    • \n
    \n
  • \n
  • XML Sitemap (New!)
  • \n
  • Module Based System
  • \n
  • Choose Any Separator Character
  • \n
  • Modify Global Meta
  • \n
  • Search Engine Verification Tools\n
      \n
    • Bing Site Verification
    • \n
    • Baidu Site Verification
    • \n
    • Alexa Site Verification
    • \n
    • Yandex Site Verification
    • \n
    • Google Site Verification
    • \n
    • Pinterest Site Verification
    • \n
    • Norton Safe Web Site Verification
    • \n
    \n
  • \n
  • Advanced Redirection Manager\n
      \n
    • Smart & Automatic Post Redirects
    • \n
    • 301 Redirection Type
    • \n
    • 302 Redirection Type
    • \n
    • 307 Redirection Type
    • \n
    • 410 Redirection Type
    • \n
    • 451 Redirection Type
    • \n
    • Support for REGEX
    • \n
    • Debug Redirections
    • \n
    \n
  • \n
  • Simple 404 Monitor\n
      \n
    • Advanced 404 Monitor
    • \n
    \n
  • \n
  • Advanced SEO Breadcrumbs\n
      \n
    • Auto Show SEO Breadcrumbs
    • \n
    \n
  • \n
  • Advanced Link Options\n
      \n
    • Nofollow All External Image Links
    • \n
    • Nofollow All External Links
    • \n
    • Open External Links in New Tab/Window
    • \n
    • Redirect Attachments to Parent
    • \n
    • Strip Category Base
    • \n
    \n
  • \n
  • Remove Stopwords from Permalinks
  • \n
  • Ping Search Engines
  • \n
  • Local SEO Optimization\n
      \n
    • Contact Info Shortcode
    • \n
    \n
  • \n
  • Deep Support For WooCommerce SEO
  • \n
  • Compatible for EDD SEO (Easy Digital Downloads SEO)
  • \n
  • Only 30k Lines of Code\n
      \n
    • PSR-4 Coding Standards (wherever possible)
    • \n
    \n
  • \n
  • Optimize Different Archives\n
      \n
    • Optimize Author Archive Pages
    • \n
    • Optimize Date Archive Pages
    • \n
    • Optimize Archive Pages
    • \n
    \n
  • \n
  • .htaccess Editor
  • \n
  • Robots.txt Editor
  • \n
  • Import/Export Settings
  • \n
  • Import/Export Redirections
  • \n
  • Add Content Before the RSS Feed
  • \n
  • Add Content After the RSS Feed
  • \n
  • Detailed Documentation\n
      \n
    • Contextual Help
    • \n
    \n
  • \n
\n

BIG Publications are Raving About Rank Math SEO

\n

Rank Math SEO Reviews

\n\n\n

Rank Math SEO Review – Why I Ditched Yoast For Rank Math SEO

\n

Rank Math SEO on Product Hunt

\n

Rank Math SEO Plugin Review from an SEO Consultant

\n

and many more

\n

Check RANK MATH PRO WHICH MAKES SEO EASIER & FASTER

\n\n

FREE VS PRO COMPARISON

\n

UNIQUE FEATURES OF RANK MATH PRO

\n

Google Analytics & Search Console Integration (The only SEO plugin that provides it)
\n✔ Integrated Google Analytics, AdSense & Search Console Data
\n✔ Analyze SEO Performance of Each Post & Page
\n✔ See Top Winning/Losing Posts & Keywords
\n✔ Keep Track of Position History
\n✔ Rank Tracker for Important Keywords

\n

Schema aka Structured Data aka Rich Snippets. The BEST Schema Generator Available Online
\n✔ 20+ Pre-defined Schema types (more than any other plugin) –
\n✔ Import Schema from Other Websites
\n✔ Advanced Schema Builder [Advanced SEOs can use this to create any complex Schema Markup)
\n✔ Schema Templates for Automation
\n✔ Conditional Schema Markup
\n✔ Inbuilt Schema Code Preview and Validation
\n✔ Multiple Location Schema On Any Page (using the Shortcode)

\n

Automation At Its BEST
\n✔ Automated Image SEO
\n✔ Advanced Filtering for Images [https://i.rankmath.com/zAUHHP]
\n✔ Watermark Your images
\n✔ Advanced Post filtering
\n✔ Bulk Actions [index, noindex, redirect, etc.]
\n✔ Quick Edit SEO Details
\n✔ Bulk Import SEO Meta Details Using CSV file
\n✔ Auto Detect Videos and Generate Schema Markup for Them
\n✔ Auto Fetch Thumbnail, Duration of YouTube & Vimeo Videos
\n✔ Automatically Flush Facebook Thumbnails
\n✔ Open External Links in New Tabs
\n✔ Nofollow External Links
\n✔ Noindex Paginated, Archive, Search Result Pages
\n✔ Instant Indexing for Bing [Also Google using our Instant Indexing Plugin]

\n

WooCommerce SEO
\n✔ Automatic Schema for WooCommerce Products
\n✔ Advanced Open Graph Tags for WooCommerce Products
\n✔ Automatic NoIndex Hidden Products
\n✔ Remove WooCommerce Product and Category Base
\n✔ Add Custom Brands to Products
\n✔ Add Global Identifier Like GTIN/MPN – Even to Variations

\n

Workflow Improvements
\n✔ Internal Role Manager
\n✔ Inbuilt Google Trends Insights
\n✔ Site Audit with 29 Unique Tests
\n✔ Import Redirections Using CSV File
\n✔ Categorize Redirections for Grouping
\n✔ One-Click Redirection for 404s
\n✔ Monitor Search Performance of Entire Portfolio
\n✔ Easy and Advanced Mode

\n

Miscellaneous
\n✔ Supports bbPress and BuddyPress SEO
\n✔ Version Control – Rollback or Try Beta Versions

\n

MANY MORE FEATURES
\n✔ PREMIUM 24x7x365 Dedicated Support Managers
\n✔ MOST COMPETITIVE PRICING EVER!

\n

CHEK ALL THE PREMIUM FEATURES AND PRICING HERE

\n

CONNECT WITH THE TEAM AND SEO EXPERTS

\n

JOIN FACEBOOK GROUP COMMUNITY: The purpose of this Facebook group is to have a collective place where the community can help each other, and we can get some feedback to improve Rank Math SEO as well. Joining the group is also a great way to connect with like-minded people and share your SEO experience.

\n

Branding Guideline

\n

Rank Math SEO® is a registered trademark. Please use the following format when mentioning the Rank Math SEO plugin anywhere.
\n* Rank Math SEO [correct]
\n* Rank Math SEO [incorrect]
\n* Rank Math SEO [incorrect]
\n* Rank Math SEO [incorrect]
\n* RankMath [incorrect]
\n* Rankmath [incorrect]
\n* rankmath [incorrect]
\n* rankMath [incorrect]

\n

Getting Started:

\n

1. How to Setup Rank Math SEO: Once you install Rank Math SEO for the first time, you will be greeted with the Setup Wizard, which is discussed in detail here.

\n

2. Facebook Group: In this group, you will find the team of Rank Math SEO plugin fairly active and ready to answer your SEO related queries.

\n

3. User Documentation: Although Rank Math SEO is already easy to set up, we’ve put together tutorials, guides, and some knowledge bases to help you set up and get started with Rank Math SEO.

\n

4. Contribute (Sharing is caring): If you are one of those caring hearts that want to help, go to our Rank Math SEO’s GitHub Repository and see how you can contribute to the SEO community. You can also add a new language via translate.wordpress.org.

\n

5. Fixing Common Errors: Sometimes, avoidable or common issues can get you stuck. We’ve created a common guide where we discuss all the common issues and how to fix them.

\n

6. Support Ticket Forum: Our dedicated forum is where you can get support for any issues that you face with Rank Math SEO. In the forum, we’ll also try to answer some SEO queries. User experience is important to us, and our aim is to answer all the queries on the forum in a timely manner.

\n

7. Frequently Asked Questions: Here, we’ve answered the most commonly asked questions about Rank Math SEO. The questions are related to features, pricing, and others.

\n","download_link":"https://downloads.wordpress.org/plugin/seo-by-rank-math.1.0.71.1.zip","tags":{"google-search-console":"google search console","redirection":"redirection","schema":"schema","seo":"seo","sitemap":"sitemap"},"donate_link":"","icons":{"1x":"https://ps.w.org/seo-by-rank-math/assets/icon.svg?rev=2348086","2x":"https://ps.w.org/seo-by-rank-math/assets/icon-256x256.png?rev=2348086","svg":"https://ps.w.org/seo-by-rank-math/assets/icon.svg?rev=2348086"},"wporg":true},{"name":"Head, Footer and Post Injections","slug":"header-footer","version":"3.2.2","author":"Stefano Lissa","author_profile":"https://profiles.wordpress.org/satollo","requires":"4.0","tested":"5.7.2","requires_php":"5.6","rating":98,"ratings":{"1":3,"2":2,"3":4,"4":13,"5":620},"num_ratings":642,"support_threads":1,"support_threads_resolved":0,"active_installs":300000,"downloaded":2774752,"last_updated":"2021-03-17 1:26pm GMT","added":"2008-04-07","homepage":"https://www.satollo.net/plugins/header-footer","short_description":"Header and Footer plugin let you to add html code to the head and footer sections of your blog... and more!","description":"

About WordPress SEO and Facebook Open Graph: I was very unpleased by Yoast invitation to
\nremove my plugin, and it’s not the case.
\nRead more here.

\n

Head and Footer Codes

\n

Why you have to install 10 plugins to add Google Analytics, Facebook Pixel, custom
\ntracking code, Google DFP code, Google Webmaster/Alexa/Bing/Tradedoubler verification code and so on…

\n

With Header and Footer plugin you can just copy the code those services give you
\nin a centralized point to manage them all. And theme independent: you can change your theme
\nwithout loosing the code injected!

\n

Injection points and features

\n
    \n
  • in the page section where most if the codes are usually added
  • \n
  • just after the tag as required by some JavaScript SDK (like Facebook)
  • \n
  • in the page footer (just before the tag)
  • \n
  • recognize and execute PHP code to add logic to your injections
  • \n
  • distinct desktop and mobile injections
  • \n
\n

AMP

\n

A new AMP dedicated section compatible with AMP plugin lets you to inject specific codes in
\nAMP pages. Should be ok even with other AMP plugins.

\n

Post Top and Bottom Codes

\n

Do you need to inject a banner over the post content or after it? No problem. With Header and
\nFooter you can:

\n
    \n
  • Add codes on top, bottom and in the middle of posts and pages
  • \n
  • Differentiate between mobile and desktop (you don’t display the same ad format on both, true?)
  • \n
  • Separate post and page configuration
  • \n
  • Native PHP code enabled
  • \n
  • Shortcodes enabled
  • \n
\n

Special Injections

\n
    \n
  • Just after the opening BODY tag
  • \n
  • In the middle of post content (using configurable rules)
  • \n
  • Everywhere on template (using placeholders)
  • \n
\n

bbPress

\n

The specific bbPress injections are going to be removed. Switch to my
\nAds for bbPress, which is more flexible and complete.

\n

Limits

\n

This plugin cannot change the menu or the footer layout, those features must be covered by your theme!

\n

Official page: Header and Footer.

\n

Other plugins by Stefano Lissa:

\n\n

Translation

\n

You can contribute to translate this plugin in your language on WordPress Translate

\n

Privacy and GDPR

\n

This plugin does not collect or process any personal user data.

\n","download_link":"https://downloads.wordpress.org/plugin/header-footer.3.2.2.zip","tags":{"blog":"blog","footer":"footer","header":"header","page":"page","single":"single"},"donate_link":"http://www.satollo.net/donations","icons":{"1x":"https://ps.w.org/header-footer/assets/icon-256x256.png?rev=1064219","2x":"https://ps.w.org/header-footer/assets/icon-256x256.png?rev=1064219"},"wporg":true},{"name":"WP Rocket","slug":"wp-rocket","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://wp-rocket.me/","short_description":"

Powerful caching to speed up your WordPress website in a few clicks. No coding required.

\n","description":"\n\n\n

Powerful caching to speed up your WordPress website in a few clicks. No coding required.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2020/06/WP-Rocket-285x160.png","2x":"https://amp-wp.org/wp-content/uploads/2020/06/WP-Rocket-372x209.png","svg":""},"wporg":false},{"name":"Statify","slug":"statify","version":"1.8.3","author":"pluginkollektiv","author_profile":"https://profiles.wordpress.org/pluginkollektiv","requires":"4.7","tested":"5.8","requires_php":"5.2","rating":94,"ratings":{"1":2,"2":0,"3":0,"4":3,"5":33},"num_ratings":38,"support_threads":3,"support_threads_resolved":1,"active_installs":200000,"downloaded":1497393,"last_updated":"2021-07-17 8:46am GMT","added":"2011-03-16","homepage":"https://statify.pluginkollektiv.org/","short_description":"Visitor statistics for WordPress with focus on data protection, transparency and clarity. Perfect as a widget in your WordPress Dashboard.","description":"

Statify provides a straightforward and compact access to the number of site views. It is privacy-friendly as it uses neither cookies nor a third party.

\n

An interactive chart is followed by lists of the most common reference sources and target pages. The period of statistics and length of lists can be set directly in the dashboard widget.

\n

Data Privacy

\n

In direct comparison to statistics services such as Google Analytics, WordPress.com Stats and Matomo (Piwik) Statify doesn’t process and store personal data as e.g. IP addresses – Statify counts site views, not visitors.

\n

Absolute privacy compliance coupled with transparent procedures: A locally in WordPress created database table consists of only four fields (ID, date, source, target) and can be viewed at any time, cleaned up and cleared by the administrator.

\n

Due to this tracking approach, Statify is 100% compliant with GDPR and serves as an lightweight alternative to other tracking services.

\n

Display of the widget

\n

The plugin configuration can be changed directly in the Statify Widget on the dashboard by clicking the Configure link.

\n

The amount of links shown in the Statify Widget can be set as well as the option to only count views from today. Of course, older entries are not deleted when changing this setting.

\n

The statistics for the dashboard widget are cached for four minutes.

\n

Period of data saving

\n

Statify stores the data only for a limited period (default: two weeks), longer intervals can be selected as option in the widget. Data which is older than the selected period is deleted by a daily cron job.

\n

An increase in the database volume can be expected because all statistic values are collected and managed in the local WordPress database (especially if you increase the period of data saving).

\n

JavaScript tracking for caching compatibility

\n

For compatibility with caching plugins like Cachify Statify offers an optional switchable tracking via JavaScript. This function allows reliable count of cached blog pages.

\n

For this to work correctly, the active theme has to call wp_footer(), typically in a file named footer.php.

\n

Skip tracking for spam referrers

\n

The comment blacklist can be enabled to skip tracking for views with a referrer URL listed in comment blacklist, i. e. which considered as spam.

\n

Support

\n

If you’ve problems or think you’ve found a bug (e.g. you’re experiencing unexpected behavior), please post at the support forums.

\n

Contribute

\n
    \n
  • Active development of this plugin is handled on GitHub.
  • \n
  • Pull requests for documented bugs are highly appreciated.
  • \n
  • If you want to help us translate this plugin you can do so on WordPress Translate.
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/statify.1.8.3.zip","tags":{"analytics":"analytics","dashboard":"dashboard","pageviews":"pageviews","privacy":"privacy","statistics":"statistics"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=TD4AMD2D8EMZW","icons":{"1x":"https://ps.w.org/statify/assets/icon-128x128.png?rev=2355063","2x":"https://ps.w.org/statify/assets/icon-256x256.png?rev=2355063"},"wporg":true},{"name":"LIQUID BLOCKS GALLERY 37+ Free Designs","slug":"liquid-blocks","version":"1.1.1","author":"LIQUID DESIGN Ltd.","author_profile":"https://profiles.wordpress.org/lqd","requires":"5.2","tested":"5.8","requires_php":false,"rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"num_ratings":1,"support_threads":1,"support_threads_resolved":0,"active_installs":4000,"downloaded":20012,"last_updated":"2021-07-22 6:55am GMT","added":"2019-10-18","homepage":"https://lqd.jp/wp/plugin.html","short_description":"If you’re looking to create block page sections that look great give LIQUID BLOCKS a…","description":"

If you’re looking to create block page sections that look great give LIQUID BLOCKS a try.

\n

In Gutenberg Block Template & Design Gallery, Just select your favorite design. Instantly create page section elements. Like a very simple page builder.

\n

You can manage Block Pattern. (WordPress 5.5+)
\nFully compatible with Gutenberg and themes and AMP.
\nlatest information on LIQUID PRESS.

\n

\n

Design Gallery

\n

Carefully selected 37+ Free Designs.
\n* Headlines
\n* Layouts (Q&A, Ranking, Column, Step, Fluid Shape.)
\n* Price list
\n* CTA
\n* Landing pages
\n* Block Patterns (You can register.)

\n

Toolbar

\n

Add to RichText Toolbar.
\n* Mark
\n* Underline
\n* Big
\n* Small

\n","download_link":"https://downloads.wordpress.org/plugin/liquid-blocks.zip","tags":{"block":"block","block-editor":"block-editor","blocks":"blocks","editor":"editor","gutenberg":"gutenberg"},"donate_link":"https://lqd.jp/wp/plugin.html","icons":{"1x":"https://ps.w.org/liquid-blocks/assets/icon-128x128.png?rev=2175390"},"wporg":true},{"name":"Schema","slug":"schema","version":"1.7.9.2","author":"Hesham","author_profile":"https://profiles.wordpress.org/hishaman","requires":"4.0","tested":"5.7.2","requires_php":"5.4","rating":90,"ratings":{"1":15,"2":6,"3":4,"4":8,"5":162},"num_ratings":195,"support_threads":3,"support_threads_resolved":0,"active_installs":60000,"downloaded":1082972,"last_updated":"2021-05-19 2:51pm GMT","added":"2016-05-11","homepage":"https://schema.press","short_description":"Get the next generation of Schema Structured Data to enhance your WordPress site presentation in Google search results.","description":"

Like Schema plugin? Consider leaving a 5 star review.

\n

Super fast, light-weight plugin for adding schema.org structured data markup in recommended JSON-LD format automatically to WordPress sites.

\n

Enhanced Presentation in Search Results By including structured data appropriate to your content, your site can enhance its search results and presentation.

\n

Check out the Plugin Homepage for more info and documentation.

\n

What is Schema markup?

\n

Schema markup is code (semantic vocabulary) that you put on your website to help the search engines return more informative results for users. So, Schema is not just for SEO reasons, it’s also for the benefit of the searcher.

\n

Schema.org Structured Data Demo & Examples

\n\n

Schema Key Features

\n
    \n
  • Easy to use, set it and forget it, with minimal settings.
  • \n
  • [Premium] Support for different schema.org types.
  • \n
  • Enable Schema types at once per post type or post category.
  • \n
  • [Premium] Enable Schema types anywhere you want on your site content.
  • \n
  • [Premium] Customize source data of schema.org properties.
  • \n
  • Valid markup, test it in Google Structured Data Testing Tool.
  • \n
  • Output JSON-LD format, the most recommended by Google.
  • \n
  • Reuse data saved in post meta, which is created by other plugins.
  • \n
  • Extensible, means you can extend its functionality via other plugins, extensions or within your Theme’s functions.php file.
  • \n
\n
\n

Note: some features are Premium. Which means you need Schema Premium to have those features. Get Schema Premium here!

\n
\n

Free vs Premium

\n
\n

See: a Free vs Premium comparison.

\n
\n

Free Plugin Extensions

\n
    \n
  • Schema Review: Extend Schema functionality by adding review and rating Structured Data functionality for Editors and Authors.
  • \n
  • Schema Default Image: Add ability to set a default WordPress Featured image for schema.org markup.
  • \n
\n

Premium Plugin Extensions

\n\n

Supported Google/Schema Markups

\n\n

Supported Schema.org Types

\n\n

Premium Supported Schema.org Types

\n
\n

Schema Premium has additional support for schema.org types, including:

\n
\n\n

Schema.org Markup Examples

\n

View our Live Structured Data Demo examples.

\n

Supported Plugins

\n

Schema plugin integrates and/or play nicely with (not necessarily a full integration):

\n
    \n
  • Yoast SEO
  • \n
  • AMP plugin (Automattic’s Accelerated Mobile Pages)
  • \n
  • Accelerated Mobile Pages – AMP for WP
  • \n
  • WPRichSnippets
  • \n
  • The SEO Framework
  • \n
  • WPBakery Page Builder
  • \n
  • ThirstyAffiliates
  • \n
  • [Premium] WooCommerce: Schema for WooCommerce extension.
  • \n
  • Easy Digital Downloads (EDD)
  • \n
\n

Supported Themes

\n

The plugin should work fine with any well coded WordPress theme, however these themes were tested and works properly with the plugin.

\n
    \n
  • Genesis 2.x
  • \n
  • Thesis 2.x
  • \n
  • Divi
  • \n
\n

Premium support

\n

schema.press team does not always provide active support for the Schema plugin on the WordPress.org forums, as we prioritize our email support. One-on-one email support is available to people who bought Schema Premium only.

\n

Note that the premium Schema Plugin also has several extra features too, including the option to enable more schema.org types, set content location target for markup, and map schema.org properties, so it is well worth your investment!

\n

Developers?

\n

Feel free to fork the project on GitHub and submit your contributions via pull request.

\n","download_link":"https://downloads.wordpress.org/plugin/schema.zip","tags":{"json-ld":"JSON-LD","rich-snippets":"rich snippets","schema":"schema","schema-org":"schema.org","structured-data":"structured data"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=NGVUBT2QXN7YL","icons":{"1x":"https://ps.w.org/schema/assets/icon-128x128.png?rev=1750172","2x":"https://ps.w.org/schema/assets/icon-256x256.png?rev=1750173"},"wporg":true},{"name":"Iframely – rich media embeds for 2000+ publishers","slug":"iframely","version":"0.7.2","author":"Itteco Corp.","author_profile":"https://profiles.wordpress.org/ivanp","requires":"3.5.1","tested":"5.4.6","requires_php":false,"rating":80,"ratings":{"1":2,"2":0,"3":1,"4":0,"5":7},"num_ratings":10,"support_threads":1,"support_threads_resolved":0,"active_installs":3000,"downloaded":97227,"last_updated":"2020-05-22 5:21pm GMT","added":"2013-10-03","homepage":"http://wordpress.org/plugins/iframely/","short_description":"Iframely extends WordPress default rich media embeds and adds support of over 2000 more providers and cards as URL previews for the rest of the Web.","description":"

Iframely extends WordPress default embeds and adds over 2000 more providers and cards as URL previews for the rest of the Web. Provides responsive embed codes, works with AMP.

\n

Just like default WordPress embeds, Iframely will detect URLs in your posts and replace it with responsive embed codes. Supports all usual suspects such as YouTube, Vimeo, Instagram, Facebook, Giphy, GfyCat, Imgur, Google +, GitHub Gists, Storify, SlideShare, Streamable, Vidme, Reddit, Dailymotion, Spotify, Tableau, Prezi, Apester, QZZR, Tidal, MLB. Well over two thousand of providers and keeps growing.

\n

Test your URL here to check if we support it.

\n

Iframely also generates and hosts summary cards as URL previews for general articles. It includes your own site, and Iframely can replace the default embed cards that your publish via WordPress for other sites to use.

\n

API key and paid/free

\n

Powered by Iframely cloud service and requires an account with us. Grab an API key for extended trial at iframely.com, or test the plugin out without an API key.

\n

Before you push the plugin to production, a service subscription is required to avoid any possible disruptions.

\n

We maintain an overwhelming number of integrations and widgets in the background for you, and make sure your sites remains fast and keeps your users happy. This requires a substantial effort on our part, and we won’t be able to provide it without requiring a service subscription.

\n

How to use:

\n

The plugin works the same way the standard oEmbed is supported by WordPress: URL on a separate line.

\n

For example,

\n
Check out this cool video:\n\nhttp://your.url/here\n\nThat was a cool video.\n
\n

Iframely also has its own shortcode [iframely]http://your.url/here[/iframely].

\n

Heads-up:

\n

Iframely does not simply wrap URLs with <iframe src=...> code. That’s not what Iframely is for. We can only match URLs to the known embed codes if publisher offers them for manual copy-paste, or generate a summary card for URL preview if a publisher provides at least a thumnnail image.

\n

To keep default embed providers

\n

By default, Iframely will inject itself to be the first embeds provider in the list, thus intercepting all URLs. It means that the default providers that are later in the list won’t get called and will thus be disabled.

\n

It means Iframely replaces default YouTube, Vimeo, Twitter, other oEmbed plugins that you might have(like JetPack), etc.

\n

Although we should support the same providers and output the same code, just make it responsive and add extra features, you can still disable such behavior and tell Iframely to only process links that otherwise don’t have an embed provider.

\n

Just choose this option in your settings. It will essentially put Iframely to be the last in the list, be “a catcher”, rather then “an interceptor”.

\n

URL editor options

\n

You can fine-tune many aspects of Iframely on your dashboard at iframely.com. This would include some most common settings for popular rich media publishers. Our support team can also fine-tune many other publishers, just for you.

\n

However, you might need a per-post editor for the widgets options. And, Iframely does provide this too. It’s done via URL options editor, and available for higher-tier plans, or during your initial trial period. Make sure to check it out.

\n

AMP support

\n

Yes, Iframely works nicely with AMP WP plugin. It catches all missing embeds and follow your Iframely settings. But you can also opt to have Iframely for all embeds, including default AMP embeds too. For example, Facebook video will be indeed a nice video without user’s text message.

\n","download_link":"https://downloads.wordpress.org/plugin/iframely.zip","tags":{"embed":"embed","embed-code":"embed code","iframely":"iframely","oembed":"oembed","responsive":"responsive"},"donate_link":"","icons":{"default":"https://s.w.org/plugins/geopattern-icon/iframely.svg"},"wporg":true},{"name":"Pym.js Embeds","slug":"pym-shortcode","version":"1.3.2.4","author":"INN Labs","author_profile":"https://profiles.wordpress.org/automattic","requires":"3.0.1","tested":"5.4.6","requires_php":"5.3","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":1,"support_threads_resolved":0,"active_installs":100,"downloaded":2287,"last_updated":"2020-03-26 6:09pm GMT","added":"2016-06-17","homepage":"https://github.com/INN/pym-shortcode","short_description":"A WordPress block and shortcode for embedding iframes that are responsive horizontally and vertically, using…","description":"

Pym.js Embeds provides shortcode and Gutenberg block wrappers for embedding responsive iframes using Pym.js, developed by the NPR Visuals Team. Embedded content resizes vertically to match its container’s width.

\n

AMP compatibility is provided by the official AMP plugin.

\n

Pym.js Resources from NPR

\n

You may also want to look at NPR’s Pym.js resources:

\n\n","download_link":"https://downloads.wordpress.org/plugin/pym-shortcode.1.3.2.4.zip","tags":{"embeds":"Embeds","iframe":"iframe","javascript":"javascript","responsive":"responsive","shortcode":"shortcode"},"donate_link":"https://inn.org/donate","icons":{"1x":"https://ps.w.org/pym-shortcode/assets/icon.svg?rev=1944461","svg":"https://ps.w.org/pym-shortcode/assets/icon.svg?rev=1944461"},"wporg":true},{"name":"PWA","slug":"pwa","version":"0.6.0","author":"PWA Plugin Contributors","author_profile":"https://profiles.wordpress.org/westonruter","requires":"5.5","tested":"5.7.2","requires_php":"5.6","rating":84,"ratings":{"1":3,"2":0,"3":0,"4":0,"5":12},"num_ratings":15,"support_threads":7,"support_threads_resolved":5,"active_installs":40000,"downloaded":291409,"last_updated":"2021-03-09 8:50pm GMT","added":"2018-07-12","homepage":"https://github.com/GoogleChromeLabs/pwa-wp","short_description":"WordPress feature plugin to bring Progressive Web App (PWA) capabilities to Core","description":"

\nProgressive Web Apps are user experiences that have the reach of the web, and are:

\n
    \n
  • Reliable – Load instantly and never show the downasaur, even in uncertain network conditions.
  • \n
  • Fast – Respond quickly to user interactions with silky smooth animations and no janky scrolling.
  • \n
  • Engaging – Feel like a natural app on the device, with an immersive user experience.
  • \n
\n

This new level of quality allows Progressive Web Apps to earn a place on the user’s home screen.\n

\n

Continue reading more about Progressive Web Apps (PWA) from Google.

\n

In general a PWA depends on the following technologies to be available:

\n\n

This plugin serves as a place to implement support for these in WordPress with the intention of being proposed for core merge, piece by piece.

\n

This feature plugin is not intended to obsolete the other plugins and themes which turn WordPress sites into PWAs. Rather, this plugin is intended to provide the PWA building blocks and coordination mechanism for these themes and plugins to not reinvent the wheel and also to not conflict with each other. For example, a theme that implements the app shell model should be able to extend the core service worker while a plugin that provides push notifications should be able to do the same. Themes and plugins no longer should have to each create a service worker on their own, something which is inherently problematic because only one service worker can be active at a time: only one service worker can win. If you are developing a plugin or theme that includes a service worker, consider relying on this PWA plugin, or at least only use the built-in implementation as a fallback for when the PWA plugin is not available.

\n

In versions prior to 0.6, no caching strategies were added by default. The only service worker behavior was to serve an offline template when the client’s connection is down or the site is down, and also to serve an error page when the server returns with 500 Internal Server Error. As of 0.6, there is a new “Offline browsing” toggle on the Reading Settings screen in the admin. It is disabled by default, but when enabled a network-first caching strategy is registered for navigations so that the offline page won’t be shown when accessing previously-accessed pages. The network-first strategy is also used for assets from themes, plugins, and WordPress core. In addition, uploaded images get served with a stale-while-revalidate strategy. For all the details on these changes, see the pull request.

\n

Documentation for the plugin can be found on the GitHub project Wiki.

\n

Development of this plugin is done on GitHub. Pull requests welcome. Please see issues reported there before going to the plugin forum.

\n","download_link":"https://downloads.wordpress.org/plugin/pwa.0.6.0.zip","tags":{"https":"https","progressive-web-apps":"progressive web apps","pwa":"pwa","service-workers":"service-workers.","web-app-manifest":"web app manifest"},"donate_link":"","icons":{"1x":"https://ps.w.org/pwa/assets/icon.svg?rev=1908485","2x":"https://ps.w.org/pwa/assets/icon-256x256.png?rev=1908485","svg":"https://ps.w.org/pwa/assets/icon.svg?rev=1908485"},"wporg":true},{"name":"MC4WP: Mailchimp for WordPress","slug":"mailchimp-for-wp","version":"4.8.6","author":"ibericode","author_profile":"https://profiles.wordpress.org/dvankooten","requires":"4.6","tested":"5.8","requires_php":"5.3","rating":96,"ratings":{"1":35,"2":10,"3":16,"4":35,"5":1277},"num_ratings":1373,"support_threads":47,"support_threads_resolved":44,"active_installs":2000000,"downloaded":35692445,"last_updated":"2021-08-04 7:14am GMT","added":"2013-06-19","homepage":"https://www.mc4wp.com/#utm_source=wp-plugin&utm_medium=mailchimp-for-wp&utm_campaign=plugins-page","short_description":"Mailchimp for WordPress, the #1 unofficial Mailchimp plugin.","description":"

Mailchimp for WordPress

\n

Allowing your visitors to subscribe to your newsletter should be easy. With this plugin, it finally is.

\n

This plugin helps you grow your Mailchimp lists and write better newsletters through various methods. You can create good looking opt-in forms or integrate with any existing form on your site, like your comment, contact or checkout form.

\n\n

Some (but not all) features

\n
    \n
  • \n

    Connect with your Mailchimp account in seconds.

    \n
  • \n
  • \n

    Sign-up forms which are good looking, user-friendly and mobile optimized. You have complete control over the form fields and can send anything you like to Mailchimp.

    \n
  • \n
  • \n

    Seamless integration with the following plugins:

    \n
      \n
    • Default WordPress Comment Form
    • \n
    • Default WordPress Registration Form
    • \n
    • Contact Form 7
    • \n
    • WooCommerce
    • \n
    • Gravity Forms
    • \n
    • Ninja Forms 3
    • \n
    • WPForms
    • \n
    • BuddyPress
    • \n
    • MemberPress
    • \n
    • Events Manager
    • \n
    • Easy Digital Downloads
    • \n
    • Give
    • \n
    • UltimateMember
    • \n
    \n
  • \n
  • \n

    A multitude of available add-on plugins and integrations:

    \n\n
  • \n
  • \n

    Well documented. Our knowledge base is updated daily.

    \n
  • \n
  • \n

    Developer friendly. For inspiration, check out our repository of example code snippets.

    \n
  • \n
\n
\n

Become a Premium user

\n

Mailchimp for WordPress has a Premium add-on which comes with several additional benefits.

\n
    \n
  • Multiple forms
  • \n
  • Advanced e-commerce integration for WooCommerce
  • \n
  • Email notifications
  • \n
  • An easy way to style your forms
  • \n
  • Detailed reports & statistics
  • \n
\n

View more Premium features

\n
\n

What is Mailchimp?

\n

Mailchimp is a newsletter service that allows you to send out email campaigns to a list of email subscribers. It is free for lists up to 2000 subscribers, which is why it is the newsletter-service of choice for thousands of businesses.

\n

This plugin allows you to tightly integrate your WordPress site with your Mailchimp account.

\n

If you are not yet using Mailchimp, creating an account is 100% free and only takes you about 30 seconds.

\n

Support

\n

Use the WordPress.org plugin forums for community support where we try to help all of our users. If you found a bug, please create an issue on Github where we can act upon them more efficiently.

\n

If you’re a premium user, please use the email address inside the plugin for support as that will guarantee a faster response time.

\n

Please take a look at the Mailchimp for WordPress knowledge base as well.

\n

Add-on plugins

\n

There are several add-on plugins available, which help you get even more out of your site.

\n

Translations

\n

You can help translate Mailchimp for WordPress into your language using your WordPress.org account.

\n

Development

\n

This plugin is being developed on GitHub. If you want to collaborate, please look at ibericode/mailchimp-for-wordpress.

\n

Customizing the plugin

\n

The plugin provides various filter & action hooks that allow you to modify or extend default behavior. We’re also maintaining a collection of sample code snippets.

\n","download_link":"https://downloads.wordpress.org/plugin/mailchimp-for-wp.4.8.6.zip","tags":{"email":"email","mailchimp":"mailchimp","marketing":"marketing","mc4wp":"mc4wp","newsletter":"newsletter"},"donate_link":"https://www.mc4wp.com/#utm_source=wp-plugin-repo&utm_medium=mailchimp-for-wp&utm_campaign=donate-link","icons":{"1x":"https://ps.w.org/mailchimp-for-wp/assets/icon-128x128.png?rev=1224577","2x":"https://ps.w.org/mailchimp-for-wp/assets/icon-256x256.png?rev=1224577"},"wporg":true},{"name":"Site Kit by Google","slug":"google-site-kit","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://sitekit.withgoogle.com/","short_description":"

Site Kit is the official WordPress plugin from Google for insights about how people find and use your site. Site Kit is the one-stop solution to deploy, manage, and get insights from critical Google tools to make the site successful on the web. It provides authoritative, up-to-date insights from multiple Google products directly on the

\n

Read More

\n","description":"\n\n\n

Site Kit is the official WordPress plugin from Google for insights about how people find and use your site. Site Kit is the one-stop solution to deploy, manage, and get insights from critical Google tools to make the site successful on the web. It provides authoritative, up-to-date insights from multiple Google products directly on the WordPress dashboard for easy access, all for free.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2019/12/site-kit-by-google-logo-285x160.png","2x":"https://amp-wp.org/wp-content/uploads/2019/12/site-kit-by-google-logo-372x209.png","svg":""},"wporg":false},{"name":"Newspack Blocks","slug":"newspack-blocks","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://github.com/Automattic/newspack-blocks","short_description":"

A collection of useful and easy to use Gutenberg based blocks, developed primarily for the Newspack project.

\n","description":"\n\n\n

A collection of useful and easy to use Gutenberg based blocks, developed primarily for the Newspack project.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2019/11/newspack_blocks-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2019/11/newspack_blocks-372x209.jpg","svg":""},"wporg":false},{"name":"Advanced Ads – Ad Manager & AdSense","slug":"advanced-ads","version":"1.27.0","author":"Thomas Maier, Advanced Ads GmbH","author_profile":"https://profiles.wordpress.org/webzunft","requires":"4.9","tested":"5.8","requires_php":"5.6","rating":98,"ratings":{"1":17,"2":1,"3":9,"4":21,"5":1181},"num_ratings":1229,"support_threads":69,"support_threads_resolved":62,"active_installs":100000,"downloaded":5146982,"last_updated":"2021-08-24 9:21am GMT","added":"2014-06-23","homepage":"https://wpadvancedads.com","short_description":"Manage and optimize all ad types. Support for Google AdSense Auto ads, Amazon, image banners,…","description":"

Are you looking for a simple ad manager plugin? These are the top arguments to use Advanced Ads:

\n
    \n
  • approved in publishing and ad optimization since 2009
  • \n
  • works with all ad types and networks, including Google AdSense, Google Ad Manager (formerly Google DoubleClick for Publishers, DFP), Amazon ads, or media.net ads
  • \n
  • most features to test and optimize ads
  • \n
  • unlimited ad units
  • \n
  • ads.txt support
  • \n
  • dedicated ad block for the block editor
  • \n
  • Google AdSense Partner, who implements all technical changes early and in 100% compliance with the Google AdSense policies
  • \n
  • the only advertising solution with Ad Health integration and Google AdSense violation checks
  • \n
  • best rated free support
  • \n
\n

This is what our users are saying about Advanced Ads:

\n
\n

We use this plugin to deliver rotating ads on a community news site, and it’s great. Both feature-rich and reliable, your imagination is the limit when it comes to the product you want to create for your users. We’ve delivered over a million ad impressions since we launched less than a year ago, using a combination of sidebar, top, sticky and in-content placements — both HTML5 and images. Advanced Ads makes it easy for our small team to deliver a good experience to our users and our advertisers.
\n mytown304 on wp.org

\n
\n

Would you like to know if there is a certain feature, what the optimized setup would be, or how to implement your client’s demands? Just open a thread in the forum!

\n

Advanced Ads allowed us to grow from 0 to 100 MM monthly ad impressions. Benefit from our experience as a publisher and monetize your website today!

\n

Full Feature List.

\n

ad management

\n
    \n
  • create and display unlimited ad units
  • \n
  • rotate ads
  • \n
  • schedule ads and set start time and expiration date
  • \n
  • target ads by content and user groups
  • \n
  • inject ads into posts and pages automatically without coding
  • \n
\n

ad types

\n

choose between different ad types that enable you to:

\n
    \n
  • insert ads and banners from all ad and affiliate networks (e.g., Google AdSense, Amazon, BuySellAds, Google Ad Manager (formerly Google DoubleClick for Publishers, DFP), Ezoic, media.net, Booking.com, Tradedoubler, Awin, Getyourguide, The Moneytizer, Infolinks…)
  • \n
  • dedicated support for all types of Google AdSense ads, including text and display ads, native ads (In-article, In-feed, matched content), Auto ads, and Auto ads for AMP
  • \n
  • display images and image banners
  • \n
  • create content-rich ads with the WordPress TinyMCE editor
  • \n
  • insert contextual Amazon Native Shopping Ads
  • \n
  • inject HTML, CSS, Javascript or PHP code
  • \n
  • use shortcodes within ads (to also deliver advertisements from another ad plugin like Ad Inserter, AdRotate, Quick AdSense, WP Bannerize, or the Google AdSense Plugin WP QUADS)
  • \n
\n

display ads for WP

\n
    \n
  • auto-inject ads via placements
  • \n
  • use functions to display ads in template files
  • \n
  • use shortcodes to place ads manually in post content
  • \n
  • show ads in the sidebar and in widgets
  • \n
  • disable all ads on specific pages
  • \n
  • display multiple ads (ad blocks)
  • \n
  • display a customizable ad label, e.g., “Advertisements” above each banner ad
  • \n
\n

display conditions

\n

show ads based on conditions like:

\n
    \n
  • individual posts, pages, and other post types
  • \n
  • posts by category, tags, taxonomies, author, and age
  • \n
  • archive pages by category, tags, taxonomies
  • \n
  • special page types like 404, attachment and front page
  • \n
  • hide ads on secondary queries (e.g., posts in sidebars)
  • \n
  • display or hide banners within the post feed
  • \n
  • hide all ads from specific page types, e.g., 404 pages, feed
  • \n
  • hide ads from bots and web crawlers
  • \n
\n

visitor conditions

\n

serve ads by conditions based on the visitor. List of all visitor conditions

\n
    \n
  • display or hide a banner by device: mobile and tablet or desktop
  • \n
  • display or hide a banner by role and for logged-in visitors
  • \n
  • advanced visitor conditions: previously visited URL (referrer), user capability, browser language, browser and device, URL parameters included in Pro
  • \n
  • display ads by geolocation with the Geo Targeting add-on
  • \n
  • display ads by browser width with the Responsive add-on
  • \n
\n
\n

Fantastic plugin and outstanding support
\n I tried at least three other ad plugins for WordPress and ‘Advanced Ads’ is by and far the best one. Last but not least in the support. The first port of call are a number of excellent tutorials. And finally the hands on support. I don’t quite know how he does it but the speed and depth of responses are absolutely amazing.
\n djsawyer on wp.org

\n
\n

ad injection | placements

\n

Placements to insert ads in pre-defined positions in your theme and content. List of all placements

\n
    \n
  • ads after any given paragraph, headline, image, or other HTML element
  • \n
  • ads at the top or bottom of the post content
  • \n
  • ads before closing </head> tag
  • \n
  • ads in the footer
  • \n
  • test placements against each other with Pro (A/B testing)
  • \n
  • many more ad positions with add-ons
  • \n
  • automatic insertion of any kind of code into header or footer, not only advertising
  • \n
\n

mobile devices

\n
    \n
  • display ads on mobile and tablets or desktop only
  • \n
  • display responsive image ads
  • \n
  • ads for specific browser sizes only using Responsive Ads
  • \n
  • inserting ads on AMP pages with Responsive Ads
  • \n
\n

Google AdSense

\n

Amazing features of the most powerful and easy Google AdSense plugin.

\n
    \n
  • unlimited Google AdSense ads banners
  • \n
  • pull ad units directly from your Google AdSense account
  • \n
  • show AdSense revenue in WP Admin
  • \n
  • change settings of your Google AdSense ads directly from your WordPress backend
  • \n
  • supports all Google AdSense ad types, including Google AdSense display ads, native ads like In-feed ads, In-article ads, matched content ads, Google AdSense Auto ads, and Google AdSense Auto ads for AMP
  • \n
  • change type and sizes of AdSense ads without going into your Google AdSense account
  • \n
  • hide Google AdSense advertisements on 404 pages by default (to comply with Google AdSense terms)
  • \n
  • insert Google AdSense code for verification and AdSense Auto Ads
  • \n
  • enable AdSense Auto ads on AMP
  • \n
  • easy Ad Health integration and Google AdSense violation checks
  • \n
  • option to remove the Google AdSense background color
  • \n
  • place Google AdSense In-feed ads using the also free In-feed add-on
  • \n
  • assistant for exact sizes of responsive Google AdSense ads with the Responsive add-on
  • \n
  • convert Google AdSense ads into AMP ads automatically with the Responsive add-on
  • \n
  • ads.txt generated with the correct AdSense information automatically
  • \n
  • works along with Google Site Kit or can replace it if you want to control your ad placements
  • \n
\n

\n

\n

Like j4ckson185, there are thousands of happy AdSense users:

\n
\n

Your app is awesome, congratulations! Google Adsense suggests using your app on its official website, it’s incredible!

\n
\n

ads.txt

\n
    \n
  • generates an ads.txt with custom content
  • \n
  • adds the content for AdSense to the ads.txt automatically
  • \n
\n

\n

\n

ad blocker

\n
    \n
  • basic features to prevent ads from being removed by AdBlock and other ad blockers
  • \n
  • prevent ad blockers from breaking sites where plugin scripts are running
  • \n
  • ad blocking detection: show alternative content to ad block users with Pro and improve the monetization of your website
  • \n
\n

Learn more on the plugin homepage.

\n

Thank you for motivating us with your positive review.

\n

Localizations: Arabic, Chinese, Czech, Danish, Dutch, English, French, German, Hungarian, Italian, Japanese, Norwegian, Polish, Portuguese, Russian, Slovak, Spanish, Turkish, Vietnamese

\n
\n

Add-Ons

\n
    \n
  • all add-ons include priority email support
  • \n
  • Advanced Ads Pro – powerful tools for ad optimizations: cache-busting, more placements, lazy loading, ad blocker module, click fraud protection, and many more
  • \n
  • Tracking – track ad impressions and ad clicks with local methods or Google Analytics
  • \n
  • Responsive Ads – target ads to specific browser sizes and create ads for AMP
  • \n
  • Google Ad Manager Integration – a quick and error-free way to load ad units from your Google Ad Manager (formerly Google DoubleClick for Publishers, DFP) account without touching any ad codes
  • \n
  • Geo Targeting – display ads based on the geo location of the visitor
  • \n
  • Sticky Ads – increase click rates with fixed, sticky, and anchor ads
  • \n
  • Fixed Widget for WordPress – turn sidebar widgets into performant fixed sticky ads
  • \n
  • PopUp and Layer Ads – display ads and other content in layers and popups
  • \n
  • Selling Ads – allows you to sell ads on your website fully automated, including payments and advertiser profiles.
  • \n
  • Ad Slider – create a simple slider from your ads
  • \n
\n
\n

If you have problems with Advanced Ads, please reach out to our support or open a new topic in our forums on wordpress.org
\n.

\n

Integrations

\n

Advanced Ads integrates with plenty of other plugins:

\n\n","download_link":"https://downloads.wordpress.org/plugin/advanced-ads.1.27.0.zip","tags":{"ad-manager":"ad manager","ad-rotation":"ad rotation","ads":"ads","adsense":"adsense","banner":"banner"},"donate_link":"","icons":{"1x":"https://ps.w.org/advanced-ads/assets/icon-128x128.gif?rev=2293174","2x":"https://ps.w.org/advanced-ads/assets/icon-256x256.gif?rev=2293174"},"wporg":true},{"name":"Syntax-highlighting Code Block (with Server-side Rendering)","slug":"syntax-highlighting-code-block","version":"1.3.1","author":"Weston Ruter","author_profile":"https://profiles.wordpress.org/westonruter","requires":"5.5","tested":"5.7.2","requires_php":"5.6","rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":17},"num_ratings":17,"support_threads":1,"support_threads_resolved":1,"active_installs":1000,"downloaded":11959,"last_updated":"2021-03-09 8:51pm GMT","added":"2019-07-30","homepage":"https://github.com/westonruter/syntax-highlighting-code-block","short_description":"Extending the Code block with syntax highlighting rendered on the server, thus being AMP-compatible and…","description":"

This plugin extends the Code block in WordPress core to add syntax highlighting which is rendered on the server. Pre-existing Code blocks on a site are automatically extended to include syntax highlighting. Doing server-side syntax highlighting eliminates the need to enqueue any JavaScript on the frontend (e.g. Highlight.js or Prism.js) and this ensures there is no flash of unhighlighted code (FOUC?). Reducing script on the frontend improves frontend performance and it also allows for the syntax highlighted code to appear properly in AMP pages as rendered by the official AMP plugin (see also ampproject/amp-wp#972) or when JavaScript is turned off in the browser.

\n

In addition to not adding any JavaScript to the frontend, the stylesheets needed for styling the Code block will only be added to the page if there is a Code block present. The stylesheets are added inline when the Code block is rendered, ensuring that they do not block rendering of any content higher in the page. If stylesheets fail to load for any reason, the block simply renders without styling, with one key exception: highlighted lines are wrapped in mark elements so they’ll get highlighted regardless, including in RSS Feeds and posts syndicated in email (as long as the mark element is supported in the client).

\n

This extended Code block uses language auto-detection to add syntax highlighting, but you can override the language in the block’s settings sidebar. (There is currently no syntax highlighting of the Code block in the editor.) The plugin supports all programming languages that highlight.php supports (being a port of highlight.js). The Code block also is extended to support specifying the aforementioned highlighted lines. There is also a checkbox for whether to show line numbers on the frontend (with the numbers being non-selectable). Lastly, given inconsistencies across themes as to whether lines in a Code block should be wrapped, this plugin adds styling to force them to no-wrap by default, with a checkbox to opt-in to wrapping when desired.

\n

For advanced usage, please see the plugin wiki.

\n

This plugin is developed on GitHub. See list of current issues with the plugin. Please feel free to file any additional issues or requests that you may come across. Pull requests are welcome.

\n

Credits

\n

This is a fork of Code Syntax Block by Marcus Kazmierczak (mkaz), which is also available on WordPress.org. Copyright (c) 2018 Marcus Kazmierczak. Licensed under GPL 2.0 or later.

\n

highlight.php is released under the BSD 3-Clause License. Copyright © 2006-2013, Ivan Sagalaev (maniac@softwaremaniacs.org), highlight.js (original author). Copyright © 2013, Geert Bergman (geert@scrivo.nl), highlight.php

\n","download_link":"https://downloads.wordpress.org/plugin/syntax-highlighting-code-block.1.3.1.zip","tags":{"block":"block","code":"code","code-highlighting":"code highlighting","code-syntax":"code syntax","syntax-highlight":"syntax highlight"},"donate_link":"","icons":{"1x":"https://ps.w.org/syntax-highlighting-code-block/assets/icon.svg?rev=2131108","2x":"https://ps.w.org/syntax-highlighting-code-block/assets/icon-256x256.png?rev=2131108","svg":"https://ps.w.org/syntax-highlighting-code-block/assets/icon.svg?rev=2131108"},"wporg":true},{"name":"Contact Form by WPForms – Drag & Drop Form Builder for WordPress","slug":"wpforms-lite","version":"1.6.9","author":"WPForms","author_profile":"https://profiles.wordpress.org/jaredatch","requires":"4.9","tested":"5.8","requires_php":"5.5","rating":98,"ratings":{"1":210,"2":46,"3":54,"4":219,"5":9568},"num_ratings":10097,"support_threads":95,"support_threads_resolved":82,"active_installs":4000000,"downloaded":81459650,"last_updated":"2021-08-26 11:06am GMT","added":"2016-03-14","homepage":"https://wpforms.com","short_description":"The best WordPress contact form plugin. Drag & Drop online form builder that helps you create beautiful contact forms with just a few clicks.","description":"

WordPress Contact Form Builder Plugin

\n

We believe that you shouldn’t have to hire a developer to create a WordPress contact form. That’s why we built WPForms, a drag & drop WordPress form builder that’s EASY and POWERFUL.

\n

WPForms allows you to create beautiful contact forms, feedback form, subscription forms, payment forms, and other types of forms for your site in minutes, not hours!

\n

At WPForms, user experience is our #1 priority. Our pre-built form templates and workflows make WPForms the most beginner friendly contact form plugin in the market.

\n

The WPForms Challenge guides you through creating your first form in under 5 minutes. We walk you through using the form builder all the way to adding a form to a page on your site! WPForms includes integrations for popular page builders like the WordPress Block Editor (Gutenberg), Classic Editor, Elementor, and Divi making the whole process seamless.

\n

WPForms is a 100% mobile responsive contact form solution, so your contact forms will always look great on all devices (mobile, tablet, laptop, and desktop).

\n

WPForms’ contact forms are also highly optimized for web and server performance because we understand the importance of speed when it comes to SEO, marketing, and conversion. We can honestly say that WPForms is one of the fastest WordPress contact form builder plugins in the world.

\n
\n

WPForms Pro
\n This plugin is the lite version of the WPForms Pro plugin that comes with all the contact form features you will ever need including email subscription forms, multi-page contact forms, file uploads, conditional logic, payment integrations, form templates, and tons more. Click here to purchase the best premium WordPress contact form plugin now!

\n
\n

We took the pain out of creating contact forms and made it easy. Here’s why smart business owners, designers, and developers love WPForms, and you will too!

\n

\n

Drag & Drop Contact Form Builder

\n

We were tired of the bloated and buggy contact form builder plugins. That’s why we built WPForms to adapt to your workflow and allow you to create custom contact forms in minutes. By using our easy to use drag and drop online form builder, you can easily add custom form fields, rearrange them, and basically create a complete contact form in 5 minutes or less.

\n

But don’t just take our word. See what one of the WordPress experts are saying:

\n
\n

WPForms is by far the easiest form plugin to use. My clients love WPForms and it’s one of the few plugins they can use without any training. As a developer I appreciate how fast, modern, clean and extensible it is.
\n Bill Erickson – Expert WordPress Consultant

\n
\n

Pre-built Form Templates

\n

Building contact forms in WordPress can be time consuming. Why?

\n

Because every other WordPress contact form builder plugin requires you to build your contact form from scratch. The truth is it’s often not necessary to create a contact form completely from scratch unless you really want to.

\n

Whether you’re looking to create a simple contact form, marketing form, request a quote form, donation form, payment order form, registration form, or a subscription form, we have a form template for you inside our contact form builder.

\n

WPForms comes with pre-built form templates to help you save time. You can add, remove, or re-arrange fields as necessary.

\n

See 100+ Pre-Made WPForms Form Template Demo

\n

Mobile Ready, SEO Friendly and Optimized for Speed

\n

WPForms’ contact forms are 100% responsive and mobile-friendly by default. We also optimized every query on the front-end and the back-end to ensure maximum speed – Yes, WPForms is one of the fastest WordPress contact form plugin.

\n

You can embed your contact form on any page with optimized title and description. With the speed and proper formatting, WPForms is also one of the most SEO friendly contact form plugin.

\n

All the Fields & Features that You Need to Succeed

\n

From star ratings to file uploads to multi-page contact forms with progress bar, we have all the fields you need.

\n

You can easily integrate your contact forms with an email marketing service or collect payments for bookings and orders. WPForms allows you to do it all.

\n

The best part is, you can do it all without hiring a developer.

\n

See what one business owner has to say about WPForms’ contact form:

\n
\n

As a business owner, time is my most valuable asset. WPForms allow me to create smart contact forms with just a few clicks. With their pre-built form templates and the drag & drop builder, I can create a new form that works in less than 2 minutes without writing a single line of code. Well worth the investment.
\n David Henzel – Co-founder of MaxCDN

\n
\n

Surveys & Polls

\n

Along with contact form, you can also use WPForms to create surveys and polls.

\n

Our WordPress Survey plugin addon comes with smart survey fields including likert scale, star ratings, multiple choice, Net Promoter Score (NPS), and more, so you can create custom survey forms like Survey Monkey (without the high costs).

\n

WPForms offer the best-in class survey reporting. You can use our interactive reports to customize the graphs, export them for your presentations, and even display the aggregate results to your users.

\n

The best part about WPForms survey reports is that it can retroactively work on any old contact form or feedback survey contact form created with WPForms.

\n

Thousands of businesses love WPForms surveys for creating employee feedback form, customer feedback form, online petition form, and more.

\n

You can also use the surveys & polls addon to easily create a poll on your site. To save you time when creating a user poll, we have added a built-in poll forms template. Our poll feature offers real-time reports, so you can share poll results with the user immediately after they submit their vote.

\n

Just like the contact form, you can embed your surveys and polls inside any post, page, or widget area in WordPress.

\n

Membership and Default WordPress Forms

\n

Aside from building simple contact forms which every WordPress site needs, WPForms also helps you create better default WordPress forms.

\n

For example, you can use WPForms to create custom WordPress login forms and custom WordPress user registration forms which are great for membership sites.

\n

For membership sites, you can also use WPForms to create a password-protected contact form or even a members only contact form which is restricited to logged-in users only.

\n

Even if you’re not using a WordPress membership plugin, you can use WPForms to create membership registration forms, online RSVP forms, and other address book contact forms.

\n

Bloggers and publishers can use our WordPress post submission forms to accept guest posts, testimonials contact form to collect testiomnials, and partnership agreement forms to grow their business.

\n

Payment Form, Donation Form, Booking Form, and More

\n

While WPForms started out as a contact form plugin, it has evolved into a powerful custom forms solution that you can use to create a payment form, donation form, registration form, online booking form, mobile form, and basically any type of custom form you need.

\n

WPForms integrates with both PayPal and Stripe, so you can easily create a credit card payment form to accept payments on your website. If you’re using SSL, then you can use our Stripe Payment form to accept credit card payments. Alternatively you can use our PayPal payment form to make a donation form and accept payments online.

\n

Aside from simple order forms, business owners also use WPForms to create custom product purchase forms, t-shirt order forms, online booking forms, and more.

\n

We understand that sometimes you may need to create a contact form that require a signature. WPForms comes with a signature field to collect user signature on your WordPress forms or even create custom signature forms.

\n

You can do all of this while still using the same easy-to-use contact form builder that’s loved by over 4 million users.

\n
\n

I am so impressed with this plugin. I decided to give it a shot over some of the other form plugins, and I am so glad I did. It works well, is so easy to use and customize. The support is amazing on top of it all. I got the pro version because I was so pleased. Highly recommend.
\n Micky73 – WordPress user

\n
\n

Forms that are Optimized for Conversion and Results

\n

With our Form Pages addon, you can create distraction-free custom form landing pages like Google Forms and Wufoo right inside WordPress, so you can increase conversions without the high costs (See Form Pages Demo).

\n

To improve form completion rate, we created Conversational Forms® which helps you make your generic feedback form and other custom contact forms feel more human by adding an interactive form layout. Our conversational forms are similar to Typeform without the high subscription costs (See Conversational Forms Demo).

\n

WPForms also has other conversion optimization features such as our smart form logic that lets you create dynamic contact forms where fields change based on user’s answer, multi-page contact forms with progress bar, and other advanced contact forms.

\n

WPForms form analytics integration with MonsterInsights allow you to easily track your lead capture forms, newsletter signup forms, request a quote contact form, and other important forms on your site.

\n

Easy to Customize and Extend

\n

You can easily customize your contact forms with our section dividers, HTML blocks, and custom CSS.

\n

If you’re using Elementor or Divi page builders our native integrations let you easily customize the style of your forms.

\n

We also knew that our developer friends may want to extend simple contact forms further. That’s why WPForms come with tons of hooks and filters to create custom functionality.

\n

Since contact forms are essential for marketing, WPForms is a must have plugin for every website!

\n

Full WPForms Feature List

\n
    \n
  • Online Form Builder – Our powerful drag & drop contact form builder allows you to easily create WordPress contact forms and other online forms in just a few minutes without writing any code.
  • \n
  • 100% Responsive – Mobile Friendly contact forms.
  • \n
  • GDPR Friendly – Make your contact form GDPR compatible with just a few clicks.
  • \n
  • Form Templates – Use our pre-built form templates to save time. Never start from scratch again (see all form templates demos).
  • \n
  • Spam Protection – WPForms provides smart anti-spam protection out-of-the-box, plus direct integrations with hCaptcha and Google reCAPTCHA.
  • \n
  • Instant Form Notification – Quickly respond to incoming inquiries with our instant contact form notification system.
  • \n
  • Smart Form Confirmation – Show a custom success message, or redirect users to a custom thank you page.
  • \n
  • File Uploads – Collect files and media through your contact forms with File Uploads.
  • \n
  • Multi-Page Forms – Split long forms into multiple pages with progress bar to improve user experience.
  • \n
  • Smart Conditional Logic – Show or hide fields and contact form sections based on user behavior.
  • \n
  • Signature Forms – Create signature forms or add the signature field to your contact form, application form, booking form, etc.
  • \n
  • User Registration Forms – Create custom user registration form and custom login form in WordPress.
  • \n
  • Post Submissions – Collect user-submitted content in WordPress with our front-end post submission form. Great for guest posts, testimonials, business directory, listings, etc.
  • \n
  • Geolocation – Display location information about your users.
  • \n
  • Custom Captchas – Create custom captchas for your contact form.
  • \n
  • Surveys and Polls – Easily create surveys forms and analyze the data with interactive reports.
  • \n
  • Form Abandonment – Unlock more leads and grow your business with partial-form submission.
  • \n
  • Form Locker – Manage form permissions and add access control rules including password-protected forms, members only forms, limit contact form entry per person, close form after specific date / time, etc.
  • \n
  • Offline Forms – Let your visitors save their entered data offline and submit when their internet connection is restored.
  • \n
  • Form Landing Pages – Create “distraction-free” form landing pages to boost conversions. Great Google Forms and Wufoo alternative.
  • \n
  • Conversational Forms – Interactive form layout that makes your form feels more human and boost overall completion rate. Great for surveys and registration forms. Perfect Typeform alternative for WordPress without the high costs.
  • \n
  • Webhooks – Send form entry data to secondary tools and external services. No code required, and no need for a third party connector.
  • \n
  • User Journey Reporting – Discover the steps your visitors take before they submit your forms. Right in the WordPress dashboard, you can easily see the content that’s driving the most valuable form conversions.
  • \n
\n

Integrations

\n
    \n
  • PayPal Payment Forms – Create PayPal forms to easily collect payments, donations, and online orders.
  • \n
  • Stripe Forms – Easily collect credit card payments, donations, and online orders with our Stripe addon.
  • \n
  • Authorize.Net Forms – Connect your WordPress site with Authorize.Net to collect payments, donations, and online orders.
  • \n
  • Mailchimp Forms – Create Mailchimp newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • AWeber Forms – Create AWeber newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • Campaign Monitor Forms – Create Campaign Monitor newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • GetResponse Forms – Create GetResponse newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • Constant Contact Forms – Create Constant Contact newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • Drip Forms – Create Drip newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • ActiveCampaign Forms – Add contacts to your ActiveCampaign account, record events, add notes to contacts, and more.
  • \n
  • Sendinblue Forms – Create Sendinblue forms to automate your marketing and engage your subscribers.
  • \n
  • Salesforce Forms – Easily send your WordPress form contacts and leads to your Salesforce CRM account.
  • \n
  • Zapier Addon – Connect your WordPress forms with over 1000+ apps. Route your contact form data to your favorite CRM, email marketing service, etc.
  • \n
\n

After reading this feature list, you can probably imagine why WPForms is the best WordPress contact form plugin in the market.

\n

Give WPForms a try.

\n

Want to unlock more features? Upgrade to our Pro version.

\n

Credits

\n

This plugin is created by Jared Atchison and Syed Balkhi.

\n

Branding Guideline

\n

WPForms® is a registered trademark of WPForms LLC. When writing about the contact form plugin by WPForms, please make sure to uppercase the initial 3 letters.

\n
    \n
  • WPForms (correct)
  • \n
  • WP Forms (incorrect)
  • \n
  • wpforms (incorrect)
  • \n
  • wpform (incorrect)
  • \n
\n

What’s Next

\n

If you like this plugin, then consider checking out our other projects:

\n
    \n
  • OptinMonster – Get More Email Subscribers with the most popular conversion optimization plugin for WordPress.
  • \n
  • MonsterInsights – See the stats that matter and grow your business with confidence. The best Google Analytics plugin for WordPress.
  • \n
  • SeedProd – Create beautiful landing pages with our powerful drag & drop landing page builder.
  • \n
  • WP Mail SMTP – Improve email deliverability for your contact form with the most popular SMTP plugin for WordPress.
  • \n
  • RafflePress – Best WordPress giveaway and contest plugin to grow traffic and social followers.
  • \n
  • Smash Baloon – #1 social feeds plugin for WordPress – display social media content in WordPress without code.
  • \n
  • AIOSEO – The original WordPress SEO plugin to help you rank higher in search results (trusted by over 2 million sites).
  • \n
  • Push Engage – Connect with visitors after they leave your website with the leading web push notification plugin.
  • \n
  • TrustPulse – Add real-time social proof notifications to boost your store conversions by up to 15%.
  • \n
\n

Visit WPBeginner to learn from our WordPress Tutorials and find out about other best WordPress plugins.

\n

Notes

\n

WPForms is absolutely, positively the most beginner friendly WordPress contact form plugin on the market. It is both easy and powerful.

\n

We took the pain out of creating online forms and made it easy. Check out all WPForms features.

\n

Also, I’m the founder of WPBeginner, the largest WordPress resource site for beginners. It was a huge priority for me to make a WordPress contact form plugin that beginners can use without any training.

\n

I feel that we have done that here. I hope you enjoy using WPForms.

\n

Thank you

\n

Syed Balkhi

\n","download_link":"https://downloads.wordpress.org/plugin/wpforms-lite.1.6.9.zip","tags":{"contact-form":"contact form","contact-form-plugin":"contact form plugin","custom-form":"custom form","form-builder":"form builder","forms":"forms"},"donate_link":"","icons":{"1x":"https://ps.w.org/wpforms-lite/assets/icon.svg?rev=2574198","2x":"https://ps.w.org/wpforms-lite/assets/icon-256x256.png?rev=2574201","svg":"https://ps.w.org/wpforms-lite/assets/icon.svg?rev=2574198"},"wporg":true},{"name":"MonsterInsights – Google Analytics Dashboard for WordPress (Website Stats Made Easy)","slug":"google-analytics-for-wordpress","version":"7.18.0","author":"MonsterInsights","author_profile":"https://profiles.wordpress.org/chriscct7","requires":"3.8.0","tested":"5.8","requires_php":"5.2","rating":92,"ratings":{"1":194,"2":39,"3":34,"4":75,"5":2076},"num_ratings":2418,"support_threads":8,"support_threads_resolved":8,"active_installs":3000000,"downloaded":96778226,"last_updated":"2021-08-10 9:06pm GMT","added":"2007-09-14","homepage":"https://www.monsterinsights.com/?utm_source=liteplugin&utm_medium=pluginheader&utm_campaign=pluginurl&utm_content=7%2E0%2E0","short_description":"The best free Google Analytics plugin for WordPress. See how visitors find and use your website, so you can grow your business.","description":"

Google Analytics Plugin for WordPress

\n

With over 3 million active installs, MonsterInsights is the most popular Google Analytics plugin for WordPress.

\n

We believe that it’s easy to double your traffic and sales when you know exactly how people find and use your website. MonsterInsights shows you the analytics and stats that matter, so you can grow your business with confidence.

\n

At MonsterInsights, we make it “effortless” to properly connect your WordPress site with Google Analytics, so you can start making data-driven decisions to grow your business.

\n

Unlike other Google Analytics plugins, MonsterInsights allow you to enable all advanced Google Analytics tracking features with just a few clicks (no need to hire a developer).

\n

The best part is that MonsterInsights comes with an analytics dashboard for WordPress that shows you actionable analytics reports right inside your WordPress dashboard. We have created customized reports that eliminate the fluff and only show you the stats that matter, so you can see exactly what’s working and what’s not!

\n

Simply put, MonsterInsights is the most complete Google Analytics plugin for WordPress that’s both EASY and POWERFUL.

\n

That’s why millions of small businesses and top companies like Microsoft, Bloomberg, FedEx, Yelp, Subway, etc. use MonsterInsights to setup Google Analytics on their WordPress sites.

\n
\n

MonsterInsights Pro
\n This plugin is the lite version of MonsterInsights Pro plugin that comes with all the tracking features you will ever need including events tracking, ecommerce tracking, custom dimensions tracking, page speed reports, popular post tracking, custom dimensions, affiliate link tracking, and tons more. Click here to purchase the best premium Google Analytics plugin for WordPress now!

\n
\n

We took the pain out of installing Google Analytics in WordPress and made it easy. Here’s why over 3 million smart business owners, designers, and developers love MonsterInsights, and you will too!

\n

\n

Quick & Easy Google Analytics Setup

\n

Properly setting up Google Analytics is complicated. You have to either hire a developer or learn how to add advanced code snippets to your website in many different areas. This process can take days or weeks…and can even break your website!

\n

With MonsterInsights, we made it “effortless” to properly setup Google Analytics in WordPress. Yes, you can enable all advanced Google Analytics features with just a few clicks.

\n

If you can point-and-click, then you can set up Google Analytics inside WordPress and start seeing insights in under 15 minutes (no code necessary).

\n

We keep up with all Google Analytics updates, so you can sleep well at night knowing that your website will always stay up to date with the newest features.

\n

See what one business owner is saying about MonsterInsights:

\n
\n

It just works. Really easy way to insert Google Analytics tracking code and keep it there when switching themes. No need to copy/paste code anywhere. This is the best way to handle Google Analytics in WordPress.
\n Steven Gliebe

\n
\n

Google Analytics Dashboard + Real Time Stats

\n

Our goal at MonsterInsights is to make Google Analytics easy and accessible for everyone.

\n

We understand that Google Analytics has a steep learning curve which often prevents small business owners from making informed decisions to grow their business.

\n

That’s why MonsterInsights comes with a built-in Google Analytics Dashboard for your WordPress site, so you can see all the useful information about your visitors right inside your WordPress dashboard without needing to login somewhere else.

\n

We have even created customized reports to help you filter through the noise and see the stats that really matter!

\n
    \n
  • \n

    Audience Report helps you get to know your visitors in a whole new way. It shows you detailed insights like which country your visitors are coming from, what are they most interested in, which device are they using, their age, gender, and a whole lot more. You can use this demographics report and audience clues to tweak your website design and content accordingly.

    \n
  • \n
  • \n

    **Publishers Report ** helps you understand which pages your visitors are arriving, and which pages they are leaving from. Designed specifically for blogs and other resource sites, this powerful report will show you which outbound links are getting clicked so you can easily optimize for higher conversions.

    \n
  • \n
  • \n

    Behavior Report shows you exactly how people find your website, which keywords did they search for, who referred them, what did they click on your site, and more. You can use these useful stats to identify low-hanging fruits, new partnership opportunities, and promotional areas to focus on.

    \n
  • \n
  • \n

    Content Report shows you stats on exactly which content gets the most visits, so you can stop guessing and start creating content that gets more traffic and conversion.

    \n
  • \n
  • \n

    Ecommerce Report shows you important store stats like total revenue, conversion rate, average order value, top referral sources, and more (all in one place).

    \n
  • \n
  • \n

    Forms Report shows you conversion stats for various contact forms and lead forms on your website, so you can improve the conversions to grow your business.

    \n
  • \n
  • \n

    Search Console Report shows you exactly how well your website is ranking in Google, so you can further optimize your SEO to grow your organic traffic.

    \n
  • \n
  • \n

    Custom Dimensions Report helps you dig deeper by showing you useful stats like who are your most popular authors, what are the best publication times, which are your most popular categories or tags, how well are your Yoast focus keywords and SEO score performing, and more.

    \n
  • \n
  • \n

    Site Speed Report makes it easy to track pagespeed insights and loading times for your website and get the information you need to improve user experience and your SEO rankings.

    \n
  • \n
\n

Our custom Google Analytics Dashboard reports are based on over 12+ years of online business experience. We built MonsterInsights to be the Google Analytics plugin that we wish we had.

\n

We currently use MonsterInsights on all our portfolio companies which include both media sites generating tens of millions of pageviews and eCommerce sites generating millions in sales.

\n

That’s why we can confidently say that MonsterInsights is the ultimate Google Analytics Shortcut for seeing the stats that matter and making data-driven decisions to grow your business.

\n
\n

I love being able to drill down into the analytics via the reporting feature. I have the PRO version and it makes a big difference what you can analyze. I’m glad that I can integrate with Pretty Links too!
\n Kim Beasley – MonsterInsights user

\n
\n

Google Analytics Enhanced Ecommerce Tracking Made Easy

\n

Google Analytics Enhanced Ecommerce tracking is a powerful feature that lets you track user behavior across your online store starting from product views to checkout page to thank you page and beyond.

\n

With MonsterInsights’ easy WooCommerce integration, you can setup WooCommerce analytics with literally 1-click.

\n

Once you have enabled WooCommerce tracking, MonsterInsights will show you all important WooCommerce metrics in a single dashboard including WooCommerce conversion rate, top products in your WooCommerce store, total transactions, total revenue, average order value, top referral sources, and more.

\n

Our WooCommerce analytics report also includes other detailed WooCommerce event tracking data like total add to carts, total removed from cart, time to purchase, and sessions to purchase.

\n

For those who want to go beyond our WooCommerce stats dashboard, you can easily open up the Google Analytics dashboard to combine WooCommerce data with other secondary dimensions and filters to find exactly what you’re looking for.

\n

Aside from WooCommerce Google Analytics integration, MonsterInsights’ eCommerce addon also offers seamless integration for the Easy Digital Downloads plugin.

\n

Our Easy Digital Downloads Google Analytics integration allows you to set up Enhanced Ecommerce Tracking on your store with just 1-click.

\n

Simply put, MonsterInsights’ Enhanced Ecommerce for WordPress feature is by far the easiest and most powerful in the market.

\n

Google Analytics + GDPR Compliance

\n

MonsterInsights helps make Google Analytics GDPR compliance easier for business owners.

\n

Our EU compliance addon allows you to:

\n
    \n
  • Anonymize IP in Google Analytics
  • \n
  • Disable the Demographics and Interest Reports for Remarketing and Advertising
  • \n
  • Disable UserID and author name tracking
  • \n
  • Enable the ga() compatibility mode
  • \n
  • Integrate with Cookie Notice and CookieBot plugins to collect user consent before tracking
  • \n
  • Integrate with Google AMP Consent Box before enable tracking
  • \n
  • Integrate with Google Analytics’s Chrome browser opt-out extension and built-in cookie opt-out system
  • \n
  • Offer Easy Opt Out link for Google Analytics tracking
  • \n
\n

While no single plugin can guarantee 100% GDPR compliance in WordPress, MonsterInsights goes to great length in helping business owners with GDPR compliance.

\n

For more details, see: GDPR and MonsterInsights – Everything You Need to Know.

\n

Universal Tracking + Google Analytics for AMP and Instant Articles

\n

MonsterInsights uses Google Analytics universal tracking, so you can track your users across devices and platforms.

\n

Accelerated Mobile Pages (AMP) is a project by Google that helps you speed up your website. However if you don’t set it up properly, Google AMP can cause you to lose your website analytics. Our Google Analytics AMP integration allows you to have accurate tracking on all AMP enabled pages. It works seamlessly with AMP for WordPress plugin.

\n

We also offer 1-click Google Analytics integration with Facebook Instant Articles.

\n

At MonsterInsights, we always stay ahead of the curve in helping you integrate WordPress with the latest Google Analytics tracking features.

\n
\n

Analytics for PROs! This plugin brings it all, great features and helpful info to easily see what you are doing.
\n Frank van der Sluijs

\n
\n

Google AdSense Tracking and Affiliate Link Tracking

\n

With MonsterInsights Ads tracking addon, publishers can easily track the performance of their Google AdSense Ads inside their Google Analytics dashboard.

\n

Our affiliate link tracking makes it easy for bloggers and affiliate marketers to track their affiliate links with Google Analytics.

\n

MonsterInsights uses event tracking for all WordPress outbound link tracking which is far more accurate than any built-in WordPress analytics solution.

\n

Unlike other WordPress analytics plugin, our Google Analytics affiliate link tracking does NOT slow down your website because all events are recorded via JavaScript and sent straight to your account.

\n

Most other WordPress stats plugin track data on your WordPress hosting server which slows down your website and does not scale for larger websites.

\n

Since our affiliate link tracking uses Google Analytics’ powerful servers, we can skip WordPress entirely.

\n

MonsterInsights’ affiliate link tracking feature works with all WordPress affiliate link management plugins including Pretty Links, Thirsty Affiliates, and others.

\n

Custom Dimensions Tracking, Custom Google Analytics Event Tracking, and More

\n

Our Google Analytics event tracking feature for WordPress doesn’t just stop at affiliate link tracking.

\n

You can use MonsterInsights custom Google analytics event tracking feature to easily add outbound-link tracking, file downloads tracking, call-to-action button tracking, hashmark tracking, telephone link tracking, and more.

\n

Our powerful Forms Tracking addon uses Google Analytics custom event tracking feature to enable form analytics in WordPress. With just 1-click, you can enable form conversion tracking for your contact forms, lead generation forms, registration forms, surveys, and any other type of form in WordPress.

\n

MonsterInsights’ Custom Dimensions addon allows you to push WordPress analytics even further. You can use Google Analytics custom dimensions to generate helpful WordPress stats for:

\n
    \n
  • Author Tracking – see stats for each author to find which author’s posts generate the most traffic.
  • \n
  • Post Type Tracking – see stats for WordPress post types to find out which sections are performing the best.
  • \n
  • Category Tracking – see stats for your WordPress categories to find out which sections of your sites are the most popular.
  • \n
  • Tags Tracking – see stats for your WordPress tags to find out which tags are the most popular.
  • \n
  • SEO Score Tracking – see stats for your Yoast SEO score and see how it impacts your traffic.
  • \n
  • Focus Keyword Tracking – see stats for Yoast focus keyword and see how it correlates with your traffic.
  • \n
  • Logged-in User Tracking – see WordPress stats for what percentage of your users are logged-in.
  • \n
  • User ID Tracking – see stats for each individual logged-in user’s activity through User ID custom dimension – great for Ecommerce and membership sites.
  • \n
  • Published Time Tracking – track the performance of your posts based on their published time.
  • \n
\n

Simply put, MonsterInsights allow you to take full advantage of all the powerful Google Analytics features.

\n
\n

I like how simple it is for client users and how I can turn on the advanced features for myself to get all the details right.
\n Skip Shean

\n
\n

Google Analytics Dashboard Plugin for WordPress Multisite Networks

\n

MonsterInsights is the most popular analytics plugin for adding Google Analytics to WordPress multisite.

\n

We have built-in all permissions and controls that you would need to successfully run Google Analytics on a WordPress multi-site.

\n

You can control who has access to view the Google Analytics Dashboard report in WordPress. Our permissions setting allows you to hide analytics reports for specific user roles.

\n

Similarly, we understand that some sites may want to exclude logged-in users from tracking. MonsterInsights gives you granular control to exclude admin in Analytics as well as other user roles.

\n

Our performance addon allows you to adjust sample rate and site speed sample rates for Google Analytics.

\n

By now you can probably see why MonsterInsights has become the most popular Google Analytics plugin for WordPress.

\n

We understand Google Analytics better than any other analytics plugin for WordPress.

\n

Full MonsterInsights Feature List

\n
    \n
  • Quick and Easy Setup – Easily setup Google Analytics for WordPress with just a few clicks (no coding needed)
  • \n
  • Real Time Stats – See real time stats inside your Google Analytics dashboard.
  • \n
  • Universal Tracking – Get better insights with Google Analytics’ universal tracking.
  • \n
  • Google Analytics Dashboard – See the stats that matter from right inside your WordPress dashboard with custom Publisher Report, Ecommerce report, and Search Console report.
  • \n
  • eCommerce Tracking – Add Google Analytics Ecommerce tracking to WordPress.
  • \n
  • WooCommerce Google Analytics – Add Enhanced Ecommerce Tracking to your WooCommerce store.
  • \n
  • Easy Digital Downloads Google Analytics – Add Enhanced Ecommerce Tracking to your EDD store.
  • \n
  • Ads Tracking – Track your Google Adsense ads with Google Analytics.
  • \n
  • Affiliate Link Tracking – Track your affiliate links and get stats that matter.
  • \n
  • File Download Tracking – Enable file download stats with just a click.
  • \n
  • Custom Link Tracking – Track your outbound link clicks with Google Analytics.
  • \n
  • Events Tracking – Track custom button and banner clicks with Google Analytics.
  • \n
  • Custom Dimensions Tracking – Enable Google analytics custom dimensions tracking for WordPress.
  • \n
  • Author Tracking – See author stats and discover who’s the most popular author on your site.
  • \n
  • Popular Post Tracking – See which blog post and section is the most popular.
  • \n
  • Contextual Insights – Get actionable tips on how to improve engagement and get more visitors based on your site’s traffic.
  • \n
  • Headline Analyzer – Get more clicks and improve SEO following suggestions from our Headline Analyzer directly in the WordPress editor
  • \n
  • Custom Post Type Tracking – Track the performance of your custom post types.
  • \n
  • Referral Tracking – See how visitors are finding your website to better focus your marketing efforts.
  • \n
  • Performance Tracking – Control the performance rate and sample rate for your Google Analytics report.
  • \n
  • Enhanced Link Attribution – Get better analytics with enhanced link attribution.
  • \n
  • Email Summaries – Your site’s Google Analytics traffic report delivered straight to your inbox every week.
  • \n
  • Google Analytics for AMP – Add proper tracking for Google AMP.
  • \n
  • Google Analytics for Facebook Instant Articles – Add proper tracking for Facebook Analytics.
  • \n
  • Google Analytics GDPR Compliance – EU compliance addon helps you improve Google Analytics GDPR compliance by adding anonymize IP, cookie consent for opt-out tracking, and more.
  • \n
  • Form Conversion Tracking – Track conversions for your WordPress forms. Works with all popular plugins including WPForms, Contact Form 7, Gravity Forms, Formidable Forms, and more.
  • \n
  • Google Optimize Tracking – Enable Google Analytics support for Google Optimize A/B Testing.
  • \n
  • Google Analytics Tools – Helpful tools for Google Analytics such as UTM link tracking builder.
  • \n
  • Want us to add something else? Suggest a feature and we’ll get it added!
  • \n
\n

After reading this exhaustive feature list, you can probably imagine why MonsterInsights is the best Google Analytics plugin for WordPress.

\n

Give MonsterInsights a try.

\n

Want to unlock even more features? Upgrade to our Pro version.

\n
\n

Simple, yet powerful. Amazing piece of plugin, does exactly what expected and even more.
\n Matt Jaworski

\n
\n

Popular Google Analytics Tutorials

\n\n

Note for Beginners

\n

Like all WordPress plugins, Google Analytics by MonsterInsights is only available for self-hosted WordPress sites. This means you will need to switch from WordPress.com to WordPress.org if you want to use this plugin on your WordPress site.

\n

For more details, see this infographic on self hosted WordPress.org vs free WordPress.com

\n

Credits

\n

This plugin is created by Chris Christoff and Syed Balkhi with sponsorship from WPBeginner.

\n

Branding Guidelines

\n

MonsterInsights® is a registered trademark of MonsterInsights LLC. When writing about the Google Analytics for WordPress plugin by MonsterInsights, please make sure to uppercase the first letters of both word.

\n
    \n
  • MonsterInsights (correct)
  • \n
  • Monster Insights (incorrect)
  • \n
  • monsterinsights (incorrect)
  • \n
  • monsterinsight (incorrect)
  • \n
\n

What’s Next

\n

If you like this plugin, then consider checking out our other projects:

\n
    \n
  • OptinMonster – Get More Email Subscribers
  • \n
  • WPForms – Best WordPress Contact Form Plugin
  • \n
  • AIOSEO – The original WordPress SEO plugin to help you rank higher in search results (trusted by over 2 million sites)
  • \n
  • SeedProd – Most popular coming soon & maintenance mode plugin for WordPress
  • \n
  • WP Mail SMTP – Improve email deliverability for your contact form with the most popular SMTP plugin for WordPress
  • \n
  • RafflePress – Best WordPress giveaway and contest plugin to grow traffic and social followers
  • \n
  • Smash Balloon – #1 social feeds plugin for WordPress – display social media content in WordPress without code
  • \n
  • PushEngage – Connect with visitors after they leave your website with the leading web push notification plugin
  • \n
  • TrustPulse – Add real-time social proof notifications to boost your store conversions by up to 15%
  • \n
\n

This plugin would not be possible without the help and support of WPBeginner, the largest WordPress resource site. You can learn from our free WordPress Tutorials like how to install WordPress, choose the best WordPress hosting, WordPress glossary, and more.

\n

You can also learn about other best WordPress plugins.

\n","download_link":"https://downloads.wordpress.org/plugin/google-analytics-for-wordpress.7.18.0.zip","tags":{"google-analytics":"google analytics","google-analytics-dashboard":"google analytics dashboard","google-analytics-widget":"google analytics widget","woocommerce-stats":"WooCommerce stats","wordpress-analytics":"WordPress analytics"},"donate_link":"http://www.wpbeginner.com/wpbeginner-needs-your-help/","icons":{"1x":"https://ps.w.org/google-analytics-for-wordpress/assets/icon.svg?rev=1598927","2x":"https://ps.w.org/google-analytics-for-wordpress/assets/icon-256x256.png?rev=1598927","svg":"https://ps.w.org/google-analytics-for-wordpress/assets/icon.svg?rev=1598927"},"wporg":true},{"name":"Atomic Blocks – Gutenberg Blocks Collection","slug":"atomic-blocks","version":"2.9.0","author":"atomicblocks","author_profile":"https://profiles.wordpress.org/atomicblocks","requires":"5.3","tested":"5.5.5","requires_php":"5.6","rating":86,"ratings":{"1":5,"2":0,"3":1,"4":6,"5":31},"num_ratings":43,"support_threads":1,"support_threads_resolved":0,"active_installs":40000,"downloaded":991595,"last_updated":"2020-10-28 4:53pm GMT","added":"2018-03-26","homepage":"https://atomicblocks.com","short_description":"A collection of beautiful, customizable Gutenberg blocks for the new block editor.","description":"

Atomic Blocks has moved!

\n

Same powerful blocks, same beautiful designs, same innovative team. Atomic Blocks has been renamed to Genesis Blocks. Learn more about Genesis Blocks. With our migration tool built right into Genesis Blocks, the transition between plugins will be simple and seamless – plus you’ll be ready to receive the new blocks and features we’re releasing soon.

\n

Atomic Blocks is a collection of page building blocks for the new Gutenberg block editor. Building pages with the block editor and Atomic Blocks gives you more control to quickly create and launch any kind of site you want!

\n

Installing the customizable Atomic Block plugin adds a collection of beautiful, site-building blocks to help you customize page layouts, increase engagement, and get results for your business. Atomic Blocks provides everything from customizable buttons, to beautifully-designed page sections and full-page layout designs via the Section & Layout block.

\n

Along with the content blocks you’ll find in Atomic Blocks, we’re also publishing helpful articles and tutorials to help you get started with Gutenberg.

\n

New Section and Layout Block!

\n

\n

On top of the handy, time-saving blocks already found in Atomic Blocks, we’re excited to introduce the brand new Section and Layout block! This block comes with a library of pre-designed sections and layouts to help you quickly and easily build a beautiful site with the new block editor.

\n

Using the Section and Layout modal window, you can browse designs by category, search, and even add sections and layouts to a Favorites tab for quick access later. Paired with the free Atomic Blocks theme, which has support for full-width, block-based page building, you have everything you need to start building your site today!

\n

Atomic Blocks currently includes the following blocks:

\n\n

Atomic Blocks WordPress Theme

\n

We’ve created a beautiful WordPress theme to help you get started with the Atomic Blocks plugin and the new WordPress block editor. The theme integrates seamlessly with the blocks you’ll find in the plugin!

\n\n

In addition to the Atomic Block Theme, we’ve built Revolution Pro with the StudioPress team. This theme is built from the ground up with blocks—Gutenberg core and Atomic. Using this Theme and the Genesis One-Click Theme Install you can have a new block-based site up and running in minutes.

\n\n

Google AMP Support

\n

The Accelerated Mobile Pages (AMP) project is a publishing format created by Google to enhance site performance for mobile website users. AMP pages are specially designed for Google search users to quickly load website pages without using any extraneous data. Atomic Blocks has support for AMP built into each block!

\n

Atomic Blocks Help File

\n

We’ve created a handy help file that you can check out here. The help file covers how to setup the plugin and get started with the blocks.

\n

The help file is also available in the plugin once activated. Click the Atomic Blocks admin menu item to visit the Getting Started page.

\n

View the plugin help file

\n

Follow Along:

\n\n","download_link":"https://downloads.wordpress.org/plugin/atomic-blocks.2.9.0.zip","tags":{"blocks":"blocks","editor":"editor","gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","page-builder":"page builder"},"donate_link":"https://atomicblocks.com","icons":{"1x":"https://ps.w.org/atomic-blocks/assets/icon-128x128.jpg?rev=1914920","2x":"https://ps.w.org/atomic-blocks/assets/icon-256x256.jpg?rev=1914921"},"wporg":true},{"name":"Akismet Spam Protection","slug":"akismet","version":"4.1.12","author":"Automattic","author_profile":"https://profiles.wordpress.org/automattic","requires":"4.6","tested":"5.8","requires_php":false,"rating":94,"ratings":{"1":40,"2":9,"3":13,"4":45,"5":811},"num_ratings":918,"support_threads":9,"support_threads_resolved":8,"active_installs":5000000,"downloaded":210918258,"last_updated":"2021-09-03 4:53pm GMT","added":"2005-10-20","homepage":"https://akismet.com/","short_description":"The best anti-spam protection to block spam comments and spam in a contact form. The most trusted antispam solution for WordPress and WooCommerce.","description":"

Akismet checks your comments and contact form submissions against our global database of spam to prevent your site from publishing malicious content. You can review the comment spam it catches on your blog’s “Comments” admin screen.

\n

Major features in Akismet include:

\n
    \n
  • Automatically checks all comments and filters out the ones that look like spam.
  • \n
  • Each comment has a status history, so you can easily see which comments were caught or cleared by Akismet and which were spammed or unspammed by a moderator.
  • \n
  • URLs are shown in the comment body to reveal hidden or misleading links.
  • \n
  • Moderators can see the number of approved comments for each user.
  • \n
  • A discard feature that outright blocks the worst spam, saving you disk space and speeding up your site.
  • \n
\n

PS: You’ll be prompted to get an Akismet.com API key to use it, once activated. Keys are free for personal blogs; paid subscriptions are available for businesses and commercial sites.

\n","download_link":"https://downloads.wordpress.org/plugin/akismet.4.1.12.zip","tags":{"anti-spam":"anti-spam","antispam":"antispam","comments":"comments","contact-form":"contact form","spam":"spam"},"donate_link":"","icons":{"1x":"https://ps.w.org/akismet/assets/icon-128x128.png?rev=969272","2x":"https://ps.w.org/akismet/assets/icon-256x256.png?rev=969272"},"wporg":true},{"name":"WP GDPR Cookie Notice","slug":"wp-gdpr-cookie-notice","version":"1.0.0-rc.1","author":"Felix Arntz","author_profile":"https://profiles.wordpress.org/flixos90","requires":"4.9.6","tested":"5.7.2","requires_php":"7.0","rating":76,"ratings":{"1":4,"2":0,"3":0,"4":0,"5":9},"num_ratings":13,"support_threads":1,"support_threads_resolved":0,"active_installs":700,"downloaded":5952,"last_updated":"2021-04-02 11:51pm GMT","added":"2019-03-01","homepage":"https://wordpress.org/plugins/wp-gdpr-cookie-notice/","short_description":"Simple performant cookie consent notice that supports AMP, Web Stories, granular cookie control and live…","description":"

This plugin adds a simple performant cookie consent notice to your WordPress site that supports AMP, Web Stories, granular cookie control and live preview customization.

\n

Not only does the notice allow you to provide the regular message that your site uses cookies, you can also optionally grant your site visitors permission to granularly allow which cookie types are allowed, supporting groups of functional (always required), preferences, analytics and marketing cookies. This aims towards compliance with how the new GDPR regulations recommend implementing cookie control for your site.

\n

In addition to the Privacy Policy page setting that WordPress core provides, you also get a settings to optionally set an extra Cookie Policy page, and you can easily link to either of them from the cookie consent notice.

\n

The cookie notice content and appearance can easily be tweaked using the Customizer, with an immediate live-preview of what your changes will look like.

\n

Last but not least, another important thing that this plugin takes care of, other than most other cookie consent plugins, is that it actually ensures cookies are only placed if the respective cookie type has been allowed by the visitor. The plugin does this by implementing cookie rules for WordPress itself, and also for the following plugins:

\n\n

More plugins will be supported in the future. If you are a developer though, it’s also very easy to add cookie rules for other code, by using the flexible cookie rule component the plugin provides as an extension point.

\n

Feature Summary

\n
    \n
  • Lightweight and easy-to-use: Simply activate the plugin, and the notice will appear.
  • \n
  • Live Preview: Use the Customizer to adjust the notice to your needs, with an instant live preview.
  • \n
  • Customizable Appearance: Specify the notice position, colors, border, button size and more.
  • \n
  • Customizable Content: Adjust the notice heading, text and button label to your preferences. You can easily link to your cookie policy page or privacy policy page, and even give visitors granular control about which cookie types they allow.
  • \n
  • Cookie Policy Support: Define an optional cookie policy page if your site has one, or alternatively provide an ID attribute to the cookie section in your privacy policy.
  • \n
  • Cookie Integrations: Supported cookies are only set once the visitor has given their consent. The cookie rules implemented also respect the more granular cookie control.
  • \n
  • JavaScript-driven: The cookie notice is inserted into the page as necessary via JavaScript, but at the same time provides easy access to whether it should be displayed via its PHP API.
  • \n
  • AMP Support: The notice is fully AMP-compatible using <amp-consent>, integrating seamlessly with the AMP plugin. It integrates with Web Stories as well.
  • \n
  • Coding Best Practices: The plugin is fully object-oriented and is coded after best practices, such as using interfaces, traits, dependency injection or the single responsibility principle. It also implements modern coding features requiring PHP 7, such as scalar type hints or return type hints.
  • \n
\n

Disclaimer

\n

This plugin does not provide any legal protection. You as a site administrator are required to ensure that it meets legal standards. This plugin is a technical tool, not a lawyer.

\n","download_link":"https://downloads.wordpress.org/plugin/wp-gdpr-cookie-notice.1.0.0-rc.1.zip","tags":{"amp":"amp","cookie-consent":"cookie consent","cookie-notice":"cookie notice","gdpr":"GDPR","web-stories":"web stories"},"donate_link":"","icons":{"1x":"https://ps.w.org/wp-gdpr-cookie-notice/assets/icon-128x128.png?rev=2042024","2x":"https://ps.w.org/wp-gdpr-cookie-notice/assets/icon-256x256.png?rev=2042024"},"wporg":true},{"name":"WordPress Share Buttons Plugin – AddThis","slug":"addthis","version":"6.2.6","author":"The AddThis Team","author_profile":"https://profiles.wordpress.org/arnavarro","requires":"3.0","tested":"5.2.11","requires_php":false,"rating":84,"ratings":{"1":75,"2":25,"3":22,"4":46,"5":444},"num_ratings":612,"support_threads":2,"support_threads_resolved":0,"active_installs":100000,"downloaded":5068765,"last_updated":"2019-07-10 5:19pm GMT","added":"2008-12-23","homepage":"https://wordpress.org/plugins/addthis/","short_description":"Now compatible with the AMP Plugin! Free Share Buttons from AddThis. Share to Messenger, WhatsApp, Facebook, Twitter, Pinterest and many more.","description":"

Now compatible with the AMP Plugin! The Free WordPress Share Buttons Plugin from AddThis makes it easier than ever for your audience to spread your content around the web. Our quick-loading Share Buttons Plugin lets you connect to over 200 social channels including Messenger, WhatsApp, Facebook, Twitter, Pinterest and many more.

\n

Our clean, customizable and simple share buttons are beautiful, quick to load and recognized all over the web.

\n

AddThis is trusted by over 15,000,000 websites with over 2 billion unique users, sharing content all over the world, in more than sixty languages.

\n

Types of Share Buttons:

\n
    \n
  • \n

    Floating share buttons: Placed on the side of your page, following your reader as they scroll. A great way to promote sharing without getting too in-your-face.

    \n
  • \n
  • \n

    Expanding share buttons: Modern, clean, and best suited for sites with tons of mobile traffic. This button expands to reveal sharing options on hover or click.

    \n
  • \n
  • \n

    Inline share buttons: Integrate share buttons into your own content for a seamless sharing experience.

    \n
  • \n
  • \n

    Image sharing buttons: Seamlessly integrate sharing into your layout with adjustable image sharing buttons. Perfect for pages with tons of shareable content.

    \n
  • \n
\n

Customizable:

\n
    \n
  • \n

    Designed for desktop, tablet, and mobile

    \n
  • \n
  • \n

    Choose from over 200 social media channels to display

    \n
  • \n
  • \n

    Adjust coloring to match your brand

    \n
  • \n
\n

Analytics:

\n
    \n
  • Sign up for a free AddThis account to get analytics on how your content is performing such as your top shared content, referring social networks and more. After you register, these analytics are accessible by logging into your AddThis.com account and visiting your AddThis dashboard. Analytics include site pageviews, your top shared content, referring social networks, and more.
  • \n
\n

Support:

\n

We strive to provide best-in-class support with a response time of around two hours, and a customer satisfaction rate of over 98%. To get in touch with our team, head to http://www.addthis.com/support.

\n

Check out our other plugins to help you grow and engage your audience!

\n
    \n
  • \n

    Follow Buttons: Add followers to 65+ social networks, including Facebook, Snapchat, Instagram, and more.

    \n
  • \n
  • \n

    Related Posts: Boost your on-site engagement with our Related Posts tool, which recommends content not only by what’s popular, but also what’s most relevant.

    \n
  • \n
\n

Want more? Visit our website to learn how you can activate our Email List Building and Link Promotion Tools.

\n

AddThis Academy | Privacy Policy

\n","download_link":"https://downloads.wordpress.org/plugin/addthis.6.2.6.zip","tags":{"share-buttons":"share buttons","social":"social","social-marketing":"Social Marketing","social-share":"social share","social-sharing":"social sharing"},"donate_link":"","icons":{"1x":"https://ps.w.org/addthis/assets/icon-128x128.png?rev=1223867","2x":"https://ps.w.org/addthis/assets/icon-256x256.png?rev=1223867"},"wporg":true},{"name":"BigCommerce For WordPress","slug":"bigcommerce","version":"4.16.0","author":"BigCommerce","author_profile":"https://profiles.wordpress.org/bigcommerce","requires":"5.2","tested":"5.5.5","requires_php":"7.2.0","rating":80,"ratings":{"1":8,"2":1,"3":0,"4":3,"5":27},"num_ratings":39,"support_threads":4,"support_threads_resolved":1,"active_installs":1000,"downloaded":57498,"last_updated":"2021-08-12 3:08am GMT","added":"2018-11-16","homepage":"","short_description":"Scale your ecommerce business with WordPress on the front-end and BigCommerce on the back end.…","description":"

BigCommerce for WordPress is a plugin that allows you to scale ecommerce further than ever before on WordPress. Scale your business with WordPress on the front-end and free up server resources from things like catalog management, processing payments, managing fulfillment logistics and more with BigCommerce on the back end.

\n

Built to integrate seamlessly with WordPress, you get access to our native ecommerce features from a single plugin, the ability to sell across multiple channels and marketplaces from a single location, and best of all, an embedded checkout experience that takes on PCI compliance and customer security on your behalf.

\n

Quick Start!

\n

Look at details from the latest release, including new features and enhancements here: https://github.com/bigcommerce/bigcommerce-for-wordpress/releases

\n

Dive into how you set up and customize your site using BC4WP using our guides here: https://developer.bigcommerce.com/bigcommerce-for-wordpress/getting-started/introduction

\n

Have a suggestion for how we can be better? Ping the team! wordpress-suggestions@bigcommerce.com

\n

DIFFERENT FROM YOUR TRADITIONAL PLUGIN

\n

We’ve taken a very different approach to ecommerce in WordPress. We set out to build our plugin the WordPress Way: deliver value to the community, build it with WordPress experts and make something developers can call their own.

\n

The BigCommerce for WordPress plugin leverages the best aspects of both platforms, allowing WordPress to manage content and BigCommerce to manage ecommerce.

\n

SCALABLE ECOMMERCE FOR WORDPRESS

\n

Continue to tap into the unrestricted customization of WordPress while pairing it with the most scalable SaaS ecommerce engine. BigCommerce lets you build complex catalogs, manage large volumes of concurrent traffic, orders and analytics.

\n

The BigCommerce plugin ports over a copy of your product catalog and stores products as custom post types in WordPress. It also creates pages for your cart, checkout, account profiles, sign in, shipping & returns, gift certificates and order history.

\n

The key difference to our approach is that you don’t need to install additional extensions to get access to common ecommerce features. Instead, you get instant access to many common (and advanced) features, such as complex catalog support, global payment gateways, currency handling, taxation, shipping calculations and centralized channel management; all out-of-the-box.

\n

OFFLOAD BACKEND RESOURCES

\n

Our philosophy is that processing orders and running your store shouldn’t affect the uptime and speed of your site — which can hurt your SEO, conversion, and brand. The BigCommerce plugin does the heavy commerce lifting, letting you scale your ecommerce without losing speed or uptime.

\n

LET US HANDLE PCI COMPLIANCE

\n

Taking on your own PCI compliance comes with a huge amount of liability and risk. BigCommerce powers the full checkout experience, assuming the burden of PCI compliance for you.

\n

EXTENSIVE PAYMENT GATEWAYS

\n

BigCommerce has over 65 payment gateway integrations available out-of-the box, serving 100+ countries and over 250 local payment methods.

\n

To help you reduce costs, we’ve pre-negotiated special credit and debit card processing rates with PayPal, our preferred payment solution. The more you grow with BigCommerce and upgrade your plan, the lower your rates can go.

\n

HIGHLY SCALABLE PRODUCT CATALOG

\n

BigCommerce is built for large, complex catalogs with up to 600 SKUs per product, and 250 product values for a single option. Our native catalog structure treats single products (including variants, details, SKUs, etc.) as a single API call, making inventory syncing with ERPs, PIMs (and WordPress) fast.

\n

MULTI-CHANNEL SELLING & MANAGEMENT

\n

With the core BigCommerce platform, you now have access within the control panel to sell across multiple marketplaces simultaneously, such as eBay, Amazon, Facebook, Instagram, Google Shopping, Square and more! Save time and eliminate errors and overselling with bulk listing, automatic inventory syncing and unified order and fulfillment management.

\n

USE YOUR FAVORITE WORDPRESS THEME

\n

BigCommerce for WordPress will work with any WordPress theme, but it may require some styling to make it fit perfectly. Are you a theme developer? We’d love to promote your BigCommerce for WordPress compatible theme. Get in touch with us here.

\n

To start, we recommend choosing a cross-browser compatible WordPress ecommerce theme, since the theme options included will better match what an online store requires.

\n

ECOMMERCE WITH GUTENBERG

\n

We’re big supporters of Gutenberg and built our plugin to support both the classic editor and Gutenberg. Whether you’re inserting shortcodes in classic mode or product blocks in Gutenberg, we will continue to enable support for both.

\n

SECURED USER ACCOUNTS & LOGINS

\n

In addition to offering you peace of mind with a secure checkout experience, we also extend this level of security to your shoppers, their accounts and logins, and payment information — all managed by BigCommerce.

\n

GLOBAL SHIPPING STREAMLINED

\n

We support all major global carriers, offer real-time carrier quotes, allow for free shipping, flat rates, dropshipping and more. With our deep ShipperHQ integration, you can even specify rates by product, category, customer group, quantity, destination, dimensions and more.

\n

FLEXIBLE SHOPPING CART

\n

We are bringing over a decade of focusing on building online stores to every WordPress website. Through this we bring our flexible shopping cart, along with it’s extensive customization options, so can offer enterprise grade promotions and discounts within a fully responsive layout, without additional extensions that other WordPress ecommerce plugins require.

\n

MULTIPLE SITES; ONE CONTROL PANEL

\n

Even if you sell across multiple WordPress sites, you shouldn’t have to manage them all in separate places. BigCommerce gives you a single control panel to manage your catalog, orders and shipping, all from one place. Streamline your admin experience and spend less time managing ecommerce on WordPress.

\n

Beyond WordPress, the endpoints we’ve opened on our platform allow you to build commerce into any sort of experience. Looking to launch a site in React? Interested in developing a mobile app? Want to integrate with an in-house POS? All of these can be built and managed from within the BigCommerce Control Panel.

\n

COMPLEX ENTERPRISE SYSTEMS INTEGRATIONS

\n

A huge benefit of having a SaaS ecommerce engine behind the scenes is that the core platform is already built for mid-market and enterprise use cases. Natively connect to your existing ERP suites, PIM software, OMS solutions, POS systems or marketing automation tools right out of the box.

\n

AMP SUPPORT

\n

Unique to most WordPress ecommerce plugins, BigCommerce for WordPress also includes support for Accelerated Mobile Pages. To activate, install the official Google plugin.

\n

SUPPORT AND SERVICES

\n

All of our BigCommerce customers have access to our 24/7 live phone, chat, and email support, run from our headquarters in Austin, Texas. For larger enterprise customers, we offer dedicated account management and implementation management services as part of your plan. We also have an ever-growing collection of help, support, and how-to guides in our help center.

\n

BUILT WITH DEVELOPERS IN MIND

\n

BigCommerce for WordPress was built by WordPress developers, with developers in mind. Our plugin is open source and available for you to fork, extend and modify as your needs require.

\n

Our plugin supports WordPress’ standard method of overriding template files so you can modify out-of-the-box designs. Customize your product cards, lists and shopping cart without risking plugin updates that will undo your changes.

\n

Additionally, there are many hooks and filters, so you can manipulate content to your heart’s content.

\n

JOIN OUR BIGCOMMERCE COMMUNITY

\n

All BigCommerce customers get access to our ever-growing online community to answer questions, discuss ecommerce strategies, learn about the latest product updates, contribute ideas and more.

\n

If you’re interested in contributing to BigCommerce for WordPress, head over to our GitHub Repository.

\n","download_link":"https://downloads.wordpress.org/plugin/bigcommerce.4.16.0.zip","tags":{"ecommerce":"ecommerce","online-store":"online store","retail":"retail","sell-online":"sell online","storefront":"storefront"},"donate_link":"","icons":{"1x":"https://ps.w.org/bigcommerce/assets/icon-256x256.png?rev=2141502","2x":"https://ps.w.org/bigcommerce/assets/icon-256x256.png?rev=2141502"},"wporg":true},{"name":"Yoast SEO","slug":"wordpress-seo","version":"17.0","author":"Team Yoast","author_profile":"https://profiles.wordpress.org/joostdevalk","requires":"5.6","tested":"5.8","requires_php":"5.6.20","rating":96,"ratings":{"1":718,"2":124,"3":170,"4":616,"5":25755},"num_ratings":27383,"support_threads":536,"support_threads_resolved":481,"active_installs":5000000,"downloaded":351641247,"last_updated":"2021-08-24 7:59am GMT","added":"2010-10-11","homepage":"https://yoa.st/1uj","short_description":"Improve your WordPress SEO: Write better content and have a fully optimized WordPress site using the Yoast SEO plugin.","description":"

Yoast SEO: the #1 WordPress SEO plugin

\n

Since 2008 Yoast SEO has helped millions of websites worldwide to rank higher in search engines.

\n

Yoast’s mission is SEO for Everyone. Our plugin’s users range from the bakery around the corner to some of the most popular sites on the planet.

\n

Yoast SEO Free contains everything that you need to manage your SEO, and the Yoast SEO Premium plugin and its extensions unlock even more tools and functionality.

\n

GET AHEAD OF THE COMPETITION

\n

To rank highly in search engines, you need to beat the competition. You need a better, faster, stronger website than the people who sell or do the same kinds of things as you.

\n

Yoast SEO is the most-used WordPress SEO plugin, and has helped millions of people like you to get ahead, and to stay ahead.

\n

TAKING CARE OF YOUR WORDPRESS SEO

\n

Yoast SEO is packed full of features, designed to help visitors and search engines to get the most out of your website. Some of our favourites are:

\n
    \n
  • Automated technical SEO improvements, like canonical URLs and meta tags.
  • \n
  • Advanced XML sitemaps; making it easy for Google to understand your site structure.
  • \n
  • Title and meta description templating, for better branding and consistent snippets in the search results.
  • \n
  • An in-depth Schema.org integration that will increase your chance of getting rich results, by helping search engines to understand your content.
  • \n
  • Full control over site breadcrumbs, so that users and search engines always know where they are.
  • \n
  • Faster loading times for your whole website, due to an innovative way of managing data in WordPress.
  • \n
  • [Premium] E-mail support for our Yoast SEO Premium users.
  • \n
  • [Premium] The possibility to expand Yoast SEO with the News SEO, Video SEO, Local SEO and WooCommerce SEO extensions.
  • \n
\n

WRITE KILLER CONTENT WITH YOAST SEO

\n

We know content is king, that’s why Yoast SEO is famous for its state-of-the-art content and SEO analysis. Yoast SEO gives you:

\n
    \n
  • SEO analysis: an invaluable tool while writing SEO-friendly content with the right (focus) keyphrases in mind.
  • \n
  • Readability analysis: ensures that humans and search engines can read and understand your content.
  • \n
  • Full language support for: English, German, French, Dutch, Spanish, Italian, Russian, Indonesian, Polish, Portuguese, Arabic, Swedish, Hebrew, Hungarian, Turkish, Czech, Norwegian and Slovak.
  • \n
  • A Google preview, which shows what your listings will look like in the search results. Even on mobile devices!
  • \n
  • Innovative Schema blocks for the WordPress block editor, so that your FAQ and HowTo content can be shown directly in the search results. Plus a breadcrumbs block to guide your users.
  • \n
  • [Premium] Internal linking blocks to easily improve the structure of your content. Easily add a table of contents block, a related links block, a subpages block, or siblings block! Plus, we’ll keep adding these easy-to-add blocks to improve your site structure.
  • \n
  • [Premium] Social previews to show you how your content will be shown on Twitter and Facebook. Plus: Social Appearance Templates to guarantee a consistent look.
  • \n
  • [Premium] The Insights tool that shows you what your text focuses on. This way you can keep your article in line with your keyphrases.
  • \n
  • [Premium] Optimize your content for synonyms and related keyphrases.
  • \n
  • [Premium] Optimize your article for different word forms of your keyphrases, as the singular and plural. But also different verb forms, synonyms, and related keyphrases. This makes for more natural content!
  • \n
  • [Premium] Automatic internal linking suggestions: write your article and get automatic suggested posts to link to!
  • \n
  • [Premium] An orphaned content filter to detect posts that have no links pointing towards them!
  • \n
  • [Premium] SEO workouts to make working on your site as easy as ABC. These SEO workflows will get your site into shape in no time!
  • \n
\n

KEEP YOUR SITE IN PERFECT SHAPE

\n

Whether you are an online entrepreneur, blogger or content creator, a developer, a (WordPress) SEO expert or a business owner, Yoast SEO helps you keep your website in perfect shape by:

\n
    \n
  • Tuning the engine of your website, so you can work on creating great content!
  • \n
  • Giving you cornerstone content and internal linking features to help you optimize your site structure in a breeze.
  • \n
  • Translating your content to structured data where possible, to help search engines understand your website.
  • \n
  • Helping you manage your team: with our SEO roles you can give colleagues access to specific sections of the Yoast SEO plugin.
  • \n
  • [Premium] Automatically creating redirects when URLs change or when pages are deleted, and providing tools to manage or create redirects.
  • \n
  • [Premium] Showing you social previews to manage the way your page is shared on social networks like Facebook and Twitter.
  • \n
\n

TRUST THE EXPERTS

\n

Yoast is powered by a team of expert developers, testers, software architects, and SEO consultants. They work constantly to stay at the cutting edge of WordPress SEO, and to improve the plugin with every release.

\n

Yoast SEO is the only WordPress SEO plugin made by world-renowned SEO experts.

\n

GET PREMIUM SUPPORT

\n

The Yoast team offers regular support on the WordPress.org forums. But we hope you understand that we prioritize our Premium customers. This one-on-one email support is available to people who have purchased Yoast SEO Premium.

\n

Did you know that Yoast SEO Premium contains a lot of extra features:

\n
    \n
  • A redirect manager that prevents “404: page not found” errors
  • \n
  • Optimize without worrying about over-optimization with intelligent word form recognition available in multiple languages.
  • \n
  • Internal linking blocks to structure your site easily.
  • \n
  • Internal linking suggestions while you’re writing.
  • \n
  • Preview your content to see what it will look like in the search results and when shared on social media using the Google preview and social preview.
  • \n
  • Cornerstone content checks that point search engines to your most important pages.
  • \n
  • Connect Yoast SEO to Zapier to easily create zaps that instantly share your published posts with 2000+ destinations like Twitter, Facebook, and much more.
  • \n
\n

If you are serious about your WordPress SEO, install the Yoast SEO Premium plugin! Costs a little, saves a lot of time!

\n

OUR EXTENSIONS TO FURTHER IMPROVE YOUR WORDPRESS SEO

\n

Check out these SEO add-ons by Yoast:

\n
    \n
  • Yoast Local SEO optimizes your website for a local audience.
  • \n
  • Yoast Video SEO ensures that Google understands what your video is about, increasing the chances of ranking in the video results.
  • \n
  • Yoast News SEO for news websites that want to improve their visibility and performance in Google News.
  • \n
  • WooCommerce SEO for all online shops that want to perform better in the search results and social media.
  • \n
\n

These extensions work fine with the free version of Yoast SEO. Of course, the premium extensions also include 24/7 support.

\n

Oh, don’t forget: our Yoast Academy is for all entrepreneurs, bloggers, and anyone who wants to learn more about optimizing websites, improving your WordPress SEO, and if you want to take your content to the next level!

\n

INTEGRATIONS

\n

Yoast SEO integrates seamlessly into a range of themes and plugins. We work particularly well with:

\n\n

BUG REPORTS

\n

Do you want to report a bug for Yoast SEO? Best to do so in the WordPress SEO repository on GitHub. Please note that GitHub is not a support forum and issues will be closed if they don’t meet the bug requirements.

\n

READ MORE

\n

Want more information on search engine optimization and Yoast SEO? Have a look at:

\n\n","download_link":"https://downloads.wordpress.org/plugin/wordpress-seo.17.0.zip","tags":{"content-analysis":"Content analysis","readability":"Readability","schema":"schema","seo":"seo","xml-sitemap":"xml sitemap"},"donate_link":"https://yoa.st/1up","icons":{"1x":"https://ps.w.org/wordpress-seo/assets/icon.svg?rev=2363699","2x":"https://ps.w.org/wordpress-seo/assets/icon-256x256.png?rev=2363699","svg":"https://ps.w.org/wordpress-seo/assets/icon.svg?rev=2363699"},"wporg":true},{"name":"Gutenberg","slug":"gutenberg","version":"11.4.1","author":"Gutenberg Team","author_profile":"https://profiles.wordpress.org/matveb","requires":"5.6","tested":"5.8","requires_php":"5.6","rating":42,"ratings":{"1":2266,"2":201,"3":126,"4":133,"5":700},"num_ratings":3426,"support_threads":57,"support_threads_resolved":9,"active_installs":300000,"downloaded":24469534,"last_updated":"2021-09-03 3:27pm GMT","added":"2017-06-16","homepage":"https://github.com/WordPress/gutenberg","short_description":"The Gutenberg plugin provides editing, customization, and site building features to WordPress. This beta plugin allows you to test bleeding-edge featu …","description":"

“Gutenberg” is a codename for a whole new paradigm in WordPress site building and publishing, that aims to revolutionize the entire publishing experience as much as Gutenberg did the printed word. Right now, the project is in the first phase of a four-phase process that will touch every piece of WordPress — Editing, Customization, Collaboration, and Multilingual — and is focused on a new editing experience, the block editor.

\n

The block editor introduces a modular approach to pages and posts: each piece of content in the editor, from a paragraph to an image gallery to a headline, is its own block. And just like physical blocks, WordPress blocks can added, arranged, and rearranged, allowing WordPress users to create media-rich pages in a visually intuitive way — and without work-arounds like shortcodes or custom HTML.

\n

The block editor first became available in December 2018, and we’re still hard at work refining the experience, creating more and better blocks, and laying the groundwork for the next three phases of work. The Gutenberg plugin gives you the latest version of the block editor so you can join us in testing bleeding-edge features, start playing with blocks, and maybe get inspired to build your own.

\n

Discover More

\n
    \n
  • \n

    User Documentation: See the WordPress Editor documentation for detailed docs on using the editor as an author creating posts and pages.

    \n
  • \n
  • \n

    Developer Documentation: Extending and customizing is at the heart of the WordPress platform, see the Developer Documentation for extensive tutorials, documentation, and API reference on how to extend the editor.

    \n
  • \n
  • \n

    Contributors: Gutenberg is an open-source project and welcomes all contributors from code to design, from documentation to triage. See the Contributor’s Handbook for all the details on how you can help.

    \n
  • \n
\n

The development hub for the Gutenberg project is on Github at: https://github.com/wordpress/gutenberg

\n

Discussion for the project is on Make Blog and the #core-editor channel in Slack, signup information.

\n","download_link":"https://downloads.wordpress.org/plugin/gutenberg.11.4.1.zip","tags":[],"donate_link":"","icons":{"1x":"https://ps.w.org/gutenberg/assets/icon-128x128.jpg?rev=1776042","2x":"https://ps.w.org/gutenberg/assets/icon-256x256.jpg?rev=1776042"},"wporg":true},{"name":"Setka Editor","slug":"setka-editor","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://setka.io/","short_description":"

Setka Editor is the first WYSIWYG plugin with page builder functionality.

\n","description":"\n\n\n

Setka Editor is the first WYSIWYG plugin with page builder functionality.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2018/11/Setka-Banner-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2018/11/Setka-Banner-372x209.jpg","svg":""},"wporg":false}] \ No newline at end of file diff --git a/data/themes.json b/data/themes.json index c03471f0414..4566ec3a832 100644 --- a/data/themes.json +++ b/data/themes.json @@ -1 +1 @@ -[{"name":"Sydney","slug":"sydney","version":"1.79","preview_url":"https://wp-themes.com/sydney/","author":{"user_nicename":"athemes","profile":"https://profiles.wordpress.org/athemes","avatar":"https://secure.gravatar.com/avatar/0fe6c4dee6e201e81783d8a0ee12d83b?s=96&d=monsterid&r=g","display_name":"athemes","author":"aThemes","author_url":"https://athemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/sydney/screenshot.png?ver=1.79","rating":98,"num_ratings":495,"homepage":"https://wordpress.org/themes/sydney/","description":"Sydney is a powerful business theme that provides a fast way for companies or freelancers to create an awesome online presence. As well as being fully compatible with Elementor, Sydney brings plenty of customization possibilities like access to all Google Fonts, full color control, layout control, logo upload, full screen slider, header image, sticky navigation and much more. Also, Sydney provides all the construction blocks you need to rapidly create an engaging front page. Looking for a quick start with Sydney? With just a few clicks, you can import one of our existing demos (https://athemes.com/sydney-demos/)","requires":false,"requires_php":"5.6","wporg":true},{"name":"Really Simple","slug":"really-simple","version":"1.0.7","preview_url":"https://wp-themes.com/really-simple/","author":{"user_nicename":"flauberthenriques","profile":"https://profiles.wordpress.org/flauberthenriques","avatar":"https://secure.gravatar.com/avatar/d524eb0811fa44be90481509b000c779?s=96&d=monsterid&r=g","display_name":"Flaubert Henriques","author":"Flaubert Henriques","author_url":"https://profiles.wordpress.org/flauberthenriques/"},"screenshot_url":"//ts.w.org/wp-content/themes/really-simple/screenshot.png?ver=1.0.7","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/really-simple/","description":"Really Simple is a theme for bloggers and writers who need a ultra light and fast theme. The theme focuses on simplicity and loading speed. Yes, Really Simple Theme is also fully AMP compatible. Check the readme.txt file and leave the sidebar perfect after WordPress 5.8 update.","requires":"5.3","requires_php":"7.0","wporg":true},{"name":"Artpop","slug":"artpop","version":"1.0.7","preview_url":"https://wp-themes.com/artpop/","author":{"user_nicename":"designlabthemes","profile":"https://profiles.wordpress.org/designlabthemes","avatar":"https://secure.gravatar.com/avatar/956873f77232371cb89d8a0d7a516354?s=96&d=monsterid&r=g","display_name":"designlabthemes","author":"Design Lab","author_url":"https://www.designlabthemes.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/artpop/screenshot.png?ver=1.0.7","rating":100,"num_ratings":1,"homepage":"https://wordpress.org/themes/artpop/","description":"Artpop is a beautiful Gutenberg-first WordPress theme, carefully designed to help you build your online brand. Unleash your creativity, Artpop takes care of the rest! Well documented and easy to use even for WordPress beginners, Artpop is perfect for a blog, personal portfolio, small business website, and WooCommerce storefront. Easily set your logo, change colors, and create awesome layouts to give your website a truly unique look.","requires":"4.7","requires_php":"5.6","wporg":true},{"name":"Michelle","slug":"michelle","version":"1.2.0","preview_url":"https://wp-themes.com/michelle/","author":{"user_nicename":"webmandesign","profile":"https://profiles.wordpress.org/webmandesign","avatar":"https://secure.gravatar.com/avatar/f4a334f9f5af61b2bd22fcaadb04dd06?s=96&d=monsterid&r=g","display_name":"WebMan Design | Oliver Juhas","author":"WebMan Design","author_url":"https://www.webmandesign.eu/"},"screenshot_url":"//ts.w.org/wp-content/themes/michelle/screenshot.png?ver=1.2.0","rating":100,"num_ratings":3,"homepage":"https://wordpress.org/themes/michelle/","description":"Michelle is accessibility ready WordPress theme for creating inclusive websites easily and with fun using block editor. Useful block patterns, block styles, templates and featured posts functionality allow you to build an eyecatching website in no time. Customize site footer and error 404 page content with block editor! The theme also works with Beaver Builder, Elementor, or any other page builder. It also supports theme builders! Michelle elevates your business, eCommerce, portfolio, or blog website. Check out the demo at https://themedemos.webmandesign.eu/michelle/ and documentation at https://webmandesign.github.io/docs/michelle/","requires":"5.5","requires_php":"7.0","wporg":true},{"name":"Miniva","slug":"miniva","version":"1.6.3","preview_url":"https://wp-themes.com/miniva/","author":{"user_nicename":"tajam","profile":"https://profiles.wordpress.org/tajam","avatar":"https://secure.gravatar.com/avatar/378d4e715829ccf6f1fbe6dfef6eb539?s=96&d=monsterid&r=g","display_name":"Tajam","author":"Tajam","author_url":"https://tajam.id/"},"screenshot_url":"//ts.w.org/wp-content/themes/miniva/screenshot.png?ver=1.6.3","rating":100,"num_ratings":6,"homepage":"https://wordpress.org/themes/miniva/","description":"A fast, lightweight, and mobile-friendly WordPress theme for bloggers. Miniva is built with simplicity, accessibility and performance in mind. The clean and minimal design helps readers focus on your content. It supports AMP and several Jetpack modules including featured content, infinite scroll, content options and social menu. See the theme demo at https://tajam.id/miniva-demo/","requires":"4.5","requires_php":"5.3","wporg":true},{"name":"Iknow","slug":"iknow","version":"1.2.6","preview_url":"https://wp-themes.com/iknow/","author":{"user_nicename":"wpcalc","profile":"https://profiles.wordpress.org/wpcalc","avatar":"https://secure.gravatar.com/avatar/64ca4933fab3d5e50383f0b514acd5f6?s=96&d=monsterid&r=g","display_name":"Wow-Company","author":"Wow-Company","author_url":"https://wow-company.com"},"screenshot_url":"//ts.w.org/wp-content/themes/iknow/screenshot.png?ver=1.2.6","rating":98,"num_ratings":9,"homepage":"https://wordpress.org/themes/iknow/","description":"Iknow WordPress Theme has a minimalistic, responsive and mobile-friendly design. Easy and fast theme. The theme is perfect for creating Knowledge Base, Helpdesk, Wiki and FAQ websites. Ability to set custom icons for each category and tag. Manage the display of categories on the main page of the site. The integrated post rating system VoteUp/VoteDown. Breadcrumbs for easy site navigation. Custom widget to display the current navigation in a category and in a separate post. You can view the appearance and features of the theme on the site https://wow-company.com/wp-theme-iknow/. Documentation https://wow-company.com/faq/category/wow-themes/iknow/","requires":false,"requires_php":"5.6","wporg":true},{"name":"Kadence","slug":"kadence","version":"1.1.3","preview_url":"https://wp-themes.com/kadence/","author":{"user_nicename":"britner","profile":"https://profiles.wordpress.org/britner","avatar":"https://secure.gravatar.com/avatar/3276133b8df529e6e1e58586ab1a309e?s=96&d=monsterid&r=g","display_name":"Ben Ritner - Kadence WP","author":"Kadence WP","author_url":"https://www.kadencewp.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/kadence/screenshot.png?ver=1.1.3","rating":98,"num_ratings":135,"homepage":"https://wordpress.org/themes/kadence/","description":"Kadence Theme is a lightweight yet full featured WordPress theme for creating beautiful fast loading and accessible websites, easier than ever. It features an easy to use drag and drop header and footer builder to build any type of header in minutes. It features a full library of gorgeous starter templates that are easy to modify with our intelligent global font and color controls. With extensive integration with the most popular 3rd party plugins, you can quickly build impressive ecommerce websites, course websites, business websites, and more.","requires":"5.0","requires_php":"7.0","wporg":true},{"name":"Izo","slug":"izo","version":"1.0.12","preview_url":"https://wp-themes.com/izo/","author":{"user_nicename":"elfwp","profile":"https://profiles.wordpress.org/elfwp","avatar":"https://secure.gravatar.com/avatar/1cfedf4555fea4d8fbba2947635586ea?s=96&d=monsterid&r=g","display_name":"elfwp","author":"elfWP","author_url":"https://elfwp.com"},"screenshot_url":"//ts.w.org/wp-content/themes/izo/screenshot.png?ver=1.0.12","rating":90,"num_ratings":2,"homepage":"https://wordpress.org/themes/izo/","description":"Izo a fast, lightweight, native AMP and fully customizable multipurpose WordPress theme. Features include compatibility with many popular plugins like Elementor and other page builders, WooCommerce, WPML, LifterLMS and more. There is also full support for the new WordPress block editor. Izo is fully responsive and our users can take advantage of the many customizer options to easily change styles. Also, if you're looking for a quick start, we're offering a bunch of free starter sites, ready to easily import.","requires":false,"requires_php":"5.6","wporg":true},{"name":"OceanWP","slug":"oceanwp","version":"3.0.5","preview_url":"https://wp-themes.com/oceanwp/","author":{"user_nicename":"oceanwp","profile":"https://profiles.wordpress.org/oceanwp","avatar":"https://secure.gravatar.com/avatar/05f8d3fe2ccb6479bac14e4d40b406dd?s=96&d=monsterid&r=g","display_name":"oceanwp","author":"Nick","author_url":"https://oceanwp.org/about-me/"},"screenshot_url":"//ts.w.org/wp-content/themes/oceanwp/screenshot.png?ver=3.0.5","rating":98,"num_ratings":4911,"homepage":"https://wordpress.org/themes/oceanwp/","description":"OceanWP is the perfect theme for your project. Lightweight and highly extendable, it will enable you to create almost any type of website such a blog, portfolio, business website and WooCommerce storefront with a beautiful & professional design. Very fast, responsive, RTL & translation ready, best SEO practices, unique WooCommerce features to increase conversion and much more. You can even edit the settings on tablet & mobile so your site looks good on every device. Work with the most popular page builders as Elementor, Beaver Builder, Brizy, Visual Composer, Divi, SiteOrigin, etc... Developers will love his extensible codebase making it a joy to customize and extend. Best friend of Elementor & WooCommerce. Looking for a Multi-Purpose theme? Look no further! Check the demos to realize that it's the only theme you will ever need: https://oceanwp.org/demos/","requires":"5.3","requires_php":"7.2","wporg":true},{"name":"Twenty Twenty-One","slug":"twentytwentyone","version":"1.4","preview_url":"https://wp-themes.com/twentytwentyone/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentytwentyone/screenshot.png?ver=1.4","rating":82,"num_ratings":32,"homepage":"https://wordpress.org/themes/twentytwentyone/","description":"Twenty Twenty-One is a blank canvas for your ideas and it makes the block editor your best brush. With new block patterns, which allow you to create a beautiful layout in a matter of seconds, this theme’s soft colors and eye-catching — yet timeless — design will let your work shine. Take it for a spin! See how Twenty Twenty-One elevates your portfolio, business website, or personal blog.","requires":"5.3","requires_php":"5.6","wporg":true},{"slug":"occasio","version":"","preview_url":"https://themezee.com/themes/occasio/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/12/occasio.jpg","rating":0,"num_ratings":0,"homepage":"https://themezee.com/themes/occasio/","requires":"","requires_php":"","wporg":false},{"name":"Tortuga","slug":"tortuga","version":"2.3.4","preview_url":"https://wp-themes.com/tortuga/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/tortuga/screenshot.jpg?ver=2.3.4","rating":96,"num_ratings":19,"homepage":"https://wordpress.org/themes/tortuga/","description":"Tortuga is a highly flexible and adventurous WordPress theme for your pirate magazine or any news related website. It supports three different post layouts, two sidebar schemes and a Magazine Homepage template based on widgets. Other highlights of Tortuga are the beautiful post slider and header widgets area. Arrr!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Treville","slug":"treville","version":"2.1.4","preview_url":"https://wp-themes.com/treville/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/treville/screenshot.jpg?ver=2.1.4","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/treville/","description":"An elegant Blogging & Magazine WordPress Theme with subtle colors and great typography. Treville supports two navigation menus, advanced post settings and a post slider with fullscreen images!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Wellington","slug":"wellington","version":"2.1.4","preview_url":"https://wp-themes.com/wellington/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/wellington/screenshot.jpg?ver=2.1.4","rating":100,"num_ratings":12,"homepage":"https://wordpress.org/themes/wellington/","description":"Wellington is a clean and simple Magazine WordPress theme with beautiful typography and subtle colors. The theme includes two different post layouts, a featured post slider and thoughtful theme settings in the Customizer.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Poseidon","slug":"poseidon","version":"2.3.4","preview_url":"https://wp-themes.com/poseidon/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/poseidon/screenshot.jpg?ver=2.3.4","rating":96,"num_ratings":16,"homepage":"https://wordpress.org/themes/poseidon/","description":"Poseidon is an elegant designed WordPress theme featuring a splendid fullscreen image slideshow. The clean typography and spacious white layout makes it great to share your stories. You can use the theme as simple blog or easily create a news website with the widget-based Magazine Homepage template.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Napoli","slug":"napoli","version":"2.2.4","preview_url":"https://wp-themes.com/napoli/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/napoli/screenshot.jpg?ver=2.2.4","rating":100,"num_ratings":4,"homepage":"https://wordpress.org/themes/napoli/","description":"Napoli is a beautiful WordPress theme perfectly suited for a food magazine. It features a great featured post slider, smooth typography and a grid-layout for posts. Bon appetit!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Mercia","slug":"mercia","version":"1.9.7","preview_url":"https://wp-themes.com/mercia/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/mercia/screenshot.jpg?ver=1.9.7","rating":100,"num_ratings":1,"homepage":"https://wordpress.org/themes/mercia/","description":"Mercia is a flexible and versatile theme perfect for lifestyle, travel, or fashion magazines. It features a modern and minimalist design with great typropaphy. Of course it works on all screen sizes. With multiple blog layouts and powerful Magazine widgets, you can easily create a stunning and dynamic news website in just a few minutes.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Maxwell","slug":"maxwell","version":"2.3.4","preview_url":"https://wp-themes.com/maxwell/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/maxwell/screenshot.jpg?ver=2.3.4","rating":100,"num_ratings":6,"homepage":"https://wordpress.org/themes/maxwell/","description":"Maxwell is a minimalistic and elegant WordPress theme featuring an ultra clean magazine layout. With a beautiful typography, various post layouts and a gorgeous featured posts slideshow Maxwell truly helps you to stand out.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Harrison","slug":"harrison","version":"1.3.4","preview_url":"https://wp-themes.com/harrison/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/harrison/screenshot.jpg?ver=1.3.4","rating":80,"num_ratings":1,"homepage":"https://wordpress.org/themes/harrison/","description":"Harrison is a highly versatile WordPress Theme and was specially designed for use with the new WordPress Block Editor. The theme supports the latest Gutenberg features and provides different blog layouts and extensive post settings. The clean and elegant design is perfect to create all kinds of websites. You should really try it!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Gridbox","slug":"gridbox","version":"2.3.4","preview_url":"https://wp-themes.com/gridbox/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/gridbox/screenshot.jpg?ver=2.3.4","rating":74,"num_ratings":6,"homepage":"https://wordpress.org/themes/gridbox/","description":"Gridbox is a clean and solid WordPress theme featuring a three-column grid-layout for posts. The theme works out of the box and does not require any complicated setup. It is perfectly suited for a simple magazine, blog or portfolio website.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Chronus","slug":"chronus","version":"2.0.5","preview_url":"https://wp-themes.com/chronus/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/chronus/screenshot.jpg?ver=2.0.5","rating":80,"num_ratings":5,"homepage":"https://wordpress.org/themes/chronus/","description":"Chronus is a fast and lightweight WordPress Theme created for magazines, news websites and personal blogs. The Featured Content section and flexible Magazine Widgets give you the ability to highlight your most important posts on the home page. The minimalistic and responsive design focuses on your content and looks great on any screen size.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Donovan","slug":"donovan","version":"1.8.4","preview_url":"https://wp-themes.com/donovan/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/donovan/screenshot.jpg?ver=1.8.4","rating":96,"num_ratings":16,"homepage":"https://wordpress.org/themes/donovan/","description":"Donovan is a flexible, yet easy-to-use blogging theme with a clean and modern design. It features an elegant mobile-first design, three different blog layouts and extensive post settings. Donovan is perfect for your personal blog or for any content-focused website.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Yosemite Lite","slug":"yosemite-lite","version":"1.2.1","preview_url":"https://wp-themes.com/yosemite-lite/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/yosemite-lite/screenshot.jpg?ver=1.2.1","rating":60,"num_ratings":2,"homepage":"https://wordpress.org/themes/yosemite-lite/","description":"Yosemite is a beautiful WordPress blog theme for personal blogs. Yosemite has a modern, clean and elegant look and lots of customization for bloggers. Built on the latest technology of WordPress, Yosemite is lightweight, fast and optimized for all mobile phones.","requires":false,"requires_php":false,"wporg":true},{"name":"Justread","slug":"justread","version":"1.3.0","preview_url":"https://wp-themes.com/justread/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/justread/screenshot.jpg?ver=1.3.0","rating":100,"num_ratings":5,"homepage":"https://wordpress.org/themes/justread/","description":"Justread is a clean and modern WordPress theme that focuses on reading experience. Justread has a grid layout with single column content. The theme uses system fonts and SVG for fast loading. Enjoy reading long content with comfortability.","requires":false,"requires_php":"5.6","wporg":true},{"name":"Floral Lite","slug":"floral-lite","version":"1.4","preview_url":"https://wp-themes.com/floral-lite/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/floral-lite/screenshot.jpg?ver=1.4","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/floral-lite/","description":"Floral is a beautiful WordPress blog theme for personal blogs. Floral has a modern, clean and elegant look and lots of customization for bloggers. Built on the latest technology of WordPress, Floral is lightweight, fast and optimized for all mobile phones.","requires":"4.5","requires_php":"5.6","wporg":true},{"name":"EightyDays Lite","slug":"eightydays-lite","version":"2.2.7","preview_url":"https://wp-themes.com/eightydays-lite/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"http://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/eightydays-lite/screenshot.png?ver=2.2.7","rating":90,"num_ratings":4,"homepage":"https://wordpress.org/themes/eightydays-lite/","description":"EightyDays is a beautiful WordPress travel theme for travel blogs or magazines. EightyDays has a modern, clean and elegant look and lots of customization for bloggers. Built on the latest technology of WordPress, EightyDays is lightweight, fast and optimized for all mobile phones.","requires":false,"requires_php":false,"wporg":true},{"name":"eStar","slug":"estar","version":"1.3.4","preview_url":"https://wp-themes.com/estar/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/estar/screenshot.png?ver=1.3.4","rating":100,"num_ratings":3,"homepage":"https://wordpress.org/themes/estar/","description":"eStar is a super fast, lightweight (less than 10KB on the front end), responsive and highly customizable WordPress theme suitable for blog, personal portfolio and business websites. It works perfectly with Gutenberg and all WordPress blocks. You can also pair it with any page builder plugin like Elementor, Beaver Builder, Visual Composer, SiteOrigin, Divi, Thrive Architect, Brizy and more. eStar is written from scratch with performance, extensibility, usability and SEO in mind. The theme follows best practices, well-coded and follows the latest web standards (HTML5, SVG, JavaScript). Some of the other features: microdata integration, widget areas, sidebar layouts, custom colors, custom Google fonts, translation ready. Looking for a perfect base theme? Look no further. eStar is fast, fully customizable WordPress theme that you can use for building any kind of website like business agencies, corporate, portfolio, education, university portal, consulting, church, restaurant, medical and so on. Learn more about the theme at https://gretathemes.com/wordpress-themes/estar/","requires":false,"requires_php":"5.6","wporg":true},{"slug":"stow-2","version":"","preview_url":"https://wordpress.com/theme/stow","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/stow.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/stow","requires":"","requires_php":"","wporg":false},{"slug":"shawburn","version":"","preview_url":"https://wordpress.com/theme/shawburn","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/shawborn.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/shawburn","requires":"","requires_php":"","wporg":false},{"slug":"rivington-2","version":"","preview_url":"https://wordpress.com/theme/rivington","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/rivington.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/rivington","requires":"","requires_php":"","wporg":false},{"slug":"redhill-2","version":"","preview_url":"https://wordpress.com/theme/redhill","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/redhill.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/redhill","requires":"","requires_php":"","wporg":false},{"slug":"morden-2","version":"","preview_url":"https://wordpress.com/theme/morden","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/morden.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/morden","requires":"","requires_php":"","wporg":false},{"slug":"maywood-2","version":"","preview_url":"https://wordpress.com/theme/maywood","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/maywood.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/maywood","requires":"","requires_php":"","wporg":false},{"slug":"mayland","version":"","preview_url":"https://wordpress.com/theme/mayland","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/mmayland.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/mayland","requires":"","requires_php":"","wporg":false},{"slug":"leven-2","version":"","preview_url":"https://wordpress.com/theme/leven","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/leven.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/leven","requires":"","requires_php":"","wporg":false},{"slug":"hever-2","version":"","preview_url":"https://wordpress.com/theme/hever","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/hever.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/hever","requires":"","requires_php":"","wporg":false},{"slug":"exford-2","version":"","preview_url":"https://wordpress.com/theme/exford","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/exford.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/exford","requires":"","requires_php":"","wporg":false},{"slug":"brompton-2","version":"","preview_url":"https://wordpress.com/theme/brompton","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/brompton.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/brompton","requires":"","requires_php":"","wporg":false},{"slug":"barnsbury-2","version":"","preview_url":"https://wordpress.com/theme/barnsbury","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/Barnsbury.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/barnsbury","requires":"","requires_php":"","wporg":false},{"slug":"balasana-2","version":"","preview_url":"https://wordpress.com/theme/balasana","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/Balasana.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/balasana","requires":"","requires_php":"","wporg":false},{"slug":"alves-2","version":"","preview_url":"https://wordpress.com/theme/alves","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/Alves.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/alves","requires":"","requires_php":"","wporg":false},{"slug":"varia-2","version":"","preview_url":"https://wordpress.com/theme/varia","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/varia.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/varia","requires":"","requires_php":"","wporg":false},{"name":"Activation","slug":"activation","version":"1.2.2","preview_url":"https://wp-themes.com/activation/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/activation/screenshot.png?ver=1.2.2","rating":100,"num_ratings":1,"homepage":"https://wordpress.org/themes/activation/","description":"Activation is a Primer child theme with a colorful, fitness-focused design.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":false,"wporg":true},{"name":"Velux","slug":"velux","version":"1.1.3","preview_url":"https://wp-themes.com/velux/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/velux/screenshot.png?ver=1.1.3","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/velux/","description":"Velux is a Primer child theme with a clean, professional, and upscale design.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":"5.6.0","wporg":true},{"name":"Scribbles","slug":"scribbles","version":"1.1.2","preview_url":"https://wp-themes.com/scribbles/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/scribbles/screenshot.png?ver=1.1.2","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/scribbles/","description":"Scribbles is a Primer child theme with a playful and fun mood.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.1","requires_php":false,"wporg":true},{"name":"Ascension","slug":"ascension","version":"1.1.5","preview_url":"https://wp-themes.com/ascension/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/ascension/screenshot.png?ver=1.1.5","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/ascension/","description":"Ascension is a Primer child theme with a business-oriented design.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":"5.6.0","wporg":true},{"name":"Uptown Style","slug":"uptown-style","version":"1.1.3","preview_url":"https://wp-themes.com/uptown-style/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/uptown-style/screenshot.png?ver=1.1.3","rating":100,"num_ratings":3,"homepage":"https://wordpress.org/themes/uptown-style/","description":"Uptown Style is a Primer child theme with elegance and class.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":"5.6.0","wporg":true},{"name":"Go","slug":"go","version":"1.4.4","preview_url":"https://wp-themes.com/go/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":"GoDaddy","author_url":"https://www.godaddy.com"},"screenshot_url":"//ts.w.org/wp-content/themes/go/screenshot.png?ver=1.4.4","rating":94,"num_ratings":14,"homepage":"https://wordpress.org/themes/go/","description":"Go is an innovative, Gutenberg-first WordPress theme, hyper-focused on empowering makers to build beautifully rich websites with WordPress.","requires":false,"requires_php":"5.6","wporg":true},{"slug":"navigation-pro","version":"","preview_url":"https://my.studiopress.com/themes/navigation/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/02/navigationPro.jpg","rating":0,"num_ratings":0,"homepage":"https://my.studiopress.com/themes/navigation/","requires":"","requires_php":"","wporg":false},{"name":"Memory","slug":"memory","version":"2.0.1","preview_url":"https://wp-themes.com/memory/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/memory/screenshot.png?ver=2.0.1","rating":60,"num_ratings":1,"homepage":"https://wordpress.org/themes/memory/","description":"Clean and beautiful personal blog theme.","requires":"4.5","requires_php":"5.2","wporg":true},{"slug":"sacha","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/sacha9.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","requires":"","requires_php":"","wporg":false},{"slug":"scott-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/scott.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","requires":"","requires_php":"","wporg":false},{"slug":"katharine-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/katharine.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","requires":"","requires_php":"","wporg":false},{"slug":"joseph-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/joseph-1.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","requires":"","requires_php":"","wporg":false},{"slug":"nelson-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/nelson.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","requires":"","requires_php":"","wporg":false},{"slug":"newspack","version":"","preview_url":"https://github.com/Automattic/newspack-theme","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2019/11/newspack.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme","requires":"","requires_php":"","wporg":false},{"name":"Twenty Twenty","slug":"twentytwenty","version":"1.8","preview_url":"https://wp-themes.com/twentytwenty/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentytwenty/screenshot.png?ver=1.8","rating":88,"num_ratings":60,"homepage":"https://wordpress.org/themes/twentytwenty/","description":"Our default theme for 2020 is designed to take full advantage of the flexibility of the block editor. Organizations and businesses have the ability to create dynamic landing pages with endless layouts using the group and column blocks. The centered content column and fine-tuned typography also makes it perfect for traditional blogs. Complete editor styles give you a good idea of what your content will look like, even before you publish. You can give your site a personal touch by changing the background colors and the accent color in the Customizer. The colors of all elements on your site are automatically calculated based on the colors you pick, ensuring a high, accessible color contrast for your visitors.","requires":"4.7","requires_php":"5.2.4","wporg":true},{"name":"Primer","slug":"primer","version":"1.8.9","preview_url":"https://wp-themes.com/primer/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/primer/screenshot.png?ver=1.8.9","rating":90,"num_ratings":15,"homepage":"https://wordpress.org/themes/primer/","description":"Primer is a powerful theme that brings clarity to your content in a fresh design.","requires":false,"requires_php":false,"wporg":true},{"slug":"essence-pro-theme","version":"","preview_url":"https://my.studiopress.com/themes/essence/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2019/07/cropped-Essence-Pro.png","rating":0,"num_ratings":0,"homepage":"https://my.studiopress.com/themes/essence/","requires":"","requires_php":"","wporg":false},{"slug":"genesis-theme-framework","version":"","preview_url":"https://my.studiopress.com/themes/genesis/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2019/07/cropped-Genesis.png","rating":0,"num_ratings":0,"homepage":"https://my.studiopress.com/themes/genesis/","requires":"","requires_php":"","wporg":false},{"name":"Twenty Fourteen","slug":"twentyfourteen","version":"3.2","preview_url":"https://wp-themes.com/twentyfourteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyfourteen/screenshot.png?ver=3.2","rating":88,"num_ratings":93,"homepage":"https://wordpress.org/themes/twentyfourteen/","description":"In 2014, our default theme lets you create a responsive magazine website with a sleek, modern design. Feature your favorite homepage content in either a grid or a slider. Use the three widget areas to customize your website, and change your content's layout with a full-width page template and a contributor page to show off your authors. Creating a magazine website with WordPress has never been easier.","requires":false,"requires_php":"5.2.4","wporg":true},{"name":"Twenty Thirteen","slug":"twentythirteen","version":"3.4","preview_url":"https://wp-themes.com/twentythirteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentythirteen/screenshot.png?ver=3.4","rating":82,"num_ratings":62,"homepage":"https://wordpress.org/themes/twentythirteen/","description":"The 2013 theme for WordPress takes us back to the blog, featuring a full range of post formats, each displayed beautifully in their own unique way. Design details abound, starting with a vibrant color scheme and matching header images, beautiful typography and icons, and a flexible layout that looks great on any device, big or small.","requires":"3.6","requires_php":"5.2.4","wporg":true},{"name":"Twenty Eleven","slug":"twentyeleven","version":"3.9","preview_url":"https://wp-themes.com/twentyeleven/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyeleven/screenshot.png?ver=3.9","rating":92,"num_ratings":49,"homepage":"https://wordpress.org/themes/twentyeleven/","description":"The 2011 theme for WordPress is sophisticated, lightweight, and adaptable. Make it yours with a custom menu, header image, and background -- then go further with available theme options for light or dark color scheme, custom link colors, and three layout choices. Twenty Eleven comes equipped with a Showcase page template that transforms your front page into a showcase to show off your best content, widget support galore (sidebar, three footer areas, and a Showcase page widget area), and a custom \"Ephemera\" widget to display your Aside, Link, Quote, or Status posts. Included are styles for print and for the admin editor, support for featured images (as custom header images on posts and pages and as large images on featured \"sticky\" posts), and special styles for six different post formats.","requires":false,"requires_php":"5.2.4","wporg":true},{"name":"Twenty Ten","slug":"twentyten","version":"3.5","preview_url":"https://wp-themes.com/twentyten/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyten/screenshot.png?ver=3.5","rating":94,"num_ratings":50,"homepage":"https://wordpress.org/themes/twentyten/","description":"The 2010 theme for WordPress is stylish, customizable, simple, and readable -- make it yours with a custom menu, header image, and background. Twenty Ten supports six widgetized areas (two in the sidebar, four in the footer) and featured images (thumbnails for gallery posts and custom header images for posts and pages). It includes stylesheets for print and the admin Visual Editor, special styles for posts in the \"Asides\" and \"Gallery\" categories, and has an optional one-column page template that removes the sidebar.","requires":"3.0","requires_php":"5.2.4","wporg":true},{"name":"Zakra","slug":"zakra","version":"2.0.3","preview_url":"https://wp-themes.com/zakra/","author":{"user_nicename":"themegrill","profile":"https://profiles.wordpress.org/themegrill","avatar":"https://secure.gravatar.com/avatar/fa3cda768036cc3983458ed23394a43d?s=96&d=monsterid&r=g","display_name":"ThemeGrill","author":"ThemeGrill","author_url":"https://themegrill.com"},"screenshot_url":"//ts.w.org/wp-content/themes/zakra/screenshot.jpg?ver=2.0.3","rating":100,"num_ratings":474,"homepage":"https://wordpress.org/themes/zakra/","description":"Zakra is flexible, fast, lightweight and modern multipurpose theme that comes with many starter free sites (currently 10+ free starter sites and more will be added later) that you can use to make your site beautiful and professional. Check all the starter sites at https://zakratheme.com/demos. Suitable for personal blog, portfolio, WooCommerce stores, business websites and niche-based sites (like Cafe, Spa, Charity, Yoga, Wedding, Dentist, Education etc) as well. Works with Elementor plus other major page builders so you can create any layout you want. The theme is responsive, Gutenberg compatible, SEO friendly, translation ready and major WordPress plugins compatible.","requires":false,"requires_php":"5.6","wporg":true},{"name":"Neve","slug":"neve","version":"3.0.2","preview_url":"https://wp-themes.com/neve/","author":{"user_nicename":"themeisle","profile":"https://profiles.wordpress.org/themeisle","avatar":"https://secure.gravatar.com/avatar/a0ec097eaf5f30933eb00c1175d4bd55?s=96&d=monsterid&r=g","display_name":"Themeisle","author":"ThemeIsle","author_url":"https://themeisle.com"},"screenshot_url":"//ts.w.org/wp-content/themes/neve/screenshot.png?ver=3.0.2","rating":96,"num_ratings":803,"homepage":"https://wordpress.org/themes/neve/","description":"Neve is a super fast, easily customizable, multi-purpose theme. It’s perfect for blogs, small business, startups, agencies, firms, e-commerce shops (WooCommerce storefront) as well as personal portfolio sites and most types of projects. A fully AMP optimized and responsive theme, Neve will load in mere seconds and adapt perfectly on any viewing device. While it is lightweight and has a minimalist design, the theme is highly extendable, it has a highly SEO optimized code, resulting in top rankings in Google search results. Neve works perfectly with Gutenberg and the most popular page builders (Elementor, Brizy, Beaver Builder, Visual Composer, SiteOrigin, Divi). Neve is also WooCommerce ready, responsive, RTL & translation ready. Look no further. Neve is the perfect theme for you!","requires":false,"requires_php":"7.0","wporg":true},{"name":"Astra","slug":"astra","version":"3.6.9","preview_url":"https://wp-themes.com/astra/","author":{"user_nicename":"brainstormforce","profile":"https://profiles.wordpress.org/brainstormforce","avatar":"https://secure.gravatar.com/avatar/9f4255d653745eaa037105cd5eab2295?s=96&d=monsterid&r=g","display_name":"Brainstorm Force","author":"Brainstorm Force","author_url":"https://wpastra.com/about/"},"screenshot_url":"//ts.w.org/wp-content/themes/astra/screenshot.jpg?ver=3.6.9","rating":98,"num_ratings":4979,"homepage":"https://wordpress.org/themes/astra/","description":"Astra is fast, fully customizable & beautiful WordPress theme suitable for blog, personal portfolio, business website and WooCommerce storefront. It is very lightweight (less than 50KB on frontend) and offers unparalleled speed. Built with SEO in mind, Astra comes with Schema.org code integrated and is Native AMP ready so search engines will love your site. It offers special features and templates so it works perfectly with all page builders like Elementor, Beaver Builder, Visual Composer, SiteOrigin, Divi, etc. Some of the other features: # WooCommerce Ready # Responsive # RTL & Translation Ready # Extendible with premium addons # Regularly updated # Designed, Developed, Maintained & Supported by Brainstorm Force. Looking for a perfect base theme? Look no further. Astra is fast, fully customizable and WooCommerce ready theme that you can use for building any kind of website!","requires":"5.3","requires_php":"5.3","wporg":true},{"name":"Twenty Twelve","slug":"twentytwelve","version":"3.5","preview_url":"https://wp-themes.com/twentytwelve/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentytwelve/screenshot.png?ver=3.5","rating":92,"num_ratings":155,"homepage":"https://wordpress.org/themes/twentytwelve/","description":"The 2012 theme for WordPress is a fully responsive theme that looks great on any device. Features include a front page template with its own widgets, an optional display font, styling for post formats on both index and single views, and an optional no-sidebar page template. Make it yours with a custom menu, header image, and background.","requires":"3.5","requires_php":"5.2.4","wporg":true},{"name":"Twenty Nineteen","slug":"twentynineteen","version":"2.1","preview_url":"https://wp-themes.com/twentynineteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentynineteen/screenshot.png?ver=2.1","rating":74,"num_ratings":59,"homepage":"https://wordpress.org/themes/twentynineteen/","description":"Our 2019 default theme is designed to show off the power of the block editor. It features custom styles for all the default blocks, and is built so that what you see in the editor looks like what you'll see on your website. Twenty Nineteen is designed to be adaptable to a wide range of websites, whether you’re running a photo blog, launching a new business, or supporting a non-profit. Featuring ample whitespace and modern sans-serif headlines paired with classic serif body text, it's built to be beautiful on all screen sizes.","requires":"4.9.6","requires_php":"5.2.4","wporg":true},{"name":"Twenty Seventeen","slug":"twentyseventeen","version":"2.8","preview_url":"https://wp-themes.com/twentyseventeen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyseventeen/screenshot.png?ver=2.8","rating":88,"num_ratings":115,"homepage":"https://wordpress.org/themes/twentyseventeen/","description":"Twenty Seventeen brings your site to life with header video and immersive featured images. With a focus on business sites, it features multiple sections on the front page as well as widgets, navigation and social menus, a logo, and more. Personalize its asymmetrical grid with a custom color scheme and showcase your multimedia content with post formats. Our default theme for 2017 works great in many languages, for any abilities, and on any device.","requires":"4.7","requires_php":"5.2.4","wporg":true},{"name":"Twenty Sixteen","slug":"twentysixteen","version":"2.5","preview_url":"https://wp-themes.com/twentysixteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentysixteen/screenshot.png?ver=2.5","rating":82,"num_ratings":79,"homepage":"https://wordpress.org/themes/twentysixteen/","description":"Twenty Sixteen is a modernized take on an ever-popular WordPress layout — the horizontal masthead with an optional right sidebar that works perfectly for blogs and websites. It has custom color options with beautiful default color schemes, a harmonious fluid grid using a mobile-first approach, and impeccable polish in every detail. Twenty Sixteen will make your WordPress look beautiful everywhere.","requires":"4.4","requires_php":"5.2.4","wporg":true},{"name":"Twenty Fifteen","slug":"twentyfifteen","version":"3.0","preview_url":"https://wp-themes.com/twentyfifteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyfifteen/screenshot.png?ver=3.0","rating":88,"num_ratings":50,"homepage":"https://wordpress.org/themes/twentyfifteen/","description":"Our 2015 default theme is clean, blog-focused, and designed for clarity. Twenty Fifteen's simple, straightforward typography is readable on a wide variety of screen sizes, and suitable for multiple languages. We designed it using a mobile-first approach, meaning your content takes center-stage, regardless of whether your visitors arrive by smartphone, tablet, laptop, or desktop computer.","requires":false,"requires_php":"5.2.4","wporg":true}] \ No newline at end of file +[{"name":"Sydney","slug":"sydney","version":"1.79","preview_url":"https://wp-themes.com/sydney/","author":{"user_nicename":"athemes","profile":"https://profiles.wordpress.org/athemes","avatar":"https://secure.gravatar.com/avatar/0fe6c4dee6e201e81783d8a0ee12d83b?s=96&d=monsterid&r=g","display_name":"athemes","author":"aThemes","author_url":"https://athemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/sydney/screenshot.png?ver=1.79","rating":98,"num_ratings":496,"homepage":"https://wordpress.org/themes/sydney/","description":"Sydney is a powerful business theme that provides a fast way for companies or freelancers to create an awesome online presence. As well as being fully compatible with Elementor, Sydney brings plenty of customization possibilities like access to all Google Fonts, full color control, layout control, logo upload, full screen slider, header image, sticky navigation and much more. Also, Sydney provides all the construction blocks you need to rapidly create an engaging front page. Looking for a quick start with Sydney? With just a few clicks, you can import one of our existing demos (https://athemes.com/sydney-demos/)","requires":false,"requires_php":"5.6","wporg":true},{"name":"Really Simple","slug":"really-simple","version":"1.0.7","preview_url":"https://wp-themes.com/really-simple/","author":{"user_nicename":"flauberthenriques","profile":"https://profiles.wordpress.org/flauberthenriques","avatar":"https://secure.gravatar.com/avatar/d524eb0811fa44be90481509b000c779?s=96&d=monsterid&r=g","display_name":"Flaubert Henriques","author":"Flaubert Henriques","author_url":"https://profiles.wordpress.org/flauberthenriques/"},"screenshot_url":"//ts.w.org/wp-content/themes/really-simple/screenshot.png?ver=1.0.7","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/really-simple/","description":"Really Simple is a theme for bloggers and writers who need a ultra light and fast theme. The theme focuses on simplicity and loading speed. Yes, Really Simple Theme is also fully AMP compatible. Check the readme.txt file and leave the sidebar perfect after WordPress 5.8 update.","requires":"5.3","requires_php":"7.0","wporg":true},{"name":"Artpop","slug":"artpop","version":"1.0.7","preview_url":"https://wp-themes.com/artpop/","author":{"user_nicename":"designlabthemes","profile":"https://profiles.wordpress.org/designlabthemes","avatar":"https://secure.gravatar.com/avatar/956873f77232371cb89d8a0d7a516354?s=96&d=monsterid&r=g","display_name":"designlabthemes","author":"Design Lab","author_url":"https://www.designlabthemes.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/artpop/screenshot.png?ver=1.0.7","rating":100,"num_ratings":1,"homepage":"https://wordpress.org/themes/artpop/","description":"Artpop is a beautiful Gutenberg-first WordPress theme, carefully designed to help you build your online brand. Unleash your creativity, Artpop takes care of the rest! Well documented and easy to use even for WordPress beginners, Artpop is perfect for a blog, personal portfolio, small business website, and WooCommerce storefront. Easily set your logo, change colors, and create awesome layouts to give your website a truly unique look.","requires":"4.7","requires_php":"5.6","wporg":true},{"name":"Michelle","slug":"michelle","version":"1.2.0","preview_url":"https://wp-themes.com/michelle/","author":{"user_nicename":"webmandesign","profile":"https://profiles.wordpress.org/webmandesign","avatar":"https://secure.gravatar.com/avatar/f4a334f9f5af61b2bd22fcaadb04dd06?s=96&d=monsterid&r=g","display_name":"WebMan Design | Oliver Juhas","author":"WebMan Design","author_url":"https://www.webmandesign.eu/"},"screenshot_url":"//ts.w.org/wp-content/themes/michelle/screenshot.png?ver=1.2.0","rating":100,"num_ratings":3,"homepage":"https://wordpress.org/themes/michelle/","description":"Michelle is accessibility ready WordPress theme for creating inclusive websites easily and with fun using block editor. Useful block patterns, block styles, templates and featured posts functionality allow you to build an eyecatching website in no time. Customize site footer and error 404 page content with block editor! The theme also works with Beaver Builder, Elementor, or any other page builder. It also supports theme builders! Michelle elevates your business, eCommerce, portfolio, or blog website. Check out the demo at https://themedemos.webmandesign.eu/michelle/ and documentation at https://webmandesign.github.io/docs/michelle/","requires":"5.5","requires_php":"7.0","wporg":true},{"name":"Miniva","slug":"miniva","version":"1.6.3","preview_url":"https://wp-themes.com/miniva/","author":{"user_nicename":"tajam","profile":"https://profiles.wordpress.org/tajam","avatar":"https://secure.gravatar.com/avatar/378d4e715829ccf6f1fbe6dfef6eb539?s=96&d=monsterid&r=g","display_name":"Tajam","author":"Tajam","author_url":"https://tajam.id/"},"screenshot_url":"//ts.w.org/wp-content/themes/miniva/screenshot.png?ver=1.6.3","rating":100,"num_ratings":6,"homepage":"https://wordpress.org/themes/miniva/","description":"A fast, lightweight, and mobile-friendly WordPress theme for bloggers. Miniva is built with simplicity, accessibility and performance in mind. The clean and minimal design helps readers focus on your content. It supports AMP and several Jetpack modules including featured content, infinite scroll, content options and social menu. See the theme demo at https://tajam.id/miniva-demo/","requires":"4.5","requires_php":"5.3","wporg":true},{"name":"Iknow","slug":"iknow","version":"1.2.6","preview_url":"https://wp-themes.com/iknow/","author":{"user_nicename":"wpcalc","profile":"https://profiles.wordpress.org/wpcalc","avatar":"https://secure.gravatar.com/avatar/64ca4933fab3d5e50383f0b514acd5f6?s=96&d=monsterid&r=g","display_name":"Wow-Company","author":"Wow-Company","author_url":"https://wow-company.com"},"screenshot_url":"//ts.w.org/wp-content/themes/iknow/screenshot.png?ver=1.2.6","rating":98,"num_ratings":9,"homepage":"https://wordpress.org/themes/iknow/","description":"Iknow WordPress Theme has a minimalistic, responsive and mobile-friendly design. Easy and fast theme. The theme is perfect for creating Knowledge Base, Helpdesk, Wiki and FAQ websites. Ability to set custom icons for each category and tag. Manage the display of categories on the main page of the site. The integrated post rating system VoteUp/VoteDown. Breadcrumbs for easy site navigation. Custom widget to display the current navigation in a category and in a separate post. You can view the appearance and features of the theme on the site https://wow-company.com/wp-theme-iknow/. Documentation https://wow-company.com/faq/category/wow-themes/iknow/","requires":false,"requires_php":"5.6","wporg":true},{"name":"Kadence","slug":"kadence","version":"1.1.3","preview_url":"https://wp-themes.com/kadence/","author":{"user_nicename":"britner","profile":"https://profiles.wordpress.org/britner","avatar":"https://secure.gravatar.com/avatar/3276133b8df529e6e1e58586ab1a309e?s=96&d=monsterid&r=g","display_name":"Ben Ritner - Kadence WP","author":"Kadence WP","author_url":"https://www.kadencewp.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/kadence/screenshot.png?ver=1.1.3","rating":98,"num_ratings":135,"homepage":"https://wordpress.org/themes/kadence/","description":"Kadence Theme is a lightweight yet full featured WordPress theme for creating beautiful fast loading and accessible websites, easier than ever. It features an easy to use drag and drop header and footer builder to build any type of header in minutes. It features a full library of gorgeous starter templates that are easy to modify with our intelligent global font and color controls. With extensive integration with the most popular 3rd party plugins, you can quickly build impressive ecommerce websites, course websites, business websites, and more.","requires":"5.0","requires_php":"7.0","wporg":true},{"name":"Izo","slug":"izo","version":"1.0.12","preview_url":"https://wp-themes.com/izo/","author":{"user_nicename":"elfwp","profile":"https://profiles.wordpress.org/elfwp","avatar":"https://secure.gravatar.com/avatar/1cfedf4555fea4d8fbba2947635586ea?s=96&d=monsterid&r=g","display_name":"elfwp","author":"elfWP","author_url":"https://elfwp.com"},"screenshot_url":"//ts.w.org/wp-content/themes/izo/screenshot.png?ver=1.0.12","rating":90,"num_ratings":2,"homepage":"https://wordpress.org/themes/izo/","description":"Izo a fast, lightweight, native AMP and fully customizable multipurpose WordPress theme. Features include compatibility with many popular plugins like Elementor and other page builders, WooCommerce, WPML, LifterLMS and more. There is also full support for the new WordPress block editor. Izo is fully responsive and our users can take advantage of the many customizer options to easily change styles. Also, if you're looking for a quick start, we're offering a bunch of free starter sites, ready to easily import.","requires":false,"requires_php":"5.6","wporg":true},{"name":"OceanWP","slug":"oceanwp","version":"3.0.5","preview_url":"https://wp-themes.com/oceanwp/","author":{"user_nicename":"oceanwp","profile":"https://profiles.wordpress.org/oceanwp","avatar":"https://secure.gravatar.com/avatar/05f8d3fe2ccb6479bac14e4d40b406dd?s=96&d=monsterid&r=g","display_name":"oceanwp","author":"Nick","author_url":"https://oceanwp.org/about-me/"},"screenshot_url":"//ts.w.org/wp-content/themes/oceanwp/screenshot.png?ver=3.0.5","rating":98,"num_ratings":4913,"homepage":"https://wordpress.org/themes/oceanwp/","description":"OceanWP is the perfect theme for your project. Lightweight and highly extendable, it will enable you to create almost any type of website such a blog, portfolio, business website and WooCommerce storefront with a beautiful & professional design. Very fast, responsive, RTL & translation ready, best SEO practices, unique WooCommerce features to increase conversion and much more. You can even edit the settings on tablet & mobile so your site looks good on every device. Work with the most popular page builders as Elementor, Beaver Builder, Brizy, Visual Composer, Divi, SiteOrigin, etc... Developers will love his extensible codebase making it a joy to customize and extend. Best friend of Elementor & WooCommerce. Looking for a Multi-Purpose theme? Look no further! Check the demos to realize that it's the only theme you will ever need: https://oceanwp.org/demos/","requires":"5.3","requires_php":"7.2","wporg":true},{"name":"Twenty Twenty-One","slug":"twentytwentyone","version":"1.4","preview_url":"https://wp-themes.com/twentytwentyone/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentytwentyone/screenshot.png?ver=1.4","rating":82,"num_ratings":32,"homepage":"https://wordpress.org/themes/twentytwentyone/","description":"Twenty Twenty-One is a blank canvas for your ideas and it makes the block editor your best brush. With new block patterns, which allow you to create a beautiful layout in a matter of seconds, this theme’s soft colors and eye-catching — yet timeless — design will let your work shine. Take it for a spin! See how Twenty Twenty-One elevates your portfolio, business website, or personal blog.","requires":"5.3","requires_php":"5.6","wporg":true},{"slug":"occasio","version":"","preview_url":"https://themezee.com/themes/occasio/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/12/occasio.jpg","rating":0,"num_ratings":0,"homepage":"https://themezee.com/themes/occasio/","requires":"","requires_php":"","wporg":false},{"name":"Tortuga","slug":"tortuga","version":"2.3.4","preview_url":"https://wp-themes.com/tortuga/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/tortuga/screenshot.jpg?ver=2.3.4","rating":96,"num_ratings":19,"homepage":"https://wordpress.org/themes/tortuga/","description":"Tortuga is a highly flexible and adventurous WordPress theme for your pirate magazine or any news related website. It supports three different post layouts, two sidebar schemes and a Magazine Homepage template based on widgets. Other highlights of Tortuga are the beautiful post slider and header widgets area. Arrr!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Treville","slug":"treville","version":"2.1.4","preview_url":"https://wp-themes.com/treville/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/treville/screenshot.jpg?ver=2.1.4","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/treville/","description":"An elegant Blogging & Magazine WordPress Theme with subtle colors and great typography. Treville supports two navigation menus, advanced post settings and a post slider with fullscreen images!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Wellington","slug":"wellington","version":"2.1.4","preview_url":"https://wp-themes.com/wellington/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/wellington/screenshot.jpg?ver=2.1.4","rating":100,"num_ratings":12,"homepage":"https://wordpress.org/themes/wellington/","description":"Wellington is a clean and simple Magazine WordPress theme with beautiful typography and subtle colors. The theme includes two different post layouts, a featured post slider and thoughtful theme settings in the Customizer.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Poseidon","slug":"poseidon","version":"2.3.4","preview_url":"https://wp-themes.com/poseidon/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/poseidon/screenshot.jpg?ver=2.3.4","rating":96,"num_ratings":16,"homepage":"https://wordpress.org/themes/poseidon/","description":"Poseidon is an elegant designed WordPress theme featuring a splendid fullscreen image slideshow. The clean typography and spacious white layout makes it great to share your stories. You can use the theme as simple blog or easily create a news website with the widget-based Magazine Homepage template.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Napoli","slug":"napoli","version":"2.2.4","preview_url":"https://wp-themes.com/napoli/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/napoli/screenshot.jpg?ver=2.2.4","rating":100,"num_ratings":4,"homepage":"https://wordpress.org/themes/napoli/","description":"Napoli is a beautiful WordPress theme perfectly suited for a food magazine. It features a great featured post slider, smooth typography and a grid-layout for posts. Bon appetit!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Mercia","slug":"mercia","version":"1.9.7","preview_url":"https://wp-themes.com/mercia/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/mercia/screenshot.jpg?ver=1.9.7","rating":100,"num_ratings":1,"homepage":"https://wordpress.org/themes/mercia/","description":"Mercia is a flexible and versatile theme perfect for lifestyle, travel, or fashion magazines. It features a modern and minimalist design with great typropaphy. Of course it works on all screen sizes. With multiple blog layouts and powerful Magazine widgets, you can easily create a stunning and dynamic news website in just a few minutes.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Maxwell","slug":"maxwell","version":"2.3.4","preview_url":"https://wp-themes.com/maxwell/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/maxwell/screenshot.jpg?ver=2.3.4","rating":100,"num_ratings":6,"homepage":"https://wordpress.org/themes/maxwell/","description":"Maxwell is a minimalistic and elegant WordPress theme featuring an ultra clean magazine layout. With a beautiful typography, various post layouts and a gorgeous featured posts slideshow Maxwell truly helps you to stand out.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Harrison","slug":"harrison","version":"1.3.4","preview_url":"https://wp-themes.com/harrison/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/harrison/screenshot.jpg?ver=1.3.4","rating":80,"num_ratings":1,"homepage":"https://wordpress.org/themes/harrison/","description":"Harrison is a highly versatile WordPress Theme and was specially designed for use with the new WordPress Block Editor. The theme supports the latest Gutenberg features and provides different blog layouts and extensive post settings. The clean and elegant design is perfect to create all kinds of websites. You should really try it!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Gridbox","slug":"gridbox","version":"2.3.4","preview_url":"https://wp-themes.com/gridbox/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/gridbox/screenshot.jpg?ver=2.3.4","rating":74,"num_ratings":6,"homepage":"https://wordpress.org/themes/gridbox/","description":"Gridbox is a clean and solid WordPress theme featuring a three-column grid-layout for posts. The theme works out of the box and does not require any complicated setup. It is perfectly suited for a simple magazine, blog or portfolio website.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Chronus","slug":"chronus","version":"2.0.5","preview_url":"https://wp-themes.com/chronus/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/chronus/screenshot.jpg?ver=2.0.5","rating":80,"num_ratings":5,"homepage":"https://wordpress.org/themes/chronus/","description":"Chronus is a fast and lightweight WordPress Theme created for magazines, news websites and personal blogs. The Featured Content section and flexible Magazine Widgets give you the ability to highlight your most important posts on the home page. The minimalistic and responsive design focuses on your content and looks great on any screen size.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Donovan","slug":"donovan","version":"1.8.4","preview_url":"https://wp-themes.com/donovan/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/donovan/screenshot.jpg?ver=1.8.4","rating":96,"num_ratings":16,"homepage":"https://wordpress.org/themes/donovan/","description":"Donovan is a flexible, yet easy-to-use blogging theme with a clean and modern design. It features an elegant mobile-first design, three different blog layouts and extensive post settings. Donovan is perfect for your personal blog or for any content-focused website.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Yosemite Lite","slug":"yosemite-lite","version":"1.2.1","preview_url":"https://wp-themes.com/yosemite-lite/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/yosemite-lite/screenshot.jpg?ver=1.2.1","rating":60,"num_ratings":2,"homepage":"https://wordpress.org/themes/yosemite-lite/","description":"Yosemite is a beautiful WordPress blog theme for personal blogs. Yosemite has a modern, clean and elegant look and lots of customization for bloggers. Built on the latest technology of WordPress, Yosemite is lightweight, fast and optimized for all mobile phones.","requires":false,"requires_php":false,"wporg":true},{"name":"Justread","slug":"justread","version":"1.3.0","preview_url":"https://wp-themes.com/justread/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/justread/screenshot.jpg?ver=1.3.0","rating":100,"num_ratings":5,"homepage":"https://wordpress.org/themes/justread/","description":"Justread is a clean and modern WordPress theme that focuses on reading experience. Justread has a grid layout with single column content. The theme uses system fonts and SVG for fast loading. Enjoy reading long content with comfortability.","requires":false,"requires_php":"5.6","wporg":true},{"name":"Floral Lite","slug":"floral-lite","version":"1.4","preview_url":"https://wp-themes.com/floral-lite/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/floral-lite/screenshot.jpg?ver=1.4","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/floral-lite/","description":"Floral is a beautiful WordPress blog theme for personal blogs. Floral has a modern, clean and elegant look and lots of customization for bloggers. Built on the latest technology of WordPress, Floral is lightweight, fast and optimized for all mobile phones.","requires":"4.5","requires_php":"5.6","wporg":true},{"name":"EightyDays Lite","slug":"eightydays-lite","version":"2.2.7","preview_url":"https://wp-themes.com/eightydays-lite/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"http://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/eightydays-lite/screenshot.png?ver=2.2.7","rating":90,"num_ratings":4,"homepage":"https://wordpress.org/themes/eightydays-lite/","description":"EightyDays is a beautiful WordPress travel theme for travel blogs or magazines. EightyDays has a modern, clean and elegant look and lots of customization for bloggers. Built on the latest technology of WordPress, EightyDays is lightweight, fast and optimized for all mobile phones.","requires":false,"requires_php":false,"wporg":true},{"name":"eStar","slug":"estar","version":"1.3.4","preview_url":"https://wp-themes.com/estar/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/estar/screenshot.png?ver=1.3.4","rating":100,"num_ratings":3,"homepage":"https://wordpress.org/themes/estar/","description":"eStar is a super fast, lightweight (less than 10KB on the front end), responsive and highly customizable WordPress theme suitable for blog, personal portfolio and business websites. It works perfectly with Gutenberg and all WordPress blocks. You can also pair it with any page builder plugin like Elementor, Beaver Builder, Visual Composer, SiteOrigin, Divi, Thrive Architect, Brizy and more. eStar is written from scratch with performance, extensibility, usability and SEO in mind. The theme follows best practices, well-coded and follows the latest web standards (HTML5, SVG, JavaScript). Some of the other features: microdata integration, widget areas, sidebar layouts, custom colors, custom Google fonts, translation ready. Looking for a perfect base theme? Look no further. eStar is fast, fully customizable WordPress theme that you can use for building any kind of website like business agencies, corporate, portfolio, education, university portal, consulting, church, restaurant, medical and so on. Learn more about the theme at https://gretathemes.com/wordpress-themes/estar/","requires":false,"requires_php":"5.6","wporg":true},{"slug":"stow-2","version":"","preview_url":"https://wordpress.com/theme/stow","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/stow.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/stow","requires":"","requires_php":"","wporg":false},{"slug":"shawburn","version":"","preview_url":"https://wordpress.com/theme/shawburn","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/shawborn.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/shawburn","requires":"","requires_php":"","wporg":false},{"slug":"rivington-2","version":"","preview_url":"https://wordpress.com/theme/rivington","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/rivington.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/rivington","requires":"","requires_php":"","wporg":false},{"slug":"redhill-2","version":"","preview_url":"https://wordpress.com/theme/redhill","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/redhill.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/redhill","requires":"","requires_php":"","wporg":false},{"slug":"morden-2","version":"","preview_url":"https://wordpress.com/theme/morden","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/morden.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/morden","requires":"","requires_php":"","wporg":false},{"slug":"maywood-2","version":"","preview_url":"https://wordpress.com/theme/maywood","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/maywood.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/maywood","requires":"","requires_php":"","wporg":false},{"slug":"mayland","version":"","preview_url":"https://wordpress.com/theme/mayland","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/mmayland.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/mayland","requires":"","requires_php":"","wporg":false},{"slug":"leven-2","version":"","preview_url":"https://wordpress.com/theme/leven","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/leven.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/leven","requires":"","requires_php":"","wporg":false},{"slug":"hever-2","version":"","preview_url":"https://wordpress.com/theme/hever","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/hever.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/hever","requires":"","requires_php":"","wporg":false},{"slug":"exford-2","version":"","preview_url":"https://wordpress.com/theme/exford","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/exford.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/exford","requires":"","requires_php":"","wporg":false},{"slug":"brompton-2","version":"","preview_url":"https://wordpress.com/theme/brompton","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/brompton.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/brompton","requires":"","requires_php":"","wporg":false},{"slug":"barnsbury-2","version":"","preview_url":"https://wordpress.com/theme/barnsbury","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/Barnsbury.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/barnsbury","requires":"","requires_php":"","wporg":false},{"slug":"balasana-2","version":"","preview_url":"https://wordpress.com/theme/balasana","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/Balasana.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/balasana","requires":"","requires_php":"","wporg":false},{"slug":"alves-2","version":"","preview_url":"https://wordpress.com/theme/alves","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/Alves.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/alves","requires":"","requires_php":"","wporg":false},{"slug":"varia-2","version":"","preview_url":"https://wordpress.com/theme/varia","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/varia.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/varia","requires":"","requires_php":"","wporg":false},{"name":"Activation","slug":"activation","version":"1.2.2","preview_url":"https://wp-themes.com/activation/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/activation/screenshot.png?ver=1.2.2","rating":100,"num_ratings":1,"homepage":"https://wordpress.org/themes/activation/","description":"Activation is a Primer child theme with a colorful, fitness-focused design.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":false,"wporg":true},{"name":"Velux","slug":"velux","version":"1.1.3","preview_url":"https://wp-themes.com/velux/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/velux/screenshot.png?ver=1.1.3","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/velux/","description":"Velux is a Primer child theme with a clean, professional, and upscale design.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":"5.6.0","wporg":true},{"name":"Scribbles","slug":"scribbles","version":"1.1.2","preview_url":"https://wp-themes.com/scribbles/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/scribbles/screenshot.png?ver=1.1.2","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/scribbles/","description":"Scribbles is a Primer child theme with a playful and fun mood.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.1","requires_php":false,"wporg":true},{"name":"Ascension","slug":"ascension","version":"1.1.5","preview_url":"https://wp-themes.com/ascension/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/ascension/screenshot.png?ver=1.1.5","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/ascension/","description":"Ascension is a Primer child theme with a business-oriented design.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":"5.6.0","wporg":true},{"name":"Uptown Style","slug":"uptown-style","version":"1.1.3","preview_url":"https://wp-themes.com/uptown-style/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/uptown-style/screenshot.png?ver=1.1.3","rating":100,"num_ratings":3,"homepage":"https://wordpress.org/themes/uptown-style/","description":"Uptown Style is a Primer child theme with elegance and class.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":"5.6.0","wporg":true},{"name":"Go","slug":"go","version":"1.4.4","preview_url":"https://wp-themes.com/go/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":"GoDaddy","author_url":"https://www.godaddy.com"},"screenshot_url":"//ts.w.org/wp-content/themes/go/screenshot.png?ver=1.4.4","rating":94,"num_ratings":14,"homepage":"https://wordpress.org/themes/go/","description":"Go is an innovative, Gutenberg-first WordPress theme, hyper-focused on empowering makers to build beautifully rich websites with WordPress.","requires":false,"requires_php":"5.6","wporg":true},{"slug":"navigation-pro","version":"","preview_url":"https://my.studiopress.com/themes/navigation/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/02/navigationPro.jpg","rating":0,"num_ratings":0,"homepage":"https://my.studiopress.com/themes/navigation/","requires":"","requires_php":"","wporg":false},{"name":"Memory","slug":"memory","version":"2.0.1","preview_url":"https://wp-themes.com/memory/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/memory/screenshot.png?ver=2.0.1","rating":60,"num_ratings":1,"homepage":"https://wordpress.org/themes/memory/","description":"Clean and beautiful personal blog theme.","requires":"4.5","requires_php":"5.2","wporg":true},{"slug":"sacha","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/sacha9.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","requires":"","requires_php":"","wporg":false},{"slug":"scott-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/scott.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","requires":"","requires_php":"","wporg":false},{"slug":"katharine-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/katharine.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","requires":"","requires_php":"","wporg":false},{"slug":"joseph-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/joseph-1.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","requires":"","requires_php":"","wporg":false},{"slug":"nelson-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/nelson.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","requires":"","requires_php":"","wporg":false},{"slug":"newspack","version":"","preview_url":"https://github.com/Automattic/newspack-theme","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2019/11/newspack.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme","requires":"","requires_php":"","wporg":false},{"name":"Twenty Twenty","slug":"twentytwenty","version":"1.8","preview_url":"https://wp-themes.com/twentytwenty/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentytwenty/screenshot.png?ver=1.8","rating":88,"num_ratings":60,"homepage":"https://wordpress.org/themes/twentytwenty/","description":"Our default theme for 2020 is designed to take full advantage of the flexibility of the block editor. Organizations and businesses have the ability to create dynamic landing pages with endless layouts using the group and column blocks. The centered content column and fine-tuned typography also makes it perfect for traditional blogs. Complete editor styles give you a good idea of what your content will look like, even before you publish. You can give your site a personal touch by changing the background colors and the accent color in the Customizer. The colors of all elements on your site are automatically calculated based on the colors you pick, ensuring a high, accessible color contrast for your visitors.","requires":"4.7","requires_php":"5.2.4","wporg":true},{"name":"Primer","slug":"primer","version":"1.8.9","preview_url":"https://wp-themes.com/primer/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/primer/screenshot.png?ver=1.8.9","rating":90,"num_ratings":15,"homepage":"https://wordpress.org/themes/primer/","description":"Primer is a powerful theme that brings clarity to your content in a fresh design.","requires":false,"requires_php":false,"wporg":true},{"slug":"essence-pro-theme","version":"","preview_url":"https://my.studiopress.com/themes/essence/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2019/07/cropped-Essence-Pro.png","rating":0,"num_ratings":0,"homepage":"https://my.studiopress.com/themes/essence/","requires":"","requires_php":"","wporg":false},{"slug":"genesis-theme-framework","version":"","preview_url":"https://my.studiopress.com/themes/genesis/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2019/07/cropped-Genesis.png","rating":0,"num_ratings":0,"homepage":"https://my.studiopress.com/themes/genesis/","requires":"","requires_php":"","wporg":false},{"name":"Twenty Fourteen","slug":"twentyfourteen","version":"3.2","preview_url":"https://wp-themes.com/twentyfourteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyfourteen/screenshot.png?ver=3.2","rating":88,"num_ratings":93,"homepage":"https://wordpress.org/themes/twentyfourteen/","description":"In 2014, our default theme lets you create a responsive magazine website with a sleek, modern design. Feature your favorite homepage content in either a grid or a slider. Use the three widget areas to customize your website, and change your content's layout with a full-width page template and a contributor page to show off your authors. Creating a magazine website with WordPress has never been easier.","requires":false,"requires_php":"5.2.4","wporg":true},{"name":"Twenty Thirteen","slug":"twentythirteen","version":"3.4","preview_url":"https://wp-themes.com/twentythirteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentythirteen/screenshot.png?ver=3.4","rating":82,"num_ratings":62,"homepage":"https://wordpress.org/themes/twentythirteen/","description":"The 2013 theme for WordPress takes us back to the blog, featuring a full range of post formats, each displayed beautifully in their own unique way. Design details abound, starting with a vibrant color scheme and matching header images, beautiful typography and icons, and a flexible layout that looks great on any device, big or small.","requires":"3.6","requires_php":"5.2.4","wporg":true},{"name":"Twenty Eleven","slug":"twentyeleven","version":"3.9","preview_url":"https://wp-themes.com/twentyeleven/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyeleven/screenshot.png?ver=3.9","rating":92,"num_ratings":49,"homepage":"https://wordpress.org/themes/twentyeleven/","description":"The 2011 theme for WordPress is sophisticated, lightweight, and adaptable. Make it yours with a custom menu, header image, and background -- then go further with available theme options for light or dark color scheme, custom link colors, and three layout choices. Twenty Eleven comes equipped with a Showcase page template that transforms your front page into a showcase to show off your best content, widget support galore (sidebar, three footer areas, and a Showcase page widget area), and a custom \"Ephemera\" widget to display your Aside, Link, Quote, or Status posts. Included are styles for print and for the admin editor, support for featured images (as custom header images on posts and pages and as large images on featured \"sticky\" posts), and special styles for six different post formats.","requires":false,"requires_php":"5.2.4","wporg":true},{"name":"Twenty Ten","slug":"twentyten","version":"3.5","preview_url":"https://wp-themes.com/twentyten/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyten/screenshot.png?ver=3.5","rating":94,"num_ratings":50,"homepage":"https://wordpress.org/themes/twentyten/","description":"The 2010 theme for WordPress is stylish, customizable, simple, and readable -- make it yours with a custom menu, header image, and background. Twenty Ten supports six widgetized areas (two in the sidebar, four in the footer) and featured images (thumbnails for gallery posts and custom header images for posts and pages). It includes stylesheets for print and the admin Visual Editor, special styles for posts in the \"Asides\" and \"Gallery\" categories, and has an optional one-column page template that removes the sidebar.","requires":"3.0","requires_php":"5.2.4","wporg":true},{"name":"Zakra","slug":"zakra","version":"2.0.3","preview_url":"https://wp-themes.com/zakra/","author":{"user_nicename":"themegrill","profile":"https://profiles.wordpress.org/themegrill","avatar":"https://secure.gravatar.com/avatar/fa3cda768036cc3983458ed23394a43d?s=96&d=monsterid&r=g","display_name":"ThemeGrill","author":"ThemeGrill","author_url":"https://themegrill.com"},"screenshot_url":"//ts.w.org/wp-content/themes/zakra/screenshot.jpg?ver=2.0.3","rating":100,"num_ratings":474,"homepage":"https://wordpress.org/themes/zakra/","description":"Zakra is flexible, fast, lightweight and modern multipurpose theme that comes with many starter free sites (currently 10+ free starter sites and more will be added later) that you can use to make your site beautiful and professional. Check all the starter sites at https://zakratheme.com/demos. Suitable for personal blog, portfolio, WooCommerce stores, business websites and niche-based sites (like Cafe, Spa, Charity, Yoga, Wedding, Dentist, Education etc) as well. Works with Elementor plus other major page builders so you can create any layout you want. The theme is responsive, Gutenberg compatible, SEO friendly, translation ready and major WordPress plugins compatible.","requires":false,"requires_php":"5.6","wporg":true},{"name":"Neve","slug":"neve","version":"3.0.2","preview_url":"https://wp-themes.com/neve/","author":{"user_nicename":"themeisle","profile":"https://profiles.wordpress.org/themeisle","avatar":"https://secure.gravatar.com/avatar/a0ec097eaf5f30933eb00c1175d4bd55?s=96&d=monsterid&r=g","display_name":"Themeisle","author":"ThemeIsle","author_url":"https://themeisle.com"},"screenshot_url":"//ts.w.org/wp-content/themes/neve/screenshot.png?ver=3.0.2","rating":96,"num_ratings":804,"homepage":"https://wordpress.org/themes/neve/","description":"Neve is a super fast, easily customizable, multi-purpose theme. It’s perfect for blogs, small business, startups, agencies, firms, e-commerce shops (WooCommerce storefront) as well as personal portfolio sites and most types of projects. A fully AMP optimized and responsive theme, Neve will load in mere seconds and adapt perfectly on any viewing device. While it is lightweight and has a minimalist design, the theme is highly extendable, it has a highly SEO optimized code, resulting in top rankings in Google search results. Neve works perfectly with Gutenberg and the most popular page builders (Elementor, Brizy, Beaver Builder, Visual Composer, SiteOrigin, Divi). Neve is also WooCommerce ready, responsive, RTL & translation ready. Look no further. Neve is the perfect theme for you!","requires":false,"requires_php":"7.0","wporg":true},{"name":"Astra","slug":"astra","version":"3.6.9","preview_url":"https://wp-themes.com/astra/","author":{"user_nicename":"brainstormforce","profile":"https://profiles.wordpress.org/brainstormforce","avatar":"https://secure.gravatar.com/avatar/9f4255d653745eaa037105cd5eab2295?s=96&d=monsterid&r=g","display_name":"Brainstorm Force","author":"Brainstorm Force","author_url":"https://wpastra.com/about/"},"screenshot_url":"//ts.w.org/wp-content/themes/astra/screenshot.jpg?ver=3.6.9","rating":98,"num_ratings":4980,"homepage":"https://wordpress.org/themes/astra/","description":"Astra is fast, fully customizable & beautiful WordPress theme suitable for blog, personal portfolio, business website and WooCommerce storefront. It is very lightweight (less than 50KB on frontend) and offers unparalleled speed. Built with SEO in mind, Astra comes with Schema.org code integrated and is Native AMP ready so search engines will love your site. It offers special features and templates so it works perfectly with all page builders like Elementor, Beaver Builder, Visual Composer, SiteOrigin, Divi, etc. Some of the other features: # WooCommerce Ready # Responsive # RTL & Translation Ready # Extendible with premium addons # Regularly updated # Designed, Developed, Maintained & Supported by Brainstorm Force. Looking for a perfect base theme? Look no further. Astra is fast, fully customizable and WooCommerce ready theme that you can use for building any kind of website!","requires":"5.3","requires_php":"5.3","wporg":true},{"name":"Twenty Twelve","slug":"twentytwelve","version":"3.5","preview_url":"https://wp-themes.com/twentytwelve/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentytwelve/screenshot.png?ver=3.5","rating":92,"num_ratings":155,"homepage":"https://wordpress.org/themes/twentytwelve/","description":"The 2012 theme for WordPress is a fully responsive theme that looks great on any device. Features include a front page template with its own widgets, an optional display font, styling for post formats on both index and single views, and an optional no-sidebar page template. Make it yours with a custom menu, header image, and background.","requires":"3.5","requires_php":"5.2.4","wporg":true},{"name":"Twenty Nineteen","slug":"twentynineteen","version":"2.1","preview_url":"https://wp-themes.com/twentynineteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentynineteen/screenshot.png?ver=2.1","rating":74,"num_ratings":59,"homepage":"https://wordpress.org/themes/twentynineteen/","description":"Our 2019 default theme is designed to show off the power of the block editor. It features custom styles for all the default blocks, and is built so that what you see in the editor looks like what you'll see on your website. Twenty Nineteen is designed to be adaptable to a wide range of websites, whether you’re running a photo blog, launching a new business, or supporting a non-profit. Featuring ample whitespace and modern sans-serif headlines paired with classic serif body text, it's built to be beautiful on all screen sizes.","requires":"4.9.6","requires_php":"5.2.4","wporg":true},{"name":"Twenty Seventeen","slug":"twentyseventeen","version":"2.8","preview_url":"https://wp-themes.com/twentyseventeen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyseventeen/screenshot.png?ver=2.8","rating":88,"num_ratings":114,"homepage":"https://wordpress.org/themes/twentyseventeen/","description":"Twenty Seventeen brings your site to life with header video and immersive featured images. With a focus on business sites, it features multiple sections on the front page as well as widgets, navigation and social menus, a logo, and more. Personalize its asymmetrical grid with a custom color scheme and showcase your multimedia content with post formats. Our default theme for 2017 works great in many languages, for any abilities, and on any device.","requires":"4.7","requires_php":"5.2.4","wporg":true},{"name":"Twenty Sixteen","slug":"twentysixteen","version":"2.5","preview_url":"https://wp-themes.com/twentysixteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentysixteen/screenshot.png?ver=2.5","rating":82,"num_ratings":79,"homepage":"https://wordpress.org/themes/twentysixteen/","description":"Twenty Sixteen is a modernized take on an ever-popular WordPress layout — the horizontal masthead with an optional right sidebar that works perfectly for blogs and websites. It has custom color options with beautiful default color schemes, a harmonious fluid grid using a mobile-first approach, and impeccable polish in every detail. Twenty Sixteen will make your WordPress look beautiful everywhere.","requires":"4.4","requires_php":"5.2.4","wporg":true},{"name":"Twenty Fifteen","slug":"twentyfifteen","version":"3.0","preview_url":"https://wp-themes.com/twentyfifteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyfifteen/screenshot.png?ver=3.0","rating":88,"num_ratings":50,"homepage":"https://wordpress.org/themes/twentyfifteen/","description":"Our 2015 default theme is clean, blog-focused, and designed for clarity. Twenty Fifteen's simple, straightforward typography is readable on a wide variety of screen sizes, and suitable for multiple languages. We designed it using a mobile-first approach, meaning your content takes center-stage, regardless of whether your visitors arrive by smartphone, tablet, laptop, or desktop computer.","requires":false,"requires_php":"5.2.4","wporg":true}] \ No newline at end of file diff --git a/includes/embeds/class-amp-twitter-embed-handler.php b/includes/embeds/class-amp-twitter-embed-handler.php index 9dd030b5164..c33c71e7915 100644 --- a/includes/embeds/class-amp-twitter-embed-handler.php +++ b/includes/embeds/class-amp-twitter-embed-handler.php @@ -19,6 +19,7 @@ class AMP_Twitter_Embed_Handler extends AMP_Base_Embed_Handler { /** * Default width. * + * @phpstan-ignore-next-line * @var int|string */ protected $DEFAULT_WIDTH = 'auto'; diff --git a/src/Admin/PluginInstallTab.php b/src/Admin/PluginInstallTab.php index 288d0f98346..d85d2e71725 100644 --- a/src/Admin/PluginInstallTab.php +++ b/src/Admin/PluginInstallTab.php @@ -39,6 +39,8 @@ public function register() { add_filter( 'install_plugins_tabs', [ $this, 'add_tab' ] ); add_filter( 'install_plugins_table_api_args_amp', [ $this, 'amp_tab_args' ] ); add_filter( 'plugins_api', [ $this, 'plugins_api' ], 10, 3 ); + + add_action( 'install_plugins_amp', [ $this, 'install_plugin_amp' ] ); } /** @@ -77,10 +79,35 @@ public function amp_tab_args() { * @param string $action API Action. * @param array $args Args for plugin list. * - * @return array List of AMP compatible plugins. + * @return \stdClass|array List of AMP compatible plugins. */ public function plugins_api( $response, $action, $args ) { + $args = (array) $args; + if ( ! isset( $args['amp'] ) ) { + return $response; + } + + $plugin_json = AMP__DIR__ . '/data/plugins.json'; + $json_data = file_get_contents( $plugin_json ); + + $response = new \stdClass(); + $response->plugins = json_decode( $json_data, true ); + $response->info = [ + 'page' => 1, + 'pages' => 1, + 'results' => count( $response->plugins ), + ]; + return $response; } + + /** + * Content for AMP tab in plugin install screen. + * + * @return void + */ + public function install_plugin_amp() { + display_plugins_table(); + } } From 19f3e1573638762e056308ed77e89e54bb3cb821 Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Mon, 6 Sep 2021 17:12:27 +0530 Subject: [PATCH 007/105] Change the content of amp tab in install plugin page --- assets/css/src/admin-plugin-install.css | 17 + src/Admin/PluginInstallTab.php | 539 +++++++++++++++++++++++- 2 files changed, 541 insertions(+), 15 deletions(-) create mode 100644 assets/css/src/admin-plugin-install.css diff --git a/assets/css/src/admin-plugin-install.css b/assets/css/src/admin-plugin-install.css new file mode 100644 index 00000000000..291fba967ca --- /dev/null +++ b/assets/css/src/admin-plugin-install.css @@ -0,0 +1,17 @@ +.plugin-card-px-message { + text-align: center; + padding: 7px 20px; + clear: both; + background-color: #e7e7e7; + border-top: 2px solid #dcdcde; + color: #3c434a; +} + +.amp-logo-icon { + background-image: url("../images/amp-logo-icon.svg"); + background-color: transparent; + background-size: 20px 20px; + height: 20px; + width: 20px; + display: inline-block; +} diff --git a/src/Admin/PluginInstallTab.php b/src/Admin/PluginInstallTab.php index d85d2e71725..ca57bd5adbf 100644 --- a/src/Admin/PluginInstallTab.php +++ b/src/Admin/PluginInstallTab.php @@ -8,8 +8,11 @@ namespace AmpProject\AmpWP\Admin; use AmpProject\AmpWP\Infrastructure\Conditional; +use AmpProject\AmpWP\Infrastructure\Delayed; use AmpProject\AmpWP\Infrastructure\Registerable; use AmpProject\AmpWP\Infrastructure\Service; +use stdClass; +use function get_current_screen; /** * Add new tab (AMP) in plugin install screen in WordPress admin. @@ -17,7 +20,22 @@ * @since 2.2 * @internal */ -class PluginInstallTab implements Conditional, Service, Registerable { +class PluginInstallTab implements Conditional, Delayed, Service, Registerable { + + /** + * @var array List AMP plugins. + */ + protected $plugins = []; + + /** + * Get the action to use for registering the service. + * + * @return string Registration action to use. + */ + public static function get_registration_action() { + + return 'current_screen'; + } /** * Check whether the conditional object is currently needed. @@ -26,7 +44,29 @@ class PluginInstallTab implements Conditional, Service, Registerable { */ public static function is_needed() { - return ( ! wp_doing_ajax() && is_admin() ); + if ( wp_doing_ajax() || ! is_admin() ) { + return false; + } + + $screen = get_current_screen(); + + if ( ! $screen instanceof \WP_Screen || 'plugin-install' !== $screen->id ) { + return false; + } + + return true; + } + + /** + * Fetch AMP plugin data. + * + * @return void + */ + protected function set_plugins() { + + $plugin_json = AMP__DIR__ . '/data/plugins.json'; + $json_data = file_get_contents( $plugin_json ); + $this->plugins = json_decode( $json_data, true ); } /** @@ -36,11 +76,31 @@ public static function is_needed() { */ public function register() { + $this->set_plugins(); + add_filter( 'install_plugins_tabs', [ $this, 'add_tab' ] ); - add_filter( 'install_plugins_table_api_args_amp', [ $this, 'amp_tab_args' ] ); + add_filter( 'install_plugins_table_api_args_px_enhancing', [ $this, 'tab_args' ] ); add_filter( 'plugins_api', [ $this, 'plugins_api' ], 10, 3 ); + add_filter( 'plugin_install_action_links', [ $this, 'action_links' ], 10, 2 ); + + add_action( 'install_plugins_px_enhancing', [ $this, 'install_plugin_amp' ] ); + add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_scripts' ] ); + } + + /** + * Enqueue style for plugin install page. + * + * @return void + */ + public function enqueue_scripts() { + + wp_enqueue_style( + 'amp-admin-plugin-install', + amp_get_asset_url( 'css/admin-plugin-install.css' ), + [ 'amp-icons' ], + AMP__VERSION + ); - add_action( 'install_plugins_amp', [ $this, 'install_plugin_amp' ] ); } /** @@ -54,7 +114,7 @@ public function add_tab( $tabs ) { return array_merge( [ - 'amp' => esc_html__( 'AMP', 'amp' ), + 'px_enhancing' => esc_html__( 'PX Enhancing', 'amp' ), ], $tabs ); @@ -65,10 +125,11 @@ public function add_tab( $tabs ) { * * @return array */ - public function amp_tab_args() { + public function tab_args() { return [ - 'amp' => true, + 'px_enhancing' => true, + 'per_page' => count( $this->plugins ), ]; } @@ -79,20 +140,17 @@ public function amp_tab_args() { * @param string $action API Action. * @param array $args Args for plugin list. * - * @return \stdClass|array List of AMP compatible plugins. + * @return stdClass|array List of AMP compatible plugins. */ public function plugins_api( $response, $action, $args ) { $args = (array) $args; - if ( ! isset( $args['amp'] ) ) { + if ( ! isset( $args['px_enhancing'] ) ) { return $response; } - $plugin_json = AMP__DIR__ . '/data/plugins.json'; - $json_data = file_get_contents( $plugin_json ); - - $response = new \stdClass(); - $response->plugins = json_decode( $json_data, true ); + $response = new stdClass(); + $response->plugins = $this->plugins; $response->info = [ 'page' => 1, 'pages' => 1, @@ -102,12 +160,463 @@ public function plugins_api( $response, $action, $args ) { return $response; } + /** + * Update action links for plugin card in plugin install screen. + * + * @param array $actions List of action button's markup for plugin card. + * @param array $plugin Plugin detail. + * + * @return array List of action button's markup for plugin card. + */ + public function action_links( $actions, $plugin ) { + + if ( isset( $plugin['wporg'] ) && true !== $plugin['wporg'] ) { + $actions = []; + + if ( ! empty( $plugin['homepage'] ) ) { + $actions[] = sprintf( + '%s', + esc_url( $plugin['homepage'] ), + esc_html( $plugin['name'] ), + esc_html__( 'Visit site', 'amp' ) + ); + } + } + + return $actions; + } + /** * Content for AMP tab in plugin install screen. * * @return void */ public function install_plugin_amp() { - display_plugins_table(); + + ?> +
+ display(); ?> +
+ display_tablenav( 'top' ); + + ?> +
+ screen->render_screen_reader_content( 'heading_list' ); ?> +
+ display_rows_or_placeholder(); ?> +
+
+ display_tablenav( 'bottom' ); + } + + /** + * Generates the tbody element for the list table. + * + * @reference \WP_Plugin_Install_List_Table::display_rows_or_placeholder() + * + * @return void + */ + public function display_rows_or_placeholder() { + + global $wp_list_table; + + if ( $wp_list_table->has_items() ) { + $this->display_rows(); + } else { + echo ''; + $wp_list_table->no_items(); + echo ''; + } + } + + /** + * Generate rows for plugins for install plugin screen. + * overwrite \WP_Plugin_Install_List_Table::display_rows() + * + * @reference \WP_Plugin_Install_List_Table::display_rows() + * + * @return void + */ + public function display_rows() { + + global $wp_list_table; + $plugins_allowedtags = [ + 'a' => [ + 'href' => [], + 'title' => [], + 'target' => [], + ], + 'abbr' => [ 'title' => [] ], + 'acronym' => [ 'title' => [] ], + 'code' => [], + 'pre' => [], + 'em' => [], + 'strong' => [], + 'ul' => [], + 'ol' => [], + 'li' => [], + 'p' => [], + 'br' => [], + ]; + + $plugins_group_titles = [ + 'Performance' => _x( 'Performance', 'Plugin installer group title', 'amp' ), + 'Social' => _x( 'Social', 'Plugin installer group title', 'amp' ), + 'Tools' => _x( 'Tools', 'Plugin installer group title', 'amp' ), + ]; + + $group = null; + + foreach ( (array) $wp_list_table->items as $plugin ) { + if ( is_object( $plugin ) ) { + $plugin = (array) $plugin; + } + + // Display the group heading if there is one. + if ( isset( $plugin['group'] ) && $plugin['group'] !== $group ) { + if ( isset( $wp_list_table->groups[ $plugin['group'] ] ) ) { + $group_name = $wp_list_table->groups[ $plugin['group'] ]; + if ( isset( $plugins_group_titles[ $group_name ] ) ) { + $group_name = $plugins_group_titles[ $group_name ]; + } + } else { + $group_name = $plugin['group']; + } + + // Starting a new group, close off the divs of the last one. + if ( ! empty( $group ) ) { + echo ''; + } + + echo '

' . esc_html( $group_name ) . '

'; + // Needs an extra wrapping div for nth-child selectors to work. + echo '
'; + + $group = $plugin['group']; + } + + $title = wp_kses( $plugin['name'], $plugins_allowedtags ); + + // Remove any HTML from the description. + $description = wp_strip_all_tags( $plugin['short_description'] ); + $version = wp_kses( $plugin['version'], $plugins_allowedtags ); + + $name = strip_tags( $title . ' ' . $version ); // phpcs:ignore WordPressVIPMinimum.Functions.StripTags.StripTagsOneParameter + + $author = wp_kses( $plugin['author'], $plugins_allowedtags ); + if ( ! empty( $author ) ) { + /* translators: %s: Plugin author. */ + $author = ' ' . sprintf( __( 'By %s', 'amp' ), $author ) . ''; + } + + $requires_php = isset( $plugin['requires_php'] ) ? $plugin['requires_php'] : null; + $requires_wp = isset( $plugin['requires'] ) ? $plugin['requires'] : null; + + $compatible_php = is_php_version_compatible( $requires_php ); + $compatible_wp = is_wp_version_compatible( $requires_wp ); + $tested_wp = ( empty( $plugin['tested'] ) || version_compare( get_bloginfo( 'version' ), $plugin['tested'], '<=' ) ); + + $action_links = []; + + if ( current_user_can( 'install_plugins' ) || current_user_can( 'update_plugins' ) ) { + $status = install_plugin_install_status( $plugin ); + + switch ( $status['status'] ) { + case 'install': + if ( $status['url'] ) { + if ( $compatible_php && $compatible_wp ) { + $action_links[] = sprintf( + '%s', + esc_attr( $plugin['slug'] ), + esc_url( $status['url'] ), + /* translators: %s: Plugin name and version. */ + esc_attr( sprintf( _x( 'Install %s now', 'plugin', 'amp' ), $name ) ), + esc_attr( $name ), + __( 'Install Now', 'amp' ) + ); + } else { + $action_links[] = sprintf( + '', + _x( 'Cannot Install', 'plugin', 'amp' ) + ); + } + } + break; + + case 'update_available': + if ( $status['url'] ) { + if ( $compatible_php && $compatible_wp ) { + $action_links[] = sprintf( + '%s', + esc_attr( $status['file'] ), + esc_attr( $plugin['slug'] ), + esc_url( $status['url'] ), + /* translators: %s: Plugin name and version. */ + esc_attr( sprintf( _x( 'Update %s now', 'plugin', 'amp' ), $name ) ), + esc_attr( $name ), + __( 'Update Now', 'amp' ) + ); + } else { + $action_links[] = sprintf( + '', + _x( 'Cannot Update', 'plugin', 'amp' ) + ); + } + } + break; + + case 'latest_installed': + case 'newer_installed': + if ( is_plugin_active( $status['file'] ) ) { + $action_links[] = sprintf( + '', + _x( 'Active', 'plugin', 'amp' ) + ); + } elseif ( current_user_can( 'activate_plugin', $status['file'] ) ) { + $button_text = __( 'Activate', 'amp' ); + /* translators: %s: Plugin name. */ + $button_label = _x( 'Activate %s', 'plugin', 'amp' ); + $activate_url = add_query_arg( + [ + '_wpnonce' => wp_create_nonce( 'activate-plugin_' . $status['file'] ), + 'action' => 'activate', + 'plugin' => $status['file'], + ], + network_admin_url( 'plugins.php' ) + ); + + if ( is_network_admin() ) { + $button_text = __( 'Network Activate', 'amp' ); + /* translators: %s: Plugin name. */ + $button_label = _x( 'Network Activate %s', 'plugin', 'amp' ); + $activate_url = add_query_arg( [ 'networkwide' => 1 ], $activate_url ); + } + + $action_links[] = sprintf( + '%3$s', + esc_url( $activate_url ), + esc_attr( sprintf( $button_label, $plugin['name'] ) ), + $button_text + ); + } else { + $action_links[] = sprintf( + '', + _x( 'Installed', 'plugin', 'amp' ) + ); + } + break; + } + } + + $details_link = self_admin_url( + 'plugin-install.php?tab=plugin-information&plugin=' . $plugin['slug'] . + '&TB_iframe=true&width=600&height=550' + ); + + $action_links[] = sprintf( + '%s', + esc_url( $details_link ), + /* translators: %s: Plugin name and version. */ + esc_attr( sprintf( __( 'More information about %s', 'amp' ), $name ) ), + esc_attr( $name ), + __( 'More Details', 'amp' ) + ); + + if ( ! empty( $plugin['icons']['svg'] ) ) { + $plugin_icon_url = $plugin['icons']['svg']; + } elseif ( ! empty( $plugin['icons']['2x'] ) ) { + $plugin_icon_url = $plugin['icons']['2x']; + } elseif ( ! empty( $plugin['icons']['1x'] ) ) { + $plugin_icon_url = $plugin['icons']['1x']; + } else { + $plugin_icon_url = $plugin['icons']['default']; + } + + /** + * Filters the install action links for a plugin. + * + * @param string[] $action_links An array of plugin action links. Defaults are links to Details and Install Now. + * @param array $plugin The plugin currently being listed. + */ + $action_links = apply_filters( 'plugin_install_action_links', $action_links, $plugin ); + + $last_updated_timestamp = strtotime( $plugin['last_updated'] ); + ?> +
+

'; + if ( ! $compatible_php && ! $compatible_wp ) { + esc_html_e( 'This plugin doesn’t work with your versions of WordPress and PHP.', 'amp' ); + if ( current_user_can( 'update_core' ) && current_user_can( 'update_php' ) ) { + echo wp_kses_post( + sprintf( + /* translators: 1: URL to WordPress Updates screen, 2: URL to Update PHP page. */ + ' ' . __( 'Please update WordPress, and then learn more about updating PHP.', 'amp' ), + self_admin_url( 'update-core.php' ), + esc_url( wp_get_update_php_url() ) + ) + ); + wp_update_php_annotation( '

', '' ); + } elseif ( current_user_can( 'update_core' ) ) { + echo wp_kses_post( + sprintf( + /* translators: %s: URL to WordPress Updates screen. */ + ' ' . __( 'Please update WordPress.', 'amp' ), + self_admin_url( 'update-core.php' ) + ) + ); + } elseif ( current_user_can( 'update_php' ) ) { + echo wp_kses_post( + sprintf( + /* translators: %s: URL to Update PHP page. */ + ' ' . __( 'Learn more about updating PHP.', 'amp' ), + esc_url( wp_get_update_php_url() ) + ) + ); + wp_update_php_annotation( '

', '' ); + } + } elseif ( ! $compatible_wp ) { + _e( 'This plugin doesn’t work with your version of WordPress.', 'amp' ); + if ( current_user_can( 'update_core' ) ) { + echo wp_kses_post( + sprintf( + /* translators: %s: URL to WordPress Updates screen. */ + ' ' . __( 'Please update WordPress.', 'amp' ), + self_admin_url( 'update-core.php' ) + ) + ); + } + } elseif ( ! $compatible_php ) { + _e( 'This plugin doesn’t work with your version of PHP.', 'amp' ); + if ( current_user_can( 'update_php' ) ) { + echo wp_kses_post( + sprintf( + /* translators: %s: URL to Update PHP page. */ + ' ' . __( 'Learn more about updating PHP.', 'amp' ), + esc_url( wp_get_update_php_url() ) + ) + ); + wp_update_php_annotation( '

', '' ); + } + } + echo '

'; + } + ?> +
+
+

+ + + + +

+
+ +
+

+

+
+
+
+
+ $plugin['rating'], + 'type' => 'percent', + 'number' => $plugin['num_ratings'], + ] + ); + ?> + +
+
+ + +
+
+ = 1000000 ) { + $active_installs_millions = floor( $plugin['active_installs'] / 1000000 ); + $active_installs_text = sprintf( + /* translators: %s: Number of millions. */ + _nx( '%s+ Million', '%s+ Million', $active_installs_millions, 'Active plugin installations', 'amp' ), + number_format_i18n( $active_installs_millions ) + ); + } elseif ( 0 === $plugin['active_installs'] ) { + $active_installs_text = _x( 'Less Than 10', 'Active plugin installations', 'amp' ); + } else { + $active_installs_text = number_format_i18n( $plugin['active_installs'] ) . '+'; + } + + echo esc_html( + /* translators: %s: Number of installations. */ + sprintf( __( '%s Active Installations', 'amp' ), $active_installs_text ) + ); + ?> +
+
+ ' . __( 'Untested with your version of WordPress', 'amp' ) . '' + ); + } elseif ( ! $compatible_wp ) { + echo wp_kses_post( + '' . __( 'Incompatible with your version of WordPress', 'amp' ) . '' + ); + } else { + echo wp_kses_post( + '' . __( 'Compatible with your version of WordPress', 'amp' ) . '' + ); + } + ?> +
+
+
+   + +
+
+
'; + } } } From c1ed08c7848ddb512606d04fea813276d23d8570 Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Mon, 6 Sep 2021 17:36:35 +0530 Subject: [PATCH 008/105] Add AMP icon in PX Enhancing tab --- assets/css/src/admin-plugin-install.css | 1 + src/Admin/PluginInstallTab.php | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/assets/css/src/admin-plugin-install.css b/assets/css/src/admin-plugin-install.css index 291fba967ca..7b2f0bba3d6 100644 --- a/assets/css/src/admin-plugin-install.css +++ b/assets/css/src/admin-plugin-install.css @@ -14,4 +14,5 @@ height: 20px; width: 20px; display: inline-block; + vertical-align: bottom; } diff --git a/src/Admin/PluginInstallTab.php b/src/Admin/PluginInstallTab.php index ca57bd5adbf..a818f6f0632 100644 --- a/src/Admin/PluginInstallTab.php +++ b/src/Admin/PluginInstallTab.php @@ -114,7 +114,7 @@ public function add_tab( $tabs ) { return array_merge( [ - 'px_enhancing' => esc_html__( 'PX Enhancing', 'amp' ), + 'px_enhancing' => ' ' . esc_html__( 'PX Enhancing', 'amp' ), ], $tabs ); From 0afc726a9869abc0ccbd0624295665bca297b0eb Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Tue, 7 Sep 2021 12:43:48 +0530 Subject: [PATCH 009/105] Add PX enahacing tab in theme install screen --- assets/src/admin/amp-theme-install.js | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 assets/src/admin/amp-theme-install.js diff --git a/assets/src/admin/amp-theme-install.js b/assets/src/admin/amp-theme-install.js new file mode 100644 index 00000000000..e69de29bb2d From f7cc67db78d786a08b7578a2e7ef2ca3fa5d735c Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Tue, 7 Sep 2021 12:49:40 +0530 Subject: [PATCH 010/105] Add PX enahacing tab in theme install screen --- assets/src/admin/amp-theme-install.js | 39 ++++++++++ bin/update-extension-json.js | 6 +- data/plugins.json | 2 +- data/themes.json | 2 +- src/Admin/ThemeInstallTab.php | 105 +++++++++++++++++++++++--- webpack.config.js | 1 + 6 files changed, 140 insertions(+), 15 deletions(-) diff --git a/assets/src/admin/amp-theme-install.js b/assets/src/admin/amp-theme-install.js index e69de29bb2d..5beedcd05a8 100644 --- a/assets/src/admin/amp-theme-install.js +++ b/assets/src/admin/amp-theme-install.js @@ -0,0 +1,39 @@ +/** + * WordPress dependencies + */ +import domReady from '@wordpress/dom-ready'; +import { __ } from '@wordpress/i18n'; + +const ampThemeInstall = { + + /** + * Init function. + */ + init() { + this.addTab(); + }, + + /** + * Add new tab for PX Enhanced theme in theme install page. + */ + addTab() { + const listItem = document.createElement( 'li' ); + const anchorElement = document.createElement( 'a' ); + const spanElement = document.createElement( 'span' ); + spanElement.classList.add( 'amp-logo-icon' ); + + anchorElement.append( spanElement ); + anchorElement.append( ' ' ); + anchorElement.append( __( 'PX Enhancing', 'amp' ) ); + anchorElement.setAttribute( 'href', '#' ); + anchorElement.setAttribute( 'data-sort', 'px_enhancing' ); + + listItem.appendChild( anchorElement ); + + document.querySelector( '.filter-links' ).prepend( listItem ); + }, +}; + +domReady( () => { + ampThemeInstall.init(); +} ); diff --git a/bin/update-extension-json.js b/bin/update-extension-json.js index 33f20a49ad3..7e8f8dd9a01 100644 --- a/bin/update-extension-json.js +++ b/bin/update-extension-json.js @@ -135,7 +135,7 @@ class UpdateExtensionJson { theme = await this.fetchThemeFromWporg( item.slug ); } - // Plugin data for amp-wp.org + // Theme data for amp-wp.org if ( null === matches || null === theme ) { theme = await this.prepareThemeData( item ); } @@ -181,7 +181,7 @@ class UpdateExtensionJson { attachment = attachment.data; return { - name: item.name, + name: item.title.rendered, slug: item.slug, version: '', preview_url: item?.meta?.ampps_ecosystem_url, @@ -197,7 +197,7 @@ class UpdateExtensionJson { rating: 0, num_ratings: 0, homepage: item?.meta?.ampps_ecosystem_url, - description: item.content.rendere, + description: item.content.rendered, requires: '', requires_php: '', wporg: false, diff --git a/data/plugins.json b/data/plugins.json index eb2cf971774..2f4797e8cd4 100644 --- a/data/plugins.json +++ b/data/plugins.json @@ -1 +1 @@ -[{"name":"Podcast Player – Your Podcasting Companion","slug":"podcast-player","version":"5.0.1","author":"vedathemes","author_profile":"https://profiles.wordpress.org/vedathemes","requires":"4.9","tested":"5.8","requires_php":"5.6","rating":98,"ratings":{"1":0,"2":1,"3":0,"4":2,"5":43},"num_ratings":46,"support_threads":8,"support_threads_resolved":6,"active_installs":8000,"downloaded":111339,"last_updated":"2021-08-09 4:59am GMT","added":"2019-02-06","homepage":"https://vedathemes.com/podcast-player/","short_description":"Showcase your podcast only using podcasting feed url. Use custom widget, shortcode or editor block to display podcast player anywhere on your site.","description":"

Podcast Player provides an easy way to show and play your podcast episodes using podcasting feed url. It is a must have plugin for your podcast website. Give your listeners an easy access to all your episodes from any page or even from all the pages of your website.

\n

Podcast Player Pro | Documentation

\n\n

Podcast player key features

\n
    \n
  • Give your listeners an easy access to your podcast episodes.
  • \n
  • Display responsive podcast player just by entering your podcast’s feed url.
  • \n
  • Fetch all required details from feed url.
  • \n
  • Option to modify fetched details of your podcast.
  • \n
  • Option to Show or Hide individual player elements.
  • \n
  • Give your listener an option to share your podcast episodes.
  • \n
  • Ajax live search episodes from the podcast.
  • \n
  • It is possible to have multiple instances of podcast player on single page.
  • \n
  • Self adjusting layout according to width of the podcast player.
  • \n
\n

Podcast player pro features

\n
    \n
  • Professionally showcase your podcast using our unified player, episode list and grid templates.
  • \n
  • Use powerful filter options to choose which episodes or seasons you want to display on your website.
  • \n
  • Make your entire podcast catalogue easily available using our ajax approximate search feature.
  • \n
  • Add an audio message within your podcast episode.
  • \n
  • Add audio mp3 to your WordPress posts and display as podcast episodes.
  • \n
  • Show or hide specific elements and customize color and fonts to personalize your podcast display
  • \n
\n

Setup Podcast Player Widget

\n

Display searchable podcast episodes list on any widget area of your website.

\n

Minimum Setup

\n
    \n
  1. After activating the plugin, visit Appearance > Widgets in admin dashboard.
  2. \n
  3. Look for ‘Podcast player’ widget in left ‘Available Widgets’ section.
  4. \n
  5. Drag the widget to any available sidebar/widget area.
  6. \n
  7. Enter feed url in the appropriate field.
  8. \n
  9. Click [Save] button.
  10. \n
\n

Advanced Setup

\n
    \n
  1. After activating the plugin, visit Appearance > Widgets in admin dashboard.
  2. \n
  3. Look for ‘Podcast player’ widget in left ‘Available Widgets’ section.
  4. \n
  5. Drag the widget to any available sidebar/widget area.
  6. \n
  7. Enter feed url in the appropriate field.
  8. \n
  9. Optionally, click on “Change podcast content” button to customize feed’s auto fetched details.
  10. \n
  11. Optionally, click on “Show/Hide player items” button to show or hide player elements.
  12. \n
  13. Optionally, click on “Podcast player styling” button to customize player’s accent color.
  14. \n
  15. Optionally, click on “Sort & Filter” button to sort or filter podcast episodes.
  16. \n
  17. Click [Save] button.
  18. \n
\n

Setup Podcast Player Block

\n

Display searchable podcast episodes list on any post or page. Make sure you have not disabled WordPress latest block editor.

\n

Setup

\n
    \n
  1. After activating the plugin, visit any post or page’s edit screen.
  2. \n
  3. In main content area, click on ‘+’ icon to add a new block.
  4. \n
  5. Search for ‘Podcast Player’ block.
  6. \n
  7. Enter feed url in the appropriate field. A preview of your podcast player will appear.
  8. \n
  9. Click on the podcast player preview.
  10. \n
  11. Select appropriate options from the right sidebar to customize the player.
  12. \n
  13. Save or Update the post.
  14. \n
\n

Setup Podcast Player using shortcode

\n

Minimum Setup

\n
[podcastplayer feed_url ='']\n
\n
    \n
  1. feed_url – Your podcast feed url.
  2. \n
\n

Advanced Setup

\n
[podcastplayer feed_url ='' number='' podcast_menu='' cover_image_url='' hide_cover='true' hide_description='true' hide_subscribe='true' hide_search='true' hide_loadmore='true' hide_download='true' accent_color='#65b84f']Short Description [/podcastplayer]\n
\n
    \n
  1. feed_url: Your podcast feed url.
  2. \n
  3. number: Number of podcasts episodes to be displayed at a time.
  4. \n
  5. podcast_menu: Any previously created WordPress menu’s name OR ID OR slug. (optional)
  6. \n
  7. cover_image_url: Podcast’s cover image url. The image must be from your WP media library. (optional)
  8. \n
  9. header_default: (false/true) Show player header items by default
  10. \n
  11. hide_header: Hide player header items
  12. \n
  13. hide_title: (false/true) Show / Hide podcast Title in header info section
  14. \n
  15. hide_cover: (false/true) Show / Hide podcast cover image
  16. \n
  17. hide_description: (false/true) Show / Hide podcast description
  18. \n
  19. hide_subscribe: (false/true) Show / Hide podcast subscribe button.
  20. \n
  21. hide_search: (false/true) Show / Hide podcast search field.
  22. \n
  23. hide_author: (false/true) Show / Hide author/podcaster’s name.
  24. \n
  25. hide_content: (false/true) Show / Hide podcast episode’s content.
  26. \n
  27. hide_loadmore: (false/true) Show / Hide podcast load more button.
  28. \n
  29. hide_download: (false/true) Show/ Hide podcast episode download link.
  30. \n
  31. hide_social: (false/true) Show/ Hide podcast episode social sharing links.
  32. \n
  33. accent_color: Podcast player’s accent color (Color hex-code to be entered).
  34. \n
  35. sortby: Sort podcast episodes (sort_date_desc/sort_date_asc/sort_title_desc/sort_title_asc)
  36. \n
  37. filterby: Filter by any string in episode’s title
  38. \n
  39. list_default: (false/true) Display Episodes list by default on small screen
  40. \n
  41. hide_featured: (false/true) Show / Hide podcast episode featured image
  42. \n
  43. apple_sub: Apple podcast subscription link
  44. \n
  45. google_sub: Google podcast subscription link
  46. \n
  47. Short Description: Podcast short text description. (optional)
  48. \n
\n","download_link":"https://downloads.wordpress.org/plugin/podcast-player.5.0.1.zip","tags":{"feed-to-audio":"feed to audio","podcast":"podcast","podcaster":"podcaster","podcasting":"podcasting","rss-feed":"rss feed"},"donate_link":"","icons":{"1x":"https://ps.w.org/podcast-player/assets/icon-256x256.png?rev=2025683","2x":"https://ps.w.org/podcast-player/assets/icon-256x256.png?rev=2025683"},"wporg":true},{"name":"WPSSO Schema JSON-LD Markup | Google Rich Results, Rich Snippets, and Structured Data","slug":"wpsso-schema-json-ld","version":"4.18.1","author":"JS Morisset","author_profile":"https://profiles.wordpress.org/jsmoriss","requires":"5.0","tested":"5.8","requires_php":"7.0","rating":90,"ratings":{"1":5,"2":2,"3":1,"4":1,"5":54},"num_ratings":63,"support_threads":4,"support_threads_resolved":4,"active_installs":4000,"downloaded":283692,"last_updated":"2021-09-04 3:57pm GMT","added":"2016-02-14","homepage":"https://wpsso.com/extend/plugins/wpsso-schema-json-ld/","short_description":"Google Rich Results for Articles, Carousels, Events, FAQ pages, How-Tos, Local SEO, Products, Recipes, Ratings, Reviews, and more.","description":"

Supports over 500 different Schema (aka Schema.org) types and sub-types:

\n

Google Rich Results with JSON-LD structured data for Articles, Carousels (aka Item Lists), Claim Reviews, Events, FAQ pages, How-Tos, Images, Local Business / Local SEO, Organizations, Products, Ratings, Recipes, Restaurants, Reviews, Video Objects, and much more.

\n

Reads your existing content, plugin data, and service API data:

\n

There’s no need to manually re-enter descriptions, titles, product information, and re-select images / videos like other SEO and Schema markup plugins.

\n

Provides comprehensive Schema JSON-LD markup for posts, pages, custom post types, terms (category, tags, etc.), custom taxonomies, user profile pages, search result pages, archive pages, and Accelerated Mobile Pages (AMP) pages – including image SEO, video SEO, local business, organization, publisher, person, author and co-authors, extensive e-Commerce product markup, product variations, product ratings, aggregate ratings, reviews, recipe information, event details, collection pages, profile pages, search pages, FAQ pages, item lists for Google’s Carousel Rich Results, and much more.

\n

Most complete Schema JSON-LD markup for WooCommerce products:

\n

Note that WooCommerce offers incomplete Schema markup for Google Rich Results by default. The WPSSO Core Premium plugin and this add-on provide a solution by offering complete product meta tags for Facebook / Pinterest and complete Schema product markup for Google Rich Results – including additional product images, product variations, product information (brand, color, condition, EAN, dimensions, GTIN-8/12/13/14, ISBN, material, MPN, size, SKU, volume, weight, etc), product reviews, product ratings, sale start / end dates, sale prices, pre-tax prices, VAT prices, shipping rates, shipping times, and much, much more.

\n

Fixes all Google Search Console and Schema Markup Validator (aka Google Structured Data Testing Tool) errors:

\n
    \n
  • A value for the headline field is required.
  • \n
  • A value for the image field is required.
  • \n
  • A value for the logo field is required.
  • \n
  • A value for the publisher field is required.
  • \n
  • The aggregateRating field is recommended.
  • \n
  • The brand field is recommended.
  • \n
  • The headline field is recommended.
  • \n
  • The image field is recommended.
  • \n
  • The mainEntityOfPage field is recommended.
  • \n
  • The review field is recommended.
  • \n
  • This Product is missing a global identifier (e.g. isbn, mpn or gtin8).
  • \n
  • No global identifier provided (e.g. gtin mpn isbn).
  • \n
  • Not a known valid target type for the itemReviewed property.
  • \n
  • And more…
  • \n
\n

Some Schema property values may require data from WPSSO Core Premium supported third-party plugins and service APIs.

\n

Google regularly updates and changes their Schema markup requirements – WPSSO JSON Premium customers can also open a Premium support ticket for timely assistance with any new Google testing tool errors.

\n

Users Love the WPSSO JSON Add-on

\n

★★★★★ – “Forget everything else this is the best schema plugin – Sincerely, we bought other plugins that we had to abandon due to the lack of important features, but with this [WPSSO JSON] we get all that we need – and our schema has more features than the competition!” – zuki305

\n

★★★★★ – “Tried three other plugins before this one – for our Woocommerce site, this was by far the best one. Thanks!” – EntoMarket

\n

★★★★★ – “Crazy good! This plugin is one of my favorites! JS aggressively develops and improves this suite of plugins, continuously improving and adding features – with great customer support to boot! Highly recommended to improve your SEO for all kinds of JSON schemas!” – mikegoubeaux

\n

★★★★★ – “This plugin is heaven sent. I know little about SSO and this has taken care of everything. The support makes this an even better plugin to have. Keep up the great work!” – kevanchetty

\n

WPSSO JSON Add-on Features

\n

Extends the features of the WPSSO Core plugin (required plugin).

\n

Provides accurate and comprehensive Schema JSON-LD markup for Google Rich Results (aka Rich Snippets) with Structured Data.

\n

Provides complete Schema ImageObject SEO markup with image information from the WordPress Media Library (name, alternateName, alternativeHeadline, caption, description, fileFormat, uploadDate, and more).

\n

Provides complete Schema VideoObject SEO markup with video information from WPSSO Core Premium service APIs (Facebook, Slideshare, Soundcloud, Vimeo, Wistia, YouTube) including the ’embedUrl’ and ‘contentUrl’ properties for Google.

\n

Provides Schema 1:1, 4:3, and 16:9 images for Google Rich Results (see the Google rich results search library for details).

\n

Provides Schema FAQPage and Question / Answer markup for the WPSSO FAQ Manager add-on.

\n

Includes Schema JSON-LD scripts from shortcodes and WordPress editor blocks in the Schema CreativeWork type and sub-types.

\n

Built-in support for AMP and AMP for WP plugins.

\n

Includes contributor markup for Co-Authors Plus authors and guest authors (WPSSO Core Premium plugin required).

\n

Supports additional custom product information and WooCommerce product attributes from the WPSSO Core Premium plugin:

\n
    \n
  • Product Availability
  • \n
  • Product Brand
  • \n
  • Product Color
  • \n
  • Product Condition
  • \n
  • Product Depth
  • \n
  • Product Fluid Volume
  • \n
  • Product GTIN-14
  • \n
  • Product GTIN-13 (EAN)
  • \n
  • Product GTIN-12 (UPC)
  • \n
  • Product GTIN-8
  • \n
  • Product GTIN
  • \n
  • Product ISBN
  • \n
  • Product Length
  • \n
  • Product Material
  • \n
  • Product MPN
  • \n
  • Product Price
  • \n
  • Product Size
  • \n
  • Product SKU
  • \n
  • Product Target Gender
  • \n
  • Product Type
  • \n
  • Product Weight
  • \n
  • Product Width
  • \n
\n

Provides Schema Product markup for Google price drop appearance in search results.

\n

Fixes common Google testing tool warnings like “aggregateRating field is recommended” and “review field is recommended”.

\n

Fixes Google testing tool warnings for supported WPSSO Core Premium e-commerce products, like “brand field is recommended”, “missing a global identifier”, etc.

\n

The WPSSO Schema JSON-LD Markup Standard add-on is designed to satisfy the requirements of most standard WordPress sites. If your content requires additional customization of some Schema properties for products, events, places / locations, recipes, etc., then you may want to get the WPSSO JSON Premium add-on for those additional features.

\n

[Premium] Includes additional customizable option values in the Document SSO metabox (shown based on the Schema Type selected):

\n
    \n
  • All Schema Types\n
      \n
    • Name (Title)
    • \n
    • Alternate Name
    • \n
    • Description
    • \n
    • Microdata Type URLs
    • \n
    • Same-As URLs
    • \n
    \n
  • \n
  • Creative Work Information\n
      \n
    • Is Part of URL
    • \n
    • Headline
    • \n
    • Full Text
    • \n
    • Keywords
    • \n
    • Language
    • \n
    • Family Friendly
    • \n
    • Copyright Year
    • \n
    • License URL
    • \n
    • Publisher (Org)
    • \n
    • Publisher (Person)
    • \n
    • Service Provider (Org)
    • \n
    • Service Provider (Person)
    • \n
    \n
  • \n
  • Event Information\n
      \n
    • Event Language
    • \n
    • Event Attendance
    • \n
    • Event Online URL
    • \n
    • Event Physical Venue
    • \n
    • Event Organizer (Org)
    • \n
    • Event Organizer (Person)
    • \n
    • Event Performer (Org)
    • \n
    • Event Performer (Person)
    • \n
    • Event Start (date, time, timezone)
    • \n
    • Event End (date, time, timezone)
    • \n
    • Event Offers Start (date, time, timezone)
    • \n
    • Event Offers End (date, time, timezone)
    • \n
    • Event Offers (name, price, currency, availability)
    • \n
    \n
  • \n
  • How-To\n
      \n
    • How-To Makes
    • \n
    • How-To Preparation Time
    • \n
    • How-To Total Time
    • \n
    • How-To Supplies
    • \n
    • How-To Tools
    • \n
    • How-To Steps (section name, section description, step name, direction text and image)
    • \n
    \n
  • \n
  • Job Posting Information\n
      \n
    • Job Title
    • \n
    • Hiring Organization
    • \n
    • Job Location
    • \n
    • Job Location Type
    • \n
    • Base Salary
    • \n
    • Employment Type
    • \n
    • Jpb Posting Expires
    • \n
    \n
  • \n
  • Movie Information\n
      \n
    • Cast Names
    • \n
    • Director Names
    • \n
    • Production Company
    • \n
    • Movie Runtime
    • \n
    \n
  • \n
  • Organization Information\n
      \n
    • Select an Organization
    • \n
    \n
  • \n
  • Person Information\n
      \n
    • Select a Person
    • \n
    \n
  • \n
  • Product Information (Additional)\n
      \n
    • Product Length (cm)
    • \n
    • Product Width (cm)
    • \n
    • Product Height (cm)
    • \n
    • Product Depth (cm)
    • \n
    • Product Fluid Volume (ml)
    • \n
    • Product GTIN-14
    • \n
    • Product GTIN-13 (EAN)
    • \n
    • Product GTIN-12 (UPC)
    • \n
    • Product GTIN-8
    • \n
    • Product GTIN
    • \n
    \n
  • \n
  • QA Page Information\n
      \n
    • QA Heading
    • \n
    \n
  • \n
  • Recipe Information\n
      \n
    • Recipe Cuisine
    • \n
    • Recipe Course
    • \n
    • Recipe Makes
    • \n
    • Cooking Method
    • \n
    • Preparation Time
    • \n
    • Cooking Time
    • \n
    • Total Time
    • \n
    • Recipe Ingredients
    • \n
    • Recipe Instructions
    • \n
    • Nutrition Information per Serving\n
        \n
      • Serving Size
      • \n
      • Calories
      • \n
      • Protein
      • \n
      • Fiber
      • \n
      • Carbohydrates
      • \n
      • Sugar
      • \n
      • Sodium
      • \n
      • Fat
      • \n
      • Saturated Fat
      • \n
      • Unsaturated Fat
      • \n
      • Trans Fat
      • \n
      • Cholesterol
      • \n
      \n
    • \n
    \n
  • \n
  • Review Information\n
      \n
    • Review Rating
    • \n
    • Rating Value Name
    • \n
    • Subject of the Review\n
        \n
      • Subject Webpage Type
      • \n
      • Subject Webpage URL
      • \n
      • Subject Same-As URL
      • \n
      • Subject Name
      • \n
      • Subject Description
      • \n
      • Subject Image ID or URL
      • \n
      • Claim Subject Information (for Claim Review)\n
          \n
        • Short Summary of Claim
        • \n
        • First Appearance URL
        • \n
        \n
      • \n
      • Creative Work Subject Information\n
          \n
        • C.W. Author Type
        • \n
        • C.W. Author Name
        • \n
        • C.W. Author URL
        • \n
        • C.W. Published Date
        • \n
        • C.W. Created Date
        • \n
        \n
      • \n
      • Book Subject Information\n
          \n
        • Book ISBN
        • \n
        \n
      • \n
      • Movie Subject Information\n
          \n
        • Movie Cast Names
        • \n
        • Movie Director Names
        • \n
        \n
      • \n
      • Product Subject Information\n
          \n
        • Product Brand
        • \n
        • Product Offers (name, price, currency, availability)
        • \n
        • Product SKU
        • \n
        • Product MPN
        • \n
        \n
      • \n
      • Software App Subject Information\n
          \n
        • Operating System
        • \n
        • Application Category
        • \n
        • Software App Offers (name, price, currency, availability)
        • \n
        \n
      • \n
      \n
    • \n
    \n
  • \n
  • Software Application Information\n
      \n
    • Operating System
    • \n
    • Application Category
    • \n
    \n
  • \n
\n

WPSSO Core Required

\n

WPSSO Schema JSON-LD Markup (WPSSO JSON) is an add-on for the WPSSO Core plugin.

\n","download_link":"https://downloads.wordpress.org/plugin/wpsso-schema-json-ld.4.18.1.zip","tags":{"rich-results":"rich results","rich-snippets":"rich snippets","schema-org":"schema.org","video-seo":"video seo","woocommerce":"woocommerce"},"donate_link":"","icons":{"1x":"https://ps.w.org/wpsso-schema-json-ld/assets/icon-128x128.png?rev=2480083","2x":"https://ps.w.org/wpsso-schema-json-ld/assets/icon-256x256.png?rev=2480083"},"wporg":true},{"name":"ShortPixel Image Optimizer","slug":"shortpixel-image-optimiser","version":"4.22.5","author":"ShortPixel","author_profile":"https://profiles.wordpress.org/shortpixel","requires":"4.2.0","tested":"5.8","requires_php":"5.6","rating":92,"ratings":{"1":54,"2":10,"3":8,"4":10,"5":544},"num_ratings":626,"support_threads":8,"support_threads_resolved":6,"active_installs":300000,"downloaded":6854881,"last_updated":"2021-08-31 5:54pm GMT","added":"2014-11-05","homepage":"https://shortpixel.com/","short_description":"Speed up your website & boost your SEO by compressing old & new images and PDFs. AVIF & WebP convert and optimize support.","description":"

A freemium, easy to use, comprehensive, stable and frequently updated image compression plugin supported by the friendly team that created it. 🙂

\n

Increase your website’s SEO ranking, number of visitors and ultimately your sales by optimising any image or PDF document on your website.
\nShortPixel is an easy to use, lightweight, install-and-forget-about-it image optimization plugin that can compress all your past images and PDF documents with a single click. New images are automatically resized/rescaled and optimized on the fly, in the background. It’s also compatible with any gallery, slider or ecommerce plugin.

\n

Ready for a quick DEMO? Test our plugin here.
\nOr you can create a staging copy of your site using WP Staging and test it there.

\n

Short Pixel uses minimal resources and works well with any shared, cloud, VPS or dedicated web hosting. It can optimize any image you have on your website even the images that aren’t listed in Media Library like those in galleries like NextGEN, Modula or added directly via FTP!

\n

Both lossy and lossless image compression are available for the most common image types (JPG, PNG, GIF, WebP and AVIF) plus PDF files.
\nWe also offer glossy JPEG compression which is a very high quality lossy optimization algorithm. Specially designed for photographers!
\nOptimized images mean better user experience, better PageSpeed Insights or GTmetrix results, better Google PageRank and more visitors.

\n

Make an instant image compression test of your site or compress some images to test our optimization algorithms.

\n

Why is ShortPixel the best choice when it comes to image optimization or PDF compression?

\n
    \n
  • popular plugin with over 300,000 active installations – according to WordPress
  • \n
  • compress JPG (and its variations JPEG, JPEG 2000, JPEG XR), PNG, GIF (still or animated) images and also PDF documents
  • \n
  • option to convert any JPEG, PNG or GIF (even animated ones!) to WebP and AVIF for more Google love. How to enable WebP?. What is AVIF and why is it good?.
  • \n
  • option to automatically convert PNG to JPG if that will result in smaller images. Ideal for large images in PNG format
  • \n
  • option to include the next generation images (WebP and AVIF) into the front-end pages by using the <picture> tag instead of <img>, independent from generating them through the plugin
  • \n
  • compatible with WP Retina 2x – all retina images are automatically compressed. How to benefit from Retina displays?
  • \n
  • optimize thumbnails as well as featured images. You can also select individual thumbnails to exclude from optimization
  • \n
  • ability to optimize any image on your site including images in NextGEN Gallery and any other image galleries or sliders
  • \n
  • option to scale images down, with 2 different options, which is very useful to automatically resize large images. This applies to the featured images and there is no need for additional plugins like Imsanity
  • \n
  • CMYK to RGB conversion
  • \n
  • skip already optimized images
  • \n
  • 24h stellar support (24/7) directly from developers.
  • \n
  • easily test lossy/glossy/lossless versions of the images with a single click in your Media Library
  • \n
  • great for photographers: keep or remove EXIF data from your images, compress photos with lossless option
  • \n
  • works well with both HTTPS and HTTP websites
  • \n
  • uses progressive JPEG for larger images in order to speed up the image display
  • \n
  • you can run ShortPixel plugin on multiple websites or on a multisite with a single API Key
  • \n
  • it is safe to test and use the plugin: all the original images are by default saved in a local backup that can be restored with a click, either one by one or in bulk
  • \n
  • ‘Bulk’ optimize all the existing images in Media Library or in any gallery with one click
  • \n
  • works great for eCommerce websites using WooCommerce or other plugins
  • \n
  • works great with NextGEN gallery, Foo Gallery and any other galleries and sliders
  • \n
  • compatible with WP Engine hosted websites and all the major hosting providers
  • \n
  • compatible with WPML and WPML Media plugins
  • \n
  • no file size limit
  • \n
  • integrates with Gravity Forms post_image field type optimizing the images upon upload
  • \n
  • compatible with watermarking plugins
  • \n
  • option to deactivate auto-optimizing images on upload
  • \n
  • no credits are used for the images that are optimised less that 5%
  • \n
  • direct integration with CloudFlare, either by using an API Key or a Token
  • \n
  • 30 days optimization report with all image details and overall statistics
  • \n
  • We are GDPR compliant! Read more.
  • \n
  • free optimization credits for non-profits, contact us for details
  • \n
\n

How much does it cost?
\nShortPixel comes with 100 free credits/month and additional credits can be bought for as little as $4.99 for 5,000 image credits.
\nCheck out our prices.

\n
\n

Testimonials:
\n ★★★★★ A Super Plugin works very well 62% reduction overall. robertvarns
\n ★★★★★ The secret sauce for a WordPress website. mark1mark
\n ★★★★★ A must have plugin, great support! ElColo13
\n ★★★★★ Excellent Plugin! Even Better Customer Service! scaliendo
\n ★★★★★ Great image compression, solid plugin, equally great support. matters1959
\n more testimonials

\n
\n\n

Help us spread the word by recommending ShortPixel to your friends and collect 100 lifetime monthly additional image credits for each referred active user. Make money by promoting a great plugin with our 30% commission affiliate program.

\n

Other plugins by ShortPixel

\n\n

Get in touch!

\n\n

Actions and Filters for Developers

\n

The ShortPixel Image Optimiser plugin calls the following actions and filters:

\n
do_action( 'shortpixel_image_optimised', $post_id );\n
\n

upon successful optimization;

\n
do_action(\"shortpixel_before_restore_image\", $post_id);\n
\n

before restoring an image from backup;

\n
do_action(\"shortpixel_after_restore_image\", $post_id);\n
\n

after succesful restore;

\n
apply_filters(\"shortpixel_backup_folder\", $backup_folder, $main_file_path, $sizes);\n
\n

just before returning the ShortPixel backup folder, usually /wp-content/uploads/ShortpixelBackups. The $sizes are the sizes array from metadata;

\n
apply_filters('shortpixel_image_exists', file_exists($path), $path, $post_id);\n
\n

post ID is not always set, only if it’s an image from Media Library;

\n
apply_filters('shortpixel_image_urls', $URLs, $post_id);\n
\n

filters the URLs that will be sent to optimisation, $URLs is a plain array;

\n
apply_filters('shortpixel/db/chunk_size', $chunk);\n
\n

the $chunk is the value ShortPixel chooses to use as number of selected records in one query (based on total table size), some hosts work better with a different value;

\n
apply_filters('shortpixel/backup/paths', $PATHs, $mainPath);\n
\n

filters the array of paths of the images sent for backup and can be used to exclude certain paths/images/thumbs from being backed up, based on the image path. $mainPath is the path of the main image, while $PATHs is an array with all files to be backed up (including thumbnails);

\n
apply_filters('shortpixel/settings/image_sizes', $sizes);\n
\n

filters the array ($sizes) of image sizes which can be excluded from processing (displayed in the plugin Advanced settings).

\n

In order to define custom thumbnails to be picked up by the optimization you have two options, both comma separated defines:

\n
define('SHORTPIXEL_CUSTOM_THUMB_SUFFIXES', '_tl,_tr');\n
\n

will handle custom thumbnails like image-100x100_tl.jpg;

\n
define('SHORTPIXEL_CUSTOM_THUMB_INFIXES', '-uae');\n
\n

will handle custom thumbnails like image-uae-100×100.jpg;

\n
define('SHORTPIXEL_USE_DOUBLE_WEBP_EXTENSION', true);\n
\n

will tell the plugin to create double extensions for the WebP image counterparts, for example image.jpg.webp for image.jpg;

\n
define(\"SHORTPIXEL_NOFLOCK\", true);\n
\n

don’t use flock queue, only activate this when you have flock() denied errors on your installation;

\n
define(\"SHORTPIXEL_EXPERIMENTAL_SECURICACHE\", true);\n
\n

adds timestamps to URLS, to prevent hitting the cache. Useful for persistent caches.

\n

Hide the Cloudflare settings by defining these constants in wp-config.php:

\n
define('SHORTPIXEL_CFTOKEN', 'the Cloudflare API token that has Purge Cache right');\ndefine('SHORTPIXEL_CFZONE', 'The Zone ID from the domain settings in Cloudflare');\n
\n

Hide the WSO banner in the settings by defining this constant in wp-config.php:

\n
define('SHORTPIXEL_NO_BANNER', true);\n
\n

Alternatively, you can use this filter in your theme’s functions.php file:

\n
add_filter('shortpixel/settings/no_banner', true);\n
\n","download_link":"https://downloads.wordpress.org/plugin/shortpixel-image-optimiser.4.22.5.zip","tags":{"compressor":"compressor","convert-webp":"convert webp","image-optimization":"image optimization","optimize-images":"optimize images","resize":"resize"},"donate_link":"","icons":{"1x":"https://ps.w.org/shortpixel-image-optimiser/assets/icon-128x128.png?rev=1038819","2x":"https://ps.w.org/shortpixel-image-optimiser/assets/icon-256x256.png?rev=1038819"},"wporg":true},{"name":"Theme Kit for Twenty Twenty-One & Twenty Twenty (Customization, Gutenberg Blocks, Templates) – Twentig","slug":"twentig","version":"1.3.5","author":"Twentig","author_profile":"https://profiles.wordpress.org/twentig","requires":"5.5","tested":"5.8","requires_php":"5.6","rating":100,"ratings":{"1":0,"2":0,"3":0,"4":2,"5":104},"num_ratings":106,"support_threads":31,"support_threads_resolved":29,"active_installs":10000,"downloaded":139063,"last_updated":"2021-08-10 11:02am GMT","added":"2019-05-29","homepage":"https://twentig.com","short_description":"Supercharge your WordPress theme (Twenty Twenty-One & Twenty Twenty) with customization options, enhanced Gutenberg blocks,…","description":"

The easy way to build a beautiful website.

\n

Twentig helps you customize the default WordPress theme (Twenty Twenty-One and Twenty Twenty) the way you want with Google Fonts, colors, custom layouts, and many more options.

\n

With enhanced Gutenberg blocks, pre-designed block templates, and starter websites, you’ve got everything you need to build stunning pages that look great on any device — no coding or design skills needed.

\n
\n

“Twentig is a plugin that essentially gives superpowers to the default theme.” — Justin Tadlock, WP Tavern

\n
\n

Customize the most popular WordPress theme. Your way.

\n

Twentig offers powerful features to customize the Twenty Twenty-One and Twenty Twenty themes — making it easier than ever to create your own professional website.

\n

Advanced theme customization. From post grid to sidebar to sticky header to footer layout, our plugin provides endless ways to enhance your WordPress theme. Change the look and feel of your website by customizing the fonts (Google Fonts), colors, global styles, 404 page, and more.

\n

Custom page templates. Control the look of your entire page with our page templates. Easily remove the page title, header, footer, or set a transparent header. Now you can use Gutenberg blocks to create a custom hero, landing page, coming soon page, and more.

\n

Tailored design. Twentig brings design improvements to the default WordPress theme. Our additional block settings and pre-designed block templates are specially built for it — so it’s simple to make beautiful pages with Gutenberg blocks.

\n

Start with a pre-built website.

\n

Instead of starting from scratch, you can quickly import one of Twentig’s starter websites crafted by award-winning designers.

\n

The simple way to import starter websites. Choose from a variety of starter websites and seamlessly load them in a few seconds in the Customizer. Preview and customize your theme any way you like before publishing it to your live site.

\n

Flexible import. Twentig lets you import full websites (Customizer settings, menus, widgets, and pages built with Gutenberg blocks). You can also only import what you need, be it the styling or the pages, on a fresh install or an existing website.

\n

Check out the starter websites to see the power and flexibility of Twentig.

\n

Do more with Gutenberg blocks.

\n

Twentig enhances the existing Gutenberg blocks — taking the WordPress block editor to a new level of design and creativity.

\n

Block customization made easy. We’ve added the right amount of features to the Gutenberg core blocks. So you can easily customize your blocks to fit your needs with just a few clicks.

\n

Powerful Gutenberg block features. Twentig provides alternative styles, advanced block settings, margin controls, and CSS classes. From columns style to group shape divider to typography settings, you have the best tools to customize the Gutenberg blocks and build gorgeous pages.

\n

Build your pages with ready-to-use templates.

\n

Twentig brings hundreds of pre-designed block patterns and page templates — making it easier and faster than ever to create stunning pages.

\n

Flexible block templates. Choose from a variety of versatile block patterns and page templates that you can mix and match to fit your project. Our block template library is designed to enable a wide range of uses and endless design possibilities.

\n

Professional design. Our templates are responsive and give your pages a professional look right from the start — no coding or design skills needed.

\n

Twentig features list

\n

Check out the screenshots to see how Twentig can transform your theme and the Gutenberg blocks.

\n

ADDITIONAL THEME OPTIONS

\n

Header

\n
    \n
  • Header layouts
  • \n
  • Sticky header
  • \n
  • Header width
  • \n
  • Header decoration
  • \n
  • Additional elements: search bar, social icons, button
  • \n
  • Logo width
  • \n
  • Custom logo for transparent header
  • \n
  • Menu link style
  • \n
  • Option to display the burger menu on tablet
  • \n
\n

Footer

\n
    \n
  • Footer layouts
  • \n
  • Footer widgets layout
  • \n
  • Footer width
  • \n
  • Custom copyright and remove “Powered by WordPress”
  • \n
  • Social icons
  • \n
\n

Site Layout

\n
    \n
  • Text width
  • \n
  • Wide width (Twenty Twenty-One theme)
  • \n
  • Site width to create a boxed layout site (Twenty Twenty-One theme)
  • \n
\n

Blog Posts Page

\n
    \n
  • Option to display the page title (Twenty Twenty-One theme)
  • \n
  • Blog layouts: stack, post grid, post grid card
  • \n
  • Blog sidebar (Twenty Twenty-One theme)
  • \n
  • Number of columns for post grid layouts
  • \n
  • Featured image options
  • \n
  • Blog content options
  • \n
  • Blog meta options
  • \n
  • Pagination style (Twenty Twenty-One theme)
  • \n
\n

Single Blog Post

\n
    \n
  • Featured image and post title layouts
  • \n
  • Blog sidebar (Twenty Twenty-One theme)
  • \n
  • Option to display the manual excerpt below the title
  • \n
  • Single post meta options
  • \n
  • Post navigation layout (Twenty Twenty theme)
  • \n
  • Hide comments section
  • \n
\n

Typography & Colors

\n
    \n
  • Google Fonts options (curated collection and custom Google Fonts)
  • \n
  • Google Fonts pairings and Google Fonts presets
  • \n
  • Font settings
  • \n
  • Color options
  • \n
\n

Pages

\n
    \n
  • Custom page templates: remove the page title, header, and footer, or set a transparent header
  • \n
  • Featured image and page title layouts
  • \n
\n

Custom 404 Page

\n
    \n
  • Option to assign any page as the 404 page
  • \n
\n

Additional Settings

\n
    \n
  • Minimal style for links (Twenty Twenty-One theme)
  • \n
  • Button style
  • \n
  • Separator style
  • \n
  • Social icons style (Twenty Twenty theme)
  • \n
\n

ADDITIONAL GUTENBERG BLOCK SETTINGS

\n
    \n
  • Gutenberg core blocks: top margin and bottom margin
  • \n
  • Group: shadow, border, shape divider, full height
  • \n
  • Columns: gutter, responsive layout, columns style (card, border), text alignment, stretched link
  • \n
  • Media & Text: styles (shadow, overlap), responsive layout, reverse stack order, stretched link, full height
  • \n
  • Cover: styles (shadow, inner border), stretched link, hover effect
  • \n
  • Heading: typography options, decoration
  • \n
  • Paragraph: wide width, typography options
  • \n
  • List: styles (dash, checkmark, arrow, border, no bullet, inline), typography options, spacing
  • \n
  • Image: styles (rounded, shadow, frame, border), image filter
  • \n
  • Gallery: stack variation, styles (rounded, frame), fixed width columns, image aspect ratio, gutter, responsive layout, caption size, border, image filter
  • \n
  • YouTube, Vimeo, SoundCloud, and Video blocks: style (frame)
  • \n
  • Latest Posts: styles (card, border), image aspect ratio, heading size, stretched link, text alignment
  • \n
  • Social Icons: hover effect
  • \n
  • Quote: additional styles
  • \n
  • Pullquote: additional styles
  • \n
  • Table: styles (border, inner border), vertical alignment
  • \n
  • Separator: style (short line), responsive visibility
  • \n
  • Spacer: responsive visibility
  • \n
\n

GUTENBERG TEMPLATE LIBRARY

\n

Hundreds of Gutenberg block patterns grouped by following categories:

\n
    \n
  • Columns
  • \n
  • Text Columns
  • \n
  • Text and Image
  • \n
  • Text
  • \n
  • Hero
  • \n
  • Cover
  • \n
  • Call to Action
  • \n
  • List
  • \n
  • Numbers, Stats
  • \n
  • Gallery
  • \n
  • Video, Audio
  • \n
  • Latest Posts
  • \n
  • Contact
  • \n
  • Team
  • \n
  • Testimonials
  • \n
  • Logos, Clients
  • \n
  • Pricing
  • \n
  • FAQ
  • \n
  • Events, Schedule
  • \n
\n

Dozens of pre-designed page templates grouped by following categories:

\n
    \n
  • Homepage
  • \n
  • About
  • \n
  • Services
  • \n
  • Contact
  • \n
  • Single Page
  • \n
\n

Get more

\n\n

Enjoying Twentig?

\n\n","download_link":"https://downloads.wordpress.org/plugin/twentig.1.3.5.zip","tags":{"gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","templates":"templates","theme":"theme","twenty-twenty-one":"twenty-twenty-one"},"donate_link":"https://www.paypal.com/donate?hosted_button_id=JTBTPQAFEA94E","icons":{"1x":"https://ps.w.org/twentig/assets/icon.svg?rev=2569439","2x":"https://ps.w.org/twentig/assets/icon-256x256.png?rev=2569439","svg":"https://ps.w.org/twentig/assets/icon.svg?rev=2569439"},"wporg":true},{"name":"Custom Post Type UI","slug":"custom-post-type-ui","version":"1.9.2","author":"WebDevStudios","author_profile":"https://profiles.wordpress.org/williamsba1","requires":"5.5","tested":"5.7.2","requires_php":"5.6","rating":94,"ratings":{"1":12,"2":3,"3":6,"4":9,"5":202},"num_ratings":232,"support_threads":66,"support_threads_resolved":29,"active_installs":1000000,"downloaded":8718437,"last_updated":"2021-06-17 2:40am GMT","added":"2010-02-26","homepage":"https://github.com/WebDevStudios/custom-post-type-ui/","short_description":"Admin UI for creating custom post types and custom taxonomies for WordPress","description":"

Custom Post Type UI provides an easy to use interface for registering and managing custom post types and taxonomies for your website.

\n

While CPTUI helps solve the problem of creating custom post types, displaying the data gleaned from them can be a whole new challenge. That’s why we created Custom Post Type UI Extended. View our Layouts page to see some examples that are available with Custom Post Type UI Extended.

\n

Official development of Custom Post Type UI is on GitHub, with official stable releases published on WordPress.org. The GitHub repo can be found at https://github.com/WebDevStudios/custom-post-type-ui. Please use the Support tab for potential bugs, issues, or enhancement ideas.

\n

Pluginize was launched in 2016 by WebDevStudios to promote, support, and house all of their WordPress products. Pluginize is not only creating new products for WordPress all the time, like CPTUI Extended, but also provides ongoing support and development for WordPress community favorites like CMB2 and more.

\n","download_link":"https://downloads.wordpress.org/plugin/custom-post-type-ui.zip","tags":{"cms":"cms","cpt":"cpt","custom-post-types":"custom post types","post":"post","types":"types"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=3084056","icons":{"1x":"https://ps.w.org/custom-post-type-ui/assets/icon-128x128.png?rev=2549362","2x":"https://ps.w.org/custom-post-type-ui/assets/icon-256x256.png?rev=2549362"},"wporg":true},{"name":"Flex Posts – Widget and Gutenberg Block","slug":"flex-posts","version":"1.8.1","author":"Tajam","author_profile":"https://profiles.wordpress.org/tajam","requires":"5.2","tested":"5.8","requires_php":false,"rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":17},"num_ratings":17,"support_threads":8,"support_threads_resolved":3,"active_installs":3000,"downloaded":24512,"last_updated":"2021-07-29 10:41am GMT","added":"2018-05-10","homepage":"https://tajam.id/flex-posts/","short_description":"A widget to display posts with thumbnails in various layouts. Fits nicely in any widget…","description":"

Flex Posts is a widget to display posts in various different layouts. It is useful for a news site where you need to display a lot of posts in a page.

\n

The widget is responsive so you can place it in any widget area. The widget content will adapt based on the width of its container. In a narrow area like standard sidebar, posts will be displayed vertically, but in a wider area, posts will be displayed in 2 or 3 columns depends on the container’s width.

\n

Widget Settings

\n
    \n
  • Title: Set the widget title. Leave it empty to hide the title section.
  • \n
  • Title URL: Set the title link url. Leave it empty to disable link in the title.
  • \n
  • Layout: Select a widget layout, from layout 1 to 4.
  • \n
  • Post type: Select the post type. Options include: Post, Page, custom post types if available, and any.
  • \n
  • Category: Select a category for the posts, or choose All Categories to disable this filter.
  • \n
  • Tag(s): Set a post tag (using the tag slug). You can also use comma separated value for multiple tags. Prepending a tag with a hyphen will exclude posts matching that tag. Eg, featured, -video will show posts tagged with featured but not video.
  • \n
  • Order by: Set the order in which the posts will be displayed. Options include: Newest, Oldest, Most Commented, Alphabetical, Random, Modified Date.
  • \n
  • Number of posts to show: Set the number of posts displayed.
  • \n
  • Number of posts to skip: Set the number of posts to displace or pass over.
  • \n
  • Show image on: Select in which posts the image will be displayed. Options include: All posts, First post only, or none.
  • \n
  • Image size: Select image size from registered image sizes.
  • \n
  • Show post title: Choose to show or hide the post title.
  • \n
  • Show categories: Choose to show or hide the categories.
  • \n
  • Show author: Choose to show or hide the author.
  • \n
  • Show date: Choose to show or hide the date.
  • \n
  • Show comments number: Choose to show or hide the comments number.
  • \n
  • Show excerpt: Choose to show or hide the excerpt
  • \n
  • Excerpt length: Set the number of words for the excerpt.
  • \n
  • Show read more link: Choose to show or hide the Read More link.
  • \n
  • Read more text: Set the text for the read more link. You can leave it empty to use the default text Read More.
  • \n
  • Show pagination: Choose to show or hide the pagination links.
  • \n
  • Additional class(es): Set a custom class for the widget container. You can use spaces to separate multiple classes.
  • \n
\n

Gutenberg Block

\n

Since version 1.1.0, Flex Posts also includes a gutenberg block. You can add the widget directly into the post/page content with the WP 5.0 block editor.

\n

Demo

\n

Please visit the live demo here: Flex Posts Demo

\n

Requirements

\n

This plugin has been tested and works with at least PHP 5.3 installed in your environment. But we strongly recommend you to use the latest PHP version, as using older versions may expose you to security vulnerabilities.

\n","download_link":"https://downloads.wordpress.org/plugin/flex-posts.zip","tags":{"category-posts":"category posts","grid":"grid","magazine":"magazine","news":"news","responsive":"responsive"},"donate_link":"https://tajam.id/","icons":{"1x":"https://ps.w.org/flex-posts/assets/icon-128x128.png?rev=1871802"},"wporg":true},{"name":"YARPP – Yet Another Related Posts Plugin","slug":"yet-another-related-posts-plugin","version":"5.27.4","author":"YARPP","author_profile":"https://profiles.wordpress.org/jeffparker","requires":"3.7","tested":"5.8","requires_php":"5.3","rating":94,"ratings":{"1":33,"2":2,"3":14,"4":45,"5":626},"num_ratings":720,"support_threads":28,"support_threads_resolved":12,"active_installs":100000,"downloaded":6484415,"last_updated":"2021-08-25 5:56pm GMT","added":"2008-01-02","homepage":"https://yarpp.com/","short_description":"The best WordPress plugin for displaying related posts. Simple and flexible, with a powerful proven algorithm and inbuilt caching.","description":"

Related Posts Plugin for WordPress

\n

Yet Another Related Posts Plugin (YARPP) is a professionally maintained, highly customizable, performant and feature rich plugin that displays pages, posts, and custom post types related to the current entry. YARPP introduces your visitors to other relevant content on your site — boosting visitor engagement, time on site and SEO. Related Posts can increase your pageviews up to 10%. Simply install, activate and watch your sessions and pageviews increase.

\n

Key Features

\n
    \n
  • An advanced and versatile algorithm: Using a customizable algorithm considering post titles, content, tags, categories, and custom taxonomies, YARPP finds related content from across your site
  • \n
  • Caching: Inbuilt cache makes subsequent queries super efficient and fast
  • \n
  • Custom Templates and Styles: Use a pre-built list or thumbnail template, or use the YARPP custom templating system for 100% control of how results are styles and displayed
  • \n
  • Flexible with a full range of placement options, including:\n\n
  • \n
  • Works with all languages, including those with full-width (double-byte) characters and those that don’t use spaces between words
  • \n
  • Custom post type and taxonomy support
  • \n
  • WordPress Multisite support
  • \n
  • bbPress forums support
  • \n
  • WooCommerce support
  • \n
  • Professionally maintained and supported with regular updates
  • \n
\n

YARPP Algorithm Explained

\n

\n

Contribute: Translate YARPP

\n

YARPP is available for translation directly on WordPress.org. Please check out the official Translator Handbook.

\n

Wide Support

\n

YARPP is the most popular and the highest rated Related Posts Plugin for WordPress. With your support, this plugin always strives to be the best WordPress plugin for Content Discovery and Related Posts.

\n

✔ Over 10 years of development
\n✔ Over 6 million downloads
\n✔ Translated into more than a dozen languages
\n✔ Professionally maintained and actively supported with regular updates
\n✔ Works with all languages

\n

YARPP works best with PHP 5.3 or greater, MySQL 5.6 or greater OR MariaDB 10.1 or greater, and WordPress 3.7 or greater. See the FAQ for answers to common questions.

\n","download_link":"https://downloads.wordpress.org/plugin/yet-another-related-posts-plugin.5.27.4.zip","tags":{"contextual-related-posts":"contextual related posts","posts":"posts","related-posts":"related posts","seo":"seo","similar-posts":"similar posts"},"donate_link":"https://yarpp.com","icons":{"1x":"https://ps.w.org/yet-another-related-posts-plugin/assets/icon-128x128.png?rev=2549977","2x":"https://ps.w.org/yet-another-related-posts-plugin/assets/icon-256x256.png?rev=2549977"},"wporg":true},{"name":"Superb WordPress Table (SEO Optimized Tables With Schema)","slug":"superb-tables","version":"1.0.8","author":"SuPlugins","author_profile":"https://profiles.wordpress.org/suplugins","requires":"3.0.1","tested":"5.7.2","requires_php":"5.2.4","rating":80,"ratings":{"1":0,"2":1,"3":0,"4":0,"5":2},"num_ratings":3,"support_threads":1,"support_threads_resolved":1,"active_installs":4000,"downloaded":33954,"last_updated":"2021-05-26 8:49pm GMT","added":"2019-03-05","homepage":"https://superbthemes.com/plugins/superb-tables/","short_description":"Responsive & SEO Optimized tables. Get your Google Featured Snippets. Different table designs, table shortcodes & lightweight code.","description":"

Responsive & SEO Optimized tables. Get your Google Featured Snippets. Different table designs, table shortcodes & lightweight code.

\n

Click here to view the demo!

\n

Features

\n
    \n
  • Table Shortcodes
  • \n
  • Multiple Color Schemes
  • \n
  • Use Themes Own Table Design
  • \n
  • Schema Markup (Micro Data)
  • \n
  • Create Unlimited Tables
  • \n
  • Create Unlimited Rows
  • \n
  • Create unlimited Columns
  • \n
  • SEO-friendly Tables With Schema markup
  • \n
  • Purple Color Scheme
  • \n
  • Black/White Color Scheme
  • \n
  • Swap around on columns & rows with drag n’ drop
  • \n
  • Delete Tables & Remove Them From Your Database
  • \n
  • Gives you a better chance to get Google Featured Snippets
  • \n
  • Friendly User Support)
  • \n
  • GDPR Compliant
  • \n
  • W3C Valid Code
  • \n
  • WYSIWYG Functionality Editor
  • \n
\n

Configuring the plugin

\n

Once you’ve installed the plugin, check the left sidebar, and you will notice the Superb Table section. Click on it, and you can now create your first table. Just click on the Add New Table button.

\n

Feel free to add as many columns and rows as you want—inserting rows and columns is extremely easy.

\n

You have a few options to make your table stand apart. First, choose one of the three color schemes: standard, purple, or black. Second, choose your table design: default or custom. Block, left, and inline-block are the floating modes for your table. Finally, enable or disable the full width of the table.

\n

Once you finish your table, name it and save it. All you have to do now is to copy the shortcode and paste wherever you want, you can for example embed it in the Gutenberg Shortcode Block! (It works in the classic WordPress editor too)

\n

Consider purchasing our premium version for $11 to unlock more features!

\n

Why use a HTML table

\n

Displaying data within a comparison table is beneficial for not only readers but also content creators. A table does a better job than long paragraphs of text, underlined phrases, and bulleted lists. It shows a lot of information side by side in a concise format. Bloggers and content creators should create tables and insert the data. There’s no need to search for breathtaking expressions, cool descriptions, or digestible lists of items. It’s just pure data, and everyone is happy with this situation. You can read our full guide on How to Add a Table to Your WordPress Website with Superb Tables.

\n

Responsive Tables

\n

We developed Superb Tables mobile friendly by taking responsiveness into account, and as a result, you can make a WordPress table responsive by using our plugin. The tables are fully responsive regardless of the number of rows and columns. The plugin works on all mobile devices and tablets (iPhone, Android etc.). The plugin works with AMP.

\n

SEO Friendly WordPress Tables With Schema Markup

\n

“Schema markup“ and “featured snippets“ are two interconnected terms that are being used by more and more bloggers, SEO practitioners, and developers. Have you noticed that Google now provides complex answers in the form of lists, tables, paragraphs, or videos directly on the results page? Those are featured snippets.

\n

Moz claims that 23% of all search results include a featured snippet—a descriptive box displayed on the search results page providing information for your query. It may include paragraphs, lists, videos, or tables. You have to consider featured snippets when choosing a table plugin—can it help Google generate a featured snippet from the data within your table?

\n

We developed Superb Tables with featured snippets in mind, and you can use the plugin worry-free. We used schema markup, which is the code that helps search engine bots generate snippets from your content, including tables. It’s a great way for affiliate websites and blogs to promote their content.

\n

You must use WordPress tables with schema markup to get featured snippets on search engines, and Superb Tables is a reliable solution in this respect.

\n

Add Tables everywhere & use them for Any Purpose

\n

You can insert the SEO optimised tables with microdata everywhere through the shortcode. For example in a popup, widgets, Gutenberg blocks, email newsletter sent from your WordPress website. You can also insert it on any post or page, even category pages, blog feed, search page and your 404 page! The plugin is made for affiliates marketers and affiliate websites, having a good SERP rank in Google and Bing is critical. When you’re looking to improve your ranking then all of your plugins must be SEO optimized, otherwise it’s gonna be hard to create monetization through ads programs such as AdSense and Amazon Associates Program.

\n

We know that business is important for any modern blog or affiliate marketing website that’s looking to make a revenue from it. Remember to use HTTPS (SSL) on your website, a CDN and lightweight stats tracking tools such as Google Analytics to better your SEO as well.

\n

Guide to creating your Superb Tables

\n
    \n
  1. In the wordpress admin panel, go to the sidebar and click ‘Superb Tables’.
  2. \n
  3. Click the green ‘Add new table’ in the top left corner
  4. \n
  5. Fill in your table data, click ‘Save’
  6. \n
  7. Click ‘Superb Tables’ in the left sidebar and copy paste the ‘Table Shortcode’
  8. \n
  9. Insert the Table Shortcode (For example [spbtbl_sc id=1] ) in a post, page, widget or in HTML.
  10. \n
\n

You’re done!

\n

Resources & Inspiration

\n
    \n
  • Auto-Expand: https://codepen.io/vsync/pen/frudD
  • \n
  • Data Table: https://codepen.io/alassetter/pen/cyrfB
  • \n
  • Table DnD: https://github.com/isocra/TableDnD/
  • \n
  • Table icon: https://www.iconfinder.com/icons/1608863/table_icon#size=256
  • \n
  • Custom confirm: https://codepen.io/Ana_Champion/pen/JRbZEL
  • \n
  • Table design inspiration: https://codepen.io/lukepeters/pen/bfFur
  • \n
  • Table design inspiration: https://codepen.io/alassetter/pen/cyrfB
  • \n
  • Table design inspiration: https://uicookies.com/wp-content/uploads/2018/05/table-responsive-v2-1000×750.jpg
  • \n
  • Table design inspiration: https://uicookies.com/wp-content/uploads/2018/05/table-responsive-v1.jpg
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/superb-tables.1.0.8.zip","tags":{"content-tables":"content tables","responsive-tables":"responsive tables","table":"table","tables":"tables"},"donate_link":"","icons":{"1x":"https://ps.w.org/superb-tables/assets/icon-256x256.png?rev=2044672","2x":"https://ps.w.org/superb-tables/assets/icon-256x256.png?rev=2044672"},"wporg":true},{"name":"Floating Button","slug":"floating-button","version":"4.3","author":"Wow-Company","author_profile":"https://profiles.wordpress.org/wpcalc","requires":"3.2","tested":"5.8","requires_php":"5.3","rating":80,"ratings":{"1":1,"2":1,"3":0,"4":0,"5":5},"num_ratings":7,"support_threads":1,"support_threads_resolved":0,"active_installs":2000,"downloaded":32501,"last_updated":"2021-07-21 5:47am GMT","added":"2018-09-08","homepage":"https://wordpress.org/plugins/floating-button/","short_description":"Easily create a custom sticky floating buttons. The Floating Button will be the effective solution for increasing the recognition of your web resource","description":"

The Floating Button is the free WordPress plugin for creating the original sticky floating actions buttons. It allows you to install on the site floating buttons with unique thematic icons. The extension serves for placing both traditional navigation bar and additional block with useful information for user.

\n

The Floating Button plugin will be the effective solution for increasing the recognition of your web resource. Its connection will bring originality and novelty to the used theme of the site. The extension helps to configure user-friendly navigation, place useful information or contact panel.

\n

Main features

\n
    \n
  • 2 submenu;
  • \n
  • more than 1500+ FontAwesome icons;
  • \n
  • any links insertion;
  • \n
  • using the tooltips to provide more information;
  • \n
  • round buttons shape;
  • \n
  • LogIn link;
  • \n
  • LogOut link;
  • \n
  • Lost password link
  • \n
\n

Floating Button can be used for:

\n
    \n
  • site navigation;
  • \n
  • additional menu;
  • \n
  • social panel;
  • \n
  • user menu;
  • \n
  • Skype menu and others;
  • \n
  • And more…
  • \n
\n

Pro version

\n

Connect the Pro-version of the plugin to gain access to more features:

\n

Preview of Pro version

\n
    \n
  • create an unlimited amount of buttons;
  • \n
  • use up to 4 floating button positions;
  • \n
  • change the form of the menu display: Circle, Rounded square, Ellipse, Square;
  • \n
  • set the color of the main button and submenu items;
  • \n
  • accompany the change in navigation behavior with the highlight when hovering the mouse cursor;
  • \n
  • use the built-in user menu, social panel and print function;
  • \n
  • set the display according to the user role and status;
  • \n
  • change the menu output depending on the language of the page;
  • \n
  • add restrictions for screens with large or small resolution;
  • \n
  • use the categories on the site, exceptions and ID to place the menu on individual pages;
  • \n
  • insert the shortcode of the panel in the specified location;
  • \n
  • And more…
  • \n
\n

Buy Pro version

\n

Use with other plugins to maximize your results

\n\n

Support

\n

Search for answers and ask your questions at support center

\n","download_link":"https://downloads.wordpress.org/plugin/floating-button.4.3.zip","tags":{"circle-menu":"circle menu","float-menu":"float menu","floating-button":"floating button","floating-menu":"floating menu","sticky-button":"sticky button"},"donate_link":"https://wow-estore.com/item/floating-button-pro/","icons":{"1x":"https://ps.w.org/floating-button/assets/icon-128x128.png?rev=2533016","2x":"https://ps.w.org/floating-button/assets/icon-256x256.png?rev=2533016"},"wporg":true},{"name":"Breadcrumb NavXT","slug":"breadcrumb-navxt","version":"6.6.0","author":"John Havlik","author_profile":"https://profiles.wordpress.org/mtekk","requires":"4.9","tested":"5.7.2","requires_php":"5.5","rating":94,"ratings":{"1":5,"2":2,"3":4,"4":7,"5":104},"num_ratings":122,"support_threads":14,"support_threads_resolved":0,"active_installs":900000,"downloaded":10109275,"last_updated":"2021-04-01 2:13am GMT","added":"2007-12-01","homepage":"http://mtekk.us/code/breadcrumb-navxt/","short_description":"Breadcrumb NavXT, the successor to the popular WordPress plugin Breadcrumb Navigation XT, was written from the ground up to be better than its ancesto …","description":"

Breadcrumb NavXT, the successor to the popular WordPress plugin Breadcrumb Navigation XT, was written from the ground up to be better than its ancestor. This plugin generates locational breadcrumb trails for your WordPress powered blog or website. These breadcrumb trails are highly customizable to suit the needs of just about any website running WordPress. The Administrative interface makes setting options easy, while a direct class access is available for theme developers and more adventurous users.

\n

PHP Requirements

\n

Breadcrumb NavXT 5.2 and newer require PHP5.3
\nBreadcrumb NavXT 5.1.1 and older require PHP5.2

\n

Features (non-exhaustive)

\n
    \n
  • RDFa format Schema.org BreadcrumbList compatible breadcrumb generation.
  • \n
  • Extensive breadcrumb customization control via a settings page with appropriate default values for most use cases.
  • \n
  • Network admin settings page for managing breadcrumb settings for all subsites with configurable global priority.
  • \n
  • Built in WordPress Widget.
  • \n
  • Extensible via OOP and provided actions and filters.
  • \n
  • WPML compatible (enhanced compatibility with WPML extensions plugin).
  • \n
  • Polylang compatible (enhanced compatibility with Polylang extensions plugin).
  • \n
  • bbPress compatible (enhanced compatibility with bbPress extensions plugin).
  • \n
  • BuddyPress compatible (enhanced compatibility with BuddyPress extensions plugin).
  • \n
\n

Translations

\n

Breadcrumb NavXT now supports WordPress.org language packs. Want to translate Breadcrumb NavXT? Visit Breadcrumb NavXT’s WordPress.org translation project.

\n","download_link":"https://downloads.wordpress.org/plugin/breadcrumb-navxt.6.6.0.zip","tags":{"breadcrumb":"breadcrumb","breadcrumbs":"breadcrumbs","menu":"menu","navigation":"navigation","trail":"trail"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=FD5XEU783BR8U&lc=US&item_name=Breadcrumb%20NavXT%20Donation¤cy_code=USD&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted","icons":{"1x":"https://ps.w.org/breadcrumb-navxt/assets/icon.svg?rev=1927103","2x":"https://ps.w.org/breadcrumb-navxt/assets/icon-256x256.png?rev=2410525","svg":"https://ps.w.org/breadcrumb-navxt/assets/icon.svg?rev=1927103"},"wporg":true},{"name":"WP Recipe Maker","slug":"wp-recipe-maker","version":"7.5.1","author":"Bootstrapped Ventures","author_profile":"https://profiles.wordpress.org/brechtvds","requires":"4.4","tested":"5.8","requires_php":"5.4","rating":100,"ratings":{"1":1,"2":0,"3":1,"4":4,"5":201},"num_ratings":207,"support_threads":27,"support_threads_resolved":23,"active_installs":50000,"downloaded":1530297,"last_updated":"2021-08-31 12:27pm GMT","added":"2016-09-07","homepage":"http://bootstrapped.ventures/wp-recipe-maker/","short_description":"The easy and user-friendly recipe plugin for everyone. Automatic JSON-LD metadata for food AND how-to recipes will improve your SEO!","description":"

WP Recipe Maker is the easy recipe plugin that everyone can use. An easy workflow allows you to add recipes to any post or page with automatic JSON-LD metadata for your recipes. This metadata will improve your SEO and get you more visitors!

\n

\n

Would you like to see the plugin in action before installing it? We have a WP Recipe Maker demo website showcasing all of the features!

\n
\n

Get the most out of this plugin!
\n Join the WP Recipe Maker Email Course and we’ll help you get started and learn all the tips and trick for using WPRM.

\n
\n

Features

\n

An overview of WP Recipe Maker features:

\n
    \n
  • Compatible with both the Classic Editor and new Gutenberg editor
  • \n
  • Includes an Elementor block and shortcode can be used in other page builders
  • \n
  • Easy workflow to add recipes to any post or page
  • \n
  • Uses schema.org/Recipe JSON-LD metadata optimised for Google Recipe search
  • \n
  • Uses schema.org/How-to JSON-LD metadata optimised for non-food recipes and instructions
  • \n
  • Supports both regular and Guided Recipes for Google metadata
  • \n
  • Google AMP compatible
  • \n
  • Integrates recipe metadata with Yoast SEO schema graph
  • \n
  • Option to disable metadata per recipe if you want to publish non-food or DIY recipes
  • \n
  • Compatible with Pinterest Rich Pins and a setting to easily opt out
  • \n
  • Outputs ItemList metadata for Recipe Roundup posts
  • \n
  • Associate ingredients with instructions to have them show up exactly where needed
  • \n
  • Keyboard accessible and AMP compatible ratings for comments
  • \n
  • Interactive print recipe page with room for ads and optional credit to your website
  • \n
  • Fallback recipe shows up when the plugin is disabled
  • \n
  • Include a recipe video in the template and metadata
  • \n
  • Add photos or videos to any step of the recipe
  • \n
  • Print recipe and jump to recipe shortcodes
  • \n
  • This plugin is fully responsive, your recipes will look good on any device
  • \n
  • Easily change the look and feel to fit your website in the Template Editor
  • \n
  • Structure your ingredients and instructions in groups (e.g. icing and cake batter)
  • \n
  • Full text search for your recipes
  • \n
  • Access your recipes through the WordPress REST API
  • \n
  • Built-in SEO check for your recipe metadata
  • \n
  • Compatible with RTL languages
  • \n
  • Import your recipes from other plugins (see below)
  • \n
\n

WP Recipe Maker Premium

\n

Looking for some more advanced functionality? We also have the WP Recipe Maker Premium add-on available with the following features:

\n
    \n
  • Use ingredient links for linking to products or other recipes
  • \n
  • Adjustable servings make it easy for your visitors
  • \n
  • Display all nutrition data in a nutrition label
  • \n
  • User Ratings allow visitors to vote without commenting
  • \n
  • Add a mobile-friendly kitchen timer to your recipes
  • \n
  • More Premium templates for a unique recipe template
  • \n
  • Create custom recipe taxonomies like price level, difficulty, …
  • \n
  • Use checkboxes for your ingredients and instructions
  • \n
\n

Even more add-ons can add the following functionality:

\n
    \n
  • Integration with a Nutrition API for automatic nutrition facts
  • \n
  • Unit Conversion to reach an international audience with a different unit system
  • \n
  • Have your users send in recipes through the Recipe Submission form
  • \n
  • Give your visitors the power of Recipe Collections for favourites, meal planning and more
  • \n
\n

Import Options

\n

Currently using another recipe plugin? No problem! You can easily migrate all your existing recipes to WP Recipe Maker if you’re using any of the following plugins:

\n
    \n
  • Tasty Recipes
  • \n
  • Create by Mediavine
  • \n
  • EasyRecipe
  • \n
  • WP Ultimate Recipe
  • \n
  • Recipe Card Blocks by WPZOOM
  • \n
  • Meal Planner Pro
  • \n
  • BigOven
  • \n
  • ZipList and Zip Recipes
  • \n
  • Yummly
  • \n
  • Yumprint Recipe Card
  • \n
  • FoodiePress
  • \n
  • Cooked
  • \n
  • Cookbook
  • \n
  • Simple Recipe Pro
  • \n
  • Purr Recipe Plugin
  • \n
  • Recipes by Simmer
  • \n
  • WordPress.com shortcode
  • \n
  • JSON-LD HTML Script
  • \n
  • Multi Rating (ratings only)
  • \n
  • (Need anything else? Just ask!)
  • \n
\n

This plugin is in active development. Feel free to contact us with any feature requests or ideas.

\n","download_link":"https://downloads.wordpress.org/plugin/wp-recipe-maker.zip","tags":{"cooking":"cooking","food":"food","ingredients":"ingredients","recipe":"Recipe","recipes":"recipes"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QG7KZMGFU325Y","icons":{"1x":"https://ps.w.org/wp-recipe-maker/assets/icon-128x128.png?rev=1491788","2x":"https://ps.w.org/wp-recipe-maker/assets/icon-256x256.png?rev=1491788"},"wporg":true},{"name":"Slim SEO – Fast & Automated WordPress SEO Plugin","slug":"slim-seo","version":"3.10.1","author":"eLightUp","author_profile":"https://profiles.wordpress.org/rilwis","requires":"4.5","tested":"5.8","requires_php":"5.6","rating":92,"ratings":{"1":1,"2":3,"3":0,"4":0,"5":26},"num_ratings":30,"support_threads":17,"support_threads_resolved":12,"active_installs":10000,"downloaded":169862,"last_updated":"2021-07-22 1:33am GMT","added":"2018-12-31","homepage":"https://wpslimseo.com","short_description":"A full-featured SEO plugin for WordPress that's lightweight, blazing fast with minimum configuration. No bloats,…","description":"

A Fast & Automated SEO Plugin For WordPress

\n

Currently there are many SEO plugins for WordPress in the market. But these plugins often have too many options and are very complicated for ordinary users. Access to their configuration section, you will easily get lost in a maze of explanations and options that you sometimes don’t understand. Besides, there are ads!

\n

So how can an ordinary user use an SEO plugin?

\n

SEO should be an integrated part of WordPress, where users don’t need or need very little effort to configure for SEO. The main reason is that not everyone understands the terms of SEO and how to configure them optimally.

\n

So, we made Slim SEO.

\n

Slim SEO is a full-featured SEO plugin, that’s done right! It provides a complete SEO solution for WordPress where the configuration has been done automatically. Users do not need to care about their complex and semantic options.

\n

So what does Slim SEO do?

\n

Slim SEO Features

\n

Slim SEO helps you do the following jobs automatically:

\n

1. Meta Tags

\n

The following meta tags are auto-generated and optimized for the best SEO scores.

\n\n

2. XML Sitemap

\n

Slim SEO automatically generates XML sitemap (at domain.com/sitemap.xml) to submit to search engines. With XML sitemaps, your website are indexed fast and completely.

\n

3. Breadcrumbs

\n

The plugin allows you to output a breadcrumb trail on your website easily. It automatically fetches the information from the current post and output a hierarchy for you. You can also style the breadcrumbs to match your theme style.

\n

4. Schema (Structured Data)

\n

Schema is a way that describes structured data for search engines. Based on the data provided, search engines can show the content in the search results page in a more appealing way.

\n

Slim SEO automatically adds the some structured data to the website via JSON-LD which makes your website more SEO-friendly. Not only schemas are created by the plugin, there are also meaningful connections between them. For example, an article (single post) is the main entity of the current webpage. Slim SEO does that all without any configuration.

\n

5. Auto Redirection

\n
    \n
  • Auto redirect attachment page to the attachment file URL.
  • \n
  • Auto redirect author page to the homepage if the website has only one author or the author doesn’t have any posts.
  • \n
\n

6. Open Source

\n

Slim SEO has different contributors which help make Slim SEO a quality product. Join us on Github!

\n

Who should use Slim SEO?

\n

Everyone can use Slim SEO!

\n

However, Slim SEO is perfectly suitable for users who prefer simplicity or do not like the complicated options that other SEO plugins provide. It’s also a good choice for users with little SEO knowledge and just want to use SEO plugins to automate their jobs.

\n

If you like this plugin, you might also like our other products: Meta Box and GretaThemes.

\n","download_link":"https://downloads.wordpress.org/plugin/slim-seo.3.10.1.zip","tags":{"google":"google","schema":"schema","search-engine-optimization":"search engine optimization","seo":"seo","sitemap":"sitemap"},"donate_link":"https://wpslimseo.com/pro/","icons":{"1x":"https://ps.w.org/slim-seo/assets/icon.svg?rev=2005049","svg":"https://ps.w.org/slim-seo/assets/icon.svg?rev=2005049"},"wporg":true},{"name":"Schema & Structured Data for WP & AMP","slug":"schema-and-structured-data-for-wp","version":"1.9.83.1","author":"Magazine3","author_profile":"https://profiles.wordpress.org/magazine3","requires":"3.0","tested":"5.8","requires_php":false,"rating":94,"ratings":{"1":13,"2":1,"3":2,"4":10,"5":183},"num_ratings":209,"support_threads":29,"support_threads_resolved":19,"active_installs":80000,"downloaded":2324930,"last_updated":"2021-08-31 7:07am GMT","added":"2018-08-06","homepage":"","short_description":"Schema & Structured Data for WP & AMP adds Google Rich Snippets markup according to Schema.org guidelines to structure your site for SEO.","description":"

Schema & Structured Data for WP & AMP adds Google Rich Snippets markup according to Schema.org guidelines to structure your site for SEO. (AMP Compatible)

\n

Features

\n
    \n
  • Schema Types: Currently, We have more than 35 schema types such as Blog Posting, News article, Local Business, Web page, Article, Recipe, Product, and Video Object view all. We are going to add all the schema types in the future. You can request the one you want and we will add it for you!
  • \n
  • Conditional Display Fields: Meaning you include or exclude any posts, pages, post types, taxonomies and more!
  • \n
  • Knowlegde Base Support: Recognize the content based on the organization or a person via data type option.
  • \n
  • Full AMP Compatiblity: Supports the AMP for WP and AMP by Automattic plugins.
  • \n
  • Advanced Settings: Play with output of schema markup using these options (Defragment, Add in Footer, Pretty Print, MicroData CleanUp etc.)
  • \n
  • Migration: Import the data from other schema plugins such as (SEO Pressor, WP SEO Schema, Schema Plugin etc )
  • \n
  • Compatibility: Generate the schema markup for the plugins. We have provided schema support for them. Few of them are – kk Star Ratings, WP-PostRatings, bbPress
  • \n
  • Google Review: Display your business google reviews and its schema markup on your website.
  • \n
  • [Premium] Reviews ( Fetch reviews from 75+ platforms ).
  • \n
  • [Premium] Priority Support. Get it We get more than 100 technical queries a day but the Priority support plan will help you skip that and get the help from a dedicated team.
  • \n
  • Review Module: Create your own review rating box with pros and cons and its schema markup
  • \n
  • Schema Type Blocks in Gutenberg: Create your own content with the blocks and json schema markup will be added automatically
  • \n
  • Unlimited Custom Post Types: You can control to represent the Rich Snippets data in the google search console using unlimited custom post types.
  • \n
  • Easy to use with Minimal Settings
  • \n
  • Archive Page Listing Support
  • \n
  • JSON-LD Format
  • \n
  • Easy to use Setup Wizard
  • \n
  • Breadcrumbs Listing Support
  • \n
  • Comments Post comments Support
  • \n
  • Constant Development & New Features: We’ll be releasing the constant updates along with the more handy features as soon as we get the feedback from the users.
  • \n
\n

Supported Schema Types

\n
    \n
  • Apartment
  • \n
  • House
  • \n
  • SingleFamilyResidence
  • \n
  • Article
  • \n
  • Blogposting
  • \n
  • Book
  • \n
  • Course
  • \n
  • DiscussionForumPosting,
  • \n
  • DataFeed
  • \n
  • HowTo
  • \n
  • NewsArticle
  • \n
  • QAPage
  • \n
  • Review
  • \n
  • Recipe
  • \n
  • TVSeries
  • \n
  • SoftwareApplication
  • \n
  • MobileApplication
  • \n
  • SpecialAnnouncement (Related to Coronavirus)
  • \n
  • TechArticle
  • \n
  • WebPage
  • \n
  • Event
  • \n
  • VideoGame
  • \n
  • JobPosting
  • \n
  • Service
  • \n
  • Trip
  • \n
  • AudioObject
  • \n
  • VideoObject
  • \n
  • MedicalCondition
  • \n
  • MusicPlaylist
  • \n
  • MusicAlbum
  • \n
  • LocalBusiness with all the sub categories
  • \n
  • Product
  • \n
  • TouristAttraction
  • \n
  • TouristDestination
  • \n
  • LandmarksOrHistoricalBuildings
  • \n
  • HinduTemple
  • \n
  • Church
  • \n
  • Mosque
  • \n
  • Person
  • \n
  • View All
  • \n
\n

Extensions

\n

Some useful extensions to extend Schema & Structured Data for WP & AMP features, check Woocommerce Compatibility For Schema, Cooked Compatibility For Schema and We are going to add more.

\n

Support

\n

We try our best to provide support on WordPress.org forums. However, We have a special team support where you can ask us questions and get help. Delivering a good user experience means a lot to us and so we try our best to reply each and every question that gets asked.

\n

Bug Reports

\n

Bug reports for Schema & Structured Data for WP & AMP are welcomed on GitHub. Please note GitHub is not a support forum, and issues that aren’t properly qualified as bugs will be closed.

\n

Credits

\n
    \n
  • Select2 used https://github.com/select2/select2 – License URI: https://github.com/select2/select2/blob/develop/LICENSE.md,
  • \n
  • Merlin WP used https://github.com/richtabor/MerlinWP – License URI: https://github.com/richtabor/MerlinWP/blob/master/LICENSE,
  • \n
  • jquery-timepicker used https://github.com/jonthornton/jquery-timepicker
  • \n
  • Rate Yo! used https://github.com/prrashi/rateYo – License URI: https://github.com/prrashi/rateYo/commit/f3812fe96c38b08627d209795176053550fb1427
  • \n
  • Aqua Resizer used http://aquagraphite.com – License URI: WTFPL – http://sam.zoy.org/wtfpl/
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/schema-and-structured-data-for-wp.1.9.83.1.zip","tags":{"google-snippets":"google snippets","rich-snippets":"rich snippets","schema":"schema","schema-org":"schema.org","structured-data":"structured data"},"donate_link":"","icons":{"1x":"https://ps.w.org/schema-and-structured-data-for-wp/assets/icon-128x128.png?rev=1922284","2x":"https://ps.w.org/schema-and-structured-data-for-wp/assets/icon-256x256.png?rev=1922284"},"wporg":true},{"name":"GenerateBlocks","slug":"generateblocks","version":"1.3.5","author":"Tom Usborne","author_profile":"https://profiles.wordpress.org/edge22","requires":"5.4","tested":"5.8","requires_php":"5.6","rating":98,"ratings":{"1":0,"2":0,"3":2,"4":1,"5":72},"num_ratings":75,"support_threads":29,"support_threads_resolved":12,"active_installs":50000,"downloaded":238639,"last_updated":"2021-07-19 6:12pm GMT","added":"2020-05-19","homepage":"https://generateblocks.com","short_description":"A small collection of lightweight WordPress blocks that can accomplish nearly anything.","description":"

\n

\n

Add incredible versatility to your editor without bloating it with tons of one-dimensional Gutenberg blocks. With GenerateBlocks, you can learn a handful of blocks deeply and use them to build anything.

\n

GenerateBlocks works hand-in-hand with GeneratePress, but is built to work with any theme.

\n

Looking for more features? Check out GenerateBlocks Pro.

\n

Container

\n

Organize your content into rows and sections. The Container block is the foundation of your content, allowing you to design unique sections for your content.

\n

Grid

\n

Create advanced layouts with flexible grids. The Grid block gives you the ability to create any kind of layout you can imagine.

\n

Headline

\n

Craft text-rich content with advanced typography. Everything from headings to paragraphs – take full control of your text.

\n

Buttons

\n

Drive conversions with beautiful buttons.

\n

Performance

\n

We take performance seriously. Minimal CSS is generated only for the blocks you need, and our HTML structure is as simple as possible while allowing for maximum flexibility.

\n

Coding standards

\n

Built to the highest coding standards for security, stability and future compatibility.

\n

Fully responsive

\n

Every block comes with tablet and mobile controls, giving you total control of your responsive design.

\n

Documentation

\n

Check out our documentation for more information on the individual blocks and how to use them.

\n","download_link":"https://downloads.wordpress.org/plugin/generateblocks.1.3.5.zip","tags":{"blocks":"blocks","container":"container","grid":"grid","gutenberg":"gutenberg","headline":"headline"},"donate_link":"https://generateblocks.com","icons":{"1x":"https://ps.w.org/generateblocks/assets/icon-128x128.png?rev=2336822","2x":"https://ps.w.org/generateblocks/assets/icon-256x256.png?rev=2336822"},"wporg":true},{"name":"Blackhole for Bad Bots","slug":"blackhole-bad-bots","version":"3.2","author":"Jeff Starr","author_profile":"https://profiles.wordpress.org/specialk","requires":"4.1","tested":"5.8","requires_php":"5.6.20","rating":98,"ratings":{"1":2,"2":0,"3":3,"4":2,"5":108},"num_ratings":115,"support_threads":3,"support_threads_resolved":3,"active_installs":30000,"downloaded":305752,"last_updated":"2021-07-19 8:41pm GMT","added":"2016-02-18","homepage":"https://perishablepress.com/blackhole-bad-bots/","short_description":"Blackhole is a WordPress security plugin that detects and traps bad bots in a virtual black hole, where they are denied access to your entire site.","description":"
\n

Add your own virtual black hole trap for bad bots.

\n
\n

Bye bye bad bots..

\n

Bad bots are the worst. They do all sorts of nasty stuff and waste server resources. The Blackhole plugin helps to stop bad bots and save precious resources for legit visitors.

\n

How does it work?

\n

First the plugin adds a hidden trigger link to the footer of your pages. You then add a line to your robots.txt file that forbids all bots from following the hidden link. Bots that then ignore or disobey your robots rules will crawl the link and fall into the trap. Once trapped, bad bots are denied further access to your WordPress site.

\n

I call it the “one-strike” rule: bots have one chance to obey your site’s robots.txt rule. Failure to comply results in immediate banishment. The best part is that the Blackhole only affects bad bots: human users never see the hidden link, and good bots obey the robots rules in the first place. Win-win! 🙂

\n

Using a caching plugin? Check out the Installation notes for important info.

\n

Features

\n
    \n
  • Easy to set up
  • \n
  • Squeaky clean code
  • \n
  • Focused and modular
  • \n
  • Lightweight, fast and flexible
  • \n
  • Built with the WordPress API
  • \n
  • Works with other security plugins
  • \n
  • Easy to reset the list of bad bots
  • \n
  • Easy to delete any bot from the list
  • \n
  • Regularly updated and “future proof”
  • \n
  • Blackhole link includes “nofollow” attribute
  • \n
  • Plugin options configurable via settings screen
  • \n
  • Works silently behind the scenes to protect your site
  • \n
  • Whitelists all major search engines to never block
  • \n
  • Focused on flexibility, performance, and security
  • \n
  • Email alerts with WHOIS lookup for blocked bots
  • \n
  • Complete inline documentation via the Help tab
  • \n
  • Provides setting to whitelist any IP addresses
  • \n
  • Customize the message displayed to bad bots 😉
  • \n
  • One-click restore the plugin default options
  • \n
  • Does NOT use or require any .htaccess rules
  • \n
\n

Blackhole for Bad Bots protects your site against bad bots, spammers, scrapers, scanners, and other automated threats.

\n

Not using WordPress? Check out the standalone PHP version of Blackhole!

\n

Check out Blackhole Pro and level up with advanced features!

\n

Whitelist

\n

By default, this plugin does NOT block any of the major search engines (user agents):

\n
    \n
  • AOL.com
  • \n
  • Baidu
  • \n
  • Bingbot/MSN
  • \n
  • DuckDuckGo
  • \n
  • Googlebot
  • \n
  • Teoma
  • \n
  • Yahoo!
  • \n
  • Yandex
  • \n
\n

These search engines (and all of their myriad variations) are whitelisted via user agent. So are a bunch of other “useful” bots. They always are allowed full access to your site, even if they disobey your robots.txt rules. This list can be customized in the plugin settings. For a complete list of whitelisted bots, visit the Help tab in the plugin settings (under “Whitelist Settings”).

\n

Privacy

\n

User Data: This plugin automatically blocks bad bots. When bad bots fall into the trap, their IP address, user agent, and other request data are stored in the WP database. No other user data is collected by this plugin. At any time, the administrator may delete all saved data via the plugin settings.

\n

Services: This plugin does not connect to any third-party locations or services.

\n

Cookies: This plugin does not set any cookies.

\n

Header Image Courtesy NASA/JPL-Caltech.

\n

Support development of this plugin

\n

I develop and maintain this free plugin with love for the WordPress community. To show support, you can make a donation or purchase one of my books:

\n\n

And/or purchase one of my premium WordPress plugins:

\n\n

Links, tweets and likes also appreciated. Thanks! 🙂

\n","download_link":"https://downloads.wordpress.org/plugin/blackhole-bad-bots.3.2.zip","tags":{"anti-spam":"anti-spam","bad-bots":"bad bots","blackhole":"blackhole","honeypot":"honeypot","security":"security"},"donate_link":"https://monzillamedia.com/donate.html","icons":{"1x":"https://ps.w.org/blackhole-bad-bots/assets/icon-128x128.png?rev=1471215","2x":"https://ps.w.org/blackhole-bad-bots/assets/icon-256x256.png?rev=1471215"},"wporg":true},{"name":"Page View Count","slug":"page-views-count","version":"2.4.12","author":"a3rev Software","author_profile":"https://profiles.wordpress.org/a3rev","requires":"5.0","tested":"5.8","requires_php":false,"rating":78,"ratings":{"1":8,"2":5,"3":2,"4":3,"5":30},"num_ratings":48,"support_threads":2,"support_threads_resolved":0,"active_installs":20000,"downloaded":403731,"last_updated":"2021-07-19 10:48am GMT","added":"2012-12-21","homepage":"","short_description":"Places an icon, all time views count and views today count at the bottom of posts, pages and custom post types on any WordPress website.","description":"

A beautifully simple to set up plugin that gives site visitors and site owners the ability to quickly and easily see how many people have visited that page or post.

\n

FEATURES

\n
    \n
  • On the front end it adds an icon and page views count to the bottom or top of pages and posts on your WordPress website.
  • \n
  • Switch ON | OFF hide Page Views Count for all Posts, Pages and all custom posts types including WooCommerce custom post types.
  • \n
  • Set the Position of the counter to show at the top of the page or post or at the bottom
  • \n
  • Set alignment of the counter Left, Right or Centre
  • \n
  • Set the colour and size of the counter icon
  • \n
  • Option to use load by Ajax to prevent the count from being cached by caching plugins
  • \n
  • Option to Manually set / edit total views and views today from Page View Count meta box on any post or page editor
  • \n
  • Add Page Views counter via the PVC Gutenberg block
  • \n
  • Add Page Views counter via shortcode
  • \n
  • Add Page Views counter via widget
  • \n
  • Developers can add the Page Views Counter via php tag
  • \n
  • All options and settings are point click – absolutely no coding required
  • \n
\n

COMPATIBILTY

\n

Compatible with WordPress 5.3+ and backwards to WP 4.9.0. Compatible with Classic Editor plugin with 5.0+ (Gutenberg Deactivated)

\n

GUTENBERG BLOCK

\n

Using the Gutenberg Editor. Use the Page View Count Block to add the counter to any page or post content. Block search for ‘Page Views’ or selecting the block from the a3rev Blocks menu.

\n

Adding the Page Views block to your content automatically deactivates the Global Page View counter on the post or page.

\n

ELEMENTOR TEMPLATES

\n

Fully compatible with Elementor templates. Add counter via Shortcode or widget to any template.

\n

DEVELOPERS

\n

On the plugins dashboard in the + Page Views Count Function options box you will find the Page Views Count functions and notes on how to use them.

\n
    \n
  • Use to manually add Page views count to any content or object in the theme.
  • \n
  • Use to add page View Count to any content that is not create using WordPress custom post / taxonomy type.
  • \n
  • Use to create a custom position of the Page Views Count
  • \n
  • Functions support echo and return parameters when getting visitor stats on any variable.
  • \n
\n

TROUBLESHOOTING

\n
    \n
  • The number 1 support request we get about the plugin is that it double or triple counts page or post loads. Yes it does and if you see that it is a Red Flag that you have a misconfiguration or bug in your theme or a plugin. Page Views Count does exactly that – counts each time the page or post is loading in the browser – if its counting twice it is because the browser is double loading the page. That is a bad thing and you or your developer needs to fix that.
  • \n
\n

CONTRIBUTE

\n

When you download Page Views Count, you join our community. Regardless of if you are a WordPress beginner or experienced developer if you’?re interested in contributing to Page Views Count development head over to the Page Views Count GitHub Repository to find out how you can contribute.
\nWant to add a new language to Page Views Count? Great! You can contribute via translate.wordpress.org

\n

Usage

\n
    \n
  1. \n

    Install and activate the plugin

    \n
  2. \n
  3. \n

    Go to WordPress Settings menu > Page View Count Menu

    \n
  4. \n
  5. \n

    Activate Page Views Count and use the options box settings to make the desired configuration

    \n
  6. \n
  7. \n

    Be sure to clear any caching and browser cache to see your Page Views Count

    \n
  8. \n
\n","download_link":"https://downloads.wordpress.org/plugin/page-views-count.2.4.12.zip","tags":{"gutenberg":"gutenberg","page-view-count":"page view count","post-view-count":"post view count","post-views":"post views","wordpress-page-view":"wordpress page view"},"donate_link":"","icons":{"1x":"https://ps.w.org/page-views-count/assets/icon.svg?rev=986301","2x":"https://ps.w.org/page-views-count/assets/icon-256x256.png?rev=986301","svg":"https://ps.w.org/page-views-count/assets/icon.svg?rev=986301"},"wporg":true},{"name":"Newspack Listings","slug":"newspack-listings","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://github.com/Automattic/newspack-listings/releases","short_description":"

Create reusable content as listings and add them to lists wherever core blocks can be used

\n","description":"\n\n\n

Create reusable content as listings and add them to lists wherever core blocks can be used

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2021/02/listings2-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2021/02/listings2-372x209.jpg","svg":""},"wporg":false},{"name":"Newspack Newsletters","slug":"newspack-newsletters","version":"1.31.1","author":"Automattic","author_profile":"https://profiles.wordpress.org/automattic","requires":"5.3","tested":"5.8.0","requires_php":"5.6","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":1,"support_threads_resolved":1,"active_installs":500,"downloaded":2866,"last_updated":"2021-08-10 8:45pm GMT","added":"2021-02-15","homepage":"https://newspack.pub","short_description":"Create email newsletters with the Gutenberg editor and distribute them with your Mailchimp or Constant Contact mailing lists.","description":"

Create email newsletters with the Gutenberg editor and send them via Mailchimp or Constant Contact, all without leaving WP Admin! Newspack Newsletters lets you build eye-catching newsletters using the WordPress editing tools you’re already familiar with, and lets you save drafts, create reusable layouts, send to your existing mailing list, and also publish them to your website.

\n

Use and create newsletter layouts

\n

Newspack Newsletters comes with four default layouts to help you start building newsletters quickly. You can use an existing layout, or start fresh with a blank page. You can also create and save your own layouts, or alter the ones that come bundled with the plugin and save the settings, and use them for future campaigns.

\n

Use Gutenberg blocks and settings

\n

Newspack Newsletters supports most core Gutenberg blocks and configurations, letting you use blocks like Group, Button, Columns, and more, to create dynamic layouts. The plugin will warn you when a block will not display as expected in an email.

\n

Customize your newsletter’s appearance

\n

You can customize your newsletters further by changing the header and body fonts, or picking a background color.

\n

Newspack Blocks

\n

Newspack Newsletters comes bundled with the Newspack Post Inserter block. This block lets you insert excerpts from live posts on your site, and, once inserted, will turn those posts into static content using the Header and Paragraph blocks, linking back to your site.

\n

Need to target a post title to your newsletter audience? Not a problem! You can edit these blocks, and add others, to make sure they’ speak to your readers.

\n

Add ads!

\n

Monetize your newsletters by including advertising. The Newspack Newsletters plugin lets you create ads, which are stored as a custom post type. Ads are automatically inserted into your newsletters, and can also be toggled off on a newsletter-by-newsletter basis.

\n

Send with ease

\n

Newspack Newsletters connects to your Mailchimp or Constant Contact accounts to send emails using the mailing lists you’ve collected there, all without leaving the WordPress Admin.

\n

Before sending your campaign, you can send test emails to one or more email addresses at a time from the newsletter editor, to make sure everything is pixel perfect before sharing with the world.

\n

About Newspack

\n

The Newspack Newletters plugin is part of Newspack, a suite of tools to help small to mid-sized news organizations publish and generate revenue with WordPress. Newspack is a collaborative project by WordPress.com and the Google News Initiative. You can learn more about Newspack by visiting our website.

\n

Credits

\n

The beach photograph in the screenshot is by Life of Pix, licensed CC0.

\n","download_link":"https://downloads.wordpress.org/plugin/newspack-newsletters.zip","tags":{"constant-contact":"constant contact","mailchimp":"mailchimp","newsletters":"newsletters","newspack":"Newspack","wordpress-com":"WordPress.com"},"donate_link":"","icons":{"1x":"https://ps.w.org/newspack-newsletters/assets/icon.svg?rev=2475195","2x":"https://ps.w.org/newspack-newsletters/assets/icon-256x256.png?rev=2475195","svg":"https://ps.w.org/newspack-newsletters/assets/icon.svg?rev=2475195"},"wporg":true},{"name":"Web Stories","slug":"web-stories","version":"1.10.1","author":"Google","author_profile":"https://profiles.wordpress.org/google","requires":"5.5","tested":"5.8","requires_php":"7.0","rating":84,"ratings":{"1":5,"2":2,"3":2,"4":4,"5":31},"num_ratings":44,"support_threads":110,"support_threads_resolved":86,"active_installs":20000,"downloaded":323211,"last_updated":"2021-08-25 7:02pm GMT","added":"2020-09-22","homepage":"https://wp.stories.google/","short_description":"Web Stories are a visual storytelling format for the open web which immerses your readers in fast-loading, full-screen, and visually rich experiences.","description":"

Web Stories are a free, open-web, visual storytelling format for the web, enabling you to easily create visual narratives with engaging animations and tappable interactions, and immerse your readers in great and fast-loading full-screen experiences.

\n

Benefits of Web Stories

\n

The Web Stories format puts features and capabilities at your fingertips to engage with your audience via the power of storytelling on the open web. Specifically, you can:

\n
    \n
  • Create beautiful and engaging content easily: Web Stories make the production of stories as easy as possible from a technical perspective.
  • \n
  • Enjoy creative flexibility for editorial freedom and branding: The Web Stories format comes with preset but flexible layout templates, standardized UI controls, and components for sharing and adding follow-on content.
  • \n
  • Share and link your stories on the open web: Web Stories are part of the open web and can be shared and embedded across sites and apps without being confined to a single ecosystem.
  • \n
  • Track and measure your stories: Supports analytics and bookend capabilities for viral sharing and monetization.
  • \n
  • Capture the attention of your readers by offering fast loading times to your stories: Web Stories are lightning fast so that your audience stays engaged and entertained.
  • \n
  • Engage with your readers via immersive storytelling: Web Stories are a new and modern way to reach existing readers.
  • \n
  • Monetize effectively the beautiful and engaging stories you create: Web Stories enable monetization capability for publishers using affiliate links. For advertisers, Stories is a way to reach a unique audience within a new storytelling experience.
  • \n
\n

Web Stories Editor

\n

The Web Stories editor for WordPress brings together a robust set of story creation capabilities in a user-friendly, WYSIWYG creation tool. Some of the key features you can leverage out of the box are:

\n
    \n
  • A visually rich and intuitive dashboard, allowing you to easily navigate the story creation process
  • \n
  • Beautiful and expressive page templates to you get your story creation process started quickly and smoothly
  • \n
  • Easy drag-and-drop capabilities, making it easy to compose beautiful stories
  • \n
  • Convenient access to WordPress’ media library, enabling you to grab your media assets right from the plugin dashboard as you create your stories
  • \n
  • Customizable color and text style presets, making it easy to tailor the style of your stories to the needs of your content strategy
  • \n
  • And much more!
  • \n
\n

Using the Web Stories editor for WordPress, you can easily create visual narratives with tappable interactions, and share freely across the web, or embed them on your existing content strategies. The Stories you create are yours in every way, as Web Stories belong to the open web, instead of being confined to any specific closed ecosystem or platform.

\n

Audience: Everyone

\n

Web Stories are for everyone! If you are a site owner, content creator, or publisher on the web, embracing the Web Stories format would be great as a way to enhance the quality of your content strategy, the value you bring to your readers, and consequently your chances of achieving sustainable success.

\n

Terms of Service

\n

By using this plugin, you agree to Google’s Terms of Service. By using third-party imagery and video provided by Unsplash, Coverr and Tenor, you agree to adhere to the respective Terms of Service.

\n","download_link":"https://downloads.wordpress.org/plugin/web-stories.1.10.1.zip","tags":{"amp":"amp","google":"google","stories":"stories","storytelling":"storytelling","web-stories":"web stories"},"donate_link":"","icons":{"1x":"https://ps.w.org/web-stories/assets/icon.svg?rev=2386543","2x":"https://ps.w.org/web-stories/assets/icon-256x256.png?rev=2386543","svg":"https://ps.w.org/web-stories/assets/icon.svg?rev=2386543"},"wporg":true},{"name":"Jetpack – WP Security, Backup, Speed, & Growth","slug":"jetpack","version":"10.0","author":"Automattic","author_profile":"https://profiles.wordpress.org/automattic","requires":"5.7","tested":"5.8","requires_php":"5.6","rating":78,"ratings":{"1":320,"2":80,"3":81,"4":137,"5":1014},"num_ratings":1632,"support_threads":352,"support_threads_resolved":313,"active_installs":5000000,"downloaded":242907170,"last_updated":"2021-08-03 4:25pm GMT","added":"2011-01-20","homepage":"https://jetpack.com","short_description":"Improve your WP security with powerful one-click tools like backup and malware scan. Get essential…","description":"

The most popular WordPress plugin for just about everything.

\n

WordPress security, performance, marketing, and design tools — Jetpack is made by WordPress experts to make WP sites safer and faster, and help you grow your traffic.

\n

24/7 AUTO SITE SECURITY

\n

We guard your site so you can run your site or business. Jetpack Security provides easy-to-use, comprehensive WordPress site security including auto real-time backups and easy restores, malware scans, and spam protection. Essential features like brute force protection and downtime / uptime monitoring are free.

\n
    \n
  • Back up your site automatically in real time and restore to any point with one click. Unlimited storage for your backup. Great for eCommerce stores especially Woo.
  • \n
  • Manage migration to a new host, migrate theme files and plugins to a new database, easily duplicate websites, create full database backups, clone websites, repair broken websites by restoring older backups or easily set up a test site by creating a duplicate of your existing WP website.
  • \n
  • See every site change and who made it with the activity log, great for coordination, debug, maintenance, or troubleshooting.
  • \n
  • Automatically perform malware scans and security scans for other code threats. One click fix to restore your site for malware.
  • \n
  • Block spam comments and form responses with anti spam features powered by Akismet.
  • \n
  • Brute force attack protection to protect your WordPress login page from attacks.
  • \n
  • Monitor your site uptime / downtime and get an instant alert of any change by email.
  • \n
  • Secure WordPress.com powered login used by millions of sites with optional 2FA (two factor authentication) for extra protection.
  • \n
  • Auto update individual plugins for easy site maintenance and management.
  • \n
\n

PEAK SPEED AND PERFORMANCE

\n

Get blazing fast site speed with Jetpack, the premier WP plugin built to leverage the power of AMP, a tool that helps optimize your site on mobile devices. Jetpack’s free CDN (content delivery network) auto optimizes your images. Watch your page load times decrease — we’ll optimize your images and serve them from our own powerful global network, and speed up your site on mobile devices to reduce bandwidth usage and save money!

\n
    \n
  • Jetpack has partnered with Google AMP to create the best, highest performance all-in-one toolkit for WordPress. By using Jetpack and AMP together, you get all the features you need to build a beautiful, fast, modern website with no coding required.
  • \n
  • Image CDN for images and static files, like CSS and JavaScript, served from our servers, not yours, which saves you money and bandwidth.
  • \n
  • Lazy load images for a super fast experience, even on mobile. Jetpack’s lazy loading automatically delays the loading of media on your posts and pages until your visitors scroll down to where they appear on the page.
  • \n
  • Unlimited, high speed, ad free video hosting keeps the focus on your content, not on ads or recommendations that lead people off site.
  • \n
  • Custom site search is incredibly powerful and customizable. Helps your visitors instantly find the right content so they read and buy more. Works great with WooCommerce / eCommerce sites to help filter products so customers get what they want on your site faster.
  • \n
  • Recommended to use with WP Super Cache for ultimate WordPress site speed.
  • \n
\n

POWERFUL TOOLS FOR GROWTH

\n

Create and customize your WordPress site, optimize it for visitors and revenue, and enjoy watching your stats tick up. Build it, share it, and watch it grow.

\n
    \n
  • Advanced site stats and analytics to help you understand your audience.
  • \n
  • Auto publish blog posts and products to social media by simply using our tools to connect to Facebook, Twitter, and Linkedin.
  • \n
  • Easily share Instagram posts on your pages and blog posts.
  • \n
  • Collect a payment or donation, sell a product, service, or membership with simple integrations with PayPal and Stripe.
  • \n
  • Grow traffic with SEO tools for Google, Bing, Twitter, Facebook, and WordPress.com. XML sitemap created automatically.
  • \n
  • Advertise on your site to generate revenue. The ad network automatically does the work for you to find high-quality ads that are placed on your site.
  • \n
  • Manage Jetpack features from anywhere with the official WordPress mobile app, available for Apple iOS (iPhone or iPad) and Google Android.
  • \n
  • Looking for Customer Relationship Management? Check out the Jetpack CRM plugin which works alongside Jetpack to give you a simple and practical way to build relationships with your customers and leads.
  • \n
\n

EASY DESIGN TOOLS

\n

Quickly customize your site to make it stand out — no coding needed.

\n
    \n
  • Themes — Simple themes to get started or pick a professional theme to make your site stand out.
  • \n
  • Related posts — Keep visitors on your site by automatically showing them related content they will be interested in.
  • \n
  • Gallery and Slideshow tools — Image galleries, carousel slider, and slideshows for WP sites and stores.
  • \n
  • Subscriptions — Make it easy for visitors to sign up to receive notifications of your latest posts and comments.
  • \n
  • Contact form — Easily build unlimited contact forms for free without any coding. Receive email notifications for each response. Integrate with mail solutions like Creative Mail to reach your customers and leads quickly. Connect to Jetpack Anti spam (powered by Akismet) to filter submissions.
  • \n
  • oEmbed Support — easily embed images, posts, and links from Facebook and Instagram.
  • \n
\n

INTEGRATIONS

\n

Jetpack is updated monthly to ensure seamless integration with top WordPress plugins and other tech products.

\n
    \n
  • Built for WooCommerce: Jetpack and WooCommerce are both made by Automattic. Backup, Scan, Anti-spam, integrate perfectly for Woo / eComm stores
  • \n
  • Jetpack is fully compatible with v2.0 of the official AMP plugin for WordPress.
  • \n
  • Better understand your customers and marketing with Google Analytics (GA) integration
  • \n
  • Social media platforms: Instagram, Facebook, Twitter, LinkedIn
  • \n
  • Simple Blocks to customize your site: Pinterest, Whatsapp, Podcast player, GIFs, maps, tiled gallery, slideshow
  • \n
  • Payment processors: easily collect payments or donations and sell products through Stripe and PayPal
  • \n
  • Site speed and performance plugins: Works great with WP Super Cache by Automattic and Cloudflare.
  • \n
  • Contact form: Anti-spam (Powered by Akismet) blocks spam comments for Jetpack forms, Contact Form 7, Ninja Forms, Gravity Forms, Formidable Forms, and more.
  • \n
  • Other tech integrations: Instagram, Creative Mail, Mailchimp, Calendly, Whatsapp, Pinterest, Revue, and more.
  • \n
\n

EXPERT SUPPORT

\n

We have a global team of Happiness Engineers ready to provide incredible support. Ask your questions in the support forum or contact us directly.

\n

GET STARTED

\n

Installation is free, quick, and easy. Set up Jetpack in minutes. Take advantage of more robust features like WordPress site security and design and growth tools by upgrading to a paid plan.

\n","download_link":"https://downloads.wordpress.org/plugin/jetpack.10.0.zip","tags":{"backup":"backup","malware":"malware","scan":"scan","security":"security","woo":"woo"},"donate_link":"","icons":{"1x":"https://ps.w.org/jetpack/assets/icon.svg?rev=2394525","2x":"https://ps.w.org/jetpack/assets/icon-256x256.png?rev=2394525","svg":"https://ps.w.org/jetpack/assets/icon.svg?rev=2394525"},"wporg":true},{"name":"Easy Notification Bar","slug":"easy-notification-bar","version":"1.4.2","author":"WPExplorer","author_profile":"https://profiles.wordpress.org/wpexplorer","requires":"5.2.0","tested":"5.8","requires_php":"5.6.2","rating":82,"ratings":{"1":0,"2":1,"3":1,"4":1,"5":4},"num_ratings":7,"support_threads":3,"support_threads_resolved":1,"active_installs":4000,"downloaded":33908,"last_updated":"2021-08-22 1:48am GMT","added":"2019-06-20","homepage":"https://wordpress.org/plugins/easy-notification-bar/","short_description":"Easily add a custom top bar notification message to on your site with live customization options via the WordPress customizer.","description":"

Easily add a custom top bar notification message to on your site with live customization options via the WordPress customizer. The plugin allows you to enter your notification bar text as well as an optional button to display next to your text. Perfect for notifying visitors of a current sale, hot product, warnings or other important messages.

\n

The Easy Notification Bar plugin makes use of the newer “wp_body_open” action hook introduced in WordPress 5.2.0 which allows the plugin to work better with any theme that has been updated to support the tag. Contrary to other notice bar solutions which rely on absolute positioning, this plugin inserts the notice bar right after the body tag so it should display perfectly without any conflicts on any well-coded theme.

\n

By default, the notification bar is “static” which means it displays at the top of your site so when you scroll down the page it will become “hidden”. This is generally better for usability and SEO. However, in version 1.4 we added a new sticky option which you can enable in the Customizer so that the notification bar remains visible as you scroll down the page. The sticky functionality makes use of the CSS sticky property (not javascript).

\n

Although disabled by default, you can enable a close icon for your notice. When enabled, your visitors will see an “x” icon over the top bar which they can click to hide the message for their current and future sessions. This functionality makes use of localStorage (not cookies).

\n

Live Demo: You can view a live demo for the notification bar on our More Widgets Plugin Demo

\n

Features

\n
    \n
  • Sitewide (or homepage only) top notification bar.
  • \n
  • Easy setup via the WordPress customizer.
  • \n
  • Optional close icon.
  • \n
  • Optional sticky display.
  • \n
  • Custom background, color, text alignment and font size settings.
  • \n
  • Optional callout button.
  • \n
  • Responsive design so it looks good on mobile.
  • \n
  • Minimal code.
  • \n
  • Vanilla Javascript used for close icon (jQuery not needed).
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/easy-notification-bar.zip","tags":{"notice":"notice","notice-bar":"notice bar","notification":"notification","notification-bar":"notification bar","top-bar":"top bar"},"donate_link":"","icons":{"1x":"https://ps.w.org/easy-notification-bar/assets/icon-128x128.png?rev=2515988","2x":"https://ps.w.org/easy-notification-bar/assets/icon-256x256.png?rev=2515988"},"wporg":true},{"name":"Antispam Bee","slug":"antispam-bee","version":"2.10.0","author":"pluginkollektiv","author_profile":"https://profiles.wordpress.org/pluginkollektiv","requires":"4.5","tested":"5.8","requires_php":"5.2","rating":96,"ratings":{"1":7,"2":1,"3":1,"4":2,"5":175},"num_ratings":186,"support_threads":7,"support_threads_resolved":5,"active_installs":700000,"downloaded":5040805,"last_updated":"2021-07-29 11:15am GMT","added":"2009-01-10","homepage":"https://antispambee.pluginkollektiv.org/","short_description":"Antispam plugin with a sophisticated tool set for effective day to day comment and trackback spam-fighting. Build with data protection and privacy in …","description":"

Say Goodbye to comment spam on your WordPress blog or website. Antispam Bee blocks spam comments and trackbacks effectively, without captchas and without sending personal information to third party services. It is free of charge, ad-free and 100% GDPR compliant.

\n

Feature/Settings Overview

\n
    \n
  • Trust approved commenters.
  • \n
  • Trust commenters with a Gravatar.
  • \n
  • Consider the comment time.
  • \n
  • Allow comments only in a certain language.
  • \n
  • Block or allow commenters from certain countries.
  • \n
  • Treat BBCode links as spam.
  • \n
  • Validate the IP address of commenters.
  • \n
  • Use regular expressions.
  • \n
  • Search local spam database for commenters previously marked as spammers.
  • \n
  • Notify admins by e-mail about incoming spam.
  • \n
  • Delete existing spam after n days.
  • \n
  • Limit approval to comments/pings (will delete other comment types).
  • \n
  • Select spam indicators to send comments to deletion directly.
  • \n
  • Optionally exclude trackbacks and pingbacks from spam detection.
  • \n
  • Optionally spam-check comment forms on archive pages.
  • \n
  • Display spam statistics on the dashboard, including daily updates of spam detection rate and a total of blocked spam comments.
  • \n
\n

Support

\n\n

Contribute

\n
    \n
  • Active development of this plugin is handled on GitHub.
  • \n
  • Pull requests for documented bugs are highly appreciated.
  • \n
  • If you think you’ve found a bug (e.g. you’re experiencing unexpected behavior), please post at the support forums first.
  • \n
  • If you want to help us translate this plugin you can do so on WordPress Translate.
  • \n
\n

Credits

\n\n","download_link":"https://downloads.wordpress.org/plugin/antispam-bee.2.10.0.zip","tags":{"anti-spam":"anti-spam","antispam":"antispam","block-spam":"block spam","comment":"comment","comments":"comments"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=TD4AMD2D8EMZW","icons":{"1x":"https://ps.w.org/antispam-bee/assets/icon-128x128.png?rev=977629","2x":"https://ps.w.org/antispam-bee/assets/icon-256x256.png?rev=977629"},"wporg":true},{"name":"SimpleTOC – Table of Contents Block","slug":"simpletoc","version":"4.8","author":"Marc Tönsing","author_profile":"https://profiles.wordpress.org/marcdk","requires":"5.0","tested":"5.8","requires_php":false,"rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":24},"num_ratings":24,"support_threads":2,"support_threads_resolved":1,"active_installs":2000,"downloaded":20627,"last_updated":"2021-07-29 9:07pm GMT","added":"2020-04-14","homepage":"https://marc.tv/simpletoc-wordpress-inhaltsverzeichnis-plugin-gutenberg/","short_description":"Adds a custom Table of Contents Gutenberg block.","description":"

In Gutenberg, add a block and search for “SimpleTOC” or just “TOC”. You need to save your post before you add the block. It works by parsing the post content and retrieving the heading blocks and creates a new dynamic block with a list of links to the headings.

\n

Hide the headline “Table of Contents” and set a maximum display depth in the blocks’ sidebar configuration. Add the CSS class “simpletoc-hidden” to a heading block to remove that specific heading from the generated TOC.

\n

Features

\n
    \n
  • No javascript or css added.
  • \n
  • Designed for Gutenberg.
  • \n
  • Compatible with AMP plugins.
  • \n
  • Minimal and valid HTML output.
  • \n
  • Inherits the style of your theme.
  • \n
  • Support for column block layouts.
  • \n
  • Control the maximum depth of the headings.
  • \n
  • Choose between an ordered and unordered html list.
  • \n
  • SEO friendly: Disable the h2 heading of the TOC block and add your own.
  • \n
  • Comes with English, French, Spanish, German, and Brazilian Portuguese translations.
  • \n
  • Works with non-latin texts. Tested with Japanese and Arabic.
  • \n
  • Finds headlines in groups and reusable blocks. And in groups within reusable blocks.
  • \n
  • Rank Math support.
  • \n
\n

Credits

\n

This plugin is forked from https://github.com/pdewouters/gutentoc by pdewouters and uses code from https://github.com/shazahm1/Easy-Table-of-Contents by shazahm1

\n

Many thanks to Tom J Nowell https://tomjn.com and and Sally CJ who both helped me a lot with my questions over at wordpress.stackexchange.com

\n","download_link":"https://downloads.wordpress.org/plugin/simpletoc.4.8.zip","tags":{"amp":"amp","block":"block","gutenberg":"gutenberg","table-of-contents":"table of contents","toc":"toc"},"donate_link":"https://marc.tv/out/donate","icons":{"1x":"https://ps.w.org/simpletoc/assets/icon.svg?rev=2451408","2x":"https://ps.w.org/simpletoc/assets/icon-256x256.png?rev=2451408","svg":"https://ps.w.org/simpletoc/assets/icon.svg?rev=2451408"},"wporg":true},{"name":"Log in with Google","slug":"login-with-google","version":"1.2.1","author":"rtCamp","author_profile":"https://profiles.wordpress.org/rtcamp","requires":"5.4.2","tested":"5.7.2","requires_php":"7.3","rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":6},"num_ratings":6,"support_threads":5,"support_threads_resolved":2,"active_installs":300,"downloaded":2930,"last_updated":"2021-07-23 10:00pm GMT","added":"2020-10-01","homepage":"","short_description":"Minimal plugin that allows WordPress users to log in using Google.","description":"

Ultra minimal plugin to let your users login to WordPress applications using their Google accounts. No more remembering hefty passwords!

\n

Initial Setup

\n
    \n
  1. \n

    Create a project from Google Developers Console if none exists.

    \n
  2. \n
  3. \n

    Go to Credentials tab, then create credential for OAuth client.

    \n
      \n
    • Application type will be Web Application
    • \n
    • Add YOUR_DOMAIN/wp-login.php in Authorized redirect URIs
    • \n
    \n
  4. \n
  5. \n

    This will give you Client ID and Secret key.

    \n
  6. \n
  7. \n

    Input these values either in WP Admin > Settings > WP Google Login, or in wp-config.php using the following code snippet:

    \n

    `
    \ndefine( ‘WP_GOOGLE_LOGIN_CLIENT_ID’, ‘YOUR_GOOGLE_CLIENT_ID’ );
    \ndefine( ‘WP_GOOGLE_LOGIN_SECRET’, ‘YOUR_SECRET_KEY’ );
    \n“

    \n
  8. \n
\n

Browser support

\n

These browsers are supported. Note, for example, that One Tap Login is not supported in Safari.

\n

How to enable automatic user registration

\n

You can enable user registration either by
\n– Enabling Settings > WP Google Login > Enable Google Login Registration

\n

OR

\n
    \n
  • Adding
    \ndefine( 'WP_GOOGLE_LOGIN_USER_REGISTRATION', 'true' );
    \nin wp-config.php file.
  • \n
\n

Note: If the checkbox is ON then, it will register valid Google users even when WordPress default setting, under

\n

Settings > General Settings > Membership > Anyone can register checkbox

\n

is OFF.

\n

Restrict user registration to one or more domain(s)

\n

By default, when you enable user registration via constant WP_GOOGLE_LOGIN_USER_REGISTRATION or enable Settings > WP Google Login > Enable Google Login Registration, it will create a user for any Google login (including gmail.com users). If you are planning to use this plugin on a private, internal site, then you may like to restrict user registration to users under a single Google Suite organization. This configuration variable does that.

\n

Add your domain name, without any schema prefix and www, as the value of WP_GOOGLE_LOGIN_WHITELIST_DOMAINS constant or in the settings Settings > WP Google Login > Whitelisted Domains. You can whitelist multiple domains. Please separate domains with commas. See the below example to know how to do it via constants:

\n
`\n
\n

define( ‘WP_GOOGLE_LOGIN_WHITELIST_DOMAINS’, ‘example.com,sample.com’ );
\n `

\n

Note: If a user already exists, they will be allowed to login with Google regardless of whether their domain is whitelisted or not. Whitelisting will only prevent users from registering with email addresses from non-whitelisted domains.

\n

Hooks

\n

Filter wp_google_login_scopes
\nThis filter can be used to filter existing scope used in Google Sign in.
\nYou can ask for additional permission while user logs in.
\nThis filter will provide 1 parameter scopes in callback, which contains array of scopes.

\n

wp-config.php parameters list

\n
    \n
  • \n

    WP_GOOGLE_LOGIN_CLIENT_ID (string): Google client ID of your application.

    \n
  • \n
  • \n

    WP_GOOGLE_LOGIN_SECRET (string): Secret key of your application

    \n
  • \n
  • \n

    WP_GOOGLE_LOGIN_USER_REGISTRATION (boolean) (optional): Set true If you want to enable new user registration. By default, user registration defers to Settings > General Settings > Membership if constant is not set.

    \n
  • \n
  • \n

    WP_GOOGLE_LOGIN_WHITELIST_DOMAINS (string) (optional): Domain names, if you want to restrict login with your custom domain. By default, it will allow all domains. You can whitelist multiple domains.

    \n
  • \n
\n

BTW, We’re Hiring!

\n

\n","download_link":"https://downloads.wordpress.org/plugin/login-with-google.1.2.1.zip","tags":{"authentication":"authentication","google-login":"Google Login","oauth":"oauth","sign-in":"sign in","sso":"sso"},"donate_link":"https://rtcamp.com/","icons":{"1x":"https://ps.w.org/login-with-google/assets/icon-128x128.png?rev=2402713","2x":"https://ps.w.org/login-with-google/assets/icon-256x256.png?rev=2402713"},"wporg":true},{"name":"Search with Google","slug":"search-with-google","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://wordpress.org/plugins/search-with-google/","short_description":"

This plugin replaces the WordPress default search query with server-side results from Custom Search Site Restricted JSON API. 

\n","description":"\n\n\n

This plugin replaces the WordPress default search query with server-side results from Custom Search Site Restricted JSON API

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2020/11/searchWithGoogle-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2020/11/searchWithGoogle-372x209.jpg","svg":""},"wporg":false},{"name":"Page Builder Gutenberg Blocks – CoBlocks","slug":"coblocks","version":"2.16.0","author":"GoDaddy","author_profile":"https://profiles.wordpress.org/godaddy","requires":"5.0","tested":"5.8","requires_php":"5.6","rating":88,"ratings":{"1":7,"2":3,"3":4,"4":5,"5":63},"num_ratings":82,"support_threads":16,"support_threads_resolved":3,"active_installs":500000,"downloaded":5421384,"last_updated":"2021-08-12 8:29pm GMT","added":"2018-04-19","homepage":"","short_description":"CoBlocks is a suite of page builder WordPress blocks for Gutenberg, with 10+ new blocks and a true page builder experience with rows and columns.","description":"

CoBlocks is the most innovative collection of page building WordPress blocks for the new Gutenberg WordPress block editor.

\n

With additional blocks and true row and column building, CoBlocks gives you a true page builder experience for Gutenberg.

\n

CoBlocks is powerful but lightweight: it adds functionality to the WordPress editor without bloat. This is the plugin you’ve been waiting for, and it will make you rethink what WordPress is capable of.

\n

Make Beautiful Web Pages With Gutenberg & CoBlocks

\n

CoBlocks is the last page builder you’ll ever need: you get a winning mix of additional WordPress blocks, and page builder functionality. With CoBlocks you have everything you need to make beautiful web pages with the new block editor:

\n
    \n
  • Accordion Block
  • \n
  • Alert Block
  • \n
  • Author Profile Block
  • \n
  • Buttons Block
  • \n
  • Carousel Gallery Block
  • \n
  • Click to Tweet Block
  • \n
  • Collage Gallery Block
  • \n
  • Dynamic Separator Block
  • \n
  • Events Block (New!)
  • \n
  • Features Block
  • \n
  • Food & Drinks Block
  • \n
  • Form Block
  • \n
  • Gif Block
  • \n
  • GitHub Gist Block
  • \n
  • Hero Block
  • \n
  • Highlight Block
  • \n
  • Icon Block
  • \n
  • Logos & Badges Block
  • \n
  • Map Block
  • \n
  • Masonry Gallery Block
  • \n
  • Media Card Block
  • \n
  • Offset Gallery Block
  • \n
  • Post Carousel Block
  • \n
  • Posts Block
  • \n
  • Pricing Table Block
  • \n
  • Resizable Row/Columns Blocks
  • \n
  • Services Block
  • \n
  • Shape Divider Block
  • \n
  • Social Profiles Block
  • \n
  • Social Sharing Block
  • \n
  • Stacked Gallery Block
  • \n
\n

Breakthrough Page Builder System

\n

CoBlocks features an innovative block system that allows you to create stunning web pages, and even entire websites, with the new WordPress editor.

\n

You get the extra blocks you need and the layout and design functionality for a true page builder experience.

\n

Use the exceptional Row and Columns blocks to add dynamically generated content areas with specific responsive margin and padding settings that only CoBlocks provides.

\n

Style these with innovative new blocks such as the Shape Divider, which lets you split up your content with beautiful dividers.

\n

Each of the WordPress blocks within CoBlocks have been precisely fined tuned to offer a familiar, yet powerful, customization experience. Tailor each block to your taste using our custom controls and settings. Change fonts, set margin and padding, pick colors and more.

\n

Custom Typography Controls

\n

The breakthrough Typography Control Panel within CoBlocks lets you design web pages with alluring typographic elements. Set fonts, sizes, weights, transformations and more, in our CoBlocks blocks, and in core WordPress blocks.

\n

Free Companion Theme

\n

CoBlocks is built to show off the best of Gutenberg, but it requires a Gutenberg-first theme to unlock its full potential. We also created the free Go theme in the WordPress theme repository as the perfect companion for CoBlocks.

\n

Going Beyond Gutenberg Blocks

\n

The vision for CoBlocks is to create a suite of Gutenberg blocks to help folks make beautiful websites easily. These newest releases of CoBlocks is the ultimate expression of that vision.

\n

Built With Developers in Mind

\n

Extensible, adaptable, and open source — CoBlocks is created with theme and plugin developers in mind. If you’re interested to jump in the project, there are opportunities for developers at all levels to get involved. Contribute to CoBlocks on GitHub and join the party. 🎉

\n","download_link":"https://downloads.wordpress.org/plugin/coblocks.2.16.0.zip","tags":{"blocks":"blocks","gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","page-builder":"page builder","wordpress-blocks":"wordpress blocks"},"donate_link":"","icons":{"1x":"https://ps.w.org/coblocks/assets/icon-128x128.jpg?rev=2243972","2x":"https://ps.w.org/coblocks/assets/icon-256x256.jpg?rev=2243972"},"wporg":true},{"name":"Simple Author Box","slug":"simple-author-box","version":"2.42","author":"WebFactory Ltd","author_profile":"https://profiles.wordpress.org/webfactory","requires":"4.6","tested":"5.8","requires_php":"5.6","rating":88,"ratings":{"1":9,"2":0,"3":5,"4":8,"5":75},"num_ratings":97,"support_threads":12,"support_threads_resolved":12,"active_installs":50000,"downloaded":896750,"last_updated":"2021-08-13 8:08am GMT","added":"2014-08-08","homepage":"https://wpauthorbox.com/","short_description":"Add a responsive author box with social icons to any post. Great author box for…","description":"

Simple Author Box adds a responsive author box at the end of your posts, showing the author name, author gravatar and author description – author bio. It also adds over 30 social profile fields on WordPress user profile screen, allowing to display the author social icons in the author box.

\n

Main Features

\n
    \n
  • Shows author gravatar, name, website, description (author bio) and social icons
  • \n
  • Fully customizable to match your theme design (style, color, size and text options)
  • \n
  • Nice looking on desktop, laptop, tablet or mobile phones
  • \n
  • Automatically insert the author box at the end of your post
  • \n
  • Option to manually insert the author box on your template file (single.php or author.php)
  • \n
  • Simple Author Box has RTL support
  • \n
  • Simple Author Box has AMP support
  • \n
  • Great for guest posts, and guest authors
  • \n
\n

Simple Author Box Pro Features

\n
\n

Premium features only available in Simple Author Box Pro

\n
    \n
  • Change author box position to before/after content
  • \n
  • Choose whether the author’s name should link to its website/page/none
  • \n
  • Select where to show author box on
  • \n
  • Add rotate effect on author avatar hover
  • \n
  • Option to open author website link in a new tab
  • \n
  • Option to add “nofollow” attribute on author website link
  • \n
  • Choose the author website’s position: right/left
  • \n
  • Social icons type, style, rotate effect, shadow effect, thin border
  • \n
  • Option to change the color palette
  • \n
  • Choose the font and font sizes for the author’s job title, website, name, and description
  • \n
  • Enable guest authors and co-authors
  • \n
  • Option to use guest authors as co-authors
  • \n
  • Top authors widget – displays the most popular authors based of comments
  • \n
  • Simple author box widget – displays the users selected
  • \n
\n
\n

Read more about the Simple Author Box advanced features.

\n","download_link":"https://downloads.wordpress.org/plugin/simple-author-box.2.42.zip","tags":{"author-bio":"author bio","author-box":"author box","author-profile-fields":"author profile fields","author-social-icons":"author social icons","responsive-author-box":"responsive author box"},"donate_link":"","icons":{"1x":"https://ps.w.org/simple-author-box/assets/icon-128x128.jpg?rev=1821054"},"wporg":true},{"name":"Genesis Blocks","slug":"genesis-blocks","version":"1.2.5","author":"StudioPress","author_profile":"https://profiles.wordpress.org/studiopress","requires":"5.3","tested":"5.8","requires_php":"7.1","rating":90,"ratings":{"1":1,"2":0,"3":1,"4":0,"5":9},"num_ratings":11,"support_threads":12,"support_threads_resolved":4,"active_installs":30000,"downloaded":195130,"last_updated":"2021-07-20 6:30pm GMT","added":"2020-08-25","homepage":"https://studiopress.com/genesis-pro/","short_description":"A collection of content blocks, sections, & full-page layouts for the block editor.","description":"

Genesis Blocks is a collection of page building blocks for the Gutenberg block editor. Building pages with the block editor and Genesis Blocks gives you more control to quickly create and launch any kind of site you want!

\n

Installing the customizable Genesis Blocks plugin adds a collection of beautiful, site-building blocks to help you customize page layouts, increase engagement, and get results for your business. Genesis Blocks provides everything from customizable buttons, to beautifully-designed page sections and full-page layout designs via the Section & Layout block.

\n

Along with the blocks themselves, Genesis Blocks extends the content creation experience by providing a library of page sections and full-page layouts, all available from within the block editor.

\n

Create compelling content faster.

\n

Create and use content quickly with prebuilt and custom content sections and full-page layouts.

\n

Enhance the Gutenberg editor.

\n

Additional content blocks and the layout selector make it easy to get the most value out of the block-based editor.

\n

Genesis Blocks currently includes the following blocks to help you build content and pages quickly and effortlessly:

\n
    \n
  • Section & Layout Block
  • \n
  • Advanced Columns Block
  • \n
  • Newsletter Block
  • \n
  • Pricing Block
  • \n
  • Post Grid Block
  • \n
  • Container Block
  • \n
  • Testimonial Block
  • \n
  • Inline Notice Block
  • \n
  • Accordion Block
  • \n
  • Share Icons Block
  • \n
  • Call-To-Action Block
  • \n
  • Customizable Button Block
  • \n
  • Spacer & Divider Block
  • \n
  • Author Profile Block
  • \n
  • Drop Cap Block
  • \n
\n

Do more with Genesis Pro

\n

For those wanting to level-up with Genesis Blocks, a Genesis Pro subscription brings even richer tooling and a bigger library of sections and layouts.

\n
    \n
  • 2 new blocks (more coming soon)
  • \n
  • 26 pre-built full-page layouts
  • \n
  • 56 pre-built sections
  • \n
  • Save & reuse your own sections & layouts
  • \n
  • Advanced block-level user permissions
  • \n
  • Access to and support for Genesis Framework & all of our 35 StudioPress-made premium child themes.
  • \n
  • Additional advanced features for the rest of the Genesis Product Suite
  • \n
\n

Genesis Pro includes even more value for modern WordPress content creators, marketers, and developers. Learn more about Genesis Pro here.

\n

Google AMP Support

\n

The Accelerated Mobile Pages (AMP) project is a publishing format created by Google to enhance site performance for mobile website users. AMP pages are specially designed for Google search users to quickly load website pages without using any extraneous data. Genesis Blocks has support for AMP built into each block!

\n

Help & Docs

\n

User and developer docs for Genesis Blocks can be found here.

\n","download_link":"https://downloads.wordpress.org/plugin/genesis-blocks.1.2.5.zip","tags":{"blocks":"blocks","editor":"editor","gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","page-builder":"page builder"},"donate_link":"https://studiopress.com","icons":{"1x":"https://ps.w.org/genesis-blocks/assets/icon-128x128.png?rev=2368839","2x":"https://ps.w.org/genesis-blocks/assets/icon-256x256.png?rev=2368840"},"wporg":true},{"name":"MathML Block","slug":"mathml-block","version":"1.2.0","author":"adamsilverstein","author_profile":"https://profiles.wordpress.org/adamsilverstein","requires":"5.0","tested":"5.5.5","requires_php":"5.6","rating":90,"ratings":{"1":0,"2":0,"3":0,"4":1,"5":1},"num_ratings":2,"support_threads":1,"support_threads_resolved":0,"active_installs":500,"downloaded":7384,"last_updated":"2020-10-01 11:05pm GMT","added":"2018-12-28","homepage":"","short_description":"A MathML block for the WordPress block editor (Gutenberg).","description":"

A MathML block for the WordPress block editor (Gutenberg).
\nRequires PHP 5.4+ and WordPress 5.0+.

\n

Development takes place on the GitHub repository: https://github.com/adamsilverstein/mathml-block.

\n

Screencast: https://cl.ly/c0f6bbfbc3b1

\n

What is MathML?

\n

Mathematical Markup Language is a mathematical markup language, an application of XML for describing mathematical notations and capturing both its structure and content. It aims at integrating mathematical formulae into World Wide Web pages and other documents.

\n

The MathML block uses MathJax to render MathML formulas in the editor and on the front end of a website. MathJax (https://www.mathjax.org/) is A JavaScript display engine for mathematics that works in all browsers.

\n

To test a MathML block and enter a formula, for example: \\[x = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}\\].

\n

To test using math formulas inline, type an formula into a block of text, select it and hit the ‘M’ icon in the control bar. For example: \\( \\cos(θ+φ)=\\cos(θ)\\cos(φ)−\\sin(θ)\\sin(φ) \\). Note: if you are copying and pasting formulas into the rich text editor, switching to HTML/code editor mode is less likely to reformat your pasted formula.

\n

This plugin is compatible with the official AMP plugin by rendering amp-mathml on AMP pages.

\n

Technical Notes

\n
    \n
  • Requires PHP 5.6+.
  • \n
  • Requires WordPress 5.0+.
  • \n
  • Issues and Pull requests welcome on the GitHub repository: https://github.com/adamsilverstein/mathml-block.
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/mathml-block.zip","tags":{"block":"block","block-editor":"block-editor","gutenberg":"gutenberg","math":"math","mathml":"mathml"},"donate_link":"","icons":{"1x":"https://ps.w.org/mathml-block/assets/icon-128x128.png?rev=2002452","2x":"https://ps.w.org/mathml-block/assets/icon-256x256.png?rev=2002452"},"wporg":true},{"name":"Calculated Fields Form","slug":"calculated-fields-form","version":"1.1.14","author":"CodePeople","author_profile":"https://profiles.wordpress.org/codepeople","requires":"3.0.5","tested":"5.8","requires_php":false,"rating":96,"ratings":{"1":20,"2":2,"3":4,"4":26,"5":675},"num_ratings":727,"support_threads":101,"support_threads_resolved":101,"active_installs":60000,"downloaded":3470111,"last_updated":"2021-08-31 10:52pm GMT","added":"2013-03-12","homepage":"https://cff.dwbooster.com","short_description":"Calculated Fields Form allows you to create both simple and rich forms, quickly like a…","description":"

The “Calculated Fields Form” plugin allows you to create web forms with calculated fields, whose values are dynamically calculated based on other fields’ values in the web form.

\n

The possibilities are unlimited. For example, you can create forms with financial calculations, date operations to create reservation forms, and calculate the product prices. The plugin includes text operations for editing, translation, or advertising services. There are more advanced operations available such as determining the distance between addresses or generating graphs. The resulting forms are 100% mobile responsive.

\n

The most impressive thing is that you don’t need to hire a programmer to create the forms. With basic knowledge, you will have a professional form in just five minutes.

\n

Creating a form is all visual. The “Calculated Fields Form” plugin includes a form editor with multiple controls. Such as text fields, numeric fields, currency fields, slider controls, email fields, radio buttons, checkboxes, container fields, page breaks to create multipage forms, and most importantly, calculated fields.

\n

The form editor includes a list of controls, a property bar to easily edit field properties, a dashboard where you can design your forms, and the attributes for form configuration. Also, the plugin comes with multiple predefined layouts to change the forms’ appearance. If there are not enough predefined layouts for your project, there is a style editor to customize the form’s design.

\n

The “Calculated Fields Form” plugin includes integration with popular page builders:

\n
    \n
  • Classic WordPress Editor
  • \n
  • Gutenberg Editor
  • \n
  • Elementor
  • \n
  • Page Builder by SiteOrigin
  • \n
  • Beaver Builder
  • \n
  • WPBakery Page Builder
  • \n
  • DIVI Builder
  • \n
\n

For other editors, it is possible to insert the form into the pages via its shortcode. Each web form has an associated shortcode that allows you to insert it wherever you want.

\n

Features

\n

Main features:

\n
    \n
  • Visual form builder with an intuitive and interactive interface.
  • \n
  • Includes general-purpose controls such as radio buttons, checkboxes, menu lists, date fields, slider controls, numeric fields, text currency fields, etc.
  • \n
  • Includes calculated fields whose values result from operations involving other form fields.
    \nInsert as many calculated fields in the form as you need.
  • \n
  • Contains an advanced formula editor associated with the calculated fields with syntax highlighting and error detection.
  • \n
  • Features many operations modules: mathematical operations, operations with dates, financial operations, distance operations, text management, operations for calling remote services, etc. The calculated fields can identify numbers and prices within the values of the fields.
  • \n
  • Distributed with several predefined forms that you can use as a starting point for your projects.
  • \n
  • Includes several design templates.
  • \n
  • Supports multi-pages forms by inserting page break controls between fields belonging to different pages.
  • \n
  • Allows the grouping of fields inside container controls (Div and Fieldset).
  • \n
  • Possible to define dependency rules between fields in the form, which is very useful in the design of wizards.
  • \n
\n

Other features:

\n
    \n
  • From the plugin configuration page, it is possible to duplicate a form by pressing the “Clone” button associated with it. By cloning a form, you can reuse the work already done.
  • \n
  • Includes a troubleshooting and optimization area.
  • \n
  • Allows you to disable forms in the indexing process to improve the speed of the website.
  • \n
  • Includes a version control in the forms to recover previous versions.
  • \n
\n

Predefined forms:

\n

“Calculated Fields Form” is distributed with five predefined sample forms.

\n
    \n
  1. Simple Calculator Operations
  2. \n
  3. Calculation with Dates (bookings with check-in and check-out dates)
  4. \n
  5. Ideal Weight Calculator
  6. \n
  7. Pregnancy Calculator
  8. \n
  9. Lease Calculator
  10. \n
\n

You can clone a sample form to implement your project, or create a new form from scratch.

\n
\n

Calculated Fields Form Commercial
\n The free version of the “Calculated Fields Form” plugin includes only basic functionality. Other distributions (Professional, Developer, and Platinum) are available with advanced functionalities, such as sending notification emails, integration with payment gateways and external services, controls for database’s connection (and connection to other data sources), complex operations, and many other features.

\n
\n

Features of the Profesional version:

\n
    \n
  • Includes all the features of the free version of the plugin.
  • \n
  • Submit the data collected by the forms and store it on the website for review.
  • \n
  • Send notification emails with the data collected by the form, as well as confirmation emails to the users.
  • \n
  • Integrate the form with PayPal and calculate the amount to be charged through a calculated field.
    \nPayments allow SCA (strong customer authentication), compatible with the new payment services (PSD 2) – Directive (EU).
  • \n
  • Export and import forms between different WordPress sites.
  • \n
  • Different mechanisms to protect forms, such as captcha, WordPress nonces, and honeypot fields.
  • \n
  • Associate “Thank You” page with the form, where you can show a summary of the form’s submission.
  • \n
  • Dashboard widget to show the last week’s submissions.
  • \n
  • Cache the forms to increase the rendering speed.
  • \n
  • Export the information submitted by the forms to a CSV file and use it with third-party tools such as Excel, OpenOffice, LibreOffice, or any other spreadsheet editor.
  • \n
\n

Features of the Developer version:

\n\n

Includes add-ons to extend the form features and make use of third-party plugins and external services

\n
    \n
  • Server-Side Equations add-on: define server-side equations.
  • \n
  • Verification Code add-on: verifies the user’s email by sending him a verification code and blocking the form’s submission until the verification code is entered.
  • \n
  • WooCommerce add-on: integrate forms with WooCommerce products and calculate their prices, dimensions, and weight at the runtime.
  • \n
  • SalesForce add-on: integrate the form with the SalesForce service.
  • \n
  • WebHooks add-on: send the information collected by the form to a WebHook URL to open countless possibilities. By connecting your form to services such as Zapier, Microsoft Flow, IFTTT, Workato, and others, you can connect to hundreds of third-party services (e.g. Zoho CRM, Dropbox, Mailchimp, Google Drive, Facebook, Twitter, etc.).
  • \n
  • User Permissions add-on: control the forms’ access, as well as allowing users to access and edit their data.
  • \n
  • User Registration Form add-on: build a user registration form that captures the user’s basic information and metadata.
  • \n
  • reCAPTCHA add-on: replace the basic captcha with Google reCAPTCHA to protect the forms.
  • \n
\n

Features of the Platinum version:

\n
    \n
  • Includes all the features of free, Professional, and Developer versions of the plugin.
  • \n
  • Unique Fields Values add-on: verifies that the values entered by users have not been used in previous submissions.
  • \n
  • Easy Digital Downloads add-on: integrate the forms into Easy Digital Downloads products and calculate their prices at the runtime.
  • \n
  • Google Analytics add-on: generate usage reports in “Google Analytics” for the users’ actions.
  • \n
  • PayPal Pro add-on: enable the payer’s credit card details to be entered directly through the website without any redirection to the PayPal website.
  • \n
  • Upload Files add-on: add uploaded files to the media library and extend the file types accepted by WordPress.
  • \n
  • DropBox Integration add-on: copy or move the uploaded files to a DropBox account.
  • \n
  • ip2location add-on: identify the users’ data using the ip2location databases.
  • \n
  • Google Places add-on: transform form fields into autocomplete address fields.
  • \n
  • Autocomplete Places add-on: transform form fields into autocomplete address fields by using the Photon API.
  • \n
  • Signature add-on: convert form fields into “Signature” fields, allowing the users to sign the form with a mouse or touchscreen.
  • \n
  • iCal add-on: send iCal file in the notification emails to import the events into most popular calendars like Outlook and Google Calendar.
  • \n
  • CSV Generator add-on: export the information collected by the form to CSV files and attach these to the notification emails.
  • \n
  • PDF Generator add-on: generate PDF files with the information collected by the forms and attach them to the notification emails.
  • \n
  • WebMerge add-on: integrate the forms with FormStack documents (formerly WebMerge) to generate PDF and Office documents at runtime with the information collected by the web forms.
  • \n
  • PrintFriendly add-on: generate PDF files with the PrintFriendly API and attach the resulting files to the notification emails.
  • \n
  • Mailchimp add-on: add new members to the MailChimp account.
  • \n
  • Mautic add-on: add new contacts (or update existing ones) into the Mautic Service.
  • \n
  • HubSpot add-on: add/update contacts in HubSpot, using the information collected by the form.
  • \n
  • Emma add-on: add new members to the Emma service.
  • \n
  • Twilio add-on: send notification messages (SMS) in the forms’ submissions.
  • \n
  • MailPoet add-on: add new subscribers to MailPoet’s Mailing Lists (MailPoet versions 2 and 3).
  • \n
  • AffiliateWP add-on: integrate the forms with the AffiliateWP plugin.
  • \n
  • Authorize.Net add-on: accept payments via Authorize.Net from the form.
  • \n
  • Stripe add-on: accept payments via the Stripe payment gateway from the form.
  • \n
  • Skrill Payments Integration add-on: integrate with the Skrill Moneybookers payment gateway.
  • \n
  • TargetPay (iDeal) add-on add-on: integrate with iDeal, the popular Dutch payment method.
  • \n
  • Mollie (iDeal) add-on: accept payments via iDeal.
  • \n
  • RedSys / Servired / Sermepa add-on provides: a secure interface for accepting credit card payments from most banks in Spain.
  • \n
  • PayTM add-on: a secure interface for accepting payments with credit cards, debit cards, net banking, wallets, and EMI.
  • \n
  • SagePay add-on: a secure interface for accepting payments via SagePay.
  • \n
  • Sage Payment add-on: a secure interface for accepting payments through a secure SSL checkout system for both bankcard and virtual check transactions.
  • \n
\n

Please keep the plugin updated. Updates contain bug fixes as well as new features. The WordPress directory distributes the updates for the free version of the plugin. But for commercial versions, it would be necessary to register your copy of the plugin. The following link describes the registration process: CLICK HEREThis section mainly contains notes on features of the form builder that are too detailed to include in the main description.

\n

Conditional rules

\n

It is possible to show or hide form fields (dependent fields) based on the options selected in checkbox fields, radio buttons, the options selected in dropdown menus, or the result of calculated fields.

\n

The value of a dependent field is zero when it is hidden/disabled. The plugin excludes the disabled form fields from the submission.

\n

Additional details about the use of dependencies

\n

Predefined values

\n

The predefined values in the fields have two possible uses:

\n

1- To fill the field by default. This makes it easier for the end-user to enter values.

\n

2- Hint of the values to be entered in the field (like “Enter your name”). To use the predefined value as a placeholder, you must tick the “Hide predefined value on click” checkbox. The value will disappear once the user starts filling in the field. The calculated fields’ equations ignore placeholders.

\n

The “User Instructions” attribute

\n

The “User instructions” attribute in the field settings allows you to instruct the user on how to fill in the field. By default, the instructions appear as smaller text on the public website. But they can be configured as tooltips.

\n

Adding CSS layout keywords

\n

The “Add CSS layout keywords” attribute in the fields settings allows you to apply CSS styles to fields. You must only enter the name of the CSS class names, and not their definitions.

\n

You can define the CSS classes via the “Customize Form Design” attribute in the “Form Settings” tab. This attribute contains a CSS editor with syntax highlighting and error checking.

\n

If you want to assign several class names to the field, separate them by space characters.

\n

The plugin includes multiple predefined classes that you can assign to the form fields.

\n

More information about the form’s design can be found by reading the following post in the plugin’s blog:

\n

Customizing the form’s design

\n

The classes listed below allow you to align two, three, or four fields on the same line:

\n
column2\ncolumn3\ncolumn4\n
\n

For example, if you want to put two fields on the same line, give both fields the class name “column2”.

\n

There are other variants for displaying several fields on the same line, such as container fields (Div or Fieldset). Container fields allow you to select the number of columns in your configuration. The following post describes all the alternatives for positioning the fields in the form:

\n

Formatting the form (distributing the fields in columns)

\n

Multi-page form

\n

To create multi-page forms, you must insert “Page break” controls between fields belonging to different pages.

\n

When the user presses the “Next Page” button, the plugin validates the fields in the current form. If there is any validation error (such as an unfilled required field), the plugin stops the “Next page” action.

\n

Hidden calculated fields

\n

Calculated fields include a checkbox in the configuration that allows them to be hidden from the public website. This feature is essential in those fields that are used to calculate intermediate values or when we want to show the results only in emails or thank you pages.

\n

Equation / Formula format for calculated fields

\n

Below, some possible formulas are included as examples, but the possibilities are endless.

\n
    \n
  • \n

    With simple mathematical operations:

    \n
    fieldname1 + fieldname2\n\nfieldname1 * fieldname2\n\nfieldname1 / fieldname2\n\nfieldname1 - fieldname2\n\nfieldname1 - fieldname2\n
    \n
  • \n
  • \n

    With mathematical operations involving multiple fields and grouped fields:

    \n
    fieldname1 * (fieldname2 + fieldname3)\n
    \n
  • \n
  • \n

    With rounding operations. Round the result to two decimal places:

    \n
    PREC(fieldname2 / fieldname3, 2)\n
    \n
  • \n
  • \n

    There are infinite number of formulas that can be created using complex structures. For example, the following formula includes conditional statements:

    \n
    (function () {\nif (100 < fieldname3) return fieldname1 + fieldname2;\nif (fieldname3 <= 100) return fieldname1 * fieldname2;\n})();\n
    \n
  • \n
  • \n

    For complex formulas/equations you must use the function format with return statement to return the result to the calculated field:

    \n
     (function () {\n    var result = 0;\n    /* Your code here */\n    return result;\n}) ();\n
    \n
  • \n
\n

Operations and operators to use in equations/formulas

\n

One of the “Calculated Fields Form” strengths is the ability to use any valid JavaScript code to implement the equations/formulas.

\n

However, the plugin includes a wide variety of operations and operators to simplify the development process.

\n

Mathematical Operations and Operators

\n

Conditional Operations

\n

Field Handling Operations

\n

Operations for interacting with external services

\n

Operations for handling URLs and query strings

\n

In addition to the operation modules listed above, the Developer and Platinum versions of the plugin include additional modules:

\n

Date Time Operations

\n

Financial Operations

\n

Distance and Travel Time Operations

\n

Operations to generate charts

\n

Controls available in the form generator of the “Calculated Fields Form”

\n

The complete list of controls is available from this link: CLICK HERE

\n

Create JavaScript variables from parameters received by “GET” or “POST”, “SESSION” variables, or “COOKIES” to use in the equations

\n

The plugin includes the shortcode [CP_CALCULATED_FIELDS_VAR] to generate JavaScript variables from parameters received by “GET” or “POST”, “SESSION” variables, or “COOKIES”:

\n
[CP_CALCULATED_FIELDS_VAR name=\"...\"]\n
\n

In the shortcode, you must replace the “…” symbols with the name of the parameter or variable. It will be the same name for the JavaScript variable.

\n

For example:

\n
[CP_CALCULATED_FIELDS_VAR name=\"varname\"]\n
\n

You can use the variables generated through the shortcode [CP_CALCULATED_FIELDS_VAR] in the formulas of the calculated fields: fieldname1*varname

\n

The complete list of parameters accepted by the variables shortcode is available at the following link: CLICK HERE

\n

Tips for calculating prices

\n

One of the most frequent uses of our plugin is for price calculation. When displaying the price of a product, you may want to split the form into two pages. The first page would request the information needed to calculate the price, and the second page would include the calculated field with the final price. Also, you could use the “Instruct. Text” fields to indicate the terms, conditions, and validity period of the offer.

\n

Note that you can make the “Instruct. Text” fields dependent on the calculated value. This allows you to vary the text displayed to the user depending on the calculated price, as the terms, conditions, or offers often depend on the transaction amount.

\n

Add-ons

\n

The add-ons are only distributed with the Developer and Platinum versions of the plugin.

\n

The plugin lists the add ons in the “Add-ons area” of the settings page. To enable the add-ons, you must tick their corresponding checkbox and press the “Activate/Deactivate Add-ons” button.

\n

Server-Side Equations add-on – included in the Developer and Platinum versions of the plugin

\n

Define equations with PHP code on the server-side. The calculated fields call the server-side equations via AJAX.

\n

CLICK HERE for additional information

\n

Verification Code add-on – included in the Developer and Platinum versions of the plugin

\n

The “Verification Code” add-on allows verifying the users’ emails by sending a verification code and blocking the form’s submission until a valid code is entered.

\n

CLICK HERE for additional information

\n

Unique Fields Values add-on – included in the Platinum version of the plugin

\n

The “Unique Fields Values” add-on verifies that the values entered by users have not been used in previous submissions. It allows to enter simple and complex verification rules (one or multiple fields separated by comma symbols).

\n

CLICK HERE for additional information

\n

WooCommerce add-on – included in the Developer and Platinum versions of the plugin

\n

Integrate the forms created by the “Calculated Fields Form” with WooCommerce products and calculate their prices, weights, dimensions, and more at the runtime.

\n

CLICK HERE for additional information

\n

Easy Digital Downloads add-on – included in the Platinum version of the plugin

\n

Integrate forms created by the “Calculated Fields Form” with the Easy Digital Downloads products, and calculate their price dynamically at the runtime.

\n

CLICK HERE for additional information

\n

SalesForce add-on – included in the Developer and Platinum versions of the plugin

\n

Add new leads to a SalesForce account using the data collected by the forms.

\n

CLICK HERE for additional information

\n

WebHook add-on – included in the Developer and Platinum versions of the plugin

\n

Post the information collected by the forms to WebHook URLs.

\n

Through connecting the forms created by the plugin with services like Zapier, Microsoft Flow, Workato, or IFTTT (and many others), you will have access to hundreds of third-party services, like Zoho CRM, Dropbox, Mailchimp, Evernote, Google Drive, Facebook, Twitter, and more than 300 services https://zapier.com/zapbook/apps/, https://flow.microsoft.com/, https://ifttt.com/discover

\n

CLICK HERE for additional information

\n

User Permissions add-on – included in the Developer and Platinum versions of the plugin

\n

Control access to forms. Access can be restricted to registered users, users with certain roles, or to specific users.

\n

The add-on adds a new shortcode to the plugin to list the data submitted by the logged-in user (it is possible to insert the new shortcode into the user’s profile) and assign user permissions to edit their information or delete an entry.

\n

Limit the number of submissions (e.g. one submission per form/user).

\n

CLICK HERE for additional information

\n

User Registration Form add-on – included in the Developer and Platinum versions of the plugin

\n

Build user registration forms. The form can collect basic user information and metadata required by other plugins.

\n

CLICK HERE for additional information

\n

reCAPTCHA add-on – included in the Developer and Platinum versions of the plugin

\n

Protect forms using Google reCAPTCHA instead of the basic captcha distributed with the plugin, as reCAPTCHA is more visual and intuitive than traditional captchas.

\n

CLICK HERE for additional information

\n

Google Analytics add-on – included in the Platinum version of the plugin

\n

Generate usage reports in “Google Analytics” for the users’ actions.

\n

CLICK HERE for additional information

\n

PayPal Pro add-on – included in the Platinum version of the plugin

\n

Allow the user to enter their credit card details directly on your website without redirecting them to the PayPal website. Once the user has filled the form fields and clicked the submit button, the payment is processed and the posted data (excluding the credit card information) is stored in the WordPress database.

\n

CLICK HERE for additional information

\n

Upload Files add-on – included in the Platinum version of the plugin

\n

Every commercial version of the plugin includes the “Upload File” control to upload files from the form. However, the “Upload Files” add-on allows the uploaded files to be added to the Media Library and be accessed from the pages and posts of the website.

\n

WordPress restricts the file types that can be uploaded. The “Uploads Files” add-on allows the list of accepted files to be extended.

\n

CLICK HERE for additional information

\n

DropBox Integration add-on – included in the Platinum version of the plugin

\n

Copy or move files uploaded through the forms to a DropBox account.

\n

CLICK HERE for additional information

\n

ip2location add-on – included in the Platinum version of the plugin

\n

Use the ip2location databases to identify additional user information based on their IP. Address such as country, city, coordinates, weather station, time zone, ZIP code, etc.

\n

CLICK HERE for additional information

\n

Google Places add-on – included in the Platinum version of the plugin

\n

Transform fields into autocomplete address fields calling the Google Places API.

\n

CLICK HERE for additional information

\n

Autocomplete Places add-on – included in the Platinum version of the plugin

\n

Transform fields into autocomplete address fields by calling the Photon API.

\n

CLICK HERE for additional information

\n

Signature add-on – included in the Platinum version of the plugin

\n

Transform fields into “Signature” fields to allow the users to sign the form with their mouse or touchscreens.

\n

CLICK HERE for additional information

\n

iCal add-on – included in the Platinum version of the plugin

\n

Send the users iCal files attached to the confirmation emails to import events into the most popular calendars like Outlook and Google Calendar.

\n

CLICK HERE for additional information

\n

CSV Generator add-on – included in the Platinum version of the plugin

\n

Export the information collected by the form to CSV files and attach them to the notification emails.

\n

CLICK HERE for additional information

\n

PDF Generator add-on – included in the Platinum version of the plugin

\n

An experimental add-on that generates PDF files with the information collected by the forms and attaches them to the notification emails.

\n

CLICK HERE for additional information

\n

WebMerge add-on – included in the Platinum version of the plugin

\n

Integrate the forms with the FormStack Documents service (formerly WebMerge) to generate PDF and Office documents with the information collected from the form.

\n

CLICK HERE for additional information

\n

Integrate the form with the Silverpop service (now: IBM Watson Campaign Automation) CLICK HERE for additional information

\n

PrintFriendly add-on – included in the Platinum version of the plugin

\n

Send the information collected by the forms to PrintFriendly and attach the resulting PDF files to the notification emails.

\n

CLICK HERE for additional information

\n

Mailchimp add-on – included in the Platinum version of the plugin

\n

Add new members to the MailChimp lists with the information collected by the form.

\n

CLICK HERE for additional information

\n

Mautic add-on – included in the Platinum version of the plugin

\n

Add/update contacts in the Mautic service with information collected by the forms.

\n

CLICK HERE for additional information

\n

HubSpot add-on – included in the Platinum version of the plugin

\n

Add/update HubSpot contacts with information collected by the forms.

\n

CLICK HERE for additional information

\n

Emma add-on – included in the Platinum version of the plugin

\n

Connect the forms to the Emma service to add new members to Emma groups.

\n

CLICK HERE for additional information

\n

Twilio add-on – included in the Platinum version of the plugin

\n

Send notification messages (SMS) through Twilio in the form’s submissions.

\n

CLICK HERE for additional information

\n

MailPoet add-on – included in the Platinum version of the plugin

\n

Adds subscribers to MailPoet Mailing Lists (MailPoet versions 2 and 3).

\n

CLICK HERE for additional information

\n

AffiliateWP add-on – included in the Platinum version of the plugin

\n

Integrate the forms with the “AffiliateWP” plugin.

\n

CLICK HERE for additional information

\n

Authorize.Net add-on – included in the Platinum version of the plugin

\n

The Authorize.net Server Integration Method (Authorize.net SIM) is a hosted payment processing solution that handles all of the steps in processing a transaction.

\n

CLICK HERE for additional information

\n

Stripe add-on – included in the Platinum version of the plugin

\n

The Stripe Payments add-on (www.stripe.com) provides a way to accept all major cards from customers around the world.

\n

CLICK HERE for additional information

\n

Skrill Payments Integration add-on – included in the Platinum version of the plugin

\n

An interface for accepting payments through secure pages.

\n

You can accept cards, more than 20 local payment methods, and over 80 direct bank transfer connections with a single integration.

\n

CLICK HERE for additional information

\n

TargetPay (iDeal) add-on – included in the Platinum version of the plugin

\n

Integrate with iDeal, the most popular Dutch payment method. The integration is made via TargetPay: https://www.targetpay.com/info/ideal?setlang=en

\n

CLICK HERE for additional information

\n

Mollie (iDeal) add-on – included in the Platinum version of the plugin

\n

Integrate with iDeal, the popular Dutch payment method.

\n

CLICK HERE for additional information

\n

RedSys / Servired / Sermepa add-on – included in the Platinum version of the plugin

\n

A secure interface for accepting credit card payments through most banks in Spain (Sabadell, Banco Popular, BBVA, Santander, Bankia-Caixa, Bankinter, etc.)

\n

CLICK HERE for additional information

\n

PayTM add-on – included in the Platinum version of the plugin

\n

A secure interface for accepting payments through credit cards, debit cards, net banking, wallets, and EMI. With over 100 million PayTM users in India, your customers will appreciate the option to pay with their trusted PayTM Wallet.

\n

CLICK HERE for additional information

\n

SagePay add-on – included in the Platinum version of the plugin

\n

A secure interface for accepting payments through SagePay.

\n

CLICK HERE for additional information

\n

Sage Payment add-on – included in the Platinum version of the plugin

\n

An interface for accepting payments through a secure SSL-checkout system for both bank cards and virtual check transactions. All authorized and approved transactions will be delivered to your current bank card and/or virtual check batches, viewable within the Virtual Terminal for order processing and settlement.

\n

CLICK HERE for additional information

\n","download_link":"https://downloads.wordpress.org/plugin/calculated-fields-form.zip","tags":{"calculator":"calculator","contact-form":"contact form","form":"form","form-builder":"form builder","quote-form":"quote form"},"donate_link":"http://cff.dwbooster.com","icons":{"1x":"https://ps.w.org/calculated-fields-form/assets/icon-128x128.jpg?rev=1734377","2x":"https://ps.w.org/calculated-fields-form/assets/icon-256x256.jpg?rev=1734377"},"wporg":true},{"name":"All in One SEO – Best WordPress SEO Plugin – Easily Improve SEO Rankings & Increase Traffic","slug":"all-in-one-seo-pack","version":"4.1.3.3","author":"All in One SEO Team","author_profile":"https://profiles.wordpress.org/smub","requires":"4.9","tested":"5.8","requires_php":"5.4","rating":90,"ratings":{"1":163,"2":21,"3":15,"4":58,"5":1497},"num_ratings":1754,"support_threads":113,"support_threads_resolved":109,"active_installs":2000000,"downloaded":82959562,"last_updated":"2021-08-16 1:02pm GMT","added":"2007-03-30","homepage":"https://aioseo.com/","short_description":"The original WordPress SEO plugin. Improve your WordPress SEO rankings and traffic with our comprehensive SEO tools and smart SEO optimizations.","description":"

AIOSEO – The Best WordPress SEO Plugin & Toolkit

\n

All in One SEO for WordPress is the original WordPress SEO plugin started in 2007. Over 2 million smart website owners use AIOSEO to properly setup WordPress SEO, so their websites can rank higher in search engines.

\n

We believe you shouldn’t have to hire an SEO expert or developer to properly setup WordPress SEO. That’s why we built AIOSEO as the most comprehensive WordPress SEO plugin and marketing toolkit, so you can improve your website’s SEO rankings and uncover new SEO growth opportunities in less than 10 minutes.

\n

At All in One SEO (AIOSEO), user experience is our #1 priority. From website SEO setup to ongoing SEO optimization, our team of SEO experts have created easy to follow SEO workflows that will help you outrank your competitors in search results. This is why many industry leaders award AIOSEO as the most beginner friendly WordPress SEO plugin that’s both EASY and POWERFUL!

\n

AIOSEO’s WordPress SEO plugin features are highly optimized for Google and other popular search engine algorithm because we follow the most up to date SEO standards and SEO best practices. We can honestly say that AIOSEO is the best WordPress SEO plugin in the world.

\n
\n

AIOSEO Pro
\n This plugin is the lite version of the All in One WordPress SEO Pro plugin that comes with all the SEO features you will ever need to rank higher in search engines including smart SEO schema markup, advanced SEO modules, powerful SEO sitemap suite, local SEO module, Google AMP SEO, WooCommerce SEO, and tons more. Click here to purchase the best premium WordPress SEO plugin now!

\n
\n

We took the pain out of optimizing WordPress SEO and made it easy. Here’s why smart business owners, SEO experts, marketers, and developers love AIOSEO, and you will too!

\n

\n

Properly Setup WordPress SEO (without Hiring an Expert)

\n

AIOSEO makes it easy to setup WordPress SEO, the RIGHT WAY. Our smart WordPress SEO setup wizard helps you optimize your website’s SEO settings based on your unique industry needs.

\n

In less than 10 minutes, you will be able to setup all the advanced WordPress SEO features like XML sitemaps, optimized search appearance, SEO meta title, SEO meta description, SEO keywords, Open Graph SEO Knowledge Panel information, social media integration, SEO search console / webmaster tool connections, local SEO, schema markup for SEO, and more.

\n

But don’t just take our word. See what another website owner like yourself is saying:

\n
\n

Swift, honest, full control. After all these years and having used almost every WP SEO plugin I’m amazed by AIOSEO’s depth, simplicity and fast workflow ❤️
\n @aaronbol

\n
\n

Optimize Your Pages for Higher SEO Rankings with TruSEO Analysis

\n

Creating SEO optimized content used to be hard. Why?

\n

Because most business owners aren’t SEO experts.

\n

That’s why we created the TruSEO score. This gives you a more in-depth SEO optimization analysis and an actionable SEO checklist, so you can easily optimize your website pages for any keyword to get higher SEO rankings and maximum traffic.

\n

Our SEO content analysis tool is enabled by default in both the Gutenberg block editor and Classic Editor, so you can quickly optimize your blog posts and pages for your SEO keywords to get higher SEO rankings.

\n

Our SEO readability analysis gives you further insights on how to improve your content for maximum SEO benefits.

\n

The best part about TruSEO analysis is that you can use it to optimize your posts / pages for unlimited SEO keywords.

\n

Seamless SEO Integrations with Webmaster Tools & Social Media

\n

All in One SEO for WordPress offers seamless integration with popular social media platforms like Facebook, Twitter, Pinterest, YouTube, LinkedIn, Instagram, and more.

\n

This ensures that your website preview is optimized for both search engines (SEO), and social media networks.

\n

AIOSEO also makes it easy to connect your website with Google Search Console, Bing webmaster tools, Yandex webmaster tools, Baidu webmaster tools, Google Analytics, and all other SEO webmaster tools.

\n

This helps you easily measure your SEO results and progress.

\n
\n

I’m a professional SEO and used many tools and extensions. Regarding simplicity, individuality and configurability All in One SEO Pro is by far the best SEO plugin out there for WordPress.
\n Joel Steinmann

\n
\n

Smart XML Sitemaps and Rich Snippets (SEO Schema Markup)

\n

Proper website SEO markup plays an important role in improving SEO rankings. That’s why smart SEO experts use AIOSEO for on-page SEO optimization.

\n

Aside from the comprehensive WordPress XML sitemap feature, we also offer News SEO sitemap and Video SEO sitemap to help you improve your website’s SEO ranking and get more traffic.

\n

AIOSEO comes with built-in smart SEO schema markup feature to help you get more traffic through SEO rich snippets, Google featured snippets, breadcrumb site links in SEO, and image SEO search results.

\n
\n

The best SEO plugin. All in One SEO is the best SEO Plugin. I personally find it better than Yoast. This plugin offers so much freedom in configuration.
\n hanapupu

\n
\n

Local SEO, WooCommerce SEO, Google AMP, and More

\n

All in One SEO is the most comprehensive WordPress SEO plugin / marketing toolkit in the world.

\n

We offer complete support for Google Knowledge Graph and Schema.org markup for local businesses. You can add multiple business locations, opening hours, contact info (business email, business phone, business address, etc) and more with our Local SEO module.

\n

AIOSEO also makes WooCommerce SEO easy. With our SEO plugin, you can optimize your product pages and product categories for better SEO rankings (with just a few clicks).

\n

Since AIOSEO is the original WordPress SEO plugin, we have SEO integrations with all popular WordPress plugins such as membership plugin SEO, landing page plugin SEO, Semrush SEO integration, etc. AIOSEO also offers Google AMP integration and works seamlessly with all popular speed & caching plugins.

\n
\n

Best SEO Plugin for WordPress. We continue to use All in One SEO on all our WordPress sites and Clients sites, and we recommend it too all other clients.
\n MySEOGuy

\n
\n

Since SEO is an essential feature, AIOSEO is a must have plugin for every website!

\n

SEO Redirection Manager and 404 Monitoring

\n

AIOSEO Redirection manager helps you set up proper 301 redirects to improve your SEO rankings.

\n

We also support other advanced SEO redirects including 302 redirects, 307 redirects, 410 redirection, 404 redirects, REGEX redirects for advanced SEO needs, and more.

\n

We have an automatic 404 error monitor that helps you track and redirect 404 errors, so you can prevent losing SEO rankings.

\n

Since redirect speed is important for SEO, we built in both Apache / NGINX server level redirects to help you get maximum SEO benefit.

\n

Full All in One SEO Feature List

\n
    \n
  • WordPress SEO Setup Wizard – Properly setup WordPress SEO in less than 10 minutes.
  • \n
  • On-page SEO Optimization – optimize SEO code markup (without hiring a developer)
  • \n
  • TruSEO score – detailed content & readability analysis to help you optimize your pages for higher SEO rankings.
  • \n
  • Smart Meta Title & Description – Automatic SEO generation, dynamic SEO smart tags, and more.
  • \n
  • Unlimited SEO Keywords – our SEO content analyzer helps you optimize your pages for unlimited SEO keywords.
  • \n
  • XML Sitemap – Advanced XML sitemaps to boost your SEO rankings.
  • \n
  • Video SEO Sitemap – Improve your SEO rankings with video sitemap.
  • \n
  • News SEO Sitemap – Increase your SEO traffic with Google News sitemap.
  • \n
  • RSS SEO Sitemap – Improve SEO crawl frequency with RSS sitemap.
  • \n
  • Automatic Image SEO – Our image SEO module helps your images rank higher.
  • \n
  • Local Business SEO – Improve your local business SEO presence with our local SEO module.
  • \n
  • Multiple location SEO – Great for SEO optimization for businesses with multiple local store locations.
  • \n
  • Rich Snippets Schema – Get better click through rate (CTR) and increase SEO rankings with rich snippets schema.
  • \n
  • SEO Knowledge Graph Support – Improve your website’s search appearance with SEO Knowledge panel.
  • \n
  • Advanced SEO Schema – Easily add advanced SEO schema markups like FAQ schema, product schema, recipe schema (food blogger SEO), software application schema markup (SaaS SEO), online course schema (for course SEO), and more.
  • \n
  • Sitelinks Search Box – Helps you get a search box in Google SEO rankings.
  • \n
  • Google Site Links – Our SEO markup can help you get sitelinks for your brand.
  • \n
  • Robots.txt Editor – Control what SEO robots can see with our easy SEO robots.txt editor.
  • \n
  • SEO Audit Checklist – Improve your website’s SEO ranking with our SEO audit checklist.
  • \n
  • Google Search Console – Connect your WordPress site with Google webmaster tools to see additional SEO insights.
  • \n
  • Search Engine Verification Tools – Easily integrate with other popular SEO webmaster tools to improve search visibility.
  • \n
  • Google AMP SEO – Improve your mobile SEO rankings with Google AMP SEO.
  • \n
  • Advanced SEO Canonical URLs – Prevent duplicate content in SEO with automatic canonical URLs and boost your SEO rankings.
  • \n
  • Advanced Robots Meta SEO Settings – granular controls for no index, no follow, no archive, no snippet, max snippet, max video, and more.
  • \n
  • RSS Content for SEO – Stop content theft from hurting your SEO rankings with our RSS Content tool.
  • \n
  • User Access Control – Control who can manage your SEO settings with our advanced SEO access control.
  • \n
  • Competitor Site SEO Analysis – Use our competitor SEO analysis to outrank them by improving your website’s SEO optimization.
  • \n
  • Smart Breadcrumbs – Add Breadcrumb navigation to improve user experience and boost your SEO rankings. Comes with full SEO JSON+LD support.
  • \n
  • Smart SEO Redirects – Setup proper 301 redirects to improve your SEO rankings.
  • \n
  • 404 Error Monitor for SEO – Monitor website 404 errors and set up proper SEO redirects to prevent losing SEO rankings.
  • \n
  • Title and Nofollow for SEO – We make it easy for you to add title and nofollow to external links to improve SEO rankings.
  • \n
\n

WordPress SEO Integrations

\n
    \n
  • WooCommerce SEO – optimize your WooCommerce product pages and improve your WooCommerce store’s SEO rankings.
  • \n
  • MemberPress SEO – optimize your MemberPress course pages and improve your membership site’s SEO rankings.
  • \n
  • Elementor SEO – add SEO optimization for your Elementor landing pages.
  • \n
  • LearnDash SEO – SEO optimization for LearnDash courses.
  • \n
  • Facebook SEO – SEO optimize your website preview on Facebook.
  • \n
  • Twitter SEO – SEO optimize your website preview on Twitter.
  • \n
  • Pinterest SEO – SEO optimize your website preview on Pinterest.
  • \n
  • Open Graph Support – improve your SEO with open graph meta data.
  • \n
  • Knowledge Panel SEO – improve website SEO apperance by adding social media profile links for Facebook, Twitter, Wikpedia, Instagram, LinkedIn, Yelp, YouTube, and more.
  • \n
  • SEO Webmaster Tool Content – Connect your WordPress site with various webmaster tools to improve SEO rankings.
  • \n
  • Semrush SEO integration – See additional SEO keywords and relevant SEO keyphrases with our Semrush SEO integration.
  • \n
\n

WordPress SEO Plugin Importer

\n
    \n
  • Yoast SEO Importer – easily switch from Yoast SEO to AIOSEO with our full SEO migration wizard that includes SEO keywords, SEO title, meta description, XML sitemaps and more.
  • \n
  • Yoast SEO Premium Importer – easily import Yoast SEO premium settings including SEO redirects to AIOSEO with our full SEO migration wizard.
  • \n
  • RankMath SEO Importer – easily switch from RankMath SEO to AIOSEO with our SEO migration wizard.
  • \n
  • SEO Settings Backup – create a backup of your AIOSEO settings.
  • \n
  • Advanced SEO Import / Export – easily import / export AIOSEO settings from one site to another.
  • \n
  • Redirection Importer – import your SEO redirects from the Redirection plugin with our SEO migration wizard.
  • \n
  • Simple 301 Redirects Importer – import your SEO redirects from Simple 301 redirets with our SEO migration wizard.
  • \n
  • Safe Redirection Manager – easily import SEO redirects from safe redirect manager with our SEO migration wizard.
  • \n
\n

After reading this feature list, you can probably imagine why AIOSEO is the best WordPress SEO plugin in the market.

\n

Give AIOSEO a try.

\n

Want to unlock more SEO features? Upgrade to AIOSEO Pro.

\n

Credits

\n

This plugin is created by Benjamin Rojas and Syed Balkhi.

\n

Branding Guideline

\n

AIOSEO® is a registered trademark of Semper Plugins LLC. When writing about the WordPress SEO plugin by AIOSEO, please use the following format.

\n
    \n
  • AIOSEO (correct)
  • \n
  • All in One SEO (correct)
  • \n
  • AIO SEO (incorrect)
  • \n
  • All in 1 SEO (incorrect)
  • \n
  • AISEO (incorrect)
  • \n
\n

What’s Next

\n

If you like our WordPress SEO plugin, then consider checking out our other projects:

\n
    \n
  • OptinMonster – Get More Email Subscribers with the most popular conversion optimization plugin for WordPress.
  • \n
  • WPForms – #1 drag & drop online form builder for WordPress.
  • \n
  • MonsterInsights – See the Stats that Matter and Grow Your Business with Confidence. Best Google Analytics Plugin for WordPress.
  • \n
  • SeedProd – Create beautiful landing pages with our powerful drag & drop landing page builder.
  • \n
  • WP Mail SMTP – Improve email deliverability for your contact form with the most popular SMTP plugin for WordPress.
  • \n
  • RafflePress – Best WordPress giveaway and contest plugin.
  • \n
  • Smash Balloon – #1 social feeds plugin for WordPress.
  • \n
  • SearchWP – advanced WordPress search plugin.
  • \n
  • PushEngage – best web push notification plugin.
  • \n
\n

Visit WPBeginner to learn from our WordPress Tutorials and find out about other best WordPress plugins.

\n","download_link":"https://downloads.wordpress.org/plugin/all-in-one-seo-pack.4.1.3.3.zip","tags":{"google-search-console":"google search console","meta-description":"meta description","schema":"schema","seo":"seo","xml-sitemap":"xml sitemap"},"donate_link":"","icons":{"1x":"https://ps.w.org/all-in-one-seo-pack/assets/icon.svg?rev=2443290","2x":"https://ps.w.org/all-in-one-seo-pack/assets/icon-256x256.png?rev=2443290","svg":"https://ps.w.org/all-in-one-seo-pack/assets/icon.svg?rev=2443290"},"wporg":true},{"name":"Translate WordPress – Weglot Translate","slug":"weglot","version":"3.3.6","author":"Weglot Translate team","author_profile":"https://profiles.wordpress.org/remyb92","requires":"4.5","tested":"5.8","requires_php":"5.6","rating":96,"ratings":{"1":39,"2":7,"3":6,"4":27,"5":1205},"num_ratings":1284,"support_threads":8,"support_threads_resolved":3,"active_installs":40000,"downloaded":1203485,"last_updated":"2021-08-18 2:44pm GMT","added":"2015-09-27","homepage":"http://wordpress.org/plugins/weglot/","short_description":"Translate your WordPress website in 110+ languages within minutes with Weglot Translate, without any coding.","description":"

Weglot Translate is the leading WordPress translation plugin, trusted by 60,000+ users worldwide. Translate your WordPress website into 110+ languages within minutes, no coding required.

\n

Increase visibility and boost conversions with ease by adding multilingual functionality. Weglot Translate is fully optimized for SEO, with every translated page automatically indexed by Google. Say hello in multiple languages to millions of new visitors.

\n

Make your website multilingual in minutes with a free trial. Visit https://weglot.com/ to learn more!

\n

How Weglot Translate works

\n\n

Why Weglot Translate

\n

It’s easy to install: Weglot Translate is quick to set up to have a multilingual WordPress website ready, instantly. Reach out to millions of new visitors worldwide with a few clicks, without any coding.

\n

It’s built for maximum compatibility: Weglot Translate is fully compatible with all platforms, WordPress themes, and plugins. From WooCommerce product descriptions to Elementor order forms, everything is translated into the languages of your choice. So you can focus on your content, not the technical details.

\n

It’s optimized for SEO: Weglot Translate follows Google’s best practices for multilingual website translation, serving all translated web pages with clean source code. Google will automatically index every translated page with dedicated URLs.

\n

It’s easy to set and forget: Weglot Translate automatically detects all your website content for easy translation. No more time-consuming manual duplication of every single line of content to get a multilingual website. All translations are updated in real-time, so you don’t need to worry about maintenance and any newly added content is automatically translated.

\n

It takes translation seriously: Weglot Translate gives you an edge on your translation tasks with the first layer of automatic translation provided by the best machine learning providers on the market (DeepL, Google, Microsoft, and Yandex). You can also edit the translations and collaborate with your team to work on translations together, directly within Weglot.

\n

It partners with the pros: Weglot Translate lets you order from vetted professional translators directly inside your Weglot dashboard. Set translation quality the way you want it to be, with Weglot Translate.

\n

“Within a week of translating our site to English with Weglot, international sales doubled, by the following month – they had quadrupled.”
\nClara Champion – Director of Digital and E-Commerce, Jimmy Fairly
\nRead the case study

\n

Multilingual functionality like no other

\n

Increase visibility: All translated pages are automatically indexed following Google’s best practices with dedicated URLs. Get new traffic with your multilingual website.

\n

Reduce bounce rate: Redirect visitors automatically to serve them in the language of their choice, based on their browser settings.

\n

Enhance user experience: From the landing page to the email confirmation, get all your key conversion steps translated in your customers’ language. You can even add different images and videos for various languages. Useful for images with text, Weglot Translate makes it easy to display “translated” images in your translated versions. Media localization is an essential aspect of any multilingual project and Weglot Translate makes it simple to do so.

\n

“We really loved the localization features provided by Weglot, such as the ability to translate images and other types of media depending on the language the visitor is viewing the site in.”
\nKim Martin – Senior Communications and Marketing Officer, The Challenge Initiative
\nRead the case study

\n

An all-in-one language translation platform

\n
    \n
  • Manage and edit all of your translations through a user-friendly interface.
  • \n
  • Collaborate with team members and trusted translators to translate together, directly inside Weglot.
  • \n
  • Is it a title? Is it a link? No more guessing the context of the text. Weglot Translate’s in-context editor lets you translate directly within the webpage.
  • \n
  • Make it your own. The language switcher is fully customizable for multiple design choices.
  • \n
  • Weglot Translate makes it easy to migrate from other WordPress multilingual plugins like Polylang or WPML. Simply deactivate your existing translation plugin and install Weglot Translate.
  • \n
\n

“Weglot removed the pain of having to manage multiple stores for multiple locales. The integration was easy, and the support is incredibly helpful. I highly recommend Weglot to anyone looking for a simple and cost-effective solution to translate their stores!”
\nMike Robertson – Director of Sales Operations, Nikon

\n

With an increase in site visitors and session duration thanks to your multilingual website, you can expect a massive boost to your conversions. See why thousands of e-commerce platforms, SaaS firms, marketplaces, corporate websites, and blogs worldwide love Weglot Translate. Try it today for free

\n","download_link":"https://downloads.wordpress.org/plugin/weglot.3.3.6.zip","tags":{"language":"language","localization":"localization","multilingual":"multilingual","translate":"translate","translation":"translation"},"donate_link":"","icons":{"1x":"https://ps.w.org/weglot/assets/icon-128x128.png?rev=2186774","2x":"https://ps.w.org/weglot/assets/icon-256x256.png?rev=2186774"},"wporg":true},{"name":"Rank Math SEO – Best SEO Plugin For WordPress To Increase Your SEO Traffic","slug":"seo-by-rank-math","version":"1.0.71.1","author":"Rank Math","author_profile":"https://profiles.wordpress.org/rankmath","requires":"5.6","tested":"5.8","requires_php":"7.2","rating":98,"ratings":{"1":68,"2":17,"3":20,"4":47,"5":3375},"num_ratings":3527,"support_threads":135,"support_threads_resolved":135,"active_installs":900000,"downloaded":19834078,"last_updated":"2021-09-03 7:13pm GMT","added":"2018-11-19","homepage":"https://s.rankmath.com/home","short_description":"Rank Math SEO is the Best WordPress SEO plugin combines the features of many SEO…","description":"

Rank Math SEO – Best SEO Plugin for WordPress
\n★★★★★

\n

SEO is the most consistent source of traffic for any website. We created Rank Math SEO, a WordPress SEO plugin, to help every website owner get access to the SEO tools they need to improve their SEO and attract more traffic to their website.

\n

Try The Demo

\n\n

Features | Why Choose Rank Math SEO? | Compare | Screenshots | Benefits

\n

SEO might be the best and most consistent source of traffic for one’s website, but it’s not without its quirks. The constant process of optimizing your posts can sometimes take more time than actually writing the content. If you always feel that you can do more on the SEO front for your website but don’t have the time, then Rank Math SEO is what you’re looking for.

\n

Its host of intelligent features brings top SEO capabilities in your hands that were previously out of reach. The smart automation features give you the power of an entire SEO team with just a few clicks. A well thought out design, powerful features, and years of development by the MyThemeShop squad make Rank Math SEO a game-changing SEO plugin that will level the SEO playing field in your favor to help increase traffic.

\n

Rank Math SEO beats all of its competitors, hands down.

\n

See the features which are exclusive to the Rank Math SEO plugin and understand why Rank Math SEO is possibly the Best SEO Plugin for WordPress.

\n
    \n
  • \n

    Setup Wizard (Easy to follow)
    \nRank Math SEO practically configures itself. Rank Math SEO features a step-by-step installation and configuration wizard that sets up SEO for WordPress perfectly.

    \n
  • \n
  • \n

    Google Schema Markup aka Rich Snippets Integrated
    \nConfiguring Google Schema Markup, aka Rich Snippets, is now easy, thanks to Rank Math SEO. With support for 16+ types of Schema Markups, aka Rich Snippets, including the Rating Schema, you’ll be able to optimize your posts in just a few clicks. It also includes the FAQ Schema aka FAQPage Schema Block & the HowTo aka How To Schema Block in the plugin.

    \n
  • \n
  • \n

    Optimize Unlimited Keywords
    \nUnlike other plugins, Rank Math SEO lets you optimize your posts for unlimited focus keywords per post. 5 by default. Increase by adding this filter.

    \n
  • \n
  • \n

    Google Search Console Integration
    \nRank Math SEO saves you a ton of time by integrating with Google Search Console and displaying important information about your website right inside WordPress.

    \n
  • \n
  • \n

    Google Keyword Ranking
    \nWith Rank Math SEO Plugin, you can track your keyword rankings in Google.

    \n
  • \n
  • \n

    Google Analytics Integration
    \nRank Math SEO offers a one-click solution to install Google Analytics script without pasting anything manually anywhere. You can also exclude the Logged-in users.

    \n
  • \n
  • \n

    Optimal Settings Pre-Selected
    \nConfiguring an SEO plugin takes time, and can be confusing. Rank Math SEO saves you the trouble with its optimal default settings, which are ideal for most websites, and if needed, can be changed.

    \n
  • \n
  • \n

    LSI Keyword Tool Integrated
    \nRank Math SEO’s integrated LSI keyword tool gives you multiple keyword variations of your focus keyword, which helps you attract more traffic to your posts. Free account needed.

    \n
  • \n
  • \n

    Add Overlay Icons On Social Images
    \nRank Math SEO makes social thumbnails click magnets by giving you the option of overlaying a GIF or a video icon on the thumbnail.

    \n
  • \n
  • \n

    Advanced SEO Analysis Tool
    \nWith just a single click, Rank Math SEO can perform an SEO audit of your website.

    \n
  • \n
  • \n

    30 Detailed SEO Tests
    \nRank Math SEO is designed to completely supercharge your website’s SEO with its 30 detailed SEO tests. Free account needed.

    \n
  • \n
  • \n

    Module Based System
    \nRank Math SEO has been designed with a module-based system, each of which can be enabled or disabled as per your needs, giving you extra speed and control.

    \n
  • \n
  • \n

    Smart Redirection Manager
    \nRank Math SEO’s built-in smart redirection manager will help you create, manage, delete, enable, or disable redirects at scale.

    \n
  • \n
  • \n

    Local Business SEO
    \nRank Math SEO is designed to be used by Global websites and local websites alike. With its local SEO features, local sites can stand out in the search engine results like Google’s and attract more traffic.

    \n
  • \n
  • \n

    SEO Optimized Breadcrumbs
    \nRank Math SEO can display SEO optimized Breadcrumbs on all websites, even if the theme doesn’t support Schema.org coding.

    \n
  • \n
  • \n

    404 Monitor
    \nRank Math SEO has a built-in 404 error monitor that helps you find and resolve 404 errors for a better user experience.

    \n
  • \n
  • \n

    Deep Content Analysis Tests
    \nOn-Page SEO is no longer a mystery with Rank Math SEO’s deep content analysis and precise SEO recommendations.

    \n
  • \n
  • \n

    Internal Linking Suggestions
    \nRank Math SEO intelligently suggests other posts from your website for internal linking from your current posts, improving the chances of ranking higher in the SERPs.

    \n
  • \n
  • \n

    Role Manager
    \nEven if you have multiple employees manage your website, you can precisely control what each of them has to access to in Rank Math SEO with its role manager.

    \n
  • \n
  • \n

    Multisite Ready
    \nWhether you run a single WordPress website or an entire network of sites – we are ready for you. Rank Math SEO fully supports the WordPress Multiuser project (WPMU).

    \n
  • \n
  • \n

    and has lightweight Code compared to slow-loading in other SEO plugins.
    \nEven with significantly more features than other plugins, Rank Math SEO loads amazingly fast and keeps your website fast always.

    \n
  • \n
\n

Why is Rank Math SEO such a game-changer?

\n
    \n
  • \n

    Auto Configuration — All you have to do is set a few options, and Rank Math SEO will configure itself perfectly for your website.

    \n
  • \n
  • \n

    Super Fast SEO Plugin — Even after packing so many features, Rank Math SEO has a negligible load on your server, thus making it one of the fastest SEO plugins for WordPress.

    \n
  • \n
  • \n

    Automatic Keyword Suggestions from Google — Get keyword suggestions from Google as you start typing letters in the focus keyword field of Rank Math SEO.

    \n
  • \n
  • \n

    New SEO Analyzer — Rank Math SEO’s built-in SEO analysis will give you SEO recommendations that you’d normally spend hundreds of dollars to get.

    \n
  • \n
  • \n

    Elementor SEO – Deep integration with the Elementor Page builder. Now, you don’t need to go back and forth between tabs to configure your page’s SEO. Everything related to SEO for Elementor can be configured in the visual editor.

    \n
  • \n
  • \n

    Divi SEO – One of its kind integration with the Divi Page Builder and theme. Handle everything related to SEO from the page editor screen without jumping back to the default editor. This helps you optimize your website in real-time for SEO.

    \n
  • \n
  • \n

    Page Builder SEO – The Rank Math SEO plugin’s content analysis works perfectly with popular page builders and themes like Oxygen Builder, WPBakery, Avada, Astra, Kadence, Themify, Beaver Builder, Page Builder Framework, Schema theme, Flothemes, OceanWP, etc.

    \n
  • \n
  • \n

    Optimize UNLIMITED Keywords At Once — You can optimize your post for up to 5 different keywords by default with the Rank Math SEO plugin and can use a filter to optimize for unlimited keywords.

    \n
  • \n
  • \n

    Image SEO – With Rank Math SEO’s perfect solution to add ALT & Title tags on the fly, to optimize images, showing inside the content, and that too for FREE, there is no reason to choose any other SEO solution that does not provide all the essential SEO features.

    \n
  • \n
  • \n

    Web Stories SEO – Make any Story created with the Google’s Web Stories plugin SEO-Ready. Automatically adds AMP-friendly Schema markup and Meta tags.

    \n
  • \n
  • \n

    WooCommerce SEO – Optimizing your store products is easier with Rank Math. SEO Meta tags and Schema are automatically added but can be customized with total control as well. Rank Math SEO has the most advanced SEO for WooCommerce.

    \n
  • \n
  • \n

    Google AMP SEO – Accelerated Mobile Pages need to be prepared for search engines. What better way to do that than letting Rank Math SEO use your regular SEO details and optimizing AMPs based on that data?

    \n
  • \n
  • \n

    bbPress SEO – User-generated content in bbPress is properly optimized with Rank Math handling all the important SEO aspects. Q&A Schema is added to bbPress topics along with other essential meta tags.

    \n
  • \n
  • \n

    BuddyPress SEO – As with bbPress, SEO for BuddyPress content is done automatically done using Rank Math. You get all the options you need to get higher rankings with your user-generated content.

    \n
  • \n
  • \n

    Quick Edit SEO Details – Go through a lot of posts/pages quickly by ensuring they are optimized for search engines. Quickly edit multiple SEO fields at once using Rank Math SEO.

    \n
  • \n
  • \n

    Instant Indexing for Bing – Get your content instantly indexed by Bing. Enter a few key details and you are all set and ready to go.

    \n
  • \n
  • \n

    Instant Indexing for Google – Instantly getting indexed by Google used to be reserved to huge brands and large websites. Not anymore. Just about anyone can take advantage of Google’s Instant Indexing feature using Rank Math SEO.

    \n
  • \n
  • \n

    Version Control – Rollback or try beta versions. Updating and downgrading your plugins is now a matter of few clicks. Automatically update to the latest versions or try out the latest beta builds.

    \n
  • \n
  • \n

    Translation Plugins Support — Rank Math SEO works flawlessly with the top translations plugins like WPML, TranslatePress, Weglot, Polylang (not entirely compatible yet), etc., making it a perfect companion.

    \n
  • \n
  • \n

    XML Sitemap – The Rank Math SEO plugin comes with a fast-loading Sitemap feature that works with different post types, including the custom ones, and provides deep controlling. One can also generate a Locations KML file via filter for Local Sitemap, & a WooCommerce Sitemap.

    \n
  • \n
  • \n

    1-Click Import From Yoast — With a single click of your mouse, Rank Math SEO can import all your settings from Yoast SEO & Yoast SEO Premium to itself. The transfer is instant, and you don’t lose any SERP rankings as a result.

    \n
  • \n
  • \n

    1-Click Import From AIO SEO — Rank Math SEO can also import all your settings from AIO SEO & All in One SEO Pack Pro in a single click. The transfer is instant, and you don’t lose any SERP rankings as a result.

    \n
  • \n
  • \n

    1-Click Import From All In One Schema Rich Snippets — Rank Math SEO can also import all of AIO’s Rich Snippet & Schema Pro settings in a few clicks, which help preserve your rich rankings when moving to Rank Math SEO.

    \n
  • \n
  • \n

    1-Click Import From SEOPress SEO — With a single click of your mouse, Rank Math SEO can import all your settings from SEOPress & SEOPress Pro SEO plugin to itself. The transfer is instant, and you don’t lose any SERP rankings as a result.

    \n
  • \n
  • \n

    1-Click Import From Redirection — Moving all your redirects shouldn’t be a hassle. That’s why we have made importing redirections from the popular Redirection plugin as simple as clicking a button.

    \n
  • \n
  • \n

    Google Keyword Suggestion — When deciding on focus keywords, Rank Math SEO can help you discover more keywords by pulling in automatic keyword suggestions from Google.

    \n
  • \n
\n

Who Can Benefit From Rank Math SEO?

\n

Rank Math SEO Plugin is perfect for:

\n

✔ Bloggers
\n✔ eCommerce Store Owners
\n✔ Niche Sites
\n✔ Businesses
\n✔ Local Businesses
\n✔ Startups
\n✔ The Real Estate
\n✔ Artists & Photographers
\n✔ The Solution Offerer
\n✔ Directories
\n✔ Vloggers (Video Bloggers)
\n✔ Or any WordPress Website

\n

Take a sneak peek into Rank Math SEO’s features

\n

Detailed Setup Tutorial

\n\n

List of Best Rank Math SEO Features

\n
    \n
  • Clean, & Simple User Interface
  • \n
  • Optimal Settings Pre-Selected
  • \n
  • Simple Setup Wizard\n
      \n
    • Compatibility Check
    • \n
    \n
  • \n
  • Auto Canonical URLs
  • \n
  • LSI Keyword Tool Integrated
  • \n
  • Google Search Console Integration
  • \n
  • Google Keyword Ranking
  • \n
  • Import Other Plugin Settings\n
      \n
    • 1 Click Import From Yoast SEO Plugin
    • \n
    • 1 Click Import From AIO SEO
    • \n
    • 1 Click Import From SEOPress & SEOPress Pro
    • \n
    • 1 Click Import From All In One Schema Rich Snippets & Schema Pro
    • \n
    • 1 Click Import From Redirection Plugin
    • \n
    \n
  • \n
  • Role Manager
  • \n
  • ACF Support
  • \n
  • AMP Ready
  • \n
  • bbPress & BuddyPress Modules
  • \n
  • Google Schema Markup Integrated\n
      \n
    • Article Rich Snippet
    • \n
    • Review Rich Snippet
    • \n
    • Book Rich Snippet
    • \n
    • Course Rich Snippet
    • \n
    • Event Rich Snippet
    • \n
    • Job Posting Rich Snippet
    • \n
    • Local Business Rich Snippet
    • \n
    • 193 Local Business Types
    • \n
    • Music Rich Snippet
    • \n
    • Person Rich Snippet
    • \n
    • Product Rich Snippet
    • \n
    • Recipe Rich Snippet
    • \n
    • Restaurant Rich Snippet
    • \n
    • Service Rich Snippet
    • \n
    • Software Application Rich Snippet
    • \n
    • Video Rich Snippet
    • \n
    • Author Stay Rating
    • \n
    \n
  • \n
  • Social Media Optimization\n
      \n
    • Add Overlay Icons On Social Images
    • \n
    • Default OpenGraph Thumbnail
    • \n
    • Auto Facebook Open Graph
    • \n
    • Facebook Authorship
    • \n
    • Facebook Open Graph for Homepage
    • \n
    • Automatic Twitter Meta Cards
    • \n
    • Twitter Card for Homepage
    • \n
    • Default Twitter Card Type
    • \n
    • Social Previews
    • \n
    \n
  • \n
  • Add Knowledge Graph\n
      \n
    • Represent site as a Person
    • \n
    • Represent site as a Company
    • \n
    • Set a Site Logo
    • \n
    \n
  • \n
  • Advanced SEO Analysis Tool\n
      \n
    • 30 Detailed SEO Tests
    • \n
    • SEO Analysis Score
    • \n
    \n
  • \n
  • Automated Image SEO
  • \n
  • Powerful Post Optimization\n
      \n
    • Add SEO Meta Box to all post types
    • \n
    • Bulk Edit Titles & Descriptions
    • \n
    • Post Preview on Google
    • \n
    • Content Analysis
    • \n
    • Control SEO For Single Pages
    • \n
    • Control The Title
    • \n
    • Control Meta Description
    • \n
    • Auto Add Additional Meta Data
    • \n
    • Control ROBOTS Meta
    • \n
    • Choose a Primary Category
    • \n
    \n
  • \n
  • Single Post/page Optimization\n
      \n
    • Focus Keyword
    • \n
    • Google Keyword Suggestion
    • \n
    • Optimize UNLIMITED Keywords (5 by default)
    • \n
    • Choose Pillar Posts & Pages
    • \n
    • Internal Linking Suggestions
    • \n
    • Capitalize Titles
    • \n
    • SEO Failed Tests
    • \n
    • SEO Warnings
    • \n
    \n
  • \n
  • XML Sitemap (New!)
  • \n
  • Module Based System
  • \n
  • Choose Any Separator Character
  • \n
  • Modify Global Meta
  • \n
  • Search Engine Verification Tools\n
      \n
    • Bing Site Verification
    • \n
    • Baidu Site Verification
    • \n
    • Alexa Site Verification
    • \n
    • Yandex Site Verification
    • \n
    • Google Site Verification
    • \n
    • Pinterest Site Verification
    • \n
    • Norton Safe Web Site Verification
    • \n
    \n
  • \n
  • Advanced Redirection Manager\n
      \n
    • Smart & Automatic Post Redirects
    • \n
    • 301 Redirection Type
    • \n
    • 302 Redirection Type
    • \n
    • 307 Redirection Type
    • \n
    • 410 Redirection Type
    • \n
    • 451 Redirection Type
    • \n
    • Support for REGEX
    • \n
    • Debug Redirections
    • \n
    \n
  • \n
  • Simple 404 Monitor\n
      \n
    • Advanced 404 Monitor
    • \n
    \n
  • \n
  • Advanced SEO Breadcrumbs\n
      \n
    • Auto Show SEO Breadcrumbs
    • \n
    \n
  • \n
  • Advanced Link Options\n
      \n
    • Nofollow All External Image Links
    • \n
    • Nofollow All External Links
    • \n
    • Open External Links in New Tab/Window
    • \n
    • Redirect Attachments to Parent
    • \n
    • Strip Category Base
    • \n
    \n
  • \n
  • Remove Stopwords from Permalinks
  • \n
  • Ping Search Engines
  • \n
  • Local SEO Optimization\n
      \n
    • Contact Info Shortcode
    • \n
    \n
  • \n
  • Deep Support For WooCommerce SEO
  • \n
  • Compatible for EDD SEO (Easy Digital Downloads SEO)
  • \n
  • Only 30k Lines of Code\n
      \n
    • PSR-4 Coding Standards (wherever possible)
    • \n
    \n
  • \n
  • Optimize Different Archives\n
      \n
    • Optimize Author Archive Pages
    • \n
    • Optimize Date Archive Pages
    • \n
    • Optimize Archive Pages
    • \n
    \n
  • \n
  • .htaccess Editor
  • \n
  • Robots.txt Editor
  • \n
  • Import/Export Settings
  • \n
  • Import/Export Redirections
  • \n
  • Add Content Before the RSS Feed
  • \n
  • Add Content After the RSS Feed
  • \n
  • Detailed Documentation\n
      \n
    • Contextual Help
    • \n
    \n
  • \n
\n

BIG Publications are Raving About Rank Math SEO

\n

Rank Math SEO Reviews

\n\n\n

Rank Math SEO Review – Why I Ditched Yoast For Rank Math SEO

\n

Rank Math SEO on Product Hunt

\n

Rank Math SEO Plugin Review from an SEO Consultant

\n

and many more

\n

Check RANK MATH PRO WHICH MAKES SEO EASIER & FASTER

\n\n

FREE VS PRO COMPARISON

\n

UNIQUE FEATURES OF RANK MATH PRO

\n

Google Analytics & Search Console Integration (The only SEO plugin that provides it)
\n✔ Integrated Google Analytics, AdSense & Search Console Data
\n✔ Analyze SEO Performance of Each Post & Page
\n✔ See Top Winning/Losing Posts & Keywords
\n✔ Keep Track of Position History
\n✔ Rank Tracker for Important Keywords

\n

Schema aka Structured Data aka Rich Snippets. The BEST Schema Generator Available Online
\n✔ 20+ Pre-defined Schema types (more than any other plugin) –
\n✔ Import Schema from Other Websites
\n✔ Advanced Schema Builder [Advanced SEOs can use this to create any complex Schema Markup)
\n✔ Schema Templates for Automation
\n✔ Conditional Schema Markup
\n✔ Inbuilt Schema Code Preview and Validation
\n✔ Multiple Location Schema On Any Page (using the Shortcode)

\n

Automation At Its BEST
\n✔ Automated Image SEO
\n✔ Advanced Filtering for Images [https://i.rankmath.com/zAUHHP]
\n✔ Watermark Your images
\n✔ Advanced Post filtering
\n✔ Bulk Actions [index, noindex, redirect, etc.]
\n✔ Quick Edit SEO Details
\n✔ Bulk Import SEO Meta Details Using CSV file
\n✔ Auto Detect Videos and Generate Schema Markup for Them
\n✔ Auto Fetch Thumbnail, Duration of YouTube & Vimeo Videos
\n✔ Automatically Flush Facebook Thumbnails
\n✔ Open External Links in New Tabs
\n✔ Nofollow External Links
\n✔ Noindex Paginated, Archive, Search Result Pages
\n✔ Instant Indexing for Bing [Also Google using our Instant Indexing Plugin]

\n

WooCommerce SEO
\n✔ Automatic Schema for WooCommerce Products
\n✔ Advanced Open Graph Tags for WooCommerce Products
\n✔ Automatic NoIndex Hidden Products
\n✔ Remove WooCommerce Product and Category Base
\n✔ Add Custom Brands to Products
\n✔ Add Global Identifier Like GTIN/MPN – Even to Variations

\n

Workflow Improvements
\n✔ Internal Role Manager
\n✔ Inbuilt Google Trends Insights
\n✔ Site Audit with 29 Unique Tests
\n✔ Import Redirections Using CSV File
\n✔ Categorize Redirections for Grouping
\n✔ One-Click Redirection for 404s
\n✔ Monitor Search Performance of Entire Portfolio
\n✔ Easy and Advanced Mode

\n

Miscellaneous
\n✔ Supports bbPress and BuddyPress SEO
\n✔ Version Control – Rollback or Try Beta Versions

\n

MANY MORE FEATURES
\n✔ PREMIUM 24x7x365 Dedicated Support Managers
\n✔ MOST COMPETITIVE PRICING EVER!

\n

CHEK ALL THE PREMIUM FEATURES AND PRICING HERE

\n

CONNECT WITH THE TEAM AND SEO EXPERTS

\n

JOIN FACEBOOK GROUP COMMUNITY: The purpose of this Facebook group is to have a collective place where the community can help each other, and we can get some feedback to improve Rank Math SEO as well. Joining the group is also a great way to connect with like-minded people and share your SEO experience.

\n

Branding Guideline

\n

Rank Math SEO® is a registered trademark. Please use the following format when mentioning the Rank Math SEO plugin anywhere.
\n* Rank Math SEO [correct]
\n* Rank Math SEO [incorrect]
\n* Rank Math SEO [incorrect]
\n* Rank Math SEO [incorrect]
\n* RankMath [incorrect]
\n* Rankmath [incorrect]
\n* rankmath [incorrect]
\n* rankMath [incorrect]

\n

Getting Started:

\n

1. How to Setup Rank Math SEO: Once you install Rank Math SEO for the first time, you will be greeted with the Setup Wizard, which is discussed in detail here.

\n

2. Facebook Group: In this group, you will find the team of Rank Math SEO plugin fairly active and ready to answer your SEO related queries.

\n

3. User Documentation: Although Rank Math SEO is already easy to set up, we’ve put together tutorials, guides, and some knowledge bases to help you set up and get started with Rank Math SEO.

\n

4. Contribute (Sharing is caring): If you are one of those caring hearts that want to help, go to our Rank Math SEO’s GitHub Repository and see how you can contribute to the SEO community. You can also add a new language via translate.wordpress.org.

\n

5. Fixing Common Errors: Sometimes, avoidable or common issues can get you stuck. We’ve created a common guide where we discuss all the common issues and how to fix them.

\n

6. Support Ticket Forum: Our dedicated forum is where you can get support for any issues that you face with Rank Math SEO. In the forum, we’ll also try to answer some SEO queries. User experience is important to us, and our aim is to answer all the queries on the forum in a timely manner.

\n

7. Frequently Asked Questions: Here, we’ve answered the most commonly asked questions about Rank Math SEO. The questions are related to features, pricing, and others.

\n","download_link":"https://downloads.wordpress.org/plugin/seo-by-rank-math.1.0.71.1.zip","tags":{"google-search-console":"google search console","redirection":"redirection","schema":"schema","seo":"seo","sitemap":"sitemap"},"donate_link":"","icons":{"1x":"https://ps.w.org/seo-by-rank-math/assets/icon.svg?rev=2348086","2x":"https://ps.w.org/seo-by-rank-math/assets/icon-256x256.png?rev=2348086","svg":"https://ps.w.org/seo-by-rank-math/assets/icon.svg?rev=2348086"},"wporg":true},{"name":"Head, Footer and Post Injections","slug":"header-footer","version":"3.2.2","author":"Stefano Lissa","author_profile":"https://profiles.wordpress.org/satollo","requires":"4.0","tested":"5.7.2","requires_php":"5.6","rating":98,"ratings":{"1":3,"2":2,"3":4,"4":13,"5":620},"num_ratings":642,"support_threads":1,"support_threads_resolved":0,"active_installs":300000,"downloaded":2774752,"last_updated":"2021-03-17 1:26pm GMT","added":"2008-04-07","homepage":"https://www.satollo.net/plugins/header-footer","short_description":"Header and Footer plugin let you to add html code to the head and footer sections of your blog... and more!","description":"

About WordPress SEO and Facebook Open Graph: I was very unpleased by Yoast invitation to
\nremove my plugin, and it’s not the case.
\nRead more here.

\n

Head and Footer Codes

\n

Why you have to install 10 plugins to add Google Analytics, Facebook Pixel, custom
\ntracking code, Google DFP code, Google Webmaster/Alexa/Bing/Tradedoubler verification code and so on…

\n

With Header and Footer plugin you can just copy the code those services give you
\nin a centralized point to manage them all. And theme independent: you can change your theme
\nwithout loosing the code injected!

\n

Injection points and features

\n
    \n
  • in the page section where most if the codes are usually added
  • \n
  • just after the tag as required by some JavaScript SDK (like Facebook)
  • \n
  • in the page footer (just before the tag)
  • \n
  • recognize and execute PHP code to add logic to your injections
  • \n
  • distinct desktop and mobile injections
  • \n
\n

AMP

\n

A new AMP dedicated section compatible with AMP plugin lets you to inject specific codes in
\nAMP pages. Should be ok even with other AMP plugins.

\n

Post Top and Bottom Codes

\n

Do you need to inject a banner over the post content or after it? No problem. With Header and
\nFooter you can:

\n
    \n
  • Add codes on top, bottom and in the middle of posts and pages
  • \n
  • Differentiate between mobile and desktop (you don’t display the same ad format on both, true?)
  • \n
  • Separate post and page configuration
  • \n
  • Native PHP code enabled
  • \n
  • Shortcodes enabled
  • \n
\n

Special Injections

\n
    \n
  • Just after the opening BODY tag
  • \n
  • In the middle of post content (using configurable rules)
  • \n
  • Everywhere on template (using placeholders)
  • \n
\n

bbPress

\n

The specific bbPress injections are going to be removed. Switch to my
\nAds for bbPress, which is more flexible and complete.

\n

Limits

\n

This plugin cannot change the menu or the footer layout, those features must be covered by your theme!

\n

Official page: Header and Footer.

\n

Other plugins by Stefano Lissa:

\n\n

Translation

\n

You can contribute to translate this plugin in your language on WordPress Translate

\n

Privacy and GDPR

\n

This plugin does not collect or process any personal user data.

\n","download_link":"https://downloads.wordpress.org/plugin/header-footer.3.2.2.zip","tags":{"blog":"blog","footer":"footer","header":"header","page":"page","single":"single"},"donate_link":"http://www.satollo.net/donations","icons":{"1x":"https://ps.w.org/header-footer/assets/icon-256x256.png?rev=1064219","2x":"https://ps.w.org/header-footer/assets/icon-256x256.png?rev=1064219"},"wporg":true},{"name":"WP Rocket","slug":"wp-rocket","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://wp-rocket.me/","short_description":"

Powerful caching to speed up your WordPress website in a few clicks. No coding required.

\n","description":"\n\n\n

Powerful caching to speed up your WordPress website in a few clicks. No coding required.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2020/06/WP-Rocket-285x160.png","2x":"https://amp-wp.org/wp-content/uploads/2020/06/WP-Rocket-372x209.png","svg":""},"wporg":false},{"name":"Statify","slug":"statify","version":"1.8.3","author":"pluginkollektiv","author_profile":"https://profiles.wordpress.org/pluginkollektiv","requires":"4.7","tested":"5.8","requires_php":"5.2","rating":94,"ratings":{"1":2,"2":0,"3":0,"4":3,"5":33},"num_ratings":38,"support_threads":3,"support_threads_resolved":1,"active_installs":200000,"downloaded":1497393,"last_updated":"2021-07-17 8:46am GMT","added":"2011-03-16","homepage":"https://statify.pluginkollektiv.org/","short_description":"Visitor statistics for WordPress with focus on data protection, transparency and clarity. Perfect as a widget in your WordPress Dashboard.","description":"

Statify provides a straightforward and compact access to the number of site views. It is privacy-friendly as it uses neither cookies nor a third party.

\n

An interactive chart is followed by lists of the most common reference sources and target pages. The period of statistics and length of lists can be set directly in the dashboard widget.

\n

Data Privacy

\n

In direct comparison to statistics services such as Google Analytics, WordPress.com Stats and Matomo (Piwik) Statify doesn’t process and store personal data as e.g. IP addresses – Statify counts site views, not visitors.

\n

Absolute privacy compliance coupled with transparent procedures: A locally in WordPress created database table consists of only four fields (ID, date, source, target) and can be viewed at any time, cleaned up and cleared by the administrator.

\n

Due to this tracking approach, Statify is 100% compliant with GDPR and serves as an lightweight alternative to other tracking services.

\n

Display of the widget

\n

The plugin configuration can be changed directly in the Statify Widget on the dashboard by clicking the Configure link.

\n

The amount of links shown in the Statify Widget can be set as well as the option to only count views from today. Of course, older entries are not deleted when changing this setting.

\n

The statistics for the dashboard widget are cached for four minutes.

\n

Period of data saving

\n

Statify stores the data only for a limited period (default: two weeks), longer intervals can be selected as option in the widget. Data which is older than the selected period is deleted by a daily cron job.

\n

An increase in the database volume can be expected because all statistic values are collected and managed in the local WordPress database (especially if you increase the period of data saving).

\n

JavaScript tracking for caching compatibility

\n

For compatibility with caching plugins like Cachify Statify offers an optional switchable tracking via JavaScript. This function allows reliable count of cached blog pages.

\n

For this to work correctly, the active theme has to call wp_footer(), typically in a file named footer.php.

\n

Skip tracking for spam referrers

\n

The comment blacklist can be enabled to skip tracking for views with a referrer URL listed in comment blacklist, i. e. which considered as spam.

\n

Support

\n

If you’ve problems or think you’ve found a bug (e.g. you’re experiencing unexpected behavior), please post at the support forums.

\n

Contribute

\n
    \n
  • Active development of this plugin is handled on GitHub.
  • \n
  • Pull requests for documented bugs are highly appreciated.
  • \n
  • If you want to help us translate this plugin you can do so on WordPress Translate.
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/statify.1.8.3.zip","tags":{"analytics":"analytics","dashboard":"dashboard","pageviews":"pageviews","privacy":"privacy","statistics":"statistics"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=TD4AMD2D8EMZW","icons":{"1x":"https://ps.w.org/statify/assets/icon-128x128.png?rev=2355063","2x":"https://ps.w.org/statify/assets/icon-256x256.png?rev=2355063"},"wporg":true},{"name":"LIQUID BLOCKS GALLERY 37+ Free Designs","slug":"liquid-blocks","version":"1.1.1","author":"LIQUID DESIGN Ltd.","author_profile":"https://profiles.wordpress.org/lqd","requires":"5.2","tested":"5.8","requires_php":false,"rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"num_ratings":1,"support_threads":1,"support_threads_resolved":0,"active_installs":4000,"downloaded":20012,"last_updated":"2021-07-22 6:55am GMT","added":"2019-10-18","homepage":"https://lqd.jp/wp/plugin.html","short_description":"If you’re looking to create block page sections that look great give LIQUID BLOCKS a…","description":"

If you’re looking to create block page sections that look great give LIQUID BLOCKS a try.

\n

In Gutenberg Block Template & Design Gallery, Just select your favorite design. Instantly create page section elements. Like a very simple page builder.

\n

You can manage Block Pattern. (WordPress 5.5+)
\nFully compatible with Gutenberg and themes and AMP.
\nlatest information on LIQUID PRESS.

\n

\n

Design Gallery

\n

Carefully selected 37+ Free Designs.
\n* Headlines
\n* Layouts (Q&A, Ranking, Column, Step, Fluid Shape.)
\n* Price list
\n* CTA
\n* Landing pages
\n* Block Patterns (You can register.)

\n

Toolbar

\n

Add to RichText Toolbar.
\n* Mark
\n* Underline
\n* Big
\n* Small

\n","download_link":"https://downloads.wordpress.org/plugin/liquid-blocks.zip","tags":{"block":"block","block-editor":"block-editor","blocks":"blocks","editor":"editor","gutenberg":"gutenberg"},"donate_link":"https://lqd.jp/wp/plugin.html","icons":{"1x":"https://ps.w.org/liquid-blocks/assets/icon-128x128.png?rev=2175390"},"wporg":true},{"name":"Schema","slug":"schema","version":"1.7.9.2","author":"Hesham","author_profile":"https://profiles.wordpress.org/hishaman","requires":"4.0","tested":"5.7.2","requires_php":"5.4","rating":90,"ratings":{"1":15,"2":6,"3":4,"4":8,"5":162},"num_ratings":195,"support_threads":3,"support_threads_resolved":0,"active_installs":60000,"downloaded":1082972,"last_updated":"2021-05-19 2:51pm GMT","added":"2016-05-11","homepage":"https://schema.press","short_description":"Get the next generation of Schema Structured Data to enhance your WordPress site presentation in Google search results.","description":"

Like Schema plugin? Consider leaving a 5 star review.

\n

Super fast, light-weight plugin for adding schema.org structured data markup in recommended JSON-LD format automatically to WordPress sites.

\n

Enhanced Presentation in Search Results By including structured data appropriate to your content, your site can enhance its search results and presentation.

\n

Check out the Plugin Homepage for more info and documentation.

\n

What is Schema markup?

\n

Schema markup is code (semantic vocabulary) that you put on your website to help the search engines return more informative results for users. So, Schema is not just for SEO reasons, it’s also for the benefit of the searcher.

\n

Schema.org Structured Data Demo & Examples

\n\n

Schema Key Features

\n
    \n
  • Easy to use, set it and forget it, with minimal settings.
  • \n
  • [Premium] Support for different schema.org types.
  • \n
  • Enable Schema types at once per post type or post category.
  • \n
  • [Premium] Enable Schema types anywhere you want on your site content.
  • \n
  • [Premium] Customize source data of schema.org properties.
  • \n
  • Valid markup, test it in Google Structured Data Testing Tool.
  • \n
  • Output JSON-LD format, the most recommended by Google.
  • \n
  • Reuse data saved in post meta, which is created by other plugins.
  • \n
  • Extensible, means you can extend its functionality via other plugins, extensions or within your Theme’s functions.php file.
  • \n
\n
\n

Note: some features are Premium. Which means you need Schema Premium to have those features. Get Schema Premium here!

\n
\n

Free vs Premium

\n
\n

See: a Free vs Premium comparison.

\n
\n

Free Plugin Extensions

\n
    \n
  • Schema Review: Extend Schema functionality by adding review and rating Structured Data functionality for Editors and Authors.
  • \n
  • Schema Default Image: Add ability to set a default WordPress Featured image for schema.org markup.
  • \n
\n

Premium Plugin Extensions

\n\n

Supported Google/Schema Markups

\n\n

Supported Schema.org Types

\n\n

Premium Supported Schema.org Types

\n
\n

Schema Premium has additional support for schema.org types, including:

\n
\n\n

Schema.org Markup Examples

\n

View our Live Structured Data Demo examples.

\n

Supported Plugins

\n

Schema plugin integrates and/or play nicely with (not necessarily a full integration):

\n
    \n
  • Yoast SEO
  • \n
  • AMP plugin (Automattic’s Accelerated Mobile Pages)
  • \n
  • Accelerated Mobile Pages – AMP for WP
  • \n
  • WPRichSnippets
  • \n
  • The SEO Framework
  • \n
  • WPBakery Page Builder
  • \n
  • ThirstyAffiliates
  • \n
  • [Premium] WooCommerce: Schema for WooCommerce extension.
  • \n
  • Easy Digital Downloads (EDD)
  • \n
\n

Supported Themes

\n

The plugin should work fine with any well coded WordPress theme, however these themes were tested and works properly with the plugin.

\n
    \n
  • Genesis 2.x
  • \n
  • Thesis 2.x
  • \n
  • Divi
  • \n
\n

Premium support

\n

schema.press team does not always provide active support for the Schema plugin on the WordPress.org forums, as we prioritize our email support. One-on-one email support is available to people who bought Schema Premium only.

\n

Note that the premium Schema Plugin also has several extra features too, including the option to enable more schema.org types, set content location target for markup, and map schema.org properties, so it is well worth your investment!

\n

Developers?

\n

Feel free to fork the project on GitHub and submit your contributions via pull request.

\n","download_link":"https://downloads.wordpress.org/plugin/schema.zip","tags":{"json-ld":"JSON-LD","rich-snippets":"rich snippets","schema":"schema","schema-org":"schema.org","structured-data":"structured data"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=NGVUBT2QXN7YL","icons":{"1x":"https://ps.w.org/schema/assets/icon-128x128.png?rev=1750172","2x":"https://ps.w.org/schema/assets/icon-256x256.png?rev=1750173"},"wporg":true},{"name":"Iframely – rich media embeds for 2000+ publishers","slug":"iframely","version":"0.7.2","author":"Itteco Corp.","author_profile":"https://profiles.wordpress.org/ivanp","requires":"3.5.1","tested":"5.4.6","requires_php":false,"rating":80,"ratings":{"1":2,"2":0,"3":1,"4":0,"5":7},"num_ratings":10,"support_threads":1,"support_threads_resolved":0,"active_installs":3000,"downloaded":97227,"last_updated":"2020-05-22 5:21pm GMT","added":"2013-10-03","homepage":"http://wordpress.org/plugins/iframely/","short_description":"Iframely extends WordPress default rich media embeds and adds support of over 2000 more providers and cards as URL previews for the rest of the Web.","description":"

Iframely extends WordPress default embeds and adds over 2000 more providers and cards as URL previews for the rest of the Web. Provides responsive embed codes, works with AMP.

\n

Just like default WordPress embeds, Iframely will detect URLs in your posts and replace it with responsive embed codes. Supports all usual suspects such as YouTube, Vimeo, Instagram, Facebook, Giphy, GfyCat, Imgur, Google +, GitHub Gists, Storify, SlideShare, Streamable, Vidme, Reddit, Dailymotion, Spotify, Tableau, Prezi, Apester, QZZR, Tidal, MLB. Well over two thousand of providers and keeps growing.

\n

Test your URL here to check if we support it.

\n

Iframely also generates and hosts summary cards as URL previews for general articles. It includes your own site, and Iframely can replace the default embed cards that your publish via WordPress for other sites to use.

\n

API key and paid/free

\n

Powered by Iframely cloud service and requires an account with us. Grab an API key for extended trial at iframely.com, or test the plugin out without an API key.

\n

Before you push the plugin to production, a service subscription is required to avoid any possible disruptions.

\n

We maintain an overwhelming number of integrations and widgets in the background for you, and make sure your sites remains fast and keeps your users happy. This requires a substantial effort on our part, and we won’t be able to provide it without requiring a service subscription.

\n

How to use:

\n

The plugin works the same way the standard oEmbed is supported by WordPress: URL on a separate line.

\n

For example,

\n
Check out this cool video:\n\nhttp://your.url/here\n\nThat was a cool video.\n
\n

Iframely also has its own shortcode [iframely]http://your.url/here[/iframely].

\n

Heads-up:

\n

Iframely does not simply wrap URLs with <iframe src=...> code. That’s not what Iframely is for. We can only match URLs to the known embed codes if publisher offers them for manual copy-paste, or generate a summary card for URL preview if a publisher provides at least a thumnnail image.

\n

To keep default embed providers

\n

By default, Iframely will inject itself to be the first embeds provider in the list, thus intercepting all URLs. It means that the default providers that are later in the list won’t get called and will thus be disabled.

\n

It means Iframely replaces default YouTube, Vimeo, Twitter, other oEmbed plugins that you might have(like JetPack), etc.

\n

Although we should support the same providers and output the same code, just make it responsive and add extra features, you can still disable such behavior and tell Iframely to only process links that otherwise don’t have an embed provider.

\n

Just choose this option in your settings. It will essentially put Iframely to be the last in the list, be “a catcher”, rather then “an interceptor”.

\n

URL editor options

\n

You can fine-tune many aspects of Iframely on your dashboard at iframely.com. This would include some most common settings for popular rich media publishers. Our support team can also fine-tune many other publishers, just for you.

\n

However, you might need a per-post editor for the widgets options. And, Iframely does provide this too. It’s done via URL options editor, and available for higher-tier plans, or during your initial trial period. Make sure to check it out.

\n

AMP support

\n

Yes, Iframely works nicely with AMP WP plugin. It catches all missing embeds and follow your Iframely settings. But you can also opt to have Iframely for all embeds, including default AMP embeds too. For example, Facebook video will be indeed a nice video without user’s text message.

\n","download_link":"https://downloads.wordpress.org/plugin/iframely.zip","tags":{"embed":"embed","embed-code":"embed code","iframely":"iframely","oembed":"oembed","responsive":"responsive"},"donate_link":"","icons":{"default":"https://s.w.org/plugins/geopattern-icon/iframely.svg"},"wporg":true},{"name":"Pym.js Embeds","slug":"pym-shortcode","version":"1.3.2.4","author":"INN Labs","author_profile":"https://profiles.wordpress.org/automattic","requires":"3.0.1","tested":"5.4.6","requires_php":"5.3","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":1,"support_threads_resolved":0,"active_installs":100,"downloaded":2287,"last_updated":"2020-03-26 6:09pm GMT","added":"2016-06-17","homepage":"https://github.com/INN/pym-shortcode","short_description":"A WordPress block and shortcode for embedding iframes that are responsive horizontally and vertically, using…","description":"

Pym.js Embeds provides shortcode and Gutenberg block wrappers for embedding responsive iframes using Pym.js, developed by the NPR Visuals Team. Embedded content resizes vertically to match its container’s width.

\n

AMP compatibility is provided by the official AMP plugin.

\n

Pym.js Resources from NPR

\n

You may also want to look at NPR’s Pym.js resources:

\n\n","download_link":"https://downloads.wordpress.org/plugin/pym-shortcode.1.3.2.4.zip","tags":{"embeds":"Embeds","iframe":"iframe","javascript":"javascript","responsive":"responsive","shortcode":"shortcode"},"donate_link":"https://inn.org/donate","icons":{"1x":"https://ps.w.org/pym-shortcode/assets/icon.svg?rev=1944461","svg":"https://ps.w.org/pym-shortcode/assets/icon.svg?rev=1944461"},"wporg":true},{"name":"PWA","slug":"pwa","version":"0.6.0","author":"PWA Plugin Contributors","author_profile":"https://profiles.wordpress.org/westonruter","requires":"5.5","tested":"5.7.2","requires_php":"5.6","rating":84,"ratings":{"1":3,"2":0,"3":0,"4":0,"5":12},"num_ratings":15,"support_threads":7,"support_threads_resolved":5,"active_installs":40000,"downloaded":291409,"last_updated":"2021-03-09 8:50pm GMT","added":"2018-07-12","homepage":"https://github.com/GoogleChromeLabs/pwa-wp","short_description":"WordPress feature plugin to bring Progressive Web App (PWA) capabilities to Core","description":"

\nProgressive Web Apps are user experiences that have the reach of the web, and are:

\n
    \n
  • Reliable – Load instantly and never show the downasaur, even in uncertain network conditions.
  • \n
  • Fast – Respond quickly to user interactions with silky smooth animations and no janky scrolling.
  • \n
  • Engaging – Feel like a natural app on the device, with an immersive user experience.
  • \n
\n

This new level of quality allows Progressive Web Apps to earn a place on the user’s home screen.\n

\n

Continue reading more about Progressive Web Apps (PWA) from Google.

\n

In general a PWA depends on the following technologies to be available:

\n\n

This plugin serves as a place to implement support for these in WordPress with the intention of being proposed for core merge, piece by piece.

\n

This feature plugin is not intended to obsolete the other plugins and themes which turn WordPress sites into PWAs. Rather, this plugin is intended to provide the PWA building blocks and coordination mechanism for these themes and plugins to not reinvent the wheel and also to not conflict with each other. For example, a theme that implements the app shell model should be able to extend the core service worker while a plugin that provides push notifications should be able to do the same. Themes and plugins no longer should have to each create a service worker on their own, something which is inherently problematic because only one service worker can be active at a time: only one service worker can win. If you are developing a plugin or theme that includes a service worker, consider relying on this PWA plugin, or at least only use the built-in implementation as a fallback for when the PWA plugin is not available.

\n

In versions prior to 0.6, no caching strategies were added by default. The only service worker behavior was to serve an offline template when the client’s connection is down or the site is down, and also to serve an error page when the server returns with 500 Internal Server Error. As of 0.6, there is a new “Offline browsing” toggle on the Reading Settings screen in the admin. It is disabled by default, but when enabled a network-first caching strategy is registered for navigations so that the offline page won’t be shown when accessing previously-accessed pages. The network-first strategy is also used for assets from themes, plugins, and WordPress core. In addition, uploaded images get served with a stale-while-revalidate strategy. For all the details on these changes, see the pull request.

\n

Documentation for the plugin can be found on the GitHub project Wiki.

\n

Development of this plugin is done on GitHub. Pull requests welcome. Please see issues reported there before going to the plugin forum.

\n","download_link":"https://downloads.wordpress.org/plugin/pwa.0.6.0.zip","tags":{"https":"https","progressive-web-apps":"progressive web apps","pwa":"pwa","service-workers":"service-workers.","web-app-manifest":"web app manifest"},"donate_link":"","icons":{"1x":"https://ps.w.org/pwa/assets/icon.svg?rev=1908485","2x":"https://ps.w.org/pwa/assets/icon-256x256.png?rev=1908485","svg":"https://ps.w.org/pwa/assets/icon.svg?rev=1908485"},"wporg":true},{"name":"MC4WP: Mailchimp for WordPress","slug":"mailchimp-for-wp","version":"4.8.6","author":"ibericode","author_profile":"https://profiles.wordpress.org/dvankooten","requires":"4.6","tested":"5.8","requires_php":"5.3","rating":96,"ratings":{"1":35,"2":10,"3":16,"4":35,"5":1277},"num_ratings":1373,"support_threads":47,"support_threads_resolved":44,"active_installs":2000000,"downloaded":35692445,"last_updated":"2021-08-04 7:14am GMT","added":"2013-06-19","homepage":"https://www.mc4wp.com/#utm_source=wp-plugin&utm_medium=mailchimp-for-wp&utm_campaign=plugins-page","short_description":"Mailchimp for WordPress, the #1 unofficial Mailchimp plugin.","description":"

Mailchimp for WordPress

\n

Allowing your visitors to subscribe to your newsletter should be easy. With this plugin, it finally is.

\n

This plugin helps you grow your Mailchimp lists and write better newsletters through various methods. You can create good looking opt-in forms or integrate with any existing form on your site, like your comment, contact or checkout form.

\n\n

Some (but not all) features

\n
    \n
  • \n

    Connect with your Mailchimp account in seconds.

    \n
  • \n
  • \n

    Sign-up forms which are good looking, user-friendly and mobile optimized. You have complete control over the form fields and can send anything you like to Mailchimp.

    \n
  • \n
  • \n

    Seamless integration with the following plugins:

    \n
      \n
    • Default WordPress Comment Form
    • \n
    • Default WordPress Registration Form
    • \n
    • Contact Form 7
    • \n
    • WooCommerce
    • \n
    • Gravity Forms
    • \n
    • Ninja Forms 3
    • \n
    • WPForms
    • \n
    • BuddyPress
    • \n
    • MemberPress
    • \n
    • Events Manager
    • \n
    • Easy Digital Downloads
    • \n
    • Give
    • \n
    • UltimateMember
    • \n
    \n
  • \n
  • \n

    A multitude of available add-on plugins and integrations:

    \n\n
  • \n
  • \n

    Well documented. Our knowledge base is updated daily.

    \n
  • \n
  • \n

    Developer friendly. For inspiration, check out our repository of example code snippets.

    \n
  • \n
\n
\n

Become a Premium user

\n

Mailchimp for WordPress has a Premium add-on which comes with several additional benefits.

\n
    \n
  • Multiple forms
  • \n
  • Advanced e-commerce integration for WooCommerce
  • \n
  • Email notifications
  • \n
  • An easy way to style your forms
  • \n
  • Detailed reports & statistics
  • \n
\n

View more Premium features

\n
\n

What is Mailchimp?

\n

Mailchimp is a newsletter service that allows you to send out email campaigns to a list of email subscribers. It is free for lists up to 2000 subscribers, which is why it is the newsletter-service of choice for thousands of businesses.

\n

This plugin allows you to tightly integrate your WordPress site with your Mailchimp account.

\n

If you are not yet using Mailchimp, creating an account is 100% free and only takes you about 30 seconds.

\n

Support

\n

Use the WordPress.org plugin forums for community support where we try to help all of our users. If you found a bug, please create an issue on Github where we can act upon them more efficiently.

\n

If you’re a premium user, please use the email address inside the plugin for support as that will guarantee a faster response time.

\n

Please take a look at the Mailchimp for WordPress knowledge base as well.

\n

Add-on plugins

\n

There are several add-on plugins available, which help you get even more out of your site.

\n

Translations

\n

You can help translate Mailchimp for WordPress into your language using your WordPress.org account.

\n

Development

\n

This plugin is being developed on GitHub. If you want to collaborate, please look at ibericode/mailchimp-for-wordpress.

\n

Customizing the plugin

\n

The plugin provides various filter & action hooks that allow you to modify or extend default behavior. We’re also maintaining a collection of sample code snippets.

\n","download_link":"https://downloads.wordpress.org/plugin/mailchimp-for-wp.4.8.6.zip","tags":{"email":"email","mailchimp":"mailchimp","marketing":"marketing","mc4wp":"mc4wp","newsletter":"newsletter"},"donate_link":"https://www.mc4wp.com/#utm_source=wp-plugin-repo&utm_medium=mailchimp-for-wp&utm_campaign=donate-link","icons":{"1x":"https://ps.w.org/mailchimp-for-wp/assets/icon-128x128.png?rev=1224577","2x":"https://ps.w.org/mailchimp-for-wp/assets/icon-256x256.png?rev=1224577"},"wporg":true},{"name":"Site Kit by Google","slug":"google-site-kit","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://sitekit.withgoogle.com/","short_description":"

Site Kit is the official WordPress plugin from Google for insights about how people find and use your site. Site Kit is the one-stop solution to deploy, manage, and get insights from critical Google tools to make the site successful on the web. It provides authoritative, up-to-date insights from multiple Google products directly on the

\n

Read More

\n","description":"\n\n\n

Site Kit is the official WordPress plugin from Google for insights about how people find and use your site. Site Kit is the one-stop solution to deploy, manage, and get insights from critical Google tools to make the site successful on the web. It provides authoritative, up-to-date insights from multiple Google products directly on the WordPress dashboard for easy access, all for free.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2019/12/site-kit-by-google-logo-285x160.png","2x":"https://amp-wp.org/wp-content/uploads/2019/12/site-kit-by-google-logo-372x209.png","svg":""},"wporg":false},{"name":"Newspack Blocks","slug":"newspack-blocks","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://github.com/Automattic/newspack-blocks","short_description":"

A collection of useful and easy to use Gutenberg based blocks, developed primarily for the Newspack project.

\n","description":"\n\n\n

A collection of useful and easy to use Gutenberg based blocks, developed primarily for the Newspack project.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2019/11/newspack_blocks-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2019/11/newspack_blocks-372x209.jpg","svg":""},"wporg":false},{"name":"Advanced Ads – Ad Manager & AdSense","slug":"advanced-ads","version":"1.27.0","author":"Thomas Maier, Advanced Ads GmbH","author_profile":"https://profiles.wordpress.org/webzunft","requires":"4.9","tested":"5.8","requires_php":"5.6","rating":98,"ratings":{"1":17,"2":1,"3":9,"4":21,"5":1181},"num_ratings":1229,"support_threads":69,"support_threads_resolved":62,"active_installs":100000,"downloaded":5146982,"last_updated":"2021-08-24 9:21am GMT","added":"2014-06-23","homepage":"https://wpadvancedads.com","short_description":"Manage and optimize all ad types. Support for Google AdSense Auto ads, Amazon, image banners,…","description":"

Are you looking for a simple ad manager plugin? These are the top arguments to use Advanced Ads:

\n
    \n
  • approved in publishing and ad optimization since 2009
  • \n
  • works with all ad types and networks, including Google AdSense, Google Ad Manager (formerly Google DoubleClick for Publishers, DFP), Amazon ads, or media.net ads
  • \n
  • most features to test and optimize ads
  • \n
  • unlimited ad units
  • \n
  • ads.txt support
  • \n
  • dedicated ad block for the block editor
  • \n
  • Google AdSense Partner, who implements all technical changes early and in 100% compliance with the Google AdSense policies
  • \n
  • the only advertising solution with Ad Health integration and Google AdSense violation checks
  • \n
  • best rated free support
  • \n
\n

This is what our users are saying about Advanced Ads:

\n
\n

We use this plugin to deliver rotating ads on a community news site, and it’s great. Both feature-rich and reliable, your imagination is the limit when it comes to the product you want to create for your users. We’ve delivered over a million ad impressions since we launched less than a year ago, using a combination of sidebar, top, sticky and in-content placements — both HTML5 and images. Advanced Ads makes it easy for our small team to deliver a good experience to our users and our advertisers.
\n mytown304 on wp.org

\n
\n

Would you like to know if there is a certain feature, what the optimized setup would be, or how to implement your client’s demands? Just open a thread in the forum!

\n

Advanced Ads allowed us to grow from 0 to 100 MM monthly ad impressions. Benefit from our experience as a publisher and monetize your website today!

\n

Full Feature List.

\n

ad management

\n
    \n
  • create and display unlimited ad units
  • \n
  • rotate ads
  • \n
  • schedule ads and set start time and expiration date
  • \n
  • target ads by content and user groups
  • \n
  • inject ads into posts and pages automatically without coding
  • \n
\n

ad types

\n

choose between different ad types that enable you to:

\n
    \n
  • insert ads and banners from all ad and affiliate networks (e.g., Google AdSense, Amazon, BuySellAds, Google Ad Manager (formerly Google DoubleClick for Publishers, DFP), Ezoic, media.net, Booking.com, Tradedoubler, Awin, Getyourguide, The Moneytizer, Infolinks…)
  • \n
  • dedicated support for all types of Google AdSense ads, including text and display ads, native ads (In-article, In-feed, matched content), Auto ads, and Auto ads for AMP
  • \n
  • display images and image banners
  • \n
  • create content-rich ads with the WordPress TinyMCE editor
  • \n
  • insert contextual Amazon Native Shopping Ads
  • \n
  • inject HTML, CSS, Javascript or PHP code
  • \n
  • use shortcodes within ads (to also deliver advertisements from another ad plugin like Ad Inserter, AdRotate, Quick AdSense, WP Bannerize, or the Google AdSense Plugin WP QUADS)
  • \n
\n

display ads for WP

\n
    \n
  • auto-inject ads via placements
  • \n
  • use functions to display ads in template files
  • \n
  • use shortcodes to place ads manually in post content
  • \n
  • show ads in the sidebar and in widgets
  • \n
  • disable all ads on specific pages
  • \n
  • display multiple ads (ad blocks)
  • \n
  • display a customizable ad label, e.g., “Advertisements” above each banner ad
  • \n
\n

display conditions

\n

show ads based on conditions like:

\n
    \n
  • individual posts, pages, and other post types
  • \n
  • posts by category, tags, taxonomies, author, and age
  • \n
  • archive pages by category, tags, taxonomies
  • \n
  • special page types like 404, attachment and front page
  • \n
  • hide ads on secondary queries (e.g., posts in sidebars)
  • \n
  • display or hide banners within the post feed
  • \n
  • hide all ads from specific page types, e.g., 404 pages, feed
  • \n
  • hide ads from bots and web crawlers
  • \n
\n

visitor conditions

\n

serve ads by conditions based on the visitor. List of all visitor conditions

\n
    \n
  • display or hide a banner by device: mobile and tablet or desktop
  • \n
  • display or hide a banner by role and for logged-in visitors
  • \n
  • advanced visitor conditions: previously visited URL (referrer), user capability, browser language, browser and device, URL parameters included in Pro
  • \n
  • display ads by geolocation with the Geo Targeting add-on
  • \n
  • display ads by browser width with the Responsive add-on
  • \n
\n
\n

Fantastic plugin and outstanding support
\n I tried at least three other ad plugins for WordPress and ‘Advanced Ads’ is by and far the best one. Last but not least in the support. The first port of call are a number of excellent tutorials. And finally the hands on support. I don’t quite know how he does it but the speed and depth of responses are absolutely amazing.
\n djsawyer on wp.org

\n
\n

ad injection | placements

\n

Placements to insert ads in pre-defined positions in your theme and content. List of all placements

\n
    \n
  • ads after any given paragraph, headline, image, or other HTML element
  • \n
  • ads at the top or bottom of the post content
  • \n
  • ads before closing </head> tag
  • \n
  • ads in the footer
  • \n
  • test placements against each other with Pro (A/B testing)
  • \n
  • many more ad positions with add-ons
  • \n
  • automatic insertion of any kind of code into header or footer, not only advertising
  • \n
\n

mobile devices

\n
    \n
  • display ads on mobile and tablets or desktop only
  • \n
  • display responsive image ads
  • \n
  • ads for specific browser sizes only using Responsive Ads
  • \n
  • inserting ads on AMP pages with Responsive Ads
  • \n
\n

Google AdSense

\n

Amazing features of the most powerful and easy Google AdSense plugin.

\n
    \n
  • unlimited Google AdSense ads banners
  • \n
  • pull ad units directly from your Google AdSense account
  • \n
  • show AdSense revenue in WP Admin
  • \n
  • change settings of your Google AdSense ads directly from your WordPress backend
  • \n
  • supports all Google AdSense ad types, including Google AdSense display ads, native ads like In-feed ads, In-article ads, matched content ads, Google AdSense Auto ads, and Google AdSense Auto ads for AMP
  • \n
  • change type and sizes of AdSense ads without going into your Google AdSense account
  • \n
  • hide Google AdSense advertisements on 404 pages by default (to comply with Google AdSense terms)
  • \n
  • insert Google AdSense code for verification and AdSense Auto Ads
  • \n
  • enable AdSense Auto ads on AMP
  • \n
  • easy Ad Health integration and Google AdSense violation checks
  • \n
  • option to remove the Google AdSense background color
  • \n
  • place Google AdSense In-feed ads using the also free In-feed add-on
  • \n
  • assistant for exact sizes of responsive Google AdSense ads with the Responsive add-on
  • \n
  • convert Google AdSense ads into AMP ads automatically with the Responsive add-on
  • \n
  • ads.txt generated with the correct AdSense information automatically
  • \n
  • works along with Google Site Kit or can replace it if you want to control your ad placements
  • \n
\n

\n

\n

Like j4ckson185, there are thousands of happy AdSense users:

\n
\n

Your app is awesome, congratulations! Google Adsense suggests using your app on its official website, it’s incredible!

\n
\n

ads.txt

\n
    \n
  • generates an ads.txt with custom content
  • \n
  • adds the content for AdSense to the ads.txt automatically
  • \n
\n

\n

\n

ad blocker

\n
    \n
  • basic features to prevent ads from being removed by AdBlock and other ad blockers
  • \n
  • prevent ad blockers from breaking sites where plugin scripts are running
  • \n
  • ad blocking detection: show alternative content to ad block users with Pro and improve the monetization of your website
  • \n
\n

Learn more on the plugin homepage.

\n

Thank you for motivating us with your positive review.

\n

Localizations: Arabic, Chinese, Czech, Danish, Dutch, English, French, German, Hungarian, Italian, Japanese, Norwegian, Polish, Portuguese, Russian, Slovak, Spanish, Turkish, Vietnamese

\n
\n

Add-Ons

\n
    \n
  • all add-ons include priority email support
  • \n
  • Advanced Ads Pro – powerful tools for ad optimizations: cache-busting, more placements, lazy loading, ad blocker module, click fraud protection, and many more
  • \n
  • Tracking – track ad impressions and ad clicks with local methods or Google Analytics
  • \n
  • Responsive Ads – target ads to specific browser sizes and create ads for AMP
  • \n
  • Google Ad Manager Integration – a quick and error-free way to load ad units from your Google Ad Manager (formerly Google DoubleClick for Publishers, DFP) account without touching any ad codes
  • \n
  • Geo Targeting – display ads based on the geo location of the visitor
  • \n
  • Sticky Ads – increase click rates with fixed, sticky, and anchor ads
  • \n
  • Fixed Widget for WordPress – turn sidebar widgets into performant fixed sticky ads
  • \n
  • PopUp and Layer Ads – display ads and other content in layers and popups
  • \n
  • Selling Ads – allows you to sell ads on your website fully automated, including payments and advertiser profiles.
  • \n
  • Ad Slider – create a simple slider from your ads
  • \n
\n
\n

If you have problems with Advanced Ads, please reach out to our support or open a new topic in our forums on wordpress.org
\n.

\n

Integrations

\n

Advanced Ads integrates with plenty of other plugins:

\n\n","download_link":"https://downloads.wordpress.org/plugin/advanced-ads.1.27.0.zip","tags":{"ad-manager":"ad manager","ad-rotation":"ad rotation","ads":"ads","adsense":"adsense","banner":"banner"},"donate_link":"","icons":{"1x":"https://ps.w.org/advanced-ads/assets/icon-128x128.gif?rev=2293174","2x":"https://ps.w.org/advanced-ads/assets/icon-256x256.gif?rev=2293174"},"wporg":true},{"name":"Syntax-highlighting Code Block (with Server-side Rendering)","slug":"syntax-highlighting-code-block","version":"1.3.1","author":"Weston Ruter","author_profile":"https://profiles.wordpress.org/westonruter","requires":"5.5","tested":"5.7.2","requires_php":"5.6","rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":17},"num_ratings":17,"support_threads":1,"support_threads_resolved":1,"active_installs":1000,"downloaded":11959,"last_updated":"2021-03-09 8:51pm GMT","added":"2019-07-30","homepage":"https://github.com/westonruter/syntax-highlighting-code-block","short_description":"Extending the Code block with syntax highlighting rendered on the server, thus being AMP-compatible and…","description":"

This plugin extends the Code block in WordPress core to add syntax highlighting which is rendered on the server. Pre-existing Code blocks on a site are automatically extended to include syntax highlighting. Doing server-side syntax highlighting eliminates the need to enqueue any JavaScript on the frontend (e.g. Highlight.js or Prism.js) and this ensures there is no flash of unhighlighted code (FOUC?). Reducing script on the frontend improves frontend performance and it also allows for the syntax highlighted code to appear properly in AMP pages as rendered by the official AMP plugin (see also ampproject/amp-wp#972) or when JavaScript is turned off in the browser.

\n

In addition to not adding any JavaScript to the frontend, the stylesheets needed for styling the Code block will only be added to the page if there is a Code block present. The stylesheets are added inline when the Code block is rendered, ensuring that they do not block rendering of any content higher in the page. If stylesheets fail to load for any reason, the block simply renders without styling, with one key exception: highlighted lines are wrapped in mark elements so they’ll get highlighted regardless, including in RSS Feeds and posts syndicated in email (as long as the mark element is supported in the client).

\n

This extended Code block uses language auto-detection to add syntax highlighting, but you can override the language in the block’s settings sidebar. (There is currently no syntax highlighting of the Code block in the editor.) The plugin supports all programming languages that highlight.php supports (being a port of highlight.js). The Code block also is extended to support specifying the aforementioned highlighted lines. There is also a checkbox for whether to show line numbers on the frontend (with the numbers being non-selectable). Lastly, given inconsistencies across themes as to whether lines in a Code block should be wrapped, this plugin adds styling to force them to no-wrap by default, with a checkbox to opt-in to wrapping when desired.

\n

For advanced usage, please see the plugin wiki.

\n

This plugin is developed on GitHub. See list of current issues with the plugin. Please feel free to file any additional issues or requests that you may come across. Pull requests are welcome.

\n

Credits

\n

This is a fork of Code Syntax Block by Marcus Kazmierczak (mkaz), which is also available on WordPress.org. Copyright (c) 2018 Marcus Kazmierczak. Licensed under GPL 2.0 or later.

\n

highlight.php is released under the BSD 3-Clause License. Copyright © 2006-2013, Ivan Sagalaev (maniac@softwaremaniacs.org), highlight.js (original author). Copyright © 2013, Geert Bergman (geert@scrivo.nl), highlight.php

\n","download_link":"https://downloads.wordpress.org/plugin/syntax-highlighting-code-block.1.3.1.zip","tags":{"block":"block","code":"code","code-highlighting":"code highlighting","code-syntax":"code syntax","syntax-highlight":"syntax highlight"},"donate_link":"","icons":{"1x":"https://ps.w.org/syntax-highlighting-code-block/assets/icon.svg?rev=2131108","2x":"https://ps.w.org/syntax-highlighting-code-block/assets/icon-256x256.png?rev=2131108","svg":"https://ps.w.org/syntax-highlighting-code-block/assets/icon.svg?rev=2131108"},"wporg":true},{"name":"Contact Form by WPForms – Drag & Drop Form Builder for WordPress","slug":"wpforms-lite","version":"1.6.9","author":"WPForms","author_profile":"https://profiles.wordpress.org/jaredatch","requires":"4.9","tested":"5.8","requires_php":"5.5","rating":98,"ratings":{"1":210,"2":46,"3":54,"4":219,"5":9568},"num_ratings":10097,"support_threads":95,"support_threads_resolved":82,"active_installs":4000000,"downloaded":81459650,"last_updated":"2021-08-26 11:06am GMT","added":"2016-03-14","homepage":"https://wpforms.com","short_description":"The best WordPress contact form plugin. Drag & Drop online form builder that helps you create beautiful contact forms with just a few clicks.","description":"

WordPress Contact Form Builder Plugin

\n

We believe that you shouldn’t have to hire a developer to create a WordPress contact form. That’s why we built WPForms, a drag & drop WordPress form builder that’s EASY and POWERFUL.

\n

WPForms allows you to create beautiful contact forms, feedback form, subscription forms, payment forms, and other types of forms for your site in minutes, not hours!

\n

At WPForms, user experience is our #1 priority. Our pre-built form templates and workflows make WPForms the most beginner friendly contact form plugin in the market.

\n

The WPForms Challenge guides you through creating your first form in under 5 minutes. We walk you through using the form builder all the way to adding a form to a page on your site! WPForms includes integrations for popular page builders like the WordPress Block Editor (Gutenberg), Classic Editor, Elementor, and Divi making the whole process seamless.

\n

WPForms is a 100% mobile responsive contact form solution, so your contact forms will always look great on all devices (mobile, tablet, laptop, and desktop).

\n

WPForms’ contact forms are also highly optimized for web and server performance because we understand the importance of speed when it comes to SEO, marketing, and conversion. We can honestly say that WPForms is one of the fastest WordPress contact form builder plugins in the world.

\n
\n

WPForms Pro
\n This plugin is the lite version of the WPForms Pro plugin that comes with all the contact form features you will ever need including email subscription forms, multi-page contact forms, file uploads, conditional logic, payment integrations, form templates, and tons more. Click here to purchase the best premium WordPress contact form plugin now!

\n
\n

We took the pain out of creating contact forms and made it easy. Here’s why smart business owners, designers, and developers love WPForms, and you will too!

\n

\n

Drag & Drop Contact Form Builder

\n

We were tired of the bloated and buggy contact form builder plugins. That’s why we built WPForms to adapt to your workflow and allow you to create custom contact forms in minutes. By using our easy to use drag and drop online form builder, you can easily add custom form fields, rearrange them, and basically create a complete contact form in 5 minutes or less.

\n

But don’t just take our word. See what one of the WordPress experts are saying:

\n
\n

WPForms is by far the easiest form plugin to use. My clients love WPForms and it’s one of the few plugins they can use without any training. As a developer I appreciate how fast, modern, clean and extensible it is.
\n Bill Erickson – Expert WordPress Consultant

\n
\n

Pre-built Form Templates

\n

Building contact forms in WordPress can be time consuming. Why?

\n

Because every other WordPress contact form builder plugin requires you to build your contact form from scratch. The truth is it’s often not necessary to create a contact form completely from scratch unless you really want to.

\n

Whether you’re looking to create a simple contact form, marketing form, request a quote form, donation form, payment order form, registration form, or a subscription form, we have a form template for you inside our contact form builder.

\n

WPForms comes with pre-built form templates to help you save time. You can add, remove, or re-arrange fields as necessary.

\n

See 100+ Pre-Made WPForms Form Template Demo

\n

Mobile Ready, SEO Friendly and Optimized for Speed

\n

WPForms’ contact forms are 100% responsive and mobile-friendly by default. We also optimized every query on the front-end and the back-end to ensure maximum speed – Yes, WPForms is one of the fastest WordPress contact form plugin.

\n

You can embed your contact form on any page with optimized title and description. With the speed and proper formatting, WPForms is also one of the most SEO friendly contact form plugin.

\n

All the Fields & Features that You Need to Succeed

\n

From star ratings to file uploads to multi-page contact forms with progress bar, we have all the fields you need.

\n

You can easily integrate your contact forms with an email marketing service or collect payments for bookings and orders. WPForms allows you to do it all.

\n

The best part is, you can do it all without hiring a developer.

\n

See what one business owner has to say about WPForms’ contact form:

\n
\n

As a business owner, time is my most valuable asset. WPForms allow me to create smart contact forms with just a few clicks. With their pre-built form templates and the drag & drop builder, I can create a new form that works in less than 2 minutes without writing a single line of code. Well worth the investment.
\n David Henzel – Co-founder of MaxCDN

\n
\n

Surveys & Polls

\n

Along with contact form, you can also use WPForms to create surveys and polls.

\n

Our WordPress Survey plugin addon comes with smart survey fields including likert scale, star ratings, multiple choice, Net Promoter Score (NPS), and more, so you can create custom survey forms like Survey Monkey (without the high costs).

\n

WPForms offer the best-in class survey reporting. You can use our interactive reports to customize the graphs, export them for your presentations, and even display the aggregate results to your users.

\n

The best part about WPForms survey reports is that it can retroactively work on any old contact form or feedback survey contact form created with WPForms.

\n

Thousands of businesses love WPForms surveys for creating employee feedback form, customer feedback form, online petition form, and more.

\n

You can also use the surveys & polls addon to easily create a poll on your site. To save you time when creating a user poll, we have added a built-in poll forms template. Our poll feature offers real-time reports, so you can share poll results with the user immediately after they submit their vote.

\n

Just like the contact form, you can embed your surveys and polls inside any post, page, or widget area in WordPress.

\n

Membership and Default WordPress Forms

\n

Aside from building simple contact forms which every WordPress site needs, WPForms also helps you create better default WordPress forms.

\n

For example, you can use WPForms to create custom WordPress login forms and custom WordPress user registration forms which are great for membership sites.

\n

For membership sites, you can also use WPForms to create a password-protected contact form or even a members only contact form which is restricited to logged-in users only.

\n

Even if you’re not using a WordPress membership plugin, you can use WPForms to create membership registration forms, online RSVP forms, and other address book contact forms.

\n

Bloggers and publishers can use our WordPress post submission forms to accept guest posts, testimonials contact form to collect testiomnials, and partnership agreement forms to grow their business.

\n

Payment Form, Donation Form, Booking Form, and More

\n

While WPForms started out as a contact form plugin, it has evolved into a powerful custom forms solution that you can use to create a payment form, donation form, registration form, online booking form, mobile form, and basically any type of custom form you need.

\n

WPForms integrates with both PayPal and Stripe, so you can easily create a credit card payment form to accept payments on your website. If you’re using SSL, then you can use our Stripe Payment form to accept credit card payments. Alternatively you can use our PayPal payment form to make a donation form and accept payments online.

\n

Aside from simple order forms, business owners also use WPForms to create custom product purchase forms, t-shirt order forms, online booking forms, and more.

\n

We understand that sometimes you may need to create a contact form that require a signature. WPForms comes with a signature field to collect user signature on your WordPress forms or even create custom signature forms.

\n

You can do all of this while still using the same easy-to-use contact form builder that’s loved by over 4 million users.

\n
\n

I am so impressed with this plugin. I decided to give it a shot over some of the other form plugins, and I am so glad I did. It works well, is so easy to use and customize. The support is amazing on top of it all. I got the pro version because I was so pleased. Highly recommend.
\n Micky73 – WordPress user

\n
\n

Forms that are Optimized for Conversion and Results

\n

With our Form Pages addon, you can create distraction-free custom form landing pages like Google Forms and Wufoo right inside WordPress, so you can increase conversions without the high costs (See Form Pages Demo).

\n

To improve form completion rate, we created Conversational Forms® which helps you make your generic feedback form and other custom contact forms feel more human by adding an interactive form layout. Our conversational forms are similar to Typeform without the high subscription costs (See Conversational Forms Demo).

\n

WPForms also has other conversion optimization features such as our smart form logic that lets you create dynamic contact forms where fields change based on user’s answer, multi-page contact forms with progress bar, and other advanced contact forms.

\n

WPForms form analytics integration with MonsterInsights allow you to easily track your lead capture forms, newsletter signup forms, request a quote contact form, and other important forms on your site.

\n

Easy to Customize and Extend

\n

You can easily customize your contact forms with our section dividers, HTML blocks, and custom CSS.

\n

If you’re using Elementor or Divi page builders our native integrations let you easily customize the style of your forms.

\n

We also knew that our developer friends may want to extend simple contact forms further. That’s why WPForms come with tons of hooks and filters to create custom functionality.

\n

Since contact forms are essential for marketing, WPForms is a must have plugin for every website!

\n

Full WPForms Feature List

\n
    \n
  • Online Form Builder – Our powerful drag & drop contact form builder allows you to easily create WordPress contact forms and other online forms in just a few minutes without writing any code.
  • \n
  • 100% Responsive – Mobile Friendly contact forms.
  • \n
  • GDPR Friendly – Make your contact form GDPR compatible with just a few clicks.
  • \n
  • Form Templates – Use our pre-built form templates to save time. Never start from scratch again (see all form templates demos).
  • \n
  • Spam Protection – WPForms provides smart anti-spam protection out-of-the-box, plus direct integrations with hCaptcha and Google reCAPTCHA.
  • \n
  • Instant Form Notification – Quickly respond to incoming inquiries with our instant contact form notification system.
  • \n
  • Smart Form Confirmation – Show a custom success message, or redirect users to a custom thank you page.
  • \n
  • File Uploads – Collect files and media through your contact forms with File Uploads.
  • \n
  • Multi-Page Forms – Split long forms into multiple pages with progress bar to improve user experience.
  • \n
  • Smart Conditional Logic – Show or hide fields and contact form sections based on user behavior.
  • \n
  • Signature Forms – Create signature forms or add the signature field to your contact form, application form, booking form, etc.
  • \n
  • User Registration Forms – Create custom user registration form and custom login form in WordPress.
  • \n
  • Post Submissions – Collect user-submitted content in WordPress with our front-end post submission form. Great for guest posts, testimonials, business directory, listings, etc.
  • \n
  • Geolocation – Display location information about your users.
  • \n
  • Custom Captchas – Create custom captchas for your contact form.
  • \n
  • Surveys and Polls – Easily create surveys forms and analyze the data with interactive reports.
  • \n
  • Form Abandonment – Unlock more leads and grow your business with partial-form submission.
  • \n
  • Form Locker – Manage form permissions and add access control rules including password-protected forms, members only forms, limit contact form entry per person, close form after specific date / time, etc.
  • \n
  • Offline Forms – Let your visitors save their entered data offline and submit when their internet connection is restored.
  • \n
  • Form Landing Pages – Create “distraction-free” form landing pages to boost conversions. Great Google Forms and Wufoo alternative.
  • \n
  • Conversational Forms – Interactive form layout that makes your form feels more human and boost overall completion rate. Great for surveys and registration forms. Perfect Typeform alternative for WordPress without the high costs.
  • \n
  • Webhooks – Send form entry data to secondary tools and external services. No code required, and no need for a third party connector.
  • \n
  • User Journey Reporting – Discover the steps your visitors take before they submit your forms. Right in the WordPress dashboard, you can easily see the content that’s driving the most valuable form conversions.
  • \n
\n

Integrations

\n
    \n
  • PayPal Payment Forms – Create PayPal forms to easily collect payments, donations, and online orders.
  • \n
  • Stripe Forms – Easily collect credit card payments, donations, and online orders with our Stripe addon.
  • \n
  • Authorize.Net Forms – Connect your WordPress site with Authorize.Net to collect payments, donations, and online orders.
  • \n
  • Mailchimp Forms – Create Mailchimp newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • AWeber Forms – Create AWeber newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • Campaign Monitor Forms – Create Campaign Monitor newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • GetResponse Forms – Create GetResponse newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • Constant Contact Forms – Create Constant Contact newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • Drip Forms – Create Drip newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • ActiveCampaign Forms – Add contacts to your ActiveCampaign account, record events, add notes to contacts, and more.
  • \n
  • Sendinblue Forms – Create Sendinblue forms to automate your marketing and engage your subscribers.
  • \n
  • Salesforce Forms – Easily send your WordPress form contacts and leads to your Salesforce CRM account.
  • \n
  • Zapier Addon – Connect your WordPress forms with over 1000+ apps. Route your contact form data to your favorite CRM, email marketing service, etc.
  • \n
\n

After reading this feature list, you can probably imagine why WPForms is the best WordPress contact form plugin in the market.

\n

Give WPForms a try.

\n

Want to unlock more features? Upgrade to our Pro version.

\n

Credits

\n

This plugin is created by Jared Atchison and Syed Balkhi.

\n

Branding Guideline

\n

WPForms® is a registered trademark of WPForms LLC. When writing about the contact form plugin by WPForms, please make sure to uppercase the initial 3 letters.

\n
    \n
  • WPForms (correct)
  • \n
  • WP Forms (incorrect)
  • \n
  • wpforms (incorrect)
  • \n
  • wpform (incorrect)
  • \n
\n

What’s Next

\n

If you like this plugin, then consider checking out our other projects:

\n
    \n
  • OptinMonster – Get More Email Subscribers with the most popular conversion optimization plugin for WordPress.
  • \n
  • MonsterInsights – See the stats that matter and grow your business with confidence. The best Google Analytics plugin for WordPress.
  • \n
  • SeedProd – Create beautiful landing pages with our powerful drag & drop landing page builder.
  • \n
  • WP Mail SMTP – Improve email deliverability for your contact form with the most popular SMTP plugin for WordPress.
  • \n
  • RafflePress – Best WordPress giveaway and contest plugin to grow traffic and social followers.
  • \n
  • Smash Baloon – #1 social feeds plugin for WordPress – display social media content in WordPress without code.
  • \n
  • AIOSEO – The original WordPress SEO plugin to help you rank higher in search results (trusted by over 2 million sites).
  • \n
  • Push Engage – Connect with visitors after they leave your website with the leading web push notification plugin.
  • \n
  • TrustPulse – Add real-time social proof notifications to boost your store conversions by up to 15%.
  • \n
\n

Visit WPBeginner to learn from our WordPress Tutorials and find out about other best WordPress plugins.

\n

Notes

\n

WPForms is absolutely, positively the most beginner friendly WordPress contact form plugin on the market. It is both easy and powerful.

\n

We took the pain out of creating online forms and made it easy. Check out all WPForms features.

\n

Also, I’m the founder of WPBeginner, the largest WordPress resource site for beginners. It was a huge priority for me to make a WordPress contact form plugin that beginners can use without any training.

\n

I feel that we have done that here. I hope you enjoy using WPForms.

\n

Thank you

\n

Syed Balkhi

\n","download_link":"https://downloads.wordpress.org/plugin/wpforms-lite.1.6.9.zip","tags":{"contact-form":"contact form","contact-form-plugin":"contact form plugin","custom-form":"custom form","form-builder":"form builder","forms":"forms"},"donate_link":"","icons":{"1x":"https://ps.w.org/wpforms-lite/assets/icon.svg?rev=2574198","2x":"https://ps.w.org/wpforms-lite/assets/icon-256x256.png?rev=2574201","svg":"https://ps.w.org/wpforms-lite/assets/icon.svg?rev=2574198"},"wporg":true},{"name":"MonsterInsights – Google Analytics Dashboard for WordPress (Website Stats Made Easy)","slug":"google-analytics-for-wordpress","version":"7.18.0","author":"MonsterInsights","author_profile":"https://profiles.wordpress.org/chriscct7","requires":"3.8.0","tested":"5.8","requires_php":"5.2","rating":92,"ratings":{"1":194,"2":39,"3":34,"4":75,"5":2076},"num_ratings":2418,"support_threads":8,"support_threads_resolved":8,"active_installs":3000000,"downloaded":96778226,"last_updated":"2021-08-10 9:06pm GMT","added":"2007-09-14","homepage":"https://www.monsterinsights.com/?utm_source=liteplugin&utm_medium=pluginheader&utm_campaign=pluginurl&utm_content=7%2E0%2E0","short_description":"The best free Google Analytics plugin for WordPress. See how visitors find and use your website, so you can grow your business.","description":"

Google Analytics Plugin for WordPress

\n

With over 3 million active installs, MonsterInsights is the most popular Google Analytics plugin for WordPress.

\n

We believe that it’s easy to double your traffic and sales when you know exactly how people find and use your website. MonsterInsights shows you the analytics and stats that matter, so you can grow your business with confidence.

\n

At MonsterInsights, we make it “effortless” to properly connect your WordPress site with Google Analytics, so you can start making data-driven decisions to grow your business.

\n

Unlike other Google Analytics plugins, MonsterInsights allow you to enable all advanced Google Analytics tracking features with just a few clicks (no need to hire a developer).

\n

The best part is that MonsterInsights comes with an analytics dashboard for WordPress that shows you actionable analytics reports right inside your WordPress dashboard. We have created customized reports that eliminate the fluff and only show you the stats that matter, so you can see exactly what’s working and what’s not!

\n

Simply put, MonsterInsights is the most complete Google Analytics plugin for WordPress that’s both EASY and POWERFUL.

\n

That’s why millions of small businesses and top companies like Microsoft, Bloomberg, FedEx, Yelp, Subway, etc. use MonsterInsights to setup Google Analytics on their WordPress sites.

\n
\n

MonsterInsights Pro
\n This plugin is the lite version of MonsterInsights Pro plugin that comes with all the tracking features you will ever need including events tracking, ecommerce tracking, custom dimensions tracking, page speed reports, popular post tracking, custom dimensions, affiliate link tracking, and tons more. Click here to purchase the best premium Google Analytics plugin for WordPress now!

\n
\n

We took the pain out of installing Google Analytics in WordPress and made it easy. Here’s why over 3 million smart business owners, designers, and developers love MonsterInsights, and you will too!

\n

\n

Quick & Easy Google Analytics Setup

\n

Properly setting up Google Analytics is complicated. You have to either hire a developer or learn how to add advanced code snippets to your website in many different areas. This process can take days or weeks…and can even break your website!

\n

With MonsterInsights, we made it “effortless” to properly setup Google Analytics in WordPress. Yes, you can enable all advanced Google Analytics features with just a few clicks.

\n

If you can point-and-click, then you can set up Google Analytics inside WordPress and start seeing insights in under 15 minutes (no code necessary).

\n

We keep up with all Google Analytics updates, so you can sleep well at night knowing that your website will always stay up to date with the newest features.

\n

See what one business owner is saying about MonsterInsights:

\n
\n

It just works. Really easy way to insert Google Analytics tracking code and keep it there when switching themes. No need to copy/paste code anywhere. This is the best way to handle Google Analytics in WordPress.
\n Steven Gliebe

\n
\n

Google Analytics Dashboard + Real Time Stats

\n

Our goal at MonsterInsights is to make Google Analytics easy and accessible for everyone.

\n

We understand that Google Analytics has a steep learning curve which often prevents small business owners from making informed decisions to grow their business.

\n

That’s why MonsterInsights comes with a built-in Google Analytics Dashboard for your WordPress site, so you can see all the useful information about your visitors right inside your WordPress dashboard without needing to login somewhere else.

\n

We have even created customized reports to help you filter through the noise and see the stats that really matter!

\n
    \n
  • \n

    Audience Report helps you get to know your visitors in a whole new way. It shows you detailed insights like which country your visitors are coming from, what are they most interested in, which device are they using, their age, gender, and a whole lot more. You can use this demographics report and audience clues to tweak your website design and content accordingly.

    \n
  • \n
  • \n

    **Publishers Report ** helps you understand which pages your visitors are arriving, and which pages they are leaving from. Designed specifically for blogs and other resource sites, this powerful report will show you which outbound links are getting clicked so you can easily optimize for higher conversions.

    \n
  • \n
  • \n

    Behavior Report shows you exactly how people find your website, which keywords did they search for, who referred them, what did they click on your site, and more. You can use these useful stats to identify low-hanging fruits, new partnership opportunities, and promotional areas to focus on.

    \n
  • \n
  • \n

    Content Report shows you stats on exactly which content gets the most visits, so you can stop guessing and start creating content that gets more traffic and conversion.

    \n
  • \n
  • \n

    Ecommerce Report shows you important store stats like total revenue, conversion rate, average order value, top referral sources, and more (all in one place).

    \n
  • \n
  • \n

    Forms Report shows you conversion stats for various contact forms and lead forms on your website, so you can improve the conversions to grow your business.

    \n
  • \n
  • \n

    Search Console Report shows you exactly how well your website is ranking in Google, so you can further optimize your SEO to grow your organic traffic.

    \n
  • \n
  • \n

    Custom Dimensions Report helps you dig deeper by showing you useful stats like who are your most popular authors, what are the best publication times, which are your most popular categories or tags, how well are your Yoast focus keywords and SEO score performing, and more.

    \n
  • \n
  • \n

    Site Speed Report makes it easy to track pagespeed insights and loading times for your website and get the information you need to improve user experience and your SEO rankings.

    \n
  • \n
\n

Our custom Google Analytics Dashboard reports are based on over 12+ years of online business experience. We built MonsterInsights to be the Google Analytics plugin that we wish we had.

\n

We currently use MonsterInsights on all our portfolio companies which include both media sites generating tens of millions of pageviews and eCommerce sites generating millions in sales.

\n

That’s why we can confidently say that MonsterInsights is the ultimate Google Analytics Shortcut for seeing the stats that matter and making data-driven decisions to grow your business.

\n
\n

I love being able to drill down into the analytics via the reporting feature. I have the PRO version and it makes a big difference what you can analyze. I’m glad that I can integrate with Pretty Links too!
\n Kim Beasley – MonsterInsights user

\n
\n

Google Analytics Enhanced Ecommerce Tracking Made Easy

\n

Google Analytics Enhanced Ecommerce tracking is a powerful feature that lets you track user behavior across your online store starting from product views to checkout page to thank you page and beyond.

\n

With MonsterInsights’ easy WooCommerce integration, you can setup WooCommerce analytics with literally 1-click.

\n

Once you have enabled WooCommerce tracking, MonsterInsights will show you all important WooCommerce metrics in a single dashboard including WooCommerce conversion rate, top products in your WooCommerce store, total transactions, total revenue, average order value, top referral sources, and more.

\n

Our WooCommerce analytics report also includes other detailed WooCommerce event tracking data like total add to carts, total removed from cart, time to purchase, and sessions to purchase.

\n

For those who want to go beyond our WooCommerce stats dashboard, you can easily open up the Google Analytics dashboard to combine WooCommerce data with other secondary dimensions and filters to find exactly what you’re looking for.

\n

Aside from WooCommerce Google Analytics integration, MonsterInsights’ eCommerce addon also offers seamless integration for the Easy Digital Downloads plugin.

\n

Our Easy Digital Downloads Google Analytics integration allows you to set up Enhanced Ecommerce Tracking on your store with just 1-click.

\n

Simply put, MonsterInsights’ Enhanced Ecommerce for WordPress feature is by far the easiest and most powerful in the market.

\n

Google Analytics + GDPR Compliance

\n

MonsterInsights helps make Google Analytics GDPR compliance easier for business owners.

\n

Our EU compliance addon allows you to:

\n
    \n
  • Anonymize IP in Google Analytics
  • \n
  • Disable the Demographics and Interest Reports for Remarketing and Advertising
  • \n
  • Disable UserID and author name tracking
  • \n
  • Enable the ga() compatibility mode
  • \n
  • Integrate with Cookie Notice and CookieBot plugins to collect user consent before tracking
  • \n
  • Integrate with Google AMP Consent Box before enable tracking
  • \n
  • Integrate with Google Analytics’s Chrome browser opt-out extension and built-in cookie opt-out system
  • \n
  • Offer Easy Opt Out link for Google Analytics tracking
  • \n
\n

While no single plugin can guarantee 100% GDPR compliance in WordPress, MonsterInsights goes to great length in helping business owners with GDPR compliance.

\n

For more details, see: GDPR and MonsterInsights – Everything You Need to Know.

\n

Universal Tracking + Google Analytics for AMP and Instant Articles

\n

MonsterInsights uses Google Analytics universal tracking, so you can track your users across devices and platforms.

\n

Accelerated Mobile Pages (AMP) is a project by Google that helps you speed up your website. However if you don’t set it up properly, Google AMP can cause you to lose your website analytics. Our Google Analytics AMP integration allows you to have accurate tracking on all AMP enabled pages. It works seamlessly with AMP for WordPress plugin.

\n

We also offer 1-click Google Analytics integration with Facebook Instant Articles.

\n

At MonsterInsights, we always stay ahead of the curve in helping you integrate WordPress with the latest Google Analytics tracking features.

\n
\n

Analytics for PROs! This plugin brings it all, great features and helpful info to easily see what you are doing.
\n Frank van der Sluijs

\n
\n

Google AdSense Tracking and Affiliate Link Tracking

\n

With MonsterInsights Ads tracking addon, publishers can easily track the performance of their Google AdSense Ads inside their Google Analytics dashboard.

\n

Our affiliate link tracking makes it easy for bloggers and affiliate marketers to track their affiliate links with Google Analytics.

\n

MonsterInsights uses event tracking for all WordPress outbound link tracking which is far more accurate than any built-in WordPress analytics solution.

\n

Unlike other WordPress analytics plugin, our Google Analytics affiliate link tracking does NOT slow down your website because all events are recorded via JavaScript and sent straight to your account.

\n

Most other WordPress stats plugin track data on your WordPress hosting server which slows down your website and does not scale for larger websites.

\n

Since our affiliate link tracking uses Google Analytics’ powerful servers, we can skip WordPress entirely.

\n

MonsterInsights’ affiliate link tracking feature works with all WordPress affiliate link management plugins including Pretty Links, Thirsty Affiliates, and others.

\n

Custom Dimensions Tracking, Custom Google Analytics Event Tracking, and More

\n

Our Google Analytics event tracking feature for WordPress doesn’t just stop at affiliate link tracking.

\n

You can use MonsterInsights custom Google analytics event tracking feature to easily add outbound-link tracking, file downloads tracking, call-to-action button tracking, hashmark tracking, telephone link tracking, and more.

\n

Our powerful Forms Tracking addon uses Google Analytics custom event tracking feature to enable form analytics in WordPress. With just 1-click, you can enable form conversion tracking for your contact forms, lead generation forms, registration forms, surveys, and any other type of form in WordPress.

\n

MonsterInsights’ Custom Dimensions addon allows you to push WordPress analytics even further. You can use Google Analytics custom dimensions to generate helpful WordPress stats for:

\n
    \n
  • Author Tracking – see stats for each author to find which author’s posts generate the most traffic.
  • \n
  • Post Type Tracking – see stats for WordPress post types to find out which sections are performing the best.
  • \n
  • Category Tracking – see stats for your WordPress categories to find out which sections of your sites are the most popular.
  • \n
  • Tags Tracking – see stats for your WordPress tags to find out which tags are the most popular.
  • \n
  • SEO Score Tracking – see stats for your Yoast SEO score and see how it impacts your traffic.
  • \n
  • Focus Keyword Tracking – see stats for Yoast focus keyword and see how it correlates with your traffic.
  • \n
  • Logged-in User Tracking – see WordPress stats for what percentage of your users are logged-in.
  • \n
  • User ID Tracking – see stats for each individual logged-in user’s activity through User ID custom dimension – great for Ecommerce and membership sites.
  • \n
  • Published Time Tracking – track the performance of your posts based on their published time.
  • \n
\n

Simply put, MonsterInsights allow you to take full advantage of all the powerful Google Analytics features.

\n
\n

I like how simple it is for client users and how I can turn on the advanced features for myself to get all the details right.
\n Skip Shean

\n
\n

Google Analytics Dashboard Plugin for WordPress Multisite Networks

\n

MonsterInsights is the most popular analytics plugin for adding Google Analytics to WordPress multisite.

\n

We have built-in all permissions and controls that you would need to successfully run Google Analytics on a WordPress multi-site.

\n

You can control who has access to view the Google Analytics Dashboard report in WordPress. Our permissions setting allows you to hide analytics reports for specific user roles.

\n

Similarly, we understand that some sites may want to exclude logged-in users from tracking. MonsterInsights gives you granular control to exclude admin in Analytics as well as other user roles.

\n

Our performance addon allows you to adjust sample rate and site speed sample rates for Google Analytics.

\n

By now you can probably see why MonsterInsights has become the most popular Google Analytics plugin for WordPress.

\n

We understand Google Analytics better than any other analytics plugin for WordPress.

\n

Full MonsterInsights Feature List

\n
    \n
  • Quick and Easy Setup – Easily setup Google Analytics for WordPress with just a few clicks (no coding needed)
  • \n
  • Real Time Stats – See real time stats inside your Google Analytics dashboard.
  • \n
  • Universal Tracking – Get better insights with Google Analytics’ universal tracking.
  • \n
  • Google Analytics Dashboard – See the stats that matter from right inside your WordPress dashboard with custom Publisher Report, Ecommerce report, and Search Console report.
  • \n
  • eCommerce Tracking – Add Google Analytics Ecommerce tracking to WordPress.
  • \n
  • WooCommerce Google Analytics – Add Enhanced Ecommerce Tracking to your WooCommerce store.
  • \n
  • Easy Digital Downloads Google Analytics – Add Enhanced Ecommerce Tracking to your EDD store.
  • \n
  • Ads Tracking – Track your Google Adsense ads with Google Analytics.
  • \n
  • Affiliate Link Tracking – Track your affiliate links and get stats that matter.
  • \n
  • File Download Tracking – Enable file download stats with just a click.
  • \n
  • Custom Link Tracking – Track your outbound link clicks with Google Analytics.
  • \n
  • Events Tracking – Track custom button and banner clicks with Google Analytics.
  • \n
  • Custom Dimensions Tracking – Enable Google analytics custom dimensions tracking for WordPress.
  • \n
  • Author Tracking – See author stats and discover who’s the most popular author on your site.
  • \n
  • Popular Post Tracking – See which blog post and section is the most popular.
  • \n
  • Contextual Insights – Get actionable tips on how to improve engagement and get more visitors based on your site’s traffic.
  • \n
  • Headline Analyzer – Get more clicks and improve SEO following suggestions from our Headline Analyzer directly in the WordPress editor
  • \n
  • Custom Post Type Tracking – Track the performance of your custom post types.
  • \n
  • Referral Tracking – See how visitors are finding your website to better focus your marketing efforts.
  • \n
  • Performance Tracking – Control the performance rate and sample rate for your Google Analytics report.
  • \n
  • Enhanced Link Attribution – Get better analytics with enhanced link attribution.
  • \n
  • Email Summaries – Your site’s Google Analytics traffic report delivered straight to your inbox every week.
  • \n
  • Google Analytics for AMP – Add proper tracking for Google AMP.
  • \n
  • Google Analytics for Facebook Instant Articles – Add proper tracking for Facebook Analytics.
  • \n
  • Google Analytics GDPR Compliance – EU compliance addon helps you improve Google Analytics GDPR compliance by adding anonymize IP, cookie consent for opt-out tracking, and more.
  • \n
  • Form Conversion Tracking – Track conversions for your WordPress forms. Works with all popular plugins including WPForms, Contact Form 7, Gravity Forms, Formidable Forms, and more.
  • \n
  • Google Optimize Tracking – Enable Google Analytics support for Google Optimize A/B Testing.
  • \n
  • Google Analytics Tools – Helpful tools for Google Analytics such as UTM link tracking builder.
  • \n
  • Want us to add something else? Suggest a feature and we’ll get it added!
  • \n
\n

After reading this exhaustive feature list, you can probably imagine why MonsterInsights is the best Google Analytics plugin for WordPress.

\n

Give MonsterInsights a try.

\n

Want to unlock even more features? Upgrade to our Pro version.

\n
\n

Simple, yet powerful. Amazing piece of plugin, does exactly what expected and even more.
\n Matt Jaworski

\n
\n

Popular Google Analytics Tutorials

\n\n

Note for Beginners

\n

Like all WordPress plugins, Google Analytics by MonsterInsights is only available for self-hosted WordPress sites. This means you will need to switch from WordPress.com to WordPress.org if you want to use this plugin on your WordPress site.

\n

For more details, see this infographic on self hosted WordPress.org vs free WordPress.com

\n

Credits

\n

This plugin is created by Chris Christoff and Syed Balkhi with sponsorship from WPBeginner.

\n

Branding Guidelines

\n

MonsterInsights® is a registered trademark of MonsterInsights LLC. When writing about the Google Analytics for WordPress plugin by MonsterInsights, please make sure to uppercase the first letters of both word.

\n
    \n
  • MonsterInsights (correct)
  • \n
  • Monster Insights (incorrect)
  • \n
  • monsterinsights (incorrect)
  • \n
  • monsterinsight (incorrect)
  • \n
\n

What’s Next

\n

If you like this plugin, then consider checking out our other projects:

\n
    \n
  • OptinMonster – Get More Email Subscribers
  • \n
  • WPForms – Best WordPress Contact Form Plugin
  • \n
  • AIOSEO – The original WordPress SEO plugin to help you rank higher in search results (trusted by over 2 million sites)
  • \n
  • SeedProd – Most popular coming soon & maintenance mode plugin for WordPress
  • \n
  • WP Mail SMTP – Improve email deliverability for your contact form with the most popular SMTP plugin for WordPress
  • \n
  • RafflePress – Best WordPress giveaway and contest plugin to grow traffic and social followers
  • \n
  • Smash Balloon – #1 social feeds plugin for WordPress – display social media content in WordPress without code
  • \n
  • PushEngage – Connect with visitors after they leave your website with the leading web push notification plugin
  • \n
  • TrustPulse – Add real-time social proof notifications to boost your store conversions by up to 15%
  • \n
\n

This plugin would not be possible without the help and support of WPBeginner, the largest WordPress resource site. You can learn from our free WordPress Tutorials like how to install WordPress, choose the best WordPress hosting, WordPress glossary, and more.

\n

You can also learn about other best WordPress plugins.

\n","download_link":"https://downloads.wordpress.org/plugin/google-analytics-for-wordpress.7.18.0.zip","tags":{"google-analytics":"google analytics","google-analytics-dashboard":"google analytics dashboard","google-analytics-widget":"google analytics widget","woocommerce-stats":"WooCommerce stats","wordpress-analytics":"WordPress analytics"},"donate_link":"http://www.wpbeginner.com/wpbeginner-needs-your-help/","icons":{"1x":"https://ps.w.org/google-analytics-for-wordpress/assets/icon.svg?rev=1598927","2x":"https://ps.w.org/google-analytics-for-wordpress/assets/icon-256x256.png?rev=1598927","svg":"https://ps.w.org/google-analytics-for-wordpress/assets/icon.svg?rev=1598927"},"wporg":true},{"name":"Atomic Blocks – Gutenberg Blocks Collection","slug":"atomic-blocks","version":"2.9.0","author":"atomicblocks","author_profile":"https://profiles.wordpress.org/atomicblocks","requires":"5.3","tested":"5.5.5","requires_php":"5.6","rating":86,"ratings":{"1":5,"2":0,"3":1,"4":6,"5":31},"num_ratings":43,"support_threads":1,"support_threads_resolved":0,"active_installs":40000,"downloaded":991595,"last_updated":"2020-10-28 4:53pm GMT","added":"2018-03-26","homepage":"https://atomicblocks.com","short_description":"A collection of beautiful, customizable Gutenberg blocks for the new block editor.","description":"

Atomic Blocks has moved!

\n

Same powerful blocks, same beautiful designs, same innovative team. Atomic Blocks has been renamed to Genesis Blocks. Learn more about Genesis Blocks. With our migration tool built right into Genesis Blocks, the transition between plugins will be simple and seamless – plus you’ll be ready to receive the new blocks and features we’re releasing soon.

\n

Atomic Blocks is a collection of page building blocks for the new Gutenberg block editor. Building pages with the block editor and Atomic Blocks gives you more control to quickly create and launch any kind of site you want!

\n

Installing the customizable Atomic Block plugin adds a collection of beautiful, site-building blocks to help you customize page layouts, increase engagement, and get results for your business. Atomic Blocks provides everything from customizable buttons, to beautifully-designed page sections and full-page layout designs via the Section & Layout block.

\n

Along with the content blocks you’ll find in Atomic Blocks, we’re also publishing helpful articles and tutorials to help you get started with Gutenberg.

\n

New Section and Layout Block!

\n

\n

On top of the handy, time-saving blocks already found in Atomic Blocks, we’re excited to introduce the brand new Section and Layout block! This block comes with a library of pre-designed sections and layouts to help you quickly and easily build a beautiful site with the new block editor.

\n

Using the Section and Layout modal window, you can browse designs by category, search, and even add sections and layouts to a Favorites tab for quick access later. Paired with the free Atomic Blocks theme, which has support for full-width, block-based page building, you have everything you need to start building your site today!

\n

Atomic Blocks currently includes the following blocks:

\n\n

Atomic Blocks WordPress Theme

\n

We’ve created a beautiful WordPress theme to help you get started with the Atomic Blocks plugin and the new WordPress block editor. The theme integrates seamlessly with the blocks you’ll find in the plugin!

\n\n

In addition to the Atomic Block Theme, we’ve built Revolution Pro with the StudioPress team. This theme is built from the ground up with blocks—Gutenberg core and Atomic. Using this Theme and the Genesis One-Click Theme Install you can have a new block-based site up and running in minutes.

\n\n

Google AMP Support

\n

The Accelerated Mobile Pages (AMP) project is a publishing format created by Google to enhance site performance for mobile website users. AMP pages are specially designed for Google search users to quickly load website pages without using any extraneous data. Atomic Blocks has support for AMP built into each block!

\n

Atomic Blocks Help File

\n

We’ve created a handy help file that you can check out here. The help file covers how to setup the plugin and get started with the blocks.

\n

The help file is also available in the plugin once activated. Click the Atomic Blocks admin menu item to visit the Getting Started page.

\n

View the plugin help file

\n

Follow Along:

\n\n","download_link":"https://downloads.wordpress.org/plugin/atomic-blocks.2.9.0.zip","tags":{"blocks":"blocks","editor":"editor","gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","page-builder":"page builder"},"donate_link":"https://atomicblocks.com","icons":{"1x":"https://ps.w.org/atomic-blocks/assets/icon-128x128.jpg?rev=1914920","2x":"https://ps.w.org/atomic-blocks/assets/icon-256x256.jpg?rev=1914921"},"wporg":true},{"name":"Akismet Spam Protection","slug":"akismet","version":"4.1.12","author":"Automattic","author_profile":"https://profiles.wordpress.org/automattic","requires":"4.6","tested":"5.8","requires_php":false,"rating":94,"ratings":{"1":40,"2":9,"3":13,"4":45,"5":811},"num_ratings":918,"support_threads":9,"support_threads_resolved":8,"active_installs":5000000,"downloaded":210918258,"last_updated":"2021-09-03 4:53pm GMT","added":"2005-10-20","homepage":"https://akismet.com/","short_description":"The best anti-spam protection to block spam comments and spam in a contact form. The most trusted antispam solution for WordPress and WooCommerce.","description":"

Akismet checks your comments and contact form submissions against our global database of spam to prevent your site from publishing malicious content. You can review the comment spam it catches on your blog’s “Comments” admin screen.

\n

Major features in Akismet include:

\n
    \n
  • Automatically checks all comments and filters out the ones that look like spam.
  • \n
  • Each comment has a status history, so you can easily see which comments were caught or cleared by Akismet and which were spammed or unspammed by a moderator.
  • \n
  • URLs are shown in the comment body to reveal hidden or misleading links.
  • \n
  • Moderators can see the number of approved comments for each user.
  • \n
  • A discard feature that outright blocks the worst spam, saving you disk space and speeding up your site.
  • \n
\n

PS: You’ll be prompted to get an Akismet.com API key to use it, once activated. Keys are free for personal blogs; paid subscriptions are available for businesses and commercial sites.

\n","download_link":"https://downloads.wordpress.org/plugin/akismet.4.1.12.zip","tags":{"anti-spam":"anti-spam","antispam":"antispam","comments":"comments","contact-form":"contact form","spam":"spam"},"donate_link":"","icons":{"1x":"https://ps.w.org/akismet/assets/icon-128x128.png?rev=969272","2x":"https://ps.w.org/akismet/assets/icon-256x256.png?rev=969272"},"wporg":true},{"name":"WP GDPR Cookie Notice","slug":"wp-gdpr-cookie-notice","version":"1.0.0-rc.1","author":"Felix Arntz","author_profile":"https://profiles.wordpress.org/flixos90","requires":"4.9.6","tested":"5.7.2","requires_php":"7.0","rating":76,"ratings":{"1":4,"2":0,"3":0,"4":0,"5":9},"num_ratings":13,"support_threads":1,"support_threads_resolved":0,"active_installs":700,"downloaded":5952,"last_updated":"2021-04-02 11:51pm GMT","added":"2019-03-01","homepage":"https://wordpress.org/plugins/wp-gdpr-cookie-notice/","short_description":"Simple performant cookie consent notice that supports AMP, Web Stories, granular cookie control and live…","description":"

This plugin adds a simple performant cookie consent notice to your WordPress site that supports AMP, Web Stories, granular cookie control and live preview customization.

\n

Not only does the notice allow you to provide the regular message that your site uses cookies, you can also optionally grant your site visitors permission to granularly allow which cookie types are allowed, supporting groups of functional (always required), preferences, analytics and marketing cookies. This aims towards compliance with how the new GDPR regulations recommend implementing cookie control for your site.

\n

In addition to the Privacy Policy page setting that WordPress core provides, you also get a settings to optionally set an extra Cookie Policy page, and you can easily link to either of them from the cookie consent notice.

\n

The cookie notice content and appearance can easily be tweaked using the Customizer, with an immediate live-preview of what your changes will look like.

\n

Last but not least, another important thing that this plugin takes care of, other than most other cookie consent plugins, is that it actually ensures cookies are only placed if the respective cookie type has been allowed by the visitor. The plugin does this by implementing cookie rules for WordPress itself, and also for the following plugins:

\n\n

More plugins will be supported in the future. If you are a developer though, it’s also very easy to add cookie rules for other code, by using the flexible cookie rule component the plugin provides as an extension point.

\n

Feature Summary

\n
    \n
  • Lightweight and easy-to-use: Simply activate the plugin, and the notice will appear.
  • \n
  • Live Preview: Use the Customizer to adjust the notice to your needs, with an instant live preview.
  • \n
  • Customizable Appearance: Specify the notice position, colors, border, button size and more.
  • \n
  • Customizable Content: Adjust the notice heading, text and button label to your preferences. You can easily link to your cookie policy page or privacy policy page, and even give visitors granular control about which cookie types they allow.
  • \n
  • Cookie Policy Support: Define an optional cookie policy page if your site has one, or alternatively provide an ID attribute to the cookie section in your privacy policy.
  • \n
  • Cookie Integrations: Supported cookies are only set once the visitor has given their consent. The cookie rules implemented also respect the more granular cookie control.
  • \n
  • JavaScript-driven: The cookie notice is inserted into the page as necessary via JavaScript, but at the same time provides easy access to whether it should be displayed via its PHP API.
  • \n
  • AMP Support: The notice is fully AMP-compatible using <amp-consent>, integrating seamlessly with the AMP plugin. It integrates with Web Stories as well.
  • \n
  • Coding Best Practices: The plugin is fully object-oriented and is coded after best practices, such as using interfaces, traits, dependency injection or the single responsibility principle. It also implements modern coding features requiring PHP 7, such as scalar type hints or return type hints.
  • \n
\n

Disclaimer

\n

This plugin does not provide any legal protection. You as a site administrator are required to ensure that it meets legal standards. This plugin is a technical tool, not a lawyer.

\n","download_link":"https://downloads.wordpress.org/plugin/wp-gdpr-cookie-notice.1.0.0-rc.1.zip","tags":{"amp":"amp","cookie-consent":"cookie consent","cookie-notice":"cookie notice","gdpr":"GDPR","web-stories":"web stories"},"donate_link":"","icons":{"1x":"https://ps.w.org/wp-gdpr-cookie-notice/assets/icon-128x128.png?rev=2042024","2x":"https://ps.w.org/wp-gdpr-cookie-notice/assets/icon-256x256.png?rev=2042024"},"wporg":true},{"name":"WordPress Share Buttons Plugin – AddThis","slug":"addthis","version":"6.2.6","author":"The AddThis Team","author_profile":"https://profiles.wordpress.org/arnavarro","requires":"3.0","tested":"5.2.11","requires_php":false,"rating":84,"ratings":{"1":75,"2":25,"3":22,"4":46,"5":444},"num_ratings":612,"support_threads":2,"support_threads_resolved":0,"active_installs":100000,"downloaded":5068765,"last_updated":"2019-07-10 5:19pm GMT","added":"2008-12-23","homepage":"https://wordpress.org/plugins/addthis/","short_description":"Now compatible with the AMP Plugin! Free Share Buttons from AddThis. Share to Messenger, WhatsApp, Facebook, Twitter, Pinterest and many more.","description":"

Now compatible with the AMP Plugin! The Free WordPress Share Buttons Plugin from AddThis makes it easier than ever for your audience to spread your content around the web. Our quick-loading Share Buttons Plugin lets you connect to over 200 social channels including Messenger, WhatsApp, Facebook, Twitter, Pinterest and many more.

\n

Our clean, customizable and simple share buttons are beautiful, quick to load and recognized all over the web.

\n

AddThis is trusted by over 15,000,000 websites with over 2 billion unique users, sharing content all over the world, in more than sixty languages.

\n

Types of Share Buttons:

\n
    \n
  • \n

    Floating share buttons: Placed on the side of your page, following your reader as they scroll. A great way to promote sharing without getting too in-your-face.

    \n
  • \n
  • \n

    Expanding share buttons: Modern, clean, and best suited for sites with tons of mobile traffic. This button expands to reveal sharing options on hover or click.

    \n
  • \n
  • \n

    Inline share buttons: Integrate share buttons into your own content for a seamless sharing experience.

    \n
  • \n
  • \n

    Image sharing buttons: Seamlessly integrate sharing into your layout with adjustable image sharing buttons. Perfect for pages with tons of shareable content.

    \n
  • \n
\n

Customizable:

\n
    \n
  • \n

    Designed for desktop, tablet, and mobile

    \n
  • \n
  • \n

    Choose from over 200 social media channels to display

    \n
  • \n
  • \n

    Adjust coloring to match your brand

    \n
  • \n
\n

Analytics:

\n
    \n
  • Sign up for a free AddThis account to get analytics on how your content is performing such as your top shared content, referring social networks and more. After you register, these analytics are accessible by logging into your AddThis.com account and visiting your AddThis dashboard. Analytics include site pageviews, your top shared content, referring social networks, and more.
  • \n
\n

Support:

\n

We strive to provide best-in-class support with a response time of around two hours, and a customer satisfaction rate of over 98%. To get in touch with our team, head to http://www.addthis.com/support.

\n

Check out our other plugins to help you grow and engage your audience!

\n
    \n
  • \n

    Follow Buttons: Add followers to 65+ social networks, including Facebook, Snapchat, Instagram, and more.

    \n
  • \n
  • \n

    Related Posts: Boost your on-site engagement with our Related Posts tool, which recommends content not only by what’s popular, but also what’s most relevant.

    \n
  • \n
\n

Want more? Visit our website to learn how you can activate our Email List Building and Link Promotion Tools.

\n

AddThis Academy | Privacy Policy

\n","download_link":"https://downloads.wordpress.org/plugin/addthis.6.2.6.zip","tags":{"share-buttons":"share buttons","social":"social","social-marketing":"Social Marketing","social-share":"social share","social-sharing":"social sharing"},"donate_link":"","icons":{"1x":"https://ps.w.org/addthis/assets/icon-128x128.png?rev=1223867","2x":"https://ps.w.org/addthis/assets/icon-256x256.png?rev=1223867"},"wporg":true},{"name":"BigCommerce For WordPress","slug":"bigcommerce","version":"4.16.0","author":"BigCommerce","author_profile":"https://profiles.wordpress.org/bigcommerce","requires":"5.2","tested":"5.5.5","requires_php":"7.2.0","rating":80,"ratings":{"1":8,"2":1,"3":0,"4":3,"5":27},"num_ratings":39,"support_threads":4,"support_threads_resolved":1,"active_installs":1000,"downloaded":57498,"last_updated":"2021-08-12 3:08am GMT","added":"2018-11-16","homepage":"","short_description":"Scale your ecommerce business with WordPress on the front-end and BigCommerce on the back end.…","description":"

BigCommerce for WordPress is a plugin that allows you to scale ecommerce further than ever before on WordPress. Scale your business with WordPress on the front-end and free up server resources from things like catalog management, processing payments, managing fulfillment logistics and more with BigCommerce on the back end.

\n

Built to integrate seamlessly with WordPress, you get access to our native ecommerce features from a single plugin, the ability to sell across multiple channels and marketplaces from a single location, and best of all, an embedded checkout experience that takes on PCI compliance and customer security on your behalf.

\n

Quick Start!

\n

Look at details from the latest release, including new features and enhancements here: https://github.com/bigcommerce/bigcommerce-for-wordpress/releases

\n

Dive into how you set up and customize your site using BC4WP using our guides here: https://developer.bigcommerce.com/bigcommerce-for-wordpress/getting-started/introduction

\n

Have a suggestion for how we can be better? Ping the team! wordpress-suggestions@bigcommerce.com

\n

DIFFERENT FROM YOUR TRADITIONAL PLUGIN

\n

We’ve taken a very different approach to ecommerce in WordPress. We set out to build our plugin the WordPress Way: deliver value to the community, build it with WordPress experts and make something developers can call their own.

\n

The BigCommerce for WordPress plugin leverages the best aspects of both platforms, allowing WordPress to manage content and BigCommerce to manage ecommerce.

\n

SCALABLE ECOMMERCE FOR WORDPRESS

\n

Continue to tap into the unrestricted customization of WordPress while pairing it with the most scalable SaaS ecommerce engine. BigCommerce lets you build complex catalogs, manage large volumes of concurrent traffic, orders and analytics.

\n

The BigCommerce plugin ports over a copy of your product catalog and stores products as custom post types in WordPress. It also creates pages for your cart, checkout, account profiles, sign in, shipping & returns, gift certificates and order history.

\n

The key difference to our approach is that you don’t need to install additional extensions to get access to common ecommerce features. Instead, you get instant access to many common (and advanced) features, such as complex catalog support, global payment gateways, currency handling, taxation, shipping calculations and centralized channel management; all out-of-the-box.

\n

OFFLOAD BACKEND RESOURCES

\n

Our philosophy is that processing orders and running your store shouldn’t affect the uptime and speed of your site — which can hurt your SEO, conversion, and brand. The BigCommerce plugin does the heavy commerce lifting, letting you scale your ecommerce without losing speed or uptime.

\n

LET US HANDLE PCI COMPLIANCE

\n

Taking on your own PCI compliance comes with a huge amount of liability and risk. BigCommerce powers the full checkout experience, assuming the burden of PCI compliance for you.

\n

EXTENSIVE PAYMENT GATEWAYS

\n

BigCommerce has over 65 payment gateway integrations available out-of-the box, serving 100+ countries and over 250 local payment methods.

\n

To help you reduce costs, we’ve pre-negotiated special credit and debit card processing rates with PayPal, our preferred payment solution. The more you grow with BigCommerce and upgrade your plan, the lower your rates can go.

\n

HIGHLY SCALABLE PRODUCT CATALOG

\n

BigCommerce is built for large, complex catalogs with up to 600 SKUs per product, and 250 product values for a single option. Our native catalog structure treats single products (including variants, details, SKUs, etc.) as a single API call, making inventory syncing with ERPs, PIMs (and WordPress) fast.

\n

MULTI-CHANNEL SELLING & MANAGEMENT

\n

With the core BigCommerce platform, you now have access within the control panel to sell across multiple marketplaces simultaneously, such as eBay, Amazon, Facebook, Instagram, Google Shopping, Square and more! Save time and eliminate errors and overselling with bulk listing, automatic inventory syncing and unified order and fulfillment management.

\n

USE YOUR FAVORITE WORDPRESS THEME

\n

BigCommerce for WordPress will work with any WordPress theme, but it may require some styling to make it fit perfectly. Are you a theme developer? We’d love to promote your BigCommerce for WordPress compatible theme. Get in touch with us here.

\n

To start, we recommend choosing a cross-browser compatible WordPress ecommerce theme, since the theme options included will better match what an online store requires.

\n

ECOMMERCE WITH GUTENBERG

\n

We’re big supporters of Gutenberg and built our plugin to support both the classic editor and Gutenberg. Whether you’re inserting shortcodes in classic mode or product blocks in Gutenberg, we will continue to enable support for both.

\n

SECURED USER ACCOUNTS & LOGINS

\n

In addition to offering you peace of mind with a secure checkout experience, we also extend this level of security to your shoppers, their accounts and logins, and payment information — all managed by BigCommerce.

\n

GLOBAL SHIPPING STREAMLINED

\n

We support all major global carriers, offer real-time carrier quotes, allow for free shipping, flat rates, dropshipping and more. With our deep ShipperHQ integration, you can even specify rates by product, category, customer group, quantity, destination, dimensions and more.

\n

FLEXIBLE SHOPPING CART

\n

We are bringing over a decade of focusing on building online stores to every WordPress website. Through this we bring our flexible shopping cart, along with it’s extensive customization options, so can offer enterprise grade promotions and discounts within a fully responsive layout, without additional extensions that other WordPress ecommerce plugins require.

\n

MULTIPLE SITES; ONE CONTROL PANEL

\n

Even if you sell across multiple WordPress sites, you shouldn’t have to manage them all in separate places. BigCommerce gives you a single control panel to manage your catalog, orders and shipping, all from one place. Streamline your admin experience and spend less time managing ecommerce on WordPress.

\n

Beyond WordPress, the endpoints we’ve opened on our platform allow you to build commerce into any sort of experience. Looking to launch a site in React? Interested in developing a mobile app? Want to integrate with an in-house POS? All of these can be built and managed from within the BigCommerce Control Panel.

\n

COMPLEX ENTERPRISE SYSTEMS INTEGRATIONS

\n

A huge benefit of having a SaaS ecommerce engine behind the scenes is that the core platform is already built for mid-market and enterprise use cases. Natively connect to your existing ERP suites, PIM software, OMS solutions, POS systems or marketing automation tools right out of the box.

\n

AMP SUPPORT

\n

Unique to most WordPress ecommerce plugins, BigCommerce for WordPress also includes support for Accelerated Mobile Pages. To activate, install the official Google plugin.

\n

SUPPORT AND SERVICES

\n

All of our BigCommerce customers have access to our 24/7 live phone, chat, and email support, run from our headquarters in Austin, Texas. For larger enterprise customers, we offer dedicated account management and implementation management services as part of your plan. We also have an ever-growing collection of help, support, and how-to guides in our help center.

\n

BUILT WITH DEVELOPERS IN MIND

\n

BigCommerce for WordPress was built by WordPress developers, with developers in mind. Our plugin is open source and available for you to fork, extend and modify as your needs require.

\n

Our plugin supports WordPress’ standard method of overriding template files so you can modify out-of-the-box designs. Customize your product cards, lists and shopping cart without risking plugin updates that will undo your changes.

\n

Additionally, there are many hooks and filters, so you can manipulate content to your heart’s content.

\n

JOIN OUR BIGCOMMERCE COMMUNITY

\n

All BigCommerce customers get access to our ever-growing online community to answer questions, discuss ecommerce strategies, learn about the latest product updates, contribute ideas and more.

\n

If you’re interested in contributing to BigCommerce for WordPress, head over to our GitHub Repository.

\n","download_link":"https://downloads.wordpress.org/plugin/bigcommerce.4.16.0.zip","tags":{"ecommerce":"ecommerce","online-store":"online store","retail":"retail","sell-online":"sell online","storefront":"storefront"},"donate_link":"","icons":{"1x":"https://ps.w.org/bigcommerce/assets/icon-256x256.png?rev=2141502","2x":"https://ps.w.org/bigcommerce/assets/icon-256x256.png?rev=2141502"},"wporg":true},{"name":"Yoast SEO","slug":"wordpress-seo","version":"17.0","author":"Team Yoast","author_profile":"https://profiles.wordpress.org/joostdevalk","requires":"5.6","tested":"5.8","requires_php":"5.6.20","rating":96,"ratings":{"1":718,"2":124,"3":170,"4":616,"5":25755},"num_ratings":27383,"support_threads":536,"support_threads_resolved":481,"active_installs":5000000,"downloaded":351641247,"last_updated":"2021-08-24 7:59am GMT","added":"2010-10-11","homepage":"https://yoa.st/1uj","short_description":"Improve your WordPress SEO: Write better content and have a fully optimized WordPress site using the Yoast SEO plugin.","description":"

Yoast SEO: the #1 WordPress SEO plugin

\n

Since 2008 Yoast SEO has helped millions of websites worldwide to rank higher in search engines.

\n

Yoast’s mission is SEO for Everyone. Our plugin’s users range from the bakery around the corner to some of the most popular sites on the planet.

\n

Yoast SEO Free contains everything that you need to manage your SEO, and the Yoast SEO Premium plugin and its extensions unlock even more tools and functionality.

\n

GET AHEAD OF THE COMPETITION

\n

To rank highly in search engines, you need to beat the competition. You need a better, faster, stronger website than the people who sell or do the same kinds of things as you.

\n

Yoast SEO is the most-used WordPress SEO plugin, and has helped millions of people like you to get ahead, and to stay ahead.

\n

TAKING CARE OF YOUR WORDPRESS SEO

\n

Yoast SEO is packed full of features, designed to help visitors and search engines to get the most out of your website. Some of our favourites are:

\n
    \n
  • Automated technical SEO improvements, like canonical URLs and meta tags.
  • \n
  • Advanced XML sitemaps; making it easy for Google to understand your site structure.
  • \n
  • Title and meta description templating, for better branding and consistent snippets in the search results.
  • \n
  • An in-depth Schema.org integration that will increase your chance of getting rich results, by helping search engines to understand your content.
  • \n
  • Full control over site breadcrumbs, so that users and search engines always know where they are.
  • \n
  • Faster loading times for your whole website, due to an innovative way of managing data in WordPress.
  • \n
  • [Premium] E-mail support for our Yoast SEO Premium users.
  • \n
  • [Premium] The possibility to expand Yoast SEO with the News SEO, Video SEO, Local SEO and WooCommerce SEO extensions.
  • \n
\n

WRITE KILLER CONTENT WITH YOAST SEO

\n

We know content is king, that’s why Yoast SEO is famous for its state-of-the-art content and SEO analysis. Yoast SEO gives you:

\n
    \n
  • SEO analysis: an invaluable tool while writing SEO-friendly content with the right (focus) keyphrases in mind.
  • \n
  • Readability analysis: ensures that humans and search engines can read and understand your content.
  • \n
  • Full language support for: English, German, French, Dutch, Spanish, Italian, Russian, Indonesian, Polish, Portuguese, Arabic, Swedish, Hebrew, Hungarian, Turkish, Czech, Norwegian and Slovak.
  • \n
  • A Google preview, which shows what your listings will look like in the search results. Even on mobile devices!
  • \n
  • Innovative Schema blocks for the WordPress block editor, so that your FAQ and HowTo content can be shown directly in the search results. Plus a breadcrumbs block to guide your users.
  • \n
  • [Premium] Internal linking blocks to easily improve the structure of your content. Easily add a table of contents block, a related links block, a subpages block, or siblings block! Plus, we’ll keep adding these easy-to-add blocks to improve your site structure.
  • \n
  • [Premium] Social previews to show you how your content will be shown on Twitter and Facebook. Plus: Social Appearance Templates to guarantee a consistent look.
  • \n
  • [Premium] The Insights tool that shows you what your text focuses on. This way you can keep your article in line with your keyphrases.
  • \n
  • [Premium] Optimize your content for synonyms and related keyphrases.
  • \n
  • [Premium] Optimize your article for different word forms of your keyphrases, as the singular and plural. But also different verb forms, synonyms, and related keyphrases. This makes for more natural content!
  • \n
  • [Premium] Automatic internal linking suggestions: write your article and get automatic suggested posts to link to!
  • \n
  • [Premium] An orphaned content filter to detect posts that have no links pointing towards them!
  • \n
  • [Premium] SEO workouts to make working on your site as easy as ABC. These SEO workflows will get your site into shape in no time!
  • \n
\n

KEEP YOUR SITE IN PERFECT SHAPE

\n

Whether you are an online entrepreneur, blogger or content creator, a developer, a (WordPress) SEO expert or a business owner, Yoast SEO helps you keep your website in perfect shape by:

\n
    \n
  • Tuning the engine of your website, so you can work on creating great content!
  • \n
  • Giving you cornerstone content and internal linking features to help you optimize your site structure in a breeze.
  • \n
  • Translating your content to structured data where possible, to help search engines understand your website.
  • \n
  • Helping you manage your team: with our SEO roles you can give colleagues access to specific sections of the Yoast SEO plugin.
  • \n
  • [Premium] Automatically creating redirects when URLs change or when pages are deleted, and providing tools to manage or create redirects.
  • \n
  • [Premium] Showing you social previews to manage the way your page is shared on social networks like Facebook and Twitter.
  • \n
\n

TRUST THE EXPERTS

\n

Yoast is powered by a team of expert developers, testers, software architects, and SEO consultants. They work constantly to stay at the cutting edge of WordPress SEO, and to improve the plugin with every release.

\n

Yoast SEO is the only WordPress SEO plugin made by world-renowned SEO experts.

\n

GET PREMIUM SUPPORT

\n

The Yoast team offers regular support on the WordPress.org forums. But we hope you understand that we prioritize our Premium customers. This one-on-one email support is available to people who have purchased Yoast SEO Premium.

\n

Did you know that Yoast SEO Premium contains a lot of extra features:

\n
    \n
  • A redirect manager that prevents “404: page not found” errors
  • \n
  • Optimize without worrying about over-optimization with intelligent word form recognition available in multiple languages.
  • \n
  • Internal linking blocks to structure your site easily.
  • \n
  • Internal linking suggestions while you’re writing.
  • \n
  • Preview your content to see what it will look like in the search results and when shared on social media using the Google preview and social preview.
  • \n
  • Cornerstone content checks that point search engines to your most important pages.
  • \n
  • Connect Yoast SEO to Zapier to easily create zaps that instantly share your published posts with 2000+ destinations like Twitter, Facebook, and much more.
  • \n
\n

If you are serious about your WordPress SEO, install the Yoast SEO Premium plugin! Costs a little, saves a lot of time!

\n

OUR EXTENSIONS TO FURTHER IMPROVE YOUR WORDPRESS SEO

\n

Check out these SEO add-ons by Yoast:

\n
    \n
  • Yoast Local SEO optimizes your website for a local audience.
  • \n
  • Yoast Video SEO ensures that Google understands what your video is about, increasing the chances of ranking in the video results.
  • \n
  • Yoast News SEO for news websites that want to improve their visibility and performance in Google News.
  • \n
  • WooCommerce SEO for all online shops that want to perform better in the search results and social media.
  • \n
\n

These extensions work fine with the free version of Yoast SEO. Of course, the premium extensions also include 24/7 support.

\n

Oh, don’t forget: our Yoast Academy is for all entrepreneurs, bloggers, and anyone who wants to learn more about optimizing websites, improving your WordPress SEO, and if you want to take your content to the next level!

\n

INTEGRATIONS

\n

Yoast SEO integrates seamlessly into a range of themes and plugins. We work particularly well with:

\n\n

BUG REPORTS

\n

Do you want to report a bug for Yoast SEO? Best to do so in the WordPress SEO repository on GitHub. Please note that GitHub is not a support forum and issues will be closed if they don’t meet the bug requirements.

\n

READ MORE

\n

Want more information on search engine optimization and Yoast SEO? Have a look at:

\n\n","download_link":"https://downloads.wordpress.org/plugin/wordpress-seo.17.0.zip","tags":{"content-analysis":"Content analysis","readability":"Readability","schema":"schema","seo":"seo","xml-sitemap":"xml sitemap"},"donate_link":"https://yoa.st/1up","icons":{"1x":"https://ps.w.org/wordpress-seo/assets/icon.svg?rev=2363699","2x":"https://ps.w.org/wordpress-seo/assets/icon-256x256.png?rev=2363699","svg":"https://ps.w.org/wordpress-seo/assets/icon.svg?rev=2363699"},"wporg":true},{"name":"Gutenberg","slug":"gutenberg","version":"11.4.1","author":"Gutenberg Team","author_profile":"https://profiles.wordpress.org/matveb","requires":"5.6","tested":"5.8","requires_php":"5.6","rating":42,"ratings":{"1":2266,"2":201,"3":126,"4":133,"5":700},"num_ratings":3426,"support_threads":57,"support_threads_resolved":9,"active_installs":300000,"downloaded":24469534,"last_updated":"2021-09-03 3:27pm GMT","added":"2017-06-16","homepage":"https://github.com/WordPress/gutenberg","short_description":"The Gutenberg plugin provides editing, customization, and site building features to WordPress. This beta plugin allows you to test bleeding-edge featu …","description":"

“Gutenberg” is a codename for a whole new paradigm in WordPress site building and publishing, that aims to revolutionize the entire publishing experience as much as Gutenberg did the printed word. Right now, the project is in the first phase of a four-phase process that will touch every piece of WordPress — Editing, Customization, Collaboration, and Multilingual — and is focused on a new editing experience, the block editor.

\n

The block editor introduces a modular approach to pages and posts: each piece of content in the editor, from a paragraph to an image gallery to a headline, is its own block. And just like physical blocks, WordPress blocks can added, arranged, and rearranged, allowing WordPress users to create media-rich pages in a visually intuitive way — and without work-arounds like shortcodes or custom HTML.

\n

The block editor first became available in December 2018, and we’re still hard at work refining the experience, creating more and better blocks, and laying the groundwork for the next three phases of work. The Gutenberg plugin gives you the latest version of the block editor so you can join us in testing bleeding-edge features, start playing with blocks, and maybe get inspired to build your own.

\n

Discover More

\n
    \n
  • \n

    User Documentation: See the WordPress Editor documentation for detailed docs on using the editor as an author creating posts and pages.

    \n
  • \n
  • \n

    Developer Documentation: Extending and customizing is at the heart of the WordPress platform, see the Developer Documentation for extensive tutorials, documentation, and API reference on how to extend the editor.

    \n
  • \n
  • \n

    Contributors: Gutenberg is an open-source project and welcomes all contributors from code to design, from documentation to triage. See the Contributor’s Handbook for all the details on how you can help.

    \n
  • \n
\n

The development hub for the Gutenberg project is on Github at: https://github.com/wordpress/gutenberg

\n

Discussion for the project is on Make Blog and the #core-editor channel in Slack, signup information.

\n","download_link":"https://downloads.wordpress.org/plugin/gutenberg.11.4.1.zip","tags":[],"donate_link":"","icons":{"1x":"https://ps.w.org/gutenberg/assets/icon-128x128.jpg?rev=1776042","2x":"https://ps.w.org/gutenberg/assets/icon-256x256.jpg?rev=1776042"},"wporg":true},{"name":"Setka Editor","slug":"setka-editor","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://setka.io/","short_description":"

Setka Editor is the first WYSIWYG plugin with page builder functionality.

\n","description":"\n\n\n

Setka Editor is the first WYSIWYG plugin with page builder functionality.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2018/11/Setka-Banner-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2018/11/Setka-Banner-372x209.jpg","svg":""},"wporg":false}] \ No newline at end of file +[{"name":"Podcast Player – Your Podcasting Companion","slug":"podcast-player","version":"5.1.0","author":"vedathemes","author_profile":"https://profiles.wordpress.org/vedathemes","requires":"4.9","tested":"5.8","requires_php":"5.6","rating":98,"ratings":{"1":0,"2":1,"3":0,"4":2,"5":43},"num_ratings":46,"support_threads":8,"support_threads_resolved":6,"active_installs":8000,"downloaded":113859,"last_updated":"2021-09-06 4:16pm GMT","added":"2019-02-06","homepage":"https://vedathemes.com/podcast-player/","short_description":"Showcase your podcast only using podcasting feed url. Use custom widget, shortcode or editor block…","description":"

Podcast Player provides an easy way to show and play your podcast episodes using podcasting feed url. It is a must have plugin for your podcast website. Give your listeners an easy access to all your episodes from any page or even from all the pages of your website.

\n

Podcast Player Pro | Documentation

\n\n

Podcast player key features

\n
    \n
  • Give your listeners an easy access to your podcast episodes.
  • \n
  • Display responsive podcast player just by entering your podcast’s feed url.
  • \n
  • Fetch all required details from feed url.
  • \n
  • Option to modify fetched details of your podcast.
  • \n
  • Option to Show or Hide individual player elements.
  • \n
  • Give your listener an option to share your podcast episodes.
  • \n
  • Ajax live search episodes from the podcast.
  • \n
  • It is possible to have multiple instances of podcast player on single page.
  • \n
  • Self adjusting layout according to width of the podcast player.
  • \n
\n

Podcast player pro features

\n
    \n
  • Professionally showcase your podcast using our unified player, episode list and grid templates.
  • \n
  • Use powerful filter options to choose which episodes or seasons you want to display on your website.
  • \n
  • Make your entire podcast catalogue easily available using our ajax approximate search feature.
  • \n
  • Add an audio message within your podcast episode.
  • \n
  • Add audio mp3 to your WordPress posts and display as podcast episodes.
  • \n
  • Show or hide specific elements and customize color and fonts to personalize your podcast display
  • \n
\n

Setup Podcast Player Widget

\n

Display searchable podcast episodes list on any widget area of your website.

\n

Minimum Setup

\n
    \n
  1. After activating the plugin, visit Appearance > Widgets in admin dashboard.
  2. \n
  3. Look for ‘Podcast player’ widget in left ‘Available Widgets’ section.
  4. \n
  5. Drag the widget to any available sidebar/widget area.
  6. \n
  7. Enter feed url in the appropriate field.
  8. \n
  9. Click [Save] button.
  10. \n
\n

Advanced Setup

\n
    \n
  1. After activating the plugin, visit Appearance > Widgets in admin dashboard.
  2. \n
  3. Look for ‘Podcast player’ widget in left ‘Available Widgets’ section.
  4. \n
  5. Drag the widget to any available sidebar/widget area.
  6. \n
  7. Enter feed url in the appropriate field.
  8. \n
  9. Optionally, click on “Change podcast content” button to customize feed’s auto fetched details.
  10. \n
  11. Optionally, click on “Show/Hide player items” button to show or hide player elements.
  12. \n
  13. Optionally, click on “Podcast player styling” button to customize player’s accent color.
  14. \n
  15. Optionally, click on “Sort & Filter” button to sort or filter podcast episodes.
  16. \n
  17. Click [Save] button.
  18. \n
\n

Setup Podcast Player Block

\n

Display searchable podcast episodes list on any post or page. Make sure you have not disabled WordPress latest block editor.

\n

Setup

\n
    \n
  1. After activating the plugin, visit any post or page’s edit screen.
  2. \n
  3. In main content area, click on ‘+’ icon to add a new block.
  4. \n
  5. Search for ‘Podcast Player’ block.
  6. \n
  7. Enter feed url in the appropriate field. A preview of your podcast player will appear.
  8. \n
  9. Click on the podcast player preview.
  10. \n
  11. Select appropriate options from the right sidebar to customize the player.
  12. \n
  13. Save or Update the post.
  14. \n
\n

Setup Podcast Player using shortcode

\n

Minimum Setup

\n
[podcastplayer feed_url ='']\n
\n
    \n
  1. feed_url – Your podcast feed url.
  2. \n
\n

Advanced Setup

\n
[podcastplayer feed_url ='' number='' podcast_menu='' cover_image_url='' hide_cover='true' hide_description='true' hide_subscribe='true' hide_search='true' hide_loadmore='true' hide_download='true' accent_color='#65b84f']Short Description [/podcastplayer]\n
\n
    \n
  1. feed_url: Your podcast feed url.
  2. \n
  3. number: Number of podcasts episodes to be displayed at a time.
  4. \n
  5. podcast_menu: Any previously created WordPress menu’s name OR ID OR slug. (optional)
  6. \n
  7. cover_image_url: Podcast’s cover image url. The image must be from your WP media library. (optional)
  8. \n
  9. header_default: (false/true) Show player header items by default
  10. \n
  11. hide_header: Hide player header items
  12. \n
  13. hide_title: (false/true) Show / Hide podcast Title in header info section
  14. \n
  15. hide_cover: (false/true) Show / Hide podcast cover image
  16. \n
  17. hide_description: (false/true) Show / Hide podcast description
  18. \n
  19. hide_subscribe: (false/true) Show / Hide podcast subscribe button.
  20. \n
  21. hide_search: (false/true) Show / Hide podcast search field.
  22. \n
  23. hide_author: (false/true) Show / Hide author/podcaster’s name.
  24. \n
  25. hide_content: (false/true) Show / Hide podcast episode’s content.
  26. \n
  27. hide_loadmore: (false/true) Show / Hide podcast load more button.
  28. \n
  29. hide_download: (false/true) Show/ Hide podcast episode download link.
  30. \n
  31. hide_social: (false/true) Show/ Hide podcast episode social sharing links.
  32. \n
  33. accent_color: Podcast player’s accent color (Color hex-code to be entered).
  34. \n
  35. sortby: Sort podcast episodes (sort_date_desc/sort_date_asc/sort_title_desc/sort_title_asc)
  36. \n
  37. filterby: Filter by any string in episode’s title
  38. \n
  39. list_default: (false/true) Display Episodes list by default on small screen
  40. \n
  41. hide_featured: (false/true) Show / Hide podcast episode featured image
  42. \n
  43. apple_sub: Apple podcast subscription link
  44. \n
  45. google_sub: Google podcast subscription link
  46. \n
  47. Short Description: Podcast short text description. (optional)
  48. \n
\n","download_link":"https://downloads.wordpress.org/plugin/podcast-player.5.1.0.zip","tags":{"feed-to-audio":"feed to audio","podcast":"podcast","podcaster":"podcaster","podcasting":"podcasting","rss-feed":"rss feed"},"donate_link":"","icons":{"1x":"https://ps.w.org/podcast-player/assets/icon-256x256.png?rev=2025683","2x":"https://ps.w.org/podcast-player/assets/icon-256x256.png?rev=2025683"},"wporg":true},{"name":"WPSSO Schema JSON-LD Markup | Google Rich Results, Rich Snippets, and Structured Data","slug":"wpsso-schema-json-ld","version":"4.18.1","author":"JS Morisset","author_profile":"https://profiles.wordpress.org/jsmoriss","requires":"5.0","tested":"5.8","requires_php":"7.0","rating":90,"ratings":{"1":5,"2":2,"3":1,"4":1,"5":55},"num_ratings":64,"support_threads":4,"support_threads_resolved":4,"active_installs":4000,"downloaded":284029,"last_updated":"2021-09-06 3:23pm GMT","added":"2016-02-14","homepage":"https://wpsso.com/extend/plugins/wpsso-schema-json-ld/","short_description":"Google Rich Results for Articles, Carousels, Events, FAQ pages, How-Tos, Local SEO, Products, Recipes, Ratings,…","description":"

Supports over 500 different Schema (aka Schema.org) types and sub-types:

\n

Google Rich Results with JSON-LD structured data for Articles, Carousels (aka Item Lists), Claim Reviews, Events, FAQ pages, How-Tos, Images, Local Business / Local SEO, Organizations, Products, Ratings, Recipes, Restaurants, Reviews, Video Objects, and much more.

\n

Reads your existing content, plugin data, and service API data:

\n

There’s no need to manually re-enter descriptions, titles, product information, and re-select images / videos like other SEO and Schema markup plugins.

\n

Provides comprehensive Schema JSON-LD markup for posts, pages, custom post types, terms (category, tags, etc.), custom taxonomies, user profile pages, search result pages, archive pages, and Accelerated Mobile Pages (AMP) pages – including image SEO, video SEO, local business, organization, publisher, person, author and co-authors, extensive e-Commerce product markup, product variations, product ratings, aggregate ratings, reviews, recipe information, event details, collection pages, profile pages, search pages, FAQ pages, item lists for Google’s Carousel Rich Results, and much more.

\n

Most complete Schema JSON-LD markup for WooCommerce products:

\n

Note that WooCommerce offers incomplete Schema markup for Google Rich Results by default. The WPSSO Core Premium plugin and this add-on provide a solution by offering complete product meta tags for Facebook / Pinterest and complete Schema product markup for Google Rich Results – including additional product images, product variations, product information (brand, color, condition, EAN, dimensions, GTIN-8/12/13/14, ISBN, material, MPN, size, SKU, volume, weight, etc), product reviews, product ratings, sale start / end dates, sale prices, pre-tax prices, VAT prices, shipping rates, shipping times, and much, much more.

\n

Fixes all Google Search Console and Schema Markup Validator (aka Google Structured Data Testing Tool) errors:

\n
    \n
  • A value for the headline field is required.
  • \n
  • A value for the image field is required.
  • \n
  • A value for the logo field is required.
  • \n
  • A value for the publisher field is required.
  • \n
  • The aggregateRating field is recommended.
  • \n
  • The brand field is recommended.
  • \n
  • The headline field is recommended.
  • \n
  • The image field is recommended.
  • \n
  • The mainEntityOfPage field is recommended.
  • \n
  • The review field is recommended.
  • \n
  • This Product is missing a global identifier (e.g. isbn, mpn or gtin8).
  • \n
  • No global identifier provided (e.g. gtin mpn isbn).
  • \n
  • Not a known valid target type for the itemReviewed property.
  • \n
  • And more…
  • \n
\n

Some Schema property values may require data from WPSSO Core Premium supported third-party plugins and service APIs.

\n

Google regularly updates and changes their Schema markup requirements – WPSSO JSON Premium customers can also open a Premium support ticket for timely assistance with any new Google testing tool errors.

\n

Users Love the WPSSO JSON Add-on

\n

★★★★★ – “Forget everything else this is the best schema plugin – Sincerely, we bought other plugins that we had to abandon due to the lack of important features, but with this [WPSSO JSON] we get all that we need – and our schema has more features than the competition!” – zuki305

\n

★★★★★ – “Tried three other plugins before this one – for our Woocommerce site, this was by far the best one. Thanks!” – EntoMarket

\n

★★★★★ – “Crazy good! This plugin is one of my favorites! JS aggressively develops and improves this suite of plugins, continuously improving and adding features – with great customer support to boot! Highly recommended to improve your SEO for all kinds of JSON schemas!” – mikegoubeaux

\n

★★★★★ – “This plugin is heaven sent. I know little about SSO and this has taken care of everything. The support makes this an even better plugin to have. Keep up the great work!” – kevanchetty

\n

WPSSO JSON Add-on Features

\n

Extends the features of the WPSSO Core plugin (required plugin).

\n

Provides accurate and comprehensive Schema JSON-LD markup for Google Rich Results (aka Rich Snippets) with Structured Data.

\n

Provides complete Schema ImageObject SEO markup with image information from the WordPress Media Library (name, alternateName, alternativeHeadline, caption, description, fileFormat, uploadDate, and more).

\n

Provides complete Schema VideoObject SEO markup with video information from WPSSO Core Premium service APIs (Facebook, Slideshare, Soundcloud, Vimeo, Wistia, YouTube) including the ’embedUrl’ and ‘contentUrl’ properties for Google.

\n

Provides Schema 1:1, 4:3, and 16:9 images for Google Rich Results (see the Google rich results search library for details).

\n

Provides Schema FAQPage and Question / Answer markup for the WPSSO FAQ Manager add-on.

\n

Includes Schema JSON-LD scripts from shortcodes and WordPress editor blocks in the Schema CreativeWork type and sub-types.

\n

Built-in support for AMP and AMP for WP plugins.

\n

Includes contributor markup for Co-Authors Plus authors and guest authors (WPSSO Core Premium plugin required).

\n

Supports additional custom product information and WooCommerce product attributes from the WPSSO Core Premium plugin:

\n
    \n
  • Product Availability
  • \n
  • Product Brand
  • \n
  • Product Color
  • \n
  • Product Condition
  • \n
  • Product Depth
  • \n
  • Product Fluid Volume
  • \n
  • Product GTIN-14
  • \n
  • Product GTIN-13 (EAN)
  • \n
  • Product GTIN-12 (UPC)
  • \n
  • Product GTIN-8
  • \n
  • Product GTIN
  • \n
  • Product ISBN
  • \n
  • Product Length
  • \n
  • Product Material
  • \n
  • Product MPN
  • \n
  • Product Price
  • \n
  • Product Size
  • \n
  • Product SKU
  • \n
  • Product Target Gender
  • \n
  • Product Type
  • \n
  • Product Weight
  • \n
  • Product Width
  • \n
\n

Provides Schema Product markup for Google price drop appearance in search results.

\n

Fixes common Google testing tool warnings like “aggregateRating field is recommended” and “review field is recommended”.

\n

Fixes Google testing tool warnings for supported WPSSO Core Premium e-commerce products, like “brand field is recommended”, “missing a global identifier”, etc.

\n

The WPSSO Schema JSON-LD Markup Standard add-on is designed to satisfy the requirements of most standard WordPress sites. If your content requires additional customization of some Schema properties for products, events, places / locations, recipes, etc., then you may want to get the WPSSO JSON Premium add-on for those additional features.

\n

[Premium] Includes additional customizable option values in the Document SSO metabox (shown based on the Schema Type selected):

\n
    \n
  • All Schema Types\n
      \n
    • Name (Title)
    • \n
    • Alternate Name
    • \n
    • Description
    • \n
    • Microdata Type URLs
    • \n
    • Same-As URLs
    • \n
    \n
  • \n
  • Creative Work Information\n
      \n
    • Is Part of URL
    • \n
    • Headline
    • \n
    • Full Text
    • \n
    • Keywords
    • \n
    • Language
    • \n
    • Family Friendly
    • \n
    • Copyright Year
    • \n
    • License URL
    • \n
    • Publisher (Org)
    • \n
    • Publisher (Person)
    • \n
    • Service Provider (Org)
    • \n
    • Service Provider (Person)
    • \n
    \n
  • \n
  • Event Information\n
      \n
    • Event Language
    • \n
    • Event Attendance
    • \n
    • Event Online URL
    • \n
    • Event Physical Venue
    • \n
    • Event Organizer (Org)
    • \n
    • Event Organizer (Person)
    • \n
    • Event Performer (Org)
    • \n
    • Event Performer (Person)
    • \n
    • Event Start (date, time, timezone)
    • \n
    • Event End (date, time, timezone)
    • \n
    • Event Offers Start (date, time, timezone)
    • \n
    • Event Offers End (date, time, timezone)
    • \n
    • Event Offers (name, price, currency, availability)
    • \n
    \n
  • \n
  • How-To\n
      \n
    • How-To Makes
    • \n
    • How-To Preparation Time
    • \n
    • How-To Total Time
    • \n
    • How-To Supplies
    • \n
    • How-To Tools
    • \n
    • How-To Steps (section name, section description, step name, direction text and image)
    • \n
    \n
  • \n
  • Job Posting Information\n
      \n
    • Job Title
    • \n
    • Hiring Organization
    • \n
    • Job Location
    • \n
    • Job Location Type
    • \n
    • Base Salary
    • \n
    • Employment Type
    • \n
    • Jpb Posting Expires
    • \n
    \n
  • \n
  • Movie Information\n
      \n
    • Cast Names
    • \n
    • Director Names
    • \n
    • Production Company
    • \n
    • Movie Runtime
    • \n
    \n
  • \n
  • Organization Information\n
      \n
    • Select an Organization
    • \n
    \n
  • \n
  • Person Information\n
      \n
    • Select a Person
    • \n
    \n
  • \n
  • Product Information (Additional)\n
      \n
    • Product Length (cm)
    • \n
    • Product Width (cm)
    • \n
    • Product Height (cm)
    • \n
    • Product Depth (cm)
    • \n
    • Product Fluid Volume (ml)
    • \n
    • Product GTIN-14
    • \n
    • Product GTIN-13 (EAN)
    • \n
    • Product GTIN-12 (UPC)
    • \n
    • Product GTIN-8
    • \n
    • Product GTIN
    • \n
    \n
  • \n
  • QA Page Information\n
      \n
    • QA Heading
    • \n
    \n
  • \n
  • Recipe Information\n
      \n
    • Recipe Cuisine
    • \n
    • Recipe Course
    • \n
    • Recipe Makes
    • \n
    • Cooking Method
    • \n
    • Preparation Time
    • \n
    • Cooking Time
    • \n
    • Total Time
    • \n
    • Recipe Ingredients
    • \n
    • Recipe Instructions
    • \n
    • Nutrition Information per Serving\n
        \n
      • Serving Size
      • \n
      • Calories
      • \n
      • Protein
      • \n
      • Fiber
      • \n
      • Carbohydrates
      • \n
      • Sugar
      • \n
      • Sodium
      • \n
      • Fat
      • \n
      • Saturated Fat
      • \n
      • Unsaturated Fat
      • \n
      • Trans Fat
      • \n
      • Cholesterol
      • \n
      \n
    • \n
    \n
  • \n
  • Review Information\n
      \n
    • Review Rating
    • \n
    • Rating Value Name
    • \n
    • Subject of the Review\n
        \n
      • Subject Webpage Type
      • \n
      • Subject Webpage URL
      • \n
      • Subject Same-As URL
      • \n
      • Subject Name
      • \n
      • Subject Description
      • \n
      • Subject Image ID or URL
      • \n
      • Claim Subject Information (for Claim Review)\n
          \n
        • Short Summary of Claim
        • \n
        • First Appearance URL
        • \n
        \n
      • \n
      • Creative Work Subject Information\n
          \n
        • C.W. Author Type
        • \n
        • C.W. Author Name
        • \n
        • C.W. Author URL
        • \n
        • C.W. Published Date
        • \n
        • C.W. Created Date
        • \n
        \n
      • \n
      • Book Subject Information\n
          \n
        • Book ISBN
        • \n
        \n
      • \n
      • Movie Subject Information\n
          \n
        • Movie Cast Names
        • \n
        • Movie Director Names
        • \n
        \n
      • \n
      • Product Subject Information\n
          \n
        • Product Brand
        • \n
        • Product Offers (name, price, currency, availability)
        • \n
        • Product SKU
        • \n
        • Product MPN
        • \n
        \n
      • \n
      • Software App Subject Information\n
          \n
        • Operating System
        • \n
        • Application Category
        • \n
        • Software App Offers (name, price, currency, availability)
        • \n
        \n
      • \n
      \n
    • \n
    \n
  • \n
  • Software Application Information\n
      \n
    • Operating System
    • \n
    • Application Category
    • \n
    \n
  • \n
\n

WPSSO Core Required

\n

WPSSO Schema JSON-LD Markup (WPSSO JSON) is an add-on for the WPSSO Core plugin.

\n","download_link":"https://downloads.wordpress.org/plugin/wpsso-schema-json-ld.4.18.1.zip","tags":{"rich-results":"rich results","rich-snippets":"rich snippets","schema-org":"schema.org","video-seo":"video seo","woocommerce":"woocommerce"},"donate_link":"","icons":{"1x":"https://ps.w.org/wpsso-schema-json-ld/assets/icon-128x128.png?rev=2480083","2x":"https://ps.w.org/wpsso-schema-json-ld/assets/icon-256x256.png?rev=2480083"},"wporg":true},{"name":"ShortPixel Image Optimizer","slug":"shortpixel-image-optimiser","version":"4.22.5","author":"ShortPixel","author_profile":"https://profiles.wordpress.org/shortpixel","requires":"4.2.0","tested":"5.8","requires_php":"5.6","rating":92,"ratings":{"1":53,"2":10,"3":8,"4":11,"5":544},"num_ratings":626,"support_threads":10,"support_threads_resolved":8,"active_installs":300000,"downloaded":6869327,"last_updated":"2021-08-31 5:54pm GMT","added":"2014-11-05","homepage":"https://shortpixel.com/","short_description":"Speed up your website & boost your SEO by compressing old & new images and PDFs. AVIF & WebP convert and optimize support.","description":"

A freemium, easy to use, comprehensive, stable and frequently updated image compression plugin supported by the friendly team that created it. 🙂

\n

Increase your website’s SEO ranking, number of visitors and ultimately your sales by optimising any image or PDF document on your website.
\nShortPixel is an easy to use, lightweight, install-and-forget-about-it image optimization plugin that can compress all your past images and PDF documents with a single click. New images are automatically resized/rescaled and optimized on the fly, in the background. It’s also compatible with any gallery, slider or ecommerce plugin.

\n

Ready for a quick DEMO? Test our plugin here.
\nOr you can create a staging copy of your site using WP Staging and test it there.

\n

Short Pixel uses minimal resources and works well with any shared, cloud, VPS or dedicated web hosting. It can optimize any image you have on your website even the images that aren’t listed in Media Library like those in galleries like NextGEN, Modula or added directly via FTP!

\n

Both lossy and lossless image compression are available for the most common image types (JPG, PNG, GIF, WebP and AVIF) plus PDF files.
\nWe also offer glossy JPEG compression which is a very high quality lossy optimization algorithm. Specially designed for photographers!
\nOptimized images mean better user experience, better PageSpeed Insights or GTmetrix results, better Google PageRank and more visitors.

\n

Make an instant image compression test of your site or compress some images to test our optimization algorithms.

\n

Why is ShortPixel the best choice when it comes to image optimization or PDF compression?

\n
    \n
  • popular plugin with over 300,000 active installations – according to WordPress
  • \n
  • compress JPG (and its variations JPEG, JPEG 2000, JPEG XR), PNG, GIF (still or animated) images and also PDF documents
  • \n
  • option to convert any JPEG, PNG or GIF (even animated ones!) to WebP and AVIF for more Google love. How to enable WebP?. What is AVIF and why is it good?.
  • \n
  • option to automatically convert PNG to JPG if that will result in smaller images. Ideal for large images in PNG format
  • \n
  • option to include the next generation images (WebP and AVIF) into the front-end pages by using the <picture> tag instead of <img>, independent from generating them through the plugin
  • \n
  • compatible with WP Retina 2x – all retina images are automatically compressed. How to benefit from Retina displays?
  • \n
  • optimize thumbnails as well as featured images. You can also select individual thumbnails to exclude from optimization
  • \n
  • ability to optimize any image on your site including images in NextGEN Gallery and any other image galleries or sliders
  • \n
  • option to scale images down, with 2 different options, which is very useful to automatically resize large images. This applies to the featured images and there is no need for additional plugins like Imsanity
  • \n
  • CMYK to RGB conversion
  • \n
  • skip already optimized images
  • \n
  • 24h stellar support (24/7) directly from developers.
  • \n
  • easily test lossy/glossy/lossless versions of the images with a single click in your Media Library
  • \n
  • great for photographers: keep or remove EXIF data from your images, compress photos with lossless option
  • \n
  • works well with both HTTPS and HTTP websites
  • \n
  • uses progressive JPEG for larger images in order to speed up the image display
  • \n
  • you can run ShortPixel plugin on multiple websites or on a multisite with a single API Key
  • \n
  • it is safe to test and use the plugin: all the original images are by default saved in a local backup that can be restored with a click, either one by one or in bulk
  • \n
  • ‘Bulk’ optimize all the existing images in Media Library or in any gallery with one click
  • \n
  • works great for eCommerce websites using WooCommerce or other plugins
  • \n
  • works great with NextGEN gallery, Foo Gallery and any other galleries and sliders
  • \n
  • compatible with WP Engine hosted websites and all the major hosting providers
  • \n
  • compatible with WPML and WPML Media plugins
  • \n
  • no file size limit
  • \n
  • integrates with Gravity Forms post_image field type optimizing the images upon upload
  • \n
  • compatible with watermarking plugins
  • \n
  • option to deactivate auto-optimizing images on upload
  • \n
  • no credits are used for the images that are optimised less that 5%
  • \n
  • direct integration with CloudFlare, either by using an API Key or a Token
  • \n
  • 30 days optimization report with all image details and overall statistics
  • \n
  • We are GDPR compliant! Read more.
  • \n
  • free optimization credits for non-profits, contact us for details
  • \n
\n

How much does it cost?
\nShortPixel comes with 100 free credits/month and additional credits can be bought for as little as $4.99 for 5,000 image credits.
\nCheck out our prices.

\n
\n

Testimonials:
\n ★★★★★ A Super Plugin works very well 62% reduction overall. robertvarns
\n ★★★★★ The secret sauce for a WordPress website. mark1mark
\n ★★★★★ A must have plugin, great support! ElColo13
\n ★★★★★ Excellent Plugin! Even Better Customer Service! scaliendo
\n ★★★★★ Great image compression, solid plugin, equally great support. matters1959
\n more testimonials

\n
\n\n

Help us spread the word by recommending ShortPixel to your friends and collect 100 lifetime monthly additional image credits for each referred active user. Make money by promoting a great plugin with our 30% commission affiliate program.

\n

Other plugins by ShortPixel

\n\n

Get in touch!

\n\n

Actions and Filters for Developers

\n

The ShortPixel Image Optimiser plugin calls the following actions and filters:

\n
do_action( 'shortpixel_image_optimised', $post_id );\n
\n

upon successful optimization;

\n
do_action(\"shortpixel_before_restore_image\", $post_id);\n
\n

before restoring an image from backup;

\n
do_action(\"shortpixel_after_restore_image\", $post_id);\n
\n

after succesful restore;

\n
apply_filters(\"shortpixel_backup_folder\", $backup_folder, $main_file_path, $sizes);\n
\n

just before returning the ShortPixel backup folder, usually /wp-content/uploads/ShortpixelBackups. The $sizes are the sizes array from metadata;

\n
apply_filters('shortpixel_image_exists', file_exists($path), $path, $post_id);\n
\n

post ID is not always set, only if it’s an image from Media Library;

\n
apply_filters('shortpixel_image_urls', $URLs, $post_id);\n
\n

filters the URLs that will be sent to optimisation, $URLs is a plain array;

\n
apply_filters('shortpixel/db/chunk_size', $chunk);\n
\n

the $chunk is the value ShortPixel chooses to use as number of selected records in one query (based on total table size), some hosts work better with a different value;

\n
apply_filters('shortpixel/backup/paths', $PATHs, $mainPath);\n
\n

filters the array of paths of the images sent for backup and can be used to exclude certain paths/images/thumbs from being backed up, based on the image path. $mainPath is the path of the main image, while $PATHs is an array with all files to be backed up (including thumbnails);

\n
apply_filters('shortpixel/settings/image_sizes', $sizes);\n
\n

filters the array ($sizes) of image sizes which can be excluded from processing (displayed in the plugin Advanced settings).

\n

In order to define custom thumbnails to be picked up by the optimization you have two options, both comma separated defines:

\n
define('SHORTPIXEL_CUSTOM_THUMB_SUFFIXES', '_tl,_tr');\n
\n

will handle custom thumbnails like image-100x100_tl.jpg;

\n
define('SHORTPIXEL_CUSTOM_THUMB_INFIXES', '-uae');\n
\n

will handle custom thumbnails like image-uae-100×100.jpg;

\n
define('SHORTPIXEL_USE_DOUBLE_WEBP_EXTENSION', true);\n
\n

will tell the plugin to create double extensions for the WebP image counterparts, for example image.jpg.webp for image.jpg;

\n
define(\"SHORTPIXEL_NOFLOCK\", true);\n
\n

don’t use flock queue, only activate this when you have flock() denied errors on your installation;

\n
define(\"SHORTPIXEL_EXPERIMENTAL_SECURICACHE\", true);\n
\n

adds timestamps to URLS, to prevent hitting the cache. Useful for persistent caches.

\n

Hide the Cloudflare settings by defining these constants in wp-config.php:

\n
define('SHORTPIXEL_CFTOKEN', 'the Cloudflare API token that has Purge Cache right');\ndefine('SHORTPIXEL_CFZONE', 'The Zone ID from the domain settings in Cloudflare');\n
\n

Hide the WSO banner in the settings by defining this constant in wp-config.php:

\n
define('SHORTPIXEL_NO_BANNER', true);\n
\n

Alternatively, you can use this filter in your theme’s functions.php file:

\n
add_filter('shortpixel/settings/no_banner', true);\n
\n","download_link":"https://downloads.wordpress.org/plugin/shortpixel-image-optimiser.4.22.5.zip","tags":{"compressor":"compressor","convert-webp":"convert webp","image-optimization":"image optimization","optimize-images":"optimize images","resize":"resize"},"donate_link":"","icons":{"1x":"https://ps.w.org/shortpixel-image-optimiser/assets/icon-128x128.png?rev=1038819","2x":"https://ps.w.org/shortpixel-image-optimiser/assets/icon-256x256.png?rev=1038819"},"wporg":true},{"name":"Theme Kit for Twenty Twenty-One & Twenty Twenty (Customization, Gutenberg Blocks, Templates) – Twentig","slug":"twentig","version":"1.3.5","author":"Twentig","author_profile":"https://profiles.wordpress.org/twentig","requires":"5.5","tested":"5.8","requires_php":"5.6","rating":100,"ratings":{"1":0,"2":0,"3":0,"4":2,"5":106},"num_ratings":108,"support_threads":33,"support_threads_resolved":30,"active_installs":10000,"downloaded":139344,"last_updated":"2021-08-10 11:02am GMT","added":"2019-05-29","homepage":"https://twentig.com","short_description":"Supercharge your WordPress theme (Twenty Twenty-One & Twenty Twenty) with customization options, enhanced Gutenberg blocks,…","description":"

The easy way to build a beautiful website.

\n

Twentig helps you customize the default WordPress theme (Twenty Twenty-One and Twenty Twenty) the way you want with Google Fonts, colors, custom layouts, and many more options.

\n

With enhanced Gutenberg blocks, pre-designed block templates, and starter websites, you’ve got everything you need to build stunning pages that look great on any device — no coding or design skills needed.

\n
\n

“Twentig is a plugin that essentially gives superpowers to the default theme.” — Justin Tadlock, WP Tavern

\n
\n

Customize the most popular WordPress theme. Your way.

\n

Twentig offers powerful features to customize the Twenty Twenty-One and Twenty Twenty themes — making it easier than ever to create your own professional website.

\n

Advanced theme customization. From post grid to sidebar to sticky header to footer layout, our plugin provides endless ways to enhance your WordPress theme. Change the look and feel of your website by customizing the fonts (Google Fonts), colors, global styles, 404 page, and more.

\n

Custom page templates. Control the look of your entire page with our page templates. Easily remove the page title, header, footer, or set a transparent header. Now you can use Gutenberg blocks to create a custom hero, landing page, coming soon page, and more.

\n

Tailored design. Twentig brings design improvements to the default WordPress theme. Our additional block settings and pre-designed block templates are specially built for it — so it’s simple to make beautiful pages with Gutenberg blocks.

\n

Start with a pre-built website.

\n

Instead of starting from scratch, you can quickly import one of Twentig’s starter websites crafted by award-winning designers.

\n

The simple way to import starter websites. Choose from a variety of starter websites and seamlessly load them in a few seconds in the Customizer. Preview and customize your theme any way you like before publishing it to your live site.

\n

Flexible import. Twentig lets you import full websites (Customizer settings, menus, widgets, and pages built with Gutenberg blocks). You can also only import what you need, be it the styling or the pages, on a fresh install or an existing website.

\n

Check out the starter websites to see the power and flexibility of Twentig.

\n

Do more with Gutenberg blocks.

\n

Twentig enhances the existing Gutenberg blocks — taking the WordPress block editor to a new level of design and creativity.

\n

Block customization made easy. We’ve added the right amount of features to the Gutenberg core blocks. So you can easily customize your blocks to fit your needs with just a few clicks.

\n

Powerful Gutenberg block features. Twentig provides alternative styles, advanced block settings, margin controls, and CSS classes. From columns style to group shape divider to typography settings, you have the best tools to customize the Gutenberg blocks and build gorgeous pages.

\n

Build your pages with ready-to-use templates.

\n

Twentig brings hundreds of pre-designed block patterns and page templates — making it easier and faster than ever to create stunning pages.

\n

Flexible block templates. Choose from a variety of versatile block patterns and page templates that you can mix and match to fit your project. Our block template library is designed to enable a wide range of uses and endless design possibilities.

\n

Professional design. Our templates are responsive and give your pages a professional look right from the start — no coding or design skills needed.

\n

Twentig features list

\n

Check out the screenshots to see how Twentig can transform your theme and the Gutenberg blocks.

\n

ADDITIONAL THEME OPTIONS

\n

Header

\n
    \n
  • Header layouts
  • \n
  • Sticky header
  • \n
  • Header width
  • \n
  • Header decoration
  • \n
  • Additional elements: search bar, social icons, button
  • \n
  • Logo width
  • \n
  • Custom logo for transparent header
  • \n
  • Menu link style
  • \n
  • Option to display the burger menu on tablet
  • \n
\n

Footer

\n
    \n
  • Footer layouts
  • \n
  • Footer widgets layout
  • \n
  • Footer width
  • \n
  • Custom copyright and remove “Powered by WordPress”
  • \n
  • Social icons
  • \n
\n

Site Layout

\n
    \n
  • Text width
  • \n
  • Wide width (Twenty Twenty-One theme)
  • \n
  • Site width to create a boxed layout site (Twenty Twenty-One theme)
  • \n
\n

Blog Posts Page

\n
    \n
  • Option to display the page title (Twenty Twenty-One theme)
  • \n
  • Blog layouts: stack, post grid, post grid card
  • \n
  • Blog sidebar (Twenty Twenty-One theme)
  • \n
  • Number of columns for post grid layouts
  • \n
  • Featured image options
  • \n
  • Blog content options
  • \n
  • Blog meta options
  • \n
  • Pagination style (Twenty Twenty-One theme)
  • \n
\n

Single Blog Post

\n
    \n
  • Featured image and post title layouts
  • \n
  • Blog sidebar (Twenty Twenty-One theme)
  • \n
  • Option to display the manual excerpt below the title
  • \n
  • Single post meta options
  • \n
  • Post navigation layout (Twenty Twenty theme)
  • \n
  • Hide comments section
  • \n
\n

Typography & Colors

\n
    \n
  • Google Fonts options (curated collection and custom Google Fonts)
  • \n
  • Google Fonts pairings and Google Fonts presets
  • \n
  • Font settings
  • \n
  • Color options
  • \n
\n

Pages

\n
    \n
  • Custom page templates: remove the page title, header, and footer, or set a transparent header
  • \n
  • Featured image and page title layouts
  • \n
\n

Custom 404 Page

\n
    \n
  • Option to assign any page as the 404 page
  • \n
\n

Additional Settings

\n
    \n
  • Minimal style for links (Twenty Twenty-One theme)
  • \n
  • Button style
  • \n
  • Separator style
  • \n
  • Social icons style (Twenty Twenty theme)
  • \n
\n

ADDITIONAL GUTENBERG BLOCK SETTINGS

\n
    \n
  • Gutenberg core blocks: top margin and bottom margin
  • \n
  • Group: shadow, border, shape divider, full height
  • \n
  • Columns: gutter, responsive layout, columns style (card, border), text alignment, stretched link
  • \n
  • Media & Text: styles (shadow, overlap), responsive layout, reverse stack order, stretched link, full height
  • \n
  • Cover: styles (shadow, inner border), stretched link, hover effect
  • \n
  • Heading: typography options, decoration
  • \n
  • Paragraph: wide width, typography options
  • \n
  • List: styles (dash, checkmark, arrow, border, no bullet, inline), typography options, spacing
  • \n
  • Image: styles (rounded, shadow, frame, border), image filter
  • \n
  • Gallery: stack variation, styles (rounded, frame), fixed width columns, image aspect ratio, gutter, responsive layout, caption size, border, image filter
  • \n
  • YouTube, Vimeo, SoundCloud, and Video blocks: style (frame)
  • \n
  • Latest Posts: styles (card, border), image aspect ratio, heading size, stretched link, text alignment
  • \n
  • Social Icons: hover effect
  • \n
  • Quote: additional styles
  • \n
  • Pullquote: additional styles
  • \n
  • Table: styles (border, inner border), vertical alignment
  • \n
  • Separator: style (short line), responsive visibility
  • \n
  • Spacer: responsive visibility
  • \n
\n

GUTENBERG TEMPLATE LIBRARY

\n

Hundreds of Gutenberg block patterns grouped by following categories:

\n
    \n
  • Columns
  • \n
  • Text Columns
  • \n
  • Text and Image
  • \n
  • Text
  • \n
  • Hero
  • \n
  • Cover
  • \n
  • Call to Action
  • \n
  • List
  • \n
  • Numbers, Stats
  • \n
  • Gallery
  • \n
  • Video, Audio
  • \n
  • Latest Posts
  • \n
  • Contact
  • \n
  • Team
  • \n
  • Testimonials
  • \n
  • Logos, Clients
  • \n
  • Pricing
  • \n
  • FAQ
  • \n
  • Events, Schedule
  • \n
\n

Dozens of pre-designed page templates grouped by following categories:

\n
    \n
  • Homepage
  • \n
  • About
  • \n
  • Services
  • \n
  • Contact
  • \n
  • Single Page
  • \n
\n

Get more

\n\n

Enjoying Twentig?

\n\n","download_link":"https://downloads.wordpress.org/plugin/twentig.1.3.5.zip","tags":{"gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","templates":"templates","theme":"theme","twenty-twenty-one":"twenty-twenty-one"},"donate_link":"https://www.paypal.com/donate?hosted_button_id=JTBTPQAFEA94E","icons":{"1x":"https://ps.w.org/twentig/assets/icon.svg?rev=2569439","2x":"https://ps.w.org/twentig/assets/icon-256x256.png?rev=2569439","svg":"https://ps.w.org/twentig/assets/icon.svg?rev=2569439"},"wporg":true},{"name":"Custom Post Type UI","slug":"custom-post-type-ui","version":"1.9.2","author":"WebDevStudios","author_profile":"https://profiles.wordpress.org/williamsba1","requires":"5.5","tested":"5.7.2","requires_php":"5.6","rating":94,"ratings":{"1":12,"2":3,"3":6,"4":9,"5":202},"num_ratings":232,"support_threads":63,"support_threads_resolved":28,"active_installs":1000000,"downloaded":8723895,"last_updated":"2021-06-17 2:40am GMT","added":"2010-02-26","homepage":"https://github.com/WebDevStudios/custom-post-type-ui/","short_description":"Admin UI for creating custom post types and custom taxonomies for WordPress","description":"

Custom Post Type UI provides an easy to use interface for registering and managing custom post types and taxonomies for your website.

\n

While CPTUI helps solve the problem of creating custom post types, displaying the data gleaned from them can be a whole new challenge. That’s why we created Custom Post Type UI Extended. View our Layouts page to see some examples that are available with Custom Post Type UI Extended.

\n

Official development of Custom Post Type UI is on GitHub, with official stable releases published on WordPress.org. The GitHub repo can be found at https://github.com/WebDevStudios/custom-post-type-ui. Please use the Support tab for potential bugs, issues, or enhancement ideas.

\n

Pluginize was launched in 2016 by WebDevStudios to promote, support, and house all of their WordPress products. Pluginize is not only creating new products for WordPress all the time, like CPTUI Extended, but also provides ongoing support and development for WordPress community favorites like CMB2 and more.

\n","download_link":"https://downloads.wordpress.org/plugin/custom-post-type-ui.zip","tags":{"cms":"cms","cpt":"cpt","custom-post-types":"custom post types","post":"post","types":"types"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=3084056","icons":{"1x":"https://ps.w.org/custom-post-type-ui/assets/icon-128x128.png?rev=2549362","2x":"https://ps.w.org/custom-post-type-ui/assets/icon-256x256.png?rev=2549362"},"wporg":true},{"name":"Flex Posts – Widget and Gutenberg Block","slug":"flex-posts","version":"1.8.1","author":"Tajam","author_profile":"https://profiles.wordpress.org/tajam","requires":"5.2","tested":"5.8","requires_php":false,"rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":17},"num_ratings":17,"support_threads":8,"support_threads_resolved":5,"active_installs":3000,"downloaded":24569,"last_updated":"2021-07-29 10:41am GMT","added":"2018-05-10","homepage":"https://tajam.id/flex-posts/","short_description":"A widget to display posts with thumbnails in various layouts. Fits nicely in any widget…","description":"

Flex Posts is a widget to display posts in various different layouts. It is useful for a news site where you need to display a lot of posts in a page.

\n

The widget is responsive so you can place it in any widget area. The widget content will adapt based on the width of its container. In a narrow area like standard sidebar, posts will be displayed vertically, but in a wider area, posts will be displayed in 2 or 3 columns depends on the container’s width.

\n

Widget Settings

\n
    \n
  • Title: Set the widget title. Leave it empty to hide the title section.
  • \n
  • Title URL: Set the title link url. Leave it empty to disable link in the title.
  • \n
  • Layout: Select a widget layout, from layout 1 to 4.
  • \n
  • Post type: Select the post type. Options include: Post, Page, custom post types if available, and any.
  • \n
  • Category: Select a category for the posts, or choose All Categories to disable this filter.
  • \n
  • Tag(s): Set a post tag (using the tag slug). You can also use comma separated value for multiple tags. Prepending a tag with a hyphen will exclude posts matching that tag. Eg, featured, -video will show posts tagged with featured but not video.
  • \n
  • Order by: Set the order in which the posts will be displayed. Options include: Newest, Oldest, Most Commented, Alphabetical, Random, Modified Date.
  • \n
  • Number of posts to show: Set the number of posts displayed.
  • \n
  • Number of posts to skip: Set the number of posts to displace or pass over.
  • \n
  • Show image on: Select in which posts the image will be displayed. Options include: All posts, First post only, or none.
  • \n
  • Image size: Select image size from registered image sizes.
  • \n
  • Show post title: Choose to show or hide the post title.
  • \n
  • Show categories: Choose to show or hide the categories.
  • \n
  • Show author: Choose to show or hide the author.
  • \n
  • Show date: Choose to show or hide the date.
  • \n
  • Show comments number: Choose to show or hide the comments number.
  • \n
  • Show excerpt: Choose to show or hide the excerpt
  • \n
  • Excerpt length: Set the number of words for the excerpt.
  • \n
  • Show read more link: Choose to show or hide the Read More link.
  • \n
  • Read more text: Set the text for the read more link. You can leave it empty to use the default text Read More.
  • \n
  • Show pagination: Choose to show or hide the pagination links.
  • \n
  • Additional class(es): Set a custom class for the widget container. You can use spaces to separate multiple classes.
  • \n
\n

Gutenberg Block

\n

Since version 1.1.0, Flex Posts also includes a gutenberg block. You can add the widget directly into the post/page content with the WP 5.0 block editor.

\n

Demo

\n

Please visit the live demo here: Flex Posts Demo

\n

Requirements

\n

This plugin has been tested and works with at least PHP 5.3 installed in your environment. But we strongly recommend you to use the latest PHP version, as using older versions may expose you to security vulnerabilities.

\n","download_link":"https://downloads.wordpress.org/plugin/flex-posts.zip","tags":{"category-posts":"category posts","grid":"grid","magazine":"magazine","news":"news","responsive":"responsive"},"donate_link":"https://tajam.id/","icons":{"1x":"https://ps.w.org/flex-posts/assets/icon-128x128.png?rev=1871802"},"wporg":true},{"name":"YARPP – Yet Another Related Posts Plugin","slug":"yet-another-related-posts-plugin","version":"5.27.4","author":"YARPP","author_profile":"https://profiles.wordpress.org/jeffparker","requires":"3.7","tested":"5.8","requires_php":"5.3","rating":94,"ratings":{"1":33,"2":2,"3":14,"4":45,"5":627},"num_ratings":721,"support_threads":26,"support_threads_resolved":12,"active_installs":100000,"downloaded":6487281,"last_updated":"2021-08-25 5:56pm GMT","added":"2008-01-02","homepage":"https://yarpp.com/","short_description":"The best WordPress plugin for displaying related posts. Simple and flexible, with a powerful proven algorithm and inbuilt caching.","description":"

Related Posts Plugin for WordPress

\n

Yet Another Related Posts Plugin (YARPP) is a professionally maintained, highly customizable, performant and feature rich plugin that displays pages, posts, and custom post types related to the current entry. YARPP introduces your visitors to other relevant content on your site — boosting visitor engagement, time on site and SEO. Related Posts can increase your pageviews up to 10%. Simply install, activate and watch your sessions and pageviews increase.

\n

Key Features

\n
    \n
  • An advanced and versatile algorithm: Using a customizable algorithm considering post titles, content, tags, categories, and custom taxonomies, YARPP finds related content from across your site
  • \n
  • Caching: Inbuilt cache makes subsequent queries super efficient and fast
  • \n
  • Custom Templates and Styles: Use a pre-built list or thumbnail template, or use the YARPP custom templating system for 100% control of how results are styles and displayed
  • \n
  • Flexible with a full range of placement options, including:\n\n
  • \n
  • Works with all languages, including those with full-width (double-byte) characters and those that don’t use spaces between words
  • \n
  • Custom post type and taxonomy support
  • \n
  • WordPress Multisite support
  • \n
  • bbPress forums support
  • \n
  • WooCommerce support
  • \n
  • Professionally maintained and supported with regular updates
  • \n
\n

YARPP Algorithm Explained

\n

\n

Contribute: Translate YARPP

\n

YARPP is available for translation directly on WordPress.org. Please check out the official Translator Handbook.

\n

Wide Support

\n

YARPP is the most popular and the highest rated Related Posts Plugin for WordPress. With your support, this plugin always strives to be the best WordPress plugin for Content Discovery and Related Posts.

\n

✔ Over 10 years of development
\n✔ Over 6 million downloads
\n✔ Translated into more than a dozen languages
\n✔ Professionally maintained and actively supported with regular updates
\n✔ Works with all languages

\n

YARPP works best with PHP 5.3 or greater, MySQL 5.6 or greater OR MariaDB 10.1 or greater, and WordPress 3.7 or greater. See the FAQ for answers to common questions.

\n","download_link":"https://downloads.wordpress.org/plugin/yet-another-related-posts-plugin.5.27.4.zip","tags":{"contextual-related-posts":"contextual related posts","posts":"posts","related-posts":"related posts","seo":"seo","similar-posts":"similar posts"},"donate_link":"https://yarpp.com","icons":{"1x":"https://ps.w.org/yet-another-related-posts-plugin/assets/icon-128x128.png?rev=2549977","2x":"https://ps.w.org/yet-another-related-posts-plugin/assets/icon-256x256.png?rev=2549977"},"wporg":true},{"name":"Superb WordPress Table (SEO Optimized Tables With Schema)","slug":"superb-tables","version":"1.0.8","author":"SuPlugins","author_profile":"https://profiles.wordpress.org/suplugins","requires":"3.0.1","tested":"5.7.2","requires_php":"5.2.4","rating":80,"ratings":{"1":0,"2":1,"3":0,"4":0,"5":2},"num_ratings":3,"support_threads":1,"support_threads_resolved":1,"active_installs":4000,"downloaded":34011,"last_updated":"2021-05-26 8:49pm GMT","added":"2019-03-05","homepage":"https://superbthemes.com/plugins/superb-tables/","short_description":"Responsive & SEO Optimized tables. Get your Google Featured Snippets. Different table designs, table shortcodes…","description":"

Responsive & SEO Optimized tables. Get your Google Featured Snippets. Different table designs, table shortcodes & lightweight code.

\n

Click here to view the demo!

\n

Features

\n
    \n
  • Table Shortcodes
  • \n
  • Multiple Color Schemes
  • \n
  • Use Themes Own Table Design
  • \n
  • Schema Markup (Micro Data)
  • \n
  • Create Unlimited Tables
  • \n
  • Create Unlimited Rows
  • \n
  • Create unlimited Columns
  • \n
  • SEO-friendly Tables With Schema markup
  • \n
  • Purple Color Scheme
  • \n
  • Black/White Color Scheme
  • \n
  • Swap around on columns & rows with drag n’ drop
  • \n
  • Delete Tables & Remove Them From Your Database
  • \n
  • Gives you a better chance to get Google Featured Snippets
  • \n
  • Friendly User Support)
  • \n
  • GDPR Compliant
  • \n
  • W3C Valid Code
  • \n
  • WYSIWYG Functionality Editor
  • \n
\n

Configuring the plugin

\n

Once you’ve installed the plugin, check the left sidebar, and you will notice the Superb Table section. Click on it, and you can now create your first table. Just click on the Add New Table button.

\n

Feel free to add as many columns and rows as you want—inserting rows and columns is extremely easy.

\n

You have a few options to make your table stand apart. First, choose one of the three color schemes: standard, purple, or black. Second, choose your table design: default or custom. Block, left, and inline-block are the floating modes for your table. Finally, enable or disable the full width of the table.

\n

Once you finish your table, name it and save it. All you have to do now is to copy the shortcode and paste wherever you want, you can for example embed it in the Gutenberg Shortcode Block! (It works in the classic WordPress editor too)

\n

Consider purchasing our premium version for $11 to unlock more features!

\n

Why use a HTML table

\n

Displaying data within a comparison table is beneficial for not only readers but also content creators. A table does a better job than long paragraphs of text, underlined phrases, and bulleted lists. It shows a lot of information side by side in a concise format. Bloggers and content creators should create tables and insert the data. There’s no need to search for breathtaking expressions, cool descriptions, or digestible lists of items. It’s just pure data, and everyone is happy with this situation. You can read our full guide on How to Add a Table to Your WordPress Website with Superb Tables.

\n

Responsive Tables

\n

We developed Superb Tables mobile friendly by taking responsiveness into account, and as a result, you can make a WordPress table responsive by using our plugin. The tables are fully responsive regardless of the number of rows and columns. The plugin works on all mobile devices and tablets (iPhone, Android etc.). The plugin works with AMP.

\n

SEO Friendly WordPress Tables With Schema Markup

\n

“Schema markup“ and “featured snippets“ are two interconnected terms that are being used by more and more bloggers, SEO practitioners, and developers. Have you noticed that Google now provides complex answers in the form of lists, tables, paragraphs, or videos directly on the results page? Those are featured snippets.

\n

Moz claims that 23% of all search results include a featured snippet—a descriptive box displayed on the search results page providing information for your query. It may include paragraphs, lists, videos, or tables. You have to consider featured snippets when choosing a table plugin—can it help Google generate a featured snippet from the data within your table?

\n

We developed Superb Tables with featured snippets in mind, and you can use the plugin worry-free. We used schema markup, which is the code that helps search engine bots generate snippets from your content, including tables. It’s a great way for affiliate websites and blogs to promote their content.

\n

You must use WordPress tables with schema markup to get featured snippets on search engines, and Superb Tables is a reliable solution in this respect.

\n

Add Tables everywhere & use them for Any Purpose

\n

You can insert the SEO optimised tables with microdata everywhere through the shortcode. For example in a popup, widgets, Gutenberg blocks, email newsletter sent from your WordPress website. You can also insert it on any post or page, even category pages, blog feed, search page and your 404 page! The plugin is made for affiliates marketers and affiliate websites, having a good SERP rank in Google and Bing is critical. When you’re looking to improve your ranking then all of your plugins must be SEO optimized, otherwise it’s gonna be hard to create monetization through ads programs such as AdSense and Amazon Associates Program.

\n

We know that business is important for any modern blog or affiliate marketing website that’s looking to make a revenue from it. Remember to use HTTPS (SSL) on your website, a CDN and lightweight stats tracking tools such as Google Analytics to better your SEO as well.

\n

Guide to creating your Superb Tables

\n
    \n
  1. In the wordpress admin panel, go to the sidebar and click ‘Superb Tables’.
  2. \n
  3. Click the green ‘Add new table’ in the top left corner
  4. \n
  5. Fill in your table data, click ‘Save’
  6. \n
  7. Click ‘Superb Tables’ in the left sidebar and copy paste the ‘Table Shortcode’
  8. \n
  9. Insert the Table Shortcode (For example [spbtbl_sc id=1] ) in a post, page, widget or in HTML.
  10. \n
\n

You’re done!

\n

Resources & Inspiration

\n
    \n
  • Auto-Expand: https://codepen.io/vsync/pen/frudD
  • \n
  • Data Table: https://codepen.io/alassetter/pen/cyrfB
  • \n
  • Table DnD: https://github.com/isocra/TableDnD/
  • \n
  • Table icon: https://www.iconfinder.com/icons/1608863/table_icon#size=256
  • \n
  • Custom confirm: https://codepen.io/Ana_Champion/pen/JRbZEL
  • \n
  • Table design inspiration: https://codepen.io/lukepeters/pen/bfFur
  • \n
  • Table design inspiration: https://codepen.io/alassetter/pen/cyrfB
  • \n
  • Table design inspiration: https://uicookies.com/wp-content/uploads/2018/05/table-responsive-v2-1000×750.jpg
  • \n
  • Table design inspiration: https://uicookies.com/wp-content/uploads/2018/05/table-responsive-v1.jpg
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/superb-tables.1.0.8.zip","tags":{"content-tables":"content tables","responsive-tables":"responsive tables","table":"table","tables":"tables"},"donate_link":"","icons":{"1x":"https://ps.w.org/superb-tables/assets/icon-256x256.png?rev=2044672","2x":"https://ps.w.org/superb-tables/assets/icon-256x256.png?rev=2044672"},"wporg":true},{"name":"Floating Button","slug":"floating-button","version":"4.3","author":"Wow-Company","author_profile":"https://profiles.wordpress.org/wpcalc","requires":"3.2","tested":"5.8","requires_php":"5.3","rating":80,"ratings":{"1":1,"2":1,"3":0,"4":0,"5":5},"num_ratings":7,"support_threads":1,"support_threads_resolved":0,"active_installs":2000,"downloaded":32546,"last_updated":"2021-07-21 5:47am GMT","added":"2018-09-08","homepage":"https://wordpress.org/plugins/floating-button/","short_description":"Easily create a custom sticky floating buttons. The Floating Button will be the effective solution for increasing the recognition of your web resource","description":"

The Floating Button is the free WordPress plugin for creating the original sticky floating actions buttons. It allows you to install on the site floating buttons with unique thematic icons. The extension serves for placing both traditional navigation bar and additional block with useful information for user.

\n

The Floating Button plugin will be the effective solution for increasing the recognition of your web resource. Its connection will bring originality and novelty to the used theme of the site. The extension helps to configure user-friendly navigation, place useful information or contact panel.

\n

Main features

\n
    \n
  • 2 submenu;
  • \n
  • more than 1500+ FontAwesome icons;
  • \n
  • any links insertion;
  • \n
  • using the tooltips to provide more information;
  • \n
  • round buttons shape;
  • \n
  • LogIn link;
  • \n
  • LogOut link;
  • \n
  • Lost password link
  • \n
\n

Floating Button can be used for:

\n
    \n
  • site navigation;
  • \n
  • additional menu;
  • \n
  • social panel;
  • \n
  • user menu;
  • \n
  • Skype menu and others;
  • \n
  • And more…
  • \n
\n

Pro version

\n

Connect the Pro-version of the plugin to gain access to more features:

\n

Preview of Pro version

\n
    \n
  • create an unlimited amount of buttons;
  • \n
  • use up to 4 floating button positions;
  • \n
  • change the form of the menu display: Circle, Rounded square, Ellipse, Square;
  • \n
  • set the color of the main button and submenu items;
  • \n
  • accompany the change in navigation behavior with the highlight when hovering the mouse cursor;
  • \n
  • use the built-in user menu, social panel and print function;
  • \n
  • set the display according to the user role and status;
  • \n
  • change the menu output depending on the language of the page;
  • \n
  • add restrictions for screens with large or small resolution;
  • \n
  • use the categories on the site, exceptions and ID to place the menu on individual pages;
  • \n
  • insert the shortcode of the panel in the specified location;
  • \n
  • And more…
  • \n
\n

Buy Pro version

\n

Use with other plugins to maximize your results

\n\n

Support

\n

Search for answers and ask your questions at support center

\n","download_link":"https://downloads.wordpress.org/plugin/floating-button.4.3.zip","tags":{"circle-menu":"circle menu","float-menu":"float menu","floating-button":"floating button","floating-menu":"floating menu","sticky-button":"sticky button"},"donate_link":"https://wow-estore.com/item/floating-button-pro/","icons":{"1x":"https://ps.w.org/floating-button/assets/icon-128x128.png?rev=2533016","2x":"https://ps.w.org/floating-button/assets/icon-256x256.png?rev=2533016"},"wporg":true},{"name":"Breadcrumb NavXT","slug":"breadcrumb-navxt","version":"6.6.0","author":"John Havlik","author_profile":"https://profiles.wordpress.org/mtekk","requires":"4.9","tested":"5.7.2","requires_php":"5.5","rating":94,"ratings":{"1":5,"2":2,"3":4,"4":7,"5":104},"num_ratings":122,"support_threads":14,"support_threads_resolved":0,"active_installs":900000,"downloaded":10113469,"last_updated":"2021-04-01 2:13am GMT","added":"2007-12-01","homepage":"http://mtekk.us/code/breadcrumb-navxt/","short_description":"Breadcrumb NavXT, the successor to the popular WordPress plugin Breadcrumb Navigation XT, was written from the ground up to be better than its ancesto …","description":"

Breadcrumb NavXT, the successor to the popular WordPress plugin Breadcrumb Navigation XT, was written from the ground up to be better than its ancestor. This plugin generates locational breadcrumb trails for your WordPress powered blog or website. These breadcrumb trails are highly customizable to suit the needs of just about any website running WordPress. The Administrative interface makes setting options easy, while a direct class access is available for theme developers and more adventurous users.

\n

PHP Requirements

\n

Breadcrumb NavXT 5.2 and newer require PHP5.3
\nBreadcrumb NavXT 5.1.1 and older require PHP5.2

\n

Features (non-exhaustive)

\n
    \n
  • RDFa format Schema.org BreadcrumbList compatible breadcrumb generation.
  • \n
  • Extensive breadcrumb customization control via a settings page with appropriate default values for most use cases.
  • \n
  • Network admin settings page for managing breadcrumb settings for all subsites with configurable global priority.
  • \n
  • Built in WordPress Widget.
  • \n
  • Extensible via OOP and provided actions and filters.
  • \n
  • WPML compatible (enhanced compatibility with WPML extensions plugin).
  • \n
  • Polylang compatible (enhanced compatibility with Polylang extensions plugin).
  • \n
  • bbPress compatible (enhanced compatibility with bbPress extensions plugin).
  • \n
  • BuddyPress compatible (enhanced compatibility with BuddyPress extensions plugin).
  • \n
\n

Translations

\n

Breadcrumb NavXT now supports WordPress.org language packs. Want to translate Breadcrumb NavXT? Visit Breadcrumb NavXT’s WordPress.org translation project.

\n","download_link":"https://downloads.wordpress.org/plugin/breadcrumb-navxt.6.6.0.zip","tags":{"breadcrumb":"breadcrumb","breadcrumbs":"breadcrumbs","menu":"menu","navigation":"navigation","trail":"trail"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=FD5XEU783BR8U&lc=US&item_name=Breadcrumb%20NavXT%20Donation¤cy_code=USD&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted","icons":{"1x":"https://ps.w.org/breadcrumb-navxt/assets/icon.svg?rev=1927103","2x":"https://ps.w.org/breadcrumb-navxt/assets/icon-256x256.png?rev=2410525","svg":"https://ps.w.org/breadcrumb-navxt/assets/icon.svg?rev=1927103"},"wporg":true},{"name":"WP Recipe Maker","slug":"wp-recipe-maker","version":"7.5.1","author":"Bootstrapped Ventures","author_profile":"https://profiles.wordpress.org/brechtvds","requires":"4.4","tested":"5.8","requires_php":"5.4","rating":100,"ratings":{"1":1,"2":0,"3":1,"4":4,"5":201},"num_ratings":207,"support_threads":26,"support_threads_resolved":21,"active_installs":50000,"downloaded":1531975,"last_updated":"2021-08-31 12:27pm GMT","added":"2016-09-07","homepage":"http://bootstrapped.ventures/wp-recipe-maker/","short_description":"The easy and user-friendly recipe plugin for everyone. Automatic JSON-LD metadata for food AND how-to recipes will improve your SEO!","description":"

WP Recipe Maker is the easy recipe plugin that everyone can use. An easy workflow allows you to add recipes to any post or page with automatic JSON-LD metadata for your recipes. This metadata will improve your SEO and get you more visitors!

\n

\n

Would you like to see the plugin in action before installing it? We have a WP Recipe Maker demo website showcasing all of the features!

\n
\n

Get the most out of this plugin!
\n Join the WP Recipe Maker Email Course and we’ll help you get started and learn all the tips and trick for using WPRM.

\n
\n

Features

\n

An overview of WP Recipe Maker features:

\n
    \n
  • Compatible with both the Classic Editor and new Gutenberg editor
  • \n
  • Includes an Elementor block and shortcode can be used in other page builders
  • \n
  • Easy workflow to add recipes to any post or page
  • \n
  • Uses schema.org/Recipe JSON-LD metadata optimised for Google Recipe search
  • \n
  • Uses schema.org/How-to JSON-LD metadata optimised for non-food recipes and instructions
  • \n
  • Supports both regular and Guided Recipes for Google metadata
  • \n
  • Google AMP compatible
  • \n
  • Integrates recipe metadata with Yoast SEO schema graph
  • \n
  • Option to disable metadata per recipe if you want to publish non-food or DIY recipes
  • \n
  • Compatible with Pinterest Rich Pins and a setting to easily opt out
  • \n
  • Outputs ItemList metadata for Recipe Roundup posts
  • \n
  • Associate ingredients with instructions to have them show up exactly where needed
  • \n
  • Keyboard accessible and AMP compatible ratings for comments
  • \n
  • Interactive print recipe page with room for ads and optional credit to your website
  • \n
  • Fallback recipe shows up when the plugin is disabled
  • \n
  • Include a recipe video in the template and metadata
  • \n
  • Add photos or videos to any step of the recipe
  • \n
  • Print recipe and jump to recipe shortcodes
  • \n
  • This plugin is fully responsive, your recipes will look good on any device
  • \n
  • Easily change the look and feel to fit your website in the Template Editor
  • \n
  • Structure your ingredients and instructions in groups (e.g. icing and cake batter)
  • \n
  • Full text search for your recipes
  • \n
  • Access your recipes through the WordPress REST API
  • \n
  • Built-in SEO check for your recipe metadata
  • \n
  • Compatible with RTL languages
  • \n
  • Import your recipes from other plugins (see below)
  • \n
\n

WP Recipe Maker Premium

\n

Looking for some more advanced functionality? We also have the WP Recipe Maker Premium add-on available with the following features:

\n
    \n
  • Use ingredient links for linking to products or other recipes
  • \n
  • Adjustable servings make it easy for your visitors
  • \n
  • Display all nutrition data in a nutrition label
  • \n
  • User Ratings allow visitors to vote without commenting
  • \n
  • Add a mobile-friendly kitchen timer to your recipes
  • \n
  • More Premium templates for a unique recipe template
  • \n
  • Create custom recipe taxonomies like price level, difficulty, …
  • \n
  • Use checkboxes for your ingredients and instructions
  • \n
\n

Even more add-ons can add the following functionality:

\n
    \n
  • Integration with a Nutrition API for automatic nutrition facts
  • \n
  • Unit Conversion to reach an international audience with a different unit system
  • \n
  • Have your users send in recipes through the Recipe Submission form
  • \n
  • Give your visitors the power of Recipe Collections for favourites, meal planning and more
  • \n
\n

Import Options

\n

Currently using another recipe plugin? No problem! You can easily migrate all your existing recipes to WP Recipe Maker if you’re using any of the following plugins:

\n
    \n
  • Tasty Recipes
  • \n
  • Create by Mediavine
  • \n
  • EasyRecipe
  • \n
  • WP Ultimate Recipe
  • \n
  • Recipe Card Blocks by WPZOOM
  • \n
  • Meal Planner Pro
  • \n
  • BigOven
  • \n
  • ZipList and Zip Recipes
  • \n
  • Yummly
  • \n
  • Yumprint Recipe Card
  • \n
  • FoodiePress
  • \n
  • Cooked
  • \n
  • Cookbook
  • \n
  • Simple Recipe Pro
  • \n
  • Purr Recipe Plugin
  • \n
  • Recipes by Simmer
  • \n
  • WordPress.com shortcode
  • \n
  • JSON-LD HTML Script
  • \n
  • Multi Rating (ratings only)
  • \n
  • (Need anything else? Just ask!)
  • \n
\n

This plugin is in active development. Feel free to contact us with any feature requests or ideas.

\n","download_link":"https://downloads.wordpress.org/plugin/wp-recipe-maker.zip","tags":{"cooking":"cooking","food":"food","ingredients":"ingredients","recipe":"Recipe","recipes":"recipes"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QG7KZMGFU325Y","icons":{"1x":"https://ps.w.org/wp-recipe-maker/assets/icon-128x128.png?rev=1491788","2x":"https://ps.w.org/wp-recipe-maker/assets/icon-256x256.png?rev=1491788"},"wporg":true},{"name":"Slim SEO – Fast & Automated WordPress SEO Plugin","slug":"slim-seo","version":"3.10.1","author":"eLightUp","author_profile":"https://profiles.wordpress.org/rilwis","requires":"4.5","tested":"5.8","requires_php":"5.6","rating":92,"ratings":{"1":1,"2":3,"3":0,"4":0,"5":26},"num_ratings":30,"support_threads":17,"support_threads_resolved":13,"active_installs":10000,"downloaded":170238,"last_updated":"2021-07-22 1:33am GMT","added":"2018-12-31","homepage":"https://wpslimseo.com","short_description":"A full-featured SEO plugin for WordPress that's lightweight, blazing fast with minimum configuration. No bloats, no ads and just works!","description":"

A Fast & Automated SEO Plugin For WordPress

\n

Currently there are many SEO plugins for WordPress in the market. But these plugins often have too many options and are very complicated for ordinary users. Access to their configuration section, you will easily get lost in a maze of explanations and options that you sometimes don’t understand. Besides, there are ads!

\n

So how can an ordinary user use an SEO plugin?

\n

SEO should be an integrated part of WordPress, where users don’t need or need very little effort to configure for SEO. The main reason is that not everyone understands the terms of SEO and how to configure them optimally.

\n

So, we made Slim SEO.

\n

Slim SEO is a full-featured SEO plugin, that’s done right! It provides a complete SEO solution for WordPress where the configuration has been done automatically. Users do not need to care about their complex and semantic options.

\n

So what does Slim SEO do?

\n

Slim SEO Features

\n

Slim SEO helps you do the following jobs automatically:

\n

1. Meta Tags

\n

The following meta tags are auto-generated and optimized for the best SEO scores.

\n\n

2. XML Sitemap

\n

Slim SEO automatically generates XML sitemap (at domain.com/sitemap.xml) to submit to search engines. With XML sitemaps, your website are indexed fast and completely.

\n

3. Breadcrumbs

\n

The plugin allows you to output a breadcrumb trail on your website easily. It automatically fetches the information from the current post and output a hierarchy for you. You can also style the breadcrumbs to match your theme style.

\n

4. Schema (Structured Data)

\n

Schema is a way that describes structured data for search engines. Based on the data provided, search engines can show the content in the search results page in a more appealing way.

\n

Slim SEO automatically adds the some structured data to the website via JSON-LD which makes your website more SEO-friendly. Not only schemas are created by the plugin, there are also meaningful connections between them. For example, an article (single post) is the main entity of the current webpage. Slim SEO does that all without any configuration.

\n

5. Auto Redirection

\n
    \n
  • Auto redirect attachment page to the attachment file URL.
  • \n
  • Auto redirect author page to the homepage if the website has only one author or the author doesn’t have any posts.
  • \n
\n

6. Open Source

\n

Slim SEO has different contributors which help make Slim SEO a quality product. Join us on Github!

\n

Who should use Slim SEO?

\n

Everyone can use Slim SEO!

\n

However, Slim SEO is perfectly suitable for users who prefer simplicity or do not like the complicated options that other SEO plugins provide. It’s also a good choice for users with little SEO knowledge and just want to use SEO plugins to automate their jobs.

\n

If you like this plugin, you might also like our other products: Meta Box and GretaThemes.

\n","download_link":"https://downloads.wordpress.org/plugin/slim-seo.3.10.1.zip","tags":{"google":"google","schema":"schema","search-engine-optimization":"search engine optimization","seo":"seo","sitemap":"sitemap"},"donate_link":"https://wpslimseo.com/pro/","icons":{"1x":"https://ps.w.org/slim-seo/assets/icon.svg?rev=2005049","svg":"https://ps.w.org/slim-seo/assets/icon.svg?rev=2005049"},"wporg":true},{"name":"Schema & Structured Data for WP & AMP","slug":"schema-and-structured-data-for-wp","version":"1.9.83.1","author":"Magazine3","author_profile":"https://profiles.wordpress.org/magazine3","requires":"3.0","tested":"5.8","requires_php":false,"rating":94,"ratings":{"1":13,"2":1,"3":2,"4":10,"5":183},"num_ratings":209,"support_threads":28,"support_threads_resolved":18,"active_installs":80000,"downloaded":2328225,"last_updated":"2021-08-31 7:07am GMT","added":"2018-08-06","homepage":"","short_description":"Schema & Structured Data for WP & AMP adds Google Rich Snippets markup according to…","description":"

Schema & Structured Data for WP & AMP adds Google Rich Snippets markup according to Schema.org guidelines to structure your site for SEO. (AMP Compatible)

\n

Features

\n
    \n
  • Schema Types: Currently, We have more than 35 schema types such as Blog Posting, News article, Local Business, Web page, Article, Recipe, Product, and Video Object view all. We are going to add all the schema types in the future. You can request the one you want and we will add it for you!
  • \n
  • Conditional Display Fields: Meaning you include or exclude any posts, pages, post types, taxonomies and more!
  • \n
  • Knowlegde Base Support: Recognize the content based on the organization or a person via data type option.
  • \n
  • Full AMP Compatiblity: Supports the AMP for WP and AMP by Automattic plugins.
  • \n
  • Advanced Settings: Play with output of schema markup using these options (Defragment, Add in Footer, Pretty Print, MicroData CleanUp etc.)
  • \n
  • Migration: Import the data from other schema plugins such as (SEO Pressor, WP SEO Schema, Schema Plugin etc )
  • \n
  • Compatibility: Generate the schema markup for the plugins. We have provided schema support for them. Few of them are – kk Star Ratings, WP-PostRatings, bbPress
  • \n
  • Google Review: Display your business google reviews and its schema markup on your website.
  • \n
  • [Premium] Reviews ( Fetch reviews from 75+ platforms ).
  • \n
  • [Premium] Priority Support. Get it We get more than 100 technical queries a day but the Priority support plan will help you skip that and get the help from a dedicated team.
  • \n
  • Review Module: Create your own review rating box with pros and cons and its schema markup
  • \n
  • Schema Type Blocks in Gutenberg: Create your own content with the blocks and json schema markup will be added automatically
  • \n
  • Unlimited Custom Post Types: You can control to represent the Rich Snippets data in the google search console using unlimited custom post types.
  • \n
  • Easy to use with Minimal Settings
  • \n
  • Archive Page Listing Support
  • \n
  • JSON-LD Format
  • \n
  • Easy to use Setup Wizard
  • \n
  • Breadcrumbs Listing Support
  • \n
  • Comments Post comments Support
  • \n
  • Constant Development & New Features: We’ll be releasing the constant updates along with the more handy features as soon as we get the feedback from the users.
  • \n
\n

Supported Schema Types

\n
    \n
  • Apartment
  • \n
  • House
  • \n
  • SingleFamilyResidence
  • \n
  • Article
  • \n
  • Blogposting
  • \n
  • Book
  • \n
  • Course
  • \n
  • DiscussionForumPosting,
  • \n
  • DataFeed
  • \n
  • HowTo
  • \n
  • NewsArticle
  • \n
  • QAPage
  • \n
  • Review
  • \n
  • Recipe
  • \n
  • TVSeries
  • \n
  • SoftwareApplication
  • \n
  • MobileApplication
  • \n
  • SpecialAnnouncement (Related to Coronavirus)
  • \n
  • TechArticle
  • \n
  • WebPage
  • \n
  • Event
  • \n
  • VideoGame
  • \n
  • JobPosting
  • \n
  • Service
  • \n
  • Trip
  • \n
  • AudioObject
  • \n
  • VideoObject
  • \n
  • MedicalCondition
  • \n
  • MusicPlaylist
  • \n
  • MusicAlbum
  • \n
  • LocalBusiness with all the sub categories
  • \n
  • Product
  • \n
  • TouristAttraction
  • \n
  • TouristDestination
  • \n
  • LandmarksOrHistoricalBuildings
  • \n
  • HinduTemple
  • \n
  • Church
  • \n
  • Mosque
  • \n
  • Person
  • \n
  • View All
  • \n
\n

Extensions

\n

Some useful extensions to extend Schema & Structured Data for WP & AMP features, check Woocommerce Compatibility For Schema, Cooked Compatibility For Schema and We are going to add more.

\n

Support

\n

We try our best to provide support on WordPress.org forums. However, We have a special team support where you can ask us questions and get help. Delivering a good user experience means a lot to us and so we try our best to reply each and every question that gets asked.

\n

Bug Reports

\n

Bug reports for Schema & Structured Data for WP & AMP are welcomed on GitHub. Please note GitHub is not a support forum, and issues that aren’t properly qualified as bugs will be closed.

\n

Credits

\n
    \n
  • Select2 used https://github.com/select2/select2 – License URI: https://github.com/select2/select2/blob/develop/LICENSE.md,
  • \n
  • Merlin WP used https://github.com/richtabor/MerlinWP – License URI: https://github.com/richtabor/MerlinWP/blob/master/LICENSE,
  • \n
  • jquery-timepicker used https://github.com/jonthornton/jquery-timepicker
  • \n
  • Rate Yo! used https://github.com/prrashi/rateYo – License URI: https://github.com/prrashi/rateYo/commit/f3812fe96c38b08627d209795176053550fb1427
  • \n
  • Aqua Resizer used http://aquagraphite.com – License URI: WTFPL – http://sam.zoy.org/wtfpl/
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/schema-and-structured-data-for-wp.1.9.83.1.zip","tags":{"google-snippets":"google snippets","rich-snippets":"rich snippets","schema":"schema","schema-org":"schema.org","structured-data":"structured data"},"donate_link":"","icons":{"1x":"https://ps.w.org/schema-and-structured-data-for-wp/assets/icon-128x128.png?rev=1922284","2x":"https://ps.w.org/schema-and-structured-data-for-wp/assets/icon-256x256.png?rev=1922284"},"wporg":true},{"name":"GenerateBlocks","slug":"generateblocks","version":"1.3.5","author":"Tom Usborne","author_profile":"https://profiles.wordpress.org/edge22","requires":"5.4","tested":"5.8","requires_php":"5.6","rating":98,"ratings":{"1":0,"2":0,"3":2,"4":1,"5":72},"num_ratings":75,"support_threads":29,"support_threads_resolved":14,"active_installs":50000,"downloaded":239551,"last_updated":"2021-07-19 6:12pm GMT","added":"2020-05-19","homepage":"https://generateblocks.com","short_description":"A small collection of lightweight WordPress blocks that can accomplish nearly anything.","description":"

\n

\n

Add incredible versatility to your editor without bloating it with tons of one-dimensional Gutenberg blocks. With GenerateBlocks, you can learn a handful of blocks deeply and use them to build anything.

\n

GenerateBlocks works hand-in-hand with GeneratePress, but is built to work with any theme.

\n

Looking for more features? Check out GenerateBlocks Pro.

\n

Container

\n

Organize your content into rows and sections. The Container block is the foundation of your content, allowing you to design unique sections for your content.

\n

Grid

\n

Create advanced layouts with flexible grids. The Grid block gives you the ability to create any kind of layout you can imagine.

\n

Headline

\n

Craft text-rich content with advanced typography. Everything from headings to paragraphs – take full control of your text.

\n

Buttons

\n

Drive conversions with beautiful buttons.

\n

Performance

\n

We take performance seriously. Minimal CSS is generated only for the blocks you need, and our HTML structure is as simple as possible while allowing for maximum flexibility.

\n

Coding standards

\n

Built to the highest coding standards for security, stability and future compatibility.

\n

Fully responsive

\n

Every block comes with tablet and mobile controls, giving you total control of your responsive design.

\n

Documentation

\n

Check out our documentation for more information on the individual blocks and how to use them.

\n","download_link":"https://downloads.wordpress.org/plugin/generateblocks.1.3.5.zip","tags":{"blocks":"blocks","container":"container","grid":"grid","gutenberg":"gutenberg","headline":"headline"},"donate_link":"https://generateblocks.com","icons":{"1x":"https://ps.w.org/generateblocks/assets/icon-128x128.png?rev=2336822","2x":"https://ps.w.org/generateblocks/assets/icon-256x256.png?rev=2336822"},"wporg":true},{"name":"Blackhole for Bad Bots","slug":"blackhole-bad-bots","version":"3.2","author":"Jeff Starr","author_profile":"https://profiles.wordpress.org/specialk","requires":"4.1","tested":"5.8","requires_php":"5.6.20","rating":98,"ratings":{"1":2,"2":0,"3":3,"4":2,"5":108},"num_ratings":115,"support_threads":3,"support_threads_resolved":3,"active_installs":30000,"downloaded":306033,"last_updated":"2021-07-19 8:41pm GMT","added":"2016-02-18","homepage":"https://perishablepress.com/blackhole-bad-bots/","short_description":"Blackhole is a WordPress security plugin that detects and traps bad bots in a virtual black hole, where they are denied access to your entire site.","description":"
\n

Add your own virtual black hole trap for bad bots.

\n
\n

Bye bye bad bots..

\n

Bad bots are the worst. They do all sorts of nasty stuff and waste server resources. The Blackhole plugin helps to stop bad bots and save precious resources for legit visitors.

\n

How does it work?

\n

First the plugin adds a hidden trigger link to the footer of your pages. You then add a line to your robots.txt file that forbids all bots from following the hidden link. Bots that then ignore or disobey your robots rules will crawl the link and fall into the trap. Once trapped, bad bots are denied further access to your WordPress site.

\n

I call it the “one-strike” rule: bots have one chance to obey your site’s robots.txt rule. Failure to comply results in immediate banishment. The best part is that the Blackhole only affects bad bots: human users never see the hidden link, and good bots obey the robots rules in the first place. Win-win! 🙂

\n

Using a caching plugin? Check out the Installation notes for important info.

\n

Features

\n
    \n
  • Easy to set up
  • \n
  • Squeaky clean code
  • \n
  • Focused and modular
  • \n
  • Lightweight, fast and flexible
  • \n
  • Built with the WordPress API
  • \n
  • Works with other security plugins
  • \n
  • Easy to reset the list of bad bots
  • \n
  • Easy to delete any bot from the list
  • \n
  • Regularly updated and “future proof”
  • \n
  • Blackhole link includes “nofollow” attribute
  • \n
  • Plugin options configurable via settings screen
  • \n
  • Works silently behind the scenes to protect your site
  • \n
  • Whitelists all major search engines to never block
  • \n
  • Focused on flexibility, performance, and security
  • \n
  • Email alerts with WHOIS lookup for blocked bots
  • \n
  • Complete inline documentation via the Help tab
  • \n
  • Provides setting to whitelist any IP addresses
  • \n
  • Customize the message displayed to bad bots 😉
  • \n
  • One-click restore the plugin default options
  • \n
  • Does NOT use or require any .htaccess rules
  • \n
\n

Blackhole for Bad Bots protects your site against bad bots, spammers, scrapers, scanners, and other automated threats.

\n

Not using WordPress? Check out the standalone PHP version of Blackhole!

\n

Check out Blackhole Pro and level up with advanced features!

\n

Whitelist

\n

By default, this plugin does NOT block any of the major search engines (user agents):

\n
    \n
  • AOL.com
  • \n
  • Baidu
  • \n
  • Bingbot/MSN
  • \n
  • DuckDuckGo
  • \n
  • Googlebot
  • \n
  • Teoma
  • \n
  • Yahoo!
  • \n
  • Yandex
  • \n
\n

These search engines (and all of their myriad variations) are whitelisted via user agent. So are a bunch of other “useful” bots. They always are allowed full access to your site, even if they disobey your robots.txt rules. This list can be customized in the plugin settings. For a complete list of whitelisted bots, visit the Help tab in the plugin settings (under “Whitelist Settings”).

\n

Privacy

\n

User Data: This plugin automatically blocks bad bots. When bad bots fall into the trap, their IP address, user agent, and other request data are stored in the WP database. No other user data is collected by this plugin. At any time, the administrator may delete all saved data via the plugin settings.

\n

Services: This plugin does not connect to any third-party locations or services.

\n

Cookies: This plugin does not set any cookies.

\n

Header Image Courtesy NASA/JPL-Caltech.

\n

Support development of this plugin

\n

I develop and maintain this free plugin with love for the WordPress community. To show support, you can make a donation or purchase one of my books:

\n\n

And/or purchase one of my premium WordPress plugins:

\n\n

Links, tweets and likes also appreciated. Thanks! 🙂

\n","download_link":"https://downloads.wordpress.org/plugin/blackhole-bad-bots.3.2.zip","tags":{"anti-spam":"anti-spam","bad-bots":"bad bots","blackhole":"blackhole","honeypot":"honeypot","security":"security"},"donate_link":"https://monzillamedia.com/donate.html","icons":{"1x":"https://ps.w.org/blackhole-bad-bots/assets/icon-128x128.png?rev=1471215","2x":"https://ps.w.org/blackhole-bad-bots/assets/icon-256x256.png?rev=1471215"},"wporg":true},{"name":"Page View Count","slug":"page-views-count","version":"2.4.12","author":"a3rev Software","author_profile":"https://profiles.wordpress.org/a3rev","requires":"5.0","tested":"5.8","requires_php":false,"rating":78,"ratings":{"1":8,"2":5,"3":2,"4":3,"5":30},"num_ratings":48,"support_threads":2,"support_threads_resolved":0,"active_installs":20000,"downloaded":403965,"last_updated":"2021-07-19 10:48am GMT","added":"2012-12-21","homepage":"","short_description":"Places an icon, all time views count and views today count at the bottom of posts, pages and custom post types on any WordPress website.","description":"

A beautifully simple to set up plugin that gives site visitors and site owners the ability to quickly and easily see how many people have visited that page or post.

\n

FEATURES

\n
    \n
  • On the front end it adds an icon and page views count to the bottom or top of pages and posts on your WordPress website.
  • \n
  • Switch ON | OFF hide Page Views Count for all Posts, Pages and all custom posts types including WooCommerce custom post types.
  • \n
  • Set the Position of the counter to show at the top of the page or post or at the bottom
  • \n
  • Set alignment of the counter Left, Right or Centre
  • \n
  • Set the colour and size of the counter icon
  • \n
  • Option to use load by Ajax to prevent the count from being cached by caching plugins
  • \n
  • Option to Manually set / edit total views and views today from Page View Count meta box on any post or page editor
  • \n
  • Add Page Views counter via the PVC Gutenberg block
  • \n
  • Add Page Views counter via shortcode
  • \n
  • Add Page Views counter via widget
  • \n
  • Developers can add the Page Views Counter via php tag
  • \n
  • All options and settings are point click – absolutely no coding required
  • \n
\n

COMPATIBILTY

\n

Compatible with WordPress 5.3+ and backwards to WP 4.9.0. Compatible with Classic Editor plugin with 5.0+ (Gutenberg Deactivated)

\n

GUTENBERG BLOCK

\n

Using the Gutenberg Editor. Use the Page View Count Block to add the counter to any page or post content. Block search for ‘Page Views’ or selecting the block from the a3rev Blocks menu.

\n

Adding the Page Views block to your content automatically deactivates the Global Page View counter on the post or page.

\n

ELEMENTOR TEMPLATES

\n

Fully compatible with Elementor templates. Add counter via Shortcode or widget to any template.

\n

DEVELOPERS

\n

On the plugins dashboard in the + Page Views Count Function options box you will find the Page Views Count functions and notes on how to use them.

\n
    \n
  • Use to manually add Page views count to any content or object in the theme.
  • \n
  • Use to add page View Count to any content that is not create using WordPress custom post / taxonomy type.
  • \n
  • Use to create a custom position of the Page Views Count
  • \n
  • Functions support echo and return parameters when getting visitor stats on any variable.
  • \n
\n

TROUBLESHOOTING

\n
    \n
  • The number 1 support request we get about the plugin is that it double or triple counts page or post loads. Yes it does and if you see that it is a Red Flag that you have a misconfiguration or bug in your theme or a plugin. Page Views Count does exactly that – counts each time the page or post is loading in the browser – if its counting twice it is because the browser is double loading the page. That is a bad thing and you or your developer needs to fix that.
  • \n
\n

CONTRIBUTE

\n

When you download Page Views Count, you join our community. Regardless of if you are a WordPress beginner or experienced developer if you’?re interested in contributing to Page Views Count development head over to the Page Views Count GitHub Repository to find out how you can contribute.
\nWant to add a new language to Page Views Count? Great! You can contribute via translate.wordpress.org

\n

Usage

\n
    \n
  1. \n

    Install and activate the plugin

    \n
  2. \n
  3. \n

    Go to WordPress Settings menu > Page View Count Menu

    \n
  4. \n
  5. \n

    Activate Page Views Count and use the options box settings to make the desired configuration

    \n
  6. \n
  7. \n

    Be sure to clear any caching and browser cache to see your Page Views Count

    \n
  8. \n
\n","download_link":"https://downloads.wordpress.org/plugin/page-views-count.2.4.12.zip","tags":{"gutenberg":"gutenberg","page-view-count":"page view count","post-view-count":"post view count","post-views":"post views","wordpress-page-view":"wordpress page view"},"donate_link":"","icons":{"1x":"https://ps.w.org/page-views-count/assets/icon.svg?rev=986301","2x":"https://ps.w.org/page-views-count/assets/icon-256x256.png?rev=986301","svg":"https://ps.w.org/page-views-count/assets/icon.svg?rev=986301"},"wporg":true},{"name":"Newspack Listings","slug":"newspack-listings","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://github.com/Automattic/newspack-listings/releases","short_description":"

Create reusable content as listings and add them to lists wherever core blocks can be used

\n","description":"\n\n\n

Create reusable content as listings and add them to lists wherever core blocks can be used

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2021/02/listings2-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2021/02/listings2-372x209.jpg","svg":""},"wporg":false},{"name":"Newspack Newsletters","slug":"newspack-newsletters","version":"1.31.1","author":"Automattic","author_profile":"https://profiles.wordpress.org/automattic","requires":"5.3","tested":"5.8.0","requires_php":"5.6","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":1,"support_threads_resolved":1,"active_installs":500,"downloaded":2877,"last_updated":"2021-08-10 8:45pm GMT","added":"2021-02-15","homepage":"https://newspack.pub","short_description":"Create email newsletters with the Gutenberg editor and distribute them with your Mailchimp or Constant…","description":"

Create email newsletters with the Gutenberg editor and send them via Mailchimp or Constant Contact, all without leaving WP Admin! Newspack Newsletters lets you build eye-catching newsletters using the WordPress editing tools you’re already familiar with, and lets you save drafts, create reusable layouts, send to your existing mailing list, and also publish them to your website.

\n

Use and create newsletter layouts

\n

Newspack Newsletters comes with four default layouts to help you start building newsletters quickly. You can use an existing layout, or start fresh with a blank page. You can also create and save your own layouts, or alter the ones that come bundled with the plugin and save the settings, and use them for future campaigns.

\n

Use Gutenberg blocks and settings

\n

Newspack Newsletters supports most core Gutenberg blocks and configurations, letting you use blocks like Group, Button, Columns, and more, to create dynamic layouts. The plugin will warn you when a block will not display as expected in an email.

\n

Customize your newsletter’s appearance

\n

You can customize your newsletters further by changing the header and body fonts, or picking a background color.

\n

Newspack Blocks

\n

Newspack Newsletters comes bundled with the Newspack Post Inserter block. This block lets you insert excerpts from live posts on your site, and, once inserted, will turn those posts into static content using the Header and Paragraph blocks, linking back to your site.

\n

Need to target a post title to your newsletter audience? Not a problem! You can edit these blocks, and add others, to make sure they’ speak to your readers.

\n

Add ads!

\n

Monetize your newsletters by including advertising. The Newspack Newsletters plugin lets you create ads, which are stored as a custom post type. Ads are automatically inserted into your newsletters, and can also be toggled off on a newsletter-by-newsletter basis.

\n

Send with ease

\n

Newspack Newsletters connects to your Mailchimp or Constant Contact accounts to send emails using the mailing lists you’ve collected there, all without leaving the WordPress Admin.

\n

Before sending your campaign, you can send test emails to one or more email addresses at a time from the newsletter editor, to make sure everything is pixel perfect before sharing with the world.

\n

About Newspack

\n

The Newspack Newletters plugin is part of Newspack, a suite of tools to help small to mid-sized news organizations publish and generate revenue with WordPress. Newspack is a collaborative project by WordPress.com and the Google News Initiative. You can learn more about Newspack by visiting our website.

\n

Credits

\n

The beach photograph in the screenshot is by Life of Pix, licensed CC0.

\n","download_link":"https://downloads.wordpress.org/plugin/newspack-newsletters.zip","tags":{"constant-contact":"constant contact","mailchimp":"mailchimp","newsletters":"newsletters","newspack":"Newspack","wordpress-com":"WordPress.com"},"donate_link":"","icons":{"1x":"https://ps.w.org/newspack-newsletters/assets/icon.svg?rev=2475195","2x":"https://ps.w.org/newspack-newsletters/assets/icon-256x256.png?rev=2475195","svg":"https://ps.w.org/newspack-newsletters/assets/icon.svg?rev=2475195"},"wporg":true},{"name":"Web Stories","slug":"web-stories","version":"1.10.1","author":"Google","author_profile":"https://profiles.wordpress.org/google","requires":"5.5","tested":"5.8","requires_php":"7.0","rating":84,"ratings":{"1":5,"2":2,"3":2,"4":4,"5":31},"num_ratings":44,"support_threads":112,"support_threads_resolved":84,"active_installs":20000,"downloaded":324189,"last_updated":"2021-08-25 7:02pm GMT","added":"2020-09-22","homepage":"https://wp.stories.google/","short_description":"Web Stories are a visual storytelling format for the open web which immerses your readers in fast-loading, full-screen, and visually rich experiences.","description":"

Web Stories are a free, open-web, visual storytelling format for the web, enabling you to easily create visual narratives with engaging animations and tappable interactions, and immerse your readers in great and fast-loading full-screen experiences.

\n

Benefits of Web Stories

\n

The Web Stories format puts features and capabilities at your fingertips to engage with your audience via the power of storytelling on the open web. Specifically, you can:

\n
    \n
  • Create beautiful and engaging content easily: Web Stories make the production of stories as easy as possible from a technical perspective.
  • \n
  • Enjoy creative flexibility for editorial freedom and branding: The Web Stories format comes with preset but flexible layout templates, standardized UI controls, and components for sharing and adding follow-on content.
  • \n
  • Share and link your stories on the open web: Web Stories are part of the open web and can be shared and embedded across sites and apps without being confined to a single ecosystem.
  • \n
  • Track and measure your stories: Supports analytics and bookend capabilities for viral sharing and monetization.
  • \n
  • Capture the attention of your readers by offering fast loading times to your stories: Web Stories are lightning fast so that your audience stays engaged and entertained.
  • \n
  • Engage with your readers via immersive storytelling: Web Stories are a new and modern way to reach existing readers.
  • \n
  • Monetize effectively the beautiful and engaging stories you create: Web Stories enable monetization capability for publishers using affiliate links. For advertisers, Stories is a way to reach a unique audience within a new storytelling experience.
  • \n
\n

Web Stories Editor

\n

The Web Stories editor for WordPress brings together a robust set of story creation capabilities in a user-friendly, WYSIWYG creation tool. Some of the key features you can leverage out of the box are:

\n
    \n
  • A visually rich and intuitive dashboard, allowing you to easily navigate the story creation process
  • \n
  • Beautiful and expressive page templates to you get your story creation process started quickly and smoothly
  • \n
  • Easy drag-and-drop capabilities, making it easy to compose beautiful stories
  • \n
  • Convenient access to WordPress’ media library, enabling you to grab your media assets right from the plugin dashboard as you create your stories
  • \n
  • Customizable color and text style presets, making it easy to tailor the style of your stories to the needs of your content strategy
  • \n
  • And much more!
  • \n
\n

Using the Web Stories editor for WordPress, you can easily create visual narratives with tappable interactions, and share freely across the web, or embed them on your existing content strategies. The Stories you create are yours in every way, as Web Stories belong to the open web, instead of being confined to any specific closed ecosystem or platform.

\n

Audience: Everyone

\n

Web Stories are for everyone! If you are a site owner, content creator, or publisher on the web, embracing the Web Stories format would be great as a way to enhance the quality of your content strategy, the value you bring to your readers, and consequently your chances of achieving sustainable success.

\n

Terms of Service

\n

By using this plugin, you agree to Google’s Terms of Service. By using third-party imagery and video provided by Unsplash, Coverr and Tenor, you agree to adhere to the respective Terms of Service.

\n","download_link":"https://downloads.wordpress.org/plugin/web-stories.1.10.1.zip","tags":{"amp":"amp","google":"google","stories":"stories","storytelling":"storytelling","web-stories":"web stories"},"donate_link":"","icons":{"1x":"https://ps.w.org/web-stories/assets/icon.svg?rev=2386543","2x":"https://ps.w.org/web-stories/assets/icon-256x256.png?rev=2386543","svg":"https://ps.w.org/web-stories/assets/icon.svg?rev=2386543"},"wporg":true},{"name":"Jetpack – WP Security, Backup, Speed, & Growth","slug":"jetpack","version":"10.0","author":"Automattic","author_profile":"https://profiles.wordpress.org/automattic","requires":"5.7","tested":"5.8","requires_php":"5.6","rating":78,"ratings":{"1":319,"2":80,"3":81,"4":137,"5":1017},"num_ratings":1634,"support_threads":353,"support_threads_resolved":315,"active_installs":5000000,"downloaded":242957166,"last_updated":"2021-08-03 4:25pm GMT","added":"2011-01-20","homepage":"https://jetpack.com","short_description":"Improve your WP security with powerful one-click tools like backup and malware scan. Get essential free tools including stats, CDN and social sharing.","description":"

The most popular WordPress plugin for just about everything.

\n

WordPress security, performance, marketing, and design tools — Jetpack is made by WordPress experts to make WP sites safer and faster, and help you grow your traffic.

\n

24/7 AUTO SITE SECURITY

\n

We guard your site so you can run your site or business. Jetpack Security provides easy-to-use, comprehensive WordPress site security including auto real-time backups and easy restores, malware scans, and spam protection. Essential features like brute force protection and downtime / uptime monitoring are free.

\n
    \n
  • Back up your site automatically in real time and restore to any point with one click. Unlimited storage for your backup. Great for eCommerce stores especially Woo.
  • \n
  • Manage migration to a new host, migrate theme files and plugins to a new database, easily duplicate websites, create full database backups, clone websites, repair broken websites by restoring older backups or easily set up a test site by creating a duplicate of your existing WP website.
  • \n
  • See every site change and who made it with the activity log, great for coordination, debug, maintenance, or troubleshooting.
  • \n
  • Automatically perform malware scans and security scans for other code threats. One click fix to restore your site for malware.
  • \n
  • Block spam comments and form responses with anti spam features powered by Akismet.
  • \n
  • Brute force attack protection to protect your WordPress login page from attacks.
  • \n
  • Monitor your site uptime / downtime and get an instant alert of any change by email.
  • \n
  • Secure WordPress.com powered login used by millions of sites with optional 2FA (two factor authentication) for extra protection.
  • \n
  • Auto update individual plugins for easy site maintenance and management.
  • \n
\n

PEAK SPEED AND PERFORMANCE

\n

Get blazing fast site speed with Jetpack, the premier WP plugin built to leverage the power of AMP, a tool that helps optimize your site on mobile devices. Jetpack’s free CDN (content delivery network) auto optimizes your images. Watch your page load times decrease — we’ll optimize your images and serve them from our own powerful global network, and speed up your site on mobile devices to reduce bandwidth usage and save money!

\n
    \n
  • Jetpack has partnered with Google AMP to create the best, highest performance all-in-one toolkit for WordPress. By using Jetpack and AMP together, you get all the features you need to build a beautiful, fast, modern website with no coding required.
  • \n
  • Image CDN for images and static files, like CSS and JavaScript, served from our servers, not yours, which saves you money and bandwidth.
  • \n
  • Lazy load images for a super fast experience, even on mobile. Jetpack’s lazy loading automatically delays the loading of media on your posts and pages until your visitors scroll down to where they appear on the page.
  • \n
  • Unlimited, high speed, ad free video hosting keeps the focus on your content, not on ads or recommendations that lead people off site.
  • \n
  • Custom site search is incredibly powerful and customizable. Helps your visitors instantly find the right content so they read and buy more. Works great with WooCommerce / eCommerce sites to help filter products so customers get what they want on your site faster.
  • \n
  • Recommended to use with WP Super Cache for ultimate WordPress site speed.
  • \n
\n

POWERFUL TOOLS FOR GROWTH

\n

Create and customize your WordPress site, optimize it for visitors and revenue, and enjoy watching your stats tick up. Build it, share it, and watch it grow.

\n
    \n
  • Advanced site stats and analytics to help you understand your audience.
  • \n
  • Auto publish blog posts and products to social media by simply using our tools to connect to Facebook, Twitter, and Linkedin.
  • \n
  • Easily share Instagram posts on your pages and blog posts.
  • \n
  • Collect a payment or donation, sell a product, service, or membership with simple integrations with PayPal and Stripe.
  • \n
  • Grow traffic with SEO tools for Google, Bing, Twitter, Facebook, and WordPress.com. XML sitemap created automatically.
  • \n
  • Advertise on your site to generate revenue. The ad network automatically does the work for you to find high-quality ads that are placed on your site.
  • \n
  • Manage Jetpack features from anywhere with the official WordPress mobile app, available for Apple iOS (iPhone or iPad) and Google Android.
  • \n
  • Looking for Customer Relationship Management? Check out the Jetpack CRM plugin which works alongside Jetpack to give you a simple and practical way to build relationships with your customers and leads.
  • \n
\n

EASY DESIGN TOOLS

\n

Quickly customize your site to make it stand out — no coding needed.

\n
    \n
  • Themes — Simple themes to get started or pick a professional theme to make your site stand out.
  • \n
  • Related posts — Keep visitors on your site by automatically showing them related content they will be interested in.
  • \n
  • Gallery and Slideshow tools — Image galleries, carousel slider, and slideshows for WP sites and stores.
  • \n
  • Subscriptions — Make it easy for visitors to sign up to receive notifications of your latest posts and comments.
  • \n
  • Contact form — Easily build unlimited contact forms for free without any coding. Receive email notifications for each response. Integrate with mail solutions like Creative Mail to reach your customers and leads quickly. Connect to Jetpack Anti spam (powered by Akismet) to filter submissions.
  • \n
  • oEmbed Support — easily embed images, posts, and links from Facebook and Instagram.
  • \n
\n

INTEGRATIONS

\n

Jetpack is updated monthly to ensure seamless integration with top WordPress plugins and other tech products.

\n
    \n
  • Built for WooCommerce: Jetpack and WooCommerce are both made by Automattic. Backup, Scan, Anti-spam, integrate perfectly for Woo / eComm stores
  • \n
  • Jetpack is fully compatible with v2.0 of the official AMP plugin for WordPress.
  • \n
  • Better understand your customers and marketing with Google Analytics (GA) integration
  • \n
  • Social media platforms: Instagram, Facebook, Twitter, LinkedIn
  • \n
  • Simple Blocks to customize your site: Pinterest, Whatsapp, Podcast player, GIFs, maps, tiled gallery, slideshow
  • \n
  • Payment processors: easily collect payments or donations and sell products through Stripe and PayPal
  • \n
  • Site speed and performance plugins: Works great with WP Super Cache by Automattic and Cloudflare.
  • \n
  • Contact form: Anti-spam (Powered by Akismet) blocks spam comments for Jetpack forms, Contact Form 7, Ninja Forms, Gravity Forms, Formidable Forms, and more.
  • \n
  • Other tech integrations: Instagram, Creative Mail, Mailchimp, Calendly, Whatsapp, Pinterest, Revue, and more.
  • \n
\n

EXPERT SUPPORT

\n

We have a global team of Happiness Engineers ready to provide incredible support. Ask your questions in the support forum or contact us directly.

\n

GET STARTED

\n

Installation is free, quick, and easy. Set up Jetpack in minutes. Take advantage of more robust features like WordPress site security and design and growth tools by upgrading to a paid plan.

\n","download_link":"https://downloads.wordpress.org/plugin/jetpack.10.0.zip","tags":{"backup":"backup","malware":"malware","scan":"scan","security":"security","woo":"woo"},"donate_link":"","icons":{"1x":"https://ps.w.org/jetpack/assets/icon.svg?rev=2394525","2x":"https://ps.w.org/jetpack/assets/icon-256x256.png?rev=2394525","svg":"https://ps.w.org/jetpack/assets/icon.svg?rev=2394525"},"wporg":true},{"name":"Easy Notification Bar","slug":"easy-notification-bar","version":"1.4.2","author":"WPExplorer","author_profile":"https://profiles.wordpress.org/wpexplorer","requires":"5.2.0","tested":"5.8","requires_php":"5.6.2","rating":82,"ratings":{"1":0,"2":1,"3":1,"4":1,"5":4},"num_ratings":7,"support_threads":2,"support_threads_resolved":1,"active_installs":4000,"downloaded":34014,"last_updated":"2021-08-22 1:48am GMT","added":"2019-06-20","homepage":"https://wordpress.org/plugins/easy-notification-bar/","short_description":"Easily add a custom top bar notification message to on your site with live customization…","description":"

Easily add a custom top bar notification message to on your site with live customization options via the WordPress customizer. The plugin allows you to enter your notification bar text as well as an optional button to display next to your text. Perfect for notifying visitors of a current sale, hot product, warnings or other important messages.

\n

The Easy Notification Bar plugin makes use of the newer “wp_body_open” action hook introduced in WordPress 5.2.0 which allows the plugin to work better with any theme that has been updated to support the tag. Contrary to other notice bar solutions which rely on absolute positioning, this plugin inserts the notice bar right after the body tag so it should display perfectly without any conflicts on any well-coded theme.

\n

By default, the notification bar is “static” which means it displays at the top of your site so when you scroll down the page it will become “hidden”. This is generally better for usability and SEO. However, in version 1.4 we added a new sticky option which you can enable in the Customizer so that the notification bar remains visible as you scroll down the page. The sticky functionality makes use of the CSS sticky property (not javascript).

\n

Although disabled by default, you can enable a close icon for your notice. When enabled, your visitors will see an “x” icon over the top bar which they can click to hide the message for their current and future sessions. This functionality makes use of localStorage (not cookies).

\n

Live Demo: You can view a live demo for the notification bar on our More Widgets Plugin Demo

\n

Features

\n
    \n
  • Sitewide (or homepage only) top notification bar.
  • \n
  • Easy setup via the WordPress customizer.
  • \n
  • Optional close icon.
  • \n
  • Optional sticky display.
  • \n
  • Custom background, color, text alignment and font size settings.
  • \n
  • Optional callout button.
  • \n
  • Responsive design so it looks good on mobile.
  • \n
  • Minimal code.
  • \n
  • Vanilla Javascript used for close icon (jQuery not needed).
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/easy-notification-bar.zip","tags":{"notice":"notice","notice-bar":"notice bar","notification":"notification","notification-bar":"notification bar","top-bar":"top bar"},"donate_link":"","icons":{"1x":"https://ps.w.org/easy-notification-bar/assets/icon-128x128.png?rev=2515988","2x":"https://ps.w.org/easy-notification-bar/assets/icon-256x256.png?rev=2515988"},"wporg":true},{"name":"Antispam Bee","slug":"antispam-bee","version":"2.10.0","author":"pluginkollektiv","author_profile":"https://profiles.wordpress.org/pluginkollektiv","requires":"4.5","tested":"5.8","requires_php":"5.2","rating":96,"ratings":{"1":7,"2":1,"3":1,"4":2,"5":175},"num_ratings":186,"support_threads":6,"support_threads_resolved":4,"active_installs":700000,"downloaded":5046177,"last_updated":"2021-07-29 11:15am GMT","added":"2009-01-10","homepage":"https://antispambee.pluginkollektiv.org/","short_description":"Antispam plugin with a sophisticated tool set for effective day to day comment and trackback spam-fighting. Build with data protection and privacy in …","description":"

Say Goodbye to comment spam on your WordPress blog or website. Antispam Bee blocks spam comments and trackbacks effectively, without captchas and without sending personal information to third party services. It is free of charge, ad-free and 100% GDPR compliant.

\n

Feature/Settings Overview

\n
    \n
  • Trust approved commenters.
  • \n
  • Trust commenters with a Gravatar.
  • \n
  • Consider the comment time.
  • \n
  • Allow comments only in a certain language.
  • \n
  • Block or allow commenters from certain countries.
  • \n
  • Treat BBCode links as spam.
  • \n
  • Validate the IP address of commenters.
  • \n
  • Use regular expressions.
  • \n
  • Search local spam database for commenters previously marked as spammers.
  • \n
  • Notify admins by e-mail about incoming spam.
  • \n
  • Delete existing spam after n days.
  • \n
  • Limit approval to comments/pings (will delete other comment types).
  • \n
  • Select spam indicators to send comments to deletion directly.
  • \n
  • Optionally exclude trackbacks and pingbacks from spam detection.
  • \n
  • Optionally spam-check comment forms on archive pages.
  • \n
  • Display spam statistics on the dashboard, including daily updates of spam detection rate and a total of blocked spam comments.
  • \n
\n

Support

\n\n

Contribute

\n
    \n
  • Active development of this plugin is handled on GitHub.
  • \n
  • Pull requests for documented bugs are highly appreciated.
  • \n
  • If you think you’ve found a bug (e.g. you’re experiencing unexpected behavior), please post at the support forums first.
  • \n
  • If you want to help us translate this plugin you can do so on WordPress Translate.
  • \n
\n

Credits

\n\n","download_link":"https://downloads.wordpress.org/plugin/antispam-bee.2.10.0.zip","tags":{"anti-spam":"anti-spam","antispam":"antispam","block-spam":"block spam","comment":"comment","comments":"comments"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=TD4AMD2D8EMZW","icons":{"1x":"https://ps.w.org/antispam-bee/assets/icon-128x128.png?rev=977629","2x":"https://ps.w.org/antispam-bee/assets/icon-256x256.png?rev=977629"},"wporg":true},{"name":"SimpleTOC – Table of Contents Block","slug":"simpletoc","version":"4.8","author":"Marc Tönsing","author_profile":"https://profiles.wordpress.org/marcdk","requires":"5.0","tested":"5.8","requires_php":false,"rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":24},"num_ratings":24,"support_threads":2,"support_threads_resolved":1,"active_installs":2000,"downloaded":20704,"last_updated":"2021-07-29 9:07pm GMT","added":"2020-04-14","homepage":"https://marc.tv/simpletoc-wordpress-inhaltsverzeichnis-plugin-gutenberg/","short_description":"Adds a custom Table of Contents Gutenberg block.","description":"

In Gutenberg, add a block and search for “SimpleTOC” or just “TOC”. You need to save your post before you add the block. It works by parsing the post content and retrieving the heading blocks and creates a new dynamic block with a list of links to the headings.

\n

Hide the headline “Table of Contents” and set a maximum display depth in the blocks’ sidebar configuration. Add the CSS class “simpletoc-hidden” to a heading block to remove that specific heading from the generated TOC.

\n

Features

\n
    \n
  • No javascript or css added.
  • \n
  • Designed for Gutenberg.
  • \n
  • Compatible with AMP plugins.
  • \n
  • Minimal and valid HTML output.
  • \n
  • Inherits the style of your theme.
  • \n
  • Support for column block layouts.
  • \n
  • Control the maximum depth of the headings.
  • \n
  • Choose between an ordered and unordered html list.
  • \n
  • SEO friendly: Disable the h2 heading of the TOC block and add your own.
  • \n
  • Comes with English, French, Spanish, German, and Brazilian Portuguese translations.
  • \n
  • Works with non-latin texts. Tested with Japanese and Arabic.
  • \n
  • Finds headlines in groups and reusable blocks. And in groups within reusable blocks.
  • \n
  • Rank Math support.
  • \n
\n

Credits

\n

This plugin is forked from https://github.com/pdewouters/gutentoc by pdewouters and uses code from https://github.com/shazahm1/Easy-Table-of-Contents by shazahm1

\n

Many thanks to Tom J Nowell https://tomjn.com and and Sally CJ who both helped me a lot with my questions over at wordpress.stackexchange.com

\n","download_link":"https://downloads.wordpress.org/plugin/simpletoc.4.8.zip","tags":{"amp":"amp","block":"block","gutenberg":"gutenberg","table-of-contents":"table of contents","toc":"toc"},"donate_link":"https://marc.tv/out/donate","icons":{"1x":"https://ps.w.org/simpletoc/assets/icon.svg?rev=2451408","2x":"https://ps.w.org/simpletoc/assets/icon-256x256.png?rev=2451408","svg":"https://ps.w.org/simpletoc/assets/icon.svg?rev=2451408"},"wporg":true},{"name":"Log in with Google","slug":"login-with-google","version":"1.2.1","author":"rtCamp","author_profile":"https://profiles.wordpress.org/rtcamp","requires":"5.4.2","tested":"5.7.2","requires_php":"7.3","rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":6},"num_ratings":6,"support_threads":4,"support_threads_resolved":2,"active_installs":300,"downloaded":2952,"last_updated":"2021-07-23 10:00pm GMT","added":"2020-10-01","homepage":"","short_description":"Minimal plugin that allows WordPress users to log in using Google.","description":"

Ultra minimal plugin to let your users login to WordPress applications using their Google accounts. No more remembering hefty passwords!

\n

Initial Setup

\n
    \n
  1. \n

    Create a project from Google Developers Console if none exists.

    \n
  2. \n
  3. \n

    Go to Credentials tab, then create credential for OAuth client.

    \n
      \n
    • Application type will be Web Application
    • \n
    • Add YOUR_DOMAIN/wp-login.php in Authorized redirect URIs
    • \n
    \n
  4. \n
  5. \n

    This will give you Client ID and Secret key.

    \n
  6. \n
  7. \n

    Input these values either in WP Admin > Settings > WP Google Login, or in wp-config.php using the following code snippet:

    \n

    `
    \ndefine( ‘WP_GOOGLE_LOGIN_CLIENT_ID’, ‘YOUR_GOOGLE_CLIENT_ID’ );
    \ndefine( ‘WP_GOOGLE_LOGIN_SECRET’, ‘YOUR_SECRET_KEY’ );
    \n“

    \n
  8. \n
\n

Browser support

\n

These browsers are supported. Note, for example, that One Tap Login is not supported in Safari.

\n

How to enable automatic user registration

\n

You can enable user registration either by
\n– Enabling Settings > WP Google Login > Enable Google Login Registration

\n

OR

\n
    \n
  • Adding
    \ndefine( 'WP_GOOGLE_LOGIN_USER_REGISTRATION', 'true' );
    \nin wp-config.php file.
  • \n
\n

Note: If the checkbox is ON then, it will register valid Google users even when WordPress default setting, under

\n

Settings > General Settings > Membership > Anyone can register checkbox

\n

is OFF.

\n

Restrict user registration to one or more domain(s)

\n

By default, when you enable user registration via constant WP_GOOGLE_LOGIN_USER_REGISTRATION or enable Settings > WP Google Login > Enable Google Login Registration, it will create a user for any Google login (including gmail.com users). If you are planning to use this plugin on a private, internal site, then you may like to restrict user registration to users under a single Google Suite organization. This configuration variable does that.

\n

Add your domain name, without any schema prefix and www, as the value of WP_GOOGLE_LOGIN_WHITELIST_DOMAINS constant or in the settings Settings > WP Google Login > Whitelisted Domains. You can whitelist multiple domains. Please separate domains with commas. See the below example to know how to do it via constants:

\n
`\n
\n

define( ‘WP_GOOGLE_LOGIN_WHITELIST_DOMAINS’, ‘example.com,sample.com’ );
\n `

\n

Note: If a user already exists, they will be allowed to login with Google regardless of whether their domain is whitelisted or not. Whitelisting will only prevent users from registering with email addresses from non-whitelisted domains.

\n

Hooks

\n

Filter wp_google_login_scopes
\nThis filter can be used to filter existing scope used in Google Sign in.
\nYou can ask for additional permission while user logs in.
\nThis filter will provide 1 parameter scopes in callback, which contains array of scopes.

\n

wp-config.php parameters list

\n
    \n
  • \n

    WP_GOOGLE_LOGIN_CLIENT_ID (string): Google client ID of your application.

    \n
  • \n
  • \n

    WP_GOOGLE_LOGIN_SECRET (string): Secret key of your application

    \n
  • \n
  • \n

    WP_GOOGLE_LOGIN_USER_REGISTRATION (boolean) (optional): Set true If you want to enable new user registration. By default, user registration defers to Settings > General Settings > Membership if constant is not set.

    \n
  • \n
  • \n

    WP_GOOGLE_LOGIN_WHITELIST_DOMAINS (string) (optional): Domain names, if you want to restrict login with your custom domain. By default, it will allow all domains. You can whitelist multiple domains.

    \n
  • \n
\n

BTW, We’re Hiring!

\n

\n","download_link":"https://downloads.wordpress.org/plugin/login-with-google.1.2.1.zip","tags":{"authentication":"authentication","google-login":"Google Login","oauth":"oauth","sign-in":"sign in","sso":"sso"},"donate_link":"https://rtcamp.com/","icons":{"1x":"https://ps.w.org/login-with-google/assets/icon-128x128.png?rev=2402713","2x":"https://ps.w.org/login-with-google/assets/icon-256x256.png?rev=2402713"},"wporg":true},{"name":"Search with Google","slug":"search-with-google","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://wordpress.org/plugins/search-with-google/","short_description":"

This plugin replaces the WordPress default search query with server-side results from Custom Search Site Restricted JSON API. 

\n","description":"\n\n\n

This plugin replaces the WordPress default search query with server-side results from Custom Search Site Restricted JSON API

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2020/11/searchWithGoogle-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2020/11/searchWithGoogle-372x209.jpg","svg":""},"wporg":false},{"name":"Page Builder Gutenberg Blocks – CoBlocks","slug":"coblocks","version":"2.16.0","author":"GoDaddy","author_profile":"https://profiles.wordpress.org/godaddy","requires":"5.0","tested":"5.8","requires_php":"5.6","rating":88,"ratings":{"1":7,"2":3,"3":4,"4":5,"5":63},"num_ratings":82,"support_threads":16,"support_threads_resolved":4,"active_installs":500000,"downloaded":5426346,"last_updated":"2021-08-12 8:29pm GMT","added":"2018-04-19","homepage":"","short_description":"CoBlocks is a suite of page builder WordPress blocks for Gutenberg, with 10+ new blocks and a true page builder experience with rows and columns.","description":"

CoBlocks is the most innovative collection of page building WordPress blocks for the new Gutenberg WordPress block editor.

\n

With additional blocks and true row and column building, CoBlocks gives you a true page builder experience for Gutenberg.

\n

CoBlocks is powerful but lightweight: it adds functionality to the WordPress editor without bloat. This is the plugin you’ve been waiting for, and it will make you rethink what WordPress is capable of.

\n

Make Beautiful Web Pages With Gutenberg & CoBlocks

\n

CoBlocks is the last page builder you’ll ever need: you get a winning mix of additional WordPress blocks, and page builder functionality. With CoBlocks you have everything you need to make beautiful web pages with the new block editor:

\n
    \n
  • Accordion Block
  • \n
  • Alert Block
  • \n
  • Author Profile Block
  • \n
  • Buttons Block
  • \n
  • Carousel Gallery Block
  • \n
  • Click to Tweet Block
  • \n
  • Collage Gallery Block
  • \n
  • Dynamic Separator Block
  • \n
  • Events Block (New!)
  • \n
  • Features Block
  • \n
  • Food & Drinks Block
  • \n
  • Form Block
  • \n
  • Gif Block
  • \n
  • GitHub Gist Block
  • \n
  • Hero Block
  • \n
  • Highlight Block
  • \n
  • Icon Block
  • \n
  • Logos & Badges Block
  • \n
  • Map Block
  • \n
  • Masonry Gallery Block
  • \n
  • Media Card Block
  • \n
  • Offset Gallery Block
  • \n
  • Post Carousel Block
  • \n
  • Posts Block
  • \n
  • Pricing Table Block
  • \n
  • Resizable Row/Columns Blocks
  • \n
  • Services Block
  • \n
  • Shape Divider Block
  • \n
  • Social Profiles Block
  • \n
  • Social Sharing Block
  • \n
  • Stacked Gallery Block
  • \n
\n

Breakthrough Page Builder System

\n

CoBlocks features an innovative block system that allows you to create stunning web pages, and even entire websites, with the new WordPress editor.

\n

You get the extra blocks you need and the layout and design functionality for a true page builder experience.

\n

Use the exceptional Row and Columns blocks to add dynamically generated content areas with specific responsive margin and padding settings that only CoBlocks provides.

\n

Style these with innovative new blocks such as the Shape Divider, which lets you split up your content with beautiful dividers.

\n

Each of the WordPress blocks within CoBlocks have been precisely fined tuned to offer a familiar, yet powerful, customization experience. Tailor each block to your taste using our custom controls and settings. Change fonts, set margin and padding, pick colors and more.

\n

Custom Typography Controls

\n

The breakthrough Typography Control Panel within CoBlocks lets you design web pages with alluring typographic elements. Set fonts, sizes, weights, transformations and more, in our CoBlocks blocks, and in core WordPress blocks.

\n

Free Companion Theme

\n

CoBlocks is built to show off the best of Gutenberg, but it requires a Gutenberg-first theme to unlock its full potential. We also created the free Go theme in the WordPress theme repository as the perfect companion for CoBlocks.

\n

Going Beyond Gutenberg Blocks

\n

The vision for CoBlocks is to create a suite of Gutenberg blocks to help folks make beautiful websites easily. These newest releases of CoBlocks is the ultimate expression of that vision.

\n

Built With Developers in Mind

\n

Extensible, adaptable, and open source — CoBlocks is created with theme and plugin developers in mind. If you’re interested to jump in the project, there are opportunities for developers at all levels to get involved. Contribute to CoBlocks on GitHub and join the party. 🎉

\n","download_link":"https://downloads.wordpress.org/plugin/coblocks.2.16.0.zip","tags":{"blocks":"blocks","gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","page-builder":"page builder","wordpress-blocks":"wordpress blocks"},"donate_link":"","icons":{"1x":"https://ps.w.org/coblocks/assets/icon-128x128.jpg?rev=2243972","2x":"https://ps.w.org/coblocks/assets/icon-256x256.jpg?rev=2243972"},"wporg":true},{"name":"Simple Author Box","slug":"simple-author-box","version":"2.42","author":"WebFactory Ltd","author_profile":"https://profiles.wordpress.org/webfactory","requires":"4.6","tested":"5.8","requires_php":"5.6","rating":88,"ratings":{"1":9,"2":0,"3":5,"4":8,"5":75},"num_ratings":97,"support_threads":12,"support_threads_resolved":11,"active_installs":50000,"downloaded":897542,"last_updated":"2021-08-13 8:08am GMT","added":"2014-08-08","homepage":"https://wpauthorbox.com/","short_description":"Add a responsive author box with social icons to any post. Great author box for…","description":"

Simple Author Box adds a responsive author box at the end of your posts, showing the author name, author gravatar and author description – author bio. It also adds over 30 social profile fields on WordPress user profile screen, allowing to display the author social icons in the author box.

\n

Main Features

\n
    \n
  • Shows author gravatar, name, website, description (author bio) and social icons
  • \n
  • Fully customizable to match your theme design (style, color, size and text options)
  • \n
  • Nice looking on desktop, laptop, tablet or mobile phones
  • \n
  • Automatically insert the author box at the end of your post
  • \n
  • Option to manually insert the author box on your template file (single.php or author.php)
  • \n
  • Simple Author Box has RTL support
  • \n
  • Simple Author Box has AMP support
  • \n
  • Great for guest posts, and guest authors
  • \n
\n

Simple Author Box Pro Features

\n
\n

Premium features only available in Simple Author Box Pro

\n
    \n
  • Change author box position to before/after content
  • \n
  • Choose whether the author’s name should link to its website/page/none
  • \n
  • Select where to show author box on
  • \n
  • Add rotate effect on author avatar hover
  • \n
  • Option to open author website link in a new tab
  • \n
  • Option to add “nofollow” attribute on author website link
  • \n
  • Choose the author website’s position: right/left
  • \n
  • Social icons type, style, rotate effect, shadow effect, thin border
  • \n
  • Option to change the color palette
  • \n
  • Choose the font and font sizes for the author’s job title, website, name, and description
  • \n
  • Enable guest authors and co-authors
  • \n
  • Option to use guest authors as co-authors
  • \n
  • Top authors widget – displays the most popular authors based of comments
  • \n
  • Simple author box widget – displays the users selected
  • \n
\n
\n

Read more about the Simple Author Box advanced features.

\n","download_link":"https://downloads.wordpress.org/plugin/simple-author-box.2.42.zip","tags":{"author-bio":"author bio","author-box":"author box","author-profile-fields":"author profile fields","author-social-icons":"author social icons","responsive-author-box":"responsive author box"},"donate_link":"","icons":{"1x":"https://ps.w.org/simple-author-box/assets/icon-128x128.jpg?rev=1821054"},"wporg":true},{"name":"Genesis Blocks","slug":"genesis-blocks","version":"1.2.5","author":"StudioPress","author_profile":"https://profiles.wordpress.org/studiopress","requires":"5.3","tested":"5.8","requires_php":"7.1","rating":90,"ratings":{"1":1,"2":0,"3":1,"4":0,"5":10},"num_ratings":12,"support_threads":11,"support_threads_resolved":4,"active_installs":40000,"downloaded":195694,"last_updated":"2021-07-20 6:30pm GMT","added":"2020-08-25","homepage":"https://studiopress.com/genesis-pro/","short_description":"A collection of content blocks, sections, & full-page layouts for the block editor.","description":"

Genesis Blocks is a collection of page building blocks for the Gutenberg block editor. Building pages with the block editor and Genesis Blocks gives you more control to quickly create and launch any kind of site you want!

\n

Installing the customizable Genesis Blocks plugin adds a collection of beautiful, site-building blocks to help you customize page layouts, increase engagement, and get results for your business. Genesis Blocks provides everything from customizable buttons, to beautifully-designed page sections and full-page layout designs via the Section & Layout block.

\n

Along with the blocks themselves, Genesis Blocks extends the content creation experience by providing a library of page sections and full-page layouts, all available from within the block editor.

\n

Create compelling content faster.

\n

Create and use content quickly with prebuilt and custom content sections and full-page layouts.

\n

Enhance the Gutenberg editor.

\n

Additional content blocks and the layout selector make it easy to get the most value out of the block-based editor.

\n

Genesis Blocks currently includes the following blocks to help you build content and pages quickly and effortlessly:

\n
    \n
  • Section & Layout Block
  • \n
  • Advanced Columns Block
  • \n
  • Newsletter Block
  • \n
  • Pricing Block
  • \n
  • Post Grid Block
  • \n
  • Container Block
  • \n
  • Testimonial Block
  • \n
  • Inline Notice Block
  • \n
  • Accordion Block
  • \n
  • Share Icons Block
  • \n
  • Call-To-Action Block
  • \n
  • Customizable Button Block
  • \n
  • Spacer & Divider Block
  • \n
  • Author Profile Block
  • \n
  • Drop Cap Block
  • \n
\n

Do more with Genesis Pro

\n

For those wanting to level-up with Genesis Blocks, a Genesis Pro subscription brings even richer tooling and a bigger library of sections and layouts.

\n
    \n
  • 2 new blocks (more coming soon)
  • \n
  • 26 pre-built full-page layouts
  • \n
  • 56 pre-built sections
  • \n
  • Save & reuse your own sections & layouts
  • \n
  • Advanced block-level user permissions
  • \n
  • Access to and support for Genesis Framework & all of our 35 StudioPress-made premium child themes.
  • \n
  • Additional advanced features for the rest of the Genesis Product Suite
  • \n
\n

Genesis Pro includes even more value for modern WordPress content creators, marketers, and developers. Learn more about Genesis Pro here.

\n

Google AMP Support

\n

The Accelerated Mobile Pages (AMP) project is a publishing format created by Google to enhance site performance for mobile website users. AMP pages are specially designed for Google search users to quickly load website pages without using any extraneous data. Genesis Blocks has support for AMP built into each block!

\n

Help & Docs

\n

User and developer docs for Genesis Blocks can be found here.

\n","download_link":"https://downloads.wordpress.org/plugin/genesis-blocks.1.2.5.zip","tags":{"blocks":"blocks","editor":"editor","gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","page-builder":"page builder"},"donate_link":"https://studiopress.com","icons":{"1x":"https://ps.w.org/genesis-blocks/assets/icon-128x128.png?rev=2368839","2x":"https://ps.w.org/genesis-blocks/assets/icon-256x256.png?rev=2368840"},"wporg":true},{"name":"MathML Block","slug":"mathml-block","version":"1.2.0","author":"adamsilverstein","author_profile":"https://profiles.wordpress.org/adamsilverstein","requires":"5.0","tested":"5.5.5","requires_php":"5.6","rating":90,"ratings":{"1":0,"2":0,"3":0,"4":1,"5":1},"num_ratings":2,"support_threads":1,"support_threads_resolved":0,"active_installs":500,"downloaded":7397,"last_updated":"2020-10-01 11:05pm GMT","added":"2018-12-28","homepage":"","short_description":"A MathML block for the WordPress block editor (Gutenberg).","description":"

A MathML block for the WordPress block editor (Gutenberg).
\nRequires PHP 5.4+ and WordPress 5.0+.

\n

Development takes place on the GitHub repository: https://github.com/adamsilverstein/mathml-block.

\n

Screencast: https://cl.ly/c0f6bbfbc3b1

\n

What is MathML?

\n

Mathematical Markup Language is a mathematical markup language, an application of XML for describing mathematical notations and capturing both its structure and content. It aims at integrating mathematical formulae into World Wide Web pages and other documents.

\n

The MathML block uses MathJax to render MathML formulas in the editor and on the front end of a website. MathJax (https://www.mathjax.org/) is A JavaScript display engine for mathematics that works in all browsers.

\n

To test a MathML block and enter a formula, for example: \\[x = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}\\].

\n

To test using math formulas inline, type an formula into a block of text, select it and hit the ‘M’ icon in the control bar. For example: \\( \\cos(θ+φ)=\\cos(θ)\\cos(φ)−\\sin(θ)\\sin(φ) \\). Note: if you are copying and pasting formulas into the rich text editor, switching to HTML/code editor mode is less likely to reformat your pasted formula.

\n

This plugin is compatible with the official AMP plugin by rendering amp-mathml on AMP pages.

\n

Technical Notes

\n
    \n
  • Requires PHP 5.6+.
  • \n
  • Requires WordPress 5.0+.
  • \n
  • Issues and Pull requests welcome on the GitHub repository: https://github.com/adamsilverstein/mathml-block.
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/mathml-block.zip","tags":{"block":"block","block-editor":"block-editor","gutenberg":"gutenberg","math":"math","mathml":"mathml"},"donate_link":"","icons":{"1x":"https://ps.w.org/mathml-block/assets/icon-128x128.png?rev=2002452","2x":"https://ps.w.org/mathml-block/assets/icon-256x256.png?rev=2002452"},"wporg":true},{"name":"Calculated Fields Form","slug":"calculated-fields-form","version":"1.1.15","author":"CodePeople","author_profile":"https://profiles.wordpress.org/codepeople","requires":"3.0.5","tested":"5.8","requires_php":false,"rating":96,"ratings":{"1":20,"2":2,"3":4,"4":26,"5":675},"num_ratings":727,"support_threads":101,"support_threads_resolved":101,"active_installs":60000,"downloaded":3480499,"last_updated":"2021-09-06 2:13pm GMT","added":"2013-03-12","homepage":"https://cff.dwbooster.com","short_description":"Calculated Fields Form allows you to create both simple and rich forms, quickly like a professional. It includes a form builder with dynamic calculate …","description":"

The “Calculated Fields Form” plugin allows you to create web forms with calculated fields, whose values are dynamically calculated based on other fields’ values in the web form.

\n

The possibilities are unlimited. For example, you can create forms with financial calculations, date operations to create reservation forms, and calculate the product prices. The plugin includes text operations for editing, translation, or advertising services. There are more advanced operations available such as determining the distance between addresses or generating graphs. The resulting forms are 100% mobile responsive.

\n

The most impressive thing is that you don’t need to hire a programmer to create the forms. With basic knowledge, you will have a professional form in just five minutes.

\n

Creating a form is all visual. The “Calculated Fields Form” plugin includes a form editor with multiple controls. Such as text fields, numeric fields, currency fields, slider controls, email fields, radio buttons, checkboxes, container fields, page breaks to create multipage forms, and most importantly, calculated fields.

\n

The form editor includes a list of controls, a property bar to easily edit field properties, a dashboard where you can design your forms, and the attributes for form configuration. Also, the plugin comes with multiple predefined layouts to change the forms’ appearance. If there are not enough predefined layouts for your project, there is a style editor to customize the form’s design.

\n

The “Calculated Fields Form” plugin includes integration with popular page builders:

\n
    \n
  • Classic WordPress Editor
  • \n
  • Gutenberg Editor
  • \n
  • Elementor
  • \n
  • Page Builder by SiteOrigin
  • \n
  • Beaver Builder
  • \n
  • WPBakery Page Builder
  • \n
  • DIVI Builder
  • \n
\n

For other editors, it is possible to insert the form into the pages via its shortcode. Each web form has an associated shortcode that allows you to insert it wherever you want.

\n

Features

\n

Main features:

\n
    \n
  • Visual form builder with an intuitive and interactive interface.
  • \n
  • Includes general-purpose controls such as radio buttons, checkboxes, menu lists, date fields, slider controls, numeric fields, text currency fields, etc.
  • \n
  • Includes calculated fields whose values result from operations involving other form fields.
    \nInsert as many calculated fields in the form as you need.
  • \n
  • Contains an advanced formula editor associated with the calculated fields with syntax highlighting and error detection.
  • \n
  • Features many operations modules: mathematical operations, operations with dates, financial operations, distance operations, text management, operations for calling remote services, etc. The calculated fields can identify numbers and prices within the values of the fields.
  • \n
  • Distributed with several predefined forms that you can use as a starting point for your projects.
  • \n
  • Includes several design templates.
  • \n
  • Supports multi-pages forms by inserting page break controls between fields belonging to different pages.
  • \n
  • Allows the grouping of fields inside container controls (Div and Fieldset).
  • \n
  • Possible to define dependency rules between fields in the form, which is very useful in the design of wizards.
  • \n
\n

Other features:

\n
    \n
  • From the plugin configuration page, it is possible to duplicate a form by pressing the “Clone” button associated with it. By cloning a form, you can reuse the work already done.
  • \n
  • Includes a troubleshooting and optimization area.
  • \n
  • Allows you to disable forms in the indexing process to improve the speed of the website.
  • \n
  • Includes a version control in the forms to recover previous versions.
  • \n
\n

Predefined forms:

\n

“Calculated Fields Form” is distributed with five predefined sample forms.

\n
    \n
  1. Simple Calculator Operations
  2. \n
  3. Calculation with Dates (bookings with check-in and check-out dates)
  4. \n
  5. Ideal Weight Calculator
  6. \n
  7. Pregnancy Calculator
  8. \n
  9. Lease Calculator
  10. \n
\n

You can clone a sample form to implement your project, or create a new form from scratch.

\n
\n

Calculated Fields Form Commercial
\n The free version of the “Calculated Fields Form” plugin includes only basic functionality. Other distributions (Professional, Developer, and Platinum) are available with advanced functionalities, such as sending notification emails, integration with payment gateways and external services, controls for database’s connection (and connection to other data sources), complex operations, and many other features.

\n
\n

Features of the Profesional version:

\n
    \n
  • Includes all the features of the free version of the plugin.
  • \n
  • Submit the data collected by the forms and store it on the website for review.
  • \n
  • Send notification emails with the data collected by the form, as well as confirmation emails to the users.
  • \n
  • Integrate the form with PayPal and calculate the amount to be charged through a calculated field.
    \nPayments allow SCA (strong customer authentication), compatible with the new payment services (PSD 2) – Directive (EU).
  • \n
  • Export and import forms between different WordPress sites.
  • \n
  • Different mechanisms to protect forms, such as captcha, WordPress nonces, and honeypot fields.
  • \n
  • Associate “Thank You” page with the form, where you can show a summary of the form’s submission.
  • \n
  • Dashboard widget to show the last week’s submissions.
  • \n
  • Cache the forms to increase the rendering speed.
  • \n
  • Export the information submitted by the forms to a CSV file and use it with third-party tools such as Excel, OpenOffice, LibreOffice, or any other spreadsheet editor.
  • \n
\n

Features of the Developer version:

\n\n

Includes add-ons to extend the form features and make use of third-party plugins and external services

\n
    \n
  • Server-Side Equations add-on: define server-side equations.
  • \n
  • Verification Code add-on: verifies the user’s email by sending him a verification code and blocking the form’s submission until the verification code is entered.
  • \n
  • WooCommerce add-on: integrate forms with WooCommerce products and calculate their prices, dimensions, and weight at the runtime.
  • \n
  • SalesForce add-on: integrate the form with the SalesForce service.
  • \n
  • WebHooks add-on: send the information collected by the form to a WebHook URL to open countless possibilities. By connecting your form to services such as Zapier, Microsoft Flow, IFTTT, Workato, and others, you can connect to hundreds of third-party services (e.g. Zoho CRM, Dropbox, Mailchimp, Google Drive, Facebook, Twitter, etc.).
  • \n
  • User Permissions add-on: control the forms’ access, as well as allowing users to access and edit their data.
  • \n
  • User Registration Form add-on: build a user registration form that captures the user’s basic information and metadata.
  • \n
  • reCAPTCHA add-on: replace the basic captcha with Google reCAPTCHA to protect the forms.
  • \n
\n

Features of the Platinum version:

\n
    \n
  • Includes all the features of free, Professional, and Developer versions of the plugin.
  • \n
  • Unique Fields Values add-on: verifies that the values entered by users have not been used in previous submissions.
  • \n
  • Easy Digital Downloads add-on: integrate the forms into Easy Digital Downloads products and calculate their prices at the runtime.
  • \n
  • Google Analytics add-on: generate usage reports in “Google Analytics” for the users’ actions.
  • \n
  • PayPal Pro add-on: enable the payer’s credit card details to be entered directly through the website without any redirection to the PayPal website.
  • \n
  • Upload Files add-on: add uploaded files to the media library and extend the file types accepted by WordPress.
  • \n
  • DropBox Integration add-on: copy or move the uploaded files to a DropBox account.
  • \n
  • ip2location add-on: identify the users’ data using the ip2location databases.
  • \n
  • Google Places add-on: transform form fields into autocomplete address fields.
  • \n
  • Autocomplete Places add-on: transform form fields into autocomplete address fields by using the Photon API.
  • \n
  • Signature add-on: convert form fields into “Signature” fields, allowing the users to sign the form with a mouse or touchscreen.
  • \n
  • iCal add-on: send iCal file in the notification emails to import the events into most popular calendars like Outlook and Google Calendar.
  • \n
  • CSV Generator add-on: export the information collected by the form to CSV files and attach these to the notification emails.
  • \n
  • PDF Generator add-on: generate PDF files with the information collected by the forms and attach them to the notification emails.
  • \n
  • WebMerge add-on: integrate the forms with FormStack documents (formerly WebMerge) to generate PDF and Office documents at runtime with the information collected by the web forms.
  • \n
  • PrintFriendly add-on: generate PDF files with the PrintFriendly API and attach the resulting files to the notification emails.
  • \n
  • Mailchimp add-on: add new members to the MailChimp account.
  • \n
  • Mautic add-on: add new contacts (or update existing ones) into the Mautic Service.
  • \n
  • HubSpot add-on: add/update contacts in HubSpot, using the information collected by the form.
  • \n
  • Emma add-on: add new members to the Emma service.
  • \n
  • Twilio add-on: send notification messages (SMS) in the forms’ submissions.
  • \n
  • MailPoet add-on: add new subscribers to MailPoet’s Mailing Lists (MailPoet versions 2 and 3).
  • \n
  • AffiliateWP add-on: integrate the forms with the AffiliateWP plugin.
  • \n
  • Authorize.Net add-on: accept payments via Authorize.Net from the form.
  • \n
  • Stripe add-on: accept payments via the Stripe payment gateway from the form.
  • \n
  • Skrill Payments Integration add-on: integrate with the Skrill Moneybookers payment gateway.
  • \n
  • TargetPay (iDeal) add-on add-on: integrate with iDeal, the popular Dutch payment method.
  • \n
  • Mollie (iDeal) add-on: accept payments via iDeal.
  • \n
  • RedSys / Servired / Sermepa add-on provides: a secure interface for accepting credit card payments from most banks in Spain.
  • \n
  • PayTM add-on: a secure interface for accepting payments with credit cards, debit cards, net banking, wallets, and EMI.
  • \n
  • SagePay add-on: a secure interface for accepting payments via SagePay.
  • \n
  • Sage Payment add-on: a secure interface for accepting payments through a secure SSL checkout system for both bankcard and virtual check transactions.
  • \n
\n

Please keep the plugin updated. Updates contain bug fixes as well as new features. The WordPress directory distributes the updates for the free version of the plugin. But for commercial versions, it would be necessary to register your copy of the plugin. The following link describes the registration process: CLICK HEREThis section mainly contains notes on features of the form builder that are too detailed to include in the main description.

\n

Conditional rules

\n

It is possible to show or hide form fields (dependent fields) based on the options selected in checkbox fields, radio buttons, the options selected in dropdown menus, or the result of calculated fields.

\n

The value of a dependent field is zero when it is hidden/disabled. The plugin excludes the disabled form fields from the submission.

\n

Additional details about the use of dependencies

\n

Predefined values

\n

The predefined values in the fields have two possible uses:

\n

1- To fill the field by default. This makes it easier for the end-user to enter values.

\n

2- Hint of the values to be entered in the field (like “Enter your name”). To use the predefined value as a placeholder, you must tick the “Hide predefined value on click” checkbox. The value will disappear once the user starts filling in the field. The calculated fields’ equations ignore placeholders.

\n

The “User Instructions” attribute

\n

The “User instructions” attribute in the field settings allows you to instruct the user on how to fill in the field. By default, the instructions appear as smaller text on the public website. But they can be configured as tooltips.

\n

Adding CSS layout keywords

\n

The “Add CSS layout keywords” attribute in the fields settings allows you to apply CSS styles to fields. You must only enter the name of the CSS class names, and not their definitions.

\n

You can define the CSS classes via the “Customize Form Design” attribute in the “Form Settings” tab. This attribute contains a CSS editor with syntax highlighting and error checking.

\n

If you want to assign several class names to the field, separate them by space characters.

\n

The plugin includes multiple predefined classes that you can assign to the form fields.

\n

More information about the form’s design can be found by reading the following post in the plugin’s blog:

\n

Customizing the form’s design

\n

The classes listed below allow you to align two, three, or four fields on the same line:

\n
column2\ncolumn3\ncolumn4\n
\n

For example, if you want to put two fields on the same line, give both fields the class name “column2”.

\n

There are other variants for displaying several fields on the same line, such as container fields (Div or Fieldset). Container fields allow you to select the number of columns in your configuration. The following post describes all the alternatives for positioning the fields in the form:

\n

Formatting the form (distributing the fields in columns)

\n

Multi-page form

\n

To create multi-page forms, you must insert “Page break” controls between fields belonging to different pages.

\n

When the user presses the “Next Page” button, the plugin validates the fields in the current form. If there is any validation error (such as an unfilled required field), the plugin stops the “Next page” action.

\n

Hidden calculated fields

\n

Calculated fields include a checkbox in the configuration that allows them to be hidden from the public website. This feature is essential in those fields that are used to calculate intermediate values or when we want to show the results only in emails or thank you pages.

\n

Equation / Formula format for calculated fields

\n

Below, some possible formulas are included as examples, but the possibilities are endless.

\n
    \n
  • \n

    With simple mathematical operations:

    \n
    fieldname1 + fieldname2\n\nfieldname1 * fieldname2\n\nfieldname1 / fieldname2\n\nfieldname1 - fieldname2\n\nfieldname1 - fieldname2\n
    \n
  • \n
  • \n

    With mathematical operations involving multiple fields and grouped fields:

    \n
    fieldname1 * (fieldname2 + fieldname3)\n
    \n
  • \n
  • \n

    With rounding operations. Round the result to two decimal places:

    \n
    PREC(fieldname2 / fieldname3, 2)\n
    \n
  • \n
  • \n

    There are infinite number of formulas that can be created using complex structures. For example, the following formula includes conditional statements:

    \n
    (function () {\nif (100 < fieldname3) return fieldname1 + fieldname2;\nif (fieldname3 <= 100) return fieldname1 * fieldname2;\n})();\n
    \n
  • \n
  • \n

    For complex formulas/equations you must use the function format with return statement to return the result to the calculated field:

    \n
     (function () {\n    var result = 0;\n    /* Your code here */\n    return result;\n}) ();\n
    \n
  • \n
\n

Operations and operators to use in equations/formulas

\n

One of the “Calculated Fields Form” strengths is the ability to use any valid JavaScript code to implement the equations/formulas.

\n

However, the plugin includes a wide variety of operations and operators to simplify the development process.

\n

Mathematical Operations and Operators

\n

Conditional Operations

\n

Field Handling Operations

\n

Operations for interacting with external services

\n

Operations for handling URLs and query strings

\n

In addition to the operation modules listed above, the Developer and Platinum versions of the plugin include additional modules:

\n

Date Time Operations

\n

Financial Operations

\n

Distance and Travel Time Operations

\n

Operations to generate charts

\n

Controls available in the form generator of the “Calculated Fields Form”

\n

The complete list of controls is available from this link: CLICK HERE

\n

Create JavaScript variables from parameters received by “GET” or “POST”, “SESSION” variables, or “COOKIES” to use in the equations

\n

The plugin includes the shortcode [CP_CALCULATED_FIELDS_VAR] to generate JavaScript variables from parameters received by “GET” or “POST”, “SESSION” variables, or “COOKIES”:

\n
[CP_CALCULATED_FIELDS_VAR name=\"...\"]\n
\n

In the shortcode, you must replace the “…” symbols with the name of the parameter or variable. It will be the same name for the JavaScript variable.

\n

For example:

\n
[CP_CALCULATED_FIELDS_VAR name=\"varname\"]\n
\n

You can use the variables generated through the shortcode [CP_CALCULATED_FIELDS_VAR] in the formulas of the calculated fields: fieldname1*varname

\n

The complete list of parameters accepted by the variables shortcode is available at the following link: CLICK HERE

\n

Tips for calculating prices

\n

One of the most frequent uses of our plugin is for price calculation. When displaying the price of a product, you may want to split the form into two pages. The first page would request the information needed to calculate the price, and the second page would include the calculated field with the final price. Also, you could use the “Instruct. Text” fields to indicate the terms, conditions, and validity period of the offer.

\n

Note that you can make the “Instruct. Text” fields dependent on the calculated value. This allows you to vary the text displayed to the user depending on the calculated price, as the terms, conditions, or offers often depend on the transaction amount.

\n

Add-ons

\n

The add-ons are only distributed with the Developer and Platinum versions of the plugin.

\n

The plugin lists the add ons in the “Add-ons area” of the settings page. To enable the add-ons, you must tick their corresponding checkbox and press the “Activate/Deactivate Add-ons” button.

\n

Server-Side Equations add-on – included in the Developer and Platinum versions of the plugin

\n

Define equations with PHP code on the server-side. The calculated fields call the server-side equations via AJAX.

\n

CLICK HERE for additional information

\n

Verification Code add-on – included in the Developer and Platinum versions of the plugin

\n

The “Verification Code” add-on allows verifying the users’ emails by sending a verification code and blocking the form’s submission until a valid code is entered.

\n

CLICK HERE for additional information

\n

Unique Fields Values add-on – included in the Platinum version of the plugin

\n

The “Unique Fields Values” add-on verifies that the values entered by users have not been used in previous submissions. It allows to enter simple and complex verification rules (one or multiple fields separated by comma symbols).

\n

CLICK HERE for additional information

\n

WooCommerce add-on – included in the Developer and Platinum versions of the plugin

\n

Integrate the forms created by the “Calculated Fields Form” with WooCommerce products and calculate their prices, weights, dimensions, and more at the runtime.

\n

CLICK HERE for additional information

\n

Easy Digital Downloads add-on – included in the Platinum version of the plugin

\n

Integrate forms created by the “Calculated Fields Form” with the Easy Digital Downloads products, and calculate their price dynamically at the runtime.

\n

CLICK HERE for additional information

\n

SalesForce add-on – included in the Developer and Platinum versions of the plugin

\n

Add new leads to a SalesForce account using the data collected by the forms.

\n

CLICK HERE for additional information

\n

WebHook add-on – included in the Developer and Platinum versions of the plugin

\n

Post the information collected by the forms to WebHook URLs.

\n

Through connecting the forms created by the plugin with services like Zapier, Microsoft Flow, Workato, or IFTTT (and many others), you will have access to hundreds of third-party services, like Zoho CRM, Dropbox, Mailchimp, Evernote, Google Drive, Facebook, Twitter, and more than 300 services https://zapier.com/zapbook/apps/, https://flow.microsoft.com/, https://ifttt.com/discover

\n

CLICK HERE for additional information

\n

User Permissions add-on – included in the Developer and Platinum versions of the plugin

\n

Control access to forms. Access can be restricted to registered users, users with certain roles, or to specific users.

\n

The add-on adds a new shortcode to the plugin to list the data submitted by the logged-in user (it is possible to insert the new shortcode into the user’s profile) and assign user permissions to edit their information or delete an entry.

\n

Limit the number of submissions (e.g. one submission per form/user).

\n

CLICK HERE for additional information

\n

User Registration Form add-on – included in the Developer and Platinum versions of the plugin

\n

Build user registration forms. The form can collect basic user information and metadata required by other plugins.

\n

CLICK HERE for additional information

\n

reCAPTCHA add-on – included in the Developer and Platinum versions of the plugin

\n

Protect forms using Google reCAPTCHA instead of the basic captcha distributed with the plugin, as reCAPTCHA is more visual and intuitive than traditional captchas.

\n

CLICK HERE for additional information

\n

Google Analytics add-on – included in the Platinum version of the plugin

\n

Generate usage reports in “Google Analytics” for the users’ actions.

\n

CLICK HERE for additional information

\n

PayPal Pro add-on – included in the Platinum version of the plugin

\n

Allow the user to enter their credit card details directly on your website without redirecting them to the PayPal website. Once the user has filled the form fields and clicked the submit button, the payment is processed and the posted data (excluding the credit card information) is stored in the WordPress database.

\n

CLICK HERE for additional information

\n

Upload Files add-on – included in the Platinum version of the plugin

\n

Every commercial version of the plugin includes the “Upload File” control to upload files from the form. However, the “Upload Files” add-on allows the uploaded files to be added to the Media Library and be accessed from the pages and posts of the website.

\n

WordPress restricts the file types that can be uploaded. The “Uploads Files” add-on allows the list of accepted files to be extended.

\n

CLICK HERE for additional information

\n

DropBox Integration add-on – included in the Platinum version of the plugin

\n

Copy or move files uploaded through the forms to a DropBox account.

\n

CLICK HERE for additional information

\n

ip2location add-on – included in the Platinum version of the plugin

\n

Use the ip2location databases to identify additional user information based on their IP. Address such as country, city, coordinates, weather station, time zone, ZIP code, etc.

\n

CLICK HERE for additional information

\n

Google Places add-on – included in the Platinum version of the plugin

\n

Transform fields into autocomplete address fields calling the Google Places API.

\n

CLICK HERE for additional information

\n

Autocomplete Places add-on – included in the Platinum version of the plugin

\n

Transform fields into autocomplete address fields by calling the Photon API.

\n

CLICK HERE for additional information

\n

Signature add-on – included in the Platinum version of the plugin

\n

Transform fields into “Signature” fields to allow the users to sign the form with their mouse or touchscreens.

\n

CLICK HERE for additional information

\n

iCal add-on – included in the Platinum version of the plugin

\n

Send the users iCal files attached to the confirmation emails to import events into the most popular calendars like Outlook and Google Calendar.

\n

CLICK HERE for additional information

\n

CSV Generator add-on – included in the Platinum version of the plugin

\n

Export the information collected by the form to CSV files and attach them to the notification emails.

\n

CLICK HERE for additional information

\n

PDF Generator add-on – included in the Platinum version of the plugin

\n

An experimental add-on that generates PDF files with the information collected by the forms and attaches them to the notification emails.

\n

CLICK HERE for additional information

\n

WebMerge add-on – included in the Platinum version of the plugin

\n

Integrate the forms with the FormStack Documents service (formerly WebMerge) to generate PDF and Office documents with the information collected from the form.

\n

CLICK HERE for additional information

\n

Integrate the form with the Silverpop service (now: IBM Watson Campaign Automation) CLICK HERE for additional information

\n

PrintFriendly add-on – included in the Platinum version of the plugin

\n

Send the information collected by the forms to PrintFriendly and attach the resulting PDF files to the notification emails.

\n

CLICK HERE for additional information

\n

Mailchimp add-on – included in the Platinum version of the plugin

\n

Add new members to the MailChimp lists with the information collected by the form.

\n

CLICK HERE for additional information

\n

Mautic add-on – included in the Platinum version of the plugin

\n

Add/update contacts in the Mautic service with information collected by the forms.

\n

CLICK HERE for additional information

\n

HubSpot add-on – included in the Platinum version of the plugin

\n

Add/update HubSpot contacts with information collected by the forms.

\n

CLICK HERE for additional information

\n

Emma add-on – included in the Platinum version of the plugin

\n

Connect the forms to the Emma service to add new members to Emma groups.

\n

CLICK HERE for additional information

\n

Twilio add-on – included in the Platinum version of the plugin

\n

Send notification messages (SMS) through Twilio in the form’s submissions.

\n

CLICK HERE for additional information

\n

MailPoet add-on – included in the Platinum version of the plugin

\n

Adds subscribers to MailPoet Mailing Lists (MailPoet versions 2 and 3).

\n

CLICK HERE for additional information

\n

AffiliateWP add-on – included in the Platinum version of the plugin

\n

Integrate the forms with the “AffiliateWP” plugin.

\n

CLICK HERE for additional information

\n

Authorize.Net add-on – included in the Platinum version of the plugin

\n

The Authorize.net Server Integration Method (Authorize.net SIM) is a hosted payment processing solution that handles all of the steps in processing a transaction.

\n

CLICK HERE for additional information

\n

Stripe add-on – included in the Platinum version of the plugin

\n

The Stripe Payments add-on (www.stripe.com) provides a way to accept all major cards from customers around the world.

\n

CLICK HERE for additional information

\n

Skrill Payments Integration add-on – included in the Platinum version of the plugin

\n

An interface for accepting payments through secure pages.

\n

You can accept cards, more than 20 local payment methods, and over 80 direct bank transfer connections with a single integration.

\n

CLICK HERE for additional information

\n

TargetPay (iDeal) add-on – included in the Platinum version of the plugin

\n

Integrate with iDeal, the most popular Dutch payment method. The integration is made via TargetPay: https://www.targetpay.com/info/ideal?setlang=en

\n

CLICK HERE for additional information

\n

Mollie (iDeal) add-on – included in the Platinum version of the plugin

\n

Integrate with iDeal, the popular Dutch payment method.

\n

CLICK HERE for additional information

\n

RedSys / Servired / Sermepa add-on – included in the Platinum version of the plugin

\n

A secure interface for accepting credit card payments through most banks in Spain (Sabadell, Banco Popular, BBVA, Santander, Bankia-Caixa, Bankinter, etc.)

\n

CLICK HERE for additional information

\n

PayTM add-on – included in the Platinum version of the plugin

\n

A secure interface for accepting payments through credit cards, debit cards, net banking, wallets, and EMI. With over 100 million PayTM users in India, your customers will appreciate the option to pay with their trusted PayTM Wallet.

\n

CLICK HERE for additional information

\n

SagePay add-on – included in the Platinum version of the plugin

\n

A secure interface for accepting payments through SagePay.

\n

CLICK HERE for additional information

\n

Sage Payment add-on – included in the Platinum version of the plugin

\n

An interface for accepting payments through a secure SSL-checkout system for both bank cards and virtual check transactions. All authorized and approved transactions will be delivered to your current bank card and/or virtual check batches, viewable within the Virtual Terminal for order processing and settlement.

\n

CLICK HERE for additional information

\n","download_link":"https://downloads.wordpress.org/plugin/calculated-fields-form.zip","tags":{"calculator":"calculator","contact-form":"contact form","form":"form","form-builder":"form builder","quote-form":"quote form"},"donate_link":"http://cff.dwbooster.com","icons":{"1x":"https://ps.w.org/calculated-fields-form/assets/icon-128x128.jpg?rev=1734377","2x":"https://ps.w.org/calculated-fields-form/assets/icon-256x256.jpg?rev=1734377"},"wporg":true},{"name":"All in One SEO – Best WordPress SEO Plugin – Easily Improve SEO Rankings & Increase Traffic","slug":"all-in-one-seo-pack","version":"4.1.3.3","author":"All in One SEO Team","author_profile":"https://profiles.wordpress.org/smub","requires":"4.9","tested":"5.8","requires_php":"5.4","rating":90,"ratings":{"1":163,"2":21,"3":15,"4":58,"5":1499},"num_ratings":1756,"support_threads":123,"support_threads_resolved":113,"active_installs":2000000,"downloaded":82998620,"last_updated":"2021-08-16 1:02pm GMT","added":"2007-03-30","homepage":"https://aioseo.com/","short_description":"The original WordPress SEO plugin. Improve your WordPress SEO rankings and traffic with our comprehensive SEO tools and smart SEO optimizations.","description":"

AIOSEO – The Best WordPress SEO Plugin & Toolkit

\n

All in One SEO for WordPress is the original WordPress SEO plugin started in 2007. Over 2 million smart website owners use AIOSEO to properly setup WordPress SEO, so their websites can rank higher in search engines.

\n

We believe you shouldn’t have to hire an SEO expert or developer to properly setup WordPress SEO. That’s why we built AIOSEO as the most comprehensive WordPress SEO plugin and marketing toolkit, so you can improve your website’s SEO rankings and uncover new SEO growth opportunities in less than 10 minutes.

\n

At All in One SEO (AIOSEO), user experience is our #1 priority. From website SEO setup to ongoing SEO optimization, our team of SEO experts have created easy to follow SEO workflows that will help you outrank your competitors in search results. This is why many industry leaders award AIOSEO as the most beginner friendly WordPress SEO plugin that’s both EASY and POWERFUL!

\n

AIOSEO’s WordPress SEO plugin features are highly optimized for Google and other popular search engine algorithm because we follow the most up to date SEO standards and SEO best practices. We can honestly say that AIOSEO is the best WordPress SEO plugin in the world.

\n
\n

AIOSEO Pro
\n This plugin is the lite version of the All in One WordPress SEO Pro plugin that comes with all the SEO features you will ever need to rank higher in search engines including smart SEO schema markup, advanced SEO modules, powerful SEO sitemap suite, local SEO module, Google AMP SEO, WooCommerce SEO, and tons more. Click here to purchase the best premium WordPress SEO plugin now!

\n
\n

We took the pain out of optimizing WordPress SEO and made it easy. Here’s why smart business owners, SEO experts, marketers, and developers love AIOSEO, and you will too!

\n

\n

Properly Setup WordPress SEO (without Hiring an Expert)

\n

AIOSEO makes it easy to setup WordPress SEO, the RIGHT WAY. Our smart WordPress SEO setup wizard helps you optimize your website’s SEO settings based on your unique industry needs.

\n

In less than 10 minutes, you will be able to setup all the advanced WordPress SEO features like XML sitemaps, optimized search appearance, SEO meta title, SEO meta description, SEO keywords, Open Graph SEO Knowledge Panel information, social media integration, SEO search console / webmaster tool connections, local SEO, schema markup for SEO, and more.

\n

But don’t just take our word. See what another website owner like yourself is saying:

\n
\n

Swift, honest, full control. After all these years and having used almost every WP SEO plugin I’m amazed by AIOSEO’s depth, simplicity and fast workflow ❤️
\n @aaronbol

\n
\n

Optimize Your Pages for Higher SEO Rankings with TruSEO Analysis

\n

Creating SEO optimized content used to be hard. Why?

\n

Because most business owners aren’t SEO experts.

\n

That’s why we created the TruSEO score. This gives you a more in-depth SEO optimization analysis and an actionable SEO checklist, so you can easily optimize your website pages for any keyword to get higher SEO rankings and maximum traffic.

\n

Our SEO content analysis tool is enabled by default in both the Gutenberg block editor and Classic Editor, so you can quickly optimize your blog posts and pages for your SEO keywords to get higher SEO rankings.

\n

Our SEO readability analysis gives you further insights on how to improve your content for maximum SEO benefits.

\n

The best part about TruSEO analysis is that you can use it to optimize your posts / pages for unlimited SEO keywords.

\n

Seamless SEO Integrations with Webmaster Tools & Social Media

\n

All in One SEO for WordPress offers seamless integration with popular social media platforms like Facebook, Twitter, Pinterest, YouTube, LinkedIn, Instagram, and more.

\n

This ensures that your website preview is optimized for both search engines (SEO), and social media networks.

\n

AIOSEO also makes it easy to connect your website with Google Search Console, Bing webmaster tools, Yandex webmaster tools, Baidu webmaster tools, Google Analytics, and all other SEO webmaster tools.

\n

This helps you easily measure your SEO results and progress.

\n
\n

I’m a professional SEO and used many tools and extensions. Regarding simplicity, individuality and configurability All in One SEO Pro is by far the best SEO plugin out there for WordPress.
\n Joel Steinmann

\n
\n

Smart XML Sitemaps and Rich Snippets (SEO Schema Markup)

\n

Proper website SEO markup plays an important role in improving SEO rankings. That’s why smart SEO experts use AIOSEO for on-page SEO optimization.

\n

Aside from the comprehensive WordPress XML sitemap feature, we also offer News SEO sitemap and Video SEO sitemap to help you improve your website’s SEO ranking and get more traffic.

\n

AIOSEO comes with built-in smart SEO schema markup feature to help you get more traffic through SEO rich snippets, Google featured snippets, breadcrumb site links in SEO, and image SEO search results.

\n
\n

The best SEO plugin. All in One SEO is the best SEO Plugin. I personally find it better than Yoast. This plugin offers so much freedom in configuration.
\n hanapupu

\n
\n

Local SEO, WooCommerce SEO, Google AMP, and More

\n

All in One SEO is the most comprehensive WordPress SEO plugin / marketing toolkit in the world.

\n

We offer complete support for Google Knowledge Graph and Schema.org markup for local businesses. You can add multiple business locations, opening hours, contact info (business email, business phone, business address, etc) and more with our Local SEO module.

\n

AIOSEO also makes WooCommerce SEO easy. With our SEO plugin, you can optimize your product pages and product categories for better SEO rankings (with just a few clicks).

\n

Since AIOSEO is the original WordPress SEO plugin, we have SEO integrations with all popular WordPress plugins such as membership plugin SEO, landing page plugin SEO, Semrush SEO integration, etc. AIOSEO also offers Google AMP integration and works seamlessly with all popular speed & caching plugins.

\n
\n

Best SEO Plugin for WordPress. We continue to use All in One SEO on all our WordPress sites and Clients sites, and we recommend it too all other clients.
\n MySEOGuy

\n
\n

Since SEO is an essential feature, AIOSEO is a must have plugin for every website!

\n

SEO Redirection Manager and 404 Monitoring

\n

AIOSEO Redirection manager helps you set up proper 301 redirects to improve your SEO rankings.

\n

We also support other advanced SEO redirects including 302 redirects, 307 redirects, 410 redirection, 404 redirects, REGEX redirects for advanced SEO needs, and more.

\n

We have an automatic 404 error monitor that helps you track and redirect 404 errors, so you can prevent losing SEO rankings.

\n

Since redirect speed is important for SEO, we built in both Apache / NGINX server level redirects to help you get maximum SEO benefit.

\n

Full All in One SEO Feature List

\n
    \n
  • WordPress SEO Setup Wizard – Properly setup WordPress SEO in less than 10 minutes.
  • \n
  • On-page SEO Optimization – optimize SEO code markup (without hiring a developer)
  • \n
  • TruSEO score – detailed content & readability analysis to help you optimize your pages for higher SEO rankings.
  • \n
  • Smart Meta Title & Description – Automatic SEO generation, dynamic SEO smart tags, and more.
  • \n
  • Unlimited SEO Keywords – our SEO content analyzer helps you optimize your pages for unlimited SEO keywords.
  • \n
  • XML Sitemap – Advanced XML sitemaps to boost your SEO rankings.
  • \n
  • Video SEO Sitemap – Improve your SEO rankings with video sitemap.
  • \n
  • News SEO Sitemap – Increase your SEO traffic with Google News sitemap.
  • \n
  • RSS SEO Sitemap – Improve SEO crawl frequency with RSS sitemap.
  • \n
  • Automatic Image SEO – Our image SEO module helps your images rank higher.
  • \n
  • Local Business SEO – Improve your local business SEO presence with our local SEO module.
  • \n
  • Multiple location SEO – Great for SEO optimization for businesses with multiple local store locations.
  • \n
  • Rich Snippets Schema – Get better click through rate (CTR) and increase SEO rankings with rich snippets schema.
  • \n
  • SEO Knowledge Graph Support – Improve your website’s search appearance with SEO Knowledge panel.
  • \n
  • Advanced SEO Schema – Easily add advanced SEO schema markups like FAQ schema, product schema, recipe schema (food blogger SEO), software application schema markup (SaaS SEO), online course schema (for course SEO), and more.
  • \n
  • Sitelinks Search Box – Helps you get a search box in Google SEO rankings.
  • \n
  • Google Site Links – Our SEO markup can help you get sitelinks for your brand.
  • \n
  • Robots.txt Editor – Control what SEO robots can see with our easy SEO robots.txt editor.
  • \n
  • SEO Audit Checklist – Improve your website’s SEO ranking with our SEO audit checklist.
  • \n
  • Google Search Console – Connect your WordPress site with Google webmaster tools to see additional SEO insights.
  • \n
  • Search Engine Verification Tools – Easily integrate with other popular SEO webmaster tools to improve search visibility.
  • \n
  • Google AMP SEO – Improve your mobile SEO rankings with Google AMP SEO.
  • \n
  • Advanced SEO Canonical URLs – Prevent duplicate content in SEO with automatic canonical URLs and boost your SEO rankings.
  • \n
  • Advanced Robots Meta SEO Settings – granular controls for no index, no follow, no archive, no snippet, max snippet, max video, and more.
  • \n
  • RSS Content for SEO – Stop content theft from hurting your SEO rankings with our RSS Content tool.
  • \n
  • User Access Control – Control who can manage your SEO settings with our advanced SEO access control.
  • \n
  • Competitor Site SEO Analysis – Use our competitor SEO analysis to outrank them by improving your website’s SEO optimization.
  • \n
  • Smart Breadcrumbs – Add Breadcrumb navigation to improve user experience and boost your SEO rankings. Comes with full SEO JSON+LD support.
  • \n
  • Smart SEO Redirects – Setup proper 301 redirects to improve your SEO rankings.
  • \n
  • 404 Error Monitor for SEO – Monitor website 404 errors and set up proper SEO redirects to prevent losing SEO rankings.
  • \n
  • Title and Nofollow for SEO – We make it easy for you to add title and nofollow to external links to improve SEO rankings.
  • \n
\n

WordPress SEO Integrations

\n
    \n
  • WooCommerce SEO – optimize your WooCommerce product pages and improve your WooCommerce store’s SEO rankings.
  • \n
  • MemberPress SEO – optimize your MemberPress course pages and improve your membership site’s SEO rankings.
  • \n
  • Elementor SEO – add SEO optimization for your Elementor landing pages.
  • \n
  • LearnDash SEO – SEO optimization for LearnDash courses.
  • \n
  • Facebook SEO – SEO optimize your website preview on Facebook.
  • \n
  • Twitter SEO – SEO optimize your website preview on Twitter.
  • \n
  • Pinterest SEO – SEO optimize your website preview on Pinterest.
  • \n
  • Open Graph Support – improve your SEO with open graph meta data.
  • \n
  • Knowledge Panel SEO – improve website SEO apperance by adding social media profile links for Facebook, Twitter, Wikpedia, Instagram, LinkedIn, Yelp, YouTube, and more.
  • \n
  • SEO Webmaster Tool Content – Connect your WordPress site with various webmaster tools to improve SEO rankings.
  • \n
  • Semrush SEO integration – See additional SEO keywords and relevant SEO keyphrases with our Semrush SEO integration.
  • \n
\n

WordPress SEO Plugin Importer

\n
    \n
  • Yoast SEO Importer – easily switch from Yoast SEO to AIOSEO with our full SEO migration wizard that includes SEO keywords, SEO title, meta description, XML sitemaps and more.
  • \n
  • Yoast SEO Premium Importer – easily import Yoast SEO premium settings including SEO redirects to AIOSEO with our full SEO migration wizard.
  • \n
  • RankMath SEO Importer – easily switch from RankMath SEO to AIOSEO with our SEO migration wizard.
  • \n
  • SEO Settings Backup – create a backup of your AIOSEO settings.
  • \n
  • Advanced SEO Import / Export – easily import / export AIOSEO settings from one site to another.
  • \n
  • Redirection Importer – import your SEO redirects from the Redirection plugin with our SEO migration wizard.
  • \n
  • Simple 301 Redirects Importer – import your SEO redirects from Simple 301 redirets with our SEO migration wizard.
  • \n
  • Safe Redirection Manager – easily import SEO redirects from safe redirect manager with our SEO migration wizard.
  • \n
\n

After reading this feature list, you can probably imagine why AIOSEO is the best WordPress SEO plugin in the market.

\n

Give AIOSEO a try.

\n

Want to unlock more SEO features? Upgrade to AIOSEO Pro.

\n

Credits

\n

This plugin is created by Benjamin Rojas and Syed Balkhi.

\n

Branding Guideline

\n

AIOSEO® is a registered trademark of Semper Plugins LLC. When writing about the WordPress SEO plugin by AIOSEO, please use the following format.

\n
    \n
  • AIOSEO (correct)
  • \n
  • All in One SEO (correct)
  • \n
  • AIO SEO (incorrect)
  • \n
  • All in 1 SEO (incorrect)
  • \n
  • AISEO (incorrect)
  • \n
\n

What’s Next

\n

If you like our WordPress SEO plugin, then consider checking out our other projects:

\n
    \n
  • OptinMonster – Get More Email Subscribers with the most popular conversion optimization plugin for WordPress.
  • \n
  • WPForms – #1 drag & drop online form builder for WordPress.
  • \n
  • MonsterInsights – See the Stats that Matter and Grow Your Business with Confidence. Best Google Analytics Plugin for WordPress.
  • \n
  • SeedProd – Create beautiful landing pages with our powerful drag & drop landing page builder.
  • \n
  • WP Mail SMTP – Improve email deliverability for your contact form with the most popular SMTP plugin for WordPress.
  • \n
  • RafflePress – Best WordPress giveaway and contest plugin.
  • \n
  • Smash Balloon – #1 social feeds plugin for WordPress.
  • \n
  • SearchWP – advanced WordPress search plugin.
  • \n
  • PushEngage – best web push notification plugin.
  • \n
\n

Visit WPBeginner to learn from our WordPress Tutorials and find out about other best WordPress plugins.

\n","download_link":"https://downloads.wordpress.org/plugin/all-in-one-seo-pack.4.1.3.3.zip","tags":{"google-search-console":"google search console","meta-description":"meta description","schema":"schema","seo":"seo","xml-sitemap":"xml sitemap"},"donate_link":"","icons":{"1x":"https://ps.w.org/all-in-one-seo-pack/assets/icon.svg?rev=2443290","2x":"https://ps.w.org/all-in-one-seo-pack/assets/icon-256x256.png?rev=2443290","svg":"https://ps.w.org/all-in-one-seo-pack/assets/icon.svg?rev=2443290"},"wporg":true},{"name":"Translate WordPress – Weglot Translate","slug":"weglot","version":"3.3.6","author":"Weglot Translate team","author_profile":"https://profiles.wordpress.org/remyb92","requires":"4.5","tested":"5.8","requires_php":"5.6","rating":96,"ratings":{"1":39,"2":7,"3":6,"4":27,"5":1206},"num_ratings":1285,"support_threads":8,"support_threads_resolved":3,"active_installs":40000,"downloaded":1204282,"last_updated":"2021-08-18 2:44pm GMT","added":"2015-09-27","homepage":"http://wordpress.org/plugins/weglot/","short_description":"Translate your WordPress website in 110+ languages within minutes with Weglot Translate, without any coding.","description":"

Weglot Translate is the leading WordPress translation plugin, trusted by 60,000+ users worldwide. Translate your WordPress website into 110+ languages within minutes, no coding required.

\n

Increase visibility and boost conversions with ease by adding multilingual functionality. Weglot Translate is fully optimized for SEO, with every translated page automatically indexed by Google. Say hello in multiple languages to millions of new visitors.

\n

Make your website multilingual in minutes with a free trial. Visit https://weglot.com/ to learn more!

\n

How Weglot Translate works

\n\n

Why Weglot Translate

\n

It’s easy to install: Weglot Translate is quick to set up to have a multilingual WordPress website ready, instantly. Reach out to millions of new visitors worldwide with a few clicks, without any coding.

\n

It’s built for maximum compatibility: Weglot Translate is fully compatible with all platforms, WordPress themes, and plugins. From WooCommerce product descriptions to Elementor order forms, everything is translated into the languages of your choice. So you can focus on your content, not the technical details.

\n

It’s optimized for SEO: Weglot Translate follows Google’s best practices for multilingual website translation, serving all translated web pages with clean source code. Google will automatically index every translated page with dedicated URLs.

\n

It’s easy to set and forget: Weglot Translate automatically detects all your website content for easy translation. No more time-consuming manual duplication of every single line of content to get a multilingual website. All translations are updated in real-time, so you don’t need to worry about maintenance and any newly added content is automatically translated.

\n

It takes translation seriously: Weglot Translate gives you an edge on your translation tasks with the first layer of automatic translation provided by the best machine learning providers on the market (DeepL, Google, Microsoft, and Yandex). You can also edit the translations and collaborate with your team to work on translations together, directly within Weglot.

\n

It partners with the pros: Weglot Translate lets you order from vetted professional translators directly inside your Weglot dashboard. Set translation quality the way you want it to be, with Weglot Translate.

\n

“Within a week of translating our site to English with Weglot, international sales doubled, by the following month – they had quadrupled.”
\nClara Champion – Director of Digital and E-Commerce, Jimmy Fairly
\nRead the case study

\n

Multilingual functionality like no other

\n

Increase visibility: All translated pages are automatically indexed following Google’s best practices with dedicated URLs. Get new traffic with your multilingual website.

\n

Reduce bounce rate: Redirect visitors automatically to serve them in the language of their choice, based on their browser settings.

\n

Enhance user experience: From the landing page to the email confirmation, get all your key conversion steps translated in your customers’ language. You can even add different images and videos for various languages. Useful for images with text, Weglot Translate makes it easy to display “translated” images in your translated versions. Media localization is an essential aspect of any multilingual project and Weglot Translate makes it simple to do so.

\n

“We really loved the localization features provided by Weglot, such as the ability to translate images and other types of media depending on the language the visitor is viewing the site in.”
\nKim Martin – Senior Communications and Marketing Officer, The Challenge Initiative
\nRead the case study

\n

An all-in-one language translation platform

\n
    \n
  • Manage and edit all of your translations through a user-friendly interface.
  • \n
  • Collaborate with team members and trusted translators to translate together, directly inside Weglot.
  • \n
  • Is it a title? Is it a link? No more guessing the context of the text. Weglot Translate’s in-context editor lets you translate directly within the webpage.
  • \n
  • Make it your own. The language switcher is fully customizable for multiple design choices.
  • \n
  • Weglot Translate makes it easy to migrate from other WordPress multilingual plugins like Polylang or WPML. Simply deactivate your existing translation plugin and install Weglot Translate.
  • \n
\n

“Weglot removed the pain of having to manage multiple stores for multiple locales. The integration was easy, and the support is incredibly helpful. I highly recommend Weglot to anyone looking for a simple and cost-effective solution to translate their stores!”
\nMike Robertson – Director of Sales Operations, Nikon

\n

With an increase in site visitors and session duration thanks to your multilingual website, you can expect a massive boost to your conversions. See why thousands of e-commerce platforms, SaaS firms, marketplaces, corporate websites, and blogs worldwide love Weglot Translate. Try it today for free

\n","download_link":"https://downloads.wordpress.org/plugin/weglot.3.3.6.zip","tags":{"language":"language","localization":"localization","multilingual":"multilingual","translate":"translate","translation":"translation"},"donate_link":"","icons":{"1x":"https://ps.w.org/weglot/assets/icon-128x128.png?rev=2186774","2x":"https://ps.w.org/weglot/assets/icon-256x256.png?rev=2186774"},"wporg":true},{"name":"Rank Math SEO – Best SEO Plugin For WordPress To Increase Your SEO Traffic","slug":"seo-by-rank-math","version":"1.0.71.1","author":"Rank Math","author_profile":"https://profiles.wordpress.org/rankmath","requires":"5.6","tested":"5.8","requires_php":"7.2","rating":98,"ratings":{"1":69,"2":17,"3":20,"4":48,"5":3381},"num_ratings":3535,"support_threads":138,"support_threads_resolved":133,"active_installs":900000,"downloaded":19904987,"last_updated":"2021-09-03 7:13pm GMT","added":"2018-11-19","homepage":"https://s.rankmath.com/home","short_description":"Rank Math SEO is the Best WordPress SEO plugin combines the features of many SEO…","description":"

Rank Math SEO – Best SEO Plugin for WordPress
\n★★★★★

\n

SEO is the most consistent source of traffic for any website. We created Rank Math SEO, a WordPress SEO plugin, to help every website owner get access to the SEO tools they need to improve their SEO and attract more traffic to their website.

\n

Try The Demo

\n\n

Features | Why Choose Rank Math SEO? | Compare | Screenshots | Benefits

\n

SEO might be the best and most consistent source of traffic for one’s website, but it’s not without its quirks. The constant process of optimizing your posts can sometimes take more time than actually writing the content. If you always feel that you can do more on the SEO front for your website but don’t have the time, then Rank Math SEO is what you’re looking for.

\n

Its host of intelligent features brings top SEO capabilities in your hands that were previously out of reach. The smart automation features give you the power of an entire SEO team with just a few clicks. A well thought out design, powerful features, and years of development by the MyThemeShop squad make Rank Math SEO a game-changing SEO plugin that will level the SEO playing field in your favor to help increase traffic.

\n

Rank Math SEO beats all of its competitors, hands down.

\n

See the features which are exclusive to the Rank Math SEO plugin and understand why Rank Math SEO is possibly the Best SEO Plugin for WordPress.

\n
    \n
  • \n

    Setup Wizard (Easy to follow)
    \nRank Math SEO practically configures itself. Rank Math SEO features a step-by-step installation and configuration wizard that sets up SEO for WordPress perfectly.

    \n
  • \n
  • \n

    Google Schema Markup aka Rich Snippets Integrated
    \nConfiguring Google Schema Markup, aka Rich Snippets, is now easy, thanks to Rank Math SEO. With support for 16+ types of Schema Markups, aka Rich Snippets, including the Rating Schema, you’ll be able to optimize your posts in just a few clicks. It also includes the FAQ Schema aka FAQPage Schema Block & the HowTo aka How To Schema Block in the plugin.

    \n
  • \n
  • \n

    Optimize Unlimited Keywords
    \nUnlike other plugins, Rank Math SEO lets you optimize your posts for unlimited focus keywords per post. 5 by default. Increase by adding this filter.

    \n
  • \n
  • \n

    Google Search Console Integration
    \nRank Math SEO saves you a ton of time by integrating with Google Search Console and displaying important information about your website right inside WordPress.

    \n
  • \n
  • \n

    Google Keyword Ranking
    \nWith Rank Math SEO Plugin, you can track your keyword rankings in Google.

    \n
  • \n
  • \n

    Google Analytics Integration
    \nRank Math SEO offers a one-click solution to install Google Analytics script without pasting anything manually anywhere. You can also exclude the Logged-in users.

    \n
  • \n
  • \n

    Optimal Settings Pre-Selected
    \nConfiguring an SEO plugin takes time, and can be confusing. Rank Math SEO saves you the trouble with its optimal default settings, which are ideal for most websites, and if needed, can be changed.

    \n
  • \n
  • \n

    LSI Keyword Tool Integrated
    \nRank Math SEO’s integrated LSI keyword tool gives you multiple keyword variations of your focus keyword, which helps you attract more traffic to your posts. Free account needed.

    \n
  • \n
  • \n

    Add Overlay Icons On Social Images
    \nRank Math SEO makes social thumbnails click magnets by giving you the option of overlaying a GIF or a video icon on the thumbnail.

    \n
  • \n
  • \n

    Advanced SEO Analysis Tool
    \nWith just a single click, Rank Math SEO can perform an SEO audit of your website.

    \n
  • \n
  • \n

    30 Detailed SEO Tests
    \nRank Math SEO is designed to completely supercharge your website’s SEO with its 30 detailed SEO tests. Free account needed.

    \n
  • \n
  • \n

    Module Based System
    \nRank Math SEO has been designed with a module-based system, each of which can be enabled or disabled as per your needs, giving you extra speed and control.

    \n
  • \n
  • \n

    Smart Redirection Manager
    \nRank Math SEO’s built-in smart redirection manager will help you create, manage, delete, enable, or disable redirects at scale.

    \n
  • \n
  • \n

    Local Business SEO
    \nRank Math SEO is designed to be used by Global websites and local websites alike. With its local SEO features, local sites can stand out in the search engine results like Google’s and attract more traffic.

    \n
  • \n
  • \n

    SEO Optimized Breadcrumbs
    \nRank Math SEO can display SEO optimized Breadcrumbs on all websites, even if the theme doesn’t support Schema.org coding.

    \n
  • \n
  • \n

    404 Monitor
    \nRank Math SEO has a built-in 404 error monitor that helps you find and resolve 404 errors for a better user experience.

    \n
  • \n
  • \n

    Deep Content Analysis Tests
    \nOn-Page SEO is no longer a mystery with Rank Math SEO’s deep content analysis and precise SEO recommendations.

    \n
  • \n
  • \n

    Internal Linking Suggestions
    \nRank Math SEO intelligently suggests other posts from your website for internal linking from your current posts, improving the chances of ranking higher in the SERPs.

    \n
  • \n
  • \n

    Role Manager
    \nEven if you have multiple employees manage your website, you can precisely control what each of them has to access to in Rank Math SEO with its role manager.

    \n
  • \n
  • \n

    Multisite Ready
    \nWhether you run a single WordPress website or an entire network of sites – we are ready for you. Rank Math SEO fully supports the WordPress Multiuser project (WPMU).

    \n
  • \n
  • \n

    and has lightweight Code compared to slow-loading in other SEO plugins.
    \nEven with significantly more features than other plugins, Rank Math SEO loads amazingly fast and keeps your website fast always.

    \n
  • \n
\n

Why is Rank Math SEO such a game-changer?

\n
    \n
  • \n

    Auto Configuration — All you have to do is set a few options, and Rank Math SEO will configure itself perfectly for your website.

    \n
  • \n
  • \n

    Super Fast SEO Plugin — Even after packing so many features, Rank Math SEO has a negligible load on your server, thus making it one of the fastest SEO plugins for WordPress.

    \n
  • \n
  • \n

    Automatic Keyword Suggestions from Google — Get keyword suggestions from Google as you start typing letters in the focus keyword field of Rank Math SEO.

    \n
  • \n
  • \n

    New SEO Analyzer — Rank Math SEO’s built-in SEO analysis will give you SEO recommendations that you’d normally spend hundreds of dollars to get.

    \n
  • \n
  • \n

    Elementor SEO – Deep integration with the Elementor Page builder. Now, you don’t need to go back and forth between tabs to configure your page’s SEO. Everything related to SEO for Elementor can be configured in the visual editor.

    \n
  • \n
  • \n

    Divi SEO – One of its kind integration with the Divi Page Builder and theme. Handle everything related to SEO from the page editor screen without jumping back to the default editor. This helps you optimize your website in real-time for SEO.

    \n
  • \n
  • \n

    Page Builder SEO – The Rank Math SEO plugin’s content analysis works perfectly with popular page builders and themes like Oxygen Builder, WPBakery, Avada, Astra, Kadence, Themify, Beaver Builder, Page Builder Framework, Schema theme, Flothemes, OceanWP, etc.

    \n
  • \n
  • \n

    Optimize UNLIMITED Keywords At Once — You can optimize your post for up to 5 different keywords by default with the Rank Math SEO plugin and can use a filter to optimize for unlimited keywords.

    \n
  • \n
  • \n

    Image SEO – With Rank Math SEO’s perfect solution to add ALT & Title tags on the fly, to optimize images, showing inside the content, and that too for FREE, there is no reason to choose any other SEO solution that does not provide all the essential SEO features.

    \n
  • \n
  • \n

    Web Stories SEO – Make any Story created with the Google’s Web Stories plugin SEO-Ready. Automatically adds AMP-friendly Schema markup and Meta tags.

    \n
  • \n
  • \n

    WooCommerce SEO – Optimizing your store products is easier with Rank Math. SEO Meta tags and Schema are automatically added but can be customized with total control as well. Rank Math SEO has the most advanced SEO for WooCommerce.

    \n
  • \n
  • \n

    Google AMP SEO – Accelerated Mobile Pages need to be prepared for search engines. What better way to do that than letting Rank Math SEO use your regular SEO details and optimizing AMPs based on that data?

    \n
  • \n
  • \n

    bbPress SEO – User-generated content in bbPress is properly optimized with Rank Math handling all the important SEO aspects. Q&A Schema is added to bbPress topics along with other essential meta tags.

    \n
  • \n
  • \n

    BuddyPress SEO – As with bbPress, SEO for BuddyPress content is done automatically done using Rank Math. You get all the options you need to get higher rankings with your user-generated content.

    \n
  • \n
  • \n

    Quick Edit SEO Details – Go through a lot of posts/pages quickly by ensuring they are optimized for search engines. Quickly edit multiple SEO fields at once using Rank Math SEO.

    \n
  • \n
  • \n

    Instant Indexing for Bing – Get your content instantly indexed by Bing. Enter a few key details and you are all set and ready to go.

    \n
  • \n
  • \n

    Instant Indexing for Google – Instantly getting indexed by Google used to be reserved to huge brands and large websites. Not anymore. Just about anyone can take advantage of Google’s Instant Indexing feature using Rank Math SEO.

    \n
  • \n
  • \n

    Version Control – Rollback or try beta versions. Updating and downgrading your plugins is now a matter of few clicks. Automatically update to the latest versions or try out the latest beta builds.

    \n
  • \n
  • \n

    Translation Plugins Support — Rank Math SEO works flawlessly with the top translations plugins like WPML, TranslatePress, Weglot, Polylang (not entirely compatible yet), etc., making it a perfect companion.

    \n
  • \n
  • \n

    XML Sitemap – The Rank Math SEO plugin comes with a fast-loading Sitemap feature that works with different post types, including the custom ones, and provides deep controlling. One can also generate a Locations KML file via filter for Local Sitemap, & a WooCommerce Sitemap.

    \n
  • \n
  • \n

    1-Click Import From Yoast — With a single click of your mouse, Rank Math SEO can import all your settings from Yoast SEO & Yoast SEO Premium to itself. The transfer is instant, and you don’t lose any SERP rankings as a result.

    \n
  • \n
  • \n

    1-Click Import From AIO SEO — Rank Math SEO can also import all your settings from AIO SEO & All in One SEO Pack Pro in a single click. The transfer is instant, and you don’t lose any SERP rankings as a result.

    \n
  • \n
  • \n

    1-Click Import From All In One Schema Rich Snippets — Rank Math SEO can also import all of AIO’s Rich Snippet & Schema Pro settings in a few clicks, which help preserve your rich rankings when moving to Rank Math SEO.

    \n
  • \n
  • \n

    1-Click Import From SEOPress SEO — With a single click of your mouse, Rank Math SEO can import all your settings from SEOPress & SEOPress Pro SEO plugin to itself. The transfer is instant, and you don’t lose any SERP rankings as a result.

    \n
  • \n
  • \n

    1-Click Import From Redirection — Moving all your redirects shouldn’t be a hassle. That’s why we have made importing redirections from the popular Redirection plugin as simple as clicking a button.

    \n
  • \n
  • \n

    Google Keyword Suggestion — When deciding on focus keywords, Rank Math SEO can help you discover more keywords by pulling in automatic keyword suggestions from Google.

    \n
  • \n
\n

Who Can Benefit From Rank Math SEO?

\n

Rank Math SEO Plugin is perfect for:

\n

✔ Bloggers
\n✔ eCommerce Store Owners
\n✔ Niche Sites
\n✔ Businesses
\n✔ Local Businesses
\n✔ Startups
\n✔ The Real Estate
\n✔ Artists & Photographers
\n✔ The Solution Offerer
\n✔ Directories
\n✔ Vloggers (Video Bloggers)
\n✔ Or any WordPress Website

\n

Take a sneak peek into Rank Math SEO’s features

\n

Detailed Setup Tutorial

\n\n

List of Best Rank Math SEO Features

\n
    \n
  • Clean, & Simple User Interface
  • \n
  • Optimal Settings Pre-Selected
  • \n
  • Simple Setup Wizard\n
      \n
    • Compatibility Check
    • \n
    \n
  • \n
  • Auto Canonical URLs
  • \n
  • LSI Keyword Tool Integrated
  • \n
  • Google Search Console Integration
  • \n
  • Google Keyword Ranking
  • \n
  • Import Other Plugin Settings\n
      \n
    • 1 Click Import From Yoast SEO Plugin
    • \n
    • 1 Click Import From AIO SEO
    • \n
    • 1 Click Import From SEOPress & SEOPress Pro
    • \n
    • 1 Click Import From All In One Schema Rich Snippets & Schema Pro
    • \n
    • 1 Click Import From Redirection Plugin
    • \n
    \n
  • \n
  • Role Manager
  • \n
  • ACF Support
  • \n
  • AMP Ready
  • \n
  • bbPress & BuddyPress Modules
  • \n
  • Google Schema Markup Integrated\n
      \n
    • Article Rich Snippet
    • \n
    • Review Rich Snippet
    • \n
    • Book Rich Snippet
    • \n
    • Course Rich Snippet
    • \n
    • Event Rich Snippet
    • \n
    • Job Posting Rich Snippet
    • \n
    • Local Business Rich Snippet
    • \n
    • 193 Local Business Types
    • \n
    • Music Rich Snippet
    • \n
    • Person Rich Snippet
    • \n
    • Product Rich Snippet
    • \n
    • Recipe Rich Snippet
    • \n
    • Restaurant Rich Snippet
    • \n
    • Service Rich Snippet
    • \n
    • Software Application Rich Snippet
    • \n
    • Video Rich Snippet
    • \n
    • Author Stay Rating
    • \n
    \n
  • \n
  • Social Media Optimization\n
      \n
    • Add Overlay Icons On Social Images
    • \n
    • Default OpenGraph Thumbnail
    • \n
    • Auto Facebook Open Graph
    • \n
    • Facebook Authorship
    • \n
    • Facebook Open Graph for Homepage
    • \n
    • Automatic Twitter Meta Cards
    • \n
    • Twitter Card for Homepage
    • \n
    • Default Twitter Card Type
    • \n
    • Social Previews
    • \n
    \n
  • \n
  • Add Knowledge Graph\n
      \n
    • Represent site as a Person
    • \n
    • Represent site as a Company
    • \n
    • Set a Site Logo
    • \n
    \n
  • \n
  • Advanced SEO Analysis Tool\n
      \n
    • 30 Detailed SEO Tests
    • \n
    • SEO Analysis Score
    • \n
    \n
  • \n
  • Automated Image SEO
  • \n
  • Powerful Post Optimization\n
      \n
    • Add SEO Meta Box to all post types
    • \n
    • Bulk Edit Titles & Descriptions
    • \n
    • Post Preview on Google
    • \n
    • Content Analysis
    • \n
    • Control SEO For Single Pages
    • \n
    • Control The Title
    • \n
    • Control Meta Description
    • \n
    • Auto Add Additional Meta Data
    • \n
    • Control ROBOTS Meta
    • \n
    • Choose a Primary Category
    • \n
    \n
  • \n
  • Single Post/page Optimization\n
      \n
    • Focus Keyword
    • \n
    • Google Keyword Suggestion
    • \n
    • Optimize UNLIMITED Keywords (5 by default)
    • \n
    • Choose Pillar Posts & Pages
    • \n
    • Internal Linking Suggestions
    • \n
    • Capitalize Titles
    • \n
    • SEO Failed Tests
    • \n
    • SEO Warnings
    • \n
    \n
  • \n
  • XML Sitemap (New!)
  • \n
  • Module Based System
  • \n
  • Choose Any Separator Character
  • \n
  • Modify Global Meta
  • \n
  • Search Engine Verification Tools\n
      \n
    • Bing Site Verification
    • \n
    • Baidu Site Verification
    • \n
    • Alexa Site Verification
    • \n
    • Yandex Site Verification
    • \n
    • Google Site Verification
    • \n
    • Pinterest Site Verification
    • \n
    • Norton Safe Web Site Verification
    • \n
    \n
  • \n
  • Advanced Redirection Manager\n
      \n
    • Smart & Automatic Post Redirects
    • \n
    • 301 Redirection Type
    • \n
    • 302 Redirection Type
    • \n
    • 307 Redirection Type
    • \n
    • 410 Redirection Type
    • \n
    • 451 Redirection Type
    • \n
    • Support for REGEX
    • \n
    • Debug Redirections
    • \n
    \n
  • \n
  • Simple 404 Monitor\n
      \n
    • Advanced 404 Monitor
    • \n
    \n
  • \n
  • Advanced SEO Breadcrumbs\n
      \n
    • Auto Show SEO Breadcrumbs
    • \n
    \n
  • \n
  • Advanced Link Options\n
      \n
    • Nofollow All External Image Links
    • \n
    • Nofollow All External Links
    • \n
    • Open External Links in New Tab/Window
    • \n
    • Redirect Attachments to Parent
    • \n
    • Strip Category Base
    • \n
    \n
  • \n
  • Remove Stopwords from Permalinks
  • \n
  • Ping Search Engines
  • \n
  • Local SEO Optimization\n
      \n
    • Contact Info Shortcode
    • \n
    \n
  • \n
  • Deep Support For WooCommerce SEO
  • \n
  • Compatible for EDD SEO (Easy Digital Downloads SEO)
  • \n
  • Only 30k Lines of Code\n
      \n
    • PSR-4 Coding Standards (wherever possible)
    • \n
    \n
  • \n
  • Optimize Different Archives\n
      \n
    • Optimize Author Archive Pages
    • \n
    • Optimize Date Archive Pages
    • \n
    • Optimize Archive Pages
    • \n
    \n
  • \n
  • .htaccess Editor
  • \n
  • Robots.txt Editor
  • \n
  • Import/Export Settings
  • \n
  • Import/Export Redirections
  • \n
  • Add Content Before the RSS Feed
  • \n
  • Add Content After the RSS Feed
  • \n
  • Detailed Documentation\n
      \n
    • Contextual Help
    • \n
    \n
  • \n
\n

BIG Publications are Raving About Rank Math SEO

\n

Rank Math SEO Reviews

\n\n\n

Rank Math SEO Review – Why I Ditched Yoast For Rank Math SEO

\n

Rank Math SEO on Product Hunt

\n

Rank Math SEO Plugin Review from an SEO Consultant

\n

and many more

\n

Check RANK MATH PRO WHICH MAKES SEO EASIER & FASTER

\n\n

FREE VS PRO COMPARISON

\n

UNIQUE FEATURES OF RANK MATH PRO

\n

Google Analytics & Search Console Integration (The only SEO plugin that provides it)
\n✔ Integrated Google Analytics, AdSense & Search Console Data
\n✔ Analyze SEO Performance of Each Post & Page
\n✔ See Top Winning/Losing Posts & Keywords
\n✔ Keep Track of Position History
\n✔ Rank Tracker for Important Keywords

\n

Schema aka Structured Data aka Rich Snippets. The BEST Schema Generator Available Online
\n✔ 20+ Pre-defined Schema types (more than any other plugin) –
\n✔ Import Schema from Other Websites
\n✔ Advanced Schema Builder [Advanced SEOs can use this to create any complex Schema Markup)
\n✔ Schema Templates for Automation
\n✔ Conditional Schema Markup
\n✔ Inbuilt Schema Code Preview and Validation
\n✔ Multiple Location Schema On Any Page (using the Shortcode)

\n

Automation At Its BEST
\n✔ Automated Image SEO
\n✔ Advanced Filtering for Images [https://i.rankmath.com/zAUHHP]
\n✔ Watermark Your images
\n✔ Advanced Post filtering
\n✔ Bulk Actions [index, noindex, redirect, etc.]
\n✔ Quick Edit SEO Details
\n✔ Bulk Import SEO Meta Details Using CSV file
\n✔ Auto Detect Videos and Generate Schema Markup for Them
\n✔ Auto Fetch Thumbnail, Duration of YouTube & Vimeo Videos
\n✔ Automatically Flush Facebook Thumbnails
\n✔ Open External Links in New Tabs
\n✔ Nofollow External Links
\n✔ Noindex Paginated, Archive, Search Result Pages
\n✔ Instant Indexing for Bing [Also Google using our Instant Indexing Plugin]

\n

WooCommerce SEO
\n✔ Automatic Schema for WooCommerce Products
\n✔ Advanced Open Graph Tags for WooCommerce Products
\n✔ Automatic NoIndex Hidden Products
\n✔ Remove WooCommerce Product and Category Base
\n✔ Add Custom Brands to Products
\n✔ Add Global Identifier Like GTIN/MPN – Even to Variations

\n

Workflow Improvements
\n✔ Internal Role Manager
\n✔ Inbuilt Google Trends Insights
\n✔ Site Audit with 29 Unique Tests
\n✔ Import Redirections Using CSV File
\n✔ Categorize Redirections for Grouping
\n✔ One-Click Redirection for 404s
\n✔ Monitor Search Performance of Entire Portfolio
\n✔ Easy and Advanced Mode

\n

Miscellaneous
\n✔ Supports bbPress and BuddyPress SEO
\n✔ Version Control – Rollback or Try Beta Versions

\n

MANY MORE FEATURES
\n✔ PREMIUM 24x7x365 Dedicated Support Managers
\n✔ MOST COMPETITIVE PRICING EVER!

\n

CHEK ALL THE PREMIUM FEATURES AND PRICING HERE

\n

CONNECT WITH THE TEAM AND SEO EXPERTS

\n

JOIN FACEBOOK GROUP COMMUNITY: The purpose of this Facebook group is to have a collective place where the community can help each other, and we can get some feedback to improve Rank Math SEO as well. Joining the group is also a great way to connect with like-minded people and share your SEO experience.

\n

Branding Guideline

\n

Rank Math SEO® is a registered trademark. Please use the following format when mentioning the Rank Math SEO plugin anywhere.
\n* Rank Math SEO [correct]
\n* Rank Math SEO [incorrect]
\n* Rank Math SEO [incorrect]
\n* Rank Math SEO [incorrect]
\n* RankMath [incorrect]
\n* Rankmath [incorrect]
\n* rankmath [incorrect]
\n* rankMath [incorrect]

\n

Getting Started:

\n

1. How to Setup Rank Math SEO: Once you install Rank Math SEO for the first time, you will be greeted with the Setup Wizard, which is discussed in detail here.

\n

2. Facebook Group: In this group, you will find the team of Rank Math SEO plugin fairly active and ready to answer your SEO related queries.

\n

3. User Documentation: Although Rank Math SEO is already easy to set up, we’ve put together tutorials, guides, and some knowledge bases to help you set up and get started with Rank Math SEO.

\n

4. Contribute (Sharing is caring): If you are one of those caring hearts that want to help, go to our Rank Math SEO’s GitHub Repository and see how you can contribute to the SEO community. You can also add a new language via translate.wordpress.org.

\n

5. Fixing Common Errors: Sometimes, avoidable or common issues can get you stuck. We’ve created a common guide where we discuss all the common issues and how to fix them.

\n

6. Support Ticket Forum: Our dedicated forum is where you can get support for any issues that you face with Rank Math SEO. In the forum, we’ll also try to answer some SEO queries. User experience is important to us, and our aim is to answer all the queries on the forum in a timely manner.

\n

7. Frequently Asked Questions: Here, we’ve answered the most commonly asked questions about Rank Math SEO. The questions are related to features, pricing, and others.

\n","download_link":"https://downloads.wordpress.org/plugin/seo-by-rank-math.1.0.71.1.zip","tags":{"google-search-console":"google search console","redirection":"redirection","schema":"schema","seo":"seo","sitemap":"sitemap"},"donate_link":"","icons":{"1x":"https://ps.w.org/seo-by-rank-math/assets/icon.svg?rev=2348086","2x":"https://ps.w.org/seo-by-rank-math/assets/icon-256x256.png?rev=2348086","svg":"https://ps.w.org/seo-by-rank-math/assets/icon.svg?rev=2348086"},"wporg":true},{"name":"Head, Footer and Post Injections","slug":"header-footer","version":"3.2.2","author":"Stefano Lissa","author_profile":"https://profiles.wordpress.org/satollo","requires":"4.0","tested":"5.7.2","requires_php":"5.6","rating":98,"ratings":{"1":3,"2":2,"3":4,"4":13,"5":621},"num_ratings":643,"support_threads":1,"support_threads_resolved":0,"active_installs":300000,"downloaded":2776239,"last_updated":"2021-03-17 1:26pm GMT","added":"2008-04-07","homepage":"https://www.satollo.net/plugins/header-footer","short_description":"Header and Footer plugin let you to add html code to the head and footer sections of your blog... and more!","description":"

About WordPress SEO and Facebook Open Graph: I was very unpleased by Yoast invitation to
\nremove my plugin, and it’s not the case.
\nRead more here.

\n

Head and Footer Codes

\n

Why you have to install 10 plugins to add Google Analytics, Facebook Pixel, custom
\ntracking code, Google DFP code, Google Webmaster/Alexa/Bing/Tradedoubler verification code and so on…

\n

With Header and Footer plugin you can just copy the code those services give you
\nin a centralized point to manage them all. And theme independent: you can change your theme
\nwithout loosing the code injected!

\n

Injection points and features

\n
    \n
  • in the page section where most if the codes are usually added
  • \n
  • just after the tag as required by some JavaScript SDK (like Facebook)
  • \n
  • in the page footer (just before the tag)
  • \n
  • recognize and execute PHP code to add logic to your injections
  • \n
  • distinct desktop and mobile injections
  • \n
\n

AMP

\n

A new AMP dedicated section compatible with AMP plugin lets you to inject specific codes in
\nAMP pages. Should be ok even with other AMP plugins.

\n

Post Top and Bottom Codes

\n

Do you need to inject a banner over the post content or after it? No problem. With Header and
\nFooter you can:

\n
    \n
  • Add codes on top, bottom and in the middle of posts and pages
  • \n
  • Differentiate between mobile and desktop (you don’t display the same ad format on both, true?)
  • \n
  • Separate post and page configuration
  • \n
  • Native PHP code enabled
  • \n
  • Shortcodes enabled
  • \n
\n

Special Injections

\n
    \n
  • Just after the opening BODY tag
  • \n
  • In the middle of post content (using configurable rules)
  • \n
  • Everywhere on template (using placeholders)
  • \n
\n

bbPress

\n

The specific bbPress injections are going to be removed. Switch to my
\nAds for bbPress, which is more flexible and complete.

\n

Limits

\n

This plugin cannot change the menu or the footer layout, those features must be covered by your theme!

\n

Official page: Header and Footer.

\n

Other plugins by Stefano Lissa:

\n\n

Translation

\n

You can contribute to translate this plugin in your language on WordPress Translate

\n

Privacy and GDPR

\n

This plugin does not collect or process any personal user data.

\n","download_link":"https://downloads.wordpress.org/plugin/header-footer.3.2.2.zip","tags":{"blog":"blog","footer":"footer","header":"header","page":"page","single":"single"},"donate_link":"http://www.satollo.net/donations","icons":{"1x":"https://ps.w.org/header-footer/assets/icon-256x256.png?rev=1064219","2x":"https://ps.w.org/header-footer/assets/icon-256x256.png?rev=1064219"},"wporg":true},{"name":"WP Rocket","slug":"wp-rocket","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://wp-rocket.me/","short_description":"

Powerful caching to speed up your WordPress website in a few clicks. No coding required.

\n","description":"\n\n\n

Powerful caching to speed up your WordPress website in a few clicks. No coding required.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2020/06/WP-Rocket-285x160.png","2x":"https://amp-wp.org/wp-content/uploads/2020/06/WP-Rocket-372x209.png","svg":""},"wporg":false},{"name":"Statify","slug":"statify","version":"1.8.3","author":"pluginkollektiv","author_profile":"https://profiles.wordpress.org/pluginkollektiv","requires":"4.7","tested":"5.8","requires_php":"5.2","rating":94,"ratings":{"1":2,"2":0,"3":0,"4":3,"5":33},"num_ratings":38,"support_threads":3,"support_threads_resolved":1,"active_installs":200000,"downloaded":1498761,"last_updated":"2021-07-17 8:46am GMT","added":"2011-03-16","homepage":"https://statify.pluginkollektiv.org/","short_description":"Visitor statistics for WordPress with focus on data protection, transparency and clarity. Perfect as a widget in your WordPress Dashboard.","description":"

Statify provides a straightforward and compact access to the number of site views. It is privacy-friendly as it uses neither cookies nor a third party.

\n

An interactive chart is followed by lists of the most common reference sources and target pages. The period of statistics and length of lists can be set directly in the dashboard widget.

\n

Data Privacy

\n

In direct comparison to statistics services such as Google Analytics, WordPress.com Stats and Matomo (Piwik) Statify doesn’t process and store personal data as e.g. IP addresses – Statify counts site views, not visitors.

\n

Absolute privacy compliance coupled with transparent procedures: A locally in WordPress created database table consists of only four fields (ID, date, source, target) and can be viewed at any time, cleaned up and cleared by the administrator.

\n

Due to this tracking approach, Statify is 100% compliant with GDPR and serves as an lightweight alternative to other tracking services.

\n

Display of the widget

\n

The plugin configuration can be changed directly in the Statify Widget on the dashboard by clicking the Configure link.

\n

The amount of links shown in the Statify Widget can be set as well as the option to only count views from today. Of course, older entries are not deleted when changing this setting.

\n

The statistics for the dashboard widget are cached for four minutes.

\n

Period of data saving

\n

Statify stores the data only for a limited period (default: two weeks), longer intervals can be selected as option in the widget. Data which is older than the selected period is deleted by a daily cron job.

\n

An increase in the database volume can be expected because all statistic values are collected and managed in the local WordPress database (especially if you increase the period of data saving).

\n

JavaScript tracking for caching compatibility

\n

For compatibility with caching plugins like Cachify Statify offers an optional switchable tracking via JavaScript. This function allows reliable count of cached blog pages.

\n

For this to work correctly, the active theme has to call wp_footer(), typically in a file named footer.php.

\n

Skip tracking for spam referrers

\n

The comment blacklist can be enabled to skip tracking for views with a referrer URL listed in comment blacklist, i. e. which considered as spam.

\n

Support

\n

If you’ve problems or think you’ve found a bug (e.g. you’re experiencing unexpected behavior), please post at the support forums.

\n

Contribute

\n
    \n
  • Active development of this plugin is handled on GitHub.
  • \n
  • Pull requests for documented bugs are highly appreciated.
  • \n
  • If you want to help us translate this plugin you can do so on WordPress Translate.
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/statify.1.8.3.zip","tags":{"analytics":"analytics","dashboard":"dashboard","pageviews":"pageviews","privacy":"privacy","statistics":"statistics"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=TD4AMD2D8EMZW","icons":{"1x":"https://ps.w.org/statify/assets/icon-128x128.png?rev=2355063","2x":"https://ps.w.org/statify/assets/icon-256x256.png?rev=2355063"},"wporg":true},{"name":"LIQUID BLOCKS GALLERY 37+ Free Designs","slug":"liquid-blocks","version":"1.1.1","author":"LIQUID DESIGN Ltd.","author_profile":"https://profiles.wordpress.org/lqd","requires":"5.2","tested":"5.8","requires_php":false,"rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"num_ratings":1,"support_threads":1,"support_threads_resolved":0,"active_installs":4000,"downloaded":20092,"last_updated":"2021-07-22 6:55am GMT","added":"2019-10-18","homepage":"https://lqd.jp/wp/plugin.html","short_description":"If you’re looking to create block page sections that look great give LIQUID BLOCKS a…","description":"

If you’re looking to create block page sections that look great give LIQUID BLOCKS a try.

\n

In Gutenberg Block Template & Design Gallery, Just select your favorite design. Instantly create page section elements. Like a very simple page builder.

\n

You can manage Block Pattern. (WordPress 5.5+)
\nFully compatible with Gutenberg and themes and AMP.
\nlatest information on LIQUID PRESS.

\n

\n

Design Gallery

\n

Carefully selected 37+ Free Designs.
\n* Headlines
\n* Layouts (Q&A, Ranking, Column, Step, Fluid Shape.)
\n* Price list
\n* CTA
\n* Landing pages
\n* Block Patterns (You can register.)

\n

Toolbar

\n

Add to RichText Toolbar.
\n* Mark
\n* Underline
\n* Big
\n* Small

\n","download_link":"https://downloads.wordpress.org/plugin/liquid-blocks.zip","tags":{"block":"block","block-editor":"block-editor","blocks":"blocks","editor":"editor","gutenberg":"gutenberg"},"donate_link":"https://lqd.jp/wp/plugin.html","icons":{"1x":"https://ps.w.org/liquid-blocks/assets/icon-128x128.png?rev=2175390"},"wporg":true},{"name":"Schema","slug":"schema","version":"1.7.9.2","author":"Hesham","author_profile":"https://profiles.wordpress.org/hishaman","requires":"4.0","tested":"5.7.2","requires_php":"5.4","rating":90,"ratings":{"1":15,"2":6,"3":4,"4":8,"5":162},"num_ratings":195,"support_threads":3,"support_threads_resolved":0,"active_installs":60000,"downloaded":1083344,"last_updated":"2021-05-19 2:51pm GMT","added":"2016-05-11","homepage":"https://schema.press","short_description":"Get the next generation of Schema Structured Data to enhance your WordPress site presentation in Google search results.","description":"

Like Schema plugin? Consider leaving a 5 star review.

\n

Super fast, light-weight plugin for adding schema.org structured data markup in recommended JSON-LD format automatically to WordPress sites.

\n

Enhanced Presentation in Search Results By including structured data appropriate to your content, your site can enhance its search results and presentation.

\n

Check out the Plugin Homepage for more info and documentation.

\n

What is Schema markup?

\n

Schema markup is code (semantic vocabulary) that you put on your website to help the search engines return more informative results for users. So, Schema is not just for SEO reasons, it’s also for the benefit of the searcher.

\n

Schema.org Structured Data Demo & Examples

\n\n

Schema Key Features

\n
    \n
  • Easy to use, set it and forget it, with minimal settings.
  • \n
  • [Premium] Support for different schema.org types.
  • \n
  • Enable Schema types at once per post type or post category.
  • \n
  • [Premium] Enable Schema types anywhere you want on your site content.
  • \n
  • [Premium] Customize source data of schema.org properties.
  • \n
  • Valid markup, test it in Google Structured Data Testing Tool.
  • \n
  • Output JSON-LD format, the most recommended by Google.
  • \n
  • Reuse data saved in post meta, which is created by other plugins.
  • \n
  • Extensible, means you can extend its functionality via other plugins, extensions or within your Theme’s functions.php file.
  • \n
\n
\n

Note: some features are Premium. Which means you need Schema Premium to have those features. Get Schema Premium here!

\n
\n

Free vs Premium

\n
\n

See: a Free vs Premium comparison.

\n
\n

Free Plugin Extensions

\n
    \n
  • Schema Review: Extend Schema functionality by adding review and rating Structured Data functionality for Editors and Authors.
  • \n
  • Schema Default Image: Add ability to set a default WordPress Featured image for schema.org markup.
  • \n
\n

Premium Plugin Extensions

\n\n

Supported Google/Schema Markups

\n\n

Supported Schema.org Types

\n\n

Premium Supported Schema.org Types

\n
\n

Schema Premium has additional support for schema.org types, including:

\n
\n\n

Schema.org Markup Examples

\n

View our Live Structured Data Demo examples.

\n

Supported Plugins

\n

Schema plugin integrates and/or play nicely with (not necessarily a full integration):

\n
    \n
  • Yoast SEO
  • \n
  • AMP plugin (Automattic’s Accelerated Mobile Pages)
  • \n
  • Accelerated Mobile Pages – AMP for WP
  • \n
  • WPRichSnippets
  • \n
  • The SEO Framework
  • \n
  • WPBakery Page Builder
  • \n
  • ThirstyAffiliates
  • \n
  • [Premium] WooCommerce: Schema for WooCommerce extension.
  • \n
  • Easy Digital Downloads (EDD)
  • \n
\n

Supported Themes

\n

The plugin should work fine with any well coded WordPress theme, however these themes were tested and works properly with the plugin.

\n
    \n
  • Genesis 2.x
  • \n
  • Thesis 2.x
  • \n
  • Divi
  • \n
\n

Premium support

\n

schema.press team does not always provide active support for the Schema plugin on the WordPress.org forums, as we prioritize our email support. One-on-one email support is available to people who bought Schema Premium only.

\n

Note that the premium Schema Plugin also has several extra features too, including the option to enable more schema.org types, set content location target for markup, and map schema.org properties, so it is well worth your investment!

\n

Developers?

\n

Feel free to fork the project on GitHub and submit your contributions via pull request.

\n","download_link":"https://downloads.wordpress.org/plugin/schema.zip","tags":{"json-ld":"JSON-LD","rich-snippets":"rich snippets","schema":"schema","schema-org":"schema.org","structured-data":"structured data"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=NGVUBT2QXN7YL","icons":{"1x":"https://ps.w.org/schema/assets/icon-128x128.png?rev=1750172","2x":"https://ps.w.org/schema/assets/icon-256x256.png?rev=1750173"},"wporg":true},{"name":"Iframely – rich media embeds for 2000+ publishers","slug":"iframely","version":"0.7.2","author":"Itteco Corp.","author_profile":"https://profiles.wordpress.org/ivanp","requires":"3.5.1","tested":"5.4.6","requires_php":false,"rating":80,"ratings":{"1":2,"2":0,"3":1,"4":0,"5":7},"num_ratings":10,"support_threads":1,"support_threads_resolved":0,"active_installs":3000,"downloaded":97238,"last_updated":"2020-05-22 5:21pm GMT","added":"2013-10-03","homepage":"http://wordpress.org/plugins/iframely/","short_description":"Iframely extends WordPress default rich media embeds and adds support of over 2000 more providers…","description":"

Iframely extends WordPress default embeds and adds over 2000 more providers and cards as URL previews for the rest of the Web. Provides responsive embed codes, works with AMP.

\n

Just like default WordPress embeds, Iframely will detect URLs in your posts and replace it with responsive embed codes. Supports all usual suspects such as YouTube, Vimeo, Instagram, Facebook, Giphy, GfyCat, Imgur, Google +, GitHub Gists, Storify, SlideShare, Streamable, Vidme, Reddit, Dailymotion, Spotify, Tableau, Prezi, Apester, QZZR, Tidal, MLB. Well over two thousand of providers and keeps growing.

\n

Test your URL here to check if we support it.

\n

Iframely also generates and hosts summary cards as URL previews for general articles. It includes your own site, and Iframely can replace the default embed cards that your publish via WordPress for other sites to use.

\n

API key and paid/free

\n

Powered by Iframely cloud service and requires an account with us. Grab an API key for extended trial at iframely.com, or test the plugin out without an API key.

\n

Before you push the plugin to production, a service subscription is required to avoid any possible disruptions.

\n

We maintain an overwhelming number of integrations and widgets in the background for you, and make sure your sites remains fast and keeps your users happy. This requires a substantial effort on our part, and we won’t be able to provide it without requiring a service subscription.

\n

How to use:

\n

The plugin works the same way the standard oEmbed is supported by WordPress: URL on a separate line.

\n

For example,

\n
Check out this cool video:\n\nhttp://your.url/here\n\nThat was a cool video.\n
\n

Iframely also has its own shortcode [iframely]http://your.url/here[/iframely].

\n

Heads-up:

\n

Iframely does not simply wrap URLs with <iframe src=...> code. That’s not what Iframely is for. We can only match URLs to the known embed codes if publisher offers them for manual copy-paste, or generate a summary card for URL preview if a publisher provides at least a thumnnail image.

\n

To keep default embed providers

\n

By default, Iframely will inject itself to be the first embeds provider in the list, thus intercepting all URLs. It means that the default providers that are later in the list won’t get called and will thus be disabled.

\n

It means Iframely replaces default YouTube, Vimeo, Twitter, other oEmbed plugins that you might have(like JetPack), etc.

\n

Although we should support the same providers and output the same code, just make it responsive and add extra features, you can still disable such behavior and tell Iframely to only process links that otherwise don’t have an embed provider.

\n

Just choose this option in your settings. It will essentially put Iframely to be the last in the list, be “a catcher”, rather then “an interceptor”.

\n

URL editor options

\n

You can fine-tune many aspects of Iframely on your dashboard at iframely.com. This would include some most common settings for popular rich media publishers. Our support team can also fine-tune many other publishers, just for you.

\n

However, you might need a per-post editor for the widgets options. And, Iframely does provide this too. It’s done via URL options editor, and available for higher-tier plans, or during your initial trial period. Make sure to check it out.

\n

AMP support

\n

Yes, Iframely works nicely with AMP WP plugin. It catches all missing embeds and follow your Iframely settings. But you can also opt to have Iframely for all embeds, including default AMP embeds too. For example, Facebook video will be indeed a nice video without user’s text message.

\n","download_link":"https://downloads.wordpress.org/plugin/iframely.zip","tags":{"embed":"embed","embed-code":"embed code","iframely":"iframely","oembed":"oembed","responsive":"responsive"},"donate_link":"","icons":{"default":"https://s.w.org/plugins/geopattern-icon/iframely.svg"},"wporg":true},{"name":"Pym.js Embeds","slug":"pym-shortcode","version":"1.3.2.4","author":"INN Labs","author_profile":"https://profiles.wordpress.org/automattic","requires":"3.0.1","tested":"5.4.6","requires_php":"5.3","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":1,"support_threads_resolved":0,"active_installs":100,"downloaded":2287,"last_updated":"2020-03-26 6:09pm GMT","added":"2016-06-17","homepage":"https://github.com/INN/pym-shortcode","short_description":"A WordPress block and shortcode for embedding iframes that are responsive horizontally and vertically, using…","description":"

Pym.js Embeds provides shortcode and Gutenberg block wrappers for embedding responsive iframes using Pym.js, developed by the NPR Visuals Team. Embedded content resizes vertically to match its container’s width.

\n

AMP compatibility is provided by the official AMP plugin.

\n

Pym.js Resources from NPR

\n

You may also want to look at NPR’s Pym.js resources:

\n\n","download_link":"https://downloads.wordpress.org/plugin/pym-shortcode.1.3.2.4.zip","tags":{"embeds":"Embeds","iframe":"iframe","javascript":"javascript","responsive":"responsive","shortcode":"shortcode"},"donate_link":"https://inn.org/donate","icons":{"1x":"https://ps.w.org/pym-shortcode/assets/icon.svg?rev=1944461","svg":"https://ps.w.org/pym-shortcode/assets/icon.svg?rev=1944461"},"wporg":true},{"name":"PWA","slug":"pwa","version":"0.6.0","author":"PWA Plugin Contributors","author_profile":"https://profiles.wordpress.org/westonruter","requires":"5.5","tested":"5.7.2","requires_php":"5.6","rating":84,"ratings":{"1":3,"2":0,"3":0,"4":0,"5":12},"num_ratings":15,"support_threads":8,"support_threads_resolved":6,"active_installs":40000,"downloaded":291693,"last_updated":"2021-03-09 8:50pm GMT","added":"2018-07-12","homepage":"https://github.com/GoogleChromeLabs/pwa-wp","short_description":"WordPress feature plugin to bring Progressive Web App (PWA) capabilities to Core","description":"

\nProgressive Web Apps are user experiences that have the reach of the web, and are:

\n
    \n
  • Reliable – Load instantly and never show the downasaur, even in uncertain network conditions.
  • \n
  • Fast – Respond quickly to user interactions with silky smooth animations and no janky scrolling.
  • \n
  • Engaging – Feel like a natural app on the device, with an immersive user experience.
  • \n
\n

This new level of quality allows Progressive Web Apps to earn a place on the user’s home screen.\n

\n

Continue reading more about Progressive Web Apps (PWA) from Google.

\n

In general a PWA depends on the following technologies to be available:

\n\n

This plugin serves as a place to implement support for these in WordPress with the intention of being proposed for core merge, piece by piece.

\n

This feature plugin is not intended to obsolete the other plugins and themes which turn WordPress sites into PWAs. Rather, this plugin is intended to provide the PWA building blocks and coordination mechanism for these themes and plugins to not reinvent the wheel and also to not conflict with each other. For example, a theme that implements the app shell model should be able to extend the core service worker while a plugin that provides push notifications should be able to do the same. Themes and plugins no longer should have to each create a service worker on their own, something which is inherently problematic because only one service worker can be active at a time: only one service worker can win. If you are developing a plugin or theme that includes a service worker, consider relying on this PWA plugin, or at least only use the built-in implementation as a fallback for when the PWA plugin is not available.

\n

In versions prior to 0.6, no caching strategies were added by default. The only service worker behavior was to serve an offline template when the client’s connection is down or the site is down, and also to serve an error page when the server returns with 500 Internal Server Error. As of 0.6, there is a new “Offline browsing” toggle on the Reading Settings screen in the admin. It is disabled by default, but when enabled a network-first caching strategy is registered for navigations so that the offline page won’t be shown when accessing previously-accessed pages. The network-first strategy is also used for assets from themes, plugins, and WordPress core. In addition, uploaded images get served with a stale-while-revalidate strategy. For all the details on these changes, see the pull request.

\n

Documentation for the plugin can be found on the GitHub project Wiki.

\n

Development of this plugin is done on GitHub. Pull requests welcome. Please see issues reported there before going to the plugin forum.

\n","download_link":"https://downloads.wordpress.org/plugin/pwa.0.6.0.zip","tags":{"https":"https","progressive-web-apps":"progressive web apps","pwa":"pwa","service-workers":"service-workers.","web-app-manifest":"web app manifest"},"donate_link":"","icons":{"1x":"https://ps.w.org/pwa/assets/icon.svg?rev=1908485","2x":"https://ps.w.org/pwa/assets/icon-256x256.png?rev=1908485","svg":"https://ps.w.org/pwa/assets/icon.svg?rev=1908485"},"wporg":true},{"name":"MC4WP: Mailchimp for WordPress","slug":"mailchimp-for-wp","version":"4.8.6","author":"ibericode","author_profile":"https://profiles.wordpress.org/dvankooten","requires":"4.6","tested":"5.8","requires_php":"5.3","rating":96,"ratings":{"1":35,"2":10,"3":16,"4":35,"5":1277},"num_ratings":1373,"support_threads":46,"support_threads_resolved":43,"active_installs":2000000,"downloaded":35711896,"last_updated":"2021-08-04 7:14am GMT","added":"2013-06-19","homepage":"https://www.mc4wp.com/#utm_source=wp-plugin&utm_medium=mailchimp-for-wp&utm_campaign=plugins-page","short_description":"Mailchimp for WordPress, the #1 unofficial Mailchimp plugin.","description":"

Mailchimp for WordPress

\n

Allowing your visitors to subscribe to your newsletter should be easy. With this plugin, it finally is.

\n

This plugin helps you grow your Mailchimp lists and write better newsletters through various methods. You can create good looking opt-in forms or integrate with any existing form on your site, like your comment, contact or checkout form.

\n\n

Some (but not all) features

\n
    \n
  • \n

    Connect with your Mailchimp account in seconds.

    \n
  • \n
  • \n

    Sign-up forms which are good looking, user-friendly and mobile optimized. You have complete control over the form fields and can send anything you like to Mailchimp.

    \n
  • \n
  • \n

    Seamless integration with the following plugins:

    \n
      \n
    • Default WordPress Comment Form
    • \n
    • Default WordPress Registration Form
    • \n
    • Contact Form 7
    • \n
    • WooCommerce
    • \n
    • Gravity Forms
    • \n
    • Ninja Forms 3
    • \n
    • WPForms
    • \n
    • BuddyPress
    • \n
    • MemberPress
    • \n
    • Events Manager
    • \n
    • Easy Digital Downloads
    • \n
    • Give
    • \n
    • UltimateMember
    • \n
    \n
  • \n
  • \n

    A multitude of available add-on plugins and integrations:

    \n\n
  • \n
  • \n

    Well documented. Our knowledge base is updated daily.

    \n
  • \n
  • \n

    Developer friendly. For inspiration, check out our repository of example code snippets.

    \n
  • \n
\n
\n

Become a Premium user

\n

Mailchimp for WordPress has a Premium add-on which comes with several additional benefits.

\n
    \n
  • Multiple forms
  • \n
  • Advanced e-commerce integration for WooCommerce
  • \n
  • Email notifications
  • \n
  • An easy way to style your forms
  • \n
  • Detailed reports & statistics
  • \n
\n

View more Premium features

\n
\n

What is Mailchimp?

\n

Mailchimp is a newsletter service that allows you to send out email campaigns to a list of email subscribers. It is free for lists up to 2000 subscribers, which is why it is the newsletter-service of choice for thousands of businesses.

\n

This plugin allows you to tightly integrate your WordPress site with your Mailchimp account.

\n

If you are not yet using Mailchimp, creating an account is 100% free and only takes you about 30 seconds.

\n

Support

\n

Use the WordPress.org plugin forums for community support where we try to help all of our users. If you found a bug, please create an issue on Github where we can act upon them more efficiently.

\n

If you’re a premium user, please use the email address inside the plugin for support as that will guarantee a faster response time.

\n

Please take a look at the Mailchimp for WordPress knowledge base as well.

\n

Add-on plugins

\n

There are several add-on plugins available, which help you get even more out of your site.

\n

Translations

\n

You can help translate Mailchimp for WordPress into your language using your WordPress.org account.

\n

Development

\n

This plugin is being developed on GitHub. If you want to collaborate, please look at ibericode/mailchimp-for-wordpress.

\n

Customizing the plugin

\n

The plugin provides various filter & action hooks that allow you to modify or extend default behavior. We’re also maintaining a collection of sample code snippets.

\n","download_link":"https://downloads.wordpress.org/plugin/mailchimp-for-wp.4.8.6.zip","tags":{"email":"email","mailchimp":"mailchimp","marketing":"marketing","mc4wp":"mc4wp","newsletter":"newsletter"},"donate_link":"https://www.mc4wp.com/#utm_source=wp-plugin-repo&utm_medium=mailchimp-for-wp&utm_campaign=donate-link","icons":{"1x":"https://ps.w.org/mailchimp-for-wp/assets/icon-128x128.png?rev=1224577","2x":"https://ps.w.org/mailchimp-for-wp/assets/icon-256x256.png?rev=1224577"},"wporg":true},{"name":"Site Kit by Google","slug":"google-site-kit","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://sitekit.withgoogle.com/","short_description":"

Site Kit is the official WordPress plugin from Google for insights about how people find and use your site. Site Kit is the one-stop solution to deploy, manage, and get insights from critical Google tools to make the site successful on the web. It provides authoritative, up-to-date insights from multiple Google products directly on the

\n

Read More

\n","description":"\n\n\n

Site Kit is the official WordPress plugin from Google for insights about how people find and use your site. Site Kit is the one-stop solution to deploy, manage, and get insights from critical Google tools to make the site successful on the web. It provides authoritative, up-to-date insights from multiple Google products directly on the WordPress dashboard for easy access, all for free.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2019/12/site-kit-by-google-logo-285x160.png","2x":"https://amp-wp.org/wp-content/uploads/2019/12/site-kit-by-google-logo-372x209.png","svg":""},"wporg":false},{"name":"Newspack Blocks","slug":"newspack-blocks","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://github.com/Automattic/newspack-blocks","short_description":"

A collection of useful and easy to use Gutenberg based blocks, developed primarily for the Newspack project.

\n","description":"\n\n\n

A collection of useful and easy to use Gutenberg based blocks, developed primarily for the Newspack project.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2019/11/newspack_blocks-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2019/11/newspack_blocks-372x209.jpg","svg":""},"wporg":false},{"name":"Advanced Ads – Ad Manager & AdSense","slug":"advanced-ads","version":"1.27.0","author":"Thomas Maier, Advanced Ads GmbH","author_profile":"https://profiles.wordpress.org/webzunft","requires":"4.9","tested":"5.8","requires_php":"5.6","rating":98,"ratings":{"1":17,"2":1,"3":9,"4":21,"5":1181},"num_ratings":1229,"support_threads":71,"support_threads_resolved":65,"active_installs":100000,"downloaded":5150413,"last_updated":"2021-08-24 9:21am GMT","added":"2014-06-23","homepage":"https://wpadvancedads.com","short_description":"Manage and optimize all ad types. Support for Google AdSense Auto ads, Amazon, image banners, HTML, page builder, ad widget, ad rotations, ads.txt","description":"

Are you looking for a simple ad manager plugin? These are the top arguments to use Advanced Ads:

\n
    \n
  • approved in publishing and ad optimization since 2009
  • \n
  • works with all ad types and networks, including Google AdSense, Google Ad Manager (formerly Google DoubleClick for Publishers, DFP), Amazon ads, or media.net ads
  • \n
  • most features to test and optimize ads
  • \n
  • unlimited ad units
  • \n
  • ads.txt support
  • \n
  • dedicated ad block for the block editor
  • \n
  • Google AdSense Partner, who implements all technical changes early and in 100% compliance with the Google AdSense policies
  • \n
  • the only advertising solution with Ad Health integration and Google AdSense violation checks
  • \n
  • best rated free support
  • \n
\n

This is what our users are saying about Advanced Ads:

\n
\n

We use this plugin to deliver rotating ads on a community news site, and it’s great. Both feature-rich and reliable, your imagination is the limit when it comes to the product you want to create for your users. We’ve delivered over a million ad impressions since we launched less than a year ago, using a combination of sidebar, top, sticky and in-content placements — both HTML5 and images. Advanced Ads makes it easy for our small team to deliver a good experience to our users and our advertisers.
\n mytown304 on wp.org

\n
\n

Would you like to know if there is a certain feature, what the optimized setup would be, or how to implement your client’s demands? Just open a thread in the forum!

\n

Advanced Ads allowed us to grow from 0 to 100 MM monthly ad impressions. Benefit from our experience as a publisher and monetize your website today!

\n

Full Feature List.

\n

ad management

\n
    \n
  • create and display unlimited ad units
  • \n
  • rotate ads
  • \n
  • schedule ads and set start time and expiration date
  • \n
  • target ads by content and user groups
  • \n
  • inject ads into posts and pages automatically without coding
  • \n
\n

ad types

\n

choose between different ad types that enable you to:

\n
    \n
  • insert ads and banners from all ad and affiliate networks (e.g., Google AdSense, Amazon, BuySellAds, Google Ad Manager (formerly Google DoubleClick for Publishers, DFP), Ezoic, media.net, Booking.com, Tradedoubler, Awin, Getyourguide, The Moneytizer, Infolinks…)
  • \n
  • dedicated support for all types of Google AdSense ads, including text and display ads, native ads (In-article, In-feed, matched content), Auto ads, and Auto ads for AMP
  • \n
  • display images and image banners
  • \n
  • create content-rich ads with the WordPress TinyMCE editor
  • \n
  • insert contextual Amazon Native Shopping Ads
  • \n
  • inject HTML, CSS, Javascript or PHP code
  • \n
  • use shortcodes within ads (to also deliver advertisements from another ad plugin like Ad Inserter, AdRotate, Quick AdSense, WP Bannerize, or the Google AdSense Plugin WP QUADS)
  • \n
\n

display ads for WP

\n
    \n
  • auto-inject ads via placements
  • \n
  • use functions to display ads in template files
  • \n
  • use shortcodes to place ads manually in post content
  • \n
  • show ads in the sidebar and in widgets
  • \n
  • disable all ads on specific pages
  • \n
  • display multiple ads (ad blocks)
  • \n
  • display a customizable ad label, e.g., “Advertisements” above each banner ad
  • \n
\n

display conditions

\n

show ads based on conditions like:

\n
    \n
  • individual posts, pages, and other post types
  • \n
  • posts by category, tags, taxonomies, author, and age
  • \n
  • archive pages by category, tags, taxonomies
  • \n
  • special page types like 404, attachment and front page
  • \n
  • hide ads on secondary queries (e.g., posts in sidebars)
  • \n
  • display or hide banners within the post feed
  • \n
  • hide all ads from specific page types, e.g., 404 pages, feed
  • \n
  • hide ads from bots and web crawlers
  • \n
\n

visitor conditions

\n

serve ads by conditions based on the visitor. List of all visitor conditions

\n
    \n
  • display or hide a banner by device: mobile and tablet or desktop
  • \n
  • display or hide a banner by role and for logged-in visitors
  • \n
  • advanced visitor conditions: previously visited URL (referrer), user capability, browser language, browser and device, URL parameters included in Pro
  • \n
  • display ads by geolocation with the Geo Targeting add-on
  • \n
  • display ads by browser width with the Responsive add-on
  • \n
\n
\n

Fantastic plugin and outstanding support
\n I tried at least three other ad plugins for WordPress and ‘Advanced Ads’ is by and far the best one. Last but not least in the support. The first port of call are a number of excellent tutorials. And finally the hands on support. I don’t quite know how he does it but the speed and depth of responses are absolutely amazing.
\n djsawyer on wp.org

\n
\n

ad injection | placements

\n

Placements to insert ads in pre-defined positions in your theme and content. List of all placements

\n
    \n
  • ads after any given paragraph, headline, image, or other HTML element
  • \n
  • ads at the top or bottom of the post content
  • \n
  • ads before closing </head> tag
  • \n
  • ads in the footer
  • \n
  • test placements against each other with Pro (A/B testing)
  • \n
  • many more ad positions with add-ons
  • \n
  • automatic insertion of any kind of code into header or footer, not only advertising
  • \n
\n

mobile devices

\n
    \n
  • display ads on mobile and tablets or desktop only
  • \n
  • display responsive image ads
  • \n
  • ads for specific browser sizes only using Responsive Ads
  • \n
  • inserting ads on AMP pages with Responsive Ads
  • \n
\n

Google AdSense

\n

Amazing features of the most powerful and easy Google AdSense plugin.

\n
    \n
  • unlimited Google AdSense ads banners
  • \n
  • pull ad units directly from your Google AdSense account
  • \n
  • show AdSense revenue in WP Admin
  • \n
  • change settings of your Google AdSense ads directly from your WordPress backend
  • \n
  • supports all Google AdSense ad types, including Google AdSense display ads, native ads like In-feed ads, In-article ads, matched content ads, Google AdSense Auto ads, and Google AdSense Auto ads for AMP
  • \n
  • change type and sizes of AdSense ads without going into your Google AdSense account
  • \n
  • hide Google AdSense advertisements on 404 pages by default (to comply with Google AdSense terms)
  • \n
  • insert Google AdSense code for verification and AdSense Auto Ads
  • \n
  • enable AdSense Auto ads on AMP
  • \n
  • easy Ad Health integration and Google AdSense violation checks
  • \n
  • option to remove the Google AdSense background color
  • \n
  • place Google AdSense In-feed ads using the also free In-feed add-on
  • \n
  • assistant for exact sizes of responsive Google AdSense ads with the Responsive add-on
  • \n
  • convert Google AdSense ads into AMP ads automatically with the Responsive add-on
  • \n
  • ads.txt generated with the correct AdSense information automatically
  • \n
  • works along with Google Site Kit or can replace it if you want to control your ad placements
  • \n
\n

\n

\n

Like j4ckson185, there are thousands of happy AdSense users:

\n
\n

Your app is awesome, congratulations! Google Adsense suggests using your app on its official website, it’s incredible!

\n
\n

ads.txt

\n
    \n
  • generates an ads.txt with custom content
  • \n
  • adds the content for AdSense to the ads.txt automatically
  • \n
\n

\n

\n

ad blocker

\n
    \n
  • basic features to prevent ads from being removed by AdBlock and other ad blockers
  • \n
  • prevent ad blockers from breaking sites where plugin scripts are running
  • \n
  • ad blocking detection: show alternative content to ad block users with Pro and improve the monetization of your website
  • \n
\n

Learn more on the plugin homepage.

\n

Thank you for motivating us with your positive review.

\n

Localizations: Arabic, Chinese, Czech, Danish, Dutch, English, French, German, Hungarian, Italian, Japanese, Norwegian, Polish, Portuguese, Russian, Slovak, Spanish, Turkish, Vietnamese

\n
\n

Add-Ons

\n
    \n
  • all add-ons include priority email support
  • \n
  • Advanced Ads Pro – powerful tools for ad optimizations: cache-busting, more placements, lazy loading, ad blocker module, click fraud protection, and many more
  • \n
  • Tracking – track ad impressions and ad clicks with local methods or Google Analytics
  • \n
  • Responsive Ads – target ads to specific browser sizes and create ads for AMP
  • \n
  • Google Ad Manager Integration – a quick and error-free way to load ad units from your Google Ad Manager (formerly Google DoubleClick for Publishers, DFP) account without touching any ad codes
  • \n
  • Geo Targeting – display ads based on the geo location of the visitor
  • \n
  • Sticky Ads – increase click rates with fixed, sticky, and anchor ads
  • \n
  • Fixed Widget for WordPress – turn sidebar widgets into performant fixed sticky ads
  • \n
  • PopUp and Layer Ads – display ads and other content in layers and popups
  • \n
  • Selling Ads – allows you to sell ads on your website fully automated, including payments and advertiser profiles.
  • \n
  • Ad Slider – create a simple slider from your ads
  • \n
\n
\n

If you have problems with Advanced Ads, please reach out to our support or open a new topic in our forums on wordpress.org
\n.

\n

Integrations

\n

Advanced Ads integrates with plenty of other plugins:

\n\n","download_link":"https://downloads.wordpress.org/plugin/advanced-ads.1.27.0.zip","tags":{"ad-manager":"ad manager","ad-rotation":"ad rotation","ads":"ads","adsense":"adsense","banner":"banner"},"donate_link":"","icons":{"1x":"https://ps.w.org/advanced-ads/assets/icon-128x128.gif?rev=2293174","2x":"https://ps.w.org/advanced-ads/assets/icon-256x256.gif?rev=2293174"},"wporg":true},{"name":"Syntax-highlighting Code Block (with Server-side Rendering)","slug":"syntax-highlighting-code-block","version":"1.3.1","author":"Weston Ruter","author_profile":"https://profiles.wordpress.org/westonruter","requires":"5.5","tested":"5.7.2","requires_php":"5.6","rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":18},"num_ratings":18,"support_threads":1,"support_threads_resolved":1,"active_installs":1000,"downloaded":11981,"last_updated":"2021-03-09 8:51pm GMT","added":"2019-07-30","homepage":"https://github.com/westonruter/syntax-highlighting-code-block","short_description":"Extending the Code block with syntax highlighting rendered on the server, thus being AMP-compatible and having faster frontend performance.","description":"

This plugin extends the Code block in WordPress core to add syntax highlighting which is rendered on the server. Pre-existing Code blocks on a site are automatically extended to include syntax highlighting. Doing server-side syntax highlighting eliminates the need to enqueue any JavaScript on the frontend (e.g. Highlight.js or Prism.js) and this ensures there is no flash of unhighlighted code (FOUC?). Reducing script on the frontend improves frontend performance and it also allows for the syntax highlighted code to appear properly in AMP pages as rendered by the official AMP plugin (see also ampproject/amp-wp#972) or when JavaScript is turned off in the browser.

\n

In addition to not adding any JavaScript to the frontend, the stylesheets needed for styling the Code block will only be added to the page if there is a Code block present. The stylesheets are added inline when the Code block is rendered, ensuring that they do not block rendering of any content higher in the page. If stylesheets fail to load for any reason, the block simply renders without styling, with one key exception: highlighted lines are wrapped in mark elements so they’ll get highlighted regardless, including in RSS Feeds and posts syndicated in email (as long as the mark element is supported in the client).

\n

This extended Code block uses language auto-detection to add syntax highlighting, but you can override the language in the block’s settings sidebar. (There is currently no syntax highlighting of the Code block in the editor.) The plugin supports all programming languages that highlight.php supports (being a port of highlight.js). The Code block also is extended to support specifying the aforementioned highlighted lines. There is also a checkbox for whether to show line numbers on the frontend (with the numbers being non-selectable). Lastly, given inconsistencies across themes as to whether lines in a Code block should be wrapped, this plugin adds styling to force them to no-wrap by default, with a checkbox to opt-in to wrapping when desired.

\n

For advanced usage, please see the plugin wiki.

\n

This plugin is developed on GitHub. See list of current issues with the plugin. Please feel free to file any additional issues or requests that you may come across. Pull requests are welcome.

\n

Credits

\n

This is a fork of Code Syntax Block by Marcus Kazmierczak (mkaz), which is also available on WordPress.org. Copyright (c) 2018 Marcus Kazmierczak. Licensed under GPL 2.0 or later.

\n

highlight.php is released under the BSD 3-Clause License. Copyright © 2006-2013, Ivan Sagalaev (maniac@softwaremaniacs.org), highlight.js (original author). Copyright © 2013, Geert Bergman (geert@scrivo.nl), highlight.php

\n","download_link":"https://downloads.wordpress.org/plugin/syntax-highlighting-code-block.1.3.1.zip","tags":{"block":"block","code":"code","code-highlighting":"code highlighting","code-syntax":"code syntax","syntax-highlight":"syntax highlight"},"donate_link":"","icons":{"1x":"https://ps.w.org/syntax-highlighting-code-block/assets/icon.svg?rev=2131108","2x":"https://ps.w.org/syntax-highlighting-code-block/assets/icon-256x256.png?rev=2131108","svg":"https://ps.w.org/syntax-highlighting-code-block/assets/icon.svg?rev=2131108"},"wporg":true},{"name":"Contact Form by WPForms – Drag & Drop Form Builder for WordPress","slug":"wpforms-lite","version":"1.6.9","author":"WPForms","author_profile":"https://profiles.wordpress.org/jaredatch","requires":"4.9","tested":"5.8","requires_php":"5.5","rating":98,"ratings":{"1":210,"2":46,"3":54,"4":219,"5":9582},"num_ratings":10111,"support_threads":96,"support_threads_resolved":82,"active_installs":4000000,"downloaded":81550854,"last_updated":"2021-08-26 11:06am GMT","added":"2016-03-14","homepage":"https://wpforms.com","short_description":"The best WordPress contact form plugin. Drag & Drop online form builder that helps you create beautiful contact forms with just a few clicks.","description":"

WordPress Contact Form Builder Plugin

\n

We believe that you shouldn’t have to hire a developer to create a WordPress contact form. That’s why we built WPForms, a drag & drop WordPress form builder that’s EASY and POWERFUL.

\n

WPForms allows you to create beautiful contact forms, feedback form, subscription forms, payment forms, and other types of forms for your site in minutes, not hours!

\n

At WPForms, user experience is our #1 priority. Our pre-built form templates and workflows make WPForms the most beginner friendly contact form plugin in the market.

\n

The WPForms Challenge guides you through creating your first form in under 5 minutes. We walk you through using the form builder all the way to adding a form to a page on your site! WPForms includes integrations for popular page builders like the WordPress Block Editor (Gutenberg), Classic Editor, Elementor, and Divi making the whole process seamless.

\n

WPForms is a 100% mobile responsive contact form solution, so your contact forms will always look great on all devices (mobile, tablet, laptop, and desktop).

\n

WPForms’ contact forms are also highly optimized for web and server performance because we understand the importance of speed when it comes to SEO, marketing, and conversion. We can honestly say that WPForms is one of the fastest WordPress contact form builder plugins in the world.

\n
\n

WPForms Pro
\n This plugin is the lite version of the WPForms Pro plugin that comes with all the contact form features you will ever need including email subscription forms, multi-page contact forms, file uploads, conditional logic, payment integrations, form templates, and tons more. Click here to purchase the best premium WordPress contact form plugin now!

\n
\n

We took the pain out of creating contact forms and made it easy. Here’s why smart business owners, designers, and developers love WPForms, and you will too!

\n

\n

Drag & Drop Contact Form Builder

\n

We were tired of the bloated and buggy contact form builder plugins. That’s why we built WPForms to adapt to your workflow and allow you to create custom contact forms in minutes. By using our easy to use drag and drop online form builder, you can easily add custom form fields, rearrange them, and basically create a complete contact form in 5 minutes or less.

\n

But don’t just take our word. See what one of the WordPress experts are saying:

\n
\n

WPForms is by far the easiest form plugin to use. My clients love WPForms and it’s one of the few plugins they can use without any training. As a developer I appreciate how fast, modern, clean and extensible it is.
\n Bill Erickson – Expert WordPress Consultant

\n
\n

Pre-built Form Templates

\n

Building contact forms in WordPress can be time consuming. Why?

\n

Because every other WordPress contact form builder plugin requires you to build your contact form from scratch. The truth is it’s often not necessary to create a contact form completely from scratch unless you really want to.

\n

Whether you’re looking to create a simple contact form, marketing form, request a quote form, donation form, payment order form, registration form, or a subscription form, we have a form template for you inside our contact form builder.

\n

WPForms comes with pre-built form templates to help you save time. You can add, remove, or re-arrange fields as necessary.

\n

See 100+ Pre-Made WPForms Form Template Demo

\n

Mobile Ready, SEO Friendly and Optimized for Speed

\n

WPForms’ contact forms are 100% responsive and mobile-friendly by default. We also optimized every query on the front-end and the back-end to ensure maximum speed – Yes, WPForms is one of the fastest WordPress contact form plugin.

\n

You can embed your contact form on any page with optimized title and description. With the speed and proper formatting, WPForms is also one of the most SEO friendly contact form plugin.

\n

All the Fields & Features that You Need to Succeed

\n

From star ratings to file uploads to multi-page contact forms with progress bar, we have all the fields you need.

\n

You can easily integrate your contact forms with an email marketing service or collect payments for bookings and orders. WPForms allows you to do it all.

\n

The best part is, you can do it all without hiring a developer.

\n

See what one business owner has to say about WPForms’ contact form:

\n
\n

As a business owner, time is my most valuable asset. WPForms allow me to create smart contact forms with just a few clicks. With their pre-built form templates and the drag & drop builder, I can create a new form that works in less than 2 minutes without writing a single line of code. Well worth the investment.
\n David Henzel – Co-founder of MaxCDN

\n
\n

Surveys & Polls

\n

Along with contact form, you can also use WPForms to create surveys and polls.

\n

Our WordPress Survey plugin addon comes with smart survey fields including likert scale, star ratings, multiple choice, Net Promoter Score (NPS), and more, so you can create custom survey forms like Survey Monkey (without the high costs).

\n

WPForms offer the best-in class survey reporting. You can use our interactive reports to customize the graphs, export them for your presentations, and even display the aggregate results to your users.

\n

The best part about WPForms survey reports is that it can retroactively work on any old contact form or feedback survey contact form created with WPForms.

\n

Thousands of businesses love WPForms surveys for creating employee feedback form, customer feedback form, online petition form, and more.

\n

You can also use the surveys & polls addon to easily create a poll on your site. To save you time when creating a user poll, we have added a built-in poll forms template. Our poll feature offers real-time reports, so you can share poll results with the user immediately after they submit their vote.

\n

Just like the contact form, you can embed your surveys and polls inside any post, page, or widget area in WordPress.

\n

Membership and Default WordPress Forms

\n

Aside from building simple contact forms which every WordPress site needs, WPForms also helps you create better default WordPress forms.

\n

For example, you can use WPForms to create custom WordPress login forms and custom WordPress user registration forms which are great for membership sites.

\n

For membership sites, you can also use WPForms to create a password-protected contact form or even a members only contact form which is restricited to logged-in users only.

\n

Even if you’re not using a WordPress membership plugin, you can use WPForms to create membership registration forms, online RSVP forms, and other address book contact forms.

\n

Bloggers and publishers can use our WordPress post submission forms to accept guest posts, testimonials contact form to collect testiomnials, and partnership agreement forms to grow their business.

\n

Payment Form, Donation Form, Booking Form, and More

\n

While WPForms started out as a contact form plugin, it has evolved into a powerful custom forms solution that you can use to create a payment form, donation form, registration form, online booking form, mobile form, and basically any type of custom form you need.

\n

WPForms integrates with both PayPal and Stripe, so you can easily create a credit card payment form to accept payments on your website. If you’re using SSL, then you can use our Stripe Payment form to accept credit card payments. Alternatively you can use our PayPal payment form to make a donation form and accept payments online.

\n

Aside from simple order forms, business owners also use WPForms to create custom product purchase forms, t-shirt order forms, online booking forms, and more.

\n

We understand that sometimes you may need to create a contact form that require a signature. WPForms comes with a signature field to collect user signature on your WordPress forms or even create custom signature forms.

\n

You can do all of this while still using the same easy-to-use contact form builder that’s loved by over 4 million users.

\n
\n

I am so impressed with this plugin. I decided to give it a shot over some of the other form plugins, and I am so glad I did. It works well, is so easy to use and customize. The support is amazing on top of it all. I got the pro version because I was so pleased. Highly recommend.
\n Micky73 – WordPress user

\n
\n

Forms that are Optimized for Conversion and Results

\n

With our Form Pages addon, you can create distraction-free custom form landing pages like Google Forms and Wufoo right inside WordPress, so you can increase conversions without the high costs (See Form Pages Demo).

\n

To improve form completion rate, we created Conversational Forms® which helps you make your generic feedback form and other custom contact forms feel more human by adding an interactive form layout. Our conversational forms are similar to Typeform without the high subscription costs (See Conversational Forms Demo).

\n

WPForms also has other conversion optimization features such as our smart form logic that lets you create dynamic contact forms where fields change based on user’s answer, multi-page contact forms with progress bar, and other advanced contact forms.

\n

WPForms form analytics integration with MonsterInsights allow you to easily track your lead capture forms, newsletter signup forms, request a quote contact form, and other important forms on your site.

\n

Easy to Customize and Extend

\n

You can easily customize your contact forms with our section dividers, HTML blocks, and custom CSS.

\n

If you’re using Elementor or Divi page builders our native integrations let you easily customize the style of your forms.

\n

We also knew that our developer friends may want to extend simple contact forms further. That’s why WPForms come with tons of hooks and filters to create custom functionality.

\n

Since contact forms are essential for marketing, WPForms is a must have plugin for every website!

\n

Full WPForms Feature List

\n
    \n
  • Online Form Builder – Our powerful drag & drop contact form builder allows you to easily create WordPress contact forms and other online forms in just a few minutes without writing any code.
  • \n
  • 100% Responsive – Mobile Friendly contact forms.
  • \n
  • GDPR Friendly – Make your contact form GDPR compatible with just a few clicks.
  • \n
  • Form Templates – Use our pre-built form templates to save time. Never start from scratch again (see all form templates demos).
  • \n
  • Spam Protection – WPForms provides smart anti-spam protection out-of-the-box, plus direct integrations with hCaptcha and Google reCAPTCHA.
  • \n
  • Instant Form Notification – Quickly respond to incoming inquiries with our instant contact form notification system.
  • \n
  • Smart Form Confirmation – Show a custom success message, or redirect users to a custom thank you page.
  • \n
  • File Uploads – Collect files and media through your contact forms with File Uploads.
  • \n
  • Multi-Page Forms – Split long forms into multiple pages with progress bar to improve user experience.
  • \n
  • Smart Conditional Logic – Show or hide fields and contact form sections based on user behavior.
  • \n
  • Signature Forms – Create signature forms or add the signature field to your contact form, application form, booking form, etc.
  • \n
  • User Registration Forms – Create custom user registration form and custom login form in WordPress.
  • \n
  • Post Submissions – Collect user-submitted content in WordPress with our front-end post submission form. Great for guest posts, testimonials, business directory, listings, etc.
  • \n
  • Geolocation – Display location information about your users.
  • \n
  • Custom Captchas – Create custom captchas for your contact form.
  • \n
  • Surveys and Polls – Easily create surveys forms and analyze the data with interactive reports.
  • \n
  • Form Abandonment – Unlock more leads and grow your business with partial-form submission.
  • \n
  • Form Locker – Manage form permissions and add access control rules including password-protected forms, members only forms, limit contact form entry per person, close form after specific date / time, etc.
  • \n
  • Offline Forms – Let your visitors save their entered data offline and submit when their internet connection is restored.
  • \n
  • Form Landing Pages – Create “distraction-free” form landing pages to boost conversions. Great Google Forms and Wufoo alternative.
  • \n
  • Conversational Forms – Interactive form layout that makes your form feels more human and boost overall completion rate. Great for surveys and registration forms. Perfect Typeform alternative for WordPress without the high costs.
  • \n
  • Webhooks – Send form entry data to secondary tools and external services. No code required, and no need for a third party connector.
  • \n
  • User Journey Reporting – Discover the steps your visitors take before they submit your forms. Right in the WordPress dashboard, you can easily see the content that’s driving the most valuable form conversions.
  • \n
\n

Integrations

\n
    \n
  • PayPal Payment Forms – Create PayPal forms to easily collect payments, donations, and online orders.
  • \n
  • Stripe Forms – Easily collect credit card payments, donations, and online orders with our Stripe addon.
  • \n
  • Authorize.Net Forms – Connect your WordPress site with Authorize.Net to collect payments, donations, and online orders.
  • \n
  • Mailchimp Forms – Create Mailchimp newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • AWeber Forms – Create AWeber newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • Campaign Monitor Forms – Create Campaign Monitor newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • GetResponse Forms – Create GetResponse newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • Constant Contact Forms – Create Constant Contact newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • Drip Forms – Create Drip newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • ActiveCampaign Forms – Add contacts to your ActiveCampaign account, record events, add notes to contacts, and more.
  • \n
  • Sendinblue Forms – Create Sendinblue forms to automate your marketing and engage your subscribers.
  • \n
  • Salesforce Forms – Easily send your WordPress form contacts and leads to your Salesforce CRM account.
  • \n
  • Zapier Addon – Connect your WordPress forms with over 1000+ apps. Route your contact form data to your favorite CRM, email marketing service, etc.
  • \n
\n

After reading this feature list, you can probably imagine why WPForms is the best WordPress contact form plugin in the market.

\n

Give WPForms a try.

\n

Want to unlock more features? Upgrade to our Pro version.

\n

Credits

\n

This plugin is created by Jared Atchison and Syed Balkhi.

\n

Branding Guideline

\n

WPForms® is a registered trademark of WPForms LLC. When writing about the contact form plugin by WPForms, please make sure to uppercase the initial 3 letters.

\n
    \n
  • WPForms (correct)
  • \n
  • WP Forms (incorrect)
  • \n
  • wpforms (incorrect)
  • \n
  • wpform (incorrect)
  • \n
\n

What’s Next

\n

If you like this plugin, then consider checking out our other projects:

\n
    \n
  • OptinMonster – Get More Email Subscribers with the most popular conversion optimization plugin for WordPress.
  • \n
  • MonsterInsights – See the stats that matter and grow your business with confidence. The best Google Analytics plugin for WordPress.
  • \n
  • SeedProd – Create beautiful landing pages with our powerful drag & drop landing page builder.
  • \n
  • WP Mail SMTP – Improve email deliverability for your contact form with the most popular SMTP plugin for WordPress.
  • \n
  • RafflePress – Best WordPress giveaway and contest plugin to grow traffic and social followers.
  • \n
  • Smash Baloon – #1 social feeds plugin for WordPress – display social media content in WordPress without code.
  • \n
  • AIOSEO – The original WordPress SEO plugin to help you rank higher in search results (trusted by over 2 million sites).
  • \n
  • Push Engage – Connect with visitors after they leave your website with the leading web push notification plugin.
  • \n
  • TrustPulse – Add real-time social proof notifications to boost your store conversions by up to 15%.
  • \n
\n

Visit WPBeginner to learn from our WordPress Tutorials and find out about other best WordPress plugins.

\n

Notes

\n

WPForms is absolutely, positively the most beginner friendly WordPress contact form plugin on the market. It is both easy and powerful.

\n

We took the pain out of creating online forms and made it easy. Check out all WPForms features.

\n

Also, I’m the founder of WPBeginner, the largest WordPress resource site for beginners. It was a huge priority for me to make a WordPress contact form plugin that beginners can use without any training.

\n

I feel that we have done that here. I hope you enjoy using WPForms.

\n

Thank you

\n

Syed Balkhi

\n","download_link":"https://downloads.wordpress.org/plugin/wpforms-lite.1.6.9.zip","tags":{"contact-form":"contact form","contact-form-plugin":"contact form plugin","custom-form":"custom form","form-builder":"form builder","forms":"forms"},"donate_link":"","icons":{"1x":"https://ps.w.org/wpforms-lite/assets/icon.svg?rev=2574198","2x":"https://ps.w.org/wpforms-lite/assets/icon-256x256.png?rev=2574201","svg":"https://ps.w.org/wpforms-lite/assets/icon.svg?rev=2574198"},"wporg":true},{"name":"MonsterInsights – Google Analytics Dashboard for WordPress (Website Stats Made Easy)","slug":"google-analytics-for-wordpress","version":"7.18.0","author":"MonsterInsights","author_profile":"https://profiles.wordpress.org/chriscct7","requires":"3.8.0","tested":"5.8","requires_php":"5.2","rating":92,"ratings":{"1":194,"2":39,"3":34,"4":75,"5":2078},"num_ratings":2420,"support_threads":9,"support_threads_resolved":8,"active_installs":3000000,"downloaded":96813433,"last_updated":"2021-08-10 9:06pm GMT","added":"2007-09-14","homepage":"https://www.monsterinsights.com/?utm_source=liteplugin&utm_medium=pluginheader&utm_campaign=pluginurl&utm_content=7%2E0%2E0","short_description":"The best free Google Analytics plugin for WordPress. See how visitors find and use your website, so you can grow your business.","description":"

Google Analytics Plugin for WordPress

\n

With over 3 million active installs, MonsterInsights is the most popular Google Analytics plugin for WordPress.

\n

We believe that it’s easy to double your traffic and sales when you know exactly how people find and use your website. MonsterInsights shows you the analytics and stats that matter, so you can grow your business with confidence.

\n

At MonsterInsights, we make it “effortless” to properly connect your WordPress site with Google Analytics, so you can start making data-driven decisions to grow your business.

\n

Unlike other Google Analytics plugins, MonsterInsights allow you to enable all advanced Google Analytics tracking features with just a few clicks (no need to hire a developer).

\n

The best part is that MonsterInsights comes with an analytics dashboard for WordPress that shows you actionable analytics reports right inside your WordPress dashboard. We have created customized reports that eliminate the fluff and only show you the stats that matter, so you can see exactly what’s working and what’s not!

\n

Simply put, MonsterInsights is the most complete Google Analytics plugin for WordPress that’s both EASY and POWERFUL.

\n

That’s why millions of small businesses and top companies like Microsoft, Bloomberg, FedEx, Yelp, Subway, etc. use MonsterInsights to setup Google Analytics on their WordPress sites.

\n
\n

MonsterInsights Pro
\n This plugin is the lite version of MonsterInsights Pro plugin that comes with all the tracking features you will ever need including events tracking, ecommerce tracking, custom dimensions tracking, page speed reports, popular post tracking, custom dimensions, affiliate link tracking, and tons more. Click here to purchase the best premium Google Analytics plugin for WordPress now!

\n
\n

We took the pain out of installing Google Analytics in WordPress and made it easy. Here’s why over 3 million smart business owners, designers, and developers love MonsterInsights, and you will too!

\n

\n

Quick & Easy Google Analytics Setup

\n

Properly setting up Google Analytics is complicated. You have to either hire a developer or learn how to add advanced code snippets to your website in many different areas. This process can take days or weeks…and can even break your website!

\n

With MonsterInsights, we made it “effortless” to properly setup Google Analytics in WordPress. Yes, you can enable all advanced Google Analytics features with just a few clicks.

\n

If you can point-and-click, then you can set up Google Analytics inside WordPress and start seeing insights in under 15 minutes (no code necessary).

\n

We keep up with all Google Analytics updates, so you can sleep well at night knowing that your website will always stay up to date with the newest features.

\n

See what one business owner is saying about MonsterInsights:

\n
\n

It just works. Really easy way to insert Google Analytics tracking code and keep it there when switching themes. No need to copy/paste code anywhere. This is the best way to handle Google Analytics in WordPress.
\n Steven Gliebe

\n
\n

Google Analytics Dashboard + Real Time Stats

\n

Our goal at MonsterInsights is to make Google Analytics easy and accessible for everyone.

\n

We understand that Google Analytics has a steep learning curve which often prevents small business owners from making informed decisions to grow their business.

\n

That’s why MonsterInsights comes with a built-in Google Analytics Dashboard for your WordPress site, so you can see all the useful information about your visitors right inside your WordPress dashboard without needing to login somewhere else.

\n

We have even created customized reports to help you filter through the noise and see the stats that really matter!

\n
    \n
  • \n

    Audience Report helps you get to know your visitors in a whole new way. It shows you detailed insights like which country your visitors are coming from, what are they most interested in, which device are they using, their age, gender, and a whole lot more. You can use this demographics report and audience clues to tweak your website design and content accordingly.

    \n
  • \n
  • \n

    **Publishers Report ** helps you understand which pages your visitors are arriving, and which pages they are leaving from. Designed specifically for blogs and other resource sites, this powerful report will show you which outbound links are getting clicked so you can easily optimize for higher conversions.

    \n
  • \n
  • \n

    Behavior Report shows you exactly how people find your website, which keywords did they search for, who referred them, what did they click on your site, and more. You can use these useful stats to identify low-hanging fruits, new partnership opportunities, and promotional areas to focus on.

    \n
  • \n
  • \n

    Content Report shows you stats on exactly which content gets the most visits, so you can stop guessing and start creating content that gets more traffic and conversion.

    \n
  • \n
  • \n

    Ecommerce Report shows you important store stats like total revenue, conversion rate, average order value, top referral sources, and more (all in one place).

    \n
  • \n
  • \n

    Forms Report shows you conversion stats for various contact forms and lead forms on your website, so you can improve the conversions to grow your business.

    \n
  • \n
  • \n

    Search Console Report shows you exactly how well your website is ranking in Google, so you can further optimize your SEO to grow your organic traffic.

    \n
  • \n
  • \n

    Custom Dimensions Report helps you dig deeper by showing you useful stats like who are your most popular authors, what are the best publication times, which are your most popular categories or tags, how well are your Yoast focus keywords and SEO score performing, and more.

    \n
  • \n
  • \n

    Site Speed Report makes it easy to track pagespeed insights and loading times for your website and get the information you need to improve user experience and your SEO rankings.

    \n
  • \n
\n

Our custom Google Analytics Dashboard reports are based on over 12+ years of online business experience. We built MonsterInsights to be the Google Analytics plugin that we wish we had.

\n

We currently use MonsterInsights on all our portfolio companies which include both media sites generating tens of millions of pageviews and eCommerce sites generating millions in sales.

\n

That’s why we can confidently say that MonsterInsights is the ultimate Google Analytics Shortcut for seeing the stats that matter and making data-driven decisions to grow your business.

\n
\n

I love being able to drill down into the analytics via the reporting feature. I have the PRO version and it makes a big difference what you can analyze. I’m glad that I can integrate with Pretty Links too!
\n Kim Beasley – MonsterInsights user

\n
\n

Google Analytics Enhanced Ecommerce Tracking Made Easy

\n

Google Analytics Enhanced Ecommerce tracking is a powerful feature that lets you track user behavior across your online store starting from product views to checkout page to thank you page and beyond.

\n

With MonsterInsights’ easy WooCommerce integration, you can setup WooCommerce analytics with literally 1-click.

\n

Once you have enabled WooCommerce tracking, MonsterInsights will show you all important WooCommerce metrics in a single dashboard including WooCommerce conversion rate, top products in your WooCommerce store, total transactions, total revenue, average order value, top referral sources, and more.

\n

Our WooCommerce analytics report also includes other detailed WooCommerce event tracking data like total add to carts, total removed from cart, time to purchase, and sessions to purchase.

\n

For those who want to go beyond our WooCommerce stats dashboard, you can easily open up the Google Analytics dashboard to combine WooCommerce data with other secondary dimensions and filters to find exactly what you’re looking for.

\n

Aside from WooCommerce Google Analytics integration, MonsterInsights’ eCommerce addon also offers seamless integration for the Easy Digital Downloads plugin.

\n

Our Easy Digital Downloads Google Analytics integration allows you to set up Enhanced Ecommerce Tracking on your store with just 1-click.

\n

Simply put, MonsterInsights’ Enhanced Ecommerce for WordPress feature is by far the easiest and most powerful in the market.

\n

Google Analytics + GDPR Compliance

\n

MonsterInsights helps make Google Analytics GDPR compliance easier for business owners.

\n

Our EU compliance addon allows you to:

\n
    \n
  • Anonymize IP in Google Analytics
  • \n
  • Disable the Demographics and Interest Reports for Remarketing and Advertising
  • \n
  • Disable UserID and author name tracking
  • \n
  • Enable the ga() compatibility mode
  • \n
  • Integrate with Cookie Notice and CookieBot plugins to collect user consent before tracking
  • \n
  • Integrate with Google AMP Consent Box before enable tracking
  • \n
  • Integrate with Google Analytics’s Chrome browser opt-out extension and built-in cookie opt-out system
  • \n
  • Offer Easy Opt Out link for Google Analytics tracking
  • \n
\n

While no single plugin can guarantee 100% GDPR compliance in WordPress, MonsterInsights goes to great length in helping business owners with GDPR compliance.

\n

For more details, see: GDPR and MonsterInsights – Everything You Need to Know.

\n

Universal Tracking + Google Analytics for AMP and Instant Articles

\n

MonsterInsights uses Google Analytics universal tracking, so you can track your users across devices and platforms.

\n

Accelerated Mobile Pages (AMP) is a project by Google that helps you speed up your website. However if you don’t set it up properly, Google AMP can cause you to lose your website analytics. Our Google Analytics AMP integration allows you to have accurate tracking on all AMP enabled pages. It works seamlessly with AMP for WordPress plugin.

\n

We also offer 1-click Google Analytics integration with Facebook Instant Articles.

\n

At MonsterInsights, we always stay ahead of the curve in helping you integrate WordPress with the latest Google Analytics tracking features.

\n
\n

Analytics for PROs! This plugin brings it all, great features and helpful info to easily see what you are doing.
\n Frank van der Sluijs

\n
\n

Google AdSense Tracking and Affiliate Link Tracking

\n

With MonsterInsights Ads tracking addon, publishers can easily track the performance of their Google AdSense Ads inside their Google Analytics dashboard.

\n

Our affiliate link tracking makes it easy for bloggers and affiliate marketers to track their affiliate links with Google Analytics.

\n

MonsterInsights uses event tracking for all WordPress outbound link tracking which is far more accurate than any built-in WordPress analytics solution.

\n

Unlike other WordPress analytics plugin, our Google Analytics affiliate link tracking does NOT slow down your website because all events are recorded via JavaScript and sent straight to your account.

\n

Most other WordPress stats plugin track data on your WordPress hosting server which slows down your website and does not scale for larger websites.

\n

Since our affiliate link tracking uses Google Analytics’ powerful servers, we can skip WordPress entirely.

\n

MonsterInsights’ affiliate link tracking feature works with all WordPress affiliate link management plugins including Pretty Links, Thirsty Affiliates, and others.

\n

Custom Dimensions Tracking, Custom Google Analytics Event Tracking, and More

\n

Our Google Analytics event tracking feature for WordPress doesn’t just stop at affiliate link tracking.

\n

You can use MonsterInsights custom Google analytics event tracking feature to easily add outbound-link tracking, file downloads tracking, call-to-action button tracking, hashmark tracking, telephone link tracking, and more.

\n

Our powerful Forms Tracking addon uses Google Analytics custom event tracking feature to enable form analytics in WordPress. With just 1-click, you can enable form conversion tracking for your contact forms, lead generation forms, registration forms, surveys, and any other type of form in WordPress.

\n

MonsterInsights’ Custom Dimensions addon allows you to push WordPress analytics even further. You can use Google Analytics custom dimensions to generate helpful WordPress stats for:

\n
    \n
  • Author Tracking – see stats for each author to find which author’s posts generate the most traffic.
  • \n
  • Post Type Tracking – see stats for WordPress post types to find out which sections are performing the best.
  • \n
  • Category Tracking – see stats for your WordPress categories to find out which sections of your sites are the most popular.
  • \n
  • Tags Tracking – see stats for your WordPress tags to find out which tags are the most popular.
  • \n
  • SEO Score Tracking – see stats for your Yoast SEO score and see how it impacts your traffic.
  • \n
  • Focus Keyword Tracking – see stats for Yoast focus keyword and see how it correlates with your traffic.
  • \n
  • Logged-in User Tracking – see WordPress stats for what percentage of your users are logged-in.
  • \n
  • User ID Tracking – see stats for each individual logged-in user’s activity through User ID custom dimension – great for Ecommerce and membership sites.
  • \n
  • Published Time Tracking – track the performance of your posts based on their published time.
  • \n
\n

Simply put, MonsterInsights allow you to take full advantage of all the powerful Google Analytics features.

\n
\n

I like how simple it is for client users and how I can turn on the advanced features for myself to get all the details right.
\n Skip Shean

\n
\n

Google Analytics Dashboard Plugin for WordPress Multisite Networks

\n

MonsterInsights is the most popular analytics plugin for adding Google Analytics to WordPress multisite.

\n

We have built-in all permissions and controls that you would need to successfully run Google Analytics on a WordPress multi-site.

\n

You can control who has access to view the Google Analytics Dashboard report in WordPress. Our permissions setting allows you to hide analytics reports for specific user roles.

\n

Similarly, we understand that some sites may want to exclude logged-in users from tracking. MonsterInsights gives you granular control to exclude admin in Analytics as well as other user roles.

\n

Our performance addon allows you to adjust sample rate and site speed sample rates for Google Analytics.

\n

By now you can probably see why MonsterInsights has become the most popular Google Analytics plugin for WordPress.

\n

We understand Google Analytics better than any other analytics plugin for WordPress.

\n

Full MonsterInsights Feature List

\n
    \n
  • Quick and Easy Setup – Easily setup Google Analytics for WordPress with just a few clicks (no coding needed)
  • \n
  • Real Time Stats – See real time stats inside your Google Analytics dashboard.
  • \n
  • Universal Tracking – Get better insights with Google Analytics’ universal tracking.
  • \n
  • Google Analytics Dashboard – See the stats that matter from right inside your WordPress dashboard with custom Publisher Report, Ecommerce report, and Search Console report.
  • \n
  • eCommerce Tracking – Add Google Analytics Ecommerce tracking to WordPress.
  • \n
  • WooCommerce Google Analytics – Add Enhanced Ecommerce Tracking to your WooCommerce store.
  • \n
  • Easy Digital Downloads Google Analytics – Add Enhanced Ecommerce Tracking to your EDD store.
  • \n
  • Ads Tracking – Track your Google Adsense ads with Google Analytics.
  • \n
  • Affiliate Link Tracking – Track your affiliate links and get stats that matter.
  • \n
  • File Download Tracking – Enable file download stats with just a click.
  • \n
  • Custom Link Tracking – Track your outbound link clicks with Google Analytics.
  • \n
  • Events Tracking – Track custom button and banner clicks with Google Analytics.
  • \n
  • Custom Dimensions Tracking – Enable Google analytics custom dimensions tracking for WordPress.
  • \n
  • Author Tracking – See author stats and discover who’s the most popular author on your site.
  • \n
  • Popular Post Tracking – See which blog post and section is the most popular.
  • \n
  • Contextual Insights – Get actionable tips on how to improve engagement and get more visitors based on your site’s traffic.
  • \n
  • Headline Analyzer – Get more clicks and improve SEO following suggestions from our Headline Analyzer directly in the WordPress editor
  • \n
  • Custom Post Type Tracking – Track the performance of your custom post types.
  • \n
  • Referral Tracking – See how visitors are finding your website to better focus your marketing efforts.
  • \n
  • Performance Tracking – Control the performance rate and sample rate for your Google Analytics report.
  • \n
  • Enhanced Link Attribution – Get better analytics with enhanced link attribution.
  • \n
  • Email Summaries – Your site’s Google Analytics traffic report delivered straight to your inbox every week.
  • \n
  • Google Analytics for AMP – Add proper tracking for Google AMP.
  • \n
  • Google Analytics for Facebook Instant Articles – Add proper tracking for Facebook Analytics.
  • \n
  • Google Analytics GDPR Compliance – EU compliance addon helps you improve Google Analytics GDPR compliance by adding anonymize IP, cookie consent for opt-out tracking, and more.
  • \n
  • Form Conversion Tracking – Track conversions for your WordPress forms. Works with all popular plugins including WPForms, Contact Form 7, Gravity Forms, Formidable Forms, and more.
  • \n
  • Google Optimize Tracking – Enable Google Analytics support for Google Optimize A/B Testing.
  • \n
  • Google Analytics Tools – Helpful tools for Google Analytics such as UTM link tracking builder.
  • \n
  • Want us to add something else? Suggest a feature and we’ll get it added!
  • \n
\n

After reading this exhaustive feature list, you can probably imagine why MonsterInsights is the best Google Analytics plugin for WordPress.

\n

Give MonsterInsights a try.

\n

Want to unlock even more features? Upgrade to our Pro version.

\n
\n

Simple, yet powerful. Amazing piece of plugin, does exactly what expected and even more.
\n Matt Jaworski

\n
\n

Popular Google Analytics Tutorials

\n\n

Note for Beginners

\n

Like all WordPress plugins, Google Analytics by MonsterInsights is only available for self-hosted WordPress sites. This means you will need to switch from WordPress.com to WordPress.org if you want to use this plugin on your WordPress site.

\n

For more details, see this infographic on self hosted WordPress.org vs free WordPress.com

\n

Credits

\n

This plugin is created by Chris Christoff and Syed Balkhi with sponsorship from WPBeginner.

\n

Branding Guidelines

\n

MonsterInsights® is a registered trademark of MonsterInsights LLC. When writing about the Google Analytics for WordPress plugin by MonsterInsights, please make sure to uppercase the first letters of both word.

\n
    \n
  • MonsterInsights (correct)
  • \n
  • Monster Insights (incorrect)
  • \n
  • monsterinsights (incorrect)
  • \n
  • monsterinsight (incorrect)
  • \n
\n

What’s Next

\n

If you like this plugin, then consider checking out our other projects:

\n
    \n
  • OptinMonster – Get More Email Subscribers
  • \n
  • WPForms – Best WordPress Contact Form Plugin
  • \n
  • AIOSEO – The original WordPress SEO plugin to help you rank higher in search results (trusted by over 2 million sites)
  • \n
  • SeedProd – Most popular coming soon & maintenance mode plugin for WordPress
  • \n
  • WP Mail SMTP – Improve email deliverability for your contact form with the most popular SMTP plugin for WordPress
  • \n
  • RafflePress – Best WordPress giveaway and contest plugin to grow traffic and social followers
  • \n
  • Smash Balloon – #1 social feeds plugin for WordPress – display social media content in WordPress without code
  • \n
  • PushEngage – Connect with visitors after they leave your website with the leading web push notification plugin
  • \n
  • TrustPulse – Add real-time social proof notifications to boost your store conversions by up to 15%
  • \n
\n

This plugin would not be possible without the help and support of WPBeginner, the largest WordPress resource site. You can learn from our free WordPress Tutorials like how to install WordPress, choose the best WordPress hosting, WordPress glossary, and more.

\n

You can also learn about other best WordPress plugins.

\n","download_link":"https://downloads.wordpress.org/plugin/google-analytics-for-wordpress.7.18.0.zip","tags":{"google-analytics":"google analytics","google-analytics-dashboard":"google analytics dashboard","google-analytics-widget":"google analytics widget","woocommerce-stats":"WooCommerce stats","wordpress-analytics":"WordPress analytics"},"donate_link":"http://www.wpbeginner.com/wpbeginner-needs-your-help/","icons":{"1x":"https://ps.w.org/google-analytics-for-wordpress/assets/icon.svg?rev=1598927","2x":"https://ps.w.org/google-analytics-for-wordpress/assets/icon-256x256.png?rev=1598927","svg":"https://ps.w.org/google-analytics-for-wordpress/assets/icon.svg?rev=1598927"},"wporg":true},{"name":"Atomic Blocks – Gutenberg Blocks Collection","slug":"atomic-blocks","version":"2.9.0","author":"atomicblocks","author_profile":"https://profiles.wordpress.org/atomicblocks","requires":"5.3","tested":"5.5.5","requires_php":"5.6","rating":86,"ratings":{"1":5,"2":0,"3":1,"4":6,"5":31},"num_ratings":43,"support_threads":1,"support_threads_resolved":0,"active_installs":40000,"downloaded":991926,"last_updated":"2020-10-28 4:53pm GMT","added":"2018-03-26","homepage":"https://atomicblocks.com","short_description":"A collection of beautiful, customizable Gutenberg blocks for the new block editor.","description":"

Atomic Blocks has moved!

\n

Same powerful blocks, same beautiful designs, same innovative team. Atomic Blocks has been renamed to Genesis Blocks. Learn more about Genesis Blocks. With our migration tool built right into Genesis Blocks, the transition between plugins will be simple and seamless – plus you’ll be ready to receive the new blocks and features we’re releasing soon.

\n

Atomic Blocks is a collection of page building blocks for the new Gutenberg block editor. Building pages with the block editor and Atomic Blocks gives you more control to quickly create and launch any kind of site you want!

\n

Installing the customizable Atomic Block plugin adds a collection of beautiful, site-building blocks to help you customize page layouts, increase engagement, and get results for your business. Atomic Blocks provides everything from customizable buttons, to beautifully-designed page sections and full-page layout designs via the Section & Layout block.

\n

Along with the content blocks you’ll find in Atomic Blocks, we’re also publishing helpful articles and tutorials to help you get started with Gutenberg.

\n

New Section and Layout Block!

\n

\n

On top of the handy, time-saving blocks already found in Atomic Blocks, we’re excited to introduce the brand new Section and Layout block! This block comes with a library of pre-designed sections and layouts to help you quickly and easily build a beautiful site with the new block editor.

\n

Using the Section and Layout modal window, you can browse designs by category, search, and even add sections and layouts to a Favorites tab for quick access later. Paired with the free Atomic Blocks theme, which has support for full-width, block-based page building, you have everything you need to start building your site today!

\n

Atomic Blocks currently includes the following blocks:

\n\n

Atomic Blocks WordPress Theme

\n

We’ve created a beautiful WordPress theme to help you get started with the Atomic Blocks plugin and the new WordPress block editor. The theme integrates seamlessly with the blocks you’ll find in the plugin!

\n\n

In addition to the Atomic Block Theme, we’ve built Revolution Pro with the StudioPress team. This theme is built from the ground up with blocks—Gutenberg core and Atomic. Using this Theme and the Genesis One-Click Theme Install you can have a new block-based site up and running in minutes.

\n\n

Google AMP Support

\n

The Accelerated Mobile Pages (AMP) project is a publishing format created by Google to enhance site performance for mobile website users. AMP pages are specially designed for Google search users to quickly load website pages without using any extraneous data. Atomic Blocks has support for AMP built into each block!

\n

Atomic Blocks Help File

\n

We’ve created a handy help file that you can check out here. The help file covers how to setup the plugin and get started with the blocks.

\n

The help file is also available in the plugin once activated. Click the Atomic Blocks admin menu item to visit the Getting Started page.

\n

View the plugin help file

\n

Follow Along:

\n\n","download_link":"https://downloads.wordpress.org/plugin/atomic-blocks.2.9.0.zip","tags":{"blocks":"blocks","editor":"editor","gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","page-builder":"page builder"},"donate_link":"https://atomicblocks.com","icons":{"1x":"https://ps.w.org/atomic-blocks/assets/icon-128x128.jpg?rev=1914920","2x":"https://ps.w.org/atomic-blocks/assets/icon-256x256.jpg?rev=1914921"},"wporg":true},{"name":"Akismet Spam Protection","slug":"akismet","version":"4.1.12","author":"Automattic","author_profile":"https://profiles.wordpress.org/automattic","requires":"4.6","tested":"5.8","requires_php":false,"rating":94,"ratings":{"1":40,"2":9,"3":13,"4":45,"5":811},"num_ratings":918,"support_threads":9,"support_threads_resolved":8,"active_installs":5000000,"downloaded":211507580,"last_updated":"2021-09-03 4:53pm GMT","added":"2005-10-20","homepage":"https://akismet.com/","short_description":"The best anti-spam protection to block spam comments and spam in a contact form. The most trusted antispam solution for WordPress and WooCommerce.","description":"

Akismet checks your comments and contact form submissions against our global database of spam to prevent your site from publishing malicious content. You can review the comment spam it catches on your blog’s “Comments” admin screen.

\n

Major features in Akismet include:

\n
    \n
  • Automatically checks all comments and filters out the ones that look like spam.
  • \n
  • Each comment has a status history, so you can easily see which comments were caught or cleared by Akismet and which were spammed or unspammed by a moderator.
  • \n
  • URLs are shown in the comment body to reveal hidden or misleading links.
  • \n
  • Moderators can see the number of approved comments for each user.
  • \n
  • A discard feature that outright blocks the worst spam, saving you disk space and speeding up your site.
  • \n
\n

PS: You’ll be prompted to get an Akismet.com API key to use it, once activated. Keys are free for personal blogs; paid subscriptions are available for businesses and commercial sites.

\n","download_link":"https://downloads.wordpress.org/plugin/akismet.4.1.12.zip","tags":{"anti-spam":"anti-spam","antispam":"antispam","comments":"comments","contact-form":"contact form","spam":"spam"},"donate_link":"","icons":{"1x":"https://ps.w.org/akismet/assets/icon-128x128.png?rev=969272","2x":"https://ps.w.org/akismet/assets/icon-256x256.png?rev=969272"},"wporg":true},{"name":"WP GDPR Cookie Notice","slug":"wp-gdpr-cookie-notice","version":"1.0.0-rc.1","author":"Felix Arntz","author_profile":"https://profiles.wordpress.org/flixos90","requires":"4.9.6","tested":"5.7.2","requires_php":"7.0","rating":76,"ratings":{"1":4,"2":0,"3":0,"4":0,"5":9},"num_ratings":13,"support_threads":1,"support_threads_resolved":0,"active_installs":700,"downloaded":5952,"last_updated":"2021-04-02 11:51pm GMT","added":"2019-03-01","homepage":"https://wordpress.org/plugins/wp-gdpr-cookie-notice/","short_description":"Simple performant cookie consent notice that supports AMP, Web Stories, granular cookie control and live…","description":"

This plugin adds a simple performant cookie consent notice to your WordPress site that supports AMP, Web Stories, granular cookie control and live preview customization.

\n

Not only does the notice allow you to provide the regular message that your site uses cookies, you can also optionally grant your site visitors permission to granularly allow which cookie types are allowed, supporting groups of functional (always required), preferences, analytics and marketing cookies. This aims towards compliance with how the new GDPR regulations recommend implementing cookie control for your site.

\n

In addition to the Privacy Policy page setting that WordPress core provides, you also get a settings to optionally set an extra Cookie Policy page, and you can easily link to either of them from the cookie consent notice.

\n

The cookie notice content and appearance can easily be tweaked using the Customizer, with an immediate live-preview of what your changes will look like.

\n

Last but not least, another important thing that this plugin takes care of, other than most other cookie consent plugins, is that it actually ensures cookies are only placed if the respective cookie type has been allowed by the visitor. The plugin does this by implementing cookie rules for WordPress itself, and also for the following plugins:

\n\n

More plugins will be supported in the future. If you are a developer though, it’s also very easy to add cookie rules for other code, by using the flexible cookie rule component the plugin provides as an extension point.

\n

Feature Summary

\n
    \n
  • Lightweight and easy-to-use: Simply activate the plugin, and the notice will appear.
  • \n
  • Live Preview: Use the Customizer to adjust the notice to your needs, with an instant live preview.
  • \n
  • Customizable Appearance: Specify the notice position, colors, border, button size and more.
  • \n
  • Customizable Content: Adjust the notice heading, text and button label to your preferences. You can easily link to your cookie policy page or privacy policy page, and even give visitors granular control about which cookie types they allow.
  • \n
  • Cookie Policy Support: Define an optional cookie policy page if your site has one, or alternatively provide an ID attribute to the cookie section in your privacy policy.
  • \n
  • Cookie Integrations: Supported cookies are only set once the visitor has given their consent. The cookie rules implemented also respect the more granular cookie control.
  • \n
  • JavaScript-driven: The cookie notice is inserted into the page as necessary via JavaScript, but at the same time provides easy access to whether it should be displayed via its PHP API.
  • \n
  • AMP Support: The notice is fully AMP-compatible using <amp-consent>, integrating seamlessly with the AMP plugin. It integrates with Web Stories as well.
  • \n
  • Coding Best Practices: The plugin is fully object-oriented and is coded after best practices, such as using interfaces, traits, dependency injection or the single responsibility principle. It also implements modern coding features requiring PHP 7, such as scalar type hints or return type hints.
  • \n
\n

Disclaimer

\n

This plugin does not provide any legal protection. You as a site administrator are required to ensure that it meets legal standards. This plugin is a technical tool, not a lawyer.

\n","download_link":"https://downloads.wordpress.org/plugin/wp-gdpr-cookie-notice.1.0.0-rc.1.zip","tags":{"amp":"amp","cookie-consent":"cookie consent","cookie-notice":"cookie notice","gdpr":"GDPR","web-stories":"web stories"},"donate_link":"","icons":{"1x":"https://ps.w.org/wp-gdpr-cookie-notice/assets/icon-128x128.png?rev=2042024","2x":"https://ps.w.org/wp-gdpr-cookie-notice/assets/icon-256x256.png?rev=2042024"},"wporg":true},{"name":"WordPress Share Buttons Plugin – AddThis","slug":"addthis","version":"6.2.6","author":"The AddThis Team","author_profile":"https://profiles.wordpress.org/arnavarro","requires":"3.0","tested":"5.2.11","requires_php":false,"rating":84,"ratings":{"1":75,"2":25,"3":22,"4":46,"5":444},"num_ratings":612,"support_threads":2,"support_threads_resolved":0,"active_installs":100000,"downloaded":5069105,"last_updated":"2019-07-10 5:19pm GMT","added":"2008-12-23","homepage":"https://wordpress.org/plugins/addthis/","short_description":"Now compatible with the AMP Plugin! Free Share Buttons from AddThis. Share to Messenger, WhatsApp, Facebook, Twitter, Pinterest and many more.","description":"

Now compatible with the AMP Plugin! The Free WordPress Share Buttons Plugin from AddThis makes it easier than ever for your audience to spread your content around the web. Our quick-loading Share Buttons Plugin lets you connect to over 200 social channels including Messenger, WhatsApp, Facebook, Twitter, Pinterest and many more.

\n

Our clean, customizable and simple share buttons are beautiful, quick to load and recognized all over the web.

\n

AddThis is trusted by over 15,000,000 websites with over 2 billion unique users, sharing content all over the world, in more than sixty languages.

\n

Types of Share Buttons:

\n
    \n
  • \n

    Floating share buttons: Placed on the side of your page, following your reader as they scroll. A great way to promote sharing without getting too in-your-face.

    \n
  • \n
  • \n

    Expanding share buttons: Modern, clean, and best suited for sites with tons of mobile traffic. This button expands to reveal sharing options on hover or click.

    \n
  • \n
  • \n

    Inline share buttons: Integrate share buttons into your own content for a seamless sharing experience.

    \n
  • \n
  • \n

    Image sharing buttons: Seamlessly integrate sharing into your layout with adjustable image sharing buttons. Perfect for pages with tons of shareable content.

    \n
  • \n
\n

Customizable:

\n
    \n
  • \n

    Designed for desktop, tablet, and mobile

    \n
  • \n
  • \n

    Choose from over 200 social media channels to display

    \n
  • \n
  • \n

    Adjust coloring to match your brand

    \n
  • \n
\n

Analytics:

\n
    \n
  • Sign up for a free AddThis account to get analytics on how your content is performing such as your top shared content, referring social networks and more. After you register, these analytics are accessible by logging into your AddThis.com account and visiting your AddThis dashboard. Analytics include site pageviews, your top shared content, referring social networks, and more.
  • \n
\n

Support:

\n

We strive to provide best-in-class support with a response time of around two hours, and a customer satisfaction rate of over 98%. To get in touch with our team, head to http://www.addthis.com/support.

\n

Check out our other plugins to help you grow and engage your audience!

\n
    \n
  • \n

    Follow Buttons: Add followers to 65+ social networks, including Facebook, Snapchat, Instagram, and more.

    \n
  • \n
  • \n

    Related Posts: Boost your on-site engagement with our Related Posts tool, which recommends content not only by what’s popular, but also what’s most relevant.

    \n
  • \n
\n

Want more? Visit our website to learn how you can activate our Email List Building and Link Promotion Tools.

\n

AddThis Academy | Privacy Policy

\n","download_link":"https://downloads.wordpress.org/plugin/addthis.6.2.6.zip","tags":{"share-buttons":"share buttons","social":"social","social-marketing":"Social Marketing","social-share":"social share","social-sharing":"social sharing"},"donate_link":"","icons":{"1x":"https://ps.w.org/addthis/assets/icon-128x128.png?rev=1223867","2x":"https://ps.w.org/addthis/assets/icon-256x256.png?rev=1223867"},"wporg":true},{"name":"BigCommerce For WordPress","slug":"bigcommerce","version":"4.16.0","author":"BigCommerce","author_profile":"https://profiles.wordpress.org/bigcommerce","requires":"5.2","tested":"5.5.5","requires_php":"7.2.0","rating":80,"ratings":{"1":8,"2":1,"3":0,"4":3,"5":27},"num_ratings":39,"support_threads":4,"support_threads_resolved":1,"active_installs":1000,"downloaded":57555,"last_updated":"2021-08-12 3:08am GMT","added":"2018-11-16","homepage":"","short_description":"Scale your ecommerce business with WordPress on the front-end and BigCommerce on the back end. Free up server resources from things like catalog manag …","description":"

BigCommerce for WordPress is a plugin that allows you to scale ecommerce further than ever before on WordPress. Scale your business with WordPress on the front-end and free up server resources from things like catalog management, processing payments, managing fulfillment logistics and more with BigCommerce on the back end.

\n

Built to integrate seamlessly with WordPress, you get access to our native ecommerce features from a single plugin, the ability to sell across multiple channels and marketplaces from a single location, and best of all, an embedded checkout experience that takes on PCI compliance and customer security on your behalf.

\n

Quick Start!

\n

Look at details from the latest release, including new features and enhancements here: https://github.com/bigcommerce/bigcommerce-for-wordpress/releases

\n

Dive into how you set up and customize your site using BC4WP using our guides here: https://developer.bigcommerce.com/bigcommerce-for-wordpress/getting-started/introduction

\n

Have a suggestion for how we can be better? Ping the team! wordpress-suggestions@bigcommerce.com

\n

DIFFERENT FROM YOUR TRADITIONAL PLUGIN

\n

We’ve taken a very different approach to ecommerce in WordPress. We set out to build our plugin the WordPress Way: deliver value to the community, build it with WordPress experts and make something developers can call their own.

\n

The BigCommerce for WordPress plugin leverages the best aspects of both platforms, allowing WordPress to manage content and BigCommerce to manage ecommerce.

\n

SCALABLE ECOMMERCE FOR WORDPRESS

\n

Continue to tap into the unrestricted customization of WordPress while pairing it with the most scalable SaaS ecommerce engine. BigCommerce lets you build complex catalogs, manage large volumes of concurrent traffic, orders and analytics.

\n

The BigCommerce plugin ports over a copy of your product catalog and stores products as custom post types in WordPress. It also creates pages for your cart, checkout, account profiles, sign in, shipping & returns, gift certificates and order history.

\n

The key difference to our approach is that you don’t need to install additional extensions to get access to common ecommerce features. Instead, you get instant access to many common (and advanced) features, such as complex catalog support, global payment gateways, currency handling, taxation, shipping calculations and centralized channel management; all out-of-the-box.

\n

OFFLOAD BACKEND RESOURCES

\n

Our philosophy is that processing orders and running your store shouldn’t affect the uptime and speed of your site — which can hurt your SEO, conversion, and brand. The BigCommerce plugin does the heavy commerce lifting, letting you scale your ecommerce without losing speed or uptime.

\n

LET US HANDLE PCI COMPLIANCE

\n

Taking on your own PCI compliance comes with a huge amount of liability and risk. BigCommerce powers the full checkout experience, assuming the burden of PCI compliance for you.

\n

EXTENSIVE PAYMENT GATEWAYS

\n

BigCommerce has over 65 payment gateway integrations available out-of-the box, serving 100+ countries and over 250 local payment methods.

\n

To help you reduce costs, we’ve pre-negotiated special credit and debit card processing rates with PayPal, our preferred payment solution. The more you grow with BigCommerce and upgrade your plan, the lower your rates can go.

\n

HIGHLY SCALABLE PRODUCT CATALOG

\n

BigCommerce is built for large, complex catalogs with up to 600 SKUs per product, and 250 product values for a single option. Our native catalog structure treats single products (including variants, details, SKUs, etc.) as a single API call, making inventory syncing with ERPs, PIMs (and WordPress) fast.

\n

MULTI-CHANNEL SELLING & MANAGEMENT

\n

With the core BigCommerce platform, you now have access within the control panel to sell across multiple marketplaces simultaneously, such as eBay, Amazon, Facebook, Instagram, Google Shopping, Square and more! Save time and eliminate errors and overselling with bulk listing, automatic inventory syncing and unified order and fulfillment management.

\n

USE YOUR FAVORITE WORDPRESS THEME

\n

BigCommerce for WordPress will work with any WordPress theme, but it may require some styling to make it fit perfectly. Are you a theme developer? We’d love to promote your BigCommerce for WordPress compatible theme. Get in touch with us here.

\n

To start, we recommend choosing a cross-browser compatible WordPress ecommerce theme, since the theme options included will better match what an online store requires.

\n

ECOMMERCE WITH GUTENBERG

\n

We’re big supporters of Gutenberg and built our plugin to support both the classic editor and Gutenberg. Whether you’re inserting shortcodes in classic mode or product blocks in Gutenberg, we will continue to enable support for both.

\n

SECURED USER ACCOUNTS & LOGINS

\n

In addition to offering you peace of mind with a secure checkout experience, we also extend this level of security to your shoppers, their accounts and logins, and payment information — all managed by BigCommerce.

\n

GLOBAL SHIPPING STREAMLINED

\n

We support all major global carriers, offer real-time carrier quotes, allow for free shipping, flat rates, dropshipping and more. With our deep ShipperHQ integration, you can even specify rates by product, category, customer group, quantity, destination, dimensions and more.

\n

FLEXIBLE SHOPPING CART

\n

We are bringing over a decade of focusing on building online stores to every WordPress website. Through this we bring our flexible shopping cart, along with it’s extensive customization options, so can offer enterprise grade promotions and discounts within a fully responsive layout, without additional extensions that other WordPress ecommerce plugins require.

\n

MULTIPLE SITES; ONE CONTROL PANEL

\n

Even if you sell across multiple WordPress sites, you shouldn’t have to manage them all in separate places. BigCommerce gives you a single control panel to manage your catalog, orders and shipping, all from one place. Streamline your admin experience and spend less time managing ecommerce on WordPress.

\n

Beyond WordPress, the endpoints we’ve opened on our platform allow you to build commerce into any sort of experience. Looking to launch a site in React? Interested in developing a mobile app? Want to integrate with an in-house POS? All of these can be built and managed from within the BigCommerce Control Panel.

\n

COMPLEX ENTERPRISE SYSTEMS INTEGRATIONS

\n

A huge benefit of having a SaaS ecommerce engine behind the scenes is that the core platform is already built for mid-market and enterprise use cases. Natively connect to your existing ERP suites, PIM software, OMS solutions, POS systems or marketing automation tools right out of the box.

\n

AMP SUPPORT

\n

Unique to most WordPress ecommerce plugins, BigCommerce for WordPress also includes support for Accelerated Mobile Pages. To activate, install the official Google plugin.

\n

SUPPORT AND SERVICES

\n

All of our BigCommerce customers have access to our 24/7 live phone, chat, and email support, run from our headquarters in Austin, Texas. For larger enterprise customers, we offer dedicated account management and implementation management services as part of your plan. We also have an ever-growing collection of help, support, and how-to guides in our help center.

\n

BUILT WITH DEVELOPERS IN MIND

\n

BigCommerce for WordPress was built by WordPress developers, with developers in mind. Our plugin is open source and available for you to fork, extend and modify as your needs require.

\n

Our plugin supports WordPress’ standard method of overriding template files so you can modify out-of-the-box designs. Customize your product cards, lists and shopping cart without risking plugin updates that will undo your changes.

\n

Additionally, there are many hooks and filters, so you can manipulate content to your heart’s content.

\n

JOIN OUR BIGCOMMERCE COMMUNITY

\n

All BigCommerce customers get access to our ever-growing online community to answer questions, discuss ecommerce strategies, learn about the latest product updates, contribute ideas and more.

\n

If you’re interested in contributing to BigCommerce for WordPress, head over to our GitHub Repository.

\n","download_link":"https://downloads.wordpress.org/plugin/bigcommerce.4.16.0.zip","tags":{"ecommerce":"ecommerce","online-store":"online store","retail":"retail","sell-online":"sell online","storefront":"storefront"},"donate_link":"","icons":{"1x":"https://ps.w.org/bigcommerce/assets/icon-256x256.png?rev=2141502","2x":"https://ps.w.org/bigcommerce/assets/icon-256x256.png?rev=2141502"},"wporg":true},{"name":"Yoast SEO","slug":"wordpress-seo","version":"17.1","author":"Team Yoast","author_profile":"https://profiles.wordpress.org/joostdevalk","requires":"5.6","tested":"5.8","requires_php":"5.6.20","rating":96,"ratings":{"1":718,"2":124,"3":170,"4":616,"5":25755},"num_ratings":27383,"support_threads":527,"support_threads_resolved":484,"active_installs":5000000,"downloaded":351794282,"last_updated":"2021-09-07 6:57am GMT","added":"2010-10-11","homepage":"https://yoa.st/1uj","short_description":"Improve your WordPress SEO: Write better content and have a fully optimized WordPress site using the Yoast SEO plugin.","description":"

Yoast SEO: the #1 WordPress SEO plugin

\n

Since 2008 Yoast SEO has helped millions of websites worldwide to rank higher in search engines.

\n

Yoast’s mission is SEO for Everyone. Our plugin’s users range from the bakery around the corner to some of the most popular sites on the planet.

\n

Yoast SEO Free contains everything that you need to manage your SEO, and the Yoast SEO Premium plugin and its extensions unlock even more tools and functionality.

\n

GET AHEAD OF THE COMPETITION

\n

To rank highly in search engines, you need to beat the competition. You need a better, faster, stronger website than the people who sell or do the same kinds of things as you.

\n

Yoast SEO is the most-used WordPress SEO plugin, and has helped millions of people like you to get ahead, and to stay ahead.

\n

TAKING CARE OF YOUR WORDPRESS SEO

\n

Yoast SEO is packed full of features, designed to help visitors and search engines to get the most out of your website. Some of our favourites are:

\n
    \n
  • Automated technical SEO improvements, like canonical URLs and meta tags.
  • \n
  • Advanced XML sitemaps; making it easy for Google to understand your site structure.
  • \n
  • Title and meta description templating, for better branding and consistent snippets in the search results.
  • \n
  • An in-depth Schema.org integration that will increase your chance of getting rich results, by helping search engines to understand your content.
  • \n
  • Full control over site breadcrumbs, so that users and search engines always know where they are.
  • \n
  • Faster loading times for your whole website, due to an innovative way of managing data in WordPress.
  • \n
  • [Premium] E-mail support for our Yoast SEO Premium users.
  • \n
  • [Premium] The possibility to expand Yoast SEO with the News SEO, Video SEO, Local SEO and WooCommerce SEO extensions.
  • \n
\n

WRITE KILLER CONTENT WITH YOAST SEO

\n

We know content is king, that’s why Yoast SEO is famous for its state-of-the-art content and SEO analysis. Yoast SEO gives you:

\n
    \n
  • SEO analysis: an invaluable tool while writing SEO-friendly content with the right (focus) keyphrases in mind.
  • \n
  • Readability analysis: ensures that humans and search engines can read and understand your content.
  • \n
  • Full language support for: English, German, French, Dutch, Spanish, Italian, Russian, Indonesian, Polish, Portuguese, Arabic, Swedish, Hebrew, Hungarian, Turkish, Czech, Norwegian and Slovak.
  • \n
  • A Google preview, which shows what your listings will look like in the search results. Even on mobile devices!
  • \n
  • Innovative Schema blocks for the WordPress block editor, so that your FAQ and HowTo content can be shown directly in the search results. Plus a breadcrumbs block to guide your users.
  • \n
  • [Premium] Internal linking blocks to easily improve the structure of your content. Easily add a table of contents block, a related links block, a subpages block, or siblings block! Plus, we’ll keep adding these easy-to-add blocks to improve your site structure.
  • \n
  • [Premium] Social previews to show you how your content will be shown on Twitter and Facebook. Plus: Social Appearance Templates to guarantee a consistent look.
  • \n
  • [Premium] The Insights tool that shows you what your text focuses on. This way you can keep your article in line with your keyphrases.
  • \n
  • [Premium] Optimize your content for synonyms and related keyphrases.
  • \n
  • [Premium] Optimize your article for different word forms of your keyphrases, as the singular and plural. But also different verb forms, synonyms, and related keyphrases. This makes for more natural content!
  • \n
  • [Premium] Automatic internal linking suggestions: write your article and get automatic suggested posts to link to!
  • \n
  • [Premium] An orphaned content filter to detect posts that have no links pointing towards them!
  • \n
  • [Premium] SEO workouts to make working on your site as easy as ABC. These SEO workflows will get your site into shape in no time!
  • \n
\n

KEEP YOUR SITE IN PERFECT SHAPE

\n

Whether you are an online entrepreneur, blogger or content creator, a developer, a (WordPress) SEO expert or a business owner, Yoast SEO helps you keep your website in perfect shape by:

\n
    \n
  • Tuning the engine of your website, so you can work on creating great content!
  • \n
  • Giving you cornerstone content and internal linking features to help you optimize your site structure in a breeze.
  • \n
  • Translating your content to structured data where possible, to help search engines understand your website.
  • \n
  • Helping you manage your team: with our SEO roles you can give colleagues access to specific sections of the Yoast SEO plugin.
  • \n
  • [Premium] Automatically creating redirects when URLs change or when pages are deleted, and providing tools to manage or create redirects.
  • \n
  • [Premium] Showing you social previews to manage the way your page is shared on social networks like Facebook and Twitter.
  • \n
\n

TRUST THE EXPERTS

\n

Yoast is powered by a team of expert developers, testers, software architects, and SEO consultants. They work constantly to stay at the cutting edge of WordPress SEO, and to improve the plugin with every release.

\n

Yoast SEO is the only WordPress SEO plugin made by world-renowned SEO experts.

\n

GET PREMIUM SUPPORT

\n

The Yoast team offers regular support on the WordPress.org forums. But we hope you understand that we prioritize our Premium customers. This one-on-one email support is available to people who have purchased Yoast SEO Premium.

\n

Did you know that Yoast SEO Premium contains a lot of extra features:

\n
    \n
  • A redirect manager that prevents “404: page not found” errors
  • \n
  • Optimize without worrying about over-optimization with intelligent word form recognition available in multiple languages.
  • \n
  • Internal linking blocks to structure your site easily.
  • \n
  • Internal linking suggestions while you’re writing.
  • \n
  • Preview your content to see what it will look like in the search results and when shared on social media using the Google preview and social preview.
  • \n
  • Cornerstone content checks that point search engines to your most important pages.
  • \n
  • Connect Yoast SEO to Zapier to easily create zaps that instantly share your published posts with 2000+ destinations like Twitter, Facebook, and much more.
  • \n
\n

If you are serious about your WordPress SEO, install the Yoast SEO Premium plugin! Costs a little, saves a lot of time!

\n

OUR EXTENSIONS TO FURTHER IMPROVE YOUR WORDPRESS SEO

\n

Check out these SEO add-ons by Yoast:

\n
    \n
  • Yoast Local SEO optimizes your website for a local audience.
  • \n
  • Yoast Video SEO ensures that Google understands what your video is about, increasing the chances of ranking in the video results.
  • \n
  • Yoast News SEO for news websites that want to improve their visibility and performance in Google News.
  • \n
  • WooCommerce SEO for all online shops that want to perform better in the search results and social media.
  • \n
\n

These extensions work fine with the free version of Yoast SEO. Of course, the premium extensions also include 24/7 support.

\n

Oh, don’t forget: our Yoast Academy is for all entrepreneurs, bloggers, and anyone who wants to learn more about optimizing websites, improving your WordPress SEO, and if you want to take your content to the next level!

\n

INTEGRATIONS

\n

Yoast SEO integrates seamlessly into a range of themes and plugins. We work particularly well with:

\n\n

BUG REPORTS

\n

Do you want to report a bug for Yoast SEO? Best to do so in the WordPress SEO repository on GitHub. Please note that GitHub is not a support forum and issues will be closed if they don’t meet the bug requirements.

\n

READ MORE

\n

Want more information on search engine optimization and Yoast SEO? Have a look at:

\n\n","download_link":"https://downloads.wordpress.org/plugin/wordpress-seo.17.1.zip","tags":{"content-analysis":"Content analysis","readability":"Readability","schema":"schema","seo":"seo","xml-sitemap":"xml sitemap"},"donate_link":"https://yoa.st/1up","icons":{"1x":"https://ps.w.org/wordpress-seo/assets/icon.svg?rev=2363699","2x":"https://ps.w.org/wordpress-seo/assets/icon-256x256.png?rev=2363699","svg":"https://ps.w.org/wordpress-seo/assets/icon.svg?rev=2363699"},"wporg":true},{"name":"Gutenberg","slug":"gutenberg","version":"11.4.1","author":"Gutenberg Team","author_profile":"https://profiles.wordpress.org/matveb","requires":"5.6","tested":"5.8","requires_php":"5.6","rating":42,"ratings":{"1":2267,"2":201,"3":126,"4":133,"5":701},"num_ratings":3428,"support_threads":59,"support_threads_resolved":8,"active_installs":300000,"downloaded":24489343,"last_updated":"2021-09-03 3:27pm GMT","added":"2017-06-16","homepage":"https://github.com/WordPress/gutenberg","short_description":"The Gutenberg plugin provides editing, customization, and site building features to WordPress. This beta plugin allows you to test bleeding-edge featu …","description":"

“Gutenberg” is a codename for a whole new paradigm in WordPress site building and publishing, that aims to revolutionize the entire publishing experience as much as Gutenberg did the printed word. Right now, the project is in the first phase of a four-phase process that will touch every piece of WordPress — Editing, Customization, Collaboration, and Multilingual — and is focused on a new editing experience, the block editor.

\n

The block editor introduces a modular approach to pages and posts: each piece of content in the editor, from a paragraph to an image gallery to a headline, is its own block. And just like physical blocks, WordPress blocks can added, arranged, and rearranged, allowing WordPress users to create media-rich pages in a visually intuitive way — and without work-arounds like shortcodes or custom HTML.

\n

The block editor first became available in December 2018, and we’re still hard at work refining the experience, creating more and better blocks, and laying the groundwork for the next three phases of work. The Gutenberg plugin gives you the latest version of the block editor so you can join us in testing bleeding-edge features, start playing with blocks, and maybe get inspired to build your own.

\n

Discover More

\n
    \n
  • \n

    User Documentation: See the WordPress Editor documentation for detailed docs on using the editor as an author creating posts and pages.

    \n
  • \n
  • \n

    Developer Documentation: Extending and customizing is at the heart of the WordPress platform, see the Developer Documentation for extensive tutorials, documentation, and API reference on how to extend the editor.

    \n
  • \n
  • \n

    Contributors: Gutenberg is an open-source project and welcomes all contributors from code to design, from documentation to triage. See the Contributor’s Handbook for all the details on how you can help.

    \n
  • \n
\n

The development hub for the Gutenberg project is on Github at: https://github.com/wordpress/gutenberg

\n

Discussion for the project is on Make Blog and the #core-editor channel in Slack, signup information.

\n","download_link":"https://downloads.wordpress.org/plugin/gutenberg.11.4.1.zip","tags":[],"donate_link":"","icons":{"1x":"https://ps.w.org/gutenberg/assets/icon-128x128.jpg?rev=1776042","2x":"https://ps.w.org/gutenberg/assets/icon-256x256.jpg?rev=1776042"},"wporg":true},{"name":"Setka Editor","slug":"setka-editor","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://setka.io/","short_description":"

Setka Editor is the first WYSIWYG plugin with page builder functionality.

\n","description":"\n\n\n

Setka Editor is the first WYSIWYG plugin with page builder functionality.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2018/11/Setka-Banner-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2018/11/Setka-Banner-372x209.jpg","svg":""},"wporg":false}] \ No newline at end of file diff --git a/data/themes.json b/data/themes.json index 4566ec3a832..629f47f5e0b 100644 --- a/data/themes.json +++ b/data/themes.json @@ -1 +1 @@ -[{"name":"Sydney","slug":"sydney","version":"1.79","preview_url":"https://wp-themes.com/sydney/","author":{"user_nicename":"athemes","profile":"https://profiles.wordpress.org/athemes","avatar":"https://secure.gravatar.com/avatar/0fe6c4dee6e201e81783d8a0ee12d83b?s=96&d=monsterid&r=g","display_name":"athemes","author":"aThemes","author_url":"https://athemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/sydney/screenshot.png?ver=1.79","rating":98,"num_ratings":496,"homepage":"https://wordpress.org/themes/sydney/","description":"Sydney is a powerful business theme that provides a fast way for companies or freelancers to create an awesome online presence. As well as being fully compatible with Elementor, Sydney brings plenty of customization possibilities like access to all Google Fonts, full color control, layout control, logo upload, full screen slider, header image, sticky navigation and much more. Also, Sydney provides all the construction blocks you need to rapidly create an engaging front page. Looking for a quick start with Sydney? With just a few clicks, you can import one of our existing demos (https://athemes.com/sydney-demos/)","requires":false,"requires_php":"5.6","wporg":true},{"name":"Really Simple","slug":"really-simple","version":"1.0.7","preview_url":"https://wp-themes.com/really-simple/","author":{"user_nicename":"flauberthenriques","profile":"https://profiles.wordpress.org/flauberthenriques","avatar":"https://secure.gravatar.com/avatar/d524eb0811fa44be90481509b000c779?s=96&d=monsterid&r=g","display_name":"Flaubert Henriques","author":"Flaubert Henriques","author_url":"https://profiles.wordpress.org/flauberthenriques/"},"screenshot_url":"//ts.w.org/wp-content/themes/really-simple/screenshot.png?ver=1.0.7","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/really-simple/","description":"Really Simple is a theme for bloggers and writers who need a ultra light and fast theme. The theme focuses on simplicity and loading speed. Yes, Really Simple Theme is also fully AMP compatible. Check the readme.txt file and leave the sidebar perfect after WordPress 5.8 update.","requires":"5.3","requires_php":"7.0","wporg":true},{"name":"Artpop","slug":"artpop","version":"1.0.7","preview_url":"https://wp-themes.com/artpop/","author":{"user_nicename":"designlabthemes","profile":"https://profiles.wordpress.org/designlabthemes","avatar":"https://secure.gravatar.com/avatar/956873f77232371cb89d8a0d7a516354?s=96&d=monsterid&r=g","display_name":"designlabthemes","author":"Design Lab","author_url":"https://www.designlabthemes.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/artpop/screenshot.png?ver=1.0.7","rating":100,"num_ratings":1,"homepage":"https://wordpress.org/themes/artpop/","description":"Artpop is a beautiful Gutenberg-first WordPress theme, carefully designed to help you build your online brand. Unleash your creativity, Artpop takes care of the rest! Well documented and easy to use even for WordPress beginners, Artpop is perfect for a blog, personal portfolio, small business website, and WooCommerce storefront. Easily set your logo, change colors, and create awesome layouts to give your website a truly unique look.","requires":"4.7","requires_php":"5.6","wporg":true},{"name":"Michelle","slug":"michelle","version":"1.2.0","preview_url":"https://wp-themes.com/michelle/","author":{"user_nicename":"webmandesign","profile":"https://profiles.wordpress.org/webmandesign","avatar":"https://secure.gravatar.com/avatar/f4a334f9f5af61b2bd22fcaadb04dd06?s=96&d=monsterid&r=g","display_name":"WebMan Design | Oliver Juhas","author":"WebMan Design","author_url":"https://www.webmandesign.eu/"},"screenshot_url":"//ts.w.org/wp-content/themes/michelle/screenshot.png?ver=1.2.0","rating":100,"num_ratings":3,"homepage":"https://wordpress.org/themes/michelle/","description":"Michelle is accessibility ready WordPress theme for creating inclusive websites easily and with fun using block editor. Useful block patterns, block styles, templates and featured posts functionality allow you to build an eyecatching website in no time. Customize site footer and error 404 page content with block editor! The theme also works with Beaver Builder, Elementor, or any other page builder. It also supports theme builders! Michelle elevates your business, eCommerce, portfolio, or blog website. Check out the demo at https://themedemos.webmandesign.eu/michelle/ and documentation at https://webmandesign.github.io/docs/michelle/","requires":"5.5","requires_php":"7.0","wporg":true},{"name":"Miniva","slug":"miniva","version":"1.6.3","preview_url":"https://wp-themes.com/miniva/","author":{"user_nicename":"tajam","profile":"https://profiles.wordpress.org/tajam","avatar":"https://secure.gravatar.com/avatar/378d4e715829ccf6f1fbe6dfef6eb539?s=96&d=monsterid&r=g","display_name":"Tajam","author":"Tajam","author_url":"https://tajam.id/"},"screenshot_url":"//ts.w.org/wp-content/themes/miniva/screenshot.png?ver=1.6.3","rating":100,"num_ratings":6,"homepage":"https://wordpress.org/themes/miniva/","description":"A fast, lightweight, and mobile-friendly WordPress theme for bloggers. Miniva is built with simplicity, accessibility and performance in mind. The clean and minimal design helps readers focus on your content. It supports AMP and several Jetpack modules including featured content, infinite scroll, content options and social menu. See the theme demo at https://tajam.id/miniva-demo/","requires":"4.5","requires_php":"5.3","wporg":true},{"name":"Iknow","slug":"iknow","version":"1.2.6","preview_url":"https://wp-themes.com/iknow/","author":{"user_nicename":"wpcalc","profile":"https://profiles.wordpress.org/wpcalc","avatar":"https://secure.gravatar.com/avatar/64ca4933fab3d5e50383f0b514acd5f6?s=96&d=monsterid&r=g","display_name":"Wow-Company","author":"Wow-Company","author_url":"https://wow-company.com"},"screenshot_url":"//ts.w.org/wp-content/themes/iknow/screenshot.png?ver=1.2.6","rating":98,"num_ratings":9,"homepage":"https://wordpress.org/themes/iknow/","description":"Iknow WordPress Theme has a minimalistic, responsive and mobile-friendly design. Easy and fast theme. The theme is perfect for creating Knowledge Base, Helpdesk, Wiki and FAQ websites. Ability to set custom icons for each category and tag. Manage the display of categories on the main page of the site. The integrated post rating system VoteUp/VoteDown. Breadcrumbs for easy site navigation. Custom widget to display the current navigation in a category and in a separate post. You can view the appearance and features of the theme on the site https://wow-company.com/wp-theme-iknow/. Documentation https://wow-company.com/faq/category/wow-themes/iknow/","requires":false,"requires_php":"5.6","wporg":true},{"name":"Kadence","slug":"kadence","version":"1.1.3","preview_url":"https://wp-themes.com/kadence/","author":{"user_nicename":"britner","profile":"https://profiles.wordpress.org/britner","avatar":"https://secure.gravatar.com/avatar/3276133b8df529e6e1e58586ab1a309e?s=96&d=monsterid&r=g","display_name":"Ben Ritner - Kadence WP","author":"Kadence WP","author_url":"https://www.kadencewp.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/kadence/screenshot.png?ver=1.1.3","rating":98,"num_ratings":135,"homepage":"https://wordpress.org/themes/kadence/","description":"Kadence Theme is a lightweight yet full featured WordPress theme for creating beautiful fast loading and accessible websites, easier than ever. It features an easy to use drag and drop header and footer builder to build any type of header in minutes. It features a full library of gorgeous starter templates that are easy to modify with our intelligent global font and color controls. With extensive integration with the most popular 3rd party plugins, you can quickly build impressive ecommerce websites, course websites, business websites, and more.","requires":"5.0","requires_php":"7.0","wporg":true},{"name":"Izo","slug":"izo","version":"1.0.12","preview_url":"https://wp-themes.com/izo/","author":{"user_nicename":"elfwp","profile":"https://profiles.wordpress.org/elfwp","avatar":"https://secure.gravatar.com/avatar/1cfedf4555fea4d8fbba2947635586ea?s=96&d=monsterid&r=g","display_name":"elfwp","author":"elfWP","author_url":"https://elfwp.com"},"screenshot_url":"//ts.w.org/wp-content/themes/izo/screenshot.png?ver=1.0.12","rating":90,"num_ratings":2,"homepage":"https://wordpress.org/themes/izo/","description":"Izo a fast, lightweight, native AMP and fully customizable multipurpose WordPress theme. Features include compatibility with many popular plugins like Elementor and other page builders, WooCommerce, WPML, LifterLMS and more. There is also full support for the new WordPress block editor. Izo is fully responsive and our users can take advantage of the many customizer options to easily change styles. Also, if you're looking for a quick start, we're offering a bunch of free starter sites, ready to easily import.","requires":false,"requires_php":"5.6","wporg":true},{"name":"OceanWP","slug":"oceanwp","version":"3.0.5","preview_url":"https://wp-themes.com/oceanwp/","author":{"user_nicename":"oceanwp","profile":"https://profiles.wordpress.org/oceanwp","avatar":"https://secure.gravatar.com/avatar/05f8d3fe2ccb6479bac14e4d40b406dd?s=96&d=monsterid&r=g","display_name":"oceanwp","author":"Nick","author_url":"https://oceanwp.org/about-me/"},"screenshot_url":"//ts.w.org/wp-content/themes/oceanwp/screenshot.png?ver=3.0.5","rating":98,"num_ratings":4913,"homepage":"https://wordpress.org/themes/oceanwp/","description":"OceanWP is the perfect theme for your project. Lightweight and highly extendable, it will enable you to create almost any type of website such a blog, portfolio, business website and WooCommerce storefront with a beautiful & professional design. Very fast, responsive, RTL & translation ready, best SEO practices, unique WooCommerce features to increase conversion and much more. You can even edit the settings on tablet & mobile so your site looks good on every device. Work with the most popular page builders as Elementor, Beaver Builder, Brizy, Visual Composer, Divi, SiteOrigin, etc... Developers will love his extensible codebase making it a joy to customize and extend. Best friend of Elementor & WooCommerce. Looking for a Multi-Purpose theme? Look no further! Check the demos to realize that it's the only theme you will ever need: https://oceanwp.org/demos/","requires":"5.3","requires_php":"7.2","wporg":true},{"name":"Twenty Twenty-One","slug":"twentytwentyone","version":"1.4","preview_url":"https://wp-themes.com/twentytwentyone/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentytwentyone/screenshot.png?ver=1.4","rating":82,"num_ratings":32,"homepage":"https://wordpress.org/themes/twentytwentyone/","description":"Twenty Twenty-One is a blank canvas for your ideas and it makes the block editor your best brush. With new block patterns, which allow you to create a beautiful layout in a matter of seconds, this theme’s soft colors and eye-catching — yet timeless — design will let your work shine. Take it for a spin! See how Twenty Twenty-One elevates your portfolio, business website, or personal blog.","requires":"5.3","requires_php":"5.6","wporg":true},{"slug":"occasio","version":"","preview_url":"https://themezee.com/themes/occasio/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/12/occasio.jpg","rating":0,"num_ratings":0,"homepage":"https://themezee.com/themes/occasio/","requires":"","requires_php":"","wporg":false},{"name":"Tortuga","slug":"tortuga","version":"2.3.4","preview_url":"https://wp-themes.com/tortuga/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/tortuga/screenshot.jpg?ver=2.3.4","rating":96,"num_ratings":19,"homepage":"https://wordpress.org/themes/tortuga/","description":"Tortuga is a highly flexible and adventurous WordPress theme for your pirate magazine or any news related website. It supports three different post layouts, two sidebar schemes and a Magazine Homepage template based on widgets. Other highlights of Tortuga are the beautiful post slider and header widgets area. Arrr!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Treville","slug":"treville","version":"2.1.4","preview_url":"https://wp-themes.com/treville/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/treville/screenshot.jpg?ver=2.1.4","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/treville/","description":"An elegant Blogging & Magazine WordPress Theme with subtle colors and great typography. Treville supports two navigation menus, advanced post settings and a post slider with fullscreen images!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Wellington","slug":"wellington","version":"2.1.4","preview_url":"https://wp-themes.com/wellington/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/wellington/screenshot.jpg?ver=2.1.4","rating":100,"num_ratings":12,"homepage":"https://wordpress.org/themes/wellington/","description":"Wellington is a clean and simple Magazine WordPress theme with beautiful typography and subtle colors. The theme includes two different post layouts, a featured post slider and thoughtful theme settings in the Customizer.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Poseidon","slug":"poseidon","version":"2.3.4","preview_url":"https://wp-themes.com/poseidon/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/poseidon/screenshot.jpg?ver=2.3.4","rating":96,"num_ratings":16,"homepage":"https://wordpress.org/themes/poseidon/","description":"Poseidon is an elegant designed WordPress theme featuring a splendid fullscreen image slideshow. The clean typography and spacious white layout makes it great to share your stories. You can use the theme as simple blog or easily create a news website with the widget-based Magazine Homepage template.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Napoli","slug":"napoli","version":"2.2.4","preview_url":"https://wp-themes.com/napoli/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/napoli/screenshot.jpg?ver=2.2.4","rating":100,"num_ratings":4,"homepage":"https://wordpress.org/themes/napoli/","description":"Napoli is a beautiful WordPress theme perfectly suited for a food magazine. It features a great featured post slider, smooth typography and a grid-layout for posts. Bon appetit!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Mercia","slug":"mercia","version":"1.9.7","preview_url":"https://wp-themes.com/mercia/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/mercia/screenshot.jpg?ver=1.9.7","rating":100,"num_ratings":1,"homepage":"https://wordpress.org/themes/mercia/","description":"Mercia is a flexible and versatile theme perfect for lifestyle, travel, or fashion magazines. It features a modern and minimalist design with great typropaphy. Of course it works on all screen sizes. With multiple blog layouts and powerful Magazine widgets, you can easily create a stunning and dynamic news website in just a few minutes.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Maxwell","slug":"maxwell","version":"2.3.4","preview_url":"https://wp-themes.com/maxwell/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/maxwell/screenshot.jpg?ver=2.3.4","rating":100,"num_ratings":6,"homepage":"https://wordpress.org/themes/maxwell/","description":"Maxwell is a minimalistic and elegant WordPress theme featuring an ultra clean magazine layout. With a beautiful typography, various post layouts and a gorgeous featured posts slideshow Maxwell truly helps you to stand out.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Harrison","slug":"harrison","version":"1.3.4","preview_url":"https://wp-themes.com/harrison/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/harrison/screenshot.jpg?ver=1.3.4","rating":80,"num_ratings":1,"homepage":"https://wordpress.org/themes/harrison/","description":"Harrison is a highly versatile WordPress Theme and was specially designed for use with the new WordPress Block Editor. The theme supports the latest Gutenberg features and provides different blog layouts and extensive post settings. The clean and elegant design is perfect to create all kinds of websites. You should really try it!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Gridbox","slug":"gridbox","version":"2.3.4","preview_url":"https://wp-themes.com/gridbox/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/gridbox/screenshot.jpg?ver=2.3.4","rating":74,"num_ratings":6,"homepage":"https://wordpress.org/themes/gridbox/","description":"Gridbox is a clean and solid WordPress theme featuring a three-column grid-layout for posts. The theme works out of the box and does not require any complicated setup. It is perfectly suited for a simple magazine, blog or portfolio website.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Chronus","slug":"chronus","version":"2.0.5","preview_url":"https://wp-themes.com/chronus/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/chronus/screenshot.jpg?ver=2.0.5","rating":80,"num_ratings":5,"homepage":"https://wordpress.org/themes/chronus/","description":"Chronus is a fast and lightweight WordPress Theme created for magazines, news websites and personal blogs. The Featured Content section and flexible Magazine Widgets give you the ability to highlight your most important posts on the home page. The minimalistic and responsive design focuses on your content and looks great on any screen size.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Donovan","slug":"donovan","version":"1.8.4","preview_url":"https://wp-themes.com/donovan/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/donovan/screenshot.jpg?ver=1.8.4","rating":96,"num_ratings":16,"homepage":"https://wordpress.org/themes/donovan/","description":"Donovan is a flexible, yet easy-to-use blogging theme with a clean and modern design. It features an elegant mobile-first design, three different blog layouts and extensive post settings. Donovan is perfect for your personal blog or for any content-focused website.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Yosemite Lite","slug":"yosemite-lite","version":"1.2.1","preview_url":"https://wp-themes.com/yosemite-lite/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/yosemite-lite/screenshot.jpg?ver=1.2.1","rating":60,"num_ratings":2,"homepage":"https://wordpress.org/themes/yosemite-lite/","description":"Yosemite is a beautiful WordPress blog theme for personal blogs. Yosemite has a modern, clean and elegant look and lots of customization for bloggers. Built on the latest technology of WordPress, Yosemite is lightweight, fast and optimized for all mobile phones.","requires":false,"requires_php":false,"wporg":true},{"name":"Justread","slug":"justread","version":"1.3.0","preview_url":"https://wp-themes.com/justread/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/justread/screenshot.jpg?ver=1.3.0","rating":100,"num_ratings":5,"homepage":"https://wordpress.org/themes/justread/","description":"Justread is a clean and modern WordPress theme that focuses on reading experience. Justread has a grid layout with single column content. The theme uses system fonts and SVG for fast loading. Enjoy reading long content with comfortability.","requires":false,"requires_php":"5.6","wporg":true},{"name":"Floral Lite","slug":"floral-lite","version":"1.4","preview_url":"https://wp-themes.com/floral-lite/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/floral-lite/screenshot.jpg?ver=1.4","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/floral-lite/","description":"Floral is a beautiful WordPress blog theme for personal blogs. Floral has a modern, clean and elegant look and lots of customization for bloggers. Built on the latest technology of WordPress, Floral is lightweight, fast and optimized for all mobile phones.","requires":"4.5","requires_php":"5.6","wporg":true},{"name":"EightyDays Lite","slug":"eightydays-lite","version":"2.2.7","preview_url":"https://wp-themes.com/eightydays-lite/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"http://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/eightydays-lite/screenshot.png?ver=2.2.7","rating":90,"num_ratings":4,"homepage":"https://wordpress.org/themes/eightydays-lite/","description":"EightyDays is a beautiful WordPress travel theme for travel blogs or magazines. EightyDays has a modern, clean and elegant look and lots of customization for bloggers. Built on the latest technology of WordPress, EightyDays is lightweight, fast and optimized for all mobile phones.","requires":false,"requires_php":false,"wporg":true},{"name":"eStar","slug":"estar","version":"1.3.4","preview_url":"https://wp-themes.com/estar/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/estar/screenshot.png?ver=1.3.4","rating":100,"num_ratings":3,"homepage":"https://wordpress.org/themes/estar/","description":"eStar is a super fast, lightweight (less than 10KB on the front end), responsive and highly customizable WordPress theme suitable for blog, personal portfolio and business websites. It works perfectly with Gutenberg and all WordPress blocks. You can also pair it with any page builder plugin like Elementor, Beaver Builder, Visual Composer, SiteOrigin, Divi, Thrive Architect, Brizy and more. eStar is written from scratch with performance, extensibility, usability and SEO in mind. The theme follows best practices, well-coded and follows the latest web standards (HTML5, SVG, JavaScript). Some of the other features: microdata integration, widget areas, sidebar layouts, custom colors, custom Google fonts, translation ready. Looking for a perfect base theme? Look no further. eStar is fast, fully customizable WordPress theme that you can use for building any kind of website like business agencies, corporate, portfolio, education, university portal, consulting, church, restaurant, medical and so on. Learn more about the theme at https://gretathemes.com/wordpress-themes/estar/","requires":false,"requires_php":"5.6","wporg":true},{"slug":"stow-2","version":"","preview_url":"https://wordpress.com/theme/stow","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/stow.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/stow","requires":"","requires_php":"","wporg":false},{"slug":"shawburn","version":"","preview_url":"https://wordpress.com/theme/shawburn","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/shawborn.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/shawburn","requires":"","requires_php":"","wporg":false},{"slug":"rivington-2","version":"","preview_url":"https://wordpress.com/theme/rivington","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/rivington.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/rivington","requires":"","requires_php":"","wporg":false},{"slug":"redhill-2","version":"","preview_url":"https://wordpress.com/theme/redhill","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/redhill.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/redhill","requires":"","requires_php":"","wporg":false},{"slug":"morden-2","version":"","preview_url":"https://wordpress.com/theme/morden","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/morden.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/morden","requires":"","requires_php":"","wporg":false},{"slug":"maywood-2","version":"","preview_url":"https://wordpress.com/theme/maywood","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/maywood.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/maywood","requires":"","requires_php":"","wporg":false},{"slug":"mayland","version":"","preview_url":"https://wordpress.com/theme/mayland","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/mmayland.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/mayland","requires":"","requires_php":"","wporg":false},{"slug":"leven-2","version":"","preview_url":"https://wordpress.com/theme/leven","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/leven.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/leven","requires":"","requires_php":"","wporg":false},{"slug":"hever-2","version":"","preview_url":"https://wordpress.com/theme/hever","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/hever.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/hever","requires":"","requires_php":"","wporg":false},{"slug":"exford-2","version":"","preview_url":"https://wordpress.com/theme/exford","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/exford.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/exford","requires":"","requires_php":"","wporg":false},{"slug":"brompton-2","version":"","preview_url":"https://wordpress.com/theme/brompton","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/brompton.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/brompton","requires":"","requires_php":"","wporg":false},{"slug":"barnsbury-2","version":"","preview_url":"https://wordpress.com/theme/barnsbury","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/Barnsbury.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/barnsbury","requires":"","requires_php":"","wporg":false},{"slug":"balasana-2","version":"","preview_url":"https://wordpress.com/theme/balasana","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/Balasana.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/balasana","requires":"","requires_php":"","wporg":false},{"slug":"alves-2","version":"","preview_url":"https://wordpress.com/theme/alves","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/Alves.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/alves","requires":"","requires_php":"","wporg":false},{"slug":"varia-2","version":"","preview_url":"https://wordpress.com/theme/varia","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/varia.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/varia","requires":"","requires_php":"","wporg":false},{"name":"Activation","slug":"activation","version":"1.2.2","preview_url":"https://wp-themes.com/activation/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/activation/screenshot.png?ver=1.2.2","rating":100,"num_ratings":1,"homepage":"https://wordpress.org/themes/activation/","description":"Activation is a Primer child theme with a colorful, fitness-focused design.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":false,"wporg":true},{"name":"Velux","slug":"velux","version":"1.1.3","preview_url":"https://wp-themes.com/velux/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/velux/screenshot.png?ver=1.1.3","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/velux/","description":"Velux is a Primer child theme with a clean, professional, and upscale design.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":"5.6.0","wporg":true},{"name":"Scribbles","slug":"scribbles","version":"1.1.2","preview_url":"https://wp-themes.com/scribbles/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/scribbles/screenshot.png?ver=1.1.2","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/scribbles/","description":"Scribbles is a Primer child theme with a playful and fun mood.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.1","requires_php":false,"wporg":true},{"name":"Ascension","slug":"ascension","version":"1.1.5","preview_url":"https://wp-themes.com/ascension/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/ascension/screenshot.png?ver=1.1.5","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/ascension/","description":"Ascension is a Primer child theme with a business-oriented design.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":"5.6.0","wporg":true},{"name":"Uptown Style","slug":"uptown-style","version":"1.1.3","preview_url":"https://wp-themes.com/uptown-style/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/uptown-style/screenshot.png?ver=1.1.3","rating":100,"num_ratings":3,"homepage":"https://wordpress.org/themes/uptown-style/","description":"Uptown Style is a Primer child theme with elegance and class.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":"5.6.0","wporg":true},{"name":"Go","slug":"go","version":"1.4.4","preview_url":"https://wp-themes.com/go/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":"GoDaddy","author_url":"https://www.godaddy.com"},"screenshot_url":"//ts.w.org/wp-content/themes/go/screenshot.png?ver=1.4.4","rating":94,"num_ratings":14,"homepage":"https://wordpress.org/themes/go/","description":"Go is an innovative, Gutenberg-first WordPress theme, hyper-focused on empowering makers to build beautifully rich websites with WordPress.","requires":false,"requires_php":"5.6","wporg":true},{"slug":"navigation-pro","version":"","preview_url":"https://my.studiopress.com/themes/navigation/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/02/navigationPro.jpg","rating":0,"num_ratings":0,"homepage":"https://my.studiopress.com/themes/navigation/","requires":"","requires_php":"","wporg":false},{"name":"Memory","slug":"memory","version":"2.0.1","preview_url":"https://wp-themes.com/memory/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/memory/screenshot.png?ver=2.0.1","rating":60,"num_ratings":1,"homepage":"https://wordpress.org/themes/memory/","description":"Clean and beautiful personal blog theme.","requires":"4.5","requires_php":"5.2","wporg":true},{"slug":"sacha","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/sacha9.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","requires":"","requires_php":"","wporg":false},{"slug":"scott-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/scott.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","requires":"","requires_php":"","wporg":false},{"slug":"katharine-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/katharine.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","requires":"","requires_php":"","wporg":false},{"slug":"joseph-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/joseph-1.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","requires":"","requires_php":"","wporg":false},{"slug":"nelson-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/nelson.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","requires":"","requires_php":"","wporg":false},{"slug":"newspack","version":"","preview_url":"https://github.com/Automattic/newspack-theme","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2019/11/newspack.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme","requires":"","requires_php":"","wporg":false},{"name":"Twenty Twenty","slug":"twentytwenty","version":"1.8","preview_url":"https://wp-themes.com/twentytwenty/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentytwenty/screenshot.png?ver=1.8","rating":88,"num_ratings":60,"homepage":"https://wordpress.org/themes/twentytwenty/","description":"Our default theme for 2020 is designed to take full advantage of the flexibility of the block editor. Organizations and businesses have the ability to create dynamic landing pages with endless layouts using the group and column blocks. The centered content column and fine-tuned typography also makes it perfect for traditional blogs. Complete editor styles give you a good idea of what your content will look like, even before you publish. You can give your site a personal touch by changing the background colors and the accent color in the Customizer. The colors of all elements on your site are automatically calculated based on the colors you pick, ensuring a high, accessible color contrast for your visitors.","requires":"4.7","requires_php":"5.2.4","wporg":true},{"name":"Primer","slug":"primer","version":"1.8.9","preview_url":"https://wp-themes.com/primer/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/primer/screenshot.png?ver=1.8.9","rating":90,"num_ratings":15,"homepage":"https://wordpress.org/themes/primer/","description":"Primer is a powerful theme that brings clarity to your content in a fresh design.","requires":false,"requires_php":false,"wporg":true},{"slug":"essence-pro-theme","version":"","preview_url":"https://my.studiopress.com/themes/essence/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2019/07/cropped-Essence-Pro.png","rating":0,"num_ratings":0,"homepage":"https://my.studiopress.com/themes/essence/","requires":"","requires_php":"","wporg":false},{"slug":"genesis-theme-framework","version":"","preview_url":"https://my.studiopress.com/themes/genesis/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2019/07/cropped-Genesis.png","rating":0,"num_ratings":0,"homepage":"https://my.studiopress.com/themes/genesis/","requires":"","requires_php":"","wporg":false},{"name":"Twenty Fourteen","slug":"twentyfourteen","version":"3.2","preview_url":"https://wp-themes.com/twentyfourteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyfourteen/screenshot.png?ver=3.2","rating":88,"num_ratings":93,"homepage":"https://wordpress.org/themes/twentyfourteen/","description":"In 2014, our default theme lets you create a responsive magazine website with a sleek, modern design. Feature your favorite homepage content in either a grid or a slider. Use the three widget areas to customize your website, and change your content's layout with a full-width page template and a contributor page to show off your authors. Creating a magazine website with WordPress has never been easier.","requires":false,"requires_php":"5.2.4","wporg":true},{"name":"Twenty Thirteen","slug":"twentythirteen","version":"3.4","preview_url":"https://wp-themes.com/twentythirteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentythirteen/screenshot.png?ver=3.4","rating":82,"num_ratings":62,"homepage":"https://wordpress.org/themes/twentythirteen/","description":"The 2013 theme for WordPress takes us back to the blog, featuring a full range of post formats, each displayed beautifully in their own unique way. Design details abound, starting with a vibrant color scheme and matching header images, beautiful typography and icons, and a flexible layout that looks great on any device, big or small.","requires":"3.6","requires_php":"5.2.4","wporg":true},{"name":"Twenty Eleven","slug":"twentyeleven","version":"3.9","preview_url":"https://wp-themes.com/twentyeleven/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyeleven/screenshot.png?ver=3.9","rating":92,"num_ratings":49,"homepage":"https://wordpress.org/themes/twentyeleven/","description":"The 2011 theme for WordPress is sophisticated, lightweight, and adaptable. Make it yours with a custom menu, header image, and background -- then go further with available theme options for light or dark color scheme, custom link colors, and three layout choices. Twenty Eleven comes equipped with a Showcase page template that transforms your front page into a showcase to show off your best content, widget support galore (sidebar, three footer areas, and a Showcase page widget area), and a custom \"Ephemera\" widget to display your Aside, Link, Quote, or Status posts. Included are styles for print and for the admin editor, support for featured images (as custom header images on posts and pages and as large images on featured \"sticky\" posts), and special styles for six different post formats.","requires":false,"requires_php":"5.2.4","wporg":true},{"name":"Twenty Ten","slug":"twentyten","version":"3.5","preview_url":"https://wp-themes.com/twentyten/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyten/screenshot.png?ver=3.5","rating":94,"num_ratings":50,"homepage":"https://wordpress.org/themes/twentyten/","description":"The 2010 theme for WordPress is stylish, customizable, simple, and readable -- make it yours with a custom menu, header image, and background. Twenty Ten supports six widgetized areas (two in the sidebar, four in the footer) and featured images (thumbnails for gallery posts and custom header images for posts and pages). It includes stylesheets for print and the admin Visual Editor, special styles for posts in the \"Asides\" and \"Gallery\" categories, and has an optional one-column page template that removes the sidebar.","requires":"3.0","requires_php":"5.2.4","wporg":true},{"name":"Zakra","slug":"zakra","version":"2.0.3","preview_url":"https://wp-themes.com/zakra/","author":{"user_nicename":"themegrill","profile":"https://profiles.wordpress.org/themegrill","avatar":"https://secure.gravatar.com/avatar/fa3cda768036cc3983458ed23394a43d?s=96&d=monsterid&r=g","display_name":"ThemeGrill","author":"ThemeGrill","author_url":"https://themegrill.com"},"screenshot_url":"//ts.w.org/wp-content/themes/zakra/screenshot.jpg?ver=2.0.3","rating":100,"num_ratings":474,"homepage":"https://wordpress.org/themes/zakra/","description":"Zakra is flexible, fast, lightweight and modern multipurpose theme that comes with many starter free sites (currently 10+ free starter sites and more will be added later) that you can use to make your site beautiful and professional. Check all the starter sites at https://zakratheme.com/demos. Suitable for personal blog, portfolio, WooCommerce stores, business websites and niche-based sites (like Cafe, Spa, Charity, Yoga, Wedding, Dentist, Education etc) as well. Works with Elementor plus other major page builders so you can create any layout you want. The theme is responsive, Gutenberg compatible, SEO friendly, translation ready and major WordPress plugins compatible.","requires":false,"requires_php":"5.6","wporg":true},{"name":"Neve","slug":"neve","version":"3.0.2","preview_url":"https://wp-themes.com/neve/","author":{"user_nicename":"themeisle","profile":"https://profiles.wordpress.org/themeisle","avatar":"https://secure.gravatar.com/avatar/a0ec097eaf5f30933eb00c1175d4bd55?s=96&d=monsterid&r=g","display_name":"Themeisle","author":"ThemeIsle","author_url":"https://themeisle.com"},"screenshot_url":"//ts.w.org/wp-content/themes/neve/screenshot.png?ver=3.0.2","rating":96,"num_ratings":804,"homepage":"https://wordpress.org/themes/neve/","description":"Neve is a super fast, easily customizable, multi-purpose theme. It’s perfect for blogs, small business, startups, agencies, firms, e-commerce shops (WooCommerce storefront) as well as personal portfolio sites and most types of projects. A fully AMP optimized and responsive theme, Neve will load in mere seconds and adapt perfectly on any viewing device. While it is lightweight and has a minimalist design, the theme is highly extendable, it has a highly SEO optimized code, resulting in top rankings in Google search results. Neve works perfectly with Gutenberg and the most popular page builders (Elementor, Brizy, Beaver Builder, Visual Composer, SiteOrigin, Divi). Neve is also WooCommerce ready, responsive, RTL & translation ready. Look no further. Neve is the perfect theme for you!","requires":false,"requires_php":"7.0","wporg":true},{"name":"Astra","slug":"astra","version":"3.6.9","preview_url":"https://wp-themes.com/astra/","author":{"user_nicename":"brainstormforce","profile":"https://profiles.wordpress.org/brainstormforce","avatar":"https://secure.gravatar.com/avatar/9f4255d653745eaa037105cd5eab2295?s=96&d=monsterid&r=g","display_name":"Brainstorm Force","author":"Brainstorm Force","author_url":"https://wpastra.com/about/"},"screenshot_url":"//ts.w.org/wp-content/themes/astra/screenshot.jpg?ver=3.6.9","rating":98,"num_ratings":4980,"homepage":"https://wordpress.org/themes/astra/","description":"Astra is fast, fully customizable & beautiful WordPress theme suitable for blog, personal portfolio, business website and WooCommerce storefront. It is very lightweight (less than 50KB on frontend) and offers unparalleled speed. Built with SEO in mind, Astra comes with Schema.org code integrated and is Native AMP ready so search engines will love your site. It offers special features and templates so it works perfectly with all page builders like Elementor, Beaver Builder, Visual Composer, SiteOrigin, Divi, etc. Some of the other features: # WooCommerce Ready # Responsive # RTL & Translation Ready # Extendible with premium addons # Regularly updated # Designed, Developed, Maintained & Supported by Brainstorm Force. Looking for a perfect base theme? Look no further. Astra is fast, fully customizable and WooCommerce ready theme that you can use for building any kind of website!","requires":"5.3","requires_php":"5.3","wporg":true},{"name":"Twenty Twelve","slug":"twentytwelve","version":"3.5","preview_url":"https://wp-themes.com/twentytwelve/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentytwelve/screenshot.png?ver=3.5","rating":92,"num_ratings":155,"homepage":"https://wordpress.org/themes/twentytwelve/","description":"The 2012 theme for WordPress is a fully responsive theme that looks great on any device. Features include a front page template with its own widgets, an optional display font, styling for post formats on both index and single views, and an optional no-sidebar page template. Make it yours with a custom menu, header image, and background.","requires":"3.5","requires_php":"5.2.4","wporg":true},{"name":"Twenty Nineteen","slug":"twentynineteen","version":"2.1","preview_url":"https://wp-themes.com/twentynineteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentynineteen/screenshot.png?ver=2.1","rating":74,"num_ratings":59,"homepage":"https://wordpress.org/themes/twentynineteen/","description":"Our 2019 default theme is designed to show off the power of the block editor. It features custom styles for all the default blocks, and is built so that what you see in the editor looks like what you'll see on your website. Twenty Nineteen is designed to be adaptable to a wide range of websites, whether you’re running a photo blog, launching a new business, or supporting a non-profit. Featuring ample whitespace and modern sans-serif headlines paired with classic serif body text, it's built to be beautiful on all screen sizes.","requires":"4.9.6","requires_php":"5.2.4","wporg":true},{"name":"Twenty Seventeen","slug":"twentyseventeen","version":"2.8","preview_url":"https://wp-themes.com/twentyseventeen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyseventeen/screenshot.png?ver=2.8","rating":88,"num_ratings":114,"homepage":"https://wordpress.org/themes/twentyseventeen/","description":"Twenty Seventeen brings your site to life with header video and immersive featured images. With a focus on business sites, it features multiple sections on the front page as well as widgets, navigation and social menus, a logo, and more. Personalize its asymmetrical grid with a custom color scheme and showcase your multimedia content with post formats. Our default theme for 2017 works great in many languages, for any abilities, and on any device.","requires":"4.7","requires_php":"5.2.4","wporg":true},{"name":"Twenty Sixteen","slug":"twentysixteen","version":"2.5","preview_url":"https://wp-themes.com/twentysixteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentysixteen/screenshot.png?ver=2.5","rating":82,"num_ratings":79,"homepage":"https://wordpress.org/themes/twentysixteen/","description":"Twenty Sixteen is a modernized take on an ever-popular WordPress layout — the horizontal masthead with an optional right sidebar that works perfectly for blogs and websites. It has custom color options with beautiful default color schemes, a harmonious fluid grid using a mobile-first approach, and impeccable polish in every detail. Twenty Sixteen will make your WordPress look beautiful everywhere.","requires":"4.4","requires_php":"5.2.4","wporg":true},{"name":"Twenty Fifteen","slug":"twentyfifteen","version":"3.0","preview_url":"https://wp-themes.com/twentyfifteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyfifteen/screenshot.png?ver=3.0","rating":88,"num_ratings":50,"homepage":"https://wordpress.org/themes/twentyfifteen/","description":"Our 2015 default theme is clean, blog-focused, and designed for clarity. Twenty Fifteen's simple, straightforward typography is readable on a wide variety of screen sizes, and suitable for multiple languages. We designed it using a mobile-first approach, meaning your content takes center-stage, regardless of whether your visitors arrive by smartphone, tablet, laptop, or desktop computer.","requires":false,"requires_php":"5.2.4","wporg":true}] \ No newline at end of file +[{"name":"Sydney","slug":"sydney","version":"1.79","preview_url":"https://wp-themes.com/sydney/","author":{"user_nicename":"athemes","profile":"https://profiles.wordpress.org/athemes","avatar":"https://secure.gravatar.com/avatar/0fe6c4dee6e201e81783d8a0ee12d83b?s=96&d=monsterid&r=g","display_name":"athemes","author":"aThemes","author_url":"https://athemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/sydney/screenshot.png?ver=1.79","rating":98,"num_ratings":497,"homepage":"https://wordpress.org/themes/sydney/","description":"Sydney is a powerful business theme that provides a fast way for companies or freelancers to create an awesome online presence. As well as being fully compatible with Elementor, Sydney brings plenty of customization possibilities like access to all Google Fonts, full color control, layout control, logo upload, full screen slider, header image, sticky navigation and much more. Also, Sydney provides all the construction blocks you need to rapidly create an engaging front page. Looking for a quick start with Sydney? With just a few clicks, you can import one of our existing demos (https://athemes.com/sydney-demos/)","requires":false,"requires_php":"5.6","wporg":true},{"name":"Really Simple","slug":"really-simple","version":"1.0.7","preview_url":"https://wp-themes.com/really-simple/","author":{"user_nicename":"flauberthenriques","profile":"https://profiles.wordpress.org/flauberthenriques","avatar":"https://secure.gravatar.com/avatar/d524eb0811fa44be90481509b000c779?s=96&d=monsterid&r=g","display_name":"Flaubert Henriques","author":"Flaubert Henriques","author_url":"https://profiles.wordpress.org/flauberthenriques/"},"screenshot_url":"//ts.w.org/wp-content/themes/really-simple/screenshot.png?ver=1.0.7","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/really-simple/","description":"Really Simple is a theme for bloggers and writers who need a ultra light and fast theme. The theme focuses on simplicity and loading speed. Yes, Really Simple Theme is also fully AMP compatible. Check the readme.txt file and leave the sidebar perfect after WordPress 5.8 update.","requires":"5.3","requires_php":"7.0","wporg":true},{"name":"Artpop","slug":"artpop","version":"1.0.7","preview_url":"https://wp-themes.com/artpop/","author":{"user_nicename":"designlabthemes","profile":"https://profiles.wordpress.org/designlabthemes","avatar":"https://secure.gravatar.com/avatar/956873f77232371cb89d8a0d7a516354?s=96&d=monsterid&r=g","display_name":"designlabthemes","author":"Design Lab","author_url":"https://www.designlabthemes.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/artpop/screenshot.png?ver=1.0.7","rating":100,"num_ratings":1,"homepage":"https://wordpress.org/themes/artpop/","description":"Artpop is a beautiful Gutenberg-first WordPress theme, carefully designed to help you build your online brand. Unleash your creativity, Artpop takes care of the rest! Well documented and easy to use even for WordPress beginners, Artpop is perfect for a blog, personal portfolio, small business website, and WooCommerce storefront. Easily set your logo, change colors, and create awesome layouts to give your website a truly unique look.","requires":"4.7","requires_php":"5.6","wporg":true},{"name":"Michelle","slug":"michelle","version":"1.2.0","preview_url":"https://wp-themes.com/michelle/","author":{"user_nicename":"webmandesign","profile":"https://profiles.wordpress.org/webmandesign","avatar":"https://secure.gravatar.com/avatar/f4a334f9f5af61b2bd22fcaadb04dd06?s=96&d=monsterid&r=g","display_name":"WebMan Design | Oliver Juhas","author":"WebMan Design","author_url":"https://www.webmandesign.eu/"},"screenshot_url":"//ts.w.org/wp-content/themes/michelle/screenshot.png?ver=1.2.0","rating":100,"num_ratings":3,"homepage":"https://wordpress.org/themes/michelle/","description":"Michelle is accessibility ready WordPress theme for creating inclusive websites easily and with fun using block editor. Useful block patterns, block styles, templates and featured posts functionality allow you to build an eyecatching website in no time. Customize site footer and error 404 page content with block editor! The theme also works with Beaver Builder, Elementor, or any other page builder. It also supports theme builders! Michelle elevates your business, eCommerce, portfolio, or blog website. Check out the demo at https://themedemos.webmandesign.eu/michelle/ and documentation at https://webmandesign.github.io/docs/michelle/","requires":"5.5","requires_php":"7.0","wporg":true},{"name":"Miniva","slug":"miniva","version":"1.6.3","preview_url":"https://wp-themes.com/miniva/","author":{"user_nicename":"tajam","profile":"https://profiles.wordpress.org/tajam","avatar":"https://secure.gravatar.com/avatar/378d4e715829ccf6f1fbe6dfef6eb539?s=96&d=monsterid&r=g","display_name":"Tajam","author":"Tajam","author_url":"https://tajam.id/"},"screenshot_url":"//ts.w.org/wp-content/themes/miniva/screenshot.png?ver=1.6.3","rating":100,"num_ratings":6,"homepage":"https://wordpress.org/themes/miniva/","description":"A fast, lightweight, and mobile-friendly WordPress theme for bloggers. Miniva is built with simplicity, accessibility and performance in mind. The clean and minimal design helps readers focus on your content. It supports AMP and several Jetpack modules including featured content, infinite scroll, content options and social menu. See the theme demo at https://tajam.id/miniva-demo/","requires":"4.5","requires_php":"5.3","wporg":true},{"name":"Iknow","slug":"iknow","version":"1.2.6","preview_url":"https://wp-themes.com/iknow/","author":{"user_nicename":"wpcalc","profile":"https://profiles.wordpress.org/wpcalc","avatar":"https://secure.gravatar.com/avatar/64ca4933fab3d5e50383f0b514acd5f6?s=96&d=monsterid&r=g","display_name":"Wow-Company","author":"Wow-Company","author_url":"https://wow-company.com"},"screenshot_url":"//ts.w.org/wp-content/themes/iknow/screenshot.png?ver=1.2.6","rating":98,"num_ratings":9,"homepage":"https://wordpress.org/themes/iknow/","description":"Iknow WordPress Theme has a minimalistic, responsive and mobile-friendly design. Easy and fast theme. The theme is perfect for creating Knowledge Base, Helpdesk, Wiki and FAQ websites. Ability to set custom icons for each category and tag. Manage the display of categories on the main page of the site. The integrated post rating system VoteUp/VoteDown. Breadcrumbs for easy site navigation. Custom widget to display the current navigation in a category and in a separate post. You can view the appearance and features of the theme on the site https://wow-company.com/wp-theme-iknow/. Documentation https://wow-company.com/faq/category/wow-themes/iknow/","requires":false,"requires_php":"5.6","wporg":true},{"name":"Kadence","slug":"kadence","version":"1.1.3","preview_url":"https://wp-themes.com/kadence/","author":{"user_nicename":"britner","profile":"https://profiles.wordpress.org/britner","avatar":"https://secure.gravatar.com/avatar/3276133b8df529e6e1e58586ab1a309e?s=96&d=monsterid&r=g","display_name":"Ben Ritner - Kadence WP","author":"Kadence WP","author_url":"https://www.kadencewp.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/kadence/screenshot.png?ver=1.1.3","rating":98,"num_ratings":135,"homepage":"https://wordpress.org/themes/kadence/","description":"Kadence Theme is a lightweight yet full featured WordPress theme for creating beautiful fast loading and accessible websites, easier than ever. It features an easy to use drag and drop header and footer builder to build any type of header in minutes. It features a full library of gorgeous starter templates that are easy to modify with our intelligent global font and color controls. With extensive integration with the most popular 3rd party plugins, you can quickly build impressive ecommerce websites, course websites, business websites, and more.","requires":"5.0","requires_php":"7.0","wporg":true},{"name":"Izo","slug":"izo","version":"1.0.12","preview_url":"https://wp-themes.com/izo/","author":{"user_nicename":"elfwp","profile":"https://profiles.wordpress.org/elfwp","avatar":"https://secure.gravatar.com/avatar/1cfedf4555fea4d8fbba2947635586ea?s=96&d=monsterid&r=g","display_name":"elfwp","author":"elfWP","author_url":"https://elfwp.com"},"screenshot_url":"//ts.w.org/wp-content/themes/izo/screenshot.png?ver=1.0.12","rating":90,"num_ratings":2,"homepage":"https://wordpress.org/themes/izo/","description":"Izo a fast, lightweight, native AMP and fully customizable multipurpose WordPress theme. Features include compatibility with many popular plugins like Elementor and other page builders, WooCommerce, WPML, LifterLMS and more. There is also full support for the new WordPress block editor. Izo is fully responsive and our users can take advantage of the many customizer options to easily change styles. Also, if you're looking for a quick start, we're offering a bunch of free starter sites, ready to easily import.","requires":false,"requires_php":"5.6","wporg":true},{"name":"OceanWP","slug":"oceanwp","version":"3.0.6","preview_url":"https://wp-themes.com/oceanwp/","author":{"user_nicename":"oceanwp","profile":"https://profiles.wordpress.org/oceanwp","avatar":"https://secure.gravatar.com/avatar/05f8d3fe2ccb6479bac14e4d40b406dd?s=96&d=monsterid&r=g","display_name":"oceanwp","author":"Nick","author_url":"https://oceanwp.org/about-me/"},"screenshot_url":"//ts.w.org/wp-content/themes/oceanwp/screenshot.png?ver=3.0.6","rating":98,"num_ratings":4918,"homepage":"https://wordpress.org/themes/oceanwp/","description":"OceanWP is the perfect theme for your project. Lightweight and highly extendable, it will enable you to create almost any type of website such a blog, portfolio, business website and WooCommerce storefront with a beautiful & professional design. Very fast, responsive, RTL & translation ready, best SEO practices, unique WooCommerce features to increase conversion and much more. You can even edit the settings on tablet & mobile so your site looks good on every device. Work with the most popular page builders as Elementor, Beaver Builder, Brizy, Visual Composer, Divi, SiteOrigin, etc... Developers will love his extensible codebase making it a joy to customize and extend. Best friend of Elementor & WooCommerce. Looking for a Multi-Purpose theme? Look no further! Check the demos to realize that it's the only theme you will ever need: https://oceanwp.org/demos/","requires":"5.3","requires_php":"7.2","wporg":true},{"name":"Twenty Twenty-One","slug":"twentytwentyone","version":"1.4","preview_url":"https://wp-themes.com/twentytwentyone/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentytwentyone/screenshot.png?ver=1.4","rating":82,"num_ratings":33,"homepage":"https://wordpress.org/themes/twentytwentyone/","description":"Twenty Twenty-One is a blank canvas for your ideas and it makes the block editor your best brush. With new block patterns, which allow you to create a beautiful layout in a matter of seconds, this theme’s soft colors and eye-catching — yet timeless — design will let your work shine. Take it for a spin! See how Twenty Twenty-One elevates your portfolio, business website, or personal blog.","requires":"5.3","requires_php":"5.6","wporg":true},{"name":"Occasio","slug":"occasio","version":"","preview_url":"https://themezee.com/themes/occasio/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/12/occasio.jpg","rating":0,"num_ratings":0,"homepage":"https://themezee.com/themes/occasio/","description":"\n\n\n

A sleek and modern Blogging & Magazine theme, carefully designed for writers using the Gutenberg Block Editor.

\n","requires":"","requires_php":"","wporg":false},{"name":"Tortuga","slug":"tortuga","version":"2.3.4","preview_url":"https://wp-themes.com/tortuga/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/tortuga/screenshot.jpg?ver=2.3.4","rating":96,"num_ratings":19,"homepage":"https://wordpress.org/themes/tortuga/","description":"Tortuga is a highly flexible and adventurous WordPress theme for your pirate magazine or any news related website. It supports three different post layouts, two sidebar schemes and a Magazine Homepage template based on widgets. Other highlights of Tortuga are the beautiful post slider and header widgets area. Arrr!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Treville","slug":"treville","version":"2.1.4","preview_url":"https://wp-themes.com/treville/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/treville/screenshot.jpg?ver=2.1.4","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/treville/","description":"An elegant Blogging & Magazine WordPress Theme with subtle colors and great typography. Treville supports two navigation menus, advanced post settings and a post slider with fullscreen images!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Wellington","slug":"wellington","version":"2.1.4","preview_url":"https://wp-themes.com/wellington/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/wellington/screenshot.jpg?ver=2.1.4","rating":100,"num_ratings":12,"homepage":"https://wordpress.org/themes/wellington/","description":"Wellington is a clean and simple Magazine WordPress theme with beautiful typography and subtle colors. The theme includes two different post layouts, a featured post slider and thoughtful theme settings in the Customizer.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Poseidon","slug":"poseidon","version":"2.3.4","preview_url":"https://wp-themes.com/poseidon/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/poseidon/screenshot.jpg?ver=2.3.4","rating":96,"num_ratings":16,"homepage":"https://wordpress.org/themes/poseidon/","description":"Poseidon is an elegant designed WordPress theme featuring a splendid fullscreen image slideshow. The clean typography and spacious white layout makes it great to share your stories. You can use the theme as simple blog or easily create a news website with the widget-based Magazine Homepage template.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Napoli","slug":"napoli","version":"2.2.4","preview_url":"https://wp-themes.com/napoli/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/napoli/screenshot.jpg?ver=2.2.4","rating":100,"num_ratings":4,"homepage":"https://wordpress.org/themes/napoli/","description":"Napoli is a beautiful WordPress theme perfectly suited for a food magazine. It features a great featured post slider, smooth typography and a grid-layout for posts. Bon appetit!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Mercia","slug":"mercia","version":"1.9.7","preview_url":"https://wp-themes.com/mercia/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/mercia/screenshot.jpg?ver=1.9.7","rating":100,"num_ratings":1,"homepage":"https://wordpress.org/themes/mercia/","description":"Mercia is a flexible and versatile theme perfect for lifestyle, travel, or fashion magazines. It features a modern and minimalist design with great typropaphy. Of course it works on all screen sizes. With multiple blog layouts and powerful Magazine widgets, you can easily create a stunning and dynamic news website in just a few minutes.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Maxwell","slug":"maxwell","version":"2.3.4","preview_url":"https://wp-themes.com/maxwell/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/maxwell/screenshot.jpg?ver=2.3.4","rating":100,"num_ratings":6,"homepage":"https://wordpress.org/themes/maxwell/","description":"Maxwell is a minimalistic and elegant WordPress theme featuring an ultra clean magazine layout. With a beautiful typography, various post layouts and a gorgeous featured posts slideshow Maxwell truly helps you to stand out.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Harrison","slug":"harrison","version":"1.3.4","preview_url":"https://wp-themes.com/harrison/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/harrison/screenshot.jpg?ver=1.3.4","rating":80,"num_ratings":1,"homepage":"https://wordpress.org/themes/harrison/","description":"Harrison is a highly versatile WordPress Theme and was specially designed for use with the new WordPress Block Editor. The theme supports the latest Gutenberg features and provides different blog layouts and extensive post settings. The clean and elegant design is perfect to create all kinds of websites. You should really try it!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Gridbox","slug":"gridbox","version":"2.3.4","preview_url":"https://wp-themes.com/gridbox/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/gridbox/screenshot.jpg?ver=2.3.4","rating":74,"num_ratings":6,"homepage":"https://wordpress.org/themes/gridbox/","description":"Gridbox is a clean and solid WordPress theme featuring a three-column grid-layout for posts. The theme works out of the box and does not require any complicated setup. It is perfectly suited for a simple magazine, blog or portfolio website.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Chronus","slug":"chronus","version":"2.0.5","preview_url":"https://wp-themes.com/chronus/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/chronus/screenshot.jpg?ver=2.0.5","rating":80,"num_ratings":5,"homepage":"https://wordpress.org/themes/chronus/","description":"Chronus is a fast and lightweight WordPress Theme created for magazines, news websites and personal blogs. The Featured Content section and flexible Magazine Widgets give you the ability to highlight your most important posts on the home page. The minimalistic and responsive design focuses on your content and looks great on any screen size.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Donovan","slug":"donovan","version":"1.8.4","preview_url":"https://wp-themes.com/donovan/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/donovan/screenshot.jpg?ver=1.8.4","rating":96,"num_ratings":16,"homepage":"https://wordpress.org/themes/donovan/","description":"Donovan is a flexible, yet easy-to-use blogging theme with a clean and modern design. It features an elegant mobile-first design, three different blog layouts and extensive post settings. Donovan is perfect for your personal blog or for any content-focused website.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Yosemite Lite","slug":"yosemite-lite","version":"1.2.1","preview_url":"https://wp-themes.com/yosemite-lite/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/yosemite-lite/screenshot.jpg?ver=1.2.1","rating":60,"num_ratings":2,"homepage":"https://wordpress.org/themes/yosemite-lite/","description":"Yosemite is a beautiful WordPress blog theme for personal blogs. Yosemite has a modern, clean and elegant look and lots of customization for bloggers. Built on the latest technology of WordPress, Yosemite is lightweight, fast and optimized for all mobile phones.","requires":false,"requires_php":false,"wporg":true},{"name":"Justread","slug":"justread","version":"1.3.0","preview_url":"https://wp-themes.com/justread/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/justread/screenshot.jpg?ver=1.3.0","rating":100,"num_ratings":5,"homepage":"https://wordpress.org/themes/justread/","description":"Justread is a clean and modern WordPress theme that focuses on reading experience. Justread has a grid layout with single column content. The theme uses system fonts and SVG for fast loading. Enjoy reading long content with comfortability.","requires":false,"requires_php":"5.6","wporg":true},{"name":"Floral Lite","slug":"floral-lite","version":"1.4","preview_url":"https://wp-themes.com/floral-lite/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/floral-lite/screenshot.jpg?ver=1.4","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/floral-lite/","description":"Floral is a beautiful WordPress blog theme for personal blogs. Floral has a modern, clean and elegant look and lots of customization for bloggers. Built on the latest technology of WordPress, Floral is lightweight, fast and optimized for all mobile phones.","requires":"4.5","requires_php":"5.6","wporg":true},{"name":"EightyDays Lite","slug":"eightydays-lite","version":"2.2.7","preview_url":"https://wp-themes.com/eightydays-lite/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"http://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/eightydays-lite/screenshot.png?ver=2.2.7","rating":90,"num_ratings":4,"homepage":"https://wordpress.org/themes/eightydays-lite/","description":"EightyDays is a beautiful WordPress travel theme for travel blogs or magazines. EightyDays has a modern, clean and elegant look and lots of customization for bloggers. Built on the latest technology of WordPress, EightyDays is lightweight, fast and optimized for all mobile phones.","requires":false,"requires_php":false,"wporg":true},{"name":"eStar","slug":"estar","version":"1.3.4","preview_url":"https://wp-themes.com/estar/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/estar/screenshot.png?ver=1.3.4","rating":100,"num_ratings":3,"homepage":"https://wordpress.org/themes/estar/","description":"eStar is a super fast, lightweight (less than 10KB on the front end), responsive and highly customizable WordPress theme suitable for blog, personal portfolio and business websites. It works perfectly with Gutenberg and all WordPress blocks. You can also pair it with any page builder plugin like Elementor, Beaver Builder, Visual Composer, SiteOrigin, Divi, Thrive Architect, Brizy and more. eStar is written from scratch with performance, extensibility, usability and SEO in mind. The theme follows best practices, well-coded and follows the latest web standards (HTML5, SVG, JavaScript). Some of the other features: microdata integration, widget areas, sidebar layouts, custom colors, custom Google fonts, translation ready. Looking for a perfect base theme? Look no further. eStar is fast, fully customizable WordPress theme that you can use for building any kind of website like business agencies, corporate, portfolio, education, university portal, consulting, church, restaurant, medical and so on. Learn more about the theme at https://gretathemes.com/wordpress-themes/estar/","requires":false,"requires_php":"5.6","wporg":true},{"name":"Stow","slug":"stow-2","version":"","preview_url":"https://wordpress.com/theme/stow","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/stow.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/stow","description":"\n\n\n

A bold and clean theme with lots of space for large images, it’s the ideal choice for creating an online presence for your business. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Shawburn","slug":"shawburn","version":"","preview_url":"https://wordpress.com/theme/shawburn","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/shawborn.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/shawburn","description":"\n\n\n

Shawburn is the ideal choice for creating an online presence for your business. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Rivington","slug":"rivington-2","version":"","preview_url":"https://wordpress.com/theme/rivington","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/rivington.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/rivington","description":"\n\n\n

Rivington was designed as a website template for realtors. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Redhill","slug":"redhill-2","version":"","preview_url":"https://wordpress.com/theme/redhill","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/redhill.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/redhill","description":"\n\n\n

Redhill is a simple theme with clean typography, created with entrepreneurs and small business owners in mind. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Morden","slug":"morden-2","version":"","preview_url":"https://wordpress.com/theme/morden","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/morden.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/morden","description":"\n\n\n

Morden is a functional and responsive multi-purpose theme that is the perfect solution for your business’s online presence. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Maywood","slug":"maywood-2","version":"","preview_url":"https://wordpress.com/theme/maywood","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/maywood.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/maywood","description":"\n\n\n

Modern, clean, sophisticated: Make your online presence as striking and stylish as your business with Maywood. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Mayland","slug":"mayland","version":"","preview_url":"https://wordpress.com/theme/mayland","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/mmayland.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/mayland","description":"\n\n\n

Mayland is a free WordPress theme. The clean, tasteful design highlights all your writing and photography projects. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Leven","slug":"leven-2","version":"","preview_url":"https://wordpress.com/theme/leven","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/leven.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/leven","description":"\n\n\n

Leven is a colorful, typography driven theme meant to grab the attention of potential customers and market or sell products to them. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Hever","slug":"hever-2","version":"","preview_url":"https://wordpress.com/theme/hever","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/hever.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/hever","description":"\n\n\n

Hever is a fun and friendly free WordPress theme that works particularly well for creative and crafty businesses. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Exford","slug":"exford-2","version":"","preview_url":"https://wordpress.com/theme/exford","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/exford.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/exford","description":"\n\n\n

A classic typography and clean design lend a sophisticated air to your website’s content. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Brompton","slug":"brompton-2","version":"","preview_url":"https://wordpress.com/theme/brompton","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/brompton.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/brompton","description":"\n\n\n

A a simple yet powerful website theme for small-business owners and entrepreneurs. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Barnsbury","slug":"barnsbury-2","version":"","preview_url":"https://wordpress.com/theme/barnsbury","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/Barnsbury.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/barnsbury","description":"\n\n\n

Barnsbury is an earthy, friendly theme made with farming and agriculture businesses in mind — but versatile enough for a personal site, too. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Balasana","slug":"balasana-2","version":"","preview_url":"https://wordpress.com/theme/balasana","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/Balasana.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/balasana","description":"\n\n\n

Balasana is a clean and minimalist business theme designed with health and wellness-focused sites in mind. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Alves","slug":"alves-2","version":"","preview_url":"https://wordpress.com/theme/alves","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/Alves.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/alves","description":"\n\n\n

Convincing design for your charity or organization’s online presence. Highlight your actions, causes and projects, Alves is versatile enough to be your personal site too. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Varia","slug":"varia-2","version":"","preview_url":"https://wordpress.com/theme/varia","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/varia.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/varia","description":"\n\n\n

A variable-based design system for WordPress sites built with Gutenberg. Parent theme of multiple AMP compatible themes.

\n","requires":"","requires_php":"","wporg":false},{"name":"Activation","slug":"activation","version":"1.2.2","preview_url":"https://wp-themes.com/activation/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/activation/screenshot.png?ver=1.2.2","rating":100,"num_ratings":1,"homepage":"https://wordpress.org/themes/activation/","description":"Activation is a Primer child theme with a colorful, fitness-focused design.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":false,"wporg":true},{"name":"Velux","slug":"velux","version":"1.1.3","preview_url":"https://wp-themes.com/velux/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/velux/screenshot.png?ver=1.1.3","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/velux/","description":"Velux is a Primer child theme with a clean, professional, and upscale design.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":"5.6.0","wporg":true},{"name":"Scribbles","slug":"scribbles","version":"1.1.2","preview_url":"https://wp-themes.com/scribbles/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/scribbles/screenshot.png?ver=1.1.2","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/scribbles/","description":"Scribbles is a Primer child theme with a playful and fun mood.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.1","requires_php":false,"wporg":true},{"name":"Ascension","slug":"ascension","version":"1.1.5","preview_url":"https://wp-themes.com/ascension/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/ascension/screenshot.png?ver=1.1.5","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/ascension/","description":"Ascension is a Primer child theme with a business-oriented design.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":"5.6.0","wporg":true},{"name":"Uptown Style","slug":"uptown-style","version":"1.1.3","preview_url":"https://wp-themes.com/uptown-style/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/uptown-style/screenshot.png?ver=1.1.3","rating":100,"num_ratings":3,"homepage":"https://wordpress.org/themes/uptown-style/","description":"Uptown Style is a Primer child theme with elegance and class.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":"5.6.0","wporg":true},{"name":"Go","slug":"go","version":"1.4.4","preview_url":"https://wp-themes.com/go/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":"GoDaddy","author_url":"https://www.godaddy.com"},"screenshot_url":"//ts.w.org/wp-content/themes/go/screenshot.png?ver=1.4.4","rating":94,"num_ratings":14,"homepage":"https://wordpress.org/themes/go/","description":"Go is an innovative, Gutenberg-first WordPress theme, hyper-focused on empowering makers to build beautifully rich websites with WordPress.","requires":false,"requires_php":"5.6","wporg":true},{"name":"Navigation Pro","slug":"navigation-pro","version":"","preview_url":"https://my.studiopress.com/themes/navigation/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/02/navigationPro.jpg","rating":0,"num_ratings":0,"homepage":"https://my.studiopress.com/themes/navigation/","description":"\n\n\n

A Genesis framework theme that cuts through the haze with bright colors, bold images and versatile layouts to steer your site to success.

\n","requires":"","requires_php":"","wporg":false},{"name":"Memory","slug":"memory","version":"2.0.1","preview_url":"https://wp-themes.com/memory/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/memory/screenshot.png?ver=2.0.1","rating":60,"num_ratings":1,"homepage":"https://wordpress.org/themes/memory/","description":"Clean and beautiful personal blog theme.","requires":"4.5","requires_php":"5.2","wporg":true},{"name":"Sacha","slug":"sacha","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/sacha9.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","description":"\n\n\n

Sacha is a Newspack child theme. You’ll find the latest version on the Newspack release page.

\n","requires":"","requires_php":"","wporg":false},{"name":"Scott","slug":"scott-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/scott.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","description":"\n\n\n

Scott is a Newspack child theme. You’ll find the latest version on the Newspack release page.

\n","requires":"","requires_php":"","wporg":false},{"name":"Katharine","slug":"katharine-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/katharine.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","description":"\n\n\n

Katharine is a Newspack child theme. You’ll find the latest version on the Newspack release page.

\n","requires":"","requires_php":"","wporg":false},{"name":"Joseph","slug":"joseph-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/joseph-1.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","description":"\n\n\n

Joseph is a Newspack child theme. You’ll find the latest version on the Newspack release page.

\n","requires":"","requires_php":"","wporg":false},{"name":"Nelson","slug":"nelson-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/nelson.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","description":"\n\n\n

Nelson is a Newspack child theme. You’ll find the latest version on the Newspack release page.

\n","requires":"","requires_php":"","wporg":false},{"name":"Newspack","slug":"newspack","version":"","preview_url":"https://github.com/Automattic/newspack-theme","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2019/11/newspack.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme","description":"\n\n\n

The Newspack theme is a forward-looking news theme designed and developed to be highly customizable with the WordPress block editor.

\n","requires":"","requires_php":"","wporg":false},{"name":"Twenty Twenty","slug":"twentytwenty","version":"1.8","preview_url":"https://wp-themes.com/twentytwenty/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentytwenty/screenshot.png?ver=1.8","rating":88,"num_ratings":60,"homepage":"https://wordpress.org/themes/twentytwenty/","description":"Our default theme for 2020 is designed to take full advantage of the flexibility of the block editor. Organizations and businesses have the ability to create dynamic landing pages with endless layouts using the group and column blocks. The centered content column and fine-tuned typography also makes it perfect for traditional blogs. Complete editor styles give you a good idea of what your content will look like, even before you publish. You can give your site a personal touch by changing the background colors and the accent color in the Customizer. The colors of all elements on your site are automatically calculated based on the colors you pick, ensuring a high, accessible color contrast for your visitors.","requires":"4.7","requires_php":"5.2.4","wporg":true},{"name":"Primer","slug":"primer","version":"1.8.9","preview_url":"https://wp-themes.com/primer/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/primer/screenshot.png?ver=1.8.9","rating":90,"num_ratings":15,"homepage":"https://wordpress.org/themes/primer/","description":"Primer is a powerful theme that brings clarity to your content in a fresh design.","requires":false,"requires_php":false,"wporg":true},{"name":"Essence Pro","slug":"essence-pro-theme","version":"","preview_url":"https://my.studiopress.com/themes/essence/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2019/07/cropped-Essence-Pro.png","rating":0,"num_ratings":0,"homepage":"https://my.studiopress.com/themes/essence/","description":"\n\n\n

Essence Pro is a beautiful, clutter-free theme for sites in the health, wellness, and lifestyle niches.

\n","requires":"","requires_php":"","wporg":false},{"name":"Genesis Framework","slug":"genesis-theme-framework","version":"","preview_url":"https://my.studiopress.com/themes/genesis/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2019/07/cropped-Genesis.png","rating":0,"num_ratings":0,"homepage":"https://my.studiopress.com/themes/genesis/","description":"\n\n\n

The Genesis Framework empowers webmasters to quickly and easily build websites with WordPress.

\n","requires":"","requires_php":"","wporg":false},{"name":"Twenty Fourteen","slug":"twentyfourteen","version":"3.2","preview_url":"https://wp-themes.com/twentyfourteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyfourteen/screenshot.png?ver=3.2","rating":88,"num_ratings":93,"homepage":"https://wordpress.org/themes/twentyfourteen/","description":"In 2014, our default theme lets you create a responsive magazine website with a sleek, modern design. Feature your favorite homepage content in either a grid or a slider. Use the three widget areas to customize your website, and change your content's layout with a full-width page template and a contributor page to show off your authors. Creating a magazine website with WordPress has never been easier.","requires":false,"requires_php":"5.2.4","wporg":true},{"name":"Twenty Thirteen","slug":"twentythirteen","version":"3.4","preview_url":"https://wp-themes.com/twentythirteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentythirteen/screenshot.png?ver=3.4","rating":82,"num_ratings":62,"homepage":"https://wordpress.org/themes/twentythirteen/","description":"The 2013 theme for WordPress takes us back to the blog, featuring a full range of post formats, each displayed beautifully in their own unique way. Design details abound, starting with a vibrant color scheme and matching header images, beautiful typography and icons, and a flexible layout that looks great on any device, big or small.","requires":"3.6","requires_php":"5.2.4","wporg":true},{"name":"Twenty Eleven","slug":"twentyeleven","version":"3.9","preview_url":"https://wp-themes.com/twentyeleven/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyeleven/screenshot.png?ver=3.9","rating":92,"num_ratings":49,"homepage":"https://wordpress.org/themes/twentyeleven/","description":"The 2011 theme for WordPress is sophisticated, lightweight, and adaptable. Make it yours with a custom menu, header image, and background -- then go further with available theme options for light or dark color scheme, custom link colors, and three layout choices. Twenty Eleven comes equipped with a Showcase page template that transforms your front page into a showcase to show off your best content, widget support galore (sidebar, three footer areas, and a Showcase page widget area), and a custom \"Ephemera\" widget to display your Aside, Link, Quote, or Status posts. Included are styles for print and for the admin editor, support for featured images (as custom header images on posts and pages and as large images on featured \"sticky\" posts), and special styles for six different post formats.","requires":false,"requires_php":"5.2.4","wporg":true},{"name":"Twenty Ten","slug":"twentyten","version":"3.5","preview_url":"https://wp-themes.com/twentyten/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyten/screenshot.png?ver=3.5","rating":94,"num_ratings":50,"homepage":"https://wordpress.org/themes/twentyten/","description":"The 2010 theme for WordPress is stylish, customizable, simple, and readable -- make it yours with a custom menu, header image, and background. Twenty Ten supports six widgetized areas (two in the sidebar, four in the footer) and featured images (thumbnails for gallery posts and custom header images for posts and pages). It includes stylesheets for print and the admin Visual Editor, special styles for posts in the \"Asides\" and \"Gallery\" categories, and has an optional one-column page template that removes the sidebar.","requires":"3.0","requires_php":"5.2.4","wporg":true},{"name":"Zakra","slug":"zakra","version":"2.0.3","preview_url":"https://wp-themes.com/zakra/","author":{"user_nicename":"themegrill","profile":"https://profiles.wordpress.org/themegrill","avatar":"https://secure.gravatar.com/avatar/fa3cda768036cc3983458ed23394a43d?s=96&d=monsterid&r=g","display_name":"ThemeGrill","author":"ThemeGrill","author_url":"https://themegrill.com"},"screenshot_url":"//ts.w.org/wp-content/themes/zakra/screenshot.jpg?ver=2.0.3","rating":100,"num_ratings":474,"homepage":"https://wordpress.org/themes/zakra/","description":"Zakra is flexible, fast, lightweight and modern multipurpose theme that comes with many starter free sites (currently 10+ free starter sites and more will be added later) that you can use to make your site beautiful and professional. Check all the starter sites at https://zakratheme.com/demos. Suitable for personal blog, portfolio, WooCommerce stores, business websites and niche-based sites (like Cafe, Spa, Charity, Yoga, Wedding, Dentist, Education etc) as well. Works with Elementor plus other major page builders so you can create any layout you want. The theme is responsive, Gutenberg compatible, SEO friendly, translation ready and major WordPress plugins compatible.","requires":false,"requires_php":"5.6","wporg":true},{"name":"Neve","slug":"neve","version":"3.0.3","preview_url":"https://wp-themes.com/neve/","author":{"user_nicename":"themeisle","profile":"https://profiles.wordpress.org/themeisle","avatar":"https://secure.gravatar.com/avatar/a0ec097eaf5f30933eb00c1175d4bd55?s=96&d=monsterid&r=g","display_name":"Themeisle","author":"ThemeIsle","author_url":"https://themeisle.com"},"screenshot_url":"//ts.w.org/wp-content/themes/neve/screenshot.png?ver=3.0.3","rating":96,"num_ratings":806,"homepage":"https://wordpress.org/themes/neve/","description":"Neve is a super fast, easily customizable, multi-purpose theme. It’s perfect for blogs, small business, startups, agencies, firms, e-commerce shops (WooCommerce storefront) as well as personal portfolio sites and most types of projects. A fully AMP optimized and responsive theme, Neve will load in mere seconds and adapt perfectly on any viewing device. While it is lightweight and has a minimalist design, the theme is highly extendable, it has a highly SEO optimized code, resulting in top rankings in Google search results. Neve works perfectly with Gutenberg and the most popular page builders (Elementor, Brizy, Beaver Builder, Visual Composer, SiteOrigin, Divi). Neve is also WooCommerce ready, responsive, RTL & translation ready. Look no further. Neve is the perfect theme for you!","requires":false,"requires_php":"7.0","wporg":true},{"name":"Astra","slug":"astra","version":"3.6.9","preview_url":"https://wp-themes.com/astra/","author":{"user_nicename":"brainstormforce","profile":"https://profiles.wordpress.org/brainstormforce","avatar":"https://secure.gravatar.com/avatar/9f4255d653745eaa037105cd5eab2295?s=96&d=monsterid&r=g","display_name":"Brainstorm Force","author":"Brainstorm Force","author_url":"https://wpastra.com/about/"},"screenshot_url":"//ts.w.org/wp-content/themes/astra/screenshot.jpg?ver=3.6.9","rating":98,"num_ratings":4982,"homepage":"https://wordpress.org/themes/astra/","description":"Astra is fast, fully customizable & beautiful WordPress theme suitable for blog, personal portfolio, business website and WooCommerce storefront. It is very lightweight (less than 50KB on frontend) and offers unparalleled speed. Built with SEO in mind, Astra comes with Schema.org code integrated and is Native AMP ready so search engines will love your site. It offers special features and templates so it works perfectly with all page builders like Elementor, Beaver Builder, Visual Composer, SiteOrigin, Divi, etc. Some of the other features: # WooCommerce Ready # Responsive # RTL & Translation Ready # Extendible with premium addons # Regularly updated # Designed, Developed, Maintained & Supported by Brainstorm Force. Looking for a perfect base theme? Look no further. Astra is fast, fully customizable and WooCommerce ready theme that you can use for building any kind of website!","requires":"5.3","requires_php":"5.3","wporg":true},{"name":"Twenty Twelve","slug":"twentytwelve","version":"3.5","preview_url":"https://wp-themes.com/twentytwelve/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentytwelve/screenshot.png?ver=3.5","rating":92,"num_ratings":155,"homepage":"https://wordpress.org/themes/twentytwelve/","description":"The 2012 theme for WordPress is a fully responsive theme that looks great on any device. Features include a front page template with its own widgets, an optional display font, styling for post formats on both index and single views, and an optional no-sidebar page template. Make it yours with a custom menu, header image, and background.","requires":"3.5","requires_php":"5.2.4","wporg":true},{"name":"Twenty Nineteen","slug":"twentynineteen","version":"2.1","preview_url":"https://wp-themes.com/twentynineteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentynineteen/screenshot.png?ver=2.1","rating":74,"num_ratings":59,"homepage":"https://wordpress.org/themes/twentynineteen/","description":"Our 2019 default theme is designed to show off the power of the block editor. It features custom styles for all the default blocks, and is built so that what you see in the editor looks like what you'll see on your website. Twenty Nineteen is designed to be adaptable to a wide range of websites, whether you’re running a photo blog, launching a new business, or supporting a non-profit. Featuring ample whitespace and modern sans-serif headlines paired with classic serif body text, it's built to be beautiful on all screen sizes.","requires":"4.9.6","requires_php":"5.2.4","wporg":true},{"name":"Twenty Seventeen","slug":"twentyseventeen","version":"2.8","preview_url":"https://wp-themes.com/twentyseventeen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyseventeen/screenshot.png?ver=2.8","rating":88,"num_ratings":114,"homepage":"https://wordpress.org/themes/twentyseventeen/","description":"Twenty Seventeen brings your site to life with header video and immersive featured images. With a focus on business sites, it features multiple sections on the front page as well as widgets, navigation and social menus, a logo, and more. Personalize its asymmetrical grid with a custom color scheme and showcase your multimedia content with post formats. Our default theme for 2017 works great in many languages, for any abilities, and on any device.","requires":"4.7","requires_php":"5.2.4","wporg":true},{"name":"Twenty Sixteen","slug":"twentysixteen","version":"2.5","preview_url":"https://wp-themes.com/twentysixteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentysixteen/screenshot.png?ver=2.5","rating":82,"num_ratings":79,"homepage":"https://wordpress.org/themes/twentysixteen/","description":"Twenty Sixteen is a modernized take on an ever-popular WordPress layout — the horizontal masthead with an optional right sidebar that works perfectly for blogs and websites. It has custom color options with beautiful default color schemes, a harmonious fluid grid using a mobile-first approach, and impeccable polish in every detail. Twenty Sixteen will make your WordPress look beautiful everywhere.","requires":"4.4","requires_php":"5.2.4","wporg":true},{"name":"Twenty Fifteen","slug":"twentyfifteen","version":"3.0","preview_url":"https://wp-themes.com/twentyfifteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyfifteen/screenshot.png?ver=3.0","rating":88,"num_ratings":50,"homepage":"https://wordpress.org/themes/twentyfifteen/","description":"Our 2015 default theme is clean, blog-focused, and designed for clarity. Twenty Fifteen's simple, straightforward typography is readable on a wide variety of screen sizes, and suitable for multiple languages. We designed it using a mobile-first approach, meaning your content takes center-stage, regardless of whether your visitors arrive by smartphone, tablet, laptop, or desktop computer.","requires":false,"requires_php":"5.2.4","wporg":true}] \ No newline at end of file diff --git a/src/Admin/ThemeInstallTab.php b/src/Admin/ThemeInstallTab.php index ad73f3a94db..d068c67150f 100644 --- a/src/Admin/ThemeInstallTab.php +++ b/src/Admin/ThemeInstallTab.php @@ -7,7 +7,6 @@ namespace AmpProject\AmpWP\Admin; -use AmpProject\AmpWP\Infrastructure\Conditional; use AmpProject\AmpWP\Infrastructure\Registerable; use AmpProject\AmpWP\Infrastructure\Service; @@ -17,16 +16,30 @@ * @since 2.2 * @internal */ -class ThemeInstallTab implements Conditional, Service, Registerable { +class ThemeInstallTab implements Service, Registerable { /** - * Check whether the conditional object is currently needed. + * Assets handle. * - * @return bool Whether the conditional object is needed. + * @var string */ - public static function is_needed() { + const ASSETS_HANDLE = 'amp-theme-install'; - return ( ! wp_doing_ajax() && is_admin() ); + /** + * @var array List AMP plugins. + */ + protected $themes = []; + + /** + * Fetch AMP themes data. + * + * @return void + */ + protected function set_themes() { + + $file_path = AMP__DIR__ . '/data/themes.json'; + $json_data = file_get_contents( $file_path ); + $this->themes = json_decode( $json_data, true ); } /** @@ -36,20 +49,92 @@ public static function is_needed() { */ public function register() { + $this->set_themes(); + add_filter( 'themes_api', [ $this, 'themes_api' ], 10, 3 ); + + if ( ! wp_doing_ajax() && is_admin() ) { + add_action( 'current_screen', [ $this, 'register_hooks' ] ); + } + } + + /** + * Register all hooks. + * + * @return void + */ + public function register_hooks() { + + $screen = get_current_screen(); + + if ( $screen instanceof \WP_Screen && 'theme-install' === $screen->id ) { + add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_scripts' ] ); + } + } + + /** + * Enqueue scripts and style for install theme screen. + * + * @return void + */ + public function enqueue_scripts() { + + $asset_file = AMP__DIR__ . '/assets/js/' . self::ASSETS_HANDLE . '.asset.php'; + $asset = require $asset_file; + $dependencies = $asset['dependencies']; + $version = $asset['version']; + + wp_enqueue_script( + self::ASSETS_HANDLE, + amp_get_asset_url( 'js/' . self::ASSETS_HANDLE . '.js' ), + $dependencies, + $version, + true + ); + + wp_enqueue_style( + 'amp-admin-plugin-install', + amp_get_asset_url( 'css/admin-plugin-install.css' ), + [ 'amp-icons' ], + AMP__VERSION + ); } /** * Filter the response of API call to wordpress.org for theme data. * - * @param bool|array $response List of AMP compatible theme. - * @param string $action API Action. - * @param array $args Args for plugin list. + * @param bool|object $response List of AMP compatible theme. + * @param string $action API Action. + * @param array $args Args for plugin list. * - * @return array List of AMP compatible plugins. + * @return object List of AMP compatible plugins. */ public function themes_api( $response, $action, $args ) { + $args = (array) $args; + if ( ! isset( $args['browse'] ) || 'px_enhancing' !== $args['browse'] ) { + return $response; + } + + $response = new \stdClass(); + $response->themes = []; + + $page = ( ! empty( $args['page'] ) && 0 < (int) $args['page'] ) ? (int) $args['page'] : 1; + $theme_chunks = array_chunk( (array) $this->themes, $args['per_page'] ); + $themes = ( ! empty( $theme_chunks[ $page - 1 ] ) && is_array( $theme_chunks[ $page - 1 ] ) ) ? $theme_chunks[ $page - 1 ] : []; + + if ( 'query_themes' === $action ) { + foreach ( $themes as $i => $theme ) { + $response->themes[ $i ] = (object) $theme; + } + } + + $response->info = [ + 'page' => $page, + 'pages' => count( $theme_chunks ), + 'results' => count( (array) $this->themes ), + ]; + return $response; } } diff --git a/webpack.config.js b/webpack.config.js index 43557d39829..0cda66bdcbb 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -131,6 +131,7 @@ const admin = { 'amp-validation-tooltips': './assets/src/admin/amp-validation-tooltips.js', 'amp-paired-browsing-app': './assets/src/admin/paired-browsing/app.js', 'amp-paired-browsing-client': './assets/src/admin/paired-browsing/client.js', + 'amp-theme-install': './assets/src/admin/amp-theme-install.js', }, plugins: [ ...sharedConfig.plugins, From 5cc29a6798d30dac7d480e874abd027ed8c0657a Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Tue, 7 Sep 2021 18:04:15 +0530 Subject: [PATCH 011/105] Add New tab in theme install page for PX enhanced themes --- .eslintrc | 2 +- ...admin-plugin-install.css => amp-admin.css} | 8 +- assets/src/admin/amp-theme-install.js | 14 +++ assets/src/admin/theme-install/view/theme.js | 102 ++++++++++++++++++ data/plugins.json | 2 +- data/themes.json | 2 +- src/Admin/PluginInstallTab.php | 8 +- src/Admin/ThemeInstallTab.php | 36 +++++-- webpack.config.js | 3 + 9 files changed, 162 insertions(+), 15 deletions(-) rename assets/css/src/{admin-plugin-install.css => amp-admin.css} (75%) create mode 100644 assets/src/admin/theme-install/view/theme.js diff --git a/.eslintrc b/.eslintrc index f32c46e727e..ce58cef132b 100644 --- a/.eslintrc +++ b/.eslintrc @@ -60,7 +60,7 @@ "react/no-unused-prop-types": "error", "react/self-closing-comp": "error", "import/no-unresolved": [ "error", { - "ignore": [ "jquery", "amp-block-editor-data", "amp-settings", "amp-support", "amp-block-validation" ] + "ignore": [ "jquery", "amp-block-editor-data", "amp-settings", "amp-themes", "amp-support", "amp-block-validation" ] } ], "import/order": [ "error", { "groups": [ "builtin", [ "external", "unknown" ], "internal", "parent", "sibling", "index" ] } ], "jsdoc/check-indentation": "error", diff --git a/assets/css/src/admin-plugin-install.css b/assets/css/src/amp-admin.css similarity index 75% rename from assets/css/src/admin-plugin-install.css rename to assets/css/src/amp-admin.css index 7b2f0bba3d6..f83e9145091 100644 --- a/assets/css/src/admin-plugin-install.css +++ b/assets/css/src/amp-admin.css @@ -1,4 +1,4 @@ -.plugin-card-px-message { +.extension-card-px-message { text-align: center; padding: 7px 20px; clear: both; @@ -16,3 +16,9 @@ display: inline-block; vertical-align: bottom; } + +.theme-browser .theme { + float: none; + display: inline-block; + vertical-align: top; +} diff --git a/assets/src/admin/amp-theme-install.js b/assets/src/admin/amp-theme-install.js index 5beedcd05a8..4dd2d4e0fcf 100644 --- a/assets/src/admin/amp-theme-install.js +++ b/assets/src/admin/amp-theme-install.js @@ -4,6 +4,11 @@ import domReady from '@wordpress/dom-ready'; import { __ } from '@wordpress/i18n'; +/** + * Internal dependencies + */ +import ampViewTheme from './theme-install/view/theme'; + const ampThemeInstall = { /** @@ -11,6 +16,7 @@ const ampThemeInstall = { */ init() { this.addTab(); + this.overrideViews(); }, /** @@ -32,6 +38,14 @@ const ampThemeInstall = { document.querySelector( '.filter-links' ).prepend( listItem ); }, + + /** + * Override theme view. + */ + overrideViews() { + wp.themes.view.Theme = ampViewTheme; + }, + }; domReady( () => { diff --git a/assets/src/admin/theme-install/view/theme.js b/assets/src/admin/theme-install/view/theme.js new file mode 100644 index 00000000000..853eb4e8c31 --- /dev/null +++ b/assets/src/admin/theme-install/view/theme.js @@ -0,0 +1,102 @@ +/** + * WordPress dependencies + */ +import { __, sprintf } from '@wordpress/i18n'; + +/** + * External dependencies + */ +import { AMP_THEMES, NONE_WPORG_THEMES } from 'amp-themes'; // From WP inline script. +import jQuery from 'jquery'; + +const wpThemeView = wp.themes.view.Theme; + +export default wpThemeView.extend( { + + /** + * Render theme card. + * + * @param {...any} args Render arguments. + */ + render( ...args ) { + wpThemeView.prototype.render.apply( this, args ); + + const data = this.model.toJSON(); + + if ( this.isAMPTheme( data.slug ) ) { + const messageElement = document.createElement( 'div' ); + const iconElement = document.createElement( 'span' ); + + messageElement.classList.add( 'extension-card-px-message' ); + iconElement.classList.add( 'amp-logo-icon' ); + + messageElement.append( iconElement ); + messageElement.append( ' ' ); + messageElement.append( __( 'Page Experience Enhancing', 'amp' ) ); + + this.$el.append( messageElement ); + } + + if ( ! this.isWPORGTheme( data.slug ) ) { + const siteLinkButton = document.createElement( 'a' ); + siteLinkButton.classList.add( 'button' ); + siteLinkButton.classList.add( 'button-primary' ); + siteLinkButton.innerText = __( 'Visit Site', 'amp' ); + + if ( data?.preview_url ) { + siteLinkButton.setAttribute( 'href', data.preview_url ); + } else { + siteLinkButton.setAttribute( 'href', data.homepage ); + } + + siteLinkButton.setAttribute( 'target', '_blank' ); + siteLinkButton.setAttribute( 'aria-label', sprintf( + /* translators: %s: theme name. */ + __( 'Visit site of %s theme', 'amp' ), + data.name, + ) ); + + const themeActions = jQuery( '.theme-actions', this.$el ); + themeActions.html( '' ); + themeActions.append( siteLinkButton ); + + const moreDetail = jQuery( '.more-details', this.$el ); + moreDetail.text( __( 'Visit site', 'amp' ) ); + } + }, + + /** + * Prevent the preview of none WordPress org theme and redirect to theme site. + * + * @param {...any} args Preview arguments. + */ + preview( ...args ) { + const data = this.model.toJSON(); + + if ( this.isWPORGTheme( data.slug ) ) { + wpThemeView.prototype.preview.apply( this, args ); + } else if ( data?.preview_url ) { + window.open( data.preview_url, '_blank' ); + } + }, + + /** + * Check if theme is AMP compatible or not. + * + * @param {string} slug Theme slug. + * @return {boolean} True if theme is AMP compatible, Otherwise False. + */ + isAMPTheme( slug ) { + return AMP_THEMES.includes( slug ); + }, + + /** + * Check if theme is from WordPress org or not. + * + * @param {string} slug Theme slug. + * @return {boolean} True if theme is listed in WordPress org, Otherwise False. + */ + isWPORGTheme( slug ) { + return ( ! NONE_WPORG_THEMES.includes( slug ) ); + }, +} ); diff --git a/data/plugins.json b/data/plugins.json index 2f4797e8cd4..cc42242b6a6 100644 --- a/data/plugins.json +++ b/data/plugins.json @@ -1 +1 @@ -[{"name":"Podcast Player – Your Podcasting Companion","slug":"podcast-player","version":"5.1.0","author":"vedathemes","author_profile":"https://profiles.wordpress.org/vedathemes","requires":"4.9","tested":"5.8","requires_php":"5.6","rating":98,"ratings":{"1":0,"2":1,"3":0,"4":2,"5":43},"num_ratings":46,"support_threads":8,"support_threads_resolved":6,"active_installs":8000,"downloaded":113859,"last_updated":"2021-09-06 4:16pm GMT","added":"2019-02-06","homepage":"https://vedathemes.com/podcast-player/","short_description":"Showcase your podcast only using podcasting feed url. Use custom widget, shortcode or editor block…","description":"

Podcast Player provides an easy way to show and play your podcast episodes using podcasting feed url. It is a must have plugin for your podcast website. Give your listeners an easy access to all your episodes from any page or even from all the pages of your website.

\n

Podcast Player Pro | Documentation

\n\n

Podcast player key features

\n
    \n
  • Give your listeners an easy access to your podcast episodes.
  • \n
  • Display responsive podcast player just by entering your podcast’s feed url.
  • \n
  • Fetch all required details from feed url.
  • \n
  • Option to modify fetched details of your podcast.
  • \n
  • Option to Show or Hide individual player elements.
  • \n
  • Give your listener an option to share your podcast episodes.
  • \n
  • Ajax live search episodes from the podcast.
  • \n
  • It is possible to have multiple instances of podcast player on single page.
  • \n
  • Self adjusting layout according to width of the podcast player.
  • \n
\n

Podcast player pro features

\n
    \n
  • Professionally showcase your podcast using our unified player, episode list and grid templates.
  • \n
  • Use powerful filter options to choose which episodes or seasons you want to display on your website.
  • \n
  • Make your entire podcast catalogue easily available using our ajax approximate search feature.
  • \n
  • Add an audio message within your podcast episode.
  • \n
  • Add audio mp3 to your WordPress posts and display as podcast episodes.
  • \n
  • Show or hide specific elements and customize color and fonts to personalize your podcast display
  • \n
\n

Setup Podcast Player Widget

\n

Display searchable podcast episodes list on any widget area of your website.

\n

Minimum Setup

\n
    \n
  1. After activating the plugin, visit Appearance > Widgets in admin dashboard.
  2. \n
  3. Look for ‘Podcast player’ widget in left ‘Available Widgets’ section.
  4. \n
  5. Drag the widget to any available sidebar/widget area.
  6. \n
  7. Enter feed url in the appropriate field.
  8. \n
  9. Click [Save] button.
  10. \n
\n

Advanced Setup

\n
    \n
  1. After activating the plugin, visit Appearance > Widgets in admin dashboard.
  2. \n
  3. Look for ‘Podcast player’ widget in left ‘Available Widgets’ section.
  4. \n
  5. Drag the widget to any available sidebar/widget area.
  6. \n
  7. Enter feed url in the appropriate field.
  8. \n
  9. Optionally, click on “Change podcast content” button to customize feed’s auto fetched details.
  10. \n
  11. Optionally, click on “Show/Hide player items” button to show or hide player elements.
  12. \n
  13. Optionally, click on “Podcast player styling” button to customize player’s accent color.
  14. \n
  15. Optionally, click on “Sort & Filter” button to sort or filter podcast episodes.
  16. \n
  17. Click [Save] button.
  18. \n
\n

Setup Podcast Player Block

\n

Display searchable podcast episodes list on any post or page. Make sure you have not disabled WordPress latest block editor.

\n

Setup

\n
    \n
  1. After activating the plugin, visit any post or page’s edit screen.
  2. \n
  3. In main content area, click on ‘+’ icon to add a new block.
  4. \n
  5. Search for ‘Podcast Player’ block.
  6. \n
  7. Enter feed url in the appropriate field. A preview of your podcast player will appear.
  8. \n
  9. Click on the podcast player preview.
  10. \n
  11. Select appropriate options from the right sidebar to customize the player.
  12. \n
  13. Save or Update the post.
  14. \n
\n

Setup Podcast Player using shortcode

\n

Minimum Setup

\n
[podcastplayer feed_url ='']\n
\n
    \n
  1. feed_url – Your podcast feed url.
  2. \n
\n

Advanced Setup

\n
[podcastplayer feed_url ='' number='' podcast_menu='' cover_image_url='' hide_cover='true' hide_description='true' hide_subscribe='true' hide_search='true' hide_loadmore='true' hide_download='true' accent_color='#65b84f']Short Description [/podcastplayer]\n
\n
    \n
  1. feed_url: Your podcast feed url.
  2. \n
  3. number: Number of podcasts episodes to be displayed at a time.
  4. \n
  5. podcast_menu: Any previously created WordPress menu’s name OR ID OR slug. (optional)
  6. \n
  7. cover_image_url: Podcast’s cover image url. The image must be from your WP media library. (optional)
  8. \n
  9. header_default: (false/true) Show player header items by default
  10. \n
  11. hide_header: Hide player header items
  12. \n
  13. hide_title: (false/true) Show / Hide podcast Title in header info section
  14. \n
  15. hide_cover: (false/true) Show / Hide podcast cover image
  16. \n
  17. hide_description: (false/true) Show / Hide podcast description
  18. \n
  19. hide_subscribe: (false/true) Show / Hide podcast subscribe button.
  20. \n
  21. hide_search: (false/true) Show / Hide podcast search field.
  22. \n
  23. hide_author: (false/true) Show / Hide author/podcaster’s name.
  24. \n
  25. hide_content: (false/true) Show / Hide podcast episode’s content.
  26. \n
  27. hide_loadmore: (false/true) Show / Hide podcast load more button.
  28. \n
  29. hide_download: (false/true) Show/ Hide podcast episode download link.
  30. \n
  31. hide_social: (false/true) Show/ Hide podcast episode social sharing links.
  32. \n
  33. accent_color: Podcast player’s accent color (Color hex-code to be entered).
  34. \n
  35. sortby: Sort podcast episodes (sort_date_desc/sort_date_asc/sort_title_desc/sort_title_asc)
  36. \n
  37. filterby: Filter by any string in episode’s title
  38. \n
  39. list_default: (false/true) Display Episodes list by default on small screen
  40. \n
  41. hide_featured: (false/true) Show / Hide podcast episode featured image
  42. \n
  43. apple_sub: Apple podcast subscription link
  44. \n
  45. google_sub: Google podcast subscription link
  46. \n
  47. Short Description: Podcast short text description. (optional)
  48. \n
\n","download_link":"https://downloads.wordpress.org/plugin/podcast-player.5.1.0.zip","tags":{"feed-to-audio":"feed to audio","podcast":"podcast","podcaster":"podcaster","podcasting":"podcasting","rss-feed":"rss feed"},"donate_link":"","icons":{"1x":"https://ps.w.org/podcast-player/assets/icon-256x256.png?rev=2025683","2x":"https://ps.w.org/podcast-player/assets/icon-256x256.png?rev=2025683"},"wporg":true},{"name":"WPSSO Schema JSON-LD Markup | Google Rich Results, Rich Snippets, and Structured Data","slug":"wpsso-schema-json-ld","version":"4.18.1","author":"JS Morisset","author_profile":"https://profiles.wordpress.org/jsmoriss","requires":"5.0","tested":"5.8","requires_php":"7.0","rating":90,"ratings":{"1":5,"2":2,"3":1,"4":1,"5":55},"num_ratings":64,"support_threads":4,"support_threads_resolved":4,"active_installs":4000,"downloaded":284029,"last_updated":"2021-09-06 3:23pm GMT","added":"2016-02-14","homepage":"https://wpsso.com/extend/plugins/wpsso-schema-json-ld/","short_description":"Google Rich Results for Articles, Carousels, Events, FAQ pages, How-Tos, Local SEO, Products, Recipes, Ratings,…","description":"

Supports over 500 different Schema (aka Schema.org) types and sub-types:

\n

Google Rich Results with JSON-LD structured data for Articles, Carousels (aka Item Lists), Claim Reviews, Events, FAQ pages, How-Tos, Images, Local Business / Local SEO, Organizations, Products, Ratings, Recipes, Restaurants, Reviews, Video Objects, and much more.

\n

Reads your existing content, plugin data, and service API data:

\n

There’s no need to manually re-enter descriptions, titles, product information, and re-select images / videos like other SEO and Schema markup plugins.

\n

Provides comprehensive Schema JSON-LD markup for posts, pages, custom post types, terms (category, tags, etc.), custom taxonomies, user profile pages, search result pages, archive pages, and Accelerated Mobile Pages (AMP) pages – including image SEO, video SEO, local business, organization, publisher, person, author and co-authors, extensive e-Commerce product markup, product variations, product ratings, aggregate ratings, reviews, recipe information, event details, collection pages, profile pages, search pages, FAQ pages, item lists for Google’s Carousel Rich Results, and much more.

\n

Most complete Schema JSON-LD markup for WooCommerce products:

\n

Note that WooCommerce offers incomplete Schema markup for Google Rich Results by default. The WPSSO Core Premium plugin and this add-on provide a solution by offering complete product meta tags for Facebook / Pinterest and complete Schema product markup for Google Rich Results – including additional product images, product variations, product information (brand, color, condition, EAN, dimensions, GTIN-8/12/13/14, ISBN, material, MPN, size, SKU, volume, weight, etc), product reviews, product ratings, sale start / end dates, sale prices, pre-tax prices, VAT prices, shipping rates, shipping times, and much, much more.

\n

Fixes all Google Search Console and Schema Markup Validator (aka Google Structured Data Testing Tool) errors:

\n
    \n
  • A value for the headline field is required.
  • \n
  • A value for the image field is required.
  • \n
  • A value for the logo field is required.
  • \n
  • A value for the publisher field is required.
  • \n
  • The aggregateRating field is recommended.
  • \n
  • The brand field is recommended.
  • \n
  • The headline field is recommended.
  • \n
  • The image field is recommended.
  • \n
  • The mainEntityOfPage field is recommended.
  • \n
  • The review field is recommended.
  • \n
  • This Product is missing a global identifier (e.g. isbn, mpn or gtin8).
  • \n
  • No global identifier provided (e.g. gtin mpn isbn).
  • \n
  • Not a known valid target type for the itemReviewed property.
  • \n
  • And more…
  • \n
\n

Some Schema property values may require data from WPSSO Core Premium supported third-party plugins and service APIs.

\n

Google regularly updates and changes their Schema markup requirements – WPSSO JSON Premium customers can also open a Premium support ticket for timely assistance with any new Google testing tool errors.

\n

Users Love the WPSSO JSON Add-on

\n

★★★★★ – “Forget everything else this is the best schema plugin – Sincerely, we bought other plugins that we had to abandon due to the lack of important features, but with this [WPSSO JSON] we get all that we need – and our schema has more features than the competition!” – zuki305

\n

★★★★★ – “Tried three other plugins before this one – for our Woocommerce site, this was by far the best one. Thanks!” – EntoMarket

\n

★★★★★ – “Crazy good! This plugin is one of my favorites! JS aggressively develops and improves this suite of plugins, continuously improving and adding features – with great customer support to boot! Highly recommended to improve your SEO for all kinds of JSON schemas!” – mikegoubeaux

\n

★★★★★ – “This plugin is heaven sent. I know little about SSO and this has taken care of everything. The support makes this an even better plugin to have. Keep up the great work!” – kevanchetty

\n

WPSSO JSON Add-on Features

\n

Extends the features of the WPSSO Core plugin (required plugin).

\n

Provides accurate and comprehensive Schema JSON-LD markup for Google Rich Results (aka Rich Snippets) with Structured Data.

\n

Provides complete Schema ImageObject SEO markup with image information from the WordPress Media Library (name, alternateName, alternativeHeadline, caption, description, fileFormat, uploadDate, and more).

\n

Provides complete Schema VideoObject SEO markup with video information from WPSSO Core Premium service APIs (Facebook, Slideshare, Soundcloud, Vimeo, Wistia, YouTube) including the ’embedUrl’ and ‘contentUrl’ properties for Google.

\n

Provides Schema 1:1, 4:3, and 16:9 images for Google Rich Results (see the Google rich results search library for details).

\n

Provides Schema FAQPage and Question / Answer markup for the WPSSO FAQ Manager add-on.

\n

Includes Schema JSON-LD scripts from shortcodes and WordPress editor blocks in the Schema CreativeWork type and sub-types.

\n

Built-in support for AMP and AMP for WP plugins.

\n

Includes contributor markup for Co-Authors Plus authors and guest authors (WPSSO Core Premium plugin required).

\n

Supports additional custom product information and WooCommerce product attributes from the WPSSO Core Premium plugin:

\n
    \n
  • Product Availability
  • \n
  • Product Brand
  • \n
  • Product Color
  • \n
  • Product Condition
  • \n
  • Product Depth
  • \n
  • Product Fluid Volume
  • \n
  • Product GTIN-14
  • \n
  • Product GTIN-13 (EAN)
  • \n
  • Product GTIN-12 (UPC)
  • \n
  • Product GTIN-8
  • \n
  • Product GTIN
  • \n
  • Product ISBN
  • \n
  • Product Length
  • \n
  • Product Material
  • \n
  • Product MPN
  • \n
  • Product Price
  • \n
  • Product Size
  • \n
  • Product SKU
  • \n
  • Product Target Gender
  • \n
  • Product Type
  • \n
  • Product Weight
  • \n
  • Product Width
  • \n
\n

Provides Schema Product markup for Google price drop appearance in search results.

\n

Fixes common Google testing tool warnings like “aggregateRating field is recommended” and “review field is recommended”.

\n

Fixes Google testing tool warnings for supported WPSSO Core Premium e-commerce products, like “brand field is recommended”, “missing a global identifier”, etc.

\n

The WPSSO Schema JSON-LD Markup Standard add-on is designed to satisfy the requirements of most standard WordPress sites. If your content requires additional customization of some Schema properties for products, events, places / locations, recipes, etc., then you may want to get the WPSSO JSON Premium add-on for those additional features.

\n

[Premium] Includes additional customizable option values in the Document SSO metabox (shown based on the Schema Type selected):

\n
    \n
  • All Schema Types\n
      \n
    • Name (Title)
    • \n
    • Alternate Name
    • \n
    • Description
    • \n
    • Microdata Type URLs
    • \n
    • Same-As URLs
    • \n
    \n
  • \n
  • Creative Work Information\n
      \n
    • Is Part of URL
    • \n
    • Headline
    • \n
    • Full Text
    • \n
    • Keywords
    • \n
    • Language
    • \n
    • Family Friendly
    • \n
    • Copyright Year
    • \n
    • License URL
    • \n
    • Publisher (Org)
    • \n
    • Publisher (Person)
    • \n
    • Service Provider (Org)
    • \n
    • Service Provider (Person)
    • \n
    \n
  • \n
  • Event Information\n
      \n
    • Event Language
    • \n
    • Event Attendance
    • \n
    • Event Online URL
    • \n
    • Event Physical Venue
    • \n
    • Event Organizer (Org)
    • \n
    • Event Organizer (Person)
    • \n
    • Event Performer (Org)
    • \n
    • Event Performer (Person)
    • \n
    • Event Start (date, time, timezone)
    • \n
    • Event End (date, time, timezone)
    • \n
    • Event Offers Start (date, time, timezone)
    • \n
    • Event Offers End (date, time, timezone)
    • \n
    • Event Offers (name, price, currency, availability)
    • \n
    \n
  • \n
  • How-To\n
      \n
    • How-To Makes
    • \n
    • How-To Preparation Time
    • \n
    • How-To Total Time
    • \n
    • How-To Supplies
    • \n
    • How-To Tools
    • \n
    • How-To Steps (section name, section description, step name, direction text and image)
    • \n
    \n
  • \n
  • Job Posting Information\n
      \n
    • Job Title
    • \n
    • Hiring Organization
    • \n
    • Job Location
    • \n
    • Job Location Type
    • \n
    • Base Salary
    • \n
    • Employment Type
    • \n
    • Jpb Posting Expires
    • \n
    \n
  • \n
  • Movie Information\n
      \n
    • Cast Names
    • \n
    • Director Names
    • \n
    • Production Company
    • \n
    • Movie Runtime
    • \n
    \n
  • \n
  • Organization Information\n
      \n
    • Select an Organization
    • \n
    \n
  • \n
  • Person Information\n
      \n
    • Select a Person
    • \n
    \n
  • \n
  • Product Information (Additional)\n
      \n
    • Product Length (cm)
    • \n
    • Product Width (cm)
    • \n
    • Product Height (cm)
    • \n
    • Product Depth (cm)
    • \n
    • Product Fluid Volume (ml)
    • \n
    • Product GTIN-14
    • \n
    • Product GTIN-13 (EAN)
    • \n
    • Product GTIN-12 (UPC)
    • \n
    • Product GTIN-8
    • \n
    • Product GTIN
    • \n
    \n
  • \n
  • QA Page Information\n
      \n
    • QA Heading
    • \n
    \n
  • \n
  • Recipe Information\n
      \n
    • Recipe Cuisine
    • \n
    • Recipe Course
    • \n
    • Recipe Makes
    • \n
    • Cooking Method
    • \n
    • Preparation Time
    • \n
    • Cooking Time
    • \n
    • Total Time
    • \n
    • Recipe Ingredients
    • \n
    • Recipe Instructions
    • \n
    • Nutrition Information per Serving\n
        \n
      • Serving Size
      • \n
      • Calories
      • \n
      • Protein
      • \n
      • Fiber
      • \n
      • Carbohydrates
      • \n
      • Sugar
      • \n
      • Sodium
      • \n
      • Fat
      • \n
      • Saturated Fat
      • \n
      • Unsaturated Fat
      • \n
      • Trans Fat
      • \n
      • Cholesterol
      • \n
      \n
    • \n
    \n
  • \n
  • Review Information\n
      \n
    • Review Rating
    • \n
    • Rating Value Name
    • \n
    • Subject of the Review\n
        \n
      • Subject Webpage Type
      • \n
      • Subject Webpage URL
      • \n
      • Subject Same-As URL
      • \n
      • Subject Name
      • \n
      • Subject Description
      • \n
      • Subject Image ID or URL
      • \n
      • Claim Subject Information (for Claim Review)\n
          \n
        • Short Summary of Claim
        • \n
        • First Appearance URL
        • \n
        \n
      • \n
      • Creative Work Subject Information\n
          \n
        • C.W. Author Type
        • \n
        • C.W. Author Name
        • \n
        • C.W. Author URL
        • \n
        • C.W. Published Date
        • \n
        • C.W. Created Date
        • \n
        \n
      • \n
      • Book Subject Information\n
          \n
        • Book ISBN
        • \n
        \n
      • \n
      • Movie Subject Information\n
          \n
        • Movie Cast Names
        • \n
        • Movie Director Names
        • \n
        \n
      • \n
      • Product Subject Information\n
          \n
        • Product Brand
        • \n
        • Product Offers (name, price, currency, availability)
        • \n
        • Product SKU
        • \n
        • Product MPN
        • \n
        \n
      • \n
      • Software App Subject Information\n
          \n
        • Operating System
        • \n
        • Application Category
        • \n
        • Software App Offers (name, price, currency, availability)
        • \n
        \n
      • \n
      \n
    • \n
    \n
  • \n
  • Software Application Information\n
      \n
    • Operating System
    • \n
    • Application Category
    • \n
    \n
  • \n
\n

WPSSO Core Required

\n

WPSSO Schema JSON-LD Markup (WPSSO JSON) is an add-on for the WPSSO Core plugin.

\n","download_link":"https://downloads.wordpress.org/plugin/wpsso-schema-json-ld.4.18.1.zip","tags":{"rich-results":"rich results","rich-snippets":"rich snippets","schema-org":"schema.org","video-seo":"video seo","woocommerce":"woocommerce"},"donate_link":"","icons":{"1x":"https://ps.w.org/wpsso-schema-json-ld/assets/icon-128x128.png?rev=2480083","2x":"https://ps.w.org/wpsso-schema-json-ld/assets/icon-256x256.png?rev=2480083"},"wporg":true},{"name":"ShortPixel Image Optimizer","slug":"shortpixel-image-optimiser","version":"4.22.5","author":"ShortPixel","author_profile":"https://profiles.wordpress.org/shortpixel","requires":"4.2.0","tested":"5.8","requires_php":"5.6","rating":92,"ratings":{"1":53,"2":10,"3":8,"4":11,"5":544},"num_ratings":626,"support_threads":10,"support_threads_resolved":8,"active_installs":300000,"downloaded":6869327,"last_updated":"2021-08-31 5:54pm GMT","added":"2014-11-05","homepage":"https://shortpixel.com/","short_description":"Speed up your website & boost your SEO by compressing old & new images and PDFs. AVIF & WebP convert and optimize support.","description":"

A freemium, easy to use, comprehensive, stable and frequently updated image compression plugin supported by the friendly team that created it. 🙂

\n

Increase your website’s SEO ranking, number of visitors and ultimately your sales by optimising any image or PDF document on your website.
\nShortPixel is an easy to use, lightweight, install-and-forget-about-it image optimization plugin that can compress all your past images and PDF documents with a single click. New images are automatically resized/rescaled and optimized on the fly, in the background. It’s also compatible with any gallery, slider or ecommerce plugin.

\n

Ready for a quick DEMO? Test our plugin here.
\nOr you can create a staging copy of your site using WP Staging and test it there.

\n

Short Pixel uses minimal resources and works well with any shared, cloud, VPS or dedicated web hosting. It can optimize any image you have on your website even the images that aren’t listed in Media Library like those in galleries like NextGEN, Modula or added directly via FTP!

\n

Both lossy and lossless image compression are available for the most common image types (JPG, PNG, GIF, WebP and AVIF) plus PDF files.
\nWe also offer glossy JPEG compression which is a very high quality lossy optimization algorithm. Specially designed for photographers!
\nOptimized images mean better user experience, better PageSpeed Insights or GTmetrix results, better Google PageRank and more visitors.

\n

Make an instant image compression test of your site or compress some images to test our optimization algorithms.

\n

Why is ShortPixel the best choice when it comes to image optimization or PDF compression?

\n
    \n
  • popular plugin with over 300,000 active installations – according to WordPress
  • \n
  • compress JPG (and its variations JPEG, JPEG 2000, JPEG XR), PNG, GIF (still or animated) images and also PDF documents
  • \n
  • option to convert any JPEG, PNG or GIF (even animated ones!) to WebP and AVIF for more Google love. How to enable WebP?. What is AVIF and why is it good?.
  • \n
  • option to automatically convert PNG to JPG if that will result in smaller images. Ideal for large images in PNG format
  • \n
  • option to include the next generation images (WebP and AVIF) into the front-end pages by using the <picture> tag instead of <img>, independent from generating them through the plugin
  • \n
  • compatible with WP Retina 2x – all retina images are automatically compressed. How to benefit from Retina displays?
  • \n
  • optimize thumbnails as well as featured images. You can also select individual thumbnails to exclude from optimization
  • \n
  • ability to optimize any image on your site including images in NextGEN Gallery and any other image galleries or sliders
  • \n
  • option to scale images down, with 2 different options, which is very useful to automatically resize large images. This applies to the featured images and there is no need for additional plugins like Imsanity
  • \n
  • CMYK to RGB conversion
  • \n
  • skip already optimized images
  • \n
  • 24h stellar support (24/7) directly from developers.
  • \n
  • easily test lossy/glossy/lossless versions of the images with a single click in your Media Library
  • \n
  • great for photographers: keep or remove EXIF data from your images, compress photos with lossless option
  • \n
  • works well with both HTTPS and HTTP websites
  • \n
  • uses progressive JPEG for larger images in order to speed up the image display
  • \n
  • you can run ShortPixel plugin on multiple websites or on a multisite with a single API Key
  • \n
  • it is safe to test and use the plugin: all the original images are by default saved in a local backup that can be restored with a click, either one by one or in bulk
  • \n
  • ‘Bulk’ optimize all the existing images in Media Library or in any gallery with one click
  • \n
  • works great for eCommerce websites using WooCommerce or other plugins
  • \n
  • works great with NextGEN gallery, Foo Gallery and any other galleries and sliders
  • \n
  • compatible with WP Engine hosted websites and all the major hosting providers
  • \n
  • compatible with WPML and WPML Media plugins
  • \n
  • no file size limit
  • \n
  • integrates with Gravity Forms post_image field type optimizing the images upon upload
  • \n
  • compatible with watermarking plugins
  • \n
  • option to deactivate auto-optimizing images on upload
  • \n
  • no credits are used for the images that are optimised less that 5%
  • \n
  • direct integration with CloudFlare, either by using an API Key or a Token
  • \n
  • 30 days optimization report with all image details and overall statistics
  • \n
  • We are GDPR compliant! Read more.
  • \n
  • free optimization credits for non-profits, contact us for details
  • \n
\n

How much does it cost?
\nShortPixel comes with 100 free credits/month and additional credits can be bought for as little as $4.99 for 5,000 image credits.
\nCheck out our prices.

\n
\n

Testimonials:
\n ★★★★★ A Super Plugin works very well 62% reduction overall. robertvarns
\n ★★★★★ The secret sauce for a WordPress website. mark1mark
\n ★★★★★ A must have plugin, great support! ElColo13
\n ★★★★★ Excellent Plugin! Even Better Customer Service! scaliendo
\n ★★★★★ Great image compression, solid plugin, equally great support. matters1959
\n more testimonials

\n
\n\n

Help us spread the word by recommending ShortPixel to your friends and collect 100 lifetime monthly additional image credits for each referred active user. Make money by promoting a great plugin with our 30% commission affiliate program.

\n

Other plugins by ShortPixel

\n\n

Get in touch!

\n\n

Actions and Filters for Developers

\n

The ShortPixel Image Optimiser plugin calls the following actions and filters:

\n
do_action( 'shortpixel_image_optimised', $post_id );\n
\n

upon successful optimization;

\n
do_action(\"shortpixel_before_restore_image\", $post_id);\n
\n

before restoring an image from backup;

\n
do_action(\"shortpixel_after_restore_image\", $post_id);\n
\n

after succesful restore;

\n
apply_filters(\"shortpixel_backup_folder\", $backup_folder, $main_file_path, $sizes);\n
\n

just before returning the ShortPixel backup folder, usually /wp-content/uploads/ShortpixelBackups. The $sizes are the sizes array from metadata;

\n
apply_filters('shortpixel_image_exists', file_exists($path), $path, $post_id);\n
\n

post ID is not always set, only if it’s an image from Media Library;

\n
apply_filters('shortpixel_image_urls', $URLs, $post_id);\n
\n

filters the URLs that will be sent to optimisation, $URLs is a plain array;

\n
apply_filters('shortpixel/db/chunk_size', $chunk);\n
\n

the $chunk is the value ShortPixel chooses to use as number of selected records in one query (based on total table size), some hosts work better with a different value;

\n
apply_filters('shortpixel/backup/paths', $PATHs, $mainPath);\n
\n

filters the array of paths of the images sent for backup and can be used to exclude certain paths/images/thumbs from being backed up, based on the image path. $mainPath is the path of the main image, while $PATHs is an array with all files to be backed up (including thumbnails);

\n
apply_filters('shortpixel/settings/image_sizes', $sizes);\n
\n

filters the array ($sizes) of image sizes which can be excluded from processing (displayed in the plugin Advanced settings).

\n

In order to define custom thumbnails to be picked up by the optimization you have two options, both comma separated defines:

\n
define('SHORTPIXEL_CUSTOM_THUMB_SUFFIXES', '_tl,_tr');\n
\n

will handle custom thumbnails like image-100x100_tl.jpg;

\n
define('SHORTPIXEL_CUSTOM_THUMB_INFIXES', '-uae');\n
\n

will handle custom thumbnails like image-uae-100×100.jpg;

\n
define('SHORTPIXEL_USE_DOUBLE_WEBP_EXTENSION', true);\n
\n

will tell the plugin to create double extensions for the WebP image counterparts, for example image.jpg.webp for image.jpg;

\n
define(\"SHORTPIXEL_NOFLOCK\", true);\n
\n

don’t use flock queue, only activate this when you have flock() denied errors on your installation;

\n
define(\"SHORTPIXEL_EXPERIMENTAL_SECURICACHE\", true);\n
\n

adds timestamps to URLS, to prevent hitting the cache. Useful for persistent caches.

\n

Hide the Cloudflare settings by defining these constants in wp-config.php:

\n
define('SHORTPIXEL_CFTOKEN', 'the Cloudflare API token that has Purge Cache right');\ndefine('SHORTPIXEL_CFZONE', 'The Zone ID from the domain settings in Cloudflare');\n
\n

Hide the WSO banner in the settings by defining this constant in wp-config.php:

\n
define('SHORTPIXEL_NO_BANNER', true);\n
\n

Alternatively, you can use this filter in your theme’s functions.php file:

\n
add_filter('shortpixel/settings/no_banner', true);\n
\n","download_link":"https://downloads.wordpress.org/plugin/shortpixel-image-optimiser.4.22.5.zip","tags":{"compressor":"compressor","convert-webp":"convert webp","image-optimization":"image optimization","optimize-images":"optimize images","resize":"resize"},"donate_link":"","icons":{"1x":"https://ps.w.org/shortpixel-image-optimiser/assets/icon-128x128.png?rev=1038819","2x":"https://ps.w.org/shortpixel-image-optimiser/assets/icon-256x256.png?rev=1038819"},"wporg":true},{"name":"Theme Kit for Twenty Twenty-One & Twenty Twenty (Customization, Gutenberg Blocks, Templates) – Twentig","slug":"twentig","version":"1.3.5","author":"Twentig","author_profile":"https://profiles.wordpress.org/twentig","requires":"5.5","tested":"5.8","requires_php":"5.6","rating":100,"ratings":{"1":0,"2":0,"3":0,"4":2,"5":106},"num_ratings":108,"support_threads":33,"support_threads_resolved":30,"active_installs":10000,"downloaded":139344,"last_updated":"2021-08-10 11:02am GMT","added":"2019-05-29","homepage":"https://twentig.com","short_description":"Supercharge your WordPress theme (Twenty Twenty-One & Twenty Twenty) with customization options, enhanced Gutenberg blocks,…","description":"

The easy way to build a beautiful website.

\n

Twentig helps you customize the default WordPress theme (Twenty Twenty-One and Twenty Twenty) the way you want with Google Fonts, colors, custom layouts, and many more options.

\n

With enhanced Gutenberg blocks, pre-designed block templates, and starter websites, you’ve got everything you need to build stunning pages that look great on any device — no coding or design skills needed.

\n
\n

“Twentig is a plugin that essentially gives superpowers to the default theme.” — Justin Tadlock, WP Tavern

\n
\n

Customize the most popular WordPress theme. Your way.

\n

Twentig offers powerful features to customize the Twenty Twenty-One and Twenty Twenty themes — making it easier than ever to create your own professional website.

\n

Advanced theme customization. From post grid to sidebar to sticky header to footer layout, our plugin provides endless ways to enhance your WordPress theme. Change the look and feel of your website by customizing the fonts (Google Fonts), colors, global styles, 404 page, and more.

\n

Custom page templates. Control the look of your entire page with our page templates. Easily remove the page title, header, footer, or set a transparent header. Now you can use Gutenberg blocks to create a custom hero, landing page, coming soon page, and more.

\n

Tailored design. Twentig brings design improvements to the default WordPress theme. Our additional block settings and pre-designed block templates are specially built for it — so it’s simple to make beautiful pages with Gutenberg blocks.

\n

Start with a pre-built website.

\n

Instead of starting from scratch, you can quickly import one of Twentig’s starter websites crafted by award-winning designers.

\n

The simple way to import starter websites. Choose from a variety of starter websites and seamlessly load them in a few seconds in the Customizer. Preview and customize your theme any way you like before publishing it to your live site.

\n

Flexible import. Twentig lets you import full websites (Customizer settings, menus, widgets, and pages built with Gutenberg blocks). You can also only import what you need, be it the styling or the pages, on a fresh install or an existing website.

\n

Check out the starter websites to see the power and flexibility of Twentig.

\n

Do more with Gutenberg blocks.

\n

Twentig enhances the existing Gutenberg blocks — taking the WordPress block editor to a new level of design and creativity.

\n

Block customization made easy. We’ve added the right amount of features to the Gutenberg core blocks. So you can easily customize your blocks to fit your needs with just a few clicks.

\n

Powerful Gutenberg block features. Twentig provides alternative styles, advanced block settings, margin controls, and CSS classes. From columns style to group shape divider to typography settings, you have the best tools to customize the Gutenberg blocks and build gorgeous pages.

\n

Build your pages with ready-to-use templates.

\n

Twentig brings hundreds of pre-designed block patterns and page templates — making it easier and faster than ever to create stunning pages.

\n

Flexible block templates. Choose from a variety of versatile block patterns and page templates that you can mix and match to fit your project. Our block template library is designed to enable a wide range of uses and endless design possibilities.

\n

Professional design. Our templates are responsive and give your pages a professional look right from the start — no coding or design skills needed.

\n

Twentig features list

\n

Check out the screenshots to see how Twentig can transform your theme and the Gutenberg blocks.

\n

ADDITIONAL THEME OPTIONS

\n

Header

\n
    \n
  • Header layouts
  • \n
  • Sticky header
  • \n
  • Header width
  • \n
  • Header decoration
  • \n
  • Additional elements: search bar, social icons, button
  • \n
  • Logo width
  • \n
  • Custom logo for transparent header
  • \n
  • Menu link style
  • \n
  • Option to display the burger menu on tablet
  • \n
\n

Footer

\n
    \n
  • Footer layouts
  • \n
  • Footer widgets layout
  • \n
  • Footer width
  • \n
  • Custom copyright and remove “Powered by WordPress”
  • \n
  • Social icons
  • \n
\n

Site Layout

\n
    \n
  • Text width
  • \n
  • Wide width (Twenty Twenty-One theme)
  • \n
  • Site width to create a boxed layout site (Twenty Twenty-One theme)
  • \n
\n

Blog Posts Page

\n
    \n
  • Option to display the page title (Twenty Twenty-One theme)
  • \n
  • Blog layouts: stack, post grid, post grid card
  • \n
  • Blog sidebar (Twenty Twenty-One theme)
  • \n
  • Number of columns for post grid layouts
  • \n
  • Featured image options
  • \n
  • Blog content options
  • \n
  • Blog meta options
  • \n
  • Pagination style (Twenty Twenty-One theme)
  • \n
\n

Single Blog Post

\n
    \n
  • Featured image and post title layouts
  • \n
  • Blog sidebar (Twenty Twenty-One theme)
  • \n
  • Option to display the manual excerpt below the title
  • \n
  • Single post meta options
  • \n
  • Post navigation layout (Twenty Twenty theme)
  • \n
  • Hide comments section
  • \n
\n

Typography & Colors

\n
    \n
  • Google Fonts options (curated collection and custom Google Fonts)
  • \n
  • Google Fonts pairings and Google Fonts presets
  • \n
  • Font settings
  • \n
  • Color options
  • \n
\n

Pages

\n
    \n
  • Custom page templates: remove the page title, header, and footer, or set a transparent header
  • \n
  • Featured image and page title layouts
  • \n
\n

Custom 404 Page

\n
    \n
  • Option to assign any page as the 404 page
  • \n
\n

Additional Settings

\n
    \n
  • Minimal style for links (Twenty Twenty-One theme)
  • \n
  • Button style
  • \n
  • Separator style
  • \n
  • Social icons style (Twenty Twenty theme)
  • \n
\n

ADDITIONAL GUTENBERG BLOCK SETTINGS

\n
    \n
  • Gutenberg core blocks: top margin and bottom margin
  • \n
  • Group: shadow, border, shape divider, full height
  • \n
  • Columns: gutter, responsive layout, columns style (card, border), text alignment, stretched link
  • \n
  • Media & Text: styles (shadow, overlap), responsive layout, reverse stack order, stretched link, full height
  • \n
  • Cover: styles (shadow, inner border), stretched link, hover effect
  • \n
  • Heading: typography options, decoration
  • \n
  • Paragraph: wide width, typography options
  • \n
  • List: styles (dash, checkmark, arrow, border, no bullet, inline), typography options, spacing
  • \n
  • Image: styles (rounded, shadow, frame, border), image filter
  • \n
  • Gallery: stack variation, styles (rounded, frame), fixed width columns, image aspect ratio, gutter, responsive layout, caption size, border, image filter
  • \n
  • YouTube, Vimeo, SoundCloud, and Video blocks: style (frame)
  • \n
  • Latest Posts: styles (card, border), image aspect ratio, heading size, stretched link, text alignment
  • \n
  • Social Icons: hover effect
  • \n
  • Quote: additional styles
  • \n
  • Pullquote: additional styles
  • \n
  • Table: styles (border, inner border), vertical alignment
  • \n
  • Separator: style (short line), responsive visibility
  • \n
  • Spacer: responsive visibility
  • \n
\n

GUTENBERG TEMPLATE LIBRARY

\n

Hundreds of Gutenberg block patterns grouped by following categories:

\n
    \n
  • Columns
  • \n
  • Text Columns
  • \n
  • Text and Image
  • \n
  • Text
  • \n
  • Hero
  • \n
  • Cover
  • \n
  • Call to Action
  • \n
  • List
  • \n
  • Numbers, Stats
  • \n
  • Gallery
  • \n
  • Video, Audio
  • \n
  • Latest Posts
  • \n
  • Contact
  • \n
  • Team
  • \n
  • Testimonials
  • \n
  • Logos, Clients
  • \n
  • Pricing
  • \n
  • FAQ
  • \n
  • Events, Schedule
  • \n
\n

Dozens of pre-designed page templates grouped by following categories:

\n
    \n
  • Homepage
  • \n
  • About
  • \n
  • Services
  • \n
  • Contact
  • \n
  • Single Page
  • \n
\n

Get more

\n\n

Enjoying Twentig?

\n\n","download_link":"https://downloads.wordpress.org/plugin/twentig.1.3.5.zip","tags":{"gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","templates":"templates","theme":"theme","twenty-twenty-one":"twenty-twenty-one"},"donate_link":"https://www.paypal.com/donate?hosted_button_id=JTBTPQAFEA94E","icons":{"1x":"https://ps.w.org/twentig/assets/icon.svg?rev=2569439","2x":"https://ps.w.org/twentig/assets/icon-256x256.png?rev=2569439","svg":"https://ps.w.org/twentig/assets/icon.svg?rev=2569439"},"wporg":true},{"name":"Custom Post Type UI","slug":"custom-post-type-ui","version":"1.9.2","author":"WebDevStudios","author_profile":"https://profiles.wordpress.org/williamsba1","requires":"5.5","tested":"5.7.2","requires_php":"5.6","rating":94,"ratings":{"1":12,"2":3,"3":6,"4":9,"5":202},"num_ratings":232,"support_threads":63,"support_threads_resolved":28,"active_installs":1000000,"downloaded":8723895,"last_updated":"2021-06-17 2:40am GMT","added":"2010-02-26","homepage":"https://github.com/WebDevStudios/custom-post-type-ui/","short_description":"Admin UI for creating custom post types and custom taxonomies for WordPress","description":"

Custom Post Type UI provides an easy to use interface for registering and managing custom post types and taxonomies for your website.

\n

While CPTUI helps solve the problem of creating custom post types, displaying the data gleaned from them can be a whole new challenge. That’s why we created Custom Post Type UI Extended. View our Layouts page to see some examples that are available with Custom Post Type UI Extended.

\n

Official development of Custom Post Type UI is on GitHub, with official stable releases published on WordPress.org. The GitHub repo can be found at https://github.com/WebDevStudios/custom-post-type-ui. Please use the Support tab for potential bugs, issues, or enhancement ideas.

\n

Pluginize was launched in 2016 by WebDevStudios to promote, support, and house all of their WordPress products. Pluginize is not only creating new products for WordPress all the time, like CPTUI Extended, but also provides ongoing support and development for WordPress community favorites like CMB2 and more.

\n","download_link":"https://downloads.wordpress.org/plugin/custom-post-type-ui.zip","tags":{"cms":"cms","cpt":"cpt","custom-post-types":"custom post types","post":"post","types":"types"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=3084056","icons":{"1x":"https://ps.w.org/custom-post-type-ui/assets/icon-128x128.png?rev=2549362","2x":"https://ps.w.org/custom-post-type-ui/assets/icon-256x256.png?rev=2549362"},"wporg":true},{"name":"Flex Posts – Widget and Gutenberg Block","slug":"flex-posts","version":"1.8.1","author":"Tajam","author_profile":"https://profiles.wordpress.org/tajam","requires":"5.2","tested":"5.8","requires_php":false,"rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":17},"num_ratings":17,"support_threads":8,"support_threads_resolved":5,"active_installs":3000,"downloaded":24569,"last_updated":"2021-07-29 10:41am GMT","added":"2018-05-10","homepage":"https://tajam.id/flex-posts/","short_description":"A widget to display posts with thumbnails in various layouts. Fits nicely in any widget…","description":"

Flex Posts is a widget to display posts in various different layouts. It is useful for a news site where you need to display a lot of posts in a page.

\n

The widget is responsive so you can place it in any widget area. The widget content will adapt based on the width of its container. In a narrow area like standard sidebar, posts will be displayed vertically, but in a wider area, posts will be displayed in 2 or 3 columns depends on the container’s width.

\n

Widget Settings

\n
    \n
  • Title: Set the widget title. Leave it empty to hide the title section.
  • \n
  • Title URL: Set the title link url. Leave it empty to disable link in the title.
  • \n
  • Layout: Select a widget layout, from layout 1 to 4.
  • \n
  • Post type: Select the post type. Options include: Post, Page, custom post types if available, and any.
  • \n
  • Category: Select a category for the posts, or choose All Categories to disable this filter.
  • \n
  • Tag(s): Set a post tag (using the tag slug). You can also use comma separated value for multiple tags. Prepending a tag with a hyphen will exclude posts matching that tag. Eg, featured, -video will show posts tagged with featured but not video.
  • \n
  • Order by: Set the order in which the posts will be displayed. Options include: Newest, Oldest, Most Commented, Alphabetical, Random, Modified Date.
  • \n
  • Number of posts to show: Set the number of posts displayed.
  • \n
  • Number of posts to skip: Set the number of posts to displace or pass over.
  • \n
  • Show image on: Select in which posts the image will be displayed. Options include: All posts, First post only, or none.
  • \n
  • Image size: Select image size from registered image sizes.
  • \n
  • Show post title: Choose to show or hide the post title.
  • \n
  • Show categories: Choose to show or hide the categories.
  • \n
  • Show author: Choose to show or hide the author.
  • \n
  • Show date: Choose to show or hide the date.
  • \n
  • Show comments number: Choose to show or hide the comments number.
  • \n
  • Show excerpt: Choose to show or hide the excerpt
  • \n
  • Excerpt length: Set the number of words for the excerpt.
  • \n
  • Show read more link: Choose to show or hide the Read More link.
  • \n
  • Read more text: Set the text for the read more link. You can leave it empty to use the default text Read More.
  • \n
  • Show pagination: Choose to show or hide the pagination links.
  • \n
  • Additional class(es): Set a custom class for the widget container. You can use spaces to separate multiple classes.
  • \n
\n

Gutenberg Block

\n

Since version 1.1.0, Flex Posts also includes a gutenberg block. You can add the widget directly into the post/page content with the WP 5.0 block editor.

\n

Demo

\n

Please visit the live demo here: Flex Posts Demo

\n

Requirements

\n

This plugin has been tested and works with at least PHP 5.3 installed in your environment. But we strongly recommend you to use the latest PHP version, as using older versions may expose you to security vulnerabilities.

\n","download_link":"https://downloads.wordpress.org/plugin/flex-posts.zip","tags":{"category-posts":"category posts","grid":"grid","magazine":"magazine","news":"news","responsive":"responsive"},"donate_link":"https://tajam.id/","icons":{"1x":"https://ps.w.org/flex-posts/assets/icon-128x128.png?rev=1871802"},"wporg":true},{"name":"YARPP – Yet Another Related Posts Plugin","slug":"yet-another-related-posts-plugin","version":"5.27.4","author":"YARPP","author_profile":"https://profiles.wordpress.org/jeffparker","requires":"3.7","tested":"5.8","requires_php":"5.3","rating":94,"ratings":{"1":33,"2":2,"3":14,"4":45,"5":627},"num_ratings":721,"support_threads":26,"support_threads_resolved":12,"active_installs":100000,"downloaded":6487281,"last_updated":"2021-08-25 5:56pm GMT","added":"2008-01-02","homepage":"https://yarpp.com/","short_description":"The best WordPress plugin for displaying related posts. Simple and flexible, with a powerful proven algorithm and inbuilt caching.","description":"

Related Posts Plugin for WordPress

\n

Yet Another Related Posts Plugin (YARPP) is a professionally maintained, highly customizable, performant and feature rich plugin that displays pages, posts, and custom post types related to the current entry. YARPP introduces your visitors to other relevant content on your site — boosting visitor engagement, time on site and SEO. Related Posts can increase your pageviews up to 10%. Simply install, activate and watch your sessions and pageviews increase.

\n

Key Features

\n
    \n
  • An advanced and versatile algorithm: Using a customizable algorithm considering post titles, content, tags, categories, and custom taxonomies, YARPP finds related content from across your site
  • \n
  • Caching: Inbuilt cache makes subsequent queries super efficient and fast
  • \n
  • Custom Templates and Styles: Use a pre-built list or thumbnail template, or use the YARPP custom templating system for 100% control of how results are styles and displayed
  • \n
  • Flexible with a full range of placement options, including:\n\n
  • \n
  • Works with all languages, including those with full-width (double-byte) characters and those that don’t use spaces between words
  • \n
  • Custom post type and taxonomy support
  • \n
  • WordPress Multisite support
  • \n
  • bbPress forums support
  • \n
  • WooCommerce support
  • \n
  • Professionally maintained and supported with regular updates
  • \n
\n

YARPP Algorithm Explained

\n

\n

Contribute: Translate YARPP

\n

YARPP is available for translation directly on WordPress.org. Please check out the official Translator Handbook.

\n

Wide Support

\n

YARPP is the most popular and the highest rated Related Posts Plugin for WordPress. With your support, this plugin always strives to be the best WordPress plugin for Content Discovery and Related Posts.

\n

✔ Over 10 years of development
\n✔ Over 6 million downloads
\n✔ Translated into more than a dozen languages
\n✔ Professionally maintained and actively supported with regular updates
\n✔ Works with all languages

\n

YARPP works best with PHP 5.3 or greater, MySQL 5.6 or greater OR MariaDB 10.1 or greater, and WordPress 3.7 or greater. See the FAQ for answers to common questions.

\n","download_link":"https://downloads.wordpress.org/plugin/yet-another-related-posts-plugin.5.27.4.zip","tags":{"contextual-related-posts":"contextual related posts","posts":"posts","related-posts":"related posts","seo":"seo","similar-posts":"similar posts"},"donate_link":"https://yarpp.com","icons":{"1x":"https://ps.w.org/yet-another-related-posts-plugin/assets/icon-128x128.png?rev=2549977","2x":"https://ps.w.org/yet-another-related-posts-plugin/assets/icon-256x256.png?rev=2549977"},"wporg":true},{"name":"Superb WordPress Table (SEO Optimized Tables With Schema)","slug":"superb-tables","version":"1.0.8","author":"SuPlugins","author_profile":"https://profiles.wordpress.org/suplugins","requires":"3.0.1","tested":"5.7.2","requires_php":"5.2.4","rating":80,"ratings":{"1":0,"2":1,"3":0,"4":0,"5":2},"num_ratings":3,"support_threads":1,"support_threads_resolved":1,"active_installs":4000,"downloaded":34011,"last_updated":"2021-05-26 8:49pm GMT","added":"2019-03-05","homepage":"https://superbthemes.com/plugins/superb-tables/","short_description":"Responsive & SEO Optimized tables. Get your Google Featured Snippets. Different table designs, table shortcodes…","description":"

Responsive & SEO Optimized tables. Get your Google Featured Snippets. Different table designs, table shortcodes & lightweight code.

\n

Click here to view the demo!

\n

Features

\n
    \n
  • Table Shortcodes
  • \n
  • Multiple Color Schemes
  • \n
  • Use Themes Own Table Design
  • \n
  • Schema Markup (Micro Data)
  • \n
  • Create Unlimited Tables
  • \n
  • Create Unlimited Rows
  • \n
  • Create unlimited Columns
  • \n
  • SEO-friendly Tables With Schema markup
  • \n
  • Purple Color Scheme
  • \n
  • Black/White Color Scheme
  • \n
  • Swap around on columns & rows with drag n’ drop
  • \n
  • Delete Tables & Remove Them From Your Database
  • \n
  • Gives you a better chance to get Google Featured Snippets
  • \n
  • Friendly User Support)
  • \n
  • GDPR Compliant
  • \n
  • W3C Valid Code
  • \n
  • WYSIWYG Functionality Editor
  • \n
\n

Configuring the plugin

\n

Once you’ve installed the plugin, check the left sidebar, and you will notice the Superb Table section. Click on it, and you can now create your first table. Just click on the Add New Table button.

\n

Feel free to add as many columns and rows as you want—inserting rows and columns is extremely easy.

\n

You have a few options to make your table stand apart. First, choose one of the three color schemes: standard, purple, or black. Second, choose your table design: default or custom. Block, left, and inline-block are the floating modes for your table. Finally, enable or disable the full width of the table.

\n

Once you finish your table, name it and save it. All you have to do now is to copy the shortcode and paste wherever you want, you can for example embed it in the Gutenberg Shortcode Block! (It works in the classic WordPress editor too)

\n

Consider purchasing our premium version for $11 to unlock more features!

\n

Why use a HTML table

\n

Displaying data within a comparison table is beneficial for not only readers but also content creators. A table does a better job than long paragraphs of text, underlined phrases, and bulleted lists. It shows a lot of information side by side in a concise format. Bloggers and content creators should create tables and insert the data. There’s no need to search for breathtaking expressions, cool descriptions, or digestible lists of items. It’s just pure data, and everyone is happy with this situation. You can read our full guide on How to Add a Table to Your WordPress Website with Superb Tables.

\n

Responsive Tables

\n

We developed Superb Tables mobile friendly by taking responsiveness into account, and as a result, you can make a WordPress table responsive by using our plugin. The tables are fully responsive regardless of the number of rows and columns. The plugin works on all mobile devices and tablets (iPhone, Android etc.). The plugin works with AMP.

\n

SEO Friendly WordPress Tables With Schema Markup

\n

“Schema markup“ and “featured snippets“ are two interconnected terms that are being used by more and more bloggers, SEO practitioners, and developers. Have you noticed that Google now provides complex answers in the form of lists, tables, paragraphs, or videos directly on the results page? Those are featured snippets.

\n

Moz claims that 23% of all search results include a featured snippet—a descriptive box displayed on the search results page providing information for your query. It may include paragraphs, lists, videos, or tables. You have to consider featured snippets when choosing a table plugin—can it help Google generate a featured snippet from the data within your table?

\n

We developed Superb Tables with featured snippets in mind, and you can use the plugin worry-free. We used schema markup, which is the code that helps search engine bots generate snippets from your content, including tables. It’s a great way for affiliate websites and blogs to promote their content.

\n

You must use WordPress tables with schema markup to get featured snippets on search engines, and Superb Tables is a reliable solution in this respect.

\n

Add Tables everywhere & use them for Any Purpose

\n

You can insert the SEO optimised tables with microdata everywhere through the shortcode. For example in a popup, widgets, Gutenberg blocks, email newsletter sent from your WordPress website. You can also insert it on any post or page, even category pages, blog feed, search page and your 404 page! The plugin is made for affiliates marketers and affiliate websites, having a good SERP rank in Google and Bing is critical. When you’re looking to improve your ranking then all of your plugins must be SEO optimized, otherwise it’s gonna be hard to create monetization through ads programs such as AdSense and Amazon Associates Program.

\n

We know that business is important for any modern blog or affiliate marketing website that’s looking to make a revenue from it. Remember to use HTTPS (SSL) on your website, a CDN and lightweight stats tracking tools such as Google Analytics to better your SEO as well.

\n

Guide to creating your Superb Tables

\n
    \n
  1. In the wordpress admin panel, go to the sidebar and click ‘Superb Tables’.
  2. \n
  3. Click the green ‘Add new table’ in the top left corner
  4. \n
  5. Fill in your table data, click ‘Save’
  6. \n
  7. Click ‘Superb Tables’ in the left sidebar and copy paste the ‘Table Shortcode’
  8. \n
  9. Insert the Table Shortcode (For example [spbtbl_sc id=1] ) in a post, page, widget or in HTML.
  10. \n
\n

You’re done!

\n

Resources & Inspiration

\n
    \n
  • Auto-Expand: https://codepen.io/vsync/pen/frudD
  • \n
  • Data Table: https://codepen.io/alassetter/pen/cyrfB
  • \n
  • Table DnD: https://github.com/isocra/TableDnD/
  • \n
  • Table icon: https://www.iconfinder.com/icons/1608863/table_icon#size=256
  • \n
  • Custom confirm: https://codepen.io/Ana_Champion/pen/JRbZEL
  • \n
  • Table design inspiration: https://codepen.io/lukepeters/pen/bfFur
  • \n
  • Table design inspiration: https://codepen.io/alassetter/pen/cyrfB
  • \n
  • Table design inspiration: https://uicookies.com/wp-content/uploads/2018/05/table-responsive-v2-1000×750.jpg
  • \n
  • Table design inspiration: https://uicookies.com/wp-content/uploads/2018/05/table-responsive-v1.jpg
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/superb-tables.1.0.8.zip","tags":{"content-tables":"content tables","responsive-tables":"responsive tables","table":"table","tables":"tables"},"donate_link":"","icons":{"1x":"https://ps.w.org/superb-tables/assets/icon-256x256.png?rev=2044672","2x":"https://ps.w.org/superb-tables/assets/icon-256x256.png?rev=2044672"},"wporg":true},{"name":"Floating Button","slug":"floating-button","version":"4.3","author":"Wow-Company","author_profile":"https://profiles.wordpress.org/wpcalc","requires":"3.2","tested":"5.8","requires_php":"5.3","rating":80,"ratings":{"1":1,"2":1,"3":0,"4":0,"5":5},"num_ratings":7,"support_threads":1,"support_threads_resolved":0,"active_installs":2000,"downloaded":32546,"last_updated":"2021-07-21 5:47am GMT","added":"2018-09-08","homepage":"https://wordpress.org/plugins/floating-button/","short_description":"Easily create a custom sticky floating buttons. The Floating Button will be the effective solution for increasing the recognition of your web resource","description":"

The Floating Button is the free WordPress plugin for creating the original sticky floating actions buttons. It allows you to install on the site floating buttons with unique thematic icons. The extension serves for placing both traditional navigation bar and additional block with useful information for user.

\n

The Floating Button plugin will be the effective solution for increasing the recognition of your web resource. Its connection will bring originality and novelty to the used theme of the site. The extension helps to configure user-friendly navigation, place useful information or contact panel.

\n

Main features

\n
    \n
  • 2 submenu;
  • \n
  • more than 1500+ FontAwesome icons;
  • \n
  • any links insertion;
  • \n
  • using the tooltips to provide more information;
  • \n
  • round buttons shape;
  • \n
  • LogIn link;
  • \n
  • LogOut link;
  • \n
  • Lost password link
  • \n
\n

Floating Button can be used for:

\n
    \n
  • site navigation;
  • \n
  • additional menu;
  • \n
  • social panel;
  • \n
  • user menu;
  • \n
  • Skype menu and others;
  • \n
  • And more…
  • \n
\n

Pro version

\n

Connect the Pro-version of the plugin to gain access to more features:

\n

Preview of Pro version

\n
    \n
  • create an unlimited amount of buttons;
  • \n
  • use up to 4 floating button positions;
  • \n
  • change the form of the menu display: Circle, Rounded square, Ellipse, Square;
  • \n
  • set the color of the main button and submenu items;
  • \n
  • accompany the change in navigation behavior with the highlight when hovering the mouse cursor;
  • \n
  • use the built-in user menu, social panel and print function;
  • \n
  • set the display according to the user role and status;
  • \n
  • change the menu output depending on the language of the page;
  • \n
  • add restrictions for screens with large or small resolution;
  • \n
  • use the categories on the site, exceptions and ID to place the menu on individual pages;
  • \n
  • insert the shortcode of the panel in the specified location;
  • \n
  • And more…
  • \n
\n

Buy Pro version

\n

Use with other plugins to maximize your results

\n\n

Support

\n

Search for answers and ask your questions at support center

\n","download_link":"https://downloads.wordpress.org/plugin/floating-button.4.3.zip","tags":{"circle-menu":"circle menu","float-menu":"float menu","floating-button":"floating button","floating-menu":"floating menu","sticky-button":"sticky button"},"donate_link":"https://wow-estore.com/item/floating-button-pro/","icons":{"1x":"https://ps.w.org/floating-button/assets/icon-128x128.png?rev=2533016","2x":"https://ps.w.org/floating-button/assets/icon-256x256.png?rev=2533016"},"wporg":true},{"name":"Breadcrumb NavXT","slug":"breadcrumb-navxt","version":"6.6.0","author":"John Havlik","author_profile":"https://profiles.wordpress.org/mtekk","requires":"4.9","tested":"5.7.2","requires_php":"5.5","rating":94,"ratings":{"1":5,"2":2,"3":4,"4":7,"5":104},"num_ratings":122,"support_threads":14,"support_threads_resolved":0,"active_installs":900000,"downloaded":10113469,"last_updated":"2021-04-01 2:13am GMT","added":"2007-12-01","homepage":"http://mtekk.us/code/breadcrumb-navxt/","short_description":"Breadcrumb NavXT, the successor to the popular WordPress plugin Breadcrumb Navigation XT, was written from the ground up to be better than its ancesto …","description":"

Breadcrumb NavXT, the successor to the popular WordPress plugin Breadcrumb Navigation XT, was written from the ground up to be better than its ancestor. This plugin generates locational breadcrumb trails for your WordPress powered blog or website. These breadcrumb trails are highly customizable to suit the needs of just about any website running WordPress. The Administrative interface makes setting options easy, while a direct class access is available for theme developers and more adventurous users.

\n

PHP Requirements

\n

Breadcrumb NavXT 5.2 and newer require PHP5.3
\nBreadcrumb NavXT 5.1.1 and older require PHP5.2

\n

Features (non-exhaustive)

\n
    \n
  • RDFa format Schema.org BreadcrumbList compatible breadcrumb generation.
  • \n
  • Extensive breadcrumb customization control via a settings page with appropriate default values for most use cases.
  • \n
  • Network admin settings page for managing breadcrumb settings for all subsites with configurable global priority.
  • \n
  • Built in WordPress Widget.
  • \n
  • Extensible via OOP and provided actions and filters.
  • \n
  • WPML compatible (enhanced compatibility with WPML extensions plugin).
  • \n
  • Polylang compatible (enhanced compatibility with Polylang extensions plugin).
  • \n
  • bbPress compatible (enhanced compatibility with bbPress extensions plugin).
  • \n
  • BuddyPress compatible (enhanced compatibility with BuddyPress extensions plugin).
  • \n
\n

Translations

\n

Breadcrumb NavXT now supports WordPress.org language packs. Want to translate Breadcrumb NavXT? Visit Breadcrumb NavXT’s WordPress.org translation project.

\n","download_link":"https://downloads.wordpress.org/plugin/breadcrumb-navxt.6.6.0.zip","tags":{"breadcrumb":"breadcrumb","breadcrumbs":"breadcrumbs","menu":"menu","navigation":"navigation","trail":"trail"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=FD5XEU783BR8U&lc=US&item_name=Breadcrumb%20NavXT%20Donation¤cy_code=USD&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted","icons":{"1x":"https://ps.w.org/breadcrumb-navxt/assets/icon.svg?rev=1927103","2x":"https://ps.w.org/breadcrumb-navxt/assets/icon-256x256.png?rev=2410525","svg":"https://ps.w.org/breadcrumb-navxt/assets/icon.svg?rev=1927103"},"wporg":true},{"name":"WP Recipe Maker","slug":"wp-recipe-maker","version":"7.5.1","author":"Bootstrapped Ventures","author_profile":"https://profiles.wordpress.org/brechtvds","requires":"4.4","tested":"5.8","requires_php":"5.4","rating":100,"ratings":{"1":1,"2":0,"3":1,"4":4,"5":201},"num_ratings":207,"support_threads":26,"support_threads_resolved":21,"active_installs":50000,"downloaded":1531975,"last_updated":"2021-08-31 12:27pm GMT","added":"2016-09-07","homepage":"http://bootstrapped.ventures/wp-recipe-maker/","short_description":"The easy and user-friendly recipe plugin for everyone. Automatic JSON-LD metadata for food AND how-to recipes will improve your SEO!","description":"

WP Recipe Maker is the easy recipe plugin that everyone can use. An easy workflow allows you to add recipes to any post or page with automatic JSON-LD metadata for your recipes. This metadata will improve your SEO and get you more visitors!

\n

\n

Would you like to see the plugin in action before installing it? We have a WP Recipe Maker demo website showcasing all of the features!

\n
\n

Get the most out of this plugin!
\n Join the WP Recipe Maker Email Course and we’ll help you get started and learn all the tips and trick for using WPRM.

\n
\n

Features

\n

An overview of WP Recipe Maker features:

\n
    \n
  • Compatible with both the Classic Editor and new Gutenberg editor
  • \n
  • Includes an Elementor block and shortcode can be used in other page builders
  • \n
  • Easy workflow to add recipes to any post or page
  • \n
  • Uses schema.org/Recipe JSON-LD metadata optimised for Google Recipe search
  • \n
  • Uses schema.org/How-to JSON-LD metadata optimised for non-food recipes and instructions
  • \n
  • Supports both regular and Guided Recipes for Google metadata
  • \n
  • Google AMP compatible
  • \n
  • Integrates recipe metadata with Yoast SEO schema graph
  • \n
  • Option to disable metadata per recipe if you want to publish non-food or DIY recipes
  • \n
  • Compatible with Pinterest Rich Pins and a setting to easily opt out
  • \n
  • Outputs ItemList metadata for Recipe Roundup posts
  • \n
  • Associate ingredients with instructions to have them show up exactly where needed
  • \n
  • Keyboard accessible and AMP compatible ratings for comments
  • \n
  • Interactive print recipe page with room for ads and optional credit to your website
  • \n
  • Fallback recipe shows up when the plugin is disabled
  • \n
  • Include a recipe video in the template and metadata
  • \n
  • Add photos or videos to any step of the recipe
  • \n
  • Print recipe and jump to recipe shortcodes
  • \n
  • This plugin is fully responsive, your recipes will look good on any device
  • \n
  • Easily change the look and feel to fit your website in the Template Editor
  • \n
  • Structure your ingredients and instructions in groups (e.g. icing and cake batter)
  • \n
  • Full text search for your recipes
  • \n
  • Access your recipes through the WordPress REST API
  • \n
  • Built-in SEO check for your recipe metadata
  • \n
  • Compatible with RTL languages
  • \n
  • Import your recipes from other plugins (see below)
  • \n
\n

WP Recipe Maker Premium

\n

Looking for some more advanced functionality? We also have the WP Recipe Maker Premium add-on available with the following features:

\n
    \n
  • Use ingredient links for linking to products or other recipes
  • \n
  • Adjustable servings make it easy for your visitors
  • \n
  • Display all nutrition data in a nutrition label
  • \n
  • User Ratings allow visitors to vote without commenting
  • \n
  • Add a mobile-friendly kitchen timer to your recipes
  • \n
  • More Premium templates for a unique recipe template
  • \n
  • Create custom recipe taxonomies like price level, difficulty, …
  • \n
  • Use checkboxes for your ingredients and instructions
  • \n
\n

Even more add-ons can add the following functionality:

\n
    \n
  • Integration with a Nutrition API for automatic nutrition facts
  • \n
  • Unit Conversion to reach an international audience with a different unit system
  • \n
  • Have your users send in recipes through the Recipe Submission form
  • \n
  • Give your visitors the power of Recipe Collections for favourites, meal planning and more
  • \n
\n

Import Options

\n

Currently using another recipe plugin? No problem! You can easily migrate all your existing recipes to WP Recipe Maker if you’re using any of the following plugins:

\n
    \n
  • Tasty Recipes
  • \n
  • Create by Mediavine
  • \n
  • EasyRecipe
  • \n
  • WP Ultimate Recipe
  • \n
  • Recipe Card Blocks by WPZOOM
  • \n
  • Meal Planner Pro
  • \n
  • BigOven
  • \n
  • ZipList and Zip Recipes
  • \n
  • Yummly
  • \n
  • Yumprint Recipe Card
  • \n
  • FoodiePress
  • \n
  • Cooked
  • \n
  • Cookbook
  • \n
  • Simple Recipe Pro
  • \n
  • Purr Recipe Plugin
  • \n
  • Recipes by Simmer
  • \n
  • WordPress.com shortcode
  • \n
  • JSON-LD HTML Script
  • \n
  • Multi Rating (ratings only)
  • \n
  • (Need anything else? Just ask!)
  • \n
\n

This plugin is in active development. Feel free to contact us with any feature requests or ideas.

\n","download_link":"https://downloads.wordpress.org/plugin/wp-recipe-maker.zip","tags":{"cooking":"cooking","food":"food","ingredients":"ingredients","recipe":"Recipe","recipes":"recipes"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QG7KZMGFU325Y","icons":{"1x":"https://ps.w.org/wp-recipe-maker/assets/icon-128x128.png?rev=1491788","2x":"https://ps.w.org/wp-recipe-maker/assets/icon-256x256.png?rev=1491788"},"wporg":true},{"name":"Slim SEO – Fast & Automated WordPress SEO Plugin","slug":"slim-seo","version":"3.10.1","author":"eLightUp","author_profile":"https://profiles.wordpress.org/rilwis","requires":"4.5","tested":"5.8","requires_php":"5.6","rating":92,"ratings":{"1":1,"2":3,"3":0,"4":0,"5":26},"num_ratings":30,"support_threads":17,"support_threads_resolved":13,"active_installs":10000,"downloaded":170238,"last_updated":"2021-07-22 1:33am GMT","added":"2018-12-31","homepage":"https://wpslimseo.com","short_description":"A full-featured SEO plugin for WordPress that's lightweight, blazing fast with minimum configuration. No bloats, no ads and just works!","description":"

A Fast & Automated SEO Plugin For WordPress

\n

Currently there are many SEO plugins for WordPress in the market. But these plugins often have too many options and are very complicated for ordinary users. Access to their configuration section, you will easily get lost in a maze of explanations and options that you sometimes don’t understand. Besides, there are ads!

\n

So how can an ordinary user use an SEO plugin?

\n

SEO should be an integrated part of WordPress, where users don’t need or need very little effort to configure for SEO. The main reason is that not everyone understands the terms of SEO and how to configure them optimally.

\n

So, we made Slim SEO.

\n

Slim SEO is a full-featured SEO plugin, that’s done right! It provides a complete SEO solution for WordPress where the configuration has been done automatically. Users do not need to care about their complex and semantic options.

\n

So what does Slim SEO do?

\n

Slim SEO Features

\n

Slim SEO helps you do the following jobs automatically:

\n

1. Meta Tags

\n

The following meta tags are auto-generated and optimized for the best SEO scores.

\n\n

2. XML Sitemap

\n

Slim SEO automatically generates XML sitemap (at domain.com/sitemap.xml) to submit to search engines. With XML sitemaps, your website are indexed fast and completely.

\n

3. Breadcrumbs

\n

The plugin allows you to output a breadcrumb trail on your website easily. It automatically fetches the information from the current post and output a hierarchy for you. You can also style the breadcrumbs to match your theme style.

\n

4. Schema (Structured Data)

\n

Schema is a way that describes structured data for search engines. Based on the data provided, search engines can show the content in the search results page in a more appealing way.

\n

Slim SEO automatically adds the some structured data to the website via JSON-LD which makes your website more SEO-friendly. Not only schemas are created by the plugin, there are also meaningful connections between them. For example, an article (single post) is the main entity of the current webpage. Slim SEO does that all without any configuration.

\n

5. Auto Redirection

\n
    \n
  • Auto redirect attachment page to the attachment file URL.
  • \n
  • Auto redirect author page to the homepage if the website has only one author or the author doesn’t have any posts.
  • \n
\n

6. Open Source

\n

Slim SEO has different contributors which help make Slim SEO a quality product. Join us on Github!

\n

Who should use Slim SEO?

\n

Everyone can use Slim SEO!

\n

However, Slim SEO is perfectly suitable for users who prefer simplicity or do not like the complicated options that other SEO plugins provide. It’s also a good choice for users with little SEO knowledge and just want to use SEO plugins to automate their jobs.

\n

If you like this plugin, you might also like our other products: Meta Box and GretaThemes.

\n","download_link":"https://downloads.wordpress.org/plugin/slim-seo.3.10.1.zip","tags":{"google":"google","schema":"schema","search-engine-optimization":"search engine optimization","seo":"seo","sitemap":"sitemap"},"donate_link":"https://wpslimseo.com/pro/","icons":{"1x":"https://ps.w.org/slim-seo/assets/icon.svg?rev=2005049","svg":"https://ps.w.org/slim-seo/assets/icon.svg?rev=2005049"},"wporg":true},{"name":"Schema & Structured Data for WP & AMP","slug":"schema-and-structured-data-for-wp","version":"1.9.83.1","author":"Magazine3","author_profile":"https://profiles.wordpress.org/magazine3","requires":"3.0","tested":"5.8","requires_php":false,"rating":94,"ratings":{"1":13,"2":1,"3":2,"4":10,"5":183},"num_ratings":209,"support_threads":28,"support_threads_resolved":18,"active_installs":80000,"downloaded":2328225,"last_updated":"2021-08-31 7:07am GMT","added":"2018-08-06","homepage":"","short_description":"Schema & Structured Data for WP & AMP adds Google Rich Snippets markup according to…","description":"

Schema & Structured Data for WP & AMP adds Google Rich Snippets markup according to Schema.org guidelines to structure your site for SEO. (AMP Compatible)

\n

Features

\n
    \n
  • Schema Types: Currently, We have more than 35 schema types such as Blog Posting, News article, Local Business, Web page, Article, Recipe, Product, and Video Object view all. We are going to add all the schema types in the future. You can request the one you want and we will add it for you!
  • \n
  • Conditional Display Fields: Meaning you include or exclude any posts, pages, post types, taxonomies and more!
  • \n
  • Knowlegde Base Support: Recognize the content based on the organization or a person via data type option.
  • \n
  • Full AMP Compatiblity: Supports the AMP for WP and AMP by Automattic plugins.
  • \n
  • Advanced Settings: Play with output of schema markup using these options (Defragment, Add in Footer, Pretty Print, MicroData CleanUp etc.)
  • \n
  • Migration: Import the data from other schema plugins such as (SEO Pressor, WP SEO Schema, Schema Plugin etc )
  • \n
  • Compatibility: Generate the schema markup for the plugins. We have provided schema support for them. Few of them are – kk Star Ratings, WP-PostRatings, bbPress
  • \n
  • Google Review: Display your business google reviews and its schema markup on your website.
  • \n
  • [Premium] Reviews ( Fetch reviews from 75+ platforms ).
  • \n
  • [Premium] Priority Support. Get it We get more than 100 technical queries a day but the Priority support plan will help you skip that and get the help from a dedicated team.
  • \n
  • Review Module: Create your own review rating box with pros and cons and its schema markup
  • \n
  • Schema Type Blocks in Gutenberg: Create your own content with the blocks and json schema markup will be added automatically
  • \n
  • Unlimited Custom Post Types: You can control to represent the Rich Snippets data in the google search console using unlimited custom post types.
  • \n
  • Easy to use with Minimal Settings
  • \n
  • Archive Page Listing Support
  • \n
  • JSON-LD Format
  • \n
  • Easy to use Setup Wizard
  • \n
  • Breadcrumbs Listing Support
  • \n
  • Comments Post comments Support
  • \n
  • Constant Development & New Features: We’ll be releasing the constant updates along with the more handy features as soon as we get the feedback from the users.
  • \n
\n

Supported Schema Types

\n
    \n
  • Apartment
  • \n
  • House
  • \n
  • SingleFamilyResidence
  • \n
  • Article
  • \n
  • Blogposting
  • \n
  • Book
  • \n
  • Course
  • \n
  • DiscussionForumPosting,
  • \n
  • DataFeed
  • \n
  • HowTo
  • \n
  • NewsArticle
  • \n
  • QAPage
  • \n
  • Review
  • \n
  • Recipe
  • \n
  • TVSeries
  • \n
  • SoftwareApplication
  • \n
  • MobileApplication
  • \n
  • SpecialAnnouncement (Related to Coronavirus)
  • \n
  • TechArticle
  • \n
  • WebPage
  • \n
  • Event
  • \n
  • VideoGame
  • \n
  • JobPosting
  • \n
  • Service
  • \n
  • Trip
  • \n
  • AudioObject
  • \n
  • VideoObject
  • \n
  • MedicalCondition
  • \n
  • MusicPlaylist
  • \n
  • MusicAlbum
  • \n
  • LocalBusiness with all the sub categories
  • \n
  • Product
  • \n
  • TouristAttraction
  • \n
  • TouristDestination
  • \n
  • LandmarksOrHistoricalBuildings
  • \n
  • HinduTemple
  • \n
  • Church
  • \n
  • Mosque
  • \n
  • Person
  • \n
  • View All
  • \n
\n

Extensions

\n

Some useful extensions to extend Schema & Structured Data for WP & AMP features, check Woocommerce Compatibility For Schema, Cooked Compatibility For Schema and We are going to add more.

\n

Support

\n

We try our best to provide support on WordPress.org forums. However, We have a special team support where you can ask us questions and get help. Delivering a good user experience means a lot to us and so we try our best to reply each and every question that gets asked.

\n

Bug Reports

\n

Bug reports for Schema & Structured Data for WP & AMP are welcomed on GitHub. Please note GitHub is not a support forum, and issues that aren’t properly qualified as bugs will be closed.

\n

Credits

\n
    \n
  • Select2 used https://github.com/select2/select2 – License URI: https://github.com/select2/select2/blob/develop/LICENSE.md,
  • \n
  • Merlin WP used https://github.com/richtabor/MerlinWP – License URI: https://github.com/richtabor/MerlinWP/blob/master/LICENSE,
  • \n
  • jquery-timepicker used https://github.com/jonthornton/jquery-timepicker
  • \n
  • Rate Yo! used https://github.com/prrashi/rateYo – License URI: https://github.com/prrashi/rateYo/commit/f3812fe96c38b08627d209795176053550fb1427
  • \n
  • Aqua Resizer used http://aquagraphite.com – License URI: WTFPL – http://sam.zoy.org/wtfpl/
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/schema-and-structured-data-for-wp.1.9.83.1.zip","tags":{"google-snippets":"google snippets","rich-snippets":"rich snippets","schema":"schema","schema-org":"schema.org","structured-data":"structured data"},"donate_link":"","icons":{"1x":"https://ps.w.org/schema-and-structured-data-for-wp/assets/icon-128x128.png?rev=1922284","2x":"https://ps.w.org/schema-and-structured-data-for-wp/assets/icon-256x256.png?rev=1922284"},"wporg":true},{"name":"GenerateBlocks","slug":"generateblocks","version":"1.3.5","author":"Tom Usborne","author_profile":"https://profiles.wordpress.org/edge22","requires":"5.4","tested":"5.8","requires_php":"5.6","rating":98,"ratings":{"1":0,"2":0,"3":2,"4":1,"5":72},"num_ratings":75,"support_threads":29,"support_threads_resolved":14,"active_installs":50000,"downloaded":239551,"last_updated":"2021-07-19 6:12pm GMT","added":"2020-05-19","homepage":"https://generateblocks.com","short_description":"A small collection of lightweight WordPress blocks that can accomplish nearly anything.","description":"

\n

\n

Add incredible versatility to your editor without bloating it with tons of one-dimensional Gutenberg blocks. With GenerateBlocks, you can learn a handful of blocks deeply and use them to build anything.

\n

GenerateBlocks works hand-in-hand with GeneratePress, but is built to work with any theme.

\n

Looking for more features? Check out GenerateBlocks Pro.

\n

Container

\n

Organize your content into rows and sections. The Container block is the foundation of your content, allowing you to design unique sections for your content.

\n

Grid

\n

Create advanced layouts with flexible grids. The Grid block gives you the ability to create any kind of layout you can imagine.

\n

Headline

\n

Craft text-rich content with advanced typography. Everything from headings to paragraphs – take full control of your text.

\n

Buttons

\n

Drive conversions with beautiful buttons.

\n

Performance

\n

We take performance seriously. Minimal CSS is generated only for the blocks you need, and our HTML structure is as simple as possible while allowing for maximum flexibility.

\n

Coding standards

\n

Built to the highest coding standards for security, stability and future compatibility.

\n

Fully responsive

\n

Every block comes with tablet and mobile controls, giving you total control of your responsive design.

\n

Documentation

\n

Check out our documentation for more information on the individual blocks and how to use them.

\n","download_link":"https://downloads.wordpress.org/plugin/generateblocks.1.3.5.zip","tags":{"blocks":"blocks","container":"container","grid":"grid","gutenberg":"gutenberg","headline":"headline"},"donate_link":"https://generateblocks.com","icons":{"1x":"https://ps.w.org/generateblocks/assets/icon-128x128.png?rev=2336822","2x":"https://ps.w.org/generateblocks/assets/icon-256x256.png?rev=2336822"},"wporg":true},{"name":"Blackhole for Bad Bots","slug":"blackhole-bad-bots","version":"3.2","author":"Jeff Starr","author_profile":"https://profiles.wordpress.org/specialk","requires":"4.1","tested":"5.8","requires_php":"5.6.20","rating":98,"ratings":{"1":2,"2":0,"3":3,"4":2,"5":108},"num_ratings":115,"support_threads":3,"support_threads_resolved":3,"active_installs":30000,"downloaded":306033,"last_updated":"2021-07-19 8:41pm GMT","added":"2016-02-18","homepage":"https://perishablepress.com/blackhole-bad-bots/","short_description":"Blackhole is a WordPress security plugin that detects and traps bad bots in a virtual black hole, where they are denied access to your entire site.","description":"
\n

Add your own virtual black hole trap for bad bots.

\n
\n

Bye bye bad bots..

\n

Bad bots are the worst. They do all sorts of nasty stuff and waste server resources. The Blackhole plugin helps to stop bad bots and save precious resources for legit visitors.

\n

How does it work?

\n

First the plugin adds a hidden trigger link to the footer of your pages. You then add a line to your robots.txt file that forbids all bots from following the hidden link. Bots that then ignore or disobey your robots rules will crawl the link and fall into the trap. Once trapped, bad bots are denied further access to your WordPress site.

\n

I call it the “one-strike” rule: bots have one chance to obey your site’s robots.txt rule. Failure to comply results in immediate banishment. The best part is that the Blackhole only affects bad bots: human users never see the hidden link, and good bots obey the robots rules in the first place. Win-win! 🙂

\n

Using a caching plugin? Check out the Installation notes for important info.

\n

Features

\n
    \n
  • Easy to set up
  • \n
  • Squeaky clean code
  • \n
  • Focused and modular
  • \n
  • Lightweight, fast and flexible
  • \n
  • Built with the WordPress API
  • \n
  • Works with other security plugins
  • \n
  • Easy to reset the list of bad bots
  • \n
  • Easy to delete any bot from the list
  • \n
  • Regularly updated and “future proof”
  • \n
  • Blackhole link includes “nofollow” attribute
  • \n
  • Plugin options configurable via settings screen
  • \n
  • Works silently behind the scenes to protect your site
  • \n
  • Whitelists all major search engines to never block
  • \n
  • Focused on flexibility, performance, and security
  • \n
  • Email alerts with WHOIS lookup for blocked bots
  • \n
  • Complete inline documentation via the Help tab
  • \n
  • Provides setting to whitelist any IP addresses
  • \n
  • Customize the message displayed to bad bots 😉
  • \n
  • One-click restore the plugin default options
  • \n
  • Does NOT use or require any .htaccess rules
  • \n
\n

Blackhole for Bad Bots protects your site against bad bots, spammers, scrapers, scanners, and other automated threats.

\n

Not using WordPress? Check out the standalone PHP version of Blackhole!

\n

Check out Blackhole Pro and level up with advanced features!

\n

Whitelist

\n

By default, this plugin does NOT block any of the major search engines (user agents):

\n
    \n
  • AOL.com
  • \n
  • Baidu
  • \n
  • Bingbot/MSN
  • \n
  • DuckDuckGo
  • \n
  • Googlebot
  • \n
  • Teoma
  • \n
  • Yahoo!
  • \n
  • Yandex
  • \n
\n

These search engines (and all of their myriad variations) are whitelisted via user agent. So are a bunch of other “useful” bots. They always are allowed full access to your site, even if they disobey your robots.txt rules. This list can be customized in the plugin settings. For a complete list of whitelisted bots, visit the Help tab in the plugin settings (under “Whitelist Settings”).

\n

Privacy

\n

User Data: This plugin automatically blocks bad bots. When bad bots fall into the trap, their IP address, user agent, and other request data are stored in the WP database. No other user data is collected by this plugin. At any time, the administrator may delete all saved data via the plugin settings.

\n

Services: This plugin does not connect to any third-party locations or services.

\n

Cookies: This plugin does not set any cookies.

\n

Header Image Courtesy NASA/JPL-Caltech.

\n

Support development of this plugin

\n

I develop and maintain this free plugin with love for the WordPress community. To show support, you can make a donation or purchase one of my books:

\n\n

And/or purchase one of my premium WordPress plugins:

\n\n

Links, tweets and likes also appreciated. Thanks! 🙂

\n","download_link":"https://downloads.wordpress.org/plugin/blackhole-bad-bots.3.2.zip","tags":{"anti-spam":"anti-spam","bad-bots":"bad bots","blackhole":"blackhole","honeypot":"honeypot","security":"security"},"donate_link":"https://monzillamedia.com/donate.html","icons":{"1x":"https://ps.w.org/blackhole-bad-bots/assets/icon-128x128.png?rev=1471215","2x":"https://ps.w.org/blackhole-bad-bots/assets/icon-256x256.png?rev=1471215"},"wporg":true},{"name":"Page View Count","slug":"page-views-count","version":"2.4.12","author":"a3rev Software","author_profile":"https://profiles.wordpress.org/a3rev","requires":"5.0","tested":"5.8","requires_php":false,"rating":78,"ratings":{"1":8,"2":5,"3":2,"4":3,"5":30},"num_ratings":48,"support_threads":2,"support_threads_resolved":0,"active_installs":20000,"downloaded":403965,"last_updated":"2021-07-19 10:48am GMT","added":"2012-12-21","homepage":"","short_description":"Places an icon, all time views count and views today count at the bottom of posts, pages and custom post types on any WordPress website.","description":"

A beautifully simple to set up plugin that gives site visitors and site owners the ability to quickly and easily see how many people have visited that page or post.

\n

FEATURES

\n
    \n
  • On the front end it adds an icon and page views count to the bottom or top of pages and posts on your WordPress website.
  • \n
  • Switch ON | OFF hide Page Views Count for all Posts, Pages and all custom posts types including WooCommerce custom post types.
  • \n
  • Set the Position of the counter to show at the top of the page or post or at the bottom
  • \n
  • Set alignment of the counter Left, Right or Centre
  • \n
  • Set the colour and size of the counter icon
  • \n
  • Option to use load by Ajax to prevent the count from being cached by caching plugins
  • \n
  • Option to Manually set / edit total views and views today from Page View Count meta box on any post or page editor
  • \n
  • Add Page Views counter via the PVC Gutenberg block
  • \n
  • Add Page Views counter via shortcode
  • \n
  • Add Page Views counter via widget
  • \n
  • Developers can add the Page Views Counter via php tag
  • \n
  • All options and settings are point click – absolutely no coding required
  • \n
\n

COMPATIBILTY

\n

Compatible with WordPress 5.3+ and backwards to WP 4.9.0. Compatible with Classic Editor plugin with 5.0+ (Gutenberg Deactivated)

\n

GUTENBERG BLOCK

\n

Using the Gutenberg Editor. Use the Page View Count Block to add the counter to any page or post content. Block search for ‘Page Views’ or selecting the block from the a3rev Blocks menu.

\n

Adding the Page Views block to your content automatically deactivates the Global Page View counter on the post or page.

\n

ELEMENTOR TEMPLATES

\n

Fully compatible with Elementor templates. Add counter via Shortcode or widget to any template.

\n

DEVELOPERS

\n

On the plugins dashboard in the + Page Views Count Function options box you will find the Page Views Count functions and notes on how to use them.

\n
    \n
  • Use to manually add Page views count to any content or object in the theme.
  • \n
  • Use to add page View Count to any content that is not create using WordPress custom post / taxonomy type.
  • \n
  • Use to create a custom position of the Page Views Count
  • \n
  • Functions support echo and return parameters when getting visitor stats on any variable.
  • \n
\n

TROUBLESHOOTING

\n
    \n
  • The number 1 support request we get about the plugin is that it double or triple counts page or post loads. Yes it does and if you see that it is a Red Flag that you have a misconfiguration or bug in your theme or a plugin. Page Views Count does exactly that – counts each time the page or post is loading in the browser – if its counting twice it is because the browser is double loading the page. That is a bad thing and you or your developer needs to fix that.
  • \n
\n

CONTRIBUTE

\n

When you download Page Views Count, you join our community. Regardless of if you are a WordPress beginner or experienced developer if you’?re interested in contributing to Page Views Count development head over to the Page Views Count GitHub Repository to find out how you can contribute.
\nWant to add a new language to Page Views Count? Great! You can contribute via translate.wordpress.org

\n

Usage

\n
    \n
  1. \n

    Install and activate the plugin

    \n
  2. \n
  3. \n

    Go to WordPress Settings menu > Page View Count Menu

    \n
  4. \n
  5. \n

    Activate Page Views Count and use the options box settings to make the desired configuration

    \n
  6. \n
  7. \n

    Be sure to clear any caching and browser cache to see your Page Views Count

    \n
  8. \n
\n","download_link":"https://downloads.wordpress.org/plugin/page-views-count.2.4.12.zip","tags":{"gutenberg":"gutenberg","page-view-count":"page view count","post-view-count":"post view count","post-views":"post views","wordpress-page-view":"wordpress page view"},"donate_link":"","icons":{"1x":"https://ps.w.org/page-views-count/assets/icon.svg?rev=986301","2x":"https://ps.w.org/page-views-count/assets/icon-256x256.png?rev=986301","svg":"https://ps.w.org/page-views-count/assets/icon.svg?rev=986301"},"wporg":true},{"name":"Newspack Listings","slug":"newspack-listings","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://github.com/Automattic/newspack-listings/releases","short_description":"

Create reusable content as listings and add them to lists wherever core blocks can be used

\n","description":"\n\n\n

Create reusable content as listings and add them to lists wherever core blocks can be used

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2021/02/listings2-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2021/02/listings2-372x209.jpg","svg":""},"wporg":false},{"name":"Newspack Newsletters","slug":"newspack-newsletters","version":"1.31.1","author":"Automattic","author_profile":"https://profiles.wordpress.org/automattic","requires":"5.3","tested":"5.8.0","requires_php":"5.6","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":1,"support_threads_resolved":1,"active_installs":500,"downloaded":2877,"last_updated":"2021-08-10 8:45pm GMT","added":"2021-02-15","homepage":"https://newspack.pub","short_description":"Create email newsletters with the Gutenberg editor and distribute them with your Mailchimp or Constant…","description":"

Create email newsletters with the Gutenberg editor and send them via Mailchimp or Constant Contact, all without leaving WP Admin! Newspack Newsletters lets you build eye-catching newsletters using the WordPress editing tools you’re already familiar with, and lets you save drafts, create reusable layouts, send to your existing mailing list, and also publish them to your website.

\n

Use and create newsletter layouts

\n

Newspack Newsletters comes with four default layouts to help you start building newsletters quickly. You can use an existing layout, or start fresh with a blank page. You can also create and save your own layouts, or alter the ones that come bundled with the plugin and save the settings, and use them for future campaigns.

\n

Use Gutenberg blocks and settings

\n

Newspack Newsletters supports most core Gutenberg blocks and configurations, letting you use blocks like Group, Button, Columns, and more, to create dynamic layouts. The plugin will warn you when a block will not display as expected in an email.

\n

Customize your newsletter’s appearance

\n

You can customize your newsletters further by changing the header and body fonts, or picking a background color.

\n

Newspack Blocks

\n

Newspack Newsletters comes bundled with the Newspack Post Inserter block. This block lets you insert excerpts from live posts on your site, and, once inserted, will turn those posts into static content using the Header and Paragraph blocks, linking back to your site.

\n

Need to target a post title to your newsletter audience? Not a problem! You can edit these blocks, and add others, to make sure they’ speak to your readers.

\n

Add ads!

\n

Monetize your newsletters by including advertising. The Newspack Newsletters plugin lets you create ads, which are stored as a custom post type. Ads are automatically inserted into your newsletters, and can also be toggled off on a newsletter-by-newsletter basis.

\n

Send with ease

\n

Newspack Newsletters connects to your Mailchimp or Constant Contact accounts to send emails using the mailing lists you’ve collected there, all without leaving the WordPress Admin.

\n

Before sending your campaign, you can send test emails to one or more email addresses at a time from the newsletter editor, to make sure everything is pixel perfect before sharing with the world.

\n

About Newspack

\n

The Newspack Newletters plugin is part of Newspack, a suite of tools to help small to mid-sized news organizations publish and generate revenue with WordPress. Newspack is a collaborative project by WordPress.com and the Google News Initiative. You can learn more about Newspack by visiting our website.

\n

Credits

\n

The beach photograph in the screenshot is by Life of Pix, licensed CC0.

\n","download_link":"https://downloads.wordpress.org/plugin/newspack-newsletters.zip","tags":{"constant-contact":"constant contact","mailchimp":"mailchimp","newsletters":"newsletters","newspack":"Newspack","wordpress-com":"WordPress.com"},"donate_link":"","icons":{"1x":"https://ps.w.org/newspack-newsletters/assets/icon.svg?rev=2475195","2x":"https://ps.w.org/newspack-newsletters/assets/icon-256x256.png?rev=2475195","svg":"https://ps.w.org/newspack-newsletters/assets/icon.svg?rev=2475195"},"wporg":true},{"name":"Web Stories","slug":"web-stories","version":"1.10.1","author":"Google","author_profile":"https://profiles.wordpress.org/google","requires":"5.5","tested":"5.8","requires_php":"7.0","rating":84,"ratings":{"1":5,"2":2,"3":2,"4":4,"5":31},"num_ratings":44,"support_threads":112,"support_threads_resolved":84,"active_installs":20000,"downloaded":324189,"last_updated":"2021-08-25 7:02pm GMT","added":"2020-09-22","homepage":"https://wp.stories.google/","short_description":"Web Stories are a visual storytelling format for the open web which immerses your readers in fast-loading, full-screen, and visually rich experiences.","description":"

Web Stories are a free, open-web, visual storytelling format for the web, enabling you to easily create visual narratives with engaging animations and tappable interactions, and immerse your readers in great and fast-loading full-screen experiences.

\n

Benefits of Web Stories

\n

The Web Stories format puts features and capabilities at your fingertips to engage with your audience via the power of storytelling on the open web. Specifically, you can:

\n
    \n
  • Create beautiful and engaging content easily: Web Stories make the production of stories as easy as possible from a technical perspective.
  • \n
  • Enjoy creative flexibility for editorial freedom and branding: The Web Stories format comes with preset but flexible layout templates, standardized UI controls, and components for sharing and adding follow-on content.
  • \n
  • Share and link your stories on the open web: Web Stories are part of the open web and can be shared and embedded across sites and apps without being confined to a single ecosystem.
  • \n
  • Track and measure your stories: Supports analytics and bookend capabilities for viral sharing and monetization.
  • \n
  • Capture the attention of your readers by offering fast loading times to your stories: Web Stories are lightning fast so that your audience stays engaged and entertained.
  • \n
  • Engage with your readers via immersive storytelling: Web Stories are a new and modern way to reach existing readers.
  • \n
  • Monetize effectively the beautiful and engaging stories you create: Web Stories enable monetization capability for publishers using affiliate links. For advertisers, Stories is a way to reach a unique audience within a new storytelling experience.
  • \n
\n

Web Stories Editor

\n

The Web Stories editor for WordPress brings together a robust set of story creation capabilities in a user-friendly, WYSIWYG creation tool. Some of the key features you can leverage out of the box are:

\n
    \n
  • A visually rich and intuitive dashboard, allowing you to easily navigate the story creation process
  • \n
  • Beautiful and expressive page templates to you get your story creation process started quickly and smoothly
  • \n
  • Easy drag-and-drop capabilities, making it easy to compose beautiful stories
  • \n
  • Convenient access to WordPress’ media library, enabling you to grab your media assets right from the plugin dashboard as you create your stories
  • \n
  • Customizable color and text style presets, making it easy to tailor the style of your stories to the needs of your content strategy
  • \n
  • And much more!
  • \n
\n

Using the Web Stories editor for WordPress, you can easily create visual narratives with tappable interactions, and share freely across the web, or embed them on your existing content strategies. The Stories you create are yours in every way, as Web Stories belong to the open web, instead of being confined to any specific closed ecosystem or platform.

\n

Audience: Everyone

\n

Web Stories are for everyone! If you are a site owner, content creator, or publisher on the web, embracing the Web Stories format would be great as a way to enhance the quality of your content strategy, the value you bring to your readers, and consequently your chances of achieving sustainable success.

\n

Terms of Service

\n

By using this plugin, you agree to Google’s Terms of Service. By using third-party imagery and video provided by Unsplash, Coverr and Tenor, you agree to adhere to the respective Terms of Service.

\n","download_link":"https://downloads.wordpress.org/plugin/web-stories.1.10.1.zip","tags":{"amp":"amp","google":"google","stories":"stories","storytelling":"storytelling","web-stories":"web stories"},"donate_link":"","icons":{"1x":"https://ps.w.org/web-stories/assets/icon.svg?rev=2386543","2x":"https://ps.w.org/web-stories/assets/icon-256x256.png?rev=2386543","svg":"https://ps.w.org/web-stories/assets/icon.svg?rev=2386543"},"wporg":true},{"name":"Jetpack – WP Security, Backup, Speed, & Growth","slug":"jetpack","version":"10.0","author":"Automattic","author_profile":"https://profiles.wordpress.org/automattic","requires":"5.7","tested":"5.8","requires_php":"5.6","rating":78,"ratings":{"1":319,"2":80,"3":81,"4":137,"5":1017},"num_ratings":1634,"support_threads":353,"support_threads_resolved":315,"active_installs":5000000,"downloaded":242957166,"last_updated":"2021-08-03 4:25pm GMT","added":"2011-01-20","homepage":"https://jetpack.com","short_description":"Improve your WP security with powerful one-click tools like backup and malware scan. Get essential free tools including stats, CDN and social sharing.","description":"

The most popular WordPress plugin for just about everything.

\n

WordPress security, performance, marketing, and design tools — Jetpack is made by WordPress experts to make WP sites safer and faster, and help you grow your traffic.

\n

24/7 AUTO SITE SECURITY

\n

We guard your site so you can run your site or business. Jetpack Security provides easy-to-use, comprehensive WordPress site security including auto real-time backups and easy restores, malware scans, and spam protection. Essential features like brute force protection and downtime / uptime monitoring are free.

\n
    \n
  • Back up your site automatically in real time and restore to any point with one click. Unlimited storage for your backup. Great for eCommerce stores especially Woo.
  • \n
  • Manage migration to a new host, migrate theme files and plugins to a new database, easily duplicate websites, create full database backups, clone websites, repair broken websites by restoring older backups or easily set up a test site by creating a duplicate of your existing WP website.
  • \n
  • See every site change and who made it with the activity log, great for coordination, debug, maintenance, or troubleshooting.
  • \n
  • Automatically perform malware scans and security scans for other code threats. One click fix to restore your site for malware.
  • \n
  • Block spam comments and form responses with anti spam features powered by Akismet.
  • \n
  • Brute force attack protection to protect your WordPress login page from attacks.
  • \n
  • Monitor your site uptime / downtime and get an instant alert of any change by email.
  • \n
  • Secure WordPress.com powered login used by millions of sites with optional 2FA (two factor authentication) for extra protection.
  • \n
  • Auto update individual plugins for easy site maintenance and management.
  • \n
\n

PEAK SPEED AND PERFORMANCE

\n

Get blazing fast site speed with Jetpack, the premier WP plugin built to leverage the power of AMP, a tool that helps optimize your site on mobile devices. Jetpack’s free CDN (content delivery network) auto optimizes your images. Watch your page load times decrease — we’ll optimize your images and serve them from our own powerful global network, and speed up your site on mobile devices to reduce bandwidth usage and save money!

\n
    \n
  • Jetpack has partnered with Google AMP to create the best, highest performance all-in-one toolkit for WordPress. By using Jetpack and AMP together, you get all the features you need to build a beautiful, fast, modern website with no coding required.
  • \n
  • Image CDN for images and static files, like CSS and JavaScript, served from our servers, not yours, which saves you money and bandwidth.
  • \n
  • Lazy load images for a super fast experience, even on mobile. Jetpack’s lazy loading automatically delays the loading of media on your posts and pages until your visitors scroll down to where they appear on the page.
  • \n
  • Unlimited, high speed, ad free video hosting keeps the focus on your content, not on ads or recommendations that lead people off site.
  • \n
  • Custom site search is incredibly powerful and customizable. Helps your visitors instantly find the right content so they read and buy more. Works great with WooCommerce / eCommerce sites to help filter products so customers get what they want on your site faster.
  • \n
  • Recommended to use with WP Super Cache for ultimate WordPress site speed.
  • \n
\n

POWERFUL TOOLS FOR GROWTH

\n

Create and customize your WordPress site, optimize it for visitors and revenue, and enjoy watching your stats tick up. Build it, share it, and watch it grow.

\n
    \n
  • Advanced site stats and analytics to help you understand your audience.
  • \n
  • Auto publish blog posts and products to social media by simply using our tools to connect to Facebook, Twitter, and Linkedin.
  • \n
  • Easily share Instagram posts on your pages and blog posts.
  • \n
  • Collect a payment or donation, sell a product, service, or membership with simple integrations with PayPal and Stripe.
  • \n
  • Grow traffic with SEO tools for Google, Bing, Twitter, Facebook, and WordPress.com. XML sitemap created automatically.
  • \n
  • Advertise on your site to generate revenue. The ad network automatically does the work for you to find high-quality ads that are placed on your site.
  • \n
  • Manage Jetpack features from anywhere with the official WordPress mobile app, available for Apple iOS (iPhone or iPad) and Google Android.
  • \n
  • Looking for Customer Relationship Management? Check out the Jetpack CRM plugin which works alongside Jetpack to give you a simple and practical way to build relationships with your customers and leads.
  • \n
\n

EASY DESIGN TOOLS

\n

Quickly customize your site to make it stand out — no coding needed.

\n
    \n
  • Themes — Simple themes to get started or pick a professional theme to make your site stand out.
  • \n
  • Related posts — Keep visitors on your site by automatically showing them related content they will be interested in.
  • \n
  • Gallery and Slideshow tools — Image galleries, carousel slider, and slideshows for WP sites and stores.
  • \n
  • Subscriptions — Make it easy for visitors to sign up to receive notifications of your latest posts and comments.
  • \n
  • Contact form — Easily build unlimited contact forms for free without any coding. Receive email notifications for each response. Integrate with mail solutions like Creative Mail to reach your customers and leads quickly. Connect to Jetpack Anti spam (powered by Akismet) to filter submissions.
  • \n
  • oEmbed Support — easily embed images, posts, and links from Facebook and Instagram.
  • \n
\n

INTEGRATIONS

\n

Jetpack is updated monthly to ensure seamless integration with top WordPress plugins and other tech products.

\n
    \n
  • Built for WooCommerce: Jetpack and WooCommerce are both made by Automattic. Backup, Scan, Anti-spam, integrate perfectly for Woo / eComm stores
  • \n
  • Jetpack is fully compatible with v2.0 of the official AMP plugin for WordPress.
  • \n
  • Better understand your customers and marketing with Google Analytics (GA) integration
  • \n
  • Social media platforms: Instagram, Facebook, Twitter, LinkedIn
  • \n
  • Simple Blocks to customize your site: Pinterest, Whatsapp, Podcast player, GIFs, maps, tiled gallery, slideshow
  • \n
  • Payment processors: easily collect payments or donations and sell products through Stripe and PayPal
  • \n
  • Site speed and performance plugins: Works great with WP Super Cache by Automattic and Cloudflare.
  • \n
  • Contact form: Anti-spam (Powered by Akismet) blocks spam comments for Jetpack forms, Contact Form 7, Ninja Forms, Gravity Forms, Formidable Forms, and more.
  • \n
  • Other tech integrations: Instagram, Creative Mail, Mailchimp, Calendly, Whatsapp, Pinterest, Revue, and more.
  • \n
\n

EXPERT SUPPORT

\n

We have a global team of Happiness Engineers ready to provide incredible support. Ask your questions in the support forum or contact us directly.

\n

GET STARTED

\n

Installation is free, quick, and easy. Set up Jetpack in minutes. Take advantage of more robust features like WordPress site security and design and growth tools by upgrading to a paid plan.

\n","download_link":"https://downloads.wordpress.org/plugin/jetpack.10.0.zip","tags":{"backup":"backup","malware":"malware","scan":"scan","security":"security","woo":"woo"},"donate_link":"","icons":{"1x":"https://ps.w.org/jetpack/assets/icon.svg?rev=2394525","2x":"https://ps.w.org/jetpack/assets/icon-256x256.png?rev=2394525","svg":"https://ps.w.org/jetpack/assets/icon.svg?rev=2394525"},"wporg":true},{"name":"Easy Notification Bar","slug":"easy-notification-bar","version":"1.4.2","author":"WPExplorer","author_profile":"https://profiles.wordpress.org/wpexplorer","requires":"5.2.0","tested":"5.8","requires_php":"5.6.2","rating":82,"ratings":{"1":0,"2":1,"3":1,"4":1,"5":4},"num_ratings":7,"support_threads":2,"support_threads_resolved":1,"active_installs":4000,"downloaded":34014,"last_updated":"2021-08-22 1:48am GMT","added":"2019-06-20","homepage":"https://wordpress.org/plugins/easy-notification-bar/","short_description":"Easily add a custom top bar notification message to on your site with live customization…","description":"

Easily add a custom top bar notification message to on your site with live customization options via the WordPress customizer. The plugin allows you to enter your notification bar text as well as an optional button to display next to your text. Perfect for notifying visitors of a current sale, hot product, warnings or other important messages.

\n

The Easy Notification Bar plugin makes use of the newer “wp_body_open” action hook introduced in WordPress 5.2.0 which allows the plugin to work better with any theme that has been updated to support the tag. Contrary to other notice bar solutions which rely on absolute positioning, this plugin inserts the notice bar right after the body tag so it should display perfectly without any conflicts on any well-coded theme.

\n

By default, the notification bar is “static” which means it displays at the top of your site so when you scroll down the page it will become “hidden”. This is generally better for usability and SEO. However, in version 1.4 we added a new sticky option which you can enable in the Customizer so that the notification bar remains visible as you scroll down the page. The sticky functionality makes use of the CSS sticky property (not javascript).

\n

Although disabled by default, you can enable a close icon for your notice. When enabled, your visitors will see an “x” icon over the top bar which they can click to hide the message for their current and future sessions. This functionality makes use of localStorage (not cookies).

\n

Live Demo: You can view a live demo for the notification bar on our More Widgets Plugin Demo

\n

Features

\n
    \n
  • Sitewide (or homepage only) top notification bar.
  • \n
  • Easy setup via the WordPress customizer.
  • \n
  • Optional close icon.
  • \n
  • Optional sticky display.
  • \n
  • Custom background, color, text alignment and font size settings.
  • \n
  • Optional callout button.
  • \n
  • Responsive design so it looks good on mobile.
  • \n
  • Minimal code.
  • \n
  • Vanilla Javascript used for close icon (jQuery not needed).
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/easy-notification-bar.zip","tags":{"notice":"notice","notice-bar":"notice bar","notification":"notification","notification-bar":"notification bar","top-bar":"top bar"},"donate_link":"","icons":{"1x":"https://ps.w.org/easy-notification-bar/assets/icon-128x128.png?rev=2515988","2x":"https://ps.w.org/easy-notification-bar/assets/icon-256x256.png?rev=2515988"},"wporg":true},{"name":"Antispam Bee","slug":"antispam-bee","version":"2.10.0","author":"pluginkollektiv","author_profile":"https://profiles.wordpress.org/pluginkollektiv","requires":"4.5","tested":"5.8","requires_php":"5.2","rating":96,"ratings":{"1":7,"2":1,"3":1,"4":2,"5":175},"num_ratings":186,"support_threads":6,"support_threads_resolved":4,"active_installs":700000,"downloaded":5046177,"last_updated":"2021-07-29 11:15am GMT","added":"2009-01-10","homepage":"https://antispambee.pluginkollektiv.org/","short_description":"Antispam plugin with a sophisticated tool set for effective day to day comment and trackback spam-fighting. Build with data protection and privacy in …","description":"

Say Goodbye to comment spam on your WordPress blog or website. Antispam Bee blocks spam comments and trackbacks effectively, without captchas and without sending personal information to third party services. It is free of charge, ad-free and 100% GDPR compliant.

\n

Feature/Settings Overview

\n
    \n
  • Trust approved commenters.
  • \n
  • Trust commenters with a Gravatar.
  • \n
  • Consider the comment time.
  • \n
  • Allow comments only in a certain language.
  • \n
  • Block or allow commenters from certain countries.
  • \n
  • Treat BBCode links as spam.
  • \n
  • Validate the IP address of commenters.
  • \n
  • Use regular expressions.
  • \n
  • Search local spam database for commenters previously marked as spammers.
  • \n
  • Notify admins by e-mail about incoming spam.
  • \n
  • Delete existing spam after n days.
  • \n
  • Limit approval to comments/pings (will delete other comment types).
  • \n
  • Select spam indicators to send comments to deletion directly.
  • \n
  • Optionally exclude trackbacks and pingbacks from spam detection.
  • \n
  • Optionally spam-check comment forms on archive pages.
  • \n
  • Display spam statistics on the dashboard, including daily updates of spam detection rate and a total of blocked spam comments.
  • \n
\n

Support

\n\n

Contribute

\n
    \n
  • Active development of this plugin is handled on GitHub.
  • \n
  • Pull requests for documented bugs are highly appreciated.
  • \n
  • If you think you’ve found a bug (e.g. you’re experiencing unexpected behavior), please post at the support forums first.
  • \n
  • If you want to help us translate this plugin you can do so on WordPress Translate.
  • \n
\n

Credits

\n\n","download_link":"https://downloads.wordpress.org/plugin/antispam-bee.2.10.0.zip","tags":{"anti-spam":"anti-spam","antispam":"antispam","block-spam":"block spam","comment":"comment","comments":"comments"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=TD4AMD2D8EMZW","icons":{"1x":"https://ps.w.org/antispam-bee/assets/icon-128x128.png?rev=977629","2x":"https://ps.w.org/antispam-bee/assets/icon-256x256.png?rev=977629"},"wporg":true},{"name":"SimpleTOC – Table of Contents Block","slug":"simpletoc","version":"4.8","author":"Marc Tönsing","author_profile":"https://profiles.wordpress.org/marcdk","requires":"5.0","tested":"5.8","requires_php":false,"rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":24},"num_ratings":24,"support_threads":2,"support_threads_resolved":1,"active_installs":2000,"downloaded":20704,"last_updated":"2021-07-29 9:07pm GMT","added":"2020-04-14","homepage":"https://marc.tv/simpletoc-wordpress-inhaltsverzeichnis-plugin-gutenberg/","short_description":"Adds a custom Table of Contents Gutenberg block.","description":"

In Gutenberg, add a block and search for “SimpleTOC” or just “TOC”. You need to save your post before you add the block. It works by parsing the post content and retrieving the heading blocks and creates a new dynamic block with a list of links to the headings.

\n

Hide the headline “Table of Contents” and set a maximum display depth in the blocks’ sidebar configuration. Add the CSS class “simpletoc-hidden” to a heading block to remove that specific heading from the generated TOC.

\n

Features

\n
    \n
  • No javascript or css added.
  • \n
  • Designed for Gutenberg.
  • \n
  • Compatible with AMP plugins.
  • \n
  • Minimal and valid HTML output.
  • \n
  • Inherits the style of your theme.
  • \n
  • Support for column block layouts.
  • \n
  • Control the maximum depth of the headings.
  • \n
  • Choose between an ordered and unordered html list.
  • \n
  • SEO friendly: Disable the h2 heading of the TOC block and add your own.
  • \n
  • Comes with English, French, Spanish, German, and Brazilian Portuguese translations.
  • \n
  • Works with non-latin texts. Tested with Japanese and Arabic.
  • \n
  • Finds headlines in groups and reusable blocks. And in groups within reusable blocks.
  • \n
  • Rank Math support.
  • \n
\n

Credits

\n

This plugin is forked from https://github.com/pdewouters/gutentoc by pdewouters and uses code from https://github.com/shazahm1/Easy-Table-of-Contents by shazahm1

\n

Many thanks to Tom J Nowell https://tomjn.com and and Sally CJ who both helped me a lot with my questions over at wordpress.stackexchange.com

\n","download_link":"https://downloads.wordpress.org/plugin/simpletoc.4.8.zip","tags":{"amp":"amp","block":"block","gutenberg":"gutenberg","table-of-contents":"table of contents","toc":"toc"},"donate_link":"https://marc.tv/out/donate","icons":{"1x":"https://ps.w.org/simpletoc/assets/icon.svg?rev=2451408","2x":"https://ps.w.org/simpletoc/assets/icon-256x256.png?rev=2451408","svg":"https://ps.w.org/simpletoc/assets/icon.svg?rev=2451408"},"wporg":true},{"name":"Log in with Google","slug":"login-with-google","version":"1.2.1","author":"rtCamp","author_profile":"https://profiles.wordpress.org/rtcamp","requires":"5.4.2","tested":"5.7.2","requires_php":"7.3","rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":6},"num_ratings":6,"support_threads":4,"support_threads_resolved":2,"active_installs":300,"downloaded":2952,"last_updated":"2021-07-23 10:00pm GMT","added":"2020-10-01","homepage":"","short_description":"Minimal plugin that allows WordPress users to log in using Google.","description":"

Ultra minimal plugin to let your users login to WordPress applications using their Google accounts. No more remembering hefty passwords!

\n

Initial Setup

\n
    \n
  1. \n

    Create a project from Google Developers Console if none exists.

    \n
  2. \n
  3. \n

    Go to Credentials tab, then create credential for OAuth client.

    \n
      \n
    • Application type will be Web Application
    • \n
    • Add YOUR_DOMAIN/wp-login.php in Authorized redirect URIs
    • \n
    \n
  4. \n
  5. \n

    This will give you Client ID and Secret key.

    \n
  6. \n
  7. \n

    Input these values either in WP Admin > Settings > WP Google Login, or in wp-config.php using the following code snippet:

    \n

    `
    \ndefine( ‘WP_GOOGLE_LOGIN_CLIENT_ID’, ‘YOUR_GOOGLE_CLIENT_ID’ );
    \ndefine( ‘WP_GOOGLE_LOGIN_SECRET’, ‘YOUR_SECRET_KEY’ );
    \n“

    \n
  8. \n
\n

Browser support

\n

These browsers are supported. Note, for example, that One Tap Login is not supported in Safari.

\n

How to enable automatic user registration

\n

You can enable user registration either by
\n– Enabling Settings > WP Google Login > Enable Google Login Registration

\n

OR

\n
    \n
  • Adding
    \ndefine( 'WP_GOOGLE_LOGIN_USER_REGISTRATION', 'true' );
    \nin wp-config.php file.
  • \n
\n

Note: If the checkbox is ON then, it will register valid Google users even when WordPress default setting, under

\n

Settings > General Settings > Membership > Anyone can register checkbox

\n

is OFF.

\n

Restrict user registration to one or more domain(s)

\n

By default, when you enable user registration via constant WP_GOOGLE_LOGIN_USER_REGISTRATION or enable Settings > WP Google Login > Enable Google Login Registration, it will create a user for any Google login (including gmail.com users). If you are planning to use this plugin on a private, internal site, then you may like to restrict user registration to users under a single Google Suite organization. This configuration variable does that.

\n

Add your domain name, without any schema prefix and www, as the value of WP_GOOGLE_LOGIN_WHITELIST_DOMAINS constant or in the settings Settings > WP Google Login > Whitelisted Domains. You can whitelist multiple domains. Please separate domains with commas. See the below example to know how to do it via constants:

\n
`\n
\n

define( ‘WP_GOOGLE_LOGIN_WHITELIST_DOMAINS’, ‘example.com,sample.com’ );
\n `

\n

Note: If a user already exists, they will be allowed to login with Google regardless of whether their domain is whitelisted or not. Whitelisting will only prevent users from registering with email addresses from non-whitelisted domains.

\n

Hooks

\n

Filter wp_google_login_scopes
\nThis filter can be used to filter existing scope used in Google Sign in.
\nYou can ask for additional permission while user logs in.
\nThis filter will provide 1 parameter scopes in callback, which contains array of scopes.

\n

wp-config.php parameters list

\n
    \n
  • \n

    WP_GOOGLE_LOGIN_CLIENT_ID (string): Google client ID of your application.

    \n
  • \n
  • \n

    WP_GOOGLE_LOGIN_SECRET (string): Secret key of your application

    \n
  • \n
  • \n

    WP_GOOGLE_LOGIN_USER_REGISTRATION (boolean) (optional): Set true If you want to enable new user registration. By default, user registration defers to Settings > General Settings > Membership if constant is not set.

    \n
  • \n
  • \n

    WP_GOOGLE_LOGIN_WHITELIST_DOMAINS (string) (optional): Domain names, if you want to restrict login with your custom domain. By default, it will allow all domains. You can whitelist multiple domains.

    \n
  • \n
\n

BTW, We’re Hiring!

\n

\n","download_link":"https://downloads.wordpress.org/plugin/login-with-google.1.2.1.zip","tags":{"authentication":"authentication","google-login":"Google Login","oauth":"oauth","sign-in":"sign in","sso":"sso"},"donate_link":"https://rtcamp.com/","icons":{"1x":"https://ps.w.org/login-with-google/assets/icon-128x128.png?rev=2402713","2x":"https://ps.w.org/login-with-google/assets/icon-256x256.png?rev=2402713"},"wporg":true},{"name":"Search with Google","slug":"search-with-google","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://wordpress.org/plugins/search-with-google/","short_description":"

This plugin replaces the WordPress default search query with server-side results from Custom Search Site Restricted JSON API. 

\n","description":"\n\n\n

This plugin replaces the WordPress default search query with server-side results from Custom Search Site Restricted JSON API

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2020/11/searchWithGoogle-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2020/11/searchWithGoogle-372x209.jpg","svg":""},"wporg":false},{"name":"Page Builder Gutenberg Blocks – CoBlocks","slug":"coblocks","version":"2.16.0","author":"GoDaddy","author_profile":"https://profiles.wordpress.org/godaddy","requires":"5.0","tested":"5.8","requires_php":"5.6","rating":88,"ratings":{"1":7,"2":3,"3":4,"4":5,"5":63},"num_ratings":82,"support_threads":16,"support_threads_resolved":4,"active_installs":500000,"downloaded":5426346,"last_updated":"2021-08-12 8:29pm GMT","added":"2018-04-19","homepage":"","short_description":"CoBlocks is a suite of page builder WordPress blocks for Gutenberg, with 10+ new blocks and a true page builder experience with rows and columns.","description":"

CoBlocks is the most innovative collection of page building WordPress blocks for the new Gutenberg WordPress block editor.

\n

With additional blocks and true row and column building, CoBlocks gives you a true page builder experience for Gutenberg.

\n

CoBlocks is powerful but lightweight: it adds functionality to the WordPress editor without bloat. This is the plugin you’ve been waiting for, and it will make you rethink what WordPress is capable of.

\n

Make Beautiful Web Pages With Gutenberg & CoBlocks

\n

CoBlocks is the last page builder you’ll ever need: you get a winning mix of additional WordPress blocks, and page builder functionality. With CoBlocks you have everything you need to make beautiful web pages with the new block editor:

\n
    \n
  • Accordion Block
  • \n
  • Alert Block
  • \n
  • Author Profile Block
  • \n
  • Buttons Block
  • \n
  • Carousel Gallery Block
  • \n
  • Click to Tweet Block
  • \n
  • Collage Gallery Block
  • \n
  • Dynamic Separator Block
  • \n
  • Events Block (New!)
  • \n
  • Features Block
  • \n
  • Food & Drinks Block
  • \n
  • Form Block
  • \n
  • Gif Block
  • \n
  • GitHub Gist Block
  • \n
  • Hero Block
  • \n
  • Highlight Block
  • \n
  • Icon Block
  • \n
  • Logos & Badges Block
  • \n
  • Map Block
  • \n
  • Masonry Gallery Block
  • \n
  • Media Card Block
  • \n
  • Offset Gallery Block
  • \n
  • Post Carousel Block
  • \n
  • Posts Block
  • \n
  • Pricing Table Block
  • \n
  • Resizable Row/Columns Blocks
  • \n
  • Services Block
  • \n
  • Shape Divider Block
  • \n
  • Social Profiles Block
  • \n
  • Social Sharing Block
  • \n
  • Stacked Gallery Block
  • \n
\n

Breakthrough Page Builder System

\n

CoBlocks features an innovative block system that allows you to create stunning web pages, and even entire websites, with the new WordPress editor.

\n

You get the extra blocks you need and the layout and design functionality for a true page builder experience.

\n

Use the exceptional Row and Columns blocks to add dynamically generated content areas with specific responsive margin and padding settings that only CoBlocks provides.

\n

Style these with innovative new blocks such as the Shape Divider, which lets you split up your content with beautiful dividers.

\n

Each of the WordPress blocks within CoBlocks have been precisely fined tuned to offer a familiar, yet powerful, customization experience. Tailor each block to your taste using our custom controls and settings. Change fonts, set margin and padding, pick colors and more.

\n

Custom Typography Controls

\n

The breakthrough Typography Control Panel within CoBlocks lets you design web pages with alluring typographic elements. Set fonts, sizes, weights, transformations and more, in our CoBlocks blocks, and in core WordPress blocks.

\n

Free Companion Theme

\n

CoBlocks is built to show off the best of Gutenberg, but it requires a Gutenberg-first theme to unlock its full potential. We also created the free Go theme in the WordPress theme repository as the perfect companion for CoBlocks.

\n

Going Beyond Gutenberg Blocks

\n

The vision for CoBlocks is to create a suite of Gutenberg blocks to help folks make beautiful websites easily. These newest releases of CoBlocks is the ultimate expression of that vision.

\n

Built With Developers in Mind

\n

Extensible, adaptable, and open source — CoBlocks is created with theme and plugin developers in mind. If you’re interested to jump in the project, there are opportunities for developers at all levels to get involved. Contribute to CoBlocks on GitHub and join the party. 🎉

\n","download_link":"https://downloads.wordpress.org/plugin/coblocks.2.16.0.zip","tags":{"blocks":"blocks","gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","page-builder":"page builder","wordpress-blocks":"wordpress blocks"},"donate_link":"","icons":{"1x":"https://ps.w.org/coblocks/assets/icon-128x128.jpg?rev=2243972","2x":"https://ps.w.org/coblocks/assets/icon-256x256.jpg?rev=2243972"},"wporg":true},{"name":"Simple Author Box","slug":"simple-author-box","version":"2.42","author":"WebFactory Ltd","author_profile":"https://profiles.wordpress.org/webfactory","requires":"4.6","tested":"5.8","requires_php":"5.6","rating":88,"ratings":{"1":9,"2":0,"3":5,"4":8,"5":75},"num_ratings":97,"support_threads":12,"support_threads_resolved":11,"active_installs":50000,"downloaded":897542,"last_updated":"2021-08-13 8:08am GMT","added":"2014-08-08","homepage":"https://wpauthorbox.com/","short_description":"Add a responsive author box with social icons to any post. Great author box for…","description":"

Simple Author Box adds a responsive author box at the end of your posts, showing the author name, author gravatar and author description – author bio. It also adds over 30 social profile fields on WordPress user profile screen, allowing to display the author social icons in the author box.

\n

Main Features

\n
    \n
  • Shows author gravatar, name, website, description (author bio) and social icons
  • \n
  • Fully customizable to match your theme design (style, color, size and text options)
  • \n
  • Nice looking on desktop, laptop, tablet or mobile phones
  • \n
  • Automatically insert the author box at the end of your post
  • \n
  • Option to manually insert the author box on your template file (single.php or author.php)
  • \n
  • Simple Author Box has RTL support
  • \n
  • Simple Author Box has AMP support
  • \n
  • Great for guest posts, and guest authors
  • \n
\n

Simple Author Box Pro Features

\n
\n

Premium features only available in Simple Author Box Pro

\n
    \n
  • Change author box position to before/after content
  • \n
  • Choose whether the author’s name should link to its website/page/none
  • \n
  • Select where to show author box on
  • \n
  • Add rotate effect on author avatar hover
  • \n
  • Option to open author website link in a new tab
  • \n
  • Option to add “nofollow” attribute on author website link
  • \n
  • Choose the author website’s position: right/left
  • \n
  • Social icons type, style, rotate effect, shadow effect, thin border
  • \n
  • Option to change the color palette
  • \n
  • Choose the font and font sizes for the author’s job title, website, name, and description
  • \n
  • Enable guest authors and co-authors
  • \n
  • Option to use guest authors as co-authors
  • \n
  • Top authors widget – displays the most popular authors based of comments
  • \n
  • Simple author box widget – displays the users selected
  • \n
\n
\n

Read more about the Simple Author Box advanced features.

\n","download_link":"https://downloads.wordpress.org/plugin/simple-author-box.2.42.zip","tags":{"author-bio":"author bio","author-box":"author box","author-profile-fields":"author profile fields","author-social-icons":"author social icons","responsive-author-box":"responsive author box"},"donate_link":"","icons":{"1x":"https://ps.w.org/simple-author-box/assets/icon-128x128.jpg?rev=1821054"},"wporg":true},{"name":"Genesis Blocks","slug":"genesis-blocks","version":"1.2.5","author":"StudioPress","author_profile":"https://profiles.wordpress.org/studiopress","requires":"5.3","tested":"5.8","requires_php":"7.1","rating":90,"ratings":{"1":1,"2":0,"3":1,"4":0,"5":10},"num_ratings":12,"support_threads":11,"support_threads_resolved":4,"active_installs":40000,"downloaded":195694,"last_updated":"2021-07-20 6:30pm GMT","added":"2020-08-25","homepage":"https://studiopress.com/genesis-pro/","short_description":"A collection of content blocks, sections, & full-page layouts for the block editor.","description":"

Genesis Blocks is a collection of page building blocks for the Gutenberg block editor. Building pages with the block editor and Genesis Blocks gives you more control to quickly create and launch any kind of site you want!

\n

Installing the customizable Genesis Blocks plugin adds a collection of beautiful, site-building blocks to help you customize page layouts, increase engagement, and get results for your business. Genesis Blocks provides everything from customizable buttons, to beautifully-designed page sections and full-page layout designs via the Section & Layout block.

\n

Along with the blocks themselves, Genesis Blocks extends the content creation experience by providing a library of page sections and full-page layouts, all available from within the block editor.

\n

Create compelling content faster.

\n

Create and use content quickly with prebuilt and custom content sections and full-page layouts.

\n

Enhance the Gutenberg editor.

\n

Additional content blocks and the layout selector make it easy to get the most value out of the block-based editor.

\n

Genesis Blocks currently includes the following blocks to help you build content and pages quickly and effortlessly:

\n
    \n
  • Section & Layout Block
  • \n
  • Advanced Columns Block
  • \n
  • Newsletter Block
  • \n
  • Pricing Block
  • \n
  • Post Grid Block
  • \n
  • Container Block
  • \n
  • Testimonial Block
  • \n
  • Inline Notice Block
  • \n
  • Accordion Block
  • \n
  • Share Icons Block
  • \n
  • Call-To-Action Block
  • \n
  • Customizable Button Block
  • \n
  • Spacer & Divider Block
  • \n
  • Author Profile Block
  • \n
  • Drop Cap Block
  • \n
\n

Do more with Genesis Pro

\n

For those wanting to level-up with Genesis Blocks, a Genesis Pro subscription brings even richer tooling and a bigger library of sections and layouts.

\n
    \n
  • 2 new blocks (more coming soon)
  • \n
  • 26 pre-built full-page layouts
  • \n
  • 56 pre-built sections
  • \n
  • Save & reuse your own sections & layouts
  • \n
  • Advanced block-level user permissions
  • \n
  • Access to and support for Genesis Framework & all of our 35 StudioPress-made premium child themes.
  • \n
  • Additional advanced features for the rest of the Genesis Product Suite
  • \n
\n

Genesis Pro includes even more value for modern WordPress content creators, marketers, and developers. Learn more about Genesis Pro here.

\n

Google AMP Support

\n

The Accelerated Mobile Pages (AMP) project is a publishing format created by Google to enhance site performance for mobile website users. AMP pages are specially designed for Google search users to quickly load website pages without using any extraneous data. Genesis Blocks has support for AMP built into each block!

\n

Help & Docs

\n

User and developer docs for Genesis Blocks can be found here.

\n","download_link":"https://downloads.wordpress.org/plugin/genesis-blocks.1.2.5.zip","tags":{"blocks":"blocks","editor":"editor","gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","page-builder":"page builder"},"donate_link":"https://studiopress.com","icons":{"1x":"https://ps.w.org/genesis-blocks/assets/icon-128x128.png?rev=2368839","2x":"https://ps.w.org/genesis-blocks/assets/icon-256x256.png?rev=2368840"},"wporg":true},{"name":"MathML Block","slug":"mathml-block","version":"1.2.0","author":"adamsilverstein","author_profile":"https://profiles.wordpress.org/adamsilverstein","requires":"5.0","tested":"5.5.5","requires_php":"5.6","rating":90,"ratings":{"1":0,"2":0,"3":0,"4":1,"5":1},"num_ratings":2,"support_threads":1,"support_threads_resolved":0,"active_installs":500,"downloaded":7397,"last_updated":"2020-10-01 11:05pm GMT","added":"2018-12-28","homepage":"","short_description":"A MathML block for the WordPress block editor (Gutenberg).","description":"

A MathML block for the WordPress block editor (Gutenberg).
\nRequires PHP 5.4+ and WordPress 5.0+.

\n

Development takes place on the GitHub repository: https://github.com/adamsilverstein/mathml-block.

\n

Screencast: https://cl.ly/c0f6bbfbc3b1

\n

What is MathML?

\n

Mathematical Markup Language is a mathematical markup language, an application of XML for describing mathematical notations and capturing both its structure and content. It aims at integrating mathematical formulae into World Wide Web pages and other documents.

\n

The MathML block uses MathJax to render MathML formulas in the editor and on the front end of a website. MathJax (https://www.mathjax.org/) is A JavaScript display engine for mathematics that works in all browsers.

\n

To test a MathML block and enter a formula, for example: \\[x = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}\\].

\n

To test using math formulas inline, type an formula into a block of text, select it and hit the ‘M’ icon in the control bar. For example: \\( \\cos(θ+φ)=\\cos(θ)\\cos(φ)−\\sin(θ)\\sin(φ) \\). Note: if you are copying and pasting formulas into the rich text editor, switching to HTML/code editor mode is less likely to reformat your pasted formula.

\n

This plugin is compatible with the official AMP plugin by rendering amp-mathml on AMP pages.

\n

Technical Notes

\n
    \n
  • Requires PHP 5.6+.
  • \n
  • Requires WordPress 5.0+.
  • \n
  • Issues and Pull requests welcome on the GitHub repository: https://github.com/adamsilverstein/mathml-block.
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/mathml-block.zip","tags":{"block":"block","block-editor":"block-editor","gutenberg":"gutenberg","math":"math","mathml":"mathml"},"donate_link":"","icons":{"1x":"https://ps.w.org/mathml-block/assets/icon-128x128.png?rev=2002452","2x":"https://ps.w.org/mathml-block/assets/icon-256x256.png?rev=2002452"},"wporg":true},{"name":"Calculated Fields Form","slug":"calculated-fields-form","version":"1.1.15","author":"CodePeople","author_profile":"https://profiles.wordpress.org/codepeople","requires":"3.0.5","tested":"5.8","requires_php":false,"rating":96,"ratings":{"1":20,"2":2,"3":4,"4":26,"5":675},"num_ratings":727,"support_threads":101,"support_threads_resolved":101,"active_installs":60000,"downloaded":3480499,"last_updated":"2021-09-06 2:13pm GMT","added":"2013-03-12","homepage":"https://cff.dwbooster.com","short_description":"Calculated Fields Form allows you to create both simple and rich forms, quickly like a professional. It includes a form builder with dynamic calculate …","description":"

The “Calculated Fields Form” plugin allows you to create web forms with calculated fields, whose values are dynamically calculated based on other fields’ values in the web form.

\n

The possibilities are unlimited. For example, you can create forms with financial calculations, date operations to create reservation forms, and calculate the product prices. The plugin includes text operations for editing, translation, or advertising services. There are more advanced operations available such as determining the distance between addresses or generating graphs. The resulting forms are 100% mobile responsive.

\n

The most impressive thing is that you don’t need to hire a programmer to create the forms. With basic knowledge, you will have a professional form in just five minutes.

\n

Creating a form is all visual. The “Calculated Fields Form” plugin includes a form editor with multiple controls. Such as text fields, numeric fields, currency fields, slider controls, email fields, radio buttons, checkboxes, container fields, page breaks to create multipage forms, and most importantly, calculated fields.

\n

The form editor includes a list of controls, a property bar to easily edit field properties, a dashboard where you can design your forms, and the attributes for form configuration. Also, the plugin comes with multiple predefined layouts to change the forms’ appearance. If there are not enough predefined layouts for your project, there is a style editor to customize the form’s design.

\n

The “Calculated Fields Form” plugin includes integration with popular page builders:

\n
    \n
  • Classic WordPress Editor
  • \n
  • Gutenberg Editor
  • \n
  • Elementor
  • \n
  • Page Builder by SiteOrigin
  • \n
  • Beaver Builder
  • \n
  • WPBakery Page Builder
  • \n
  • DIVI Builder
  • \n
\n

For other editors, it is possible to insert the form into the pages via its shortcode. Each web form has an associated shortcode that allows you to insert it wherever you want.

\n

Features

\n

Main features:

\n
    \n
  • Visual form builder with an intuitive and interactive interface.
  • \n
  • Includes general-purpose controls such as radio buttons, checkboxes, menu lists, date fields, slider controls, numeric fields, text currency fields, etc.
  • \n
  • Includes calculated fields whose values result from operations involving other form fields.
    \nInsert as many calculated fields in the form as you need.
  • \n
  • Contains an advanced formula editor associated with the calculated fields with syntax highlighting and error detection.
  • \n
  • Features many operations modules: mathematical operations, operations with dates, financial operations, distance operations, text management, operations for calling remote services, etc. The calculated fields can identify numbers and prices within the values of the fields.
  • \n
  • Distributed with several predefined forms that you can use as a starting point for your projects.
  • \n
  • Includes several design templates.
  • \n
  • Supports multi-pages forms by inserting page break controls between fields belonging to different pages.
  • \n
  • Allows the grouping of fields inside container controls (Div and Fieldset).
  • \n
  • Possible to define dependency rules between fields in the form, which is very useful in the design of wizards.
  • \n
\n

Other features:

\n
    \n
  • From the plugin configuration page, it is possible to duplicate a form by pressing the “Clone” button associated with it. By cloning a form, you can reuse the work already done.
  • \n
  • Includes a troubleshooting and optimization area.
  • \n
  • Allows you to disable forms in the indexing process to improve the speed of the website.
  • \n
  • Includes a version control in the forms to recover previous versions.
  • \n
\n

Predefined forms:

\n

“Calculated Fields Form” is distributed with five predefined sample forms.

\n
    \n
  1. Simple Calculator Operations
  2. \n
  3. Calculation with Dates (bookings with check-in and check-out dates)
  4. \n
  5. Ideal Weight Calculator
  6. \n
  7. Pregnancy Calculator
  8. \n
  9. Lease Calculator
  10. \n
\n

You can clone a sample form to implement your project, or create a new form from scratch.

\n
\n

Calculated Fields Form Commercial
\n The free version of the “Calculated Fields Form” plugin includes only basic functionality. Other distributions (Professional, Developer, and Platinum) are available with advanced functionalities, such as sending notification emails, integration with payment gateways and external services, controls for database’s connection (and connection to other data sources), complex operations, and many other features.

\n
\n

Features of the Profesional version:

\n
    \n
  • Includes all the features of the free version of the plugin.
  • \n
  • Submit the data collected by the forms and store it on the website for review.
  • \n
  • Send notification emails with the data collected by the form, as well as confirmation emails to the users.
  • \n
  • Integrate the form with PayPal and calculate the amount to be charged through a calculated field.
    \nPayments allow SCA (strong customer authentication), compatible with the new payment services (PSD 2) – Directive (EU).
  • \n
  • Export and import forms between different WordPress sites.
  • \n
  • Different mechanisms to protect forms, such as captcha, WordPress nonces, and honeypot fields.
  • \n
  • Associate “Thank You” page with the form, where you can show a summary of the form’s submission.
  • \n
  • Dashboard widget to show the last week’s submissions.
  • \n
  • Cache the forms to increase the rendering speed.
  • \n
  • Export the information submitted by the forms to a CSV file and use it with third-party tools such as Excel, OpenOffice, LibreOffice, or any other spreadsheet editor.
  • \n
\n

Features of the Developer version:

\n\n

Includes add-ons to extend the form features and make use of third-party plugins and external services

\n
    \n
  • Server-Side Equations add-on: define server-side equations.
  • \n
  • Verification Code add-on: verifies the user’s email by sending him a verification code and blocking the form’s submission until the verification code is entered.
  • \n
  • WooCommerce add-on: integrate forms with WooCommerce products and calculate their prices, dimensions, and weight at the runtime.
  • \n
  • SalesForce add-on: integrate the form with the SalesForce service.
  • \n
  • WebHooks add-on: send the information collected by the form to a WebHook URL to open countless possibilities. By connecting your form to services such as Zapier, Microsoft Flow, IFTTT, Workato, and others, you can connect to hundreds of third-party services (e.g. Zoho CRM, Dropbox, Mailchimp, Google Drive, Facebook, Twitter, etc.).
  • \n
  • User Permissions add-on: control the forms’ access, as well as allowing users to access and edit their data.
  • \n
  • User Registration Form add-on: build a user registration form that captures the user’s basic information and metadata.
  • \n
  • reCAPTCHA add-on: replace the basic captcha with Google reCAPTCHA to protect the forms.
  • \n
\n

Features of the Platinum version:

\n
    \n
  • Includes all the features of free, Professional, and Developer versions of the plugin.
  • \n
  • Unique Fields Values add-on: verifies that the values entered by users have not been used in previous submissions.
  • \n
  • Easy Digital Downloads add-on: integrate the forms into Easy Digital Downloads products and calculate their prices at the runtime.
  • \n
  • Google Analytics add-on: generate usage reports in “Google Analytics” for the users’ actions.
  • \n
  • PayPal Pro add-on: enable the payer’s credit card details to be entered directly through the website without any redirection to the PayPal website.
  • \n
  • Upload Files add-on: add uploaded files to the media library and extend the file types accepted by WordPress.
  • \n
  • DropBox Integration add-on: copy or move the uploaded files to a DropBox account.
  • \n
  • ip2location add-on: identify the users’ data using the ip2location databases.
  • \n
  • Google Places add-on: transform form fields into autocomplete address fields.
  • \n
  • Autocomplete Places add-on: transform form fields into autocomplete address fields by using the Photon API.
  • \n
  • Signature add-on: convert form fields into “Signature” fields, allowing the users to sign the form with a mouse or touchscreen.
  • \n
  • iCal add-on: send iCal file in the notification emails to import the events into most popular calendars like Outlook and Google Calendar.
  • \n
  • CSV Generator add-on: export the information collected by the form to CSV files and attach these to the notification emails.
  • \n
  • PDF Generator add-on: generate PDF files with the information collected by the forms and attach them to the notification emails.
  • \n
  • WebMerge add-on: integrate the forms with FormStack documents (formerly WebMerge) to generate PDF and Office documents at runtime with the information collected by the web forms.
  • \n
  • PrintFriendly add-on: generate PDF files with the PrintFriendly API and attach the resulting files to the notification emails.
  • \n
  • Mailchimp add-on: add new members to the MailChimp account.
  • \n
  • Mautic add-on: add new contacts (or update existing ones) into the Mautic Service.
  • \n
  • HubSpot add-on: add/update contacts in HubSpot, using the information collected by the form.
  • \n
  • Emma add-on: add new members to the Emma service.
  • \n
  • Twilio add-on: send notification messages (SMS) in the forms’ submissions.
  • \n
  • MailPoet add-on: add new subscribers to MailPoet’s Mailing Lists (MailPoet versions 2 and 3).
  • \n
  • AffiliateWP add-on: integrate the forms with the AffiliateWP plugin.
  • \n
  • Authorize.Net add-on: accept payments via Authorize.Net from the form.
  • \n
  • Stripe add-on: accept payments via the Stripe payment gateway from the form.
  • \n
  • Skrill Payments Integration add-on: integrate with the Skrill Moneybookers payment gateway.
  • \n
  • TargetPay (iDeal) add-on add-on: integrate with iDeal, the popular Dutch payment method.
  • \n
  • Mollie (iDeal) add-on: accept payments via iDeal.
  • \n
  • RedSys / Servired / Sermepa add-on provides: a secure interface for accepting credit card payments from most banks in Spain.
  • \n
  • PayTM add-on: a secure interface for accepting payments with credit cards, debit cards, net banking, wallets, and EMI.
  • \n
  • SagePay add-on: a secure interface for accepting payments via SagePay.
  • \n
  • Sage Payment add-on: a secure interface for accepting payments through a secure SSL checkout system for both bankcard and virtual check transactions.
  • \n
\n

Please keep the plugin updated. Updates contain bug fixes as well as new features. The WordPress directory distributes the updates for the free version of the plugin. But for commercial versions, it would be necessary to register your copy of the plugin. The following link describes the registration process: CLICK HEREThis section mainly contains notes on features of the form builder that are too detailed to include in the main description.

\n

Conditional rules

\n

It is possible to show or hide form fields (dependent fields) based on the options selected in checkbox fields, radio buttons, the options selected in dropdown menus, or the result of calculated fields.

\n

The value of a dependent field is zero when it is hidden/disabled. The plugin excludes the disabled form fields from the submission.

\n

Additional details about the use of dependencies

\n

Predefined values

\n

The predefined values in the fields have two possible uses:

\n

1- To fill the field by default. This makes it easier for the end-user to enter values.

\n

2- Hint of the values to be entered in the field (like “Enter your name”). To use the predefined value as a placeholder, you must tick the “Hide predefined value on click” checkbox. The value will disappear once the user starts filling in the field. The calculated fields’ equations ignore placeholders.

\n

The “User Instructions” attribute

\n

The “User instructions” attribute in the field settings allows you to instruct the user on how to fill in the field. By default, the instructions appear as smaller text on the public website. But they can be configured as tooltips.

\n

Adding CSS layout keywords

\n

The “Add CSS layout keywords” attribute in the fields settings allows you to apply CSS styles to fields. You must only enter the name of the CSS class names, and not their definitions.

\n

You can define the CSS classes via the “Customize Form Design” attribute in the “Form Settings” tab. This attribute contains a CSS editor with syntax highlighting and error checking.

\n

If you want to assign several class names to the field, separate them by space characters.

\n

The plugin includes multiple predefined classes that you can assign to the form fields.

\n

More information about the form’s design can be found by reading the following post in the plugin’s blog:

\n

Customizing the form’s design

\n

The classes listed below allow you to align two, three, or four fields on the same line:

\n
column2\ncolumn3\ncolumn4\n
\n

For example, if you want to put two fields on the same line, give both fields the class name “column2”.

\n

There are other variants for displaying several fields on the same line, such as container fields (Div or Fieldset). Container fields allow you to select the number of columns in your configuration. The following post describes all the alternatives for positioning the fields in the form:

\n

Formatting the form (distributing the fields in columns)

\n

Multi-page form

\n

To create multi-page forms, you must insert “Page break” controls between fields belonging to different pages.

\n

When the user presses the “Next Page” button, the plugin validates the fields in the current form. If there is any validation error (such as an unfilled required field), the plugin stops the “Next page” action.

\n

Hidden calculated fields

\n

Calculated fields include a checkbox in the configuration that allows them to be hidden from the public website. This feature is essential in those fields that are used to calculate intermediate values or when we want to show the results only in emails or thank you pages.

\n

Equation / Formula format for calculated fields

\n

Below, some possible formulas are included as examples, but the possibilities are endless.

\n
    \n
  • \n

    With simple mathematical operations:

    \n
    fieldname1 + fieldname2\n\nfieldname1 * fieldname2\n\nfieldname1 / fieldname2\n\nfieldname1 - fieldname2\n\nfieldname1 - fieldname2\n
    \n
  • \n
  • \n

    With mathematical operations involving multiple fields and grouped fields:

    \n
    fieldname1 * (fieldname2 + fieldname3)\n
    \n
  • \n
  • \n

    With rounding operations. Round the result to two decimal places:

    \n
    PREC(fieldname2 / fieldname3, 2)\n
    \n
  • \n
  • \n

    There are infinite number of formulas that can be created using complex structures. For example, the following formula includes conditional statements:

    \n
    (function () {\nif (100 < fieldname3) return fieldname1 + fieldname2;\nif (fieldname3 <= 100) return fieldname1 * fieldname2;\n})();\n
    \n
  • \n
  • \n

    For complex formulas/equations you must use the function format with return statement to return the result to the calculated field:

    \n
     (function () {\n    var result = 0;\n    /* Your code here */\n    return result;\n}) ();\n
    \n
  • \n
\n

Operations and operators to use in equations/formulas

\n

One of the “Calculated Fields Form” strengths is the ability to use any valid JavaScript code to implement the equations/formulas.

\n

However, the plugin includes a wide variety of operations and operators to simplify the development process.

\n

Mathematical Operations and Operators

\n

Conditional Operations

\n

Field Handling Operations

\n

Operations for interacting with external services

\n

Operations for handling URLs and query strings

\n

In addition to the operation modules listed above, the Developer and Platinum versions of the plugin include additional modules:

\n

Date Time Operations

\n

Financial Operations

\n

Distance and Travel Time Operations

\n

Operations to generate charts

\n

Controls available in the form generator of the “Calculated Fields Form”

\n

The complete list of controls is available from this link: CLICK HERE

\n

Create JavaScript variables from parameters received by “GET” or “POST”, “SESSION” variables, or “COOKIES” to use in the equations

\n

The plugin includes the shortcode [CP_CALCULATED_FIELDS_VAR] to generate JavaScript variables from parameters received by “GET” or “POST”, “SESSION” variables, or “COOKIES”:

\n
[CP_CALCULATED_FIELDS_VAR name=\"...\"]\n
\n

In the shortcode, you must replace the “…” symbols with the name of the parameter or variable. It will be the same name for the JavaScript variable.

\n

For example:

\n
[CP_CALCULATED_FIELDS_VAR name=\"varname\"]\n
\n

You can use the variables generated through the shortcode [CP_CALCULATED_FIELDS_VAR] in the formulas of the calculated fields: fieldname1*varname

\n

The complete list of parameters accepted by the variables shortcode is available at the following link: CLICK HERE

\n

Tips for calculating prices

\n

One of the most frequent uses of our plugin is for price calculation. When displaying the price of a product, you may want to split the form into two pages. The first page would request the information needed to calculate the price, and the second page would include the calculated field with the final price. Also, you could use the “Instruct. Text” fields to indicate the terms, conditions, and validity period of the offer.

\n

Note that you can make the “Instruct. Text” fields dependent on the calculated value. This allows you to vary the text displayed to the user depending on the calculated price, as the terms, conditions, or offers often depend on the transaction amount.

\n

Add-ons

\n

The add-ons are only distributed with the Developer and Platinum versions of the plugin.

\n

The plugin lists the add ons in the “Add-ons area” of the settings page. To enable the add-ons, you must tick their corresponding checkbox and press the “Activate/Deactivate Add-ons” button.

\n

Server-Side Equations add-on – included in the Developer and Platinum versions of the plugin

\n

Define equations with PHP code on the server-side. The calculated fields call the server-side equations via AJAX.

\n

CLICK HERE for additional information

\n

Verification Code add-on – included in the Developer and Platinum versions of the plugin

\n

The “Verification Code” add-on allows verifying the users’ emails by sending a verification code and blocking the form’s submission until a valid code is entered.

\n

CLICK HERE for additional information

\n

Unique Fields Values add-on – included in the Platinum version of the plugin

\n

The “Unique Fields Values” add-on verifies that the values entered by users have not been used in previous submissions. It allows to enter simple and complex verification rules (one or multiple fields separated by comma symbols).

\n

CLICK HERE for additional information

\n

WooCommerce add-on – included in the Developer and Platinum versions of the plugin

\n

Integrate the forms created by the “Calculated Fields Form” with WooCommerce products and calculate their prices, weights, dimensions, and more at the runtime.

\n

CLICK HERE for additional information

\n

Easy Digital Downloads add-on – included in the Platinum version of the plugin

\n

Integrate forms created by the “Calculated Fields Form” with the Easy Digital Downloads products, and calculate their price dynamically at the runtime.

\n

CLICK HERE for additional information

\n

SalesForce add-on – included in the Developer and Platinum versions of the plugin

\n

Add new leads to a SalesForce account using the data collected by the forms.

\n

CLICK HERE for additional information

\n

WebHook add-on – included in the Developer and Platinum versions of the plugin

\n

Post the information collected by the forms to WebHook URLs.

\n

Through connecting the forms created by the plugin with services like Zapier, Microsoft Flow, Workato, or IFTTT (and many others), you will have access to hundreds of third-party services, like Zoho CRM, Dropbox, Mailchimp, Evernote, Google Drive, Facebook, Twitter, and more than 300 services https://zapier.com/zapbook/apps/, https://flow.microsoft.com/, https://ifttt.com/discover

\n

CLICK HERE for additional information

\n

User Permissions add-on – included in the Developer and Platinum versions of the plugin

\n

Control access to forms. Access can be restricted to registered users, users with certain roles, or to specific users.

\n

The add-on adds a new shortcode to the plugin to list the data submitted by the logged-in user (it is possible to insert the new shortcode into the user’s profile) and assign user permissions to edit their information or delete an entry.

\n

Limit the number of submissions (e.g. one submission per form/user).

\n

CLICK HERE for additional information

\n

User Registration Form add-on – included in the Developer and Platinum versions of the plugin

\n

Build user registration forms. The form can collect basic user information and metadata required by other plugins.

\n

CLICK HERE for additional information

\n

reCAPTCHA add-on – included in the Developer and Platinum versions of the plugin

\n

Protect forms using Google reCAPTCHA instead of the basic captcha distributed with the plugin, as reCAPTCHA is more visual and intuitive than traditional captchas.

\n

CLICK HERE for additional information

\n

Google Analytics add-on – included in the Platinum version of the plugin

\n

Generate usage reports in “Google Analytics” for the users’ actions.

\n

CLICK HERE for additional information

\n

PayPal Pro add-on – included in the Platinum version of the plugin

\n

Allow the user to enter their credit card details directly on your website without redirecting them to the PayPal website. Once the user has filled the form fields and clicked the submit button, the payment is processed and the posted data (excluding the credit card information) is stored in the WordPress database.

\n

CLICK HERE for additional information

\n

Upload Files add-on – included in the Platinum version of the plugin

\n

Every commercial version of the plugin includes the “Upload File” control to upload files from the form. However, the “Upload Files” add-on allows the uploaded files to be added to the Media Library and be accessed from the pages and posts of the website.

\n

WordPress restricts the file types that can be uploaded. The “Uploads Files” add-on allows the list of accepted files to be extended.

\n

CLICK HERE for additional information

\n

DropBox Integration add-on – included in the Platinum version of the plugin

\n

Copy or move files uploaded through the forms to a DropBox account.

\n

CLICK HERE for additional information

\n

ip2location add-on – included in the Platinum version of the plugin

\n

Use the ip2location databases to identify additional user information based on their IP. Address such as country, city, coordinates, weather station, time zone, ZIP code, etc.

\n

CLICK HERE for additional information

\n

Google Places add-on – included in the Platinum version of the plugin

\n

Transform fields into autocomplete address fields calling the Google Places API.

\n

CLICK HERE for additional information

\n

Autocomplete Places add-on – included in the Platinum version of the plugin

\n

Transform fields into autocomplete address fields by calling the Photon API.

\n

CLICK HERE for additional information

\n

Signature add-on – included in the Platinum version of the plugin

\n

Transform fields into “Signature” fields to allow the users to sign the form with their mouse or touchscreens.

\n

CLICK HERE for additional information

\n

iCal add-on – included in the Platinum version of the plugin

\n

Send the users iCal files attached to the confirmation emails to import events into the most popular calendars like Outlook and Google Calendar.

\n

CLICK HERE for additional information

\n

CSV Generator add-on – included in the Platinum version of the plugin

\n

Export the information collected by the form to CSV files and attach them to the notification emails.

\n

CLICK HERE for additional information

\n

PDF Generator add-on – included in the Platinum version of the plugin

\n

An experimental add-on that generates PDF files with the information collected by the forms and attaches them to the notification emails.

\n

CLICK HERE for additional information

\n

WebMerge add-on – included in the Platinum version of the plugin

\n

Integrate the forms with the FormStack Documents service (formerly WebMerge) to generate PDF and Office documents with the information collected from the form.

\n

CLICK HERE for additional information

\n

Integrate the form with the Silverpop service (now: IBM Watson Campaign Automation) CLICK HERE for additional information

\n

PrintFriendly add-on – included in the Platinum version of the plugin

\n

Send the information collected by the forms to PrintFriendly and attach the resulting PDF files to the notification emails.

\n

CLICK HERE for additional information

\n

Mailchimp add-on – included in the Platinum version of the plugin

\n

Add new members to the MailChimp lists with the information collected by the form.

\n

CLICK HERE for additional information

\n

Mautic add-on – included in the Platinum version of the plugin

\n

Add/update contacts in the Mautic service with information collected by the forms.

\n

CLICK HERE for additional information

\n

HubSpot add-on – included in the Platinum version of the plugin

\n

Add/update HubSpot contacts with information collected by the forms.

\n

CLICK HERE for additional information

\n

Emma add-on – included in the Platinum version of the plugin

\n

Connect the forms to the Emma service to add new members to Emma groups.

\n

CLICK HERE for additional information

\n

Twilio add-on – included in the Platinum version of the plugin

\n

Send notification messages (SMS) through Twilio in the form’s submissions.

\n

CLICK HERE for additional information

\n

MailPoet add-on – included in the Platinum version of the plugin

\n

Adds subscribers to MailPoet Mailing Lists (MailPoet versions 2 and 3).

\n

CLICK HERE for additional information

\n

AffiliateWP add-on – included in the Platinum version of the plugin

\n

Integrate the forms with the “AffiliateWP” plugin.

\n

CLICK HERE for additional information

\n

Authorize.Net add-on – included in the Platinum version of the plugin

\n

The Authorize.net Server Integration Method (Authorize.net SIM) is a hosted payment processing solution that handles all of the steps in processing a transaction.

\n

CLICK HERE for additional information

\n

Stripe add-on – included in the Platinum version of the plugin

\n

The Stripe Payments add-on (www.stripe.com) provides a way to accept all major cards from customers around the world.

\n

CLICK HERE for additional information

\n

Skrill Payments Integration add-on – included in the Platinum version of the plugin

\n

An interface for accepting payments through secure pages.

\n

You can accept cards, more than 20 local payment methods, and over 80 direct bank transfer connections with a single integration.

\n

CLICK HERE for additional information

\n

TargetPay (iDeal) add-on – included in the Platinum version of the plugin

\n

Integrate with iDeal, the most popular Dutch payment method. The integration is made via TargetPay: https://www.targetpay.com/info/ideal?setlang=en

\n

CLICK HERE for additional information

\n

Mollie (iDeal) add-on – included in the Platinum version of the plugin

\n

Integrate with iDeal, the popular Dutch payment method.

\n

CLICK HERE for additional information

\n

RedSys / Servired / Sermepa add-on – included in the Platinum version of the plugin

\n

A secure interface for accepting credit card payments through most banks in Spain (Sabadell, Banco Popular, BBVA, Santander, Bankia-Caixa, Bankinter, etc.)

\n

CLICK HERE for additional information

\n

PayTM add-on – included in the Platinum version of the plugin

\n

A secure interface for accepting payments through credit cards, debit cards, net banking, wallets, and EMI. With over 100 million PayTM users in India, your customers will appreciate the option to pay with their trusted PayTM Wallet.

\n

CLICK HERE for additional information

\n

SagePay add-on – included in the Platinum version of the plugin

\n

A secure interface for accepting payments through SagePay.

\n

CLICK HERE for additional information

\n

Sage Payment add-on – included in the Platinum version of the plugin

\n

An interface for accepting payments through a secure SSL-checkout system for both bank cards and virtual check transactions. All authorized and approved transactions will be delivered to your current bank card and/or virtual check batches, viewable within the Virtual Terminal for order processing and settlement.

\n

CLICK HERE for additional information

\n","download_link":"https://downloads.wordpress.org/plugin/calculated-fields-form.zip","tags":{"calculator":"calculator","contact-form":"contact form","form":"form","form-builder":"form builder","quote-form":"quote form"},"donate_link":"http://cff.dwbooster.com","icons":{"1x":"https://ps.w.org/calculated-fields-form/assets/icon-128x128.jpg?rev=1734377","2x":"https://ps.w.org/calculated-fields-form/assets/icon-256x256.jpg?rev=1734377"},"wporg":true},{"name":"All in One SEO – Best WordPress SEO Plugin – Easily Improve SEO Rankings & Increase Traffic","slug":"all-in-one-seo-pack","version":"4.1.3.3","author":"All in One SEO Team","author_profile":"https://profiles.wordpress.org/smub","requires":"4.9","tested":"5.8","requires_php":"5.4","rating":90,"ratings":{"1":163,"2":21,"3":15,"4":58,"5":1499},"num_ratings":1756,"support_threads":123,"support_threads_resolved":113,"active_installs":2000000,"downloaded":82998620,"last_updated":"2021-08-16 1:02pm GMT","added":"2007-03-30","homepage":"https://aioseo.com/","short_description":"The original WordPress SEO plugin. Improve your WordPress SEO rankings and traffic with our comprehensive SEO tools and smart SEO optimizations.","description":"

AIOSEO – The Best WordPress SEO Plugin & Toolkit

\n

All in One SEO for WordPress is the original WordPress SEO plugin started in 2007. Over 2 million smart website owners use AIOSEO to properly setup WordPress SEO, so their websites can rank higher in search engines.

\n

We believe you shouldn’t have to hire an SEO expert or developer to properly setup WordPress SEO. That’s why we built AIOSEO as the most comprehensive WordPress SEO plugin and marketing toolkit, so you can improve your website’s SEO rankings and uncover new SEO growth opportunities in less than 10 minutes.

\n

At All in One SEO (AIOSEO), user experience is our #1 priority. From website SEO setup to ongoing SEO optimization, our team of SEO experts have created easy to follow SEO workflows that will help you outrank your competitors in search results. This is why many industry leaders award AIOSEO as the most beginner friendly WordPress SEO plugin that’s both EASY and POWERFUL!

\n

AIOSEO’s WordPress SEO plugin features are highly optimized for Google and other popular search engine algorithm because we follow the most up to date SEO standards and SEO best practices. We can honestly say that AIOSEO is the best WordPress SEO plugin in the world.

\n
\n

AIOSEO Pro
\n This plugin is the lite version of the All in One WordPress SEO Pro plugin that comes with all the SEO features you will ever need to rank higher in search engines including smart SEO schema markup, advanced SEO modules, powerful SEO sitemap suite, local SEO module, Google AMP SEO, WooCommerce SEO, and tons more. Click here to purchase the best premium WordPress SEO plugin now!

\n
\n

We took the pain out of optimizing WordPress SEO and made it easy. Here’s why smart business owners, SEO experts, marketers, and developers love AIOSEO, and you will too!

\n

\n

Properly Setup WordPress SEO (without Hiring an Expert)

\n

AIOSEO makes it easy to setup WordPress SEO, the RIGHT WAY. Our smart WordPress SEO setup wizard helps you optimize your website’s SEO settings based on your unique industry needs.

\n

In less than 10 minutes, you will be able to setup all the advanced WordPress SEO features like XML sitemaps, optimized search appearance, SEO meta title, SEO meta description, SEO keywords, Open Graph SEO Knowledge Panel information, social media integration, SEO search console / webmaster tool connections, local SEO, schema markup for SEO, and more.

\n

But don’t just take our word. See what another website owner like yourself is saying:

\n
\n

Swift, honest, full control. After all these years and having used almost every WP SEO plugin I’m amazed by AIOSEO’s depth, simplicity and fast workflow ❤️
\n @aaronbol

\n
\n

Optimize Your Pages for Higher SEO Rankings with TruSEO Analysis

\n

Creating SEO optimized content used to be hard. Why?

\n

Because most business owners aren’t SEO experts.

\n

That’s why we created the TruSEO score. This gives you a more in-depth SEO optimization analysis and an actionable SEO checklist, so you can easily optimize your website pages for any keyword to get higher SEO rankings and maximum traffic.

\n

Our SEO content analysis tool is enabled by default in both the Gutenberg block editor and Classic Editor, so you can quickly optimize your blog posts and pages for your SEO keywords to get higher SEO rankings.

\n

Our SEO readability analysis gives you further insights on how to improve your content for maximum SEO benefits.

\n

The best part about TruSEO analysis is that you can use it to optimize your posts / pages for unlimited SEO keywords.

\n

Seamless SEO Integrations with Webmaster Tools & Social Media

\n

All in One SEO for WordPress offers seamless integration with popular social media platforms like Facebook, Twitter, Pinterest, YouTube, LinkedIn, Instagram, and more.

\n

This ensures that your website preview is optimized for both search engines (SEO), and social media networks.

\n

AIOSEO also makes it easy to connect your website with Google Search Console, Bing webmaster tools, Yandex webmaster tools, Baidu webmaster tools, Google Analytics, and all other SEO webmaster tools.

\n

This helps you easily measure your SEO results and progress.

\n
\n

I’m a professional SEO and used many tools and extensions. Regarding simplicity, individuality and configurability All in One SEO Pro is by far the best SEO plugin out there for WordPress.
\n Joel Steinmann

\n
\n

Smart XML Sitemaps and Rich Snippets (SEO Schema Markup)

\n

Proper website SEO markup plays an important role in improving SEO rankings. That’s why smart SEO experts use AIOSEO for on-page SEO optimization.

\n

Aside from the comprehensive WordPress XML sitemap feature, we also offer News SEO sitemap and Video SEO sitemap to help you improve your website’s SEO ranking and get more traffic.

\n

AIOSEO comes with built-in smart SEO schema markup feature to help you get more traffic through SEO rich snippets, Google featured snippets, breadcrumb site links in SEO, and image SEO search results.

\n
\n

The best SEO plugin. All in One SEO is the best SEO Plugin. I personally find it better than Yoast. This plugin offers so much freedom in configuration.
\n hanapupu

\n
\n

Local SEO, WooCommerce SEO, Google AMP, and More

\n

All in One SEO is the most comprehensive WordPress SEO plugin / marketing toolkit in the world.

\n

We offer complete support for Google Knowledge Graph and Schema.org markup for local businesses. You can add multiple business locations, opening hours, contact info (business email, business phone, business address, etc) and more with our Local SEO module.

\n

AIOSEO also makes WooCommerce SEO easy. With our SEO plugin, you can optimize your product pages and product categories for better SEO rankings (with just a few clicks).

\n

Since AIOSEO is the original WordPress SEO plugin, we have SEO integrations with all popular WordPress plugins such as membership plugin SEO, landing page plugin SEO, Semrush SEO integration, etc. AIOSEO also offers Google AMP integration and works seamlessly with all popular speed & caching plugins.

\n
\n

Best SEO Plugin for WordPress. We continue to use All in One SEO on all our WordPress sites and Clients sites, and we recommend it too all other clients.
\n MySEOGuy

\n
\n

Since SEO is an essential feature, AIOSEO is a must have plugin for every website!

\n

SEO Redirection Manager and 404 Monitoring

\n

AIOSEO Redirection manager helps you set up proper 301 redirects to improve your SEO rankings.

\n

We also support other advanced SEO redirects including 302 redirects, 307 redirects, 410 redirection, 404 redirects, REGEX redirects for advanced SEO needs, and more.

\n

We have an automatic 404 error monitor that helps you track and redirect 404 errors, so you can prevent losing SEO rankings.

\n

Since redirect speed is important for SEO, we built in both Apache / NGINX server level redirects to help you get maximum SEO benefit.

\n

Full All in One SEO Feature List

\n
    \n
  • WordPress SEO Setup Wizard – Properly setup WordPress SEO in less than 10 minutes.
  • \n
  • On-page SEO Optimization – optimize SEO code markup (without hiring a developer)
  • \n
  • TruSEO score – detailed content & readability analysis to help you optimize your pages for higher SEO rankings.
  • \n
  • Smart Meta Title & Description – Automatic SEO generation, dynamic SEO smart tags, and more.
  • \n
  • Unlimited SEO Keywords – our SEO content analyzer helps you optimize your pages for unlimited SEO keywords.
  • \n
  • XML Sitemap – Advanced XML sitemaps to boost your SEO rankings.
  • \n
  • Video SEO Sitemap – Improve your SEO rankings with video sitemap.
  • \n
  • News SEO Sitemap – Increase your SEO traffic with Google News sitemap.
  • \n
  • RSS SEO Sitemap – Improve SEO crawl frequency with RSS sitemap.
  • \n
  • Automatic Image SEO – Our image SEO module helps your images rank higher.
  • \n
  • Local Business SEO – Improve your local business SEO presence with our local SEO module.
  • \n
  • Multiple location SEO – Great for SEO optimization for businesses with multiple local store locations.
  • \n
  • Rich Snippets Schema – Get better click through rate (CTR) and increase SEO rankings with rich snippets schema.
  • \n
  • SEO Knowledge Graph Support – Improve your website’s search appearance with SEO Knowledge panel.
  • \n
  • Advanced SEO Schema – Easily add advanced SEO schema markups like FAQ schema, product schema, recipe schema (food blogger SEO), software application schema markup (SaaS SEO), online course schema (for course SEO), and more.
  • \n
  • Sitelinks Search Box – Helps you get a search box in Google SEO rankings.
  • \n
  • Google Site Links – Our SEO markup can help you get sitelinks for your brand.
  • \n
  • Robots.txt Editor – Control what SEO robots can see with our easy SEO robots.txt editor.
  • \n
  • SEO Audit Checklist – Improve your website’s SEO ranking with our SEO audit checklist.
  • \n
  • Google Search Console – Connect your WordPress site with Google webmaster tools to see additional SEO insights.
  • \n
  • Search Engine Verification Tools – Easily integrate with other popular SEO webmaster tools to improve search visibility.
  • \n
  • Google AMP SEO – Improve your mobile SEO rankings with Google AMP SEO.
  • \n
  • Advanced SEO Canonical URLs – Prevent duplicate content in SEO with automatic canonical URLs and boost your SEO rankings.
  • \n
  • Advanced Robots Meta SEO Settings – granular controls for no index, no follow, no archive, no snippet, max snippet, max video, and more.
  • \n
  • RSS Content for SEO – Stop content theft from hurting your SEO rankings with our RSS Content tool.
  • \n
  • User Access Control – Control who can manage your SEO settings with our advanced SEO access control.
  • \n
  • Competitor Site SEO Analysis – Use our competitor SEO analysis to outrank them by improving your website’s SEO optimization.
  • \n
  • Smart Breadcrumbs – Add Breadcrumb navigation to improve user experience and boost your SEO rankings. Comes with full SEO JSON+LD support.
  • \n
  • Smart SEO Redirects – Setup proper 301 redirects to improve your SEO rankings.
  • \n
  • 404 Error Monitor for SEO – Monitor website 404 errors and set up proper SEO redirects to prevent losing SEO rankings.
  • \n
  • Title and Nofollow for SEO – We make it easy for you to add title and nofollow to external links to improve SEO rankings.
  • \n
\n

WordPress SEO Integrations

\n
    \n
  • WooCommerce SEO – optimize your WooCommerce product pages and improve your WooCommerce store’s SEO rankings.
  • \n
  • MemberPress SEO – optimize your MemberPress course pages and improve your membership site’s SEO rankings.
  • \n
  • Elementor SEO – add SEO optimization for your Elementor landing pages.
  • \n
  • LearnDash SEO – SEO optimization for LearnDash courses.
  • \n
  • Facebook SEO – SEO optimize your website preview on Facebook.
  • \n
  • Twitter SEO – SEO optimize your website preview on Twitter.
  • \n
  • Pinterest SEO – SEO optimize your website preview on Pinterest.
  • \n
  • Open Graph Support – improve your SEO with open graph meta data.
  • \n
  • Knowledge Panel SEO – improve website SEO apperance by adding social media profile links for Facebook, Twitter, Wikpedia, Instagram, LinkedIn, Yelp, YouTube, and more.
  • \n
  • SEO Webmaster Tool Content – Connect your WordPress site with various webmaster tools to improve SEO rankings.
  • \n
  • Semrush SEO integration – See additional SEO keywords and relevant SEO keyphrases with our Semrush SEO integration.
  • \n
\n

WordPress SEO Plugin Importer

\n
    \n
  • Yoast SEO Importer – easily switch from Yoast SEO to AIOSEO with our full SEO migration wizard that includes SEO keywords, SEO title, meta description, XML sitemaps and more.
  • \n
  • Yoast SEO Premium Importer – easily import Yoast SEO premium settings including SEO redirects to AIOSEO with our full SEO migration wizard.
  • \n
  • RankMath SEO Importer – easily switch from RankMath SEO to AIOSEO with our SEO migration wizard.
  • \n
  • SEO Settings Backup – create a backup of your AIOSEO settings.
  • \n
  • Advanced SEO Import / Export – easily import / export AIOSEO settings from one site to another.
  • \n
  • Redirection Importer – import your SEO redirects from the Redirection plugin with our SEO migration wizard.
  • \n
  • Simple 301 Redirects Importer – import your SEO redirects from Simple 301 redirets with our SEO migration wizard.
  • \n
  • Safe Redirection Manager – easily import SEO redirects from safe redirect manager with our SEO migration wizard.
  • \n
\n

After reading this feature list, you can probably imagine why AIOSEO is the best WordPress SEO plugin in the market.

\n

Give AIOSEO a try.

\n

Want to unlock more SEO features? Upgrade to AIOSEO Pro.

\n

Credits

\n

This plugin is created by Benjamin Rojas and Syed Balkhi.

\n

Branding Guideline

\n

AIOSEO® is a registered trademark of Semper Plugins LLC. When writing about the WordPress SEO plugin by AIOSEO, please use the following format.

\n
    \n
  • AIOSEO (correct)
  • \n
  • All in One SEO (correct)
  • \n
  • AIO SEO (incorrect)
  • \n
  • All in 1 SEO (incorrect)
  • \n
  • AISEO (incorrect)
  • \n
\n

What’s Next

\n

If you like our WordPress SEO plugin, then consider checking out our other projects:

\n
    \n
  • OptinMonster – Get More Email Subscribers with the most popular conversion optimization plugin for WordPress.
  • \n
  • WPForms – #1 drag & drop online form builder for WordPress.
  • \n
  • MonsterInsights – See the Stats that Matter and Grow Your Business with Confidence. Best Google Analytics Plugin for WordPress.
  • \n
  • SeedProd – Create beautiful landing pages with our powerful drag & drop landing page builder.
  • \n
  • WP Mail SMTP – Improve email deliverability for your contact form with the most popular SMTP plugin for WordPress.
  • \n
  • RafflePress – Best WordPress giveaway and contest plugin.
  • \n
  • Smash Balloon – #1 social feeds plugin for WordPress.
  • \n
  • SearchWP – advanced WordPress search plugin.
  • \n
  • PushEngage – best web push notification plugin.
  • \n
\n

Visit WPBeginner to learn from our WordPress Tutorials and find out about other best WordPress plugins.

\n","download_link":"https://downloads.wordpress.org/plugin/all-in-one-seo-pack.4.1.3.3.zip","tags":{"google-search-console":"google search console","meta-description":"meta description","schema":"schema","seo":"seo","xml-sitemap":"xml sitemap"},"donate_link":"","icons":{"1x":"https://ps.w.org/all-in-one-seo-pack/assets/icon.svg?rev=2443290","2x":"https://ps.w.org/all-in-one-seo-pack/assets/icon-256x256.png?rev=2443290","svg":"https://ps.w.org/all-in-one-seo-pack/assets/icon.svg?rev=2443290"},"wporg":true},{"name":"Translate WordPress – Weglot Translate","slug":"weglot","version":"3.3.6","author":"Weglot Translate team","author_profile":"https://profiles.wordpress.org/remyb92","requires":"4.5","tested":"5.8","requires_php":"5.6","rating":96,"ratings":{"1":39,"2":7,"3":6,"4":27,"5":1206},"num_ratings":1285,"support_threads":8,"support_threads_resolved":3,"active_installs":40000,"downloaded":1204282,"last_updated":"2021-08-18 2:44pm GMT","added":"2015-09-27","homepage":"http://wordpress.org/plugins/weglot/","short_description":"Translate your WordPress website in 110+ languages within minutes with Weglot Translate, without any coding.","description":"

Weglot Translate is the leading WordPress translation plugin, trusted by 60,000+ users worldwide. Translate your WordPress website into 110+ languages within minutes, no coding required.

\n

Increase visibility and boost conversions with ease by adding multilingual functionality. Weglot Translate is fully optimized for SEO, with every translated page automatically indexed by Google. Say hello in multiple languages to millions of new visitors.

\n

Make your website multilingual in minutes with a free trial. Visit https://weglot.com/ to learn more!

\n

How Weglot Translate works

\n\n

Why Weglot Translate

\n

It’s easy to install: Weglot Translate is quick to set up to have a multilingual WordPress website ready, instantly. Reach out to millions of new visitors worldwide with a few clicks, without any coding.

\n

It’s built for maximum compatibility: Weglot Translate is fully compatible with all platforms, WordPress themes, and plugins. From WooCommerce product descriptions to Elementor order forms, everything is translated into the languages of your choice. So you can focus on your content, not the technical details.

\n

It’s optimized for SEO: Weglot Translate follows Google’s best practices for multilingual website translation, serving all translated web pages with clean source code. Google will automatically index every translated page with dedicated URLs.

\n

It’s easy to set and forget: Weglot Translate automatically detects all your website content for easy translation. No more time-consuming manual duplication of every single line of content to get a multilingual website. All translations are updated in real-time, so you don’t need to worry about maintenance and any newly added content is automatically translated.

\n

It takes translation seriously: Weglot Translate gives you an edge on your translation tasks with the first layer of automatic translation provided by the best machine learning providers on the market (DeepL, Google, Microsoft, and Yandex). You can also edit the translations and collaborate with your team to work on translations together, directly within Weglot.

\n

It partners with the pros: Weglot Translate lets you order from vetted professional translators directly inside your Weglot dashboard. Set translation quality the way you want it to be, with Weglot Translate.

\n

“Within a week of translating our site to English with Weglot, international sales doubled, by the following month – they had quadrupled.”
\nClara Champion – Director of Digital and E-Commerce, Jimmy Fairly
\nRead the case study

\n

Multilingual functionality like no other

\n

Increase visibility: All translated pages are automatically indexed following Google’s best practices with dedicated URLs. Get new traffic with your multilingual website.

\n

Reduce bounce rate: Redirect visitors automatically to serve them in the language of their choice, based on their browser settings.

\n

Enhance user experience: From the landing page to the email confirmation, get all your key conversion steps translated in your customers’ language. You can even add different images and videos for various languages. Useful for images with text, Weglot Translate makes it easy to display “translated” images in your translated versions. Media localization is an essential aspect of any multilingual project and Weglot Translate makes it simple to do so.

\n

“We really loved the localization features provided by Weglot, such as the ability to translate images and other types of media depending on the language the visitor is viewing the site in.”
\nKim Martin – Senior Communications and Marketing Officer, The Challenge Initiative
\nRead the case study

\n

An all-in-one language translation platform

\n
    \n
  • Manage and edit all of your translations through a user-friendly interface.
  • \n
  • Collaborate with team members and trusted translators to translate together, directly inside Weglot.
  • \n
  • Is it a title? Is it a link? No more guessing the context of the text. Weglot Translate’s in-context editor lets you translate directly within the webpage.
  • \n
  • Make it your own. The language switcher is fully customizable for multiple design choices.
  • \n
  • Weglot Translate makes it easy to migrate from other WordPress multilingual plugins like Polylang or WPML. Simply deactivate your existing translation plugin and install Weglot Translate.
  • \n
\n

“Weglot removed the pain of having to manage multiple stores for multiple locales. The integration was easy, and the support is incredibly helpful. I highly recommend Weglot to anyone looking for a simple and cost-effective solution to translate their stores!”
\nMike Robertson – Director of Sales Operations, Nikon

\n

With an increase in site visitors and session duration thanks to your multilingual website, you can expect a massive boost to your conversions. See why thousands of e-commerce platforms, SaaS firms, marketplaces, corporate websites, and blogs worldwide love Weglot Translate. Try it today for free

\n","download_link":"https://downloads.wordpress.org/plugin/weglot.3.3.6.zip","tags":{"language":"language","localization":"localization","multilingual":"multilingual","translate":"translate","translation":"translation"},"donate_link":"","icons":{"1x":"https://ps.w.org/weglot/assets/icon-128x128.png?rev=2186774","2x":"https://ps.w.org/weglot/assets/icon-256x256.png?rev=2186774"},"wporg":true},{"name":"Rank Math SEO – Best SEO Plugin For WordPress To Increase Your SEO Traffic","slug":"seo-by-rank-math","version":"1.0.71.1","author":"Rank Math","author_profile":"https://profiles.wordpress.org/rankmath","requires":"5.6","tested":"5.8","requires_php":"7.2","rating":98,"ratings":{"1":69,"2":17,"3":20,"4":48,"5":3381},"num_ratings":3535,"support_threads":138,"support_threads_resolved":133,"active_installs":900000,"downloaded":19904987,"last_updated":"2021-09-03 7:13pm GMT","added":"2018-11-19","homepage":"https://s.rankmath.com/home","short_description":"Rank Math SEO is the Best WordPress SEO plugin combines the features of many SEO…","description":"

Rank Math SEO – Best SEO Plugin for WordPress
\n★★★★★

\n

SEO is the most consistent source of traffic for any website. We created Rank Math SEO, a WordPress SEO plugin, to help every website owner get access to the SEO tools they need to improve their SEO and attract more traffic to their website.

\n

Try The Demo

\n\n

Features | Why Choose Rank Math SEO? | Compare | Screenshots | Benefits

\n

SEO might be the best and most consistent source of traffic for one’s website, but it’s not without its quirks. The constant process of optimizing your posts can sometimes take more time than actually writing the content. If you always feel that you can do more on the SEO front for your website but don’t have the time, then Rank Math SEO is what you’re looking for.

\n

Its host of intelligent features brings top SEO capabilities in your hands that were previously out of reach. The smart automation features give you the power of an entire SEO team with just a few clicks. A well thought out design, powerful features, and years of development by the MyThemeShop squad make Rank Math SEO a game-changing SEO plugin that will level the SEO playing field in your favor to help increase traffic.

\n

Rank Math SEO beats all of its competitors, hands down.

\n

See the features which are exclusive to the Rank Math SEO plugin and understand why Rank Math SEO is possibly the Best SEO Plugin for WordPress.

\n
    \n
  • \n

    Setup Wizard (Easy to follow)
    \nRank Math SEO practically configures itself. Rank Math SEO features a step-by-step installation and configuration wizard that sets up SEO for WordPress perfectly.

    \n
  • \n
  • \n

    Google Schema Markup aka Rich Snippets Integrated
    \nConfiguring Google Schema Markup, aka Rich Snippets, is now easy, thanks to Rank Math SEO. With support for 16+ types of Schema Markups, aka Rich Snippets, including the Rating Schema, you’ll be able to optimize your posts in just a few clicks. It also includes the FAQ Schema aka FAQPage Schema Block & the HowTo aka How To Schema Block in the plugin.

    \n
  • \n
  • \n

    Optimize Unlimited Keywords
    \nUnlike other plugins, Rank Math SEO lets you optimize your posts for unlimited focus keywords per post. 5 by default. Increase by adding this filter.

    \n
  • \n
  • \n

    Google Search Console Integration
    \nRank Math SEO saves you a ton of time by integrating with Google Search Console and displaying important information about your website right inside WordPress.

    \n
  • \n
  • \n

    Google Keyword Ranking
    \nWith Rank Math SEO Plugin, you can track your keyword rankings in Google.

    \n
  • \n
  • \n

    Google Analytics Integration
    \nRank Math SEO offers a one-click solution to install Google Analytics script without pasting anything manually anywhere. You can also exclude the Logged-in users.

    \n
  • \n
  • \n

    Optimal Settings Pre-Selected
    \nConfiguring an SEO plugin takes time, and can be confusing. Rank Math SEO saves you the trouble with its optimal default settings, which are ideal for most websites, and if needed, can be changed.

    \n
  • \n
  • \n

    LSI Keyword Tool Integrated
    \nRank Math SEO’s integrated LSI keyword tool gives you multiple keyword variations of your focus keyword, which helps you attract more traffic to your posts. Free account needed.

    \n
  • \n
  • \n

    Add Overlay Icons On Social Images
    \nRank Math SEO makes social thumbnails click magnets by giving you the option of overlaying a GIF or a video icon on the thumbnail.

    \n
  • \n
  • \n

    Advanced SEO Analysis Tool
    \nWith just a single click, Rank Math SEO can perform an SEO audit of your website.

    \n
  • \n
  • \n

    30 Detailed SEO Tests
    \nRank Math SEO is designed to completely supercharge your website’s SEO with its 30 detailed SEO tests. Free account needed.

    \n
  • \n
  • \n

    Module Based System
    \nRank Math SEO has been designed with a module-based system, each of which can be enabled or disabled as per your needs, giving you extra speed and control.

    \n
  • \n
  • \n

    Smart Redirection Manager
    \nRank Math SEO’s built-in smart redirection manager will help you create, manage, delete, enable, or disable redirects at scale.

    \n
  • \n
  • \n

    Local Business SEO
    \nRank Math SEO is designed to be used by Global websites and local websites alike. With its local SEO features, local sites can stand out in the search engine results like Google’s and attract more traffic.

    \n
  • \n
  • \n

    SEO Optimized Breadcrumbs
    \nRank Math SEO can display SEO optimized Breadcrumbs on all websites, even if the theme doesn’t support Schema.org coding.

    \n
  • \n
  • \n

    404 Monitor
    \nRank Math SEO has a built-in 404 error monitor that helps you find and resolve 404 errors for a better user experience.

    \n
  • \n
  • \n

    Deep Content Analysis Tests
    \nOn-Page SEO is no longer a mystery with Rank Math SEO’s deep content analysis and precise SEO recommendations.

    \n
  • \n
  • \n

    Internal Linking Suggestions
    \nRank Math SEO intelligently suggests other posts from your website for internal linking from your current posts, improving the chances of ranking higher in the SERPs.

    \n
  • \n
  • \n

    Role Manager
    \nEven if you have multiple employees manage your website, you can precisely control what each of them has to access to in Rank Math SEO with its role manager.

    \n
  • \n
  • \n

    Multisite Ready
    \nWhether you run a single WordPress website or an entire network of sites – we are ready for you. Rank Math SEO fully supports the WordPress Multiuser project (WPMU).

    \n
  • \n
  • \n

    and has lightweight Code compared to slow-loading in other SEO plugins.
    \nEven with significantly more features than other plugins, Rank Math SEO loads amazingly fast and keeps your website fast always.

    \n
  • \n
\n

Why is Rank Math SEO such a game-changer?

\n
    \n
  • \n

    Auto Configuration — All you have to do is set a few options, and Rank Math SEO will configure itself perfectly for your website.

    \n
  • \n
  • \n

    Super Fast SEO Plugin — Even after packing so many features, Rank Math SEO has a negligible load on your server, thus making it one of the fastest SEO plugins for WordPress.

    \n
  • \n
  • \n

    Automatic Keyword Suggestions from Google — Get keyword suggestions from Google as you start typing letters in the focus keyword field of Rank Math SEO.

    \n
  • \n
  • \n

    New SEO Analyzer — Rank Math SEO’s built-in SEO analysis will give you SEO recommendations that you’d normally spend hundreds of dollars to get.

    \n
  • \n
  • \n

    Elementor SEO – Deep integration with the Elementor Page builder. Now, you don’t need to go back and forth between tabs to configure your page’s SEO. Everything related to SEO for Elementor can be configured in the visual editor.

    \n
  • \n
  • \n

    Divi SEO – One of its kind integration with the Divi Page Builder and theme. Handle everything related to SEO from the page editor screen without jumping back to the default editor. This helps you optimize your website in real-time for SEO.

    \n
  • \n
  • \n

    Page Builder SEO – The Rank Math SEO plugin’s content analysis works perfectly with popular page builders and themes like Oxygen Builder, WPBakery, Avada, Astra, Kadence, Themify, Beaver Builder, Page Builder Framework, Schema theme, Flothemes, OceanWP, etc.

    \n
  • \n
  • \n

    Optimize UNLIMITED Keywords At Once — You can optimize your post for up to 5 different keywords by default with the Rank Math SEO plugin and can use a filter to optimize for unlimited keywords.

    \n
  • \n
  • \n

    Image SEO – With Rank Math SEO’s perfect solution to add ALT & Title tags on the fly, to optimize images, showing inside the content, and that too for FREE, there is no reason to choose any other SEO solution that does not provide all the essential SEO features.

    \n
  • \n
  • \n

    Web Stories SEO – Make any Story created with the Google’s Web Stories plugin SEO-Ready. Automatically adds AMP-friendly Schema markup and Meta tags.

    \n
  • \n
  • \n

    WooCommerce SEO – Optimizing your store products is easier with Rank Math. SEO Meta tags and Schema are automatically added but can be customized with total control as well. Rank Math SEO has the most advanced SEO for WooCommerce.

    \n
  • \n
  • \n

    Google AMP SEO – Accelerated Mobile Pages need to be prepared for search engines. What better way to do that than letting Rank Math SEO use your regular SEO details and optimizing AMPs based on that data?

    \n
  • \n
  • \n

    bbPress SEO – User-generated content in bbPress is properly optimized with Rank Math handling all the important SEO aspects. Q&A Schema is added to bbPress topics along with other essential meta tags.

    \n
  • \n
  • \n

    BuddyPress SEO – As with bbPress, SEO for BuddyPress content is done automatically done using Rank Math. You get all the options you need to get higher rankings with your user-generated content.

    \n
  • \n
  • \n

    Quick Edit SEO Details – Go through a lot of posts/pages quickly by ensuring they are optimized for search engines. Quickly edit multiple SEO fields at once using Rank Math SEO.

    \n
  • \n
  • \n

    Instant Indexing for Bing – Get your content instantly indexed by Bing. Enter a few key details and you are all set and ready to go.

    \n
  • \n
  • \n

    Instant Indexing for Google – Instantly getting indexed by Google used to be reserved to huge brands and large websites. Not anymore. Just about anyone can take advantage of Google’s Instant Indexing feature using Rank Math SEO.

    \n
  • \n
  • \n

    Version Control – Rollback or try beta versions. Updating and downgrading your plugins is now a matter of few clicks. Automatically update to the latest versions or try out the latest beta builds.

    \n
  • \n
  • \n

    Translation Plugins Support — Rank Math SEO works flawlessly with the top translations plugins like WPML, TranslatePress, Weglot, Polylang (not entirely compatible yet), etc., making it a perfect companion.

    \n
  • \n
  • \n

    XML Sitemap – The Rank Math SEO plugin comes with a fast-loading Sitemap feature that works with different post types, including the custom ones, and provides deep controlling. One can also generate a Locations KML file via filter for Local Sitemap, & a WooCommerce Sitemap.

    \n
  • \n
  • \n

    1-Click Import From Yoast — With a single click of your mouse, Rank Math SEO can import all your settings from Yoast SEO & Yoast SEO Premium to itself. The transfer is instant, and you don’t lose any SERP rankings as a result.

    \n
  • \n
  • \n

    1-Click Import From AIO SEO — Rank Math SEO can also import all your settings from AIO SEO & All in One SEO Pack Pro in a single click. The transfer is instant, and you don’t lose any SERP rankings as a result.

    \n
  • \n
  • \n

    1-Click Import From All In One Schema Rich Snippets — Rank Math SEO can also import all of AIO’s Rich Snippet & Schema Pro settings in a few clicks, which help preserve your rich rankings when moving to Rank Math SEO.

    \n
  • \n
  • \n

    1-Click Import From SEOPress SEO — With a single click of your mouse, Rank Math SEO can import all your settings from SEOPress & SEOPress Pro SEO plugin to itself. The transfer is instant, and you don’t lose any SERP rankings as a result.

    \n
  • \n
  • \n

    1-Click Import From Redirection — Moving all your redirects shouldn’t be a hassle. That’s why we have made importing redirections from the popular Redirection plugin as simple as clicking a button.

    \n
  • \n
  • \n

    Google Keyword Suggestion — When deciding on focus keywords, Rank Math SEO can help you discover more keywords by pulling in automatic keyword suggestions from Google.

    \n
  • \n
\n

Who Can Benefit From Rank Math SEO?

\n

Rank Math SEO Plugin is perfect for:

\n

✔ Bloggers
\n✔ eCommerce Store Owners
\n✔ Niche Sites
\n✔ Businesses
\n✔ Local Businesses
\n✔ Startups
\n✔ The Real Estate
\n✔ Artists & Photographers
\n✔ The Solution Offerer
\n✔ Directories
\n✔ Vloggers (Video Bloggers)
\n✔ Or any WordPress Website

\n

Take a sneak peek into Rank Math SEO’s features

\n

Detailed Setup Tutorial

\n\n

List of Best Rank Math SEO Features

\n
    \n
  • Clean, & Simple User Interface
  • \n
  • Optimal Settings Pre-Selected
  • \n
  • Simple Setup Wizard\n
      \n
    • Compatibility Check
    • \n
    \n
  • \n
  • Auto Canonical URLs
  • \n
  • LSI Keyword Tool Integrated
  • \n
  • Google Search Console Integration
  • \n
  • Google Keyword Ranking
  • \n
  • Import Other Plugin Settings\n
      \n
    • 1 Click Import From Yoast SEO Plugin
    • \n
    • 1 Click Import From AIO SEO
    • \n
    • 1 Click Import From SEOPress & SEOPress Pro
    • \n
    • 1 Click Import From All In One Schema Rich Snippets & Schema Pro
    • \n
    • 1 Click Import From Redirection Plugin
    • \n
    \n
  • \n
  • Role Manager
  • \n
  • ACF Support
  • \n
  • AMP Ready
  • \n
  • bbPress & BuddyPress Modules
  • \n
  • Google Schema Markup Integrated\n
      \n
    • Article Rich Snippet
    • \n
    • Review Rich Snippet
    • \n
    • Book Rich Snippet
    • \n
    • Course Rich Snippet
    • \n
    • Event Rich Snippet
    • \n
    • Job Posting Rich Snippet
    • \n
    • Local Business Rich Snippet
    • \n
    • 193 Local Business Types
    • \n
    • Music Rich Snippet
    • \n
    • Person Rich Snippet
    • \n
    • Product Rich Snippet
    • \n
    • Recipe Rich Snippet
    • \n
    • Restaurant Rich Snippet
    • \n
    • Service Rich Snippet
    • \n
    • Software Application Rich Snippet
    • \n
    • Video Rich Snippet
    • \n
    • Author Stay Rating
    • \n
    \n
  • \n
  • Social Media Optimization\n
      \n
    • Add Overlay Icons On Social Images
    • \n
    • Default OpenGraph Thumbnail
    • \n
    • Auto Facebook Open Graph
    • \n
    • Facebook Authorship
    • \n
    • Facebook Open Graph for Homepage
    • \n
    • Automatic Twitter Meta Cards
    • \n
    • Twitter Card for Homepage
    • \n
    • Default Twitter Card Type
    • \n
    • Social Previews
    • \n
    \n
  • \n
  • Add Knowledge Graph\n
      \n
    • Represent site as a Person
    • \n
    • Represent site as a Company
    • \n
    • Set a Site Logo
    • \n
    \n
  • \n
  • Advanced SEO Analysis Tool\n
      \n
    • 30 Detailed SEO Tests
    • \n
    • SEO Analysis Score
    • \n
    \n
  • \n
  • Automated Image SEO
  • \n
  • Powerful Post Optimization\n
      \n
    • Add SEO Meta Box to all post types
    • \n
    • Bulk Edit Titles & Descriptions
    • \n
    • Post Preview on Google
    • \n
    • Content Analysis
    • \n
    • Control SEO For Single Pages
    • \n
    • Control The Title
    • \n
    • Control Meta Description
    • \n
    • Auto Add Additional Meta Data
    • \n
    • Control ROBOTS Meta
    • \n
    • Choose a Primary Category
    • \n
    \n
  • \n
  • Single Post/page Optimization\n
      \n
    • Focus Keyword
    • \n
    • Google Keyword Suggestion
    • \n
    • Optimize UNLIMITED Keywords (5 by default)
    • \n
    • Choose Pillar Posts & Pages
    • \n
    • Internal Linking Suggestions
    • \n
    • Capitalize Titles
    • \n
    • SEO Failed Tests
    • \n
    • SEO Warnings
    • \n
    \n
  • \n
  • XML Sitemap (New!)
  • \n
  • Module Based System
  • \n
  • Choose Any Separator Character
  • \n
  • Modify Global Meta
  • \n
  • Search Engine Verification Tools\n
      \n
    • Bing Site Verification
    • \n
    • Baidu Site Verification
    • \n
    • Alexa Site Verification
    • \n
    • Yandex Site Verification
    • \n
    • Google Site Verification
    • \n
    • Pinterest Site Verification
    • \n
    • Norton Safe Web Site Verification
    • \n
    \n
  • \n
  • Advanced Redirection Manager\n
      \n
    • Smart & Automatic Post Redirects
    • \n
    • 301 Redirection Type
    • \n
    • 302 Redirection Type
    • \n
    • 307 Redirection Type
    • \n
    • 410 Redirection Type
    • \n
    • 451 Redirection Type
    • \n
    • Support for REGEX
    • \n
    • Debug Redirections
    • \n
    \n
  • \n
  • Simple 404 Monitor\n
      \n
    • Advanced 404 Monitor
    • \n
    \n
  • \n
  • Advanced SEO Breadcrumbs\n
      \n
    • Auto Show SEO Breadcrumbs
    • \n
    \n
  • \n
  • Advanced Link Options\n
      \n
    • Nofollow All External Image Links
    • \n
    • Nofollow All External Links
    • \n
    • Open External Links in New Tab/Window
    • \n
    • Redirect Attachments to Parent
    • \n
    • Strip Category Base
    • \n
    \n
  • \n
  • Remove Stopwords from Permalinks
  • \n
  • Ping Search Engines
  • \n
  • Local SEO Optimization\n
      \n
    • Contact Info Shortcode
    • \n
    \n
  • \n
  • Deep Support For WooCommerce SEO
  • \n
  • Compatible for EDD SEO (Easy Digital Downloads SEO)
  • \n
  • Only 30k Lines of Code\n
      \n
    • PSR-4 Coding Standards (wherever possible)
    • \n
    \n
  • \n
  • Optimize Different Archives\n
      \n
    • Optimize Author Archive Pages
    • \n
    • Optimize Date Archive Pages
    • \n
    • Optimize Archive Pages
    • \n
    \n
  • \n
  • .htaccess Editor
  • \n
  • Robots.txt Editor
  • \n
  • Import/Export Settings
  • \n
  • Import/Export Redirections
  • \n
  • Add Content Before the RSS Feed
  • \n
  • Add Content After the RSS Feed
  • \n
  • Detailed Documentation\n
      \n
    • Contextual Help
    • \n
    \n
  • \n
\n

BIG Publications are Raving About Rank Math SEO

\n

Rank Math SEO Reviews

\n\n\n

Rank Math SEO Review – Why I Ditched Yoast For Rank Math SEO

\n

Rank Math SEO on Product Hunt

\n

Rank Math SEO Plugin Review from an SEO Consultant

\n

and many more

\n

Check RANK MATH PRO WHICH MAKES SEO EASIER & FASTER

\n\n

FREE VS PRO COMPARISON

\n

UNIQUE FEATURES OF RANK MATH PRO

\n

Google Analytics & Search Console Integration (The only SEO plugin that provides it)
\n✔ Integrated Google Analytics, AdSense & Search Console Data
\n✔ Analyze SEO Performance of Each Post & Page
\n✔ See Top Winning/Losing Posts & Keywords
\n✔ Keep Track of Position History
\n✔ Rank Tracker for Important Keywords

\n

Schema aka Structured Data aka Rich Snippets. The BEST Schema Generator Available Online
\n✔ 20+ Pre-defined Schema types (more than any other plugin) –
\n✔ Import Schema from Other Websites
\n✔ Advanced Schema Builder [Advanced SEOs can use this to create any complex Schema Markup)
\n✔ Schema Templates for Automation
\n✔ Conditional Schema Markup
\n✔ Inbuilt Schema Code Preview and Validation
\n✔ Multiple Location Schema On Any Page (using the Shortcode)

\n

Automation At Its BEST
\n✔ Automated Image SEO
\n✔ Advanced Filtering for Images [https://i.rankmath.com/zAUHHP]
\n✔ Watermark Your images
\n✔ Advanced Post filtering
\n✔ Bulk Actions [index, noindex, redirect, etc.]
\n✔ Quick Edit SEO Details
\n✔ Bulk Import SEO Meta Details Using CSV file
\n✔ Auto Detect Videos and Generate Schema Markup for Them
\n✔ Auto Fetch Thumbnail, Duration of YouTube & Vimeo Videos
\n✔ Automatically Flush Facebook Thumbnails
\n✔ Open External Links in New Tabs
\n✔ Nofollow External Links
\n✔ Noindex Paginated, Archive, Search Result Pages
\n✔ Instant Indexing for Bing [Also Google using our Instant Indexing Plugin]

\n

WooCommerce SEO
\n✔ Automatic Schema for WooCommerce Products
\n✔ Advanced Open Graph Tags for WooCommerce Products
\n✔ Automatic NoIndex Hidden Products
\n✔ Remove WooCommerce Product and Category Base
\n✔ Add Custom Brands to Products
\n✔ Add Global Identifier Like GTIN/MPN – Even to Variations

\n

Workflow Improvements
\n✔ Internal Role Manager
\n✔ Inbuilt Google Trends Insights
\n✔ Site Audit with 29 Unique Tests
\n✔ Import Redirections Using CSV File
\n✔ Categorize Redirections for Grouping
\n✔ One-Click Redirection for 404s
\n✔ Monitor Search Performance of Entire Portfolio
\n✔ Easy and Advanced Mode

\n

Miscellaneous
\n✔ Supports bbPress and BuddyPress SEO
\n✔ Version Control – Rollback or Try Beta Versions

\n

MANY MORE FEATURES
\n✔ PREMIUM 24x7x365 Dedicated Support Managers
\n✔ MOST COMPETITIVE PRICING EVER!

\n

CHEK ALL THE PREMIUM FEATURES AND PRICING HERE

\n

CONNECT WITH THE TEAM AND SEO EXPERTS

\n

JOIN FACEBOOK GROUP COMMUNITY: The purpose of this Facebook group is to have a collective place where the community can help each other, and we can get some feedback to improve Rank Math SEO as well. Joining the group is also a great way to connect with like-minded people and share your SEO experience.

\n

Branding Guideline

\n

Rank Math SEO® is a registered trademark. Please use the following format when mentioning the Rank Math SEO plugin anywhere.
\n* Rank Math SEO [correct]
\n* Rank Math SEO [incorrect]
\n* Rank Math SEO [incorrect]
\n* Rank Math SEO [incorrect]
\n* RankMath [incorrect]
\n* Rankmath [incorrect]
\n* rankmath [incorrect]
\n* rankMath [incorrect]

\n

Getting Started:

\n

1. How to Setup Rank Math SEO: Once you install Rank Math SEO for the first time, you will be greeted with the Setup Wizard, which is discussed in detail here.

\n

2. Facebook Group: In this group, you will find the team of Rank Math SEO plugin fairly active and ready to answer your SEO related queries.

\n

3. User Documentation: Although Rank Math SEO is already easy to set up, we’ve put together tutorials, guides, and some knowledge bases to help you set up and get started with Rank Math SEO.

\n

4. Contribute (Sharing is caring): If you are one of those caring hearts that want to help, go to our Rank Math SEO’s GitHub Repository and see how you can contribute to the SEO community. You can also add a new language via translate.wordpress.org.

\n

5. Fixing Common Errors: Sometimes, avoidable or common issues can get you stuck. We’ve created a common guide where we discuss all the common issues and how to fix them.

\n

6. Support Ticket Forum: Our dedicated forum is where you can get support for any issues that you face with Rank Math SEO. In the forum, we’ll also try to answer some SEO queries. User experience is important to us, and our aim is to answer all the queries on the forum in a timely manner.

\n

7. Frequently Asked Questions: Here, we’ve answered the most commonly asked questions about Rank Math SEO. The questions are related to features, pricing, and others.

\n","download_link":"https://downloads.wordpress.org/plugin/seo-by-rank-math.1.0.71.1.zip","tags":{"google-search-console":"google search console","redirection":"redirection","schema":"schema","seo":"seo","sitemap":"sitemap"},"donate_link":"","icons":{"1x":"https://ps.w.org/seo-by-rank-math/assets/icon.svg?rev=2348086","2x":"https://ps.w.org/seo-by-rank-math/assets/icon-256x256.png?rev=2348086","svg":"https://ps.w.org/seo-by-rank-math/assets/icon.svg?rev=2348086"},"wporg":true},{"name":"Head, Footer and Post Injections","slug":"header-footer","version":"3.2.2","author":"Stefano Lissa","author_profile":"https://profiles.wordpress.org/satollo","requires":"4.0","tested":"5.7.2","requires_php":"5.6","rating":98,"ratings":{"1":3,"2":2,"3":4,"4":13,"5":621},"num_ratings":643,"support_threads":1,"support_threads_resolved":0,"active_installs":300000,"downloaded":2776239,"last_updated":"2021-03-17 1:26pm GMT","added":"2008-04-07","homepage":"https://www.satollo.net/plugins/header-footer","short_description":"Header and Footer plugin let you to add html code to the head and footer sections of your blog... and more!","description":"

About WordPress SEO and Facebook Open Graph: I was very unpleased by Yoast invitation to
\nremove my plugin, and it’s not the case.
\nRead more here.

\n

Head and Footer Codes

\n

Why you have to install 10 plugins to add Google Analytics, Facebook Pixel, custom
\ntracking code, Google DFP code, Google Webmaster/Alexa/Bing/Tradedoubler verification code and so on…

\n

With Header and Footer plugin you can just copy the code those services give you
\nin a centralized point to manage them all. And theme independent: you can change your theme
\nwithout loosing the code injected!

\n

Injection points and features

\n
    \n
  • in the page section where most if the codes are usually added
  • \n
  • just after the tag as required by some JavaScript SDK (like Facebook)
  • \n
  • in the page footer (just before the tag)
  • \n
  • recognize and execute PHP code to add logic to your injections
  • \n
  • distinct desktop and mobile injections
  • \n
\n

AMP

\n

A new AMP dedicated section compatible with AMP plugin lets you to inject specific codes in
\nAMP pages. Should be ok even with other AMP plugins.

\n

Post Top and Bottom Codes

\n

Do you need to inject a banner over the post content or after it? No problem. With Header and
\nFooter you can:

\n
    \n
  • Add codes on top, bottom and in the middle of posts and pages
  • \n
  • Differentiate between mobile and desktop (you don’t display the same ad format on both, true?)
  • \n
  • Separate post and page configuration
  • \n
  • Native PHP code enabled
  • \n
  • Shortcodes enabled
  • \n
\n

Special Injections

\n
    \n
  • Just after the opening BODY tag
  • \n
  • In the middle of post content (using configurable rules)
  • \n
  • Everywhere on template (using placeholders)
  • \n
\n

bbPress

\n

The specific bbPress injections are going to be removed. Switch to my
\nAds for bbPress, which is more flexible and complete.

\n

Limits

\n

This plugin cannot change the menu or the footer layout, those features must be covered by your theme!

\n

Official page: Header and Footer.

\n

Other plugins by Stefano Lissa:

\n\n

Translation

\n

You can contribute to translate this plugin in your language on WordPress Translate

\n

Privacy and GDPR

\n

This plugin does not collect or process any personal user data.

\n","download_link":"https://downloads.wordpress.org/plugin/header-footer.3.2.2.zip","tags":{"blog":"blog","footer":"footer","header":"header","page":"page","single":"single"},"donate_link":"http://www.satollo.net/donations","icons":{"1x":"https://ps.w.org/header-footer/assets/icon-256x256.png?rev=1064219","2x":"https://ps.w.org/header-footer/assets/icon-256x256.png?rev=1064219"},"wporg":true},{"name":"WP Rocket","slug":"wp-rocket","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://wp-rocket.me/","short_description":"

Powerful caching to speed up your WordPress website in a few clicks. No coding required.

\n","description":"\n\n\n

Powerful caching to speed up your WordPress website in a few clicks. No coding required.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2020/06/WP-Rocket-285x160.png","2x":"https://amp-wp.org/wp-content/uploads/2020/06/WP-Rocket-372x209.png","svg":""},"wporg":false},{"name":"Statify","slug":"statify","version":"1.8.3","author":"pluginkollektiv","author_profile":"https://profiles.wordpress.org/pluginkollektiv","requires":"4.7","tested":"5.8","requires_php":"5.2","rating":94,"ratings":{"1":2,"2":0,"3":0,"4":3,"5":33},"num_ratings":38,"support_threads":3,"support_threads_resolved":1,"active_installs":200000,"downloaded":1498761,"last_updated":"2021-07-17 8:46am GMT","added":"2011-03-16","homepage":"https://statify.pluginkollektiv.org/","short_description":"Visitor statistics for WordPress with focus on data protection, transparency and clarity. Perfect as a widget in your WordPress Dashboard.","description":"

Statify provides a straightforward and compact access to the number of site views. It is privacy-friendly as it uses neither cookies nor a third party.

\n

An interactive chart is followed by lists of the most common reference sources and target pages. The period of statistics and length of lists can be set directly in the dashboard widget.

\n

Data Privacy

\n

In direct comparison to statistics services such as Google Analytics, WordPress.com Stats and Matomo (Piwik) Statify doesn’t process and store personal data as e.g. IP addresses – Statify counts site views, not visitors.

\n

Absolute privacy compliance coupled with transparent procedures: A locally in WordPress created database table consists of only four fields (ID, date, source, target) and can be viewed at any time, cleaned up and cleared by the administrator.

\n

Due to this tracking approach, Statify is 100% compliant with GDPR and serves as an lightweight alternative to other tracking services.

\n

Display of the widget

\n

The plugin configuration can be changed directly in the Statify Widget on the dashboard by clicking the Configure link.

\n

The amount of links shown in the Statify Widget can be set as well as the option to only count views from today. Of course, older entries are not deleted when changing this setting.

\n

The statistics for the dashboard widget are cached for four minutes.

\n

Period of data saving

\n

Statify stores the data only for a limited period (default: two weeks), longer intervals can be selected as option in the widget. Data which is older than the selected period is deleted by a daily cron job.

\n

An increase in the database volume can be expected because all statistic values are collected and managed in the local WordPress database (especially if you increase the period of data saving).

\n

JavaScript tracking for caching compatibility

\n

For compatibility with caching plugins like Cachify Statify offers an optional switchable tracking via JavaScript. This function allows reliable count of cached blog pages.

\n

For this to work correctly, the active theme has to call wp_footer(), typically in a file named footer.php.

\n

Skip tracking for spam referrers

\n

The comment blacklist can be enabled to skip tracking for views with a referrer URL listed in comment blacklist, i. e. which considered as spam.

\n

Support

\n

If you’ve problems or think you’ve found a bug (e.g. you’re experiencing unexpected behavior), please post at the support forums.

\n

Contribute

\n
    \n
  • Active development of this plugin is handled on GitHub.
  • \n
  • Pull requests for documented bugs are highly appreciated.
  • \n
  • If you want to help us translate this plugin you can do so on WordPress Translate.
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/statify.1.8.3.zip","tags":{"analytics":"analytics","dashboard":"dashboard","pageviews":"pageviews","privacy":"privacy","statistics":"statistics"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=TD4AMD2D8EMZW","icons":{"1x":"https://ps.w.org/statify/assets/icon-128x128.png?rev=2355063","2x":"https://ps.w.org/statify/assets/icon-256x256.png?rev=2355063"},"wporg":true},{"name":"LIQUID BLOCKS GALLERY 37+ Free Designs","slug":"liquid-blocks","version":"1.1.1","author":"LIQUID DESIGN Ltd.","author_profile":"https://profiles.wordpress.org/lqd","requires":"5.2","tested":"5.8","requires_php":false,"rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"num_ratings":1,"support_threads":1,"support_threads_resolved":0,"active_installs":4000,"downloaded":20092,"last_updated":"2021-07-22 6:55am GMT","added":"2019-10-18","homepage":"https://lqd.jp/wp/plugin.html","short_description":"If you’re looking to create block page sections that look great give LIQUID BLOCKS a…","description":"

If you’re looking to create block page sections that look great give LIQUID BLOCKS a try.

\n

In Gutenberg Block Template & Design Gallery, Just select your favorite design. Instantly create page section elements. Like a very simple page builder.

\n

You can manage Block Pattern. (WordPress 5.5+)
\nFully compatible with Gutenberg and themes and AMP.
\nlatest information on LIQUID PRESS.

\n

\n

Design Gallery

\n

Carefully selected 37+ Free Designs.
\n* Headlines
\n* Layouts (Q&A, Ranking, Column, Step, Fluid Shape.)
\n* Price list
\n* CTA
\n* Landing pages
\n* Block Patterns (You can register.)

\n

Toolbar

\n

Add to RichText Toolbar.
\n* Mark
\n* Underline
\n* Big
\n* Small

\n","download_link":"https://downloads.wordpress.org/plugin/liquid-blocks.zip","tags":{"block":"block","block-editor":"block-editor","blocks":"blocks","editor":"editor","gutenberg":"gutenberg"},"donate_link":"https://lqd.jp/wp/plugin.html","icons":{"1x":"https://ps.w.org/liquid-blocks/assets/icon-128x128.png?rev=2175390"},"wporg":true},{"name":"Schema","slug":"schema","version":"1.7.9.2","author":"Hesham","author_profile":"https://profiles.wordpress.org/hishaman","requires":"4.0","tested":"5.7.2","requires_php":"5.4","rating":90,"ratings":{"1":15,"2":6,"3":4,"4":8,"5":162},"num_ratings":195,"support_threads":3,"support_threads_resolved":0,"active_installs":60000,"downloaded":1083344,"last_updated":"2021-05-19 2:51pm GMT","added":"2016-05-11","homepage":"https://schema.press","short_description":"Get the next generation of Schema Structured Data to enhance your WordPress site presentation in Google search results.","description":"

Like Schema plugin? Consider leaving a 5 star review.

\n

Super fast, light-weight plugin for adding schema.org structured data markup in recommended JSON-LD format automatically to WordPress sites.

\n

Enhanced Presentation in Search Results By including structured data appropriate to your content, your site can enhance its search results and presentation.

\n

Check out the Plugin Homepage for more info and documentation.

\n

What is Schema markup?

\n

Schema markup is code (semantic vocabulary) that you put on your website to help the search engines return more informative results for users. So, Schema is not just for SEO reasons, it’s also for the benefit of the searcher.

\n

Schema.org Structured Data Demo & Examples

\n\n

Schema Key Features

\n
    \n
  • Easy to use, set it and forget it, with minimal settings.
  • \n
  • [Premium] Support for different schema.org types.
  • \n
  • Enable Schema types at once per post type or post category.
  • \n
  • [Premium] Enable Schema types anywhere you want on your site content.
  • \n
  • [Premium] Customize source data of schema.org properties.
  • \n
  • Valid markup, test it in Google Structured Data Testing Tool.
  • \n
  • Output JSON-LD format, the most recommended by Google.
  • \n
  • Reuse data saved in post meta, which is created by other plugins.
  • \n
  • Extensible, means you can extend its functionality via other plugins, extensions or within your Theme’s functions.php file.
  • \n
\n
\n

Note: some features are Premium. Which means you need Schema Premium to have those features. Get Schema Premium here!

\n
\n

Free vs Premium

\n
\n

See: a Free vs Premium comparison.

\n
\n

Free Plugin Extensions

\n
    \n
  • Schema Review: Extend Schema functionality by adding review and rating Structured Data functionality for Editors and Authors.
  • \n
  • Schema Default Image: Add ability to set a default WordPress Featured image for schema.org markup.
  • \n
\n

Premium Plugin Extensions

\n\n

Supported Google/Schema Markups

\n\n

Supported Schema.org Types

\n\n

Premium Supported Schema.org Types

\n
\n

Schema Premium has additional support for schema.org types, including:

\n
\n\n

Schema.org Markup Examples

\n

View our Live Structured Data Demo examples.

\n

Supported Plugins

\n

Schema plugin integrates and/or play nicely with (not necessarily a full integration):

\n
    \n
  • Yoast SEO
  • \n
  • AMP plugin (Automattic’s Accelerated Mobile Pages)
  • \n
  • Accelerated Mobile Pages – AMP for WP
  • \n
  • WPRichSnippets
  • \n
  • The SEO Framework
  • \n
  • WPBakery Page Builder
  • \n
  • ThirstyAffiliates
  • \n
  • [Premium] WooCommerce: Schema for WooCommerce extension.
  • \n
  • Easy Digital Downloads (EDD)
  • \n
\n

Supported Themes

\n

The plugin should work fine with any well coded WordPress theme, however these themes were tested and works properly with the plugin.

\n
    \n
  • Genesis 2.x
  • \n
  • Thesis 2.x
  • \n
  • Divi
  • \n
\n

Premium support

\n

schema.press team does not always provide active support for the Schema plugin on the WordPress.org forums, as we prioritize our email support. One-on-one email support is available to people who bought Schema Premium only.

\n

Note that the premium Schema Plugin also has several extra features too, including the option to enable more schema.org types, set content location target for markup, and map schema.org properties, so it is well worth your investment!

\n

Developers?

\n

Feel free to fork the project on GitHub and submit your contributions via pull request.

\n","download_link":"https://downloads.wordpress.org/plugin/schema.zip","tags":{"json-ld":"JSON-LD","rich-snippets":"rich snippets","schema":"schema","schema-org":"schema.org","structured-data":"structured data"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=NGVUBT2QXN7YL","icons":{"1x":"https://ps.w.org/schema/assets/icon-128x128.png?rev=1750172","2x":"https://ps.w.org/schema/assets/icon-256x256.png?rev=1750173"},"wporg":true},{"name":"Iframely – rich media embeds for 2000+ publishers","slug":"iframely","version":"0.7.2","author":"Itteco Corp.","author_profile":"https://profiles.wordpress.org/ivanp","requires":"3.5.1","tested":"5.4.6","requires_php":false,"rating":80,"ratings":{"1":2,"2":0,"3":1,"4":0,"5":7},"num_ratings":10,"support_threads":1,"support_threads_resolved":0,"active_installs":3000,"downloaded":97238,"last_updated":"2020-05-22 5:21pm GMT","added":"2013-10-03","homepage":"http://wordpress.org/plugins/iframely/","short_description":"Iframely extends WordPress default rich media embeds and adds support of over 2000 more providers…","description":"

Iframely extends WordPress default embeds and adds over 2000 more providers and cards as URL previews for the rest of the Web. Provides responsive embed codes, works with AMP.

\n

Just like default WordPress embeds, Iframely will detect URLs in your posts and replace it with responsive embed codes. Supports all usual suspects such as YouTube, Vimeo, Instagram, Facebook, Giphy, GfyCat, Imgur, Google +, GitHub Gists, Storify, SlideShare, Streamable, Vidme, Reddit, Dailymotion, Spotify, Tableau, Prezi, Apester, QZZR, Tidal, MLB. Well over two thousand of providers and keeps growing.

\n

Test your URL here to check if we support it.

\n

Iframely also generates and hosts summary cards as URL previews for general articles. It includes your own site, and Iframely can replace the default embed cards that your publish via WordPress for other sites to use.

\n

API key and paid/free

\n

Powered by Iframely cloud service and requires an account with us. Grab an API key for extended trial at iframely.com, or test the plugin out without an API key.

\n

Before you push the plugin to production, a service subscription is required to avoid any possible disruptions.

\n

We maintain an overwhelming number of integrations and widgets in the background for you, and make sure your sites remains fast and keeps your users happy. This requires a substantial effort on our part, and we won’t be able to provide it without requiring a service subscription.

\n

How to use:

\n

The plugin works the same way the standard oEmbed is supported by WordPress: URL on a separate line.

\n

For example,

\n
Check out this cool video:\n\nhttp://your.url/here\n\nThat was a cool video.\n
\n

Iframely also has its own shortcode [iframely]http://your.url/here[/iframely].

\n

Heads-up:

\n

Iframely does not simply wrap URLs with <iframe src=...> code. That’s not what Iframely is for. We can only match URLs to the known embed codes if publisher offers them for manual copy-paste, or generate a summary card for URL preview if a publisher provides at least a thumnnail image.

\n

To keep default embed providers

\n

By default, Iframely will inject itself to be the first embeds provider in the list, thus intercepting all URLs. It means that the default providers that are later in the list won’t get called and will thus be disabled.

\n

It means Iframely replaces default YouTube, Vimeo, Twitter, other oEmbed plugins that you might have(like JetPack), etc.

\n

Although we should support the same providers and output the same code, just make it responsive and add extra features, you can still disable such behavior and tell Iframely to only process links that otherwise don’t have an embed provider.

\n

Just choose this option in your settings. It will essentially put Iframely to be the last in the list, be “a catcher”, rather then “an interceptor”.

\n

URL editor options

\n

You can fine-tune many aspects of Iframely on your dashboard at iframely.com. This would include some most common settings for popular rich media publishers. Our support team can also fine-tune many other publishers, just for you.

\n

However, you might need a per-post editor for the widgets options. And, Iframely does provide this too. It’s done via URL options editor, and available for higher-tier plans, or during your initial trial period. Make sure to check it out.

\n

AMP support

\n

Yes, Iframely works nicely with AMP WP plugin. It catches all missing embeds and follow your Iframely settings. But you can also opt to have Iframely for all embeds, including default AMP embeds too. For example, Facebook video will be indeed a nice video without user’s text message.

\n","download_link":"https://downloads.wordpress.org/plugin/iframely.zip","tags":{"embed":"embed","embed-code":"embed code","iframely":"iframely","oembed":"oembed","responsive":"responsive"},"donate_link":"","icons":{"default":"https://s.w.org/plugins/geopattern-icon/iframely.svg"},"wporg":true},{"name":"Pym.js Embeds","slug":"pym-shortcode","version":"1.3.2.4","author":"INN Labs","author_profile":"https://profiles.wordpress.org/automattic","requires":"3.0.1","tested":"5.4.6","requires_php":"5.3","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":1,"support_threads_resolved":0,"active_installs":100,"downloaded":2287,"last_updated":"2020-03-26 6:09pm GMT","added":"2016-06-17","homepage":"https://github.com/INN/pym-shortcode","short_description":"A WordPress block and shortcode for embedding iframes that are responsive horizontally and vertically, using…","description":"

Pym.js Embeds provides shortcode and Gutenberg block wrappers for embedding responsive iframes using Pym.js, developed by the NPR Visuals Team. Embedded content resizes vertically to match its container’s width.

\n

AMP compatibility is provided by the official AMP plugin.

\n

Pym.js Resources from NPR

\n

You may also want to look at NPR’s Pym.js resources:

\n\n","download_link":"https://downloads.wordpress.org/plugin/pym-shortcode.1.3.2.4.zip","tags":{"embeds":"Embeds","iframe":"iframe","javascript":"javascript","responsive":"responsive","shortcode":"shortcode"},"donate_link":"https://inn.org/donate","icons":{"1x":"https://ps.w.org/pym-shortcode/assets/icon.svg?rev=1944461","svg":"https://ps.w.org/pym-shortcode/assets/icon.svg?rev=1944461"},"wporg":true},{"name":"PWA","slug":"pwa","version":"0.6.0","author":"PWA Plugin Contributors","author_profile":"https://profiles.wordpress.org/westonruter","requires":"5.5","tested":"5.7.2","requires_php":"5.6","rating":84,"ratings":{"1":3,"2":0,"3":0,"4":0,"5":12},"num_ratings":15,"support_threads":8,"support_threads_resolved":6,"active_installs":40000,"downloaded":291693,"last_updated":"2021-03-09 8:50pm GMT","added":"2018-07-12","homepage":"https://github.com/GoogleChromeLabs/pwa-wp","short_description":"WordPress feature plugin to bring Progressive Web App (PWA) capabilities to Core","description":"

\nProgressive Web Apps are user experiences that have the reach of the web, and are:

\n
    \n
  • Reliable – Load instantly and never show the downasaur, even in uncertain network conditions.
  • \n
  • Fast – Respond quickly to user interactions with silky smooth animations and no janky scrolling.
  • \n
  • Engaging – Feel like a natural app on the device, with an immersive user experience.
  • \n
\n

This new level of quality allows Progressive Web Apps to earn a place on the user’s home screen.\n

\n

Continue reading more about Progressive Web Apps (PWA) from Google.

\n

In general a PWA depends on the following technologies to be available:

\n\n

This plugin serves as a place to implement support for these in WordPress with the intention of being proposed for core merge, piece by piece.

\n

This feature plugin is not intended to obsolete the other plugins and themes which turn WordPress sites into PWAs. Rather, this plugin is intended to provide the PWA building blocks and coordination mechanism for these themes and plugins to not reinvent the wheel and also to not conflict with each other. For example, a theme that implements the app shell model should be able to extend the core service worker while a plugin that provides push notifications should be able to do the same. Themes and plugins no longer should have to each create a service worker on their own, something which is inherently problematic because only one service worker can be active at a time: only one service worker can win. If you are developing a plugin or theme that includes a service worker, consider relying on this PWA plugin, or at least only use the built-in implementation as a fallback for when the PWA plugin is not available.

\n

In versions prior to 0.6, no caching strategies were added by default. The only service worker behavior was to serve an offline template when the client’s connection is down or the site is down, and also to serve an error page when the server returns with 500 Internal Server Error. As of 0.6, there is a new “Offline browsing” toggle on the Reading Settings screen in the admin. It is disabled by default, but when enabled a network-first caching strategy is registered for navigations so that the offline page won’t be shown when accessing previously-accessed pages. The network-first strategy is also used for assets from themes, plugins, and WordPress core. In addition, uploaded images get served with a stale-while-revalidate strategy. For all the details on these changes, see the pull request.

\n

Documentation for the plugin can be found on the GitHub project Wiki.

\n

Development of this plugin is done on GitHub. Pull requests welcome. Please see issues reported there before going to the plugin forum.

\n","download_link":"https://downloads.wordpress.org/plugin/pwa.0.6.0.zip","tags":{"https":"https","progressive-web-apps":"progressive web apps","pwa":"pwa","service-workers":"service-workers.","web-app-manifest":"web app manifest"},"donate_link":"","icons":{"1x":"https://ps.w.org/pwa/assets/icon.svg?rev=1908485","2x":"https://ps.w.org/pwa/assets/icon-256x256.png?rev=1908485","svg":"https://ps.w.org/pwa/assets/icon.svg?rev=1908485"},"wporg":true},{"name":"MC4WP: Mailchimp for WordPress","slug":"mailchimp-for-wp","version":"4.8.6","author":"ibericode","author_profile":"https://profiles.wordpress.org/dvankooten","requires":"4.6","tested":"5.8","requires_php":"5.3","rating":96,"ratings":{"1":35,"2":10,"3":16,"4":35,"5":1277},"num_ratings":1373,"support_threads":46,"support_threads_resolved":43,"active_installs":2000000,"downloaded":35711896,"last_updated":"2021-08-04 7:14am GMT","added":"2013-06-19","homepage":"https://www.mc4wp.com/#utm_source=wp-plugin&utm_medium=mailchimp-for-wp&utm_campaign=plugins-page","short_description":"Mailchimp for WordPress, the #1 unofficial Mailchimp plugin.","description":"

Mailchimp for WordPress

\n

Allowing your visitors to subscribe to your newsletter should be easy. With this plugin, it finally is.

\n

This plugin helps you grow your Mailchimp lists and write better newsletters through various methods. You can create good looking opt-in forms or integrate with any existing form on your site, like your comment, contact or checkout form.

\n\n

Some (but not all) features

\n
    \n
  • \n

    Connect with your Mailchimp account in seconds.

    \n
  • \n
  • \n

    Sign-up forms which are good looking, user-friendly and mobile optimized. You have complete control over the form fields and can send anything you like to Mailchimp.

    \n
  • \n
  • \n

    Seamless integration with the following plugins:

    \n
      \n
    • Default WordPress Comment Form
    • \n
    • Default WordPress Registration Form
    • \n
    • Contact Form 7
    • \n
    • WooCommerce
    • \n
    • Gravity Forms
    • \n
    • Ninja Forms 3
    • \n
    • WPForms
    • \n
    • BuddyPress
    • \n
    • MemberPress
    • \n
    • Events Manager
    • \n
    • Easy Digital Downloads
    • \n
    • Give
    • \n
    • UltimateMember
    • \n
    \n
  • \n
  • \n

    A multitude of available add-on plugins and integrations:

    \n\n
  • \n
  • \n

    Well documented. Our knowledge base is updated daily.

    \n
  • \n
  • \n

    Developer friendly. For inspiration, check out our repository of example code snippets.

    \n
  • \n
\n
\n

Become a Premium user

\n

Mailchimp for WordPress has a Premium add-on which comes with several additional benefits.

\n
    \n
  • Multiple forms
  • \n
  • Advanced e-commerce integration for WooCommerce
  • \n
  • Email notifications
  • \n
  • An easy way to style your forms
  • \n
  • Detailed reports & statistics
  • \n
\n

View more Premium features

\n
\n

What is Mailchimp?

\n

Mailchimp is a newsletter service that allows you to send out email campaigns to a list of email subscribers. It is free for lists up to 2000 subscribers, which is why it is the newsletter-service of choice for thousands of businesses.

\n

This plugin allows you to tightly integrate your WordPress site with your Mailchimp account.

\n

If you are not yet using Mailchimp, creating an account is 100% free and only takes you about 30 seconds.

\n

Support

\n

Use the WordPress.org plugin forums for community support where we try to help all of our users. If you found a bug, please create an issue on Github where we can act upon them more efficiently.

\n

If you’re a premium user, please use the email address inside the plugin for support as that will guarantee a faster response time.

\n

Please take a look at the Mailchimp for WordPress knowledge base as well.

\n

Add-on plugins

\n

There are several add-on plugins available, which help you get even more out of your site.

\n

Translations

\n

You can help translate Mailchimp for WordPress into your language using your WordPress.org account.

\n

Development

\n

This plugin is being developed on GitHub. If you want to collaborate, please look at ibericode/mailchimp-for-wordpress.

\n

Customizing the plugin

\n

The plugin provides various filter & action hooks that allow you to modify or extend default behavior. We’re also maintaining a collection of sample code snippets.

\n","download_link":"https://downloads.wordpress.org/plugin/mailchimp-for-wp.4.8.6.zip","tags":{"email":"email","mailchimp":"mailchimp","marketing":"marketing","mc4wp":"mc4wp","newsletter":"newsletter"},"donate_link":"https://www.mc4wp.com/#utm_source=wp-plugin-repo&utm_medium=mailchimp-for-wp&utm_campaign=donate-link","icons":{"1x":"https://ps.w.org/mailchimp-for-wp/assets/icon-128x128.png?rev=1224577","2x":"https://ps.w.org/mailchimp-for-wp/assets/icon-256x256.png?rev=1224577"},"wporg":true},{"name":"Site Kit by Google","slug":"google-site-kit","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://sitekit.withgoogle.com/","short_description":"

Site Kit is the official WordPress plugin from Google for insights about how people find and use your site. Site Kit is the one-stop solution to deploy, manage, and get insights from critical Google tools to make the site successful on the web. It provides authoritative, up-to-date insights from multiple Google products directly on the

\n

Read More

\n","description":"\n\n\n

Site Kit is the official WordPress plugin from Google for insights about how people find and use your site. Site Kit is the one-stop solution to deploy, manage, and get insights from critical Google tools to make the site successful on the web. It provides authoritative, up-to-date insights from multiple Google products directly on the WordPress dashboard for easy access, all for free.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2019/12/site-kit-by-google-logo-285x160.png","2x":"https://amp-wp.org/wp-content/uploads/2019/12/site-kit-by-google-logo-372x209.png","svg":""},"wporg":false},{"name":"Newspack Blocks","slug":"newspack-blocks","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://github.com/Automattic/newspack-blocks","short_description":"

A collection of useful and easy to use Gutenberg based blocks, developed primarily for the Newspack project.

\n","description":"\n\n\n

A collection of useful and easy to use Gutenberg based blocks, developed primarily for the Newspack project.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2019/11/newspack_blocks-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2019/11/newspack_blocks-372x209.jpg","svg":""},"wporg":false},{"name":"Advanced Ads – Ad Manager & AdSense","slug":"advanced-ads","version":"1.27.0","author":"Thomas Maier, Advanced Ads GmbH","author_profile":"https://profiles.wordpress.org/webzunft","requires":"4.9","tested":"5.8","requires_php":"5.6","rating":98,"ratings":{"1":17,"2":1,"3":9,"4":21,"5":1181},"num_ratings":1229,"support_threads":71,"support_threads_resolved":65,"active_installs":100000,"downloaded":5150413,"last_updated":"2021-08-24 9:21am GMT","added":"2014-06-23","homepage":"https://wpadvancedads.com","short_description":"Manage and optimize all ad types. Support for Google AdSense Auto ads, Amazon, image banners, HTML, page builder, ad widget, ad rotations, ads.txt","description":"

Are you looking for a simple ad manager plugin? These are the top arguments to use Advanced Ads:

\n
    \n
  • approved in publishing and ad optimization since 2009
  • \n
  • works with all ad types and networks, including Google AdSense, Google Ad Manager (formerly Google DoubleClick for Publishers, DFP), Amazon ads, or media.net ads
  • \n
  • most features to test and optimize ads
  • \n
  • unlimited ad units
  • \n
  • ads.txt support
  • \n
  • dedicated ad block for the block editor
  • \n
  • Google AdSense Partner, who implements all technical changes early and in 100% compliance with the Google AdSense policies
  • \n
  • the only advertising solution with Ad Health integration and Google AdSense violation checks
  • \n
  • best rated free support
  • \n
\n

This is what our users are saying about Advanced Ads:

\n
\n

We use this plugin to deliver rotating ads on a community news site, and it’s great. Both feature-rich and reliable, your imagination is the limit when it comes to the product you want to create for your users. We’ve delivered over a million ad impressions since we launched less than a year ago, using a combination of sidebar, top, sticky and in-content placements — both HTML5 and images. Advanced Ads makes it easy for our small team to deliver a good experience to our users and our advertisers.
\n mytown304 on wp.org

\n
\n

Would you like to know if there is a certain feature, what the optimized setup would be, or how to implement your client’s demands? Just open a thread in the forum!

\n

Advanced Ads allowed us to grow from 0 to 100 MM monthly ad impressions. Benefit from our experience as a publisher and monetize your website today!

\n

Full Feature List.

\n

ad management

\n
    \n
  • create and display unlimited ad units
  • \n
  • rotate ads
  • \n
  • schedule ads and set start time and expiration date
  • \n
  • target ads by content and user groups
  • \n
  • inject ads into posts and pages automatically without coding
  • \n
\n

ad types

\n

choose between different ad types that enable you to:

\n
    \n
  • insert ads and banners from all ad and affiliate networks (e.g., Google AdSense, Amazon, BuySellAds, Google Ad Manager (formerly Google DoubleClick for Publishers, DFP), Ezoic, media.net, Booking.com, Tradedoubler, Awin, Getyourguide, The Moneytizer, Infolinks…)
  • \n
  • dedicated support for all types of Google AdSense ads, including text and display ads, native ads (In-article, In-feed, matched content), Auto ads, and Auto ads for AMP
  • \n
  • display images and image banners
  • \n
  • create content-rich ads with the WordPress TinyMCE editor
  • \n
  • insert contextual Amazon Native Shopping Ads
  • \n
  • inject HTML, CSS, Javascript or PHP code
  • \n
  • use shortcodes within ads (to also deliver advertisements from another ad plugin like Ad Inserter, AdRotate, Quick AdSense, WP Bannerize, or the Google AdSense Plugin WP QUADS)
  • \n
\n

display ads for WP

\n
    \n
  • auto-inject ads via placements
  • \n
  • use functions to display ads in template files
  • \n
  • use shortcodes to place ads manually in post content
  • \n
  • show ads in the sidebar and in widgets
  • \n
  • disable all ads on specific pages
  • \n
  • display multiple ads (ad blocks)
  • \n
  • display a customizable ad label, e.g., “Advertisements” above each banner ad
  • \n
\n

display conditions

\n

show ads based on conditions like:

\n
    \n
  • individual posts, pages, and other post types
  • \n
  • posts by category, tags, taxonomies, author, and age
  • \n
  • archive pages by category, tags, taxonomies
  • \n
  • special page types like 404, attachment and front page
  • \n
  • hide ads on secondary queries (e.g., posts in sidebars)
  • \n
  • display or hide banners within the post feed
  • \n
  • hide all ads from specific page types, e.g., 404 pages, feed
  • \n
  • hide ads from bots and web crawlers
  • \n
\n

visitor conditions

\n

serve ads by conditions based on the visitor. List of all visitor conditions

\n
    \n
  • display or hide a banner by device: mobile and tablet or desktop
  • \n
  • display or hide a banner by role and for logged-in visitors
  • \n
  • advanced visitor conditions: previously visited URL (referrer), user capability, browser language, browser and device, URL parameters included in Pro
  • \n
  • display ads by geolocation with the Geo Targeting add-on
  • \n
  • display ads by browser width with the Responsive add-on
  • \n
\n
\n

Fantastic plugin and outstanding support
\n I tried at least three other ad plugins for WordPress and ‘Advanced Ads’ is by and far the best one. Last but not least in the support. The first port of call are a number of excellent tutorials. And finally the hands on support. I don’t quite know how he does it but the speed and depth of responses are absolutely amazing.
\n djsawyer on wp.org

\n
\n

ad injection | placements

\n

Placements to insert ads in pre-defined positions in your theme and content. List of all placements

\n
    \n
  • ads after any given paragraph, headline, image, or other HTML element
  • \n
  • ads at the top or bottom of the post content
  • \n
  • ads before closing </head> tag
  • \n
  • ads in the footer
  • \n
  • test placements against each other with Pro (A/B testing)
  • \n
  • many more ad positions with add-ons
  • \n
  • automatic insertion of any kind of code into header or footer, not only advertising
  • \n
\n

mobile devices

\n
    \n
  • display ads on mobile and tablets or desktop only
  • \n
  • display responsive image ads
  • \n
  • ads for specific browser sizes only using Responsive Ads
  • \n
  • inserting ads on AMP pages with Responsive Ads
  • \n
\n

Google AdSense

\n

Amazing features of the most powerful and easy Google AdSense plugin.

\n
    \n
  • unlimited Google AdSense ads banners
  • \n
  • pull ad units directly from your Google AdSense account
  • \n
  • show AdSense revenue in WP Admin
  • \n
  • change settings of your Google AdSense ads directly from your WordPress backend
  • \n
  • supports all Google AdSense ad types, including Google AdSense display ads, native ads like In-feed ads, In-article ads, matched content ads, Google AdSense Auto ads, and Google AdSense Auto ads for AMP
  • \n
  • change type and sizes of AdSense ads without going into your Google AdSense account
  • \n
  • hide Google AdSense advertisements on 404 pages by default (to comply with Google AdSense terms)
  • \n
  • insert Google AdSense code for verification and AdSense Auto Ads
  • \n
  • enable AdSense Auto ads on AMP
  • \n
  • easy Ad Health integration and Google AdSense violation checks
  • \n
  • option to remove the Google AdSense background color
  • \n
  • place Google AdSense In-feed ads using the also free In-feed add-on
  • \n
  • assistant for exact sizes of responsive Google AdSense ads with the Responsive add-on
  • \n
  • convert Google AdSense ads into AMP ads automatically with the Responsive add-on
  • \n
  • ads.txt generated with the correct AdSense information automatically
  • \n
  • works along with Google Site Kit or can replace it if you want to control your ad placements
  • \n
\n

\n

\n

Like j4ckson185, there are thousands of happy AdSense users:

\n
\n

Your app is awesome, congratulations! Google Adsense suggests using your app on its official website, it’s incredible!

\n
\n

ads.txt

\n
    \n
  • generates an ads.txt with custom content
  • \n
  • adds the content for AdSense to the ads.txt automatically
  • \n
\n

\n

\n

ad blocker

\n
    \n
  • basic features to prevent ads from being removed by AdBlock and other ad blockers
  • \n
  • prevent ad blockers from breaking sites where plugin scripts are running
  • \n
  • ad blocking detection: show alternative content to ad block users with Pro and improve the monetization of your website
  • \n
\n

Learn more on the plugin homepage.

\n

Thank you for motivating us with your positive review.

\n

Localizations: Arabic, Chinese, Czech, Danish, Dutch, English, French, German, Hungarian, Italian, Japanese, Norwegian, Polish, Portuguese, Russian, Slovak, Spanish, Turkish, Vietnamese

\n
\n

Add-Ons

\n
    \n
  • all add-ons include priority email support
  • \n
  • Advanced Ads Pro – powerful tools for ad optimizations: cache-busting, more placements, lazy loading, ad blocker module, click fraud protection, and many more
  • \n
  • Tracking – track ad impressions and ad clicks with local methods or Google Analytics
  • \n
  • Responsive Ads – target ads to specific browser sizes and create ads for AMP
  • \n
  • Google Ad Manager Integration – a quick and error-free way to load ad units from your Google Ad Manager (formerly Google DoubleClick for Publishers, DFP) account without touching any ad codes
  • \n
  • Geo Targeting – display ads based on the geo location of the visitor
  • \n
  • Sticky Ads – increase click rates with fixed, sticky, and anchor ads
  • \n
  • Fixed Widget for WordPress – turn sidebar widgets into performant fixed sticky ads
  • \n
  • PopUp and Layer Ads – display ads and other content in layers and popups
  • \n
  • Selling Ads – allows you to sell ads on your website fully automated, including payments and advertiser profiles.
  • \n
  • Ad Slider – create a simple slider from your ads
  • \n
\n
\n

If you have problems with Advanced Ads, please reach out to our support or open a new topic in our forums on wordpress.org
\n.

\n

Integrations

\n

Advanced Ads integrates with plenty of other plugins:

\n\n","download_link":"https://downloads.wordpress.org/plugin/advanced-ads.1.27.0.zip","tags":{"ad-manager":"ad manager","ad-rotation":"ad rotation","ads":"ads","adsense":"adsense","banner":"banner"},"donate_link":"","icons":{"1x":"https://ps.w.org/advanced-ads/assets/icon-128x128.gif?rev=2293174","2x":"https://ps.w.org/advanced-ads/assets/icon-256x256.gif?rev=2293174"},"wporg":true},{"name":"Syntax-highlighting Code Block (with Server-side Rendering)","slug":"syntax-highlighting-code-block","version":"1.3.1","author":"Weston Ruter","author_profile":"https://profiles.wordpress.org/westonruter","requires":"5.5","tested":"5.7.2","requires_php":"5.6","rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":18},"num_ratings":18,"support_threads":1,"support_threads_resolved":1,"active_installs":1000,"downloaded":11981,"last_updated":"2021-03-09 8:51pm GMT","added":"2019-07-30","homepage":"https://github.com/westonruter/syntax-highlighting-code-block","short_description":"Extending the Code block with syntax highlighting rendered on the server, thus being AMP-compatible and having faster frontend performance.","description":"

This plugin extends the Code block in WordPress core to add syntax highlighting which is rendered on the server. Pre-existing Code blocks on a site are automatically extended to include syntax highlighting. Doing server-side syntax highlighting eliminates the need to enqueue any JavaScript on the frontend (e.g. Highlight.js or Prism.js) and this ensures there is no flash of unhighlighted code (FOUC?). Reducing script on the frontend improves frontend performance and it also allows for the syntax highlighted code to appear properly in AMP pages as rendered by the official AMP plugin (see also ampproject/amp-wp#972) or when JavaScript is turned off in the browser.

\n

In addition to not adding any JavaScript to the frontend, the stylesheets needed for styling the Code block will only be added to the page if there is a Code block present. The stylesheets are added inline when the Code block is rendered, ensuring that they do not block rendering of any content higher in the page. If stylesheets fail to load for any reason, the block simply renders without styling, with one key exception: highlighted lines are wrapped in mark elements so they’ll get highlighted regardless, including in RSS Feeds and posts syndicated in email (as long as the mark element is supported in the client).

\n

This extended Code block uses language auto-detection to add syntax highlighting, but you can override the language in the block’s settings sidebar. (There is currently no syntax highlighting of the Code block in the editor.) The plugin supports all programming languages that highlight.php supports (being a port of highlight.js). The Code block also is extended to support specifying the aforementioned highlighted lines. There is also a checkbox for whether to show line numbers on the frontend (with the numbers being non-selectable). Lastly, given inconsistencies across themes as to whether lines in a Code block should be wrapped, this plugin adds styling to force them to no-wrap by default, with a checkbox to opt-in to wrapping when desired.

\n

For advanced usage, please see the plugin wiki.

\n

This plugin is developed on GitHub. See list of current issues with the plugin. Please feel free to file any additional issues or requests that you may come across. Pull requests are welcome.

\n

Credits

\n

This is a fork of Code Syntax Block by Marcus Kazmierczak (mkaz), which is also available on WordPress.org. Copyright (c) 2018 Marcus Kazmierczak. Licensed under GPL 2.0 or later.

\n

highlight.php is released under the BSD 3-Clause License. Copyright © 2006-2013, Ivan Sagalaev (maniac@softwaremaniacs.org), highlight.js (original author). Copyright © 2013, Geert Bergman (geert@scrivo.nl), highlight.php

\n","download_link":"https://downloads.wordpress.org/plugin/syntax-highlighting-code-block.1.3.1.zip","tags":{"block":"block","code":"code","code-highlighting":"code highlighting","code-syntax":"code syntax","syntax-highlight":"syntax highlight"},"donate_link":"","icons":{"1x":"https://ps.w.org/syntax-highlighting-code-block/assets/icon.svg?rev=2131108","2x":"https://ps.w.org/syntax-highlighting-code-block/assets/icon-256x256.png?rev=2131108","svg":"https://ps.w.org/syntax-highlighting-code-block/assets/icon.svg?rev=2131108"},"wporg":true},{"name":"Contact Form by WPForms – Drag & Drop Form Builder for WordPress","slug":"wpforms-lite","version":"1.6.9","author":"WPForms","author_profile":"https://profiles.wordpress.org/jaredatch","requires":"4.9","tested":"5.8","requires_php":"5.5","rating":98,"ratings":{"1":210,"2":46,"3":54,"4":219,"5":9582},"num_ratings":10111,"support_threads":96,"support_threads_resolved":82,"active_installs":4000000,"downloaded":81550854,"last_updated":"2021-08-26 11:06am GMT","added":"2016-03-14","homepage":"https://wpforms.com","short_description":"The best WordPress contact form plugin. Drag & Drop online form builder that helps you create beautiful contact forms with just a few clicks.","description":"

WordPress Contact Form Builder Plugin

\n

We believe that you shouldn’t have to hire a developer to create a WordPress contact form. That’s why we built WPForms, a drag & drop WordPress form builder that’s EASY and POWERFUL.

\n

WPForms allows you to create beautiful contact forms, feedback form, subscription forms, payment forms, and other types of forms for your site in minutes, not hours!

\n

At WPForms, user experience is our #1 priority. Our pre-built form templates and workflows make WPForms the most beginner friendly contact form plugin in the market.

\n

The WPForms Challenge guides you through creating your first form in under 5 minutes. We walk you through using the form builder all the way to adding a form to a page on your site! WPForms includes integrations for popular page builders like the WordPress Block Editor (Gutenberg), Classic Editor, Elementor, and Divi making the whole process seamless.

\n

WPForms is a 100% mobile responsive contact form solution, so your contact forms will always look great on all devices (mobile, tablet, laptop, and desktop).

\n

WPForms’ contact forms are also highly optimized for web and server performance because we understand the importance of speed when it comes to SEO, marketing, and conversion. We can honestly say that WPForms is one of the fastest WordPress contact form builder plugins in the world.

\n
\n

WPForms Pro
\n This plugin is the lite version of the WPForms Pro plugin that comes with all the contact form features you will ever need including email subscription forms, multi-page contact forms, file uploads, conditional logic, payment integrations, form templates, and tons more. Click here to purchase the best premium WordPress contact form plugin now!

\n
\n

We took the pain out of creating contact forms and made it easy. Here’s why smart business owners, designers, and developers love WPForms, and you will too!

\n

\n

Drag & Drop Contact Form Builder

\n

We were tired of the bloated and buggy contact form builder plugins. That’s why we built WPForms to adapt to your workflow and allow you to create custom contact forms in minutes. By using our easy to use drag and drop online form builder, you can easily add custom form fields, rearrange them, and basically create a complete contact form in 5 minutes or less.

\n

But don’t just take our word. See what one of the WordPress experts are saying:

\n
\n

WPForms is by far the easiest form plugin to use. My clients love WPForms and it’s one of the few plugins they can use without any training. As a developer I appreciate how fast, modern, clean and extensible it is.
\n Bill Erickson – Expert WordPress Consultant

\n
\n

Pre-built Form Templates

\n

Building contact forms in WordPress can be time consuming. Why?

\n

Because every other WordPress contact form builder plugin requires you to build your contact form from scratch. The truth is it’s often not necessary to create a contact form completely from scratch unless you really want to.

\n

Whether you’re looking to create a simple contact form, marketing form, request a quote form, donation form, payment order form, registration form, or a subscription form, we have a form template for you inside our contact form builder.

\n

WPForms comes with pre-built form templates to help you save time. You can add, remove, or re-arrange fields as necessary.

\n

See 100+ Pre-Made WPForms Form Template Demo

\n

Mobile Ready, SEO Friendly and Optimized for Speed

\n

WPForms’ contact forms are 100% responsive and mobile-friendly by default. We also optimized every query on the front-end and the back-end to ensure maximum speed – Yes, WPForms is one of the fastest WordPress contact form plugin.

\n

You can embed your contact form on any page with optimized title and description. With the speed and proper formatting, WPForms is also one of the most SEO friendly contact form plugin.

\n

All the Fields & Features that You Need to Succeed

\n

From star ratings to file uploads to multi-page contact forms with progress bar, we have all the fields you need.

\n

You can easily integrate your contact forms with an email marketing service or collect payments for bookings and orders. WPForms allows you to do it all.

\n

The best part is, you can do it all without hiring a developer.

\n

See what one business owner has to say about WPForms’ contact form:

\n
\n

As a business owner, time is my most valuable asset. WPForms allow me to create smart contact forms with just a few clicks. With their pre-built form templates and the drag & drop builder, I can create a new form that works in less than 2 minutes without writing a single line of code. Well worth the investment.
\n David Henzel – Co-founder of MaxCDN

\n
\n

Surveys & Polls

\n

Along with contact form, you can also use WPForms to create surveys and polls.

\n

Our WordPress Survey plugin addon comes with smart survey fields including likert scale, star ratings, multiple choice, Net Promoter Score (NPS), and more, so you can create custom survey forms like Survey Monkey (without the high costs).

\n

WPForms offer the best-in class survey reporting. You can use our interactive reports to customize the graphs, export them for your presentations, and even display the aggregate results to your users.

\n

The best part about WPForms survey reports is that it can retroactively work on any old contact form or feedback survey contact form created with WPForms.

\n

Thousands of businesses love WPForms surveys for creating employee feedback form, customer feedback form, online petition form, and more.

\n

You can also use the surveys & polls addon to easily create a poll on your site. To save you time when creating a user poll, we have added a built-in poll forms template. Our poll feature offers real-time reports, so you can share poll results with the user immediately after they submit their vote.

\n

Just like the contact form, you can embed your surveys and polls inside any post, page, or widget area in WordPress.

\n

Membership and Default WordPress Forms

\n

Aside from building simple contact forms which every WordPress site needs, WPForms also helps you create better default WordPress forms.

\n

For example, you can use WPForms to create custom WordPress login forms and custom WordPress user registration forms which are great for membership sites.

\n

For membership sites, you can also use WPForms to create a password-protected contact form or even a members only contact form which is restricited to logged-in users only.

\n

Even if you’re not using a WordPress membership plugin, you can use WPForms to create membership registration forms, online RSVP forms, and other address book contact forms.

\n

Bloggers and publishers can use our WordPress post submission forms to accept guest posts, testimonials contact form to collect testiomnials, and partnership agreement forms to grow their business.

\n

Payment Form, Donation Form, Booking Form, and More

\n

While WPForms started out as a contact form plugin, it has evolved into a powerful custom forms solution that you can use to create a payment form, donation form, registration form, online booking form, mobile form, and basically any type of custom form you need.

\n

WPForms integrates with both PayPal and Stripe, so you can easily create a credit card payment form to accept payments on your website. If you’re using SSL, then you can use our Stripe Payment form to accept credit card payments. Alternatively you can use our PayPal payment form to make a donation form and accept payments online.

\n

Aside from simple order forms, business owners also use WPForms to create custom product purchase forms, t-shirt order forms, online booking forms, and more.

\n

We understand that sometimes you may need to create a contact form that require a signature. WPForms comes with a signature field to collect user signature on your WordPress forms or even create custom signature forms.

\n

You can do all of this while still using the same easy-to-use contact form builder that’s loved by over 4 million users.

\n
\n

I am so impressed with this plugin. I decided to give it a shot over some of the other form plugins, and I am so glad I did. It works well, is so easy to use and customize. The support is amazing on top of it all. I got the pro version because I was so pleased. Highly recommend.
\n Micky73 – WordPress user

\n
\n

Forms that are Optimized for Conversion and Results

\n

With our Form Pages addon, you can create distraction-free custom form landing pages like Google Forms and Wufoo right inside WordPress, so you can increase conversions without the high costs (See Form Pages Demo).

\n

To improve form completion rate, we created Conversational Forms® which helps you make your generic feedback form and other custom contact forms feel more human by adding an interactive form layout. Our conversational forms are similar to Typeform without the high subscription costs (See Conversational Forms Demo).

\n

WPForms also has other conversion optimization features such as our smart form logic that lets you create dynamic contact forms where fields change based on user’s answer, multi-page contact forms with progress bar, and other advanced contact forms.

\n

WPForms form analytics integration with MonsterInsights allow you to easily track your lead capture forms, newsletter signup forms, request a quote contact form, and other important forms on your site.

\n

Easy to Customize and Extend

\n

You can easily customize your contact forms with our section dividers, HTML blocks, and custom CSS.

\n

If you’re using Elementor or Divi page builders our native integrations let you easily customize the style of your forms.

\n

We also knew that our developer friends may want to extend simple contact forms further. That’s why WPForms come with tons of hooks and filters to create custom functionality.

\n

Since contact forms are essential for marketing, WPForms is a must have plugin for every website!

\n

Full WPForms Feature List

\n
    \n
  • Online Form Builder – Our powerful drag & drop contact form builder allows you to easily create WordPress contact forms and other online forms in just a few minutes without writing any code.
  • \n
  • 100% Responsive – Mobile Friendly contact forms.
  • \n
  • GDPR Friendly – Make your contact form GDPR compatible with just a few clicks.
  • \n
  • Form Templates – Use our pre-built form templates to save time. Never start from scratch again (see all form templates demos).
  • \n
  • Spam Protection – WPForms provides smart anti-spam protection out-of-the-box, plus direct integrations with hCaptcha and Google reCAPTCHA.
  • \n
  • Instant Form Notification – Quickly respond to incoming inquiries with our instant contact form notification system.
  • \n
  • Smart Form Confirmation – Show a custom success message, or redirect users to a custom thank you page.
  • \n
  • File Uploads – Collect files and media through your contact forms with File Uploads.
  • \n
  • Multi-Page Forms – Split long forms into multiple pages with progress bar to improve user experience.
  • \n
  • Smart Conditional Logic – Show or hide fields and contact form sections based on user behavior.
  • \n
  • Signature Forms – Create signature forms or add the signature field to your contact form, application form, booking form, etc.
  • \n
  • User Registration Forms – Create custom user registration form and custom login form in WordPress.
  • \n
  • Post Submissions – Collect user-submitted content in WordPress with our front-end post submission form. Great for guest posts, testimonials, business directory, listings, etc.
  • \n
  • Geolocation – Display location information about your users.
  • \n
  • Custom Captchas – Create custom captchas for your contact form.
  • \n
  • Surveys and Polls – Easily create surveys forms and analyze the data with interactive reports.
  • \n
  • Form Abandonment – Unlock more leads and grow your business with partial-form submission.
  • \n
  • Form Locker – Manage form permissions and add access control rules including password-protected forms, members only forms, limit contact form entry per person, close form after specific date / time, etc.
  • \n
  • Offline Forms – Let your visitors save their entered data offline and submit when their internet connection is restored.
  • \n
  • Form Landing Pages – Create “distraction-free” form landing pages to boost conversions. Great Google Forms and Wufoo alternative.
  • \n
  • Conversational Forms – Interactive form layout that makes your form feels more human and boost overall completion rate. Great for surveys and registration forms. Perfect Typeform alternative for WordPress without the high costs.
  • \n
  • Webhooks – Send form entry data to secondary tools and external services. No code required, and no need for a third party connector.
  • \n
  • User Journey Reporting – Discover the steps your visitors take before they submit your forms. Right in the WordPress dashboard, you can easily see the content that’s driving the most valuable form conversions.
  • \n
\n

Integrations

\n
    \n
  • PayPal Payment Forms – Create PayPal forms to easily collect payments, donations, and online orders.
  • \n
  • Stripe Forms – Easily collect credit card payments, donations, and online orders with our Stripe addon.
  • \n
  • Authorize.Net Forms – Connect your WordPress site with Authorize.Net to collect payments, donations, and online orders.
  • \n
  • Mailchimp Forms – Create Mailchimp newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • AWeber Forms – Create AWeber newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • Campaign Monitor Forms – Create Campaign Monitor newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • GetResponse Forms – Create GetResponse newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • Constant Contact Forms – Create Constant Contact newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • Drip Forms – Create Drip newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • ActiveCampaign Forms – Add contacts to your ActiveCampaign account, record events, add notes to contacts, and more.
  • \n
  • Sendinblue Forms – Create Sendinblue forms to automate your marketing and engage your subscribers.
  • \n
  • Salesforce Forms – Easily send your WordPress form contacts and leads to your Salesforce CRM account.
  • \n
  • Zapier Addon – Connect your WordPress forms with over 1000+ apps. Route your contact form data to your favorite CRM, email marketing service, etc.
  • \n
\n

After reading this feature list, you can probably imagine why WPForms is the best WordPress contact form plugin in the market.

\n

Give WPForms a try.

\n

Want to unlock more features? Upgrade to our Pro version.

\n

Credits

\n

This plugin is created by Jared Atchison and Syed Balkhi.

\n

Branding Guideline

\n

WPForms® is a registered trademark of WPForms LLC. When writing about the contact form plugin by WPForms, please make sure to uppercase the initial 3 letters.

\n
    \n
  • WPForms (correct)
  • \n
  • WP Forms (incorrect)
  • \n
  • wpforms (incorrect)
  • \n
  • wpform (incorrect)
  • \n
\n

What’s Next

\n

If you like this plugin, then consider checking out our other projects:

\n
    \n
  • OptinMonster – Get More Email Subscribers with the most popular conversion optimization plugin for WordPress.
  • \n
  • MonsterInsights – See the stats that matter and grow your business with confidence. The best Google Analytics plugin for WordPress.
  • \n
  • SeedProd – Create beautiful landing pages with our powerful drag & drop landing page builder.
  • \n
  • WP Mail SMTP – Improve email deliverability for your contact form with the most popular SMTP plugin for WordPress.
  • \n
  • RafflePress – Best WordPress giveaway and contest plugin to grow traffic and social followers.
  • \n
  • Smash Baloon – #1 social feeds plugin for WordPress – display social media content in WordPress without code.
  • \n
  • AIOSEO – The original WordPress SEO plugin to help you rank higher in search results (trusted by over 2 million sites).
  • \n
  • Push Engage – Connect with visitors after they leave your website with the leading web push notification plugin.
  • \n
  • TrustPulse – Add real-time social proof notifications to boost your store conversions by up to 15%.
  • \n
\n

Visit WPBeginner to learn from our WordPress Tutorials and find out about other best WordPress plugins.

\n

Notes

\n

WPForms is absolutely, positively the most beginner friendly WordPress contact form plugin on the market. It is both easy and powerful.

\n

We took the pain out of creating online forms and made it easy. Check out all WPForms features.

\n

Also, I’m the founder of WPBeginner, the largest WordPress resource site for beginners. It was a huge priority for me to make a WordPress contact form plugin that beginners can use without any training.

\n

I feel that we have done that here. I hope you enjoy using WPForms.

\n

Thank you

\n

Syed Balkhi

\n","download_link":"https://downloads.wordpress.org/plugin/wpforms-lite.1.6.9.zip","tags":{"contact-form":"contact form","contact-form-plugin":"contact form plugin","custom-form":"custom form","form-builder":"form builder","forms":"forms"},"donate_link":"","icons":{"1x":"https://ps.w.org/wpforms-lite/assets/icon.svg?rev=2574198","2x":"https://ps.w.org/wpforms-lite/assets/icon-256x256.png?rev=2574201","svg":"https://ps.w.org/wpforms-lite/assets/icon.svg?rev=2574198"},"wporg":true},{"name":"MonsterInsights – Google Analytics Dashboard for WordPress (Website Stats Made Easy)","slug":"google-analytics-for-wordpress","version":"7.18.0","author":"MonsterInsights","author_profile":"https://profiles.wordpress.org/chriscct7","requires":"3.8.0","tested":"5.8","requires_php":"5.2","rating":92,"ratings":{"1":194,"2":39,"3":34,"4":75,"5":2078},"num_ratings":2420,"support_threads":9,"support_threads_resolved":8,"active_installs":3000000,"downloaded":96813433,"last_updated":"2021-08-10 9:06pm GMT","added":"2007-09-14","homepage":"https://www.monsterinsights.com/?utm_source=liteplugin&utm_medium=pluginheader&utm_campaign=pluginurl&utm_content=7%2E0%2E0","short_description":"The best free Google Analytics plugin for WordPress. See how visitors find and use your website, so you can grow your business.","description":"

Google Analytics Plugin for WordPress

\n

With over 3 million active installs, MonsterInsights is the most popular Google Analytics plugin for WordPress.

\n

We believe that it’s easy to double your traffic and sales when you know exactly how people find and use your website. MonsterInsights shows you the analytics and stats that matter, so you can grow your business with confidence.

\n

At MonsterInsights, we make it “effortless” to properly connect your WordPress site with Google Analytics, so you can start making data-driven decisions to grow your business.

\n

Unlike other Google Analytics plugins, MonsterInsights allow you to enable all advanced Google Analytics tracking features with just a few clicks (no need to hire a developer).

\n

The best part is that MonsterInsights comes with an analytics dashboard for WordPress that shows you actionable analytics reports right inside your WordPress dashboard. We have created customized reports that eliminate the fluff and only show you the stats that matter, so you can see exactly what’s working and what’s not!

\n

Simply put, MonsterInsights is the most complete Google Analytics plugin for WordPress that’s both EASY and POWERFUL.

\n

That’s why millions of small businesses and top companies like Microsoft, Bloomberg, FedEx, Yelp, Subway, etc. use MonsterInsights to setup Google Analytics on their WordPress sites.

\n
\n

MonsterInsights Pro
\n This plugin is the lite version of MonsterInsights Pro plugin that comes with all the tracking features you will ever need including events tracking, ecommerce tracking, custom dimensions tracking, page speed reports, popular post tracking, custom dimensions, affiliate link tracking, and tons more. Click here to purchase the best premium Google Analytics plugin for WordPress now!

\n
\n

We took the pain out of installing Google Analytics in WordPress and made it easy. Here’s why over 3 million smart business owners, designers, and developers love MonsterInsights, and you will too!

\n

\n

Quick & Easy Google Analytics Setup

\n

Properly setting up Google Analytics is complicated. You have to either hire a developer or learn how to add advanced code snippets to your website in many different areas. This process can take days or weeks…and can even break your website!

\n

With MonsterInsights, we made it “effortless” to properly setup Google Analytics in WordPress. Yes, you can enable all advanced Google Analytics features with just a few clicks.

\n

If you can point-and-click, then you can set up Google Analytics inside WordPress and start seeing insights in under 15 minutes (no code necessary).

\n

We keep up with all Google Analytics updates, so you can sleep well at night knowing that your website will always stay up to date with the newest features.

\n

See what one business owner is saying about MonsterInsights:

\n
\n

It just works. Really easy way to insert Google Analytics tracking code and keep it there when switching themes. No need to copy/paste code anywhere. This is the best way to handle Google Analytics in WordPress.
\n Steven Gliebe

\n
\n

Google Analytics Dashboard + Real Time Stats

\n

Our goal at MonsterInsights is to make Google Analytics easy and accessible for everyone.

\n

We understand that Google Analytics has a steep learning curve which often prevents small business owners from making informed decisions to grow their business.

\n

That’s why MonsterInsights comes with a built-in Google Analytics Dashboard for your WordPress site, so you can see all the useful information about your visitors right inside your WordPress dashboard without needing to login somewhere else.

\n

We have even created customized reports to help you filter through the noise and see the stats that really matter!

\n
    \n
  • \n

    Audience Report helps you get to know your visitors in a whole new way. It shows you detailed insights like which country your visitors are coming from, what are they most interested in, which device are they using, their age, gender, and a whole lot more. You can use this demographics report and audience clues to tweak your website design and content accordingly.

    \n
  • \n
  • \n

    **Publishers Report ** helps you understand which pages your visitors are arriving, and which pages they are leaving from. Designed specifically for blogs and other resource sites, this powerful report will show you which outbound links are getting clicked so you can easily optimize for higher conversions.

    \n
  • \n
  • \n

    Behavior Report shows you exactly how people find your website, which keywords did they search for, who referred them, what did they click on your site, and more. You can use these useful stats to identify low-hanging fruits, new partnership opportunities, and promotional areas to focus on.

    \n
  • \n
  • \n

    Content Report shows you stats on exactly which content gets the most visits, so you can stop guessing and start creating content that gets more traffic and conversion.

    \n
  • \n
  • \n

    Ecommerce Report shows you important store stats like total revenue, conversion rate, average order value, top referral sources, and more (all in one place).

    \n
  • \n
  • \n

    Forms Report shows you conversion stats for various contact forms and lead forms on your website, so you can improve the conversions to grow your business.

    \n
  • \n
  • \n

    Search Console Report shows you exactly how well your website is ranking in Google, so you can further optimize your SEO to grow your organic traffic.

    \n
  • \n
  • \n

    Custom Dimensions Report helps you dig deeper by showing you useful stats like who are your most popular authors, what are the best publication times, which are your most popular categories or tags, how well are your Yoast focus keywords and SEO score performing, and more.

    \n
  • \n
  • \n

    Site Speed Report makes it easy to track pagespeed insights and loading times for your website and get the information you need to improve user experience and your SEO rankings.

    \n
  • \n
\n

Our custom Google Analytics Dashboard reports are based on over 12+ years of online business experience. We built MonsterInsights to be the Google Analytics plugin that we wish we had.

\n

We currently use MonsterInsights on all our portfolio companies which include both media sites generating tens of millions of pageviews and eCommerce sites generating millions in sales.

\n

That’s why we can confidently say that MonsterInsights is the ultimate Google Analytics Shortcut for seeing the stats that matter and making data-driven decisions to grow your business.

\n
\n

I love being able to drill down into the analytics via the reporting feature. I have the PRO version and it makes a big difference what you can analyze. I’m glad that I can integrate with Pretty Links too!
\n Kim Beasley – MonsterInsights user

\n
\n

Google Analytics Enhanced Ecommerce Tracking Made Easy

\n

Google Analytics Enhanced Ecommerce tracking is a powerful feature that lets you track user behavior across your online store starting from product views to checkout page to thank you page and beyond.

\n

With MonsterInsights’ easy WooCommerce integration, you can setup WooCommerce analytics with literally 1-click.

\n

Once you have enabled WooCommerce tracking, MonsterInsights will show you all important WooCommerce metrics in a single dashboard including WooCommerce conversion rate, top products in your WooCommerce store, total transactions, total revenue, average order value, top referral sources, and more.

\n

Our WooCommerce analytics report also includes other detailed WooCommerce event tracking data like total add to carts, total removed from cart, time to purchase, and sessions to purchase.

\n

For those who want to go beyond our WooCommerce stats dashboard, you can easily open up the Google Analytics dashboard to combine WooCommerce data with other secondary dimensions and filters to find exactly what you’re looking for.

\n

Aside from WooCommerce Google Analytics integration, MonsterInsights’ eCommerce addon also offers seamless integration for the Easy Digital Downloads plugin.

\n

Our Easy Digital Downloads Google Analytics integration allows you to set up Enhanced Ecommerce Tracking on your store with just 1-click.

\n

Simply put, MonsterInsights’ Enhanced Ecommerce for WordPress feature is by far the easiest and most powerful in the market.

\n

Google Analytics + GDPR Compliance

\n

MonsterInsights helps make Google Analytics GDPR compliance easier for business owners.

\n

Our EU compliance addon allows you to:

\n
    \n
  • Anonymize IP in Google Analytics
  • \n
  • Disable the Demographics and Interest Reports for Remarketing and Advertising
  • \n
  • Disable UserID and author name tracking
  • \n
  • Enable the ga() compatibility mode
  • \n
  • Integrate with Cookie Notice and CookieBot plugins to collect user consent before tracking
  • \n
  • Integrate with Google AMP Consent Box before enable tracking
  • \n
  • Integrate with Google Analytics’s Chrome browser opt-out extension and built-in cookie opt-out system
  • \n
  • Offer Easy Opt Out link for Google Analytics tracking
  • \n
\n

While no single plugin can guarantee 100% GDPR compliance in WordPress, MonsterInsights goes to great length in helping business owners with GDPR compliance.

\n

For more details, see: GDPR and MonsterInsights – Everything You Need to Know.

\n

Universal Tracking + Google Analytics for AMP and Instant Articles

\n

MonsterInsights uses Google Analytics universal tracking, so you can track your users across devices and platforms.

\n

Accelerated Mobile Pages (AMP) is a project by Google that helps you speed up your website. However if you don’t set it up properly, Google AMP can cause you to lose your website analytics. Our Google Analytics AMP integration allows you to have accurate tracking on all AMP enabled pages. It works seamlessly with AMP for WordPress plugin.

\n

We also offer 1-click Google Analytics integration with Facebook Instant Articles.

\n

At MonsterInsights, we always stay ahead of the curve in helping you integrate WordPress with the latest Google Analytics tracking features.

\n
\n

Analytics for PROs! This plugin brings it all, great features and helpful info to easily see what you are doing.
\n Frank van der Sluijs

\n
\n

Google AdSense Tracking and Affiliate Link Tracking

\n

With MonsterInsights Ads tracking addon, publishers can easily track the performance of their Google AdSense Ads inside their Google Analytics dashboard.

\n

Our affiliate link tracking makes it easy for bloggers and affiliate marketers to track their affiliate links with Google Analytics.

\n

MonsterInsights uses event tracking for all WordPress outbound link tracking which is far more accurate than any built-in WordPress analytics solution.

\n

Unlike other WordPress analytics plugin, our Google Analytics affiliate link tracking does NOT slow down your website because all events are recorded via JavaScript and sent straight to your account.

\n

Most other WordPress stats plugin track data on your WordPress hosting server which slows down your website and does not scale for larger websites.

\n

Since our affiliate link tracking uses Google Analytics’ powerful servers, we can skip WordPress entirely.

\n

MonsterInsights’ affiliate link tracking feature works with all WordPress affiliate link management plugins including Pretty Links, Thirsty Affiliates, and others.

\n

Custom Dimensions Tracking, Custom Google Analytics Event Tracking, and More

\n

Our Google Analytics event tracking feature for WordPress doesn’t just stop at affiliate link tracking.

\n

You can use MonsterInsights custom Google analytics event tracking feature to easily add outbound-link tracking, file downloads tracking, call-to-action button tracking, hashmark tracking, telephone link tracking, and more.

\n

Our powerful Forms Tracking addon uses Google Analytics custom event tracking feature to enable form analytics in WordPress. With just 1-click, you can enable form conversion tracking for your contact forms, lead generation forms, registration forms, surveys, and any other type of form in WordPress.

\n

MonsterInsights’ Custom Dimensions addon allows you to push WordPress analytics even further. You can use Google Analytics custom dimensions to generate helpful WordPress stats for:

\n
    \n
  • Author Tracking – see stats for each author to find which author’s posts generate the most traffic.
  • \n
  • Post Type Tracking – see stats for WordPress post types to find out which sections are performing the best.
  • \n
  • Category Tracking – see stats for your WordPress categories to find out which sections of your sites are the most popular.
  • \n
  • Tags Tracking – see stats for your WordPress tags to find out which tags are the most popular.
  • \n
  • SEO Score Tracking – see stats for your Yoast SEO score and see how it impacts your traffic.
  • \n
  • Focus Keyword Tracking – see stats for Yoast focus keyword and see how it correlates with your traffic.
  • \n
  • Logged-in User Tracking – see WordPress stats for what percentage of your users are logged-in.
  • \n
  • User ID Tracking – see stats for each individual logged-in user’s activity through User ID custom dimension – great for Ecommerce and membership sites.
  • \n
  • Published Time Tracking – track the performance of your posts based on their published time.
  • \n
\n

Simply put, MonsterInsights allow you to take full advantage of all the powerful Google Analytics features.

\n
\n

I like how simple it is for client users and how I can turn on the advanced features for myself to get all the details right.
\n Skip Shean

\n
\n

Google Analytics Dashboard Plugin for WordPress Multisite Networks

\n

MonsterInsights is the most popular analytics plugin for adding Google Analytics to WordPress multisite.

\n

We have built-in all permissions and controls that you would need to successfully run Google Analytics on a WordPress multi-site.

\n

You can control who has access to view the Google Analytics Dashboard report in WordPress. Our permissions setting allows you to hide analytics reports for specific user roles.

\n

Similarly, we understand that some sites may want to exclude logged-in users from tracking. MonsterInsights gives you granular control to exclude admin in Analytics as well as other user roles.

\n

Our performance addon allows you to adjust sample rate and site speed sample rates for Google Analytics.

\n

By now you can probably see why MonsterInsights has become the most popular Google Analytics plugin for WordPress.

\n

We understand Google Analytics better than any other analytics plugin for WordPress.

\n

Full MonsterInsights Feature List

\n
    \n
  • Quick and Easy Setup – Easily setup Google Analytics for WordPress with just a few clicks (no coding needed)
  • \n
  • Real Time Stats – See real time stats inside your Google Analytics dashboard.
  • \n
  • Universal Tracking – Get better insights with Google Analytics’ universal tracking.
  • \n
  • Google Analytics Dashboard – See the stats that matter from right inside your WordPress dashboard with custom Publisher Report, Ecommerce report, and Search Console report.
  • \n
  • eCommerce Tracking – Add Google Analytics Ecommerce tracking to WordPress.
  • \n
  • WooCommerce Google Analytics – Add Enhanced Ecommerce Tracking to your WooCommerce store.
  • \n
  • Easy Digital Downloads Google Analytics – Add Enhanced Ecommerce Tracking to your EDD store.
  • \n
  • Ads Tracking – Track your Google Adsense ads with Google Analytics.
  • \n
  • Affiliate Link Tracking – Track your affiliate links and get stats that matter.
  • \n
  • File Download Tracking – Enable file download stats with just a click.
  • \n
  • Custom Link Tracking – Track your outbound link clicks with Google Analytics.
  • \n
  • Events Tracking – Track custom button and banner clicks with Google Analytics.
  • \n
  • Custom Dimensions Tracking – Enable Google analytics custom dimensions tracking for WordPress.
  • \n
  • Author Tracking – See author stats and discover who’s the most popular author on your site.
  • \n
  • Popular Post Tracking – See which blog post and section is the most popular.
  • \n
  • Contextual Insights – Get actionable tips on how to improve engagement and get more visitors based on your site’s traffic.
  • \n
  • Headline Analyzer – Get more clicks and improve SEO following suggestions from our Headline Analyzer directly in the WordPress editor
  • \n
  • Custom Post Type Tracking – Track the performance of your custom post types.
  • \n
  • Referral Tracking – See how visitors are finding your website to better focus your marketing efforts.
  • \n
  • Performance Tracking – Control the performance rate and sample rate for your Google Analytics report.
  • \n
  • Enhanced Link Attribution – Get better analytics with enhanced link attribution.
  • \n
  • Email Summaries – Your site’s Google Analytics traffic report delivered straight to your inbox every week.
  • \n
  • Google Analytics for AMP – Add proper tracking for Google AMP.
  • \n
  • Google Analytics for Facebook Instant Articles – Add proper tracking for Facebook Analytics.
  • \n
  • Google Analytics GDPR Compliance – EU compliance addon helps you improve Google Analytics GDPR compliance by adding anonymize IP, cookie consent for opt-out tracking, and more.
  • \n
  • Form Conversion Tracking – Track conversions for your WordPress forms. Works with all popular plugins including WPForms, Contact Form 7, Gravity Forms, Formidable Forms, and more.
  • \n
  • Google Optimize Tracking – Enable Google Analytics support for Google Optimize A/B Testing.
  • \n
  • Google Analytics Tools – Helpful tools for Google Analytics such as UTM link tracking builder.
  • \n
  • Want us to add something else? Suggest a feature and we’ll get it added!
  • \n
\n

After reading this exhaustive feature list, you can probably imagine why MonsterInsights is the best Google Analytics plugin for WordPress.

\n

Give MonsterInsights a try.

\n

Want to unlock even more features? Upgrade to our Pro version.

\n
\n

Simple, yet powerful. Amazing piece of plugin, does exactly what expected and even more.
\n Matt Jaworski

\n
\n

Popular Google Analytics Tutorials

\n\n

Note for Beginners

\n

Like all WordPress plugins, Google Analytics by MonsterInsights is only available for self-hosted WordPress sites. This means you will need to switch from WordPress.com to WordPress.org if you want to use this plugin on your WordPress site.

\n

For more details, see this infographic on self hosted WordPress.org vs free WordPress.com

\n

Credits

\n

This plugin is created by Chris Christoff and Syed Balkhi with sponsorship from WPBeginner.

\n

Branding Guidelines

\n

MonsterInsights® is a registered trademark of MonsterInsights LLC. When writing about the Google Analytics for WordPress plugin by MonsterInsights, please make sure to uppercase the first letters of both word.

\n
    \n
  • MonsterInsights (correct)
  • \n
  • Monster Insights (incorrect)
  • \n
  • monsterinsights (incorrect)
  • \n
  • monsterinsight (incorrect)
  • \n
\n

What’s Next

\n

If you like this plugin, then consider checking out our other projects:

\n
    \n
  • OptinMonster – Get More Email Subscribers
  • \n
  • WPForms – Best WordPress Contact Form Plugin
  • \n
  • AIOSEO – The original WordPress SEO plugin to help you rank higher in search results (trusted by over 2 million sites)
  • \n
  • SeedProd – Most popular coming soon & maintenance mode plugin for WordPress
  • \n
  • WP Mail SMTP – Improve email deliverability for your contact form with the most popular SMTP plugin for WordPress
  • \n
  • RafflePress – Best WordPress giveaway and contest plugin to grow traffic and social followers
  • \n
  • Smash Balloon – #1 social feeds plugin for WordPress – display social media content in WordPress without code
  • \n
  • PushEngage – Connect with visitors after they leave your website with the leading web push notification plugin
  • \n
  • TrustPulse – Add real-time social proof notifications to boost your store conversions by up to 15%
  • \n
\n

This plugin would not be possible without the help and support of WPBeginner, the largest WordPress resource site. You can learn from our free WordPress Tutorials like how to install WordPress, choose the best WordPress hosting, WordPress glossary, and more.

\n

You can also learn about other best WordPress plugins.

\n","download_link":"https://downloads.wordpress.org/plugin/google-analytics-for-wordpress.7.18.0.zip","tags":{"google-analytics":"google analytics","google-analytics-dashboard":"google analytics dashboard","google-analytics-widget":"google analytics widget","woocommerce-stats":"WooCommerce stats","wordpress-analytics":"WordPress analytics"},"donate_link":"http://www.wpbeginner.com/wpbeginner-needs-your-help/","icons":{"1x":"https://ps.w.org/google-analytics-for-wordpress/assets/icon.svg?rev=1598927","2x":"https://ps.w.org/google-analytics-for-wordpress/assets/icon-256x256.png?rev=1598927","svg":"https://ps.w.org/google-analytics-for-wordpress/assets/icon.svg?rev=1598927"},"wporg":true},{"name":"Atomic Blocks – Gutenberg Blocks Collection","slug":"atomic-blocks","version":"2.9.0","author":"atomicblocks","author_profile":"https://profiles.wordpress.org/atomicblocks","requires":"5.3","tested":"5.5.5","requires_php":"5.6","rating":86,"ratings":{"1":5,"2":0,"3":1,"4":6,"5":31},"num_ratings":43,"support_threads":1,"support_threads_resolved":0,"active_installs":40000,"downloaded":991926,"last_updated":"2020-10-28 4:53pm GMT","added":"2018-03-26","homepage":"https://atomicblocks.com","short_description":"A collection of beautiful, customizable Gutenberg blocks for the new block editor.","description":"

Atomic Blocks has moved!

\n

Same powerful blocks, same beautiful designs, same innovative team. Atomic Blocks has been renamed to Genesis Blocks. Learn more about Genesis Blocks. With our migration tool built right into Genesis Blocks, the transition between plugins will be simple and seamless – plus you’ll be ready to receive the new blocks and features we’re releasing soon.

\n

Atomic Blocks is a collection of page building blocks for the new Gutenberg block editor. Building pages with the block editor and Atomic Blocks gives you more control to quickly create and launch any kind of site you want!

\n

Installing the customizable Atomic Block plugin adds a collection of beautiful, site-building blocks to help you customize page layouts, increase engagement, and get results for your business. Atomic Blocks provides everything from customizable buttons, to beautifully-designed page sections and full-page layout designs via the Section & Layout block.

\n

Along with the content blocks you’ll find in Atomic Blocks, we’re also publishing helpful articles and tutorials to help you get started with Gutenberg.

\n

New Section and Layout Block!

\n

\n

On top of the handy, time-saving blocks already found in Atomic Blocks, we’re excited to introduce the brand new Section and Layout block! This block comes with a library of pre-designed sections and layouts to help you quickly and easily build a beautiful site with the new block editor.

\n

Using the Section and Layout modal window, you can browse designs by category, search, and even add sections and layouts to a Favorites tab for quick access later. Paired with the free Atomic Blocks theme, which has support for full-width, block-based page building, you have everything you need to start building your site today!

\n

Atomic Blocks currently includes the following blocks:

\n\n

Atomic Blocks WordPress Theme

\n

We’ve created a beautiful WordPress theme to help you get started with the Atomic Blocks plugin and the new WordPress block editor. The theme integrates seamlessly with the blocks you’ll find in the plugin!

\n\n

In addition to the Atomic Block Theme, we’ve built Revolution Pro with the StudioPress team. This theme is built from the ground up with blocks—Gutenberg core and Atomic. Using this Theme and the Genesis One-Click Theme Install you can have a new block-based site up and running in minutes.

\n\n

Google AMP Support

\n

The Accelerated Mobile Pages (AMP) project is a publishing format created by Google to enhance site performance for mobile website users. AMP pages are specially designed for Google search users to quickly load website pages without using any extraneous data. Atomic Blocks has support for AMP built into each block!

\n

Atomic Blocks Help File

\n

We’ve created a handy help file that you can check out here. The help file covers how to setup the plugin and get started with the blocks.

\n

The help file is also available in the plugin once activated. Click the Atomic Blocks admin menu item to visit the Getting Started page.

\n

View the plugin help file

\n

Follow Along:

\n\n","download_link":"https://downloads.wordpress.org/plugin/atomic-blocks.2.9.0.zip","tags":{"blocks":"blocks","editor":"editor","gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","page-builder":"page builder"},"donate_link":"https://atomicblocks.com","icons":{"1x":"https://ps.w.org/atomic-blocks/assets/icon-128x128.jpg?rev=1914920","2x":"https://ps.w.org/atomic-blocks/assets/icon-256x256.jpg?rev=1914921"},"wporg":true},{"name":"Akismet Spam Protection","slug":"akismet","version":"4.1.12","author":"Automattic","author_profile":"https://profiles.wordpress.org/automattic","requires":"4.6","tested":"5.8","requires_php":false,"rating":94,"ratings":{"1":40,"2":9,"3":13,"4":45,"5":811},"num_ratings":918,"support_threads":9,"support_threads_resolved":8,"active_installs":5000000,"downloaded":211507580,"last_updated":"2021-09-03 4:53pm GMT","added":"2005-10-20","homepage":"https://akismet.com/","short_description":"The best anti-spam protection to block spam comments and spam in a contact form. The most trusted antispam solution for WordPress and WooCommerce.","description":"

Akismet checks your comments and contact form submissions against our global database of spam to prevent your site from publishing malicious content. You can review the comment spam it catches on your blog’s “Comments” admin screen.

\n

Major features in Akismet include:

\n
    \n
  • Automatically checks all comments and filters out the ones that look like spam.
  • \n
  • Each comment has a status history, so you can easily see which comments were caught or cleared by Akismet and which were spammed or unspammed by a moderator.
  • \n
  • URLs are shown in the comment body to reveal hidden or misleading links.
  • \n
  • Moderators can see the number of approved comments for each user.
  • \n
  • A discard feature that outright blocks the worst spam, saving you disk space and speeding up your site.
  • \n
\n

PS: You’ll be prompted to get an Akismet.com API key to use it, once activated. Keys are free for personal blogs; paid subscriptions are available for businesses and commercial sites.

\n","download_link":"https://downloads.wordpress.org/plugin/akismet.4.1.12.zip","tags":{"anti-spam":"anti-spam","antispam":"antispam","comments":"comments","contact-form":"contact form","spam":"spam"},"donate_link":"","icons":{"1x":"https://ps.w.org/akismet/assets/icon-128x128.png?rev=969272","2x":"https://ps.w.org/akismet/assets/icon-256x256.png?rev=969272"},"wporg":true},{"name":"WP GDPR Cookie Notice","slug":"wp-gdpr-cookie-notice","version":"1.0.0-rc.1","author":"Felix Arntz","author_profile":"https://profiles.wordpress.org/flixos90","requires":"4.9.6","tested":"5.7.2","requires_php":"7.0","rating":76,"ratings":{"1":4,"2":0,"3":0,"4":0,"5":9},"num_ratings":13,"support_threads":1,"support_threads_resolved":0,"active_installs":700,"downloaded":5952,"last_updated":"2021-04-02 11:51pm GMT","added":"2019-03-01","homepage":"https://wordpress.org/plugins/wp-gdpr-cookie-notice/","short_description":"Simple performant cookie consent notice that supports AMP, Web Stories, granular cookie control and live…","description":"

This plugin adds a simple performant cookie consent notice to your WordPress site that supports AMP, Web Stories, granular cookie control and live preview customization.

\n

Not only does the notice allow you to provide the regular message that your site uses cookies, you can also optionally grant your site visitors permission to granularly allow which cookie types are allowed, supporting groups of functional (always required), preferences, analytics and marketing cookies. This aims towards compliance with how the new GDPR regulations recommend implementing cookie control for your site.

\n

In addition to the Privacy Policy page setting that WordPress core provides, you also get a settings to optionally set an extra Cookie Policy page, and you can easily link to either of them from the cookie consent notice.

\n

The cookie notice content and appearance can easily be tweaked using the Customizer, with an immediate live-preview of what your changes will look like.

\n

Last but not least, another important thing that this plugin takes care of, other than most other cookie consent plugins, is that it actually ensures cookies are only placed if the respective cookie type has been allowed by the visitor. The plugin does this by implementing cookie rules for WordPress itself, and also for the following plugins:

\n\n

More plugins will be supported in the future. If you are a developer though, it’s also very easy to add cookie rules for other code, by using the flexible cookie rule component the plugin provides as an extension point.

\n

Feature Summary

\n
    \n
  • Lightweight and easy-to-use: Simply activate the plugin, and the notice will appear.
  • \n
  • Live Preview: Use the Customizer to adjust the notice to your needs, with an instant live preview.
  • \n
  • Customizable Appearance: Specify the notice position, colors, border, button size and more.
  • \n
  • Customizable Content: Adjust the notice heading, text and button label to your preferences. You can easily link to your cookie policy page or privacy policy page, and even give visitors granular control about which cookie types they allow.
  • \n
  • Cookie Policy Support: Define an optional cookie policy page if your site has one, or alternatively provide an ID attribute to the cookie section in your privacy policy.
  • \n
  • Cookie Integrations: Supported cookies are only set once the visitor has given their consent. The cookie rules implemented also respect the more granular cookie control.
  • \n
  • JavaScript-driven: The cookie notice is inserted into the page as necessary via JavaScript, but at the same time provides easy access to whether it should be displayed via its PHP API.
  • \n
  • AMP Support: The notice is fully AMP-compatible using <amp-consent>, integrating seamlessly with the AMP plugin. It integrates with Web Stories as well.
  • \n
  • Coding Best Practices: The plugin is fully object-oriented and is coded after best practices, such as using interfaces, traits, dependency injection or the single responsibility principle. It also implements modern coding features requiring PHP 7, such as scalar type hints or return type hints.
  • \n
\n

Disclaimer

\n

This plugin does not provide any legal protection. You as a site administrator are required to ensure that it meets legal standards. This plugin is a technical tool, not a lawyer.

\n","download_link":"https://downloads.wordpress.org/plugin/wp-gdpr-cookie-notice.1.0.0-rc.1.zip","tags":{"amp":"amp","cookie-consent":"cookie consent","cookie-notice":"cookie notice","gdpr":"GDPR","web-stories":"web stories"},"donate_link":"","icons":{"1x":"https://ps.w.org/wp-gdpr-cookie-notice/assets/icon-128x128.png?rev=2042024","2x":"https://ps.w.org/wp-gdpr-cookie-notice/assets/icon-256x256.png?rev=2042024"},"wporg":true},{"name":"WordPress Share Buttons Plugin – AddThis","slug":"addthis","version":"6.2.6","author":"The AddThis Team","author_profile":"https://profiles.wordpress.org/arnavarro","requires":"3.0","tested":"5.2.11","requires_php":false,"rating":84,"ratings":{"1":75,"2":25,"3":22,"4":46,"5":444},"num_ratings":612,"support_threads":2,"support_threads_resolved":0,"active_installs":100000,"downloaded":5069105,"last_updated":"2019-07-10 5:19pm GMT","added":"2008-12-23","homepage":"https://wordpress.org/plugins/addthis/","short_description":"Now compatible with the AMP Plugin! Free Share Buttons from AddThis. Share to Messenger, WhatsApp, Facebook, Twitter, Pinterest and many more.","description":"

Now compatible with the AMP Plugin! The Free WordPress Share Buttons Plugin from AddThis makes it easier than ever for your audience to spread your content around the web. Our quick-loading Share Buttons Plugin lets you connect to over 200 social channels including Messenger, WhatsApp, Facebook, Twitter, Pinterest and many more.

\n

Our clean, customizable and simple share buttons are beautiful, quick to load and recognized all over the web.

\n

AddThis is trusted by over 15,000,000 websites with over 2 billion unique users, sharing content all over the world, in more than sixty languages.

\n

Types of Share Buttons:

\n
    \n
  • \n

    Floating share buttons: Placed on the side of your page, following your reader as they scroll. A great way to promote sharing without getting too in-your-face.

    \n
  • \n
  • \n

    Expanding share buttons: Modern, clean, and best suited for sites with tons of mobile traffic. This button expands to reveal sharing options on hover or click.

    \n
  • \n
  • \n

    Inline share buttons: Integrate share buttons into your own content for a seamless sharing experience.

    \n
  • \n
  • \n

    Image sharing buttons: Seamlessly integrate sharing into your layout with adjustable image sharing buttons. Perfect for pages with tons of shareable content.

    \n
  • \n
\n

Customizable:

\n
    \n
  • \n

    Designed for desktop, tablet, and mobile

    \n
  • \n
  • \n

    Choose from over 200 social media channels to display

    \n
  • \n
  • \n

    Adjust coloring to match your brand

    \n
  • \n
\n

Analytics:

\n
    \n
  • Sign up for a free AddThis account to get analytics on how your content is performing such as your top shared content, referring social networks and more. After you register, these analytics are accessible by logging into your AddThis.com account and visiting your AddThis dashboard. Analytics include site pageviews, your top shared content, referring social networks, and more.
  • \n
\n

Support:

\n

We strive to provide best-in-class support with a response time of around two hours, and a customer satisfaction rate of over 98%. To get in touch with our team, head to http://www.addthis.com/support.

\n

Check out our other plugins to help you grow and engage your audience!

\n
    \n
  • \n

    Follow Buttons: Add followers to 65+ social networks, including Facebook, Snapchat, Instagram, and more.

    \n
  • \n
  • \n

    Related Posts: Boost your on-site engagement with our Related Posts tool, which recommends content not only by what’s popular, but also what’s most relevant.

    \n
  • \n
\n

Want more? Visit our website to learn how you can activate our Email List Building and Link Promotion Tools.

\n

AddThis Academy | Privacy Policy

\n","download_link":"https://downloads.wordpress.org/plugin/addthis.6.2.6.zip","tags":{"share-buttons":"share buttons","social":"social","social-marketing":"Social Marketing","social-share":"social share","social-sharing":"social sharing"},"donate_link":"","icons":{"1x":"https://ps.w.org/addthis/assets/icon-128x128.png?rev=1223867","2x":"https://ps.w.org/addthis/assets/icon-256x256.png?rev=1223867"},"wporg":true},{"name":"BigCommerce For WordPress","slug":"bigcommerce","version":"4.16.0","author":"BigCommerce","author_profile":"https://profiles.wordpress.org/bigcommerce","requires":"5.2","tested":"5.5.5","requires_php":"7.2.0","rating":80,"ratings":{"1":8,"2":1,"3":0,"4":3,"5":27},"num_ratings":39,"support_threads":4,"support_threads_resolved":1,"active_installs":1000,"downloaded":57555,"last_updated":"2021-08-12 3:08am GMT","added":"2018-11-16","homepage":"","short_description":"Scale your ecommerce business with WordPress on the front-end and BigCommerce on the back end. Free up server resources from things like catalog manag …","description":"

BigCommerce for WordPress is a plugin that allows you to scale ecommerce further than ever before on WordPress. Scale your business with WordPress on the front-end and free up server resources from things like catalog management, processing payments, managing fulfillment logistics and more with BigCommerce on the back end.

\n

Built to integrate seamlessly with WordPress, you get access to our native ecommerce features from a single plugin, the ability to sell across multiple channels and marketplaces from a single location, and best of all, an embedded checkout experience that takes on PCI compliance and customer security on your behalf.

\n

Quick Start!

\n

Look at details from the latest release, including new features and enhancements here: https://github.com/bigcommerce/bigcommerce-for-wordpress/releases

\n

Dive into how you set up and customize your site using BC4WP using our guides here: https://developer.bigcommerce.com/bigcommerce-for-wordpress/getting-started/introduction

\n

Have a suggestion for how we can be better? Ping the team! wordpress-suggestions@bigcommerce.com

\n

DIFFERENT FROM YOUR TRADITIONAL PLUGIN

\n

We’ve taken a very different approach to ecommerce in WordPress. We set out to build our plugin the WordPress Way: deliver value to the community, build it with WordPress experts and make something developers can call their own.

\n

The BigCommerce for WordPress plugin leverages the best aspects of both platforms, allowing WordPress to manage content and BigCommerce to manage ecommerce.

\n

SCALABLE ECOMMERCE FOR WORDPRESS

\n

Continue to tap into the unrestricted customization of WordPress while pairing it with the most scalable SaaS ecommerce engine. BigCommerce lets you build complex catalogs, manage large volumes of concurrent traffic, orders and analytics.

\n

The BigCommerce plugin ports over a copy of your product catalog and stores products as custom post types in WordPress. It also creates pages for your cart, checkout, account profiles, sign in, shipping & returns, gift certificates and order history.

\n

The key difference to our approach is that you don’t need to install additional extensions to get access to common ecommerce features. Instead, you get instant access to many common (and advanced) features, such as complex catalog support, global payment gateways, currency handling, taxation, shipping calculations and centralized channel management; all out-of-the-box.

\n

OFFLOAD BACKEND RESOURCES

\n

Our philosophy is that processing orders and running your store shouldn’t affect the uptime and speed of your site — which can hurt your SEO, conversion, and brand. The BigCommerce plugin does the heavy commerce lifting, letting you scale your ecommerce without losing speed or uptime.

\n

LET US HANDLE PCI COMPLIANCE

\n

Taking on your own PCI compliance comes with a huge amount of liability and risk. BigCommerce powers the full checkout experience, assuming the burden of PCI compliance for you.

\n

EXTENSIVE PAYMENT GATEWAYS

\n

BigCommerce has over 65 payment gateway integrations available out-of-the box, serving 100+ countries and over 250 local payment methods.

\n

To help you reduce costs, we’ve pre-negotiated special credit and debit card processing rates with PayPal, our preferred payment solution. The more you grow with BigCommerce and upgrade your plan, the lower your rates can go.

\n

HIGHLY SCALABLE PRODUCT CATALOG

\n

BigCommerce is built for large, complex catalogs with up to 600 SKUs per product, and 250 product values for a single option. Our native catalog structure treats single products (including variants, details, SKUs, etc.) as a single API call, making inventory syncing with ERPs, PIMs (and WordPress) fast.

\n

MULTI-CHANNEL SELLING & MANAGEMENT

\n

With the core BigCommerce platform, you now have access within the control panel to sell across multiple marketplaces simultaneously, such as eBay, Amazon, Facebook, Instagram, Google Shopping, Square and more! Save time and eliminate errors and overselling with bulk listing, automatic inventory syncing and unified order and fulfillment management.

\n

USE YOUR FAVORITE WORDPRESS THEME

\n

BigCommerce for WordPress will work with any WordPress theme, but it may require some styling to make it fit perfectly. Are you a theme developer? We’d love to promote your BigCommerce for WordPress compatible theme. Get in touch with us here.

\n

To start, we recommend choosing a cross-browser compatible WordPress ecommerce theme, since the theme options included will better match what an online store requires.

\n

ECOMMERCE WITH GUTENBERG

\n

We’re big supporters of Gutenberg and built our plugin to support both the classic editor and Gutenberg. Whether you’re inserting shortcodes in classic mode or product blocks in Gutenberg, we will continue to enable support for both.

\n

SECURED USER ACCOUNTS & LOGINS

\n

In addition to offering you peace of mind with a secure checkout experience, we also extend this level of security to your shoppers, their accounts and logins, and payment information — all managed by BigCommerce.

\n

GLOBAL SHIPPING STREAMLINED

\n

We support all major global carriers, offer real-time carrier quotes, allow for free shipping, flat rates, dropshipping and more. With our deep ShipperHQ integration, you can even specify rates by product, category, customer group, quantity, destination, dimensions and more.

\n

FLEXIBLE SHOPPING CART

\n

We are bringing over a decade of focusing on building online stores to every WordPress website. Through this we bring our flexible shopping cart, along with it’s extensive customization options, so can offer enterprise grade promotions and discounts within a fully responsive layout, without additional extensions that other WordPress ecommerce plugins require.

\n

MULTIPLE SITES; ONE CONTROL PANEL

\n

Even if you sell across multiple WordPress sites, you shouldn’t have to manage them all in separate places. BigCommerce gives you a single control panel to manage your catalog, orders and shipping, all from one place. Streamline your admin experience and spend less time managing ecommerce on WordPress.

\n

Beyond WordPress, the endpoints we’ve opened on our platform allow you to build commerce into any sort of experience. Looking to launch a site in React? Interested in developing a mobile app? Want to integrate with an in-house POS? All of these can be built and managed from within the BigCommerce Control Panel.

\n

COMPLEX ENTERPRISE SYSTEMS INTEGRATIONS

\n

A huge benefit of having a SaaS ecommerce engine behind the scenes is that the core platform is already built for mid-market and enterprise use cases. Natively connect to your existing ERP suites, PIM software, OMS solutions, POS systems or marketing automation tools right out of the box.

\n

AMP SUPPORT

\n

Unique to most WordPress ecommerce plugins, BigCommerce for WordPress also includes support for Accelerated Mobile Pages. To activate, install the official Google plugin.

\n

SUPPORT AND SERVICES

\n

All of our BigCommerce customers have access to our 24/7 live phone, chat, and email support, run from our headquarters in Austin, Texas. For larger enterprise customers, we offer dedicated account management and implementation management services as part of your plan. We also have an ever-growing collection of help, support, and how-to guides in our help center.

\n

BUILT WITH DEVELOPERS IN MIND

\n

BigCommerce for WordPress was built by WordPress developers, with developers in mind. Our plugin is open source and available for you to fork, extend and modify as your needs require.

\n

Our plugin supports WordPress’ standard method of overriding template files so you can modify out-of-the-box designs. Customize your product cards, lists and shopping cart without risking plugin updates that will undo your changes.

\n

Additionally, there are many hooks and filters, so you can manipulate content to your heart’s content.

\n

JOIN OUR BIGCOMMERCE COMMUNITY

\n

All BigCommerce customers get access to our ever-growing online community to answer questions, discuss ecommerce strategies, learn about the latest product updates, contribute ideas and more.

\n

If you’re interested in contributing to BigCommerce for WordPress, head over to our GitHub Repository.

\n","download_link":"https://downloads.wordpress.org/plugin/bigcommerce.4.16.0.zip","tags":{"ecommerce":"ecommerce","online-store":"online store","retail":"retail","sell-online":"sell online","storefront":"storefront"},"donate_link":"","icons":{"1x":"https://ps.w.org/bigcommerce/assets/icon-256x256.png?rev=2141502","2x":"https://ps.w.org/bigcommerce/assets/icon-256x256.png?rev=2141502"},"wporg":true},{"name":"Yoast SEO","slug":"wordpress-seo","version":"17.1","author":"Team Yoast","author_profile":"https://profiles.wordpress.org/joostdevalk","requires":"5.6","tested":"5.8","requires_php":"5.6.20","rating":96,"ratings":{"1":718,"2":124,"3":170,"4":616,"5":25755},"num_ratings":27383,"support_threads":527,"support_threads_resolved":484,"active_installs":5000000,"downloaded":351794282,"last_updated":"2021-09-07 6:57am GMT","added":"2010-10-11","homepage":"https://yoa.st/1uj","short_description":"Improve your WordPress SEO: Write better content and have a fully optimized WordPress site using the Yoast SEO plugin.","description":"

Yoast SEO: the #1 WordPress SEO plugin

\n

Since 2008 Yoast SEO has helped millions of websites worldwide to rank higher in search engines.

\n

Yoast’s mission is SEO for Everyone. Our plugin’s users range from the bakery around the corner to some of the most popular sites on the planet.

\n

Yoast SEO Free contains everything that you need to manage your SEO, and the Yoast SEO Premium plugin and its extensions unlock even more tools and functionality.

\n

GET AHEAD OF THE COMPETITION

\n

To rank highly in search engines, you need to beat the competition. You need a better, faster, stronger website than the people who sell or do the same kinds of things as you.

\n

Yoast SEO is the most-used WordPress SEO plugin, and has helped millions of people like you to get ahead, and to stay ahead.

\n

TAKING CARE OF YOUR WORDPRESS SEO

\n

Yoast SEO is packed full of features, designed to help visitors and search engines to get the most out of your website. Some of our favourites are:

\n
    \n
  • Automated technical SEO improvements, like canonical URLs and meta tags.
  • \n
  • Advanced XML sitemaps; making it easy for Google to understand your site structure.
  • \n
  • Title and meta description templating, for better branding and consistent snippets in the search results.
  • \n
  • An in-depth Schema.org integration that will increase your chance of getting rich results, by helping search engines to understand your content.
  • \n
  • Full control over site breadcrumbs, so that users and search engines always know where they are.
  • \n
  • Faster loading times for your whole website, due to an innovative way of managing data in WordPress.
  • \n
  • [Premium] E-mail support for our Yoast SEO Premium users.
  • \n
  • [Premium] The possibility to expand Yoast SEO with the News SEO, Video SEO, Local SEO and WooCommerce SEO extensions.
  • \n
\n

WRITE KILLER CONTENT WITH YOAST SEO

\n

We know content is king, that’s why Yoast SEO is famous for its state-of-the-art content and SEO analysis. Yoast SEO gives you:

\n
    \n
  • SEO analysis: an invaluable tool while writing SEO-friendly content with the right (focus) keyphrases in mind.
  • \n
  • Readability analysis: ensures that humans and search engines can read and understand your content.
  • \n
  • Full language support for: English, German, French, Dutch, Spanish, Italian, Russian, Indonesian, Polish, Portuguese, Arabic, Swedish, Hebrew, Hungarian, Turkish, Czech, Norwegian and Slovak.
  • \n
  • A Google preview, which shows what your listings will look like in the search results. Even on mobile devices!
  • \n
  • Innovative Schema blocks for the WordPress block editor, so that your FAQ and HowTo content can be shown directly in the search results. Plus a breadcrumbs block to guide your users.
  • \n
  • [Premium] Internal linking blocks to easily improve the structure of your content. Easily add a table of contents block, a related links block, a subpages block, or siblings block! Plus, we’ll keep adding these easy-to-add blocks to improve your site structure.
  • \n
  • [Premium] Social previews to show you how your content will be shown on Twitter and Facebook. Plus: Social Appearance Templates to guarantee a consistent look.
  • \n
  • [Premium] The Insights tool that shows you what your text focuses on. This way you can keep your article in line with your keyphrases.
  • \n
  • [Premium] Optimize your content for synonyms and related keyphrases.
  • \n
  • [Premium] Optimize your article for different word forms of your keyphrases, as the singular and plural. But also different verb forms, synonyms, and related keyphrases. This makes for more natural content!
  • \n
  • [Premium] Automatic internal linking suggestions: write your article and get automatic suggested posts to link to!
  • \n
  • [Premium] An orphaned content filter to detect posts that have no links pointing towards them!
  • \n
  • [Premium] SEO workouts to make working on your site as easy as ABC. These SEO workflows will get your site into shape in no time!
  • \n
\n

KEEP YOUR SITE IN PERFECT SHAPE

\n

Whether you are an online entrepreneur, blogger or content creator, a developer, a (WordPress) SEO expert or a business owner, Yoast SEO helps you keep your website in perfect shape by:

\n
    \n
  • Tuning the engine of your website, so you can work on creating great content!
  • \n
  • Giving you cornerstone content and internal linking features to help you optimize your site structure in a breeze.
  • \n
  • Translating your content to structured data where possible, to help search engines understand your website.
  • \n
  • Helping you manage your team: with our SEO roles you can give colleagues access to specific sections of the Yoast SEO plugin.
  • \n
  • [Premium] Automatically creating redirects when URLs change or when pages are deleted, and providing tools to manage or create redirects.
  • \n
  • [Premium] Showing you social previews to manage the way your page is shared on social networks like Facebook and Twitter.
  • \n
\n

TRUST THE EXPERTS

\n

Yoast is powered by a team of expert developers, testers, software architects, and SEO consultants. They work constantly to stay at the cutting edge of WordPress SEO, and to improve the plugin with every release.

\n

Yoast SEO is the only WordPress SEO plugin made by world-renowned SEO experts.

\n

GET PREMIUM SUPPORT

\n

The Yoast team offers regular support on the WordPress.org forums. But we hope you understand that we prioritize our Premium customers. This one-on-one email support is available to people who have purchased Yoast SEO Premium.

\n

Did you know that Yoast SEO Premium contains a lot of extra features:

\n
    \n
  • A redirect manager that prevents “404: page not found” errors
  • \n
  • Optimize without worrying about over-optimization with intelligent word form recognition available in multiple languages.
  • \n
  • Internal linking blocks to structure your site easily.
  • \n
  • Internal linking suggestions while you’re writing.
  • \n
  • Preview your content to see what it will look like in the search results and when shared on social media using the Google preview and social preview.
  • \n
  • Cornerstone content checks that point search engines to your most important pages.
  • \n
  • Connect Yoast SEO to Zapier to easily create zaps that instantly share your published posts with 2000+ destinations like Twitter, Facebook, and much more.
  • \n
\n

If you are serious about your WordPress SEO, install the Yoast SEO Premium plugin! Costs a little, saves a lot of time!

\n

OUR EXTENSIONS TO FURTHER IMPROVE YOUR WORDPRESS SEO

\n

Check out these SEO add-ons by Yoast:

\n
    \n
  • Yoast Local SEO optimizes your website for a local audience.
  • \n
  • Yoast Video SEO ensures that Google understands what your video is about, increasing the chances of ranking in the video results.
  • \n
  • Yoast News SEO for news websites that want to improve their visibility and performance in Google News.
  • \n
  • WooCommerce SEO for all online shops that want to perform better in the search results and social media.
  • \n
\n

These extensions work fine with the free version of Yoast SEO. Of course, the premium extensions also include 24/7 support.

\n

Oh, don’t forget: our Yoast Academy is for all entrepreneurs, bloggers, and anyone who wants to learn more about optimizing websites, improving your WordPress SEO, and if you want to take your content to the next level!

\n

INTEGRATIONS

\n

Yoast SEO integrates seamlessly into a range of themes and plugins. We work particularly well with:

\n\n

BUG REPORTS

\n

Do you want to report a bug for Yoast SEO? Best to do so in the WordPress SEO repository on GitHub. Please note that GitHub is not a support forum and issues will be closed if they don’t meet the bug requirements.

\n

READ MORE

\n

Want more information on search engine optimization and Yoast SEO? Have a look at:

\n\n","download_link":"https://downloads.wordpress.org/plugin/wordpress-seo.17.1.zip","tags":{"content-analysis":"Content analysis","readability":"Readability","schema":"schema","seo":"seo","xml-sitemap":"xml sitemap"},"donate_link":"https://yoa.st/1up","icons":{"1x":"https://ps.w.org/wordpress-seo/assets/icon.svg?rev=2363699","2x":"https://ps.w.org/wordpress-seo/assets/icon-256x256.png?rev=2363699","svg":"https://ps.w.org/wordpress-seo/assets/icon.svg?rev=2363699"},"wporg":true},{"name":"Gutenberg","slug":"gutenberg","version":"11.4.1","author":"Gutenberg Team","author_profile":"https://profiles.wordpress.org/matveb","requires":"5.6","tested":"5.8","requires_php":"5.6","rating":42,"ratings":{"1":2267,"2":201,"3":126,"4":133,"5":701},"num_ratings":3428,"support_threads":59,"support_threads_resolved":8,"active_installs":300000,"downloaded":24489343,"last_updated":"2021-09-03 3:27pm GMT","added":"2017-06-16","homepage":"https://github.com/WordPress/gutenberg","short_description":"The Gutenberg plugin provides editing, customization, and site building features to WordPress. This beta plugin allows you to test bleeding-edge featu …","description":"

“Gutenberg” is a codename for a whole new paradigm in WordPress site building and publishing, that aims to revolutionize the entire publishing experience as much as Gutenberg did the printed word. Right now, the project is in the first phase of a four-phase process that will touch every piece of WordPress — Editing, Customization, Collaboration, and Multilingual — and is focused on a new editing experience, the block editor.

\n

The block editor introduces a modular approach to pages and posts: each piece of content in the editor, from a paragraph to an image gallery to a headline, is its own block. And just like physical blocks, WordPress blocks can added, arranged, and rearranged, allowing WordPress users to create media-rich pages in a visually intuitive way — and without work-arounds like shortcodes or custom HTML.

\n

The block editor first became available in December 2018, and we’re still hard at work refining the experience, creating more and better blocks, and laying the groundwork for the next three phases of work. The Gutenberg plugin gives you the latest version of the block editor so you can join us in testing bleeding-edge features, start playing with blocks, and maybe get inspired to build your own.

\n

Discover More

\n
    \n
  • \n

    User Documentation: See the WordPress Editor documentation for detailed docs on using the editor as an author creating posts and pages.

    \n
  • \n
  • \n

    Developer Documentation: Extending and customizing is at the heart of the WordPress platform, see the Developer Documentation for extensive tutorials, documentation, and API reference on how to extend the editor.

    \n
  • \n
  • \n

    Contributors: Gutenberg is an open-source project and welcomes all contributors from code to design, from documentation to triage. See the Contributor’s Handbook for all the details on how you can help.

    \n
  • \n
\n

The development hub for the Gutenberg project is on Github at: https://github.com/wordpress/gutenberg

\n

Discussion for the project is on Make Blog and the #core-editor channel in Slack, signup information.

\n","download_link":"https://downloads.wordpress.org/plugin/gutenberg.11.4.1.zip","tags":[],"donate_link":"","icons":{"1x":"https://ps.w.org/gutenberg/assets/icon-128x128.jpg?rev=1776042","2x":"https://ps.w.org/gutenberg/assets/icon-256x256.jpg?rev=1776042"},"wporg":true},{"name":"Setka Editor","slug":"setka-editor","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://setka.io/","short_description":"

Setka Editor is the first WYSIWYG plugin with page builder functionality.

\n","description":"\n\n\n

Setka Editor is the first WYSIWYG plugin with page builder functionality.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2018/11/Setka-Banner-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2018/11/Setka-Banner-372x209.jpg","svg":""},"wporg":false}] \ No newline at end of file +[{"name":"Podcast Player – Your Podcasting Companion","slug":"podcast-player","version":"5.1.0","author":"vedathemes","author_profile":"https://profiles.wordpress.org/vedathemes","requires":"4.9","tested":"5.8","requires_php":"5.6","rating":98,"ratings":{"1":0,"2":1,"3":0,"4":2,"5":43},"num_ratings":46,"support_threads":8,"support_threads_resolved":6,"active_installs":8000,"downloaded":114062,"last_updated":"2021-09-06 4:16pm GMT","added":"2019-02-06","homepage":"https://vedathemes.com/podcast-player/","short_description":"Showcase your podcast only using podcasting feed url. Use custom widget, shortcode or editor block…","description":"

Podcast Player provides an easy way to show and play your podcast episodes using podcasting feed url. It is a must have plugin for your podcast website. Give your listeners an easy access to all your episodes from any page or even from all the pages of your website.

\n

Podcast Player Pro | Documentation

\n\n

Podcast player key features

\n
    \n
  • Give your listeners an easy access to your podcast episodes.
  • \n
  • Display responsive podcast player just by entering your podcast’s feed url.
  • \n
  • Fetch all required details from feed url.
  • \n
  • Option to modify fetched details of your podcast.
  • \n
  • Option to Show or Hide individual player elements.
  • \n
  • Give your listener an option to share your podcast episodes.
  • \n
  • Ajax live search episodes from the podcast.
  • \n
  • It is possible to have multiple instances of podcast player on single page.
  • \n
  • Self adjusting layout according to width of the podcast player.
  • \n
\n

Podcast player pro features

\n
    \n
  • Professionally showcase your podcast using our unified player, episode list and grid templates.
  • \n
  • Use powerful filter options to choose which episodes or seasons you want to display on your website.
  • \n
  • Make your entire podcast catalogue easily available using our ajax approximate search feature.
  • \n
  • Add an audio message within your podcast episode.
  • \n
  • Add audio mp3 to your WordPress posts and display as podcast episodes.
  • \n
  • Show or hide specific elements and customize color and fonts to personalize your podcast display
  • \n
\n

Setup Podcast Player Widget

\n

Display searchable podcast episodes list on any widget area of your website.

\n

Minimum Setup

\n
    \n
  1. After activating the plugin, visit Appearance > Widgets in admin dashboard.
  2. \n
  3. Look for ‘Podcast player’ widget in left ‘Available Widgets’ section.
  4. \n
  5. Drag the widget to any available sidebar/widget area.
  6. \n
  7. Enter feed url in the appropriate field.
  8. \n
  9. Click [Save] button.
  10. \n
\n

Advanced Setup

\n
    \n
  1. After activating the plugin, visit Appearance > Widgets in admin dashboard.
  2. \n
  3. Look for ‘Podcast player’ widget in left ‘Available Widgets’ section.
  4. \n
  5. Drag the widget to any available sidebar/widget area.
  6. \n
  7. Enter feed url in the appropriate field.
  8. \n
  9. Optionally, click on “Change podcast content” button to customize feed’s auto fetched details.
  10. \n
  11. Optionally, click on “Show/Hide player items” button to show or hide player elements.
  12. \n
  13. Optionally, click on “Podcast player styling” button to customize player’s accent color.
  14. \n
  15. Optionally, click on “Sort & Filter” button to sort or filter podcast episodes.
  16. \n
  17. Click [Save] button.
  18. \n
\n

Setup Podcast Player Block

\n

Display searchable podcast episodes list on any post or page. Make sure you have not disabled WordPress latest block editor.

\n

Setup

\n
    \n
  1. After activating the plugin, visit any post or page’s edit screen.
  2. \n
  3. In main content area, click on ‘+’ icon to add a new block.
  4. \n
  5. Search for ‘Podcast Player’ block.
  6. \n
  7. Enter feed url in the appropriate field. A preview of your podcast player will appear.
  8. \n
  9. Click on the podcast player preview.
  10. \n
  11. Select appropriate options from the right sidebar to customize the player.
  12. \n
  13. Save or Update the post.
  14. \n
\n

Setup Podcast Player using shortcode

\n

Minimum Setup

\n
[podcastplayer feed_url ='']\n
\n
    \n
  1. feed_url – Your podcast feed url.
  2. \n
\n

Advanced Setup

\n
[podcastplayer feed_url ='' number='' podcast_menu='' cover_image_url='' hide_cover='true' hide_description='true' hide_subscribe='true' hide_search='true' hide_loadmore='true' hide_download='true' accent_color='#65b84f']Short Description [/podcastplayer]\n
\n
    \n
  1. feed_url: Your podcast feed url.
  2. \n
  3. number: Number of podcasts episodes to be displayed at a time.
  4. \n
  5. podcast_menu: Any previously created WordPress menu’s name OR ID OR slug. (optional)
  6. \n
  7. cover_image_url: Podcast’s cover image url. The image must be from your WP media library. (optional)
  8. \n
  9. header_default: (false/true) Show player header items by default
  10. \n
  11. hide_header: Hide player header items
  12. \n
  13. hide_title: (false/true) Show / Hide podcast Title in header info section
  14. \n
  15. hide_cover: (false/true) Show / Hide podcast cover image
  16. \n
  17. hide_description: (false/true) Show / Hide podcast description
  18. \n
  19. hide_subscribe: (false/true) Show / Hide podcast subscribe button.
  20. \n
  21. hide_search: (false/true) Show / Hide podcast search field.
  22. \n
  23. hide_author: (false/true) Show / Hide author/podcaster’s name.
  24. \n
  25. hide_content: (false/true) Show / Hide podcast episode’s content.
  26. \n
  27. hide_loadmore: (false/true) Show / Hide podcast load more button.
  28. \n
  29. hide_download: (false/true) Show/ Hide podcast episode download link.
  30. \n
  31. hide_social: (false/true) Show/ Hide podcast episode social sharing links.
  32. \n
  33. accent_color: Podcast player’s accent color (Color hex-code to be entered).
  34. \n
  35. sortby: Sort podcast episodes (sort_date_desc/sort_date_asc/sort_title_desc/sort_title_asc)
  36. \n
  37. filterby: Filter by any string in episode’s title
  38. \n
  39. list_default: (false/true) Display Episodes list by default on small screen
  40. \n
  41. hide_featured: (false/true) Show / Hide podcast episode featured image
  42. \n
  43. apple_sub: Apple podcast subscription link
  44. \n
  45. google_sub: Google podcast subscription link
  46. \n
  47. Short Description: Podcast short text description. (optional)
  48. \n
\n","download_link":"https://downloads.wordpress.org/plugin/podcast-player.5.1.0.zip","tags":{"feed-to-audio":"feed to audio","podcast":"podcast","podcaster":"podcaster","podcasting":"podcasting","rss-feed":"rss feed"},"donate_link":"","icons":{"1x":"https://ps.w.org/podcast-player/assets/icon-256x256.png?rev=2025683","2x":"https://ps.w.org/podcast-player/assets/icon-256x256.png?rev=2025683"},"wporg":true},{"name":"WPSSO Schema JSON-LD Markup | Google Rich Results, Rich Snippets, and Structured Data","slug":"wpsso-schema-json-ld","version":"4.18.1","author":"JS Morisset","author_profile":"https://profiles.wordpress.org/jsmoriss","requires":"5.0","tested":"5.8","requires_php":"7.0","rating":90,"ratings":{"1":5,"2":2,"3":1,"4":1,"5":55},"num_ratings":64,"support_threads":5,"support_threads_resolved":4,"active_installs":4000,"downloaded":284054,"last_updated":"2021-09-06 3:23pm GMT","added":"2016-02-14","homepage":"https://wpsso.com/extend/plugins/wpsso-schema-json-ld/","short_description":"Google Rich Results for Articles, Carousels, Events, FAQ pages, How-Tos, Local SEO, Products, Recipes, Ratings, Reviews, and more.","description":"

Supports over 500 different Schema (aka Schema.org) types and sub-types:

\n

Google Rich Results with JSON-LD structured data for Articles, Carousels (aka Item Lists), Claim Reviews, Events, FAQ pages, How-Tos, Images, Local Business / Local SEO, Organizations, Products, Ratings, Recipes, Restaurants, Reviews, Video Objects, and much more.

\n

Reads your existing content, plugin data, and service API data:

\n

There’s no need to manually re-enter descriptions, titles, product information, and re-select images / videos like other SEO and Schema markup plugins.

\n

Provides comprehensive Schema JSON-LD markup for posts, pages, custom post types, terms (category, tags, etc.), custom taxonomies, user profile pages, search result pages, archive pages, and Accelerated Mobile Pages (AMP) pages – including image SEO, video SEO, local business, organization, publisher, person, author and co-authors, extensive e-Commerce product markup, product variations, product ratings, aggregate ratings, reviews, recipe information, event details, collection pages, profile pages, search pages, FAQ pages, item lists for Google’s Carousel Rich Results, and much more.

\n

Most complete Schema JSON-LD markup for WooCommerce products:

\n

Note that WooCommerce offers incomplete Schema markup for Google Rich Results by default. The WPSSO Core Premium plugin and this add-on provide a solution by offering complete product meta tags for Facebook / Pinterest and complete Schema product markup for Google Rich Results – including additional product images, product variations, product information (brand, color, condition, EAN, dimensions, GTIN-8/12/13/14, ISBN, material, MPN, size, SKU, volume, weight, etc), product reviews, product ratings, sale start / end dates, sale prices, pre-tax prices, VAT prices, shipping rates, shipping times, and much, much more.

\n

Fixes all Google Search Console and Schema Markup Validator (aka Google Structured Data Testing Tool) errors:

\n
    \n
  • A value for the headline field is required.
  • \n
  • A value for the image field is required.
  • \n
  • A value for the logo field is required.
  • \n
  • A value for the publisher field is required.
  • \n
  • The aggregateRating field is recommended.
  • \n
  • The brand field is recommended.
  • \n
  • The headline field is recommended.
  • \n
  • The image field is recommended.
  • \n
  • The mainEntityOfPage field is recommended.
  • \n
  • The review field is recommended.
  • \n
  • This Product is missing a global identifier (e.g. isbn, mpn or gtin8).
  • \n
  • No global identifier provided (e.g. gtin mpn isbn).
  • \n
  • Not a known valid target type for the itemReviewed property.
  • \n
  • And more…
  • \n
\n

Some Schema property values may require data from WPSSO Core Premium supported third-party plugins and service APIs.

\n

Google regularly updates and changes their Schema markup requirements – WPSSO JSON Premium customers can also open a Premium support ticket for timely assistance with any new Google testing tool errors.

\n

Users Love the WPSSO JSON Add-on

\n

★★★★★ – “Forget everything else this is the best schema plugin – Sincerely, we bought other plugins that we had to abandon due to the lack of important features, but with this [WPSSO JSON] we get all that we need – and our schema has more features than the competition!” – zuki305

\n

★★★★★ – “Tried three other plugins before this one – for our Woocommerce site, this was by far the best one. Thanks!” – EntoMarket

\n

★★★★★ – “Crazy good! This plugin is one of my favorites! JS aggressively develops and improves this suite of plugins, continuously improving and adding features – with great customer support to boot! Highly recommended to improve your SEO for all kinds of JSON schemas!” – mikegoubeaux

\n

★★★★★ – “This plugin is heaven sent. I know little about SSO and this has taken care of everything. The support makes this an even better plugin to have. Keep up the great work!” – kevanchetty

\n

WPSSO JSON Add-on Features

\n

Extends the features of the WPSSO Core plugin (required plugin).

\n

Provides accurate and comprehensive Schema JSON-LD markup for Google Rich Results (aka Rich Snippets) with Structured Data.

\n

Provides complete Schema ImageObject SEO markup with image information from the WordPress Media Library (name, alternateName, alternativeHeadline, caption, description, fileFormat, uploadDate, and more).

\n

Provides complete Schema VideoObject SEO markup with video information from WPSSO Core Premium service APIs (Facebook, Slideshare, Soundcloud, Vimeo, Wistia, YouTube) including the ’embedUrl’ and ‘contentUrl’ properties for Google.

\n

Provides Schema 1:1, 4:3, and 16:9 images for Google Rich Results (see the Google rich results search library for details).

\n

Provides Schema FAQPage and Question / Answer markup for the WPSSO FAQ Manager add-on.

\n

Includes Schema JSON-LD scripts from shortcodes and WordPress editor blocks in the Schema CreativeWork type and sub-types.

\n

Built-in support for AMP and AMP for WP plugins.

\n

Includes contributor markup for Co-Authors Plus authors and guest authors (WPSSO Core Premium plugin required).

\n

Supports additional custom product information and WooCommerce product attributes from the WPSSO Core Premium plugin:

\n
    \n
  • Product Availability
  • \n
  • Product Brand
  • \n
  • Product Color
  • \n
  • Product Condition
  • \n
  • Product Depth
  • \n
  • Product Fluid Volume
  • \n
  • Product GTIN-14
  • \n
  • Product GTIN-13 (EAN)
  • \n
  • Product GTIN-12 (UPC)
  • \n
  • Product GTIN-8
  • \n
  • Product GTIN
  • \n
  • Product ISBN
  • \n
  • Product Length
  • \n
  • Product Material
  • \n
  • Product MPN
  • \n
  • Product Price
  • \n
  • Product Size
  • \n
  • Product SKU
  • \n
  • Product Target Gender
  • \n
  • Product Type
  • \n
  • Product Weight
  • \n
  • Product Width
  • \n
\n

Provides Schema Product markup for Google price drop appearance in search results.

\n

Fixes common Google testing tool warnings like “aggregateRating field is recommended” and “review field is recommended”.

\n

Fixes Google testing tool warnings for supported WPSSO Core Premium e-commerce products, like “brand field is recommended”, “missing a global identifier”, etc.

\n

The WPSSO Schema JSON-LD Markup Standard add-on is designed to satisfy the requirements of most standard WordPress sites. If your content requires additional customization of some Schema properties for products, events, places / locations, recipes, etc., then you may want to get the WPSSO JSON Premium add-on for those additional features.

\n

[Premium] Includes additional customizable option values in the Document SSO metabox (shown based on the Schema Type selected):

\n
    \n
  • All Schema Types\n
      \n
    • Name (Title)
    • \n
    • Alternate Name
    • \n
    • Description
    • \n
    • Microdata Type URLs
    • \n
    • Same-As URLs
    • \n
    \n
  • \n
  • Creative Work Information\n
      \n
    • Is Part of URL
    • \n
    • Headline
    • \n
    • Full Text
    • \n
    • Keywords
    • \n
    • Language
    • \n
    • Family Friendly
    • \n
    • Copyright Year
    • \n
    • License URL
    • \n
    • Publisher (Org)
    • \n
    • Publisher (Person)
    • \n
    • Service Provider (Org)
    • \n
    • Service Provider (Person)
    • \n
    \n
  • \n
  • Event Information\n
      \n
    • Event Language
    • \n
    • Event Attendance
    • \n
    • Event Online URL
    • \n
    • Event Physical Venue
    • \n
    • Event Organizer (Org)
    • \n
    • Event Organizer (Person)
    • \n
    • Event Performer (Org)
    • \n
    • Event Performer (Person)
    • \n
    • Event Start (date, time, timezone)
    • \n
    • Event End (date, time, timezone)
    • \n
    • Event Offers Start (date, time, timezone)
    • \n
    • Event Offers End (date, time, timezone)
    • \n
    • Event Offers (name, price, currency, availability)
    • \n
    \n
  • \n
  • How-To\n
      \n
    • How-To Makes
    • \n
    • How-To Preparation Time
    • \n
    • How-To Total Time
    • \n
    • How-To Supplies
    • \n
    • How-To Tools
    • \n
    • How-To Steps (section name, section description, step name, direction text and image)
    • \n
    \n
  • \n
  • Job Posting Information\n
      \n
    • Job Title
    • \n
    • Hiring Organization
    • \n
    • Job Location
    • \n
    • Job Location Type
    • \n
    • Base Salary
    • \n
    • Employment Type
    • \n
    • Jpb Posting Expires
    • \n
    \n
  • \n
  • Movie Information\n
      \n
    • Cast Names
    • \n
    • Director Names
    • \n
    • Production Company
    • \n
    • Movie Runtime
    • \n
    \n
  • \n
  • Organization Information\n
      \n
    • Select an Organization
    • \n
    \n
  • \n
  • Person Information\n
      \n
    • Select a Person
    • \n
    \n
  • \n
  • Product Information (Additional)\n
      \n
    • Product Length (cm)
    • \n
    • Product Width (cm)
    • \n
    • Product Height (cm)
    • \n
    • Product Depth (cm)
    • \n
    • Product Fluid Volume (ml)
    • \n
    • Product GTIN-14
    • \n
    • Product GTIN-13 (EAN)
    • \n
    • Product GTIN-12 (UPC)
    • \n
    • Product GTIN-8
    • \n
    • Product GTIN
    • \n
    \n
  • \n
  • QA Page Information\n
      \n
    • QA Heading
    • \n
    \n
  • \n
  • Recipe Information\n
      \n
    • Recipe Cuisine
    • \n
    • Recipe Course
    • \n
    • Recipe Makes
    • \n
    • Cooking Method
    • \n
    • Preparation Time
    • \n
    • Cooking Time
    • \n
    • Total Time
    • \n
    • Recipe Ingredients
    • \n
    • Recipe Instructions
    • \n
    • Nutrition Information per Serving\n
        \n
      • Serving Size
      • \n
      • Calories
      • \n
      • Protein
      • \n
      • Fiber
      • \n
      • Carbohydrates
      • \n
      • Sugar
      • \n
      • Sodium
      • \n
      • Fat
      • \n
      • Saturated Fat
      • \n
      • Unsaturated Fat
      • \n
      • Trans Fat
      • \n
      • Cholesterol
      • \n
      \n
    • \n
    \n
  • \n
  • Review Information\n
      \n
    • Review Rating
    • \n
    • Rating Value Name
    • \n
    • Subject of the Review\n
        \n
      • Subject Webpage Type
      • \n
      • Subject Webpage URL
      • \n
      • Subject Same-As URL
      • \n
      • Subject Name
      • \n
      • Subject Description
      • \n
      • Subject Image ID or URL
      • \n
      • Claim Subject Information (for Claim Review)\n
          \n
        • Short Summary of Claim
        • \n
        • First Appearance URL
        • \n
        \n
      • \n
      • Creative Work Subject Information\n
          \n
        • C.W. Author Type
        • \n
        • C.W. Author Name
        • \n
        • C.W. Author URL
        • \n
        • C.W. Published Date
        • \n
        • C.W. Created Date
        • \n
        \n
      • \n
      • Book Subject Information\n
          \n
        • Book ISBN
        • \n
        \n
      • \n
      • Movie Subject Information\n
          \n
        • Movie Cast Names
        • \n
        • Movie Director Names
        • \n
        \n
      • \n
      • Product Subject Information\n
          \n
        • Product Brand
        • \n
        • Product Offers (name, price, currency, availability)
        • \n
        • Product SKU
        • \n
        • Product MPN
        • \n
        \n
      • \n
      • Software App Subject Information\n
          \n
        • Operating System
        • \n
        • Application Category
        • \n
        • Software App Offers (name, price, currency, availability)
        • \n
        \n
      • \n
      \n
    • \n
    \n
  • \n
  • Software Application Information\n
      \n
    • Operating System
    • \n
    • Application Category
    • \n
    \n
  • \n
\n

WPSSO Core Required

\n

WPSSO Schema JSON-LD Markup (WPSSO JSON) is an add-on for the WPSSO Core plugin.

\n","download_link":"https://downloads.wordpress.org/plugin/wpsso-schema-json-ld.4.18.1.zip","tags":{"rich-results":"rich results","rich-snippets":"rich snippets","schema-org":"schema.org","video-seo":"video seo","woocommerce":"woocommerce"},"donate_link":"","icons":{"1x":"https://ps.w.org/wpsso-schema-json-ld/assets/icon-128x128.png?rev=2480083","2x":"https://ps.w.org/wpsso-schema-json-ld/assets/icon-256x256.png?rev=2480083"},"wporg":true},{"name":"ShortPixel Image Optimizer","slug":"shortpixel-image-optimiser","version":"4.22.5","author":"ShortPixel","author_profile":"https://profiles.wordpress.org/shortpixel","requires":"4.2.0","tested":"5.8","requires_php":"5.6","rating":92,"ratings":{"1":53,"2":10,"3":8,"4":11,"5":544},"num_ratings":626,"support_threads":10,"support_threads_resolved":8,"active_installs":300000,"downloaded":6871154,"last_updated":"2021-08-31 5:54pm GMT","added":"2014-11-05","homepage":"https://shortpixel.com/","short_description":"Speed up your website & boost your SEO by compressing old & new images and PDFs. AVIF & WebP convert and optimize support.","description":"

A freemium, easy to use, comprehensive, stable and frequently updated image compression plugin supported by the friendly team that created it. 🙂

\n

Increase your website’s SEO ranking, number of visitors and ultimately your sales by optimising any image or PDF document on your website.
\nShortPixel is an easy to use, lightweight, install-and-forget-about-it image optimization plugin that can compress all your past images and PDF documents with a single click. New images are automatically resized/rescaled and optimized on the fly, in the background. It’s also compatible with any gallery, slider or ecommerce plugin.

\n

Ready for a quick DEMO? Test our plugin here.
\nOr you can create a staging copy of your site using WP Staging and test it there.

\n

Short Pixel uses minimal resources and works well with any shared, cloud, VPS or dedicated web hosting. It can optimize any image you have on your website even the images that aren’t listed in Media Library like those in galleries like NextGEN, Modula or added directly via FTP!

\n

Both lossy and lossless image compression are available for the most common image types (JPG, PNG, GIF, WebP and AVIF) plus PDF files.
\nWe also offer glossy JPEG compression which is a very high quality lossy optimization algorithm. Specially designed for photographers!
\nOptimized images mean better user experience, better PageSpeed Insights or GTmetrix results, better Google PageRank and more visitors.

\n

Make an instant image compression test of your site or compress some images to test our optimization algorithms.

\n

Why is ShortPixel the best choice when it comes to image optimization or PDF compression?

\n
    \n
  • popular plugin with over 300,000 active installations – according to WordPress
  • \n
  • compress JPG (and its variations JPEG, JPEG 2000, JPEG XR), PNG, GIF (still or animated) images and also PDF documents
  • \n
  • option to convert any JPEG, PNG or GIF (even animated ones!) to WebP and AVIF for more Google love. How to enable WebP?. What is AVIF and why is it good?.
  • \n
  • option to automatically convert PNG to JPG if that will result in smaller images. Ideal for large images in PNG format
  • \n
  • option to include the next generation images (WebP and AVIF) into the front-end pages by using the <picture> tag instead of <img>, independent from generating them through the plugin
  • \n
  • compatible with WP Retina 2x – all retina images are automatically compressed. How to benefit from Retina displays?
  • \n
  • optimize thumbnails as well as featured images. You can also select individual thumbnails to exclude from optimization
  • \n
  • ability to optimize any image on your site including images in NextGEN Gallery and any other image galleries or sliders
  • \n
  • option to scale images down, with 2 different options, which is very useful to automatically resize large images. This applies to the featured images and there is no need for additional plugins like Imsanity
  • \n
  • CMYK to RGB conversion
  • \n
  • skip already optimized images
  • \n
  • 24h stellar support (24/7) directly from developers.
  • \n
  • easily test lossy/glossy/lossless versions of the images with a single click in your Media Library
  • \n
  • great for photographers: keep or remove EXIF data from your images, compress photos with lossless option
  • \n
  • works well with both HTTPS and HTTP websites
  • \n
  • uses progressive JPEG for larger images in order to speed up the image display
  • \n
  • you can run ShortPixel plugin on multiple websites or on a multisite with a single API Key
  • \n
  • it is safe to test and use the plugin: all the original images are by default saved in a local backup that can be restored with a click, either one by one or in bulk
  • \n
  • ‘Bulk’ optimize all the existing images in Media Library or in any gallery with one click
  • \n
  • works great for eCommerce websites using WooCommerce or other plugins
  • \n
  • works great with NextGEN gallery, Foo Gallery and any other galleries and sliders
  • \n
  • compatible with WP Engine hosted websites and all the major hosting providers
  • \n
  • compatible with WPML and WPML Media plugins
  • \n
  • no file size limit
  • \n
  • integrates with Gravity Forms post_image field type optimizing the images upon upload
  • \n
  • compatible with watermarking plugins
  • \n
  • option to deactivate auto-optimizing images on upload
  • \n
  • no credits are used for the images that are optimised less that 5%
  • \n
  • direct integration with CloudFlare, either by using an API Key or a Token
  • \n
  • 30 days optimization report with all image details and overall statistics
  • \n
  • We are GDPR compliant! Read more.
  • \n
  • free optimization credits for non-profits, contact us for details
  • \n
\n

How much does it cost?
\nShortPixel comes with 100 free credits/month and additional credits can be bought for as little as $4.99 for 5,000 image credits.
\nCheck out our prices.

\n
\n

Testimonials:
\n ★★★★★ A Super Plugin works very well 62% reduction overall. robertvarns
\n ★★★★★ The secret sauce for a WordPress website. mark1mark
\n ★★★★★ A must have plugin, great support! ElColo13
\n ★★★★★ Excellent Plugin! Even Better Customer Service! scaliendo
\n ★★★★★ Great image compression, solid plugin, equally great support. matters1959
\n more testimonials

\n
\n\n

Help us spread the word by recommending ShortPixel to your friends and collect 100 lifetime monthly additional image credits for each referred active user. Make money by promoting a great plugin with our 30% commission affiliate program.

\n

Other plugins by ShortPixel

\n\n

Get in touch!

\n\n

Actions and Filters for Developers

\n

The ShortPixel Image Optimiser plugin calls the following actions and filters:

\n
do_action( 'shortpixel_image_optimised', $post_id );\n
\n

upon successful optimization;

\n
do_action(\"shortpixel_before_restore_image\", $post_id);\n
\n

before restoring an image from backup;

\n
do_action(\"shortpixel_after_restore_image\", $post_id);\n
\n

after succesful restore;

\n
apply_filters(\"shortpixel_backup_folder\", $backup_folder, $main_file_path, $sizes);\n
\n

just before returning the ShortPixel backup folder, usually /wp-content/uploads/ShortpixelBackups. The $sizes are the sizes array from metadata;

\n
apply_filters('shortpixel_image_exists', file_exists($path), $path, $post_id);\n
\n

post ID is not always set, only if it’s an image from Media Library;

\n
apply_filters('shortpixel_image_urls', $URLs, $post_id);\n
\n

filters the URLs that will be sent to optimisation, $URLs is a plain array;

\n
apply_filters('shortpixel/db/chunk_size', $chunk);\n
\n

the $chunk is the value ShortPixel chooses to use as number of selected records in one query (based on total table size), some hosts work better with a different value;

\n
apply_filters('shortpixel/backup/paths', $PATHs, $mainPath);\n
\n

filters the array of paths of the images sent for backup and can be used to exclude certain paths/images/thumbs from being backed up, based on the image path. $mainPath is the path of the main image, while $PATHs is an array with all files to be backed up (including thumbnails);

\n
apply_filters('shortpixel/settings/image_sizes', $sizes);\n
\n

filters the array ($sizes) of image sizes which can be excluded from processing (displayed in the plugin Advanced settings).

\n

In order to define custom thumbnails to be picked up by the optimization you have two options, both comma separated defines:

\n
define('SHORTPIXEL_CUSTOM_THUMB_SUFFIXES', '_tl,_tr');\n
\n

will handle custom thumbnails like image-100x100_tl.jpg;

\n
define('SHORTPIXEL_CUSTOM_THUMB_INFIXES', '-uae');\n
\n

will handle custom thumbnails like image-uae-100×100.jpg;

\n
define('SHORTPIXEL_USE_DOUBLE_WEBP_EXTENSION', true);\n
\n

will tell the plugin to create double extensions for the WebP image counterparts, for example image.jpg.webp for image.jpg;

\n
define(\"SHORTPIXEL_NOFLOCK\", true);\n
\n

don’t use flock queue, only activate this when you have flock() denied errors on your installation;

\n
define(\"SHORTPIXEL_EXPERIMENTAL_SECURICACHE\", true);\n
\n

adds timestamps to URLS, to prevent hitting the cache. Useful for persistent caches.

\n

Hide the Cloudflare settings by defining these constants in wp-config.php:

\n
define('SHORTPIXEL_CFTOKEN', 'the Cloudflare API token that has Purge Cache right');\ndefine('SHORTPIXEL_CFZONE', 'The Zone ID from the domain settings in Cloudflare');\n
\n

Hide the WSO banner in the settings by defining this constant in wp-config.php:

\n
define('SHORTPIXEL_NO_BANNER', true);\n
\n

Alternatively, you can use this filter in your theme’s functions.php file:

\n
add_filter('shortpixel/settings/no_banner', true);\n
\n","download_link":"https://downloads.wordpress.org/plugin/shortpixel-image-optimiser.4.22.5.zip","tags":{"compressor":"compressor","convert-webp":"convert webp","image-optimization":"image optimization","optimize-images":"optimize images","resize":"resize"},"donate_link":"","icons":{"1x":"https://ps.w.org/shortpixel-image-optimiser/assets/icon-128x128.png?rev=1038819","2x":"https://ps.w.org/shortpixel-image-optimiser/assets/icon-256x256.png?rev=1038819"},"wporg":true},{"name":"Theme Kit for Twenty Twenty-One & Twenty Twenty (Customization, Gutenberg Blocks, Templates) – Twentig","slug":"twentig","version":"1.3.5","author":"Twentig","author_profile":"https://profiles.wordpress.org/twentig","requires":"5.5","tested":"5.8","requires_php":"5.6","rating":100,"ratings":{"1":0,"2":0,"3":0,"4":2,"5":106},"num_ratings":108,"support_threads":33,"support_threads_resolved":31,"active_installs":10000,"downloaded":139374,"last_updated":"2021-08-10 11:02am GMT","added":"2019-05-29","homepage":"https://twentig.com","short_description":"Supercharge your WordPress theme (Twenty Twenty-One & Twenty Twenty) with customization options, enhanced Gutenberg blocks,…","description":"

The easy way to build a beautiful website.

\n

Twentig helps you customize the default WordPress theme (Twenty Twenty-One and Twenty Twenty) the way you want with Google Fonts, colors, custom layouts, and many more options.

\n

With enhanced Gutenberg blocks, pre-designed block templates, and starter websites, you’ve got everything you need to build stunning pages that look great on any device — no coding or design skills needed.

\n
\n

“Twentig is a plugin that essentially gives superpowers to the default theme.” — Justin Tadlock, WP Tavern

\n
\n

Customize the most popular WordPress theme. Your way.

\n

Twentig offers powerful features to customize the Twenty Twenty-One and Twenty Twenty themes — making it easier than ever to create your own professional website.

\n

Advanced theme customization. From post grid to sidebar to sticky header to footer layout, our plugin provides endless ways to enhance your WordPress theme. Change the look and feel of your website by customizing the fonts (Google Fonts), colors, global styles, 404 page, and more.

\n

Custom page templates. Control the look of your entire page with our page templates. Easily remove the page title, header, footer, or set a transparent header. Now you can use Gutenberg blocks to create a custom hero, landing page, coming soon page, and more.

\n

Tailored design. Twentig brings design improvements to the default WordPress theme. Our additional block settings and pre-designed block templates are specially built for it — so it’s simple to make beautiful pages with Gutenberg blocks.

\n

Start with a pre-built website.

\n

Instead of starting from scratch, you can quickly import one of Twentig’s starter websites crafted by award-winning designers.

\n

The simple way to import starter websites. Choose from a variety of starter websites and seamlessly load them in a few seconds in the Customizer. Preview and customize your theme any way you like before publishing it to your live site.

\n

Flexible import. Twentig lets you import full websites (Customizer settings, menus, widgets, and pages built with Gutenberg blocks). You can also only import what you need, be it the styling or the pages, on a fresh install or an existing website.

\n

Check out the starter websites to see the power and flexibility of Twentig.

\n

Do more with Gutenberg blocks.

\n

Twentig enhances the existing Gutenberg blocks — taking the WordPress block editor to a new level of design and creativity.

\n

Block customization made easy. We’ve added the right amount of features to the Gutenberg core blocks. So you can easily customize your blocks to fit your needs with just a few clicks.

\n

Powerful Gutenberg block features. Twentig provides alternative styles, advanced block settings, margin controls, and CSS classes. From columns style to group shape divider to typography settings, you have the best tools to customize the Gutenberg blocks and build gorgeous pages.

\n

Build your pages with ready-to-use templates.

\n

Twentig brings hundreds of pre-designed block patterns and page templates — making it easier and faster than ever to create stunning pages.

\n

Flexible block templates. Choose from a variety of versatile block patterns and page templates that you can mix and match to fit your project. Our block template library is designed to enable a wide range of uses and endless design possibilities.

\n

Professional design. Our templates are responsive and give your pages a professional look right from the start — no coding or design skills needed.

\n

Twentig features list

\n

Check out the screenshots to see how Twentig can transform your theme and the Gutenberg blocks.

\n

ADDITIONAL THEME OPTIONS

\n

Header

\n
    \n
  • Header layouts
  • \n
  • Sticky header
  • \n
  • Header width
  • \n
  • Header decoration
  • \n
  • Additional elements: search bar, social icons, button
  • \n
  • Logo width
  • \n
  • Custom logo for transparent header
  • \n
  • Menu link style
  • \n
  • Option to display the burger menu on tablet
  • \n
\n

Footer

\n
    \n
  • Footer layouts
  • \n
  • Footer widgets layout
  • \n
  • Footer width
  • \n
  • Custom copyright and remove “Powered by WordPress”
  • \n
  • Social icons
  • \n
\n

Site Layout

\n
    \n
  • Text width
  • \n
  • Wide width (Twenty Twenty-One theme)
  • \n
  • Site width to create a boxed layout site (Twenty Twenty-One theme)
  • \n
\n

Blog Posts Page

\n
    \n
  • Option to display the page title (Twenty Twenty-One theme)
  • \n
  • Blog layouts: stack, post grid, post grid card
  • \n
  • Blog sidebar (Twenty Twenty-One theme)
  • \n
  • Number of columns for post grid layouts
  • \n
  • Featured image options
  • \n
  • Blog content options
  • \n
  • Blog meta options
  • \n
  • Pagination style (Twenty Twenty-One theme)
  • \n
\n

Single Blog Post

\n
    \n
  • Featured image and post title layouts
  • \n
  • Blog sidebar (Twenty Twenty-One theme)
  • \n
  • Option to display the manual excerpt below the title
  • \n
  • Single post meta options
  • \n
  • Post navigation layout (Twenty Twenty theme)
  • \n
  • Hide comments section
  • \n
\n

Typography & Colors

\n
    \n
  • Google Fonts options (curated collection and custom Google Fonts)
  • \n
  • Google Fonts pairings and Google Fonts presets
  • \n
  • Font settings
  • \n
  • Color options
  • \n
\n

Pages

\n
    \n
  • Custom page templates: remove the page title, header, and footer, or set a transparent header
  • \n
  • Featured image and page title layouts
  • \n
\n

Custom 404 Page

\n
    \n
  • Option to assign any page as the 404 page
  • \n
\n

Additional Settings

\n
    \n
  • Minimal style for links (Twenty Twenty-One theme)
  • \n
  • Button style
  • \n
  • Separator style
  • \n
  • Social icons style (Twenty Twenty theme)
  • \n
\n

ADDITIONAL GUTENBERG BLOCK SETTINGS

\n
    \n
  • Gutenberg core blocks: top margin and bottom margin
  • \n
  • Group: shadow, border, shape divider, full height
  • \n
  • Columns: gutter, responsive layout, columns style (card, border), text alignment, stretched link
  • \n
  • Media & Text: styles (shadow, overlap), responsive layout, reverse stack order, stretched link, full height
  • \n
  • Cover: styles (shadow, inner border), stretched link, hover effect
  • \n
  • Heading: typography options, decoration
  • \n
  • Paragraph: wide width, typography options
  • \n
  • List: styles (dash, checkmark, arrow, border, no bullet, inline), typography options, spacing
  • \n
  • Image: styles (rounded, shadow, frame, border), image filter
  • \n
  • Gallery: stack variation, styles (rounded, frame), fixed width columns, image aspect ratio, gutter, responsive layout, caption size, border, image filter
  • \n
  • YouTube, Vimeo, SoundCloud, and Video blocks: style (frame)
  • \n
  • Latest Posts: styles (card, border), image aspect ratio, heading size, stretched link, text alignment
  • \n
  • Social Icons: hover effect
  • \n
  • Quote: additional styles
  • \n
  • Pullquote: additional styles
  • \n
  • Table: styles (border, inner border), vertical alignment
  • \n
  • Separator: style (short line), responsive visibility
  • \n
  • Spacer: responsive visibility
  • \n
\n

GUTENBERG TEMPLATE LIBRARY

\n

Hundreds of Gutenberg block patterns grouped by following categories:

\n
    \n
  • Columns
  • \n
  • Text Columns
  • \n
  • Text and Image
  • \n
  • Text
  • \n
  • Hero
  • \n
  • Cover
  • \n
  • Call to Action
  • \n
  • List
  • \n
  • Numbers, Stats
  • \n
  • Gallery
  • \n
  • Video, Audio
  • \n
  • Latest Posts
  • \n
  • Contact
  • \n
  • Team
  • \n
  • Testimonials
  • \n
  • Logos, Clients
  • \n
  • Pricing
  • \n
  • FAQ
  • \n
  • Events, Schedule
  • \n
\n

Dozens of pre-designed page templates grouped by following categories:

\n
    \n
  • Homepage
  • \n
  • About
  • \n
  • Services
  • \n
  • Contact
  • \n
  • Single Page
  • \n
\n

Get more

\n\n

Enjoying Twentig?

\n\n","download_link":"https://downloads.wordpress.org/plugin/twentig.1.3.5.zip","tags":{"gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","templates":"templates","theme":"theme","twenty-twenty-one":"twenty-twenty-one"},"donate_link":"https://www.paypal.com/donate?hosted_button_id=JTBTPQAFEA94E","icons":{"1x":"https://ps.w.org/twentig/assets/icon.svg?rev=2569439","2x":"https://ps.w.org/twentig/assets/icon-256x256.png?rev=2569439","svg":"https://ps.w.org/twentig/assets/icon.svg?rev=2569439"},"wporg":true},{"name":"Custom Post Type UI","slug":"custom-post-type-ui","version":"1.9.2","author":"WebDevStudios","author_profile":"https://profiles.wordpress.org/williamsba1","requires":"5.5","tested":"5.7.2","requires_php":"5.6","rating":94,"ratings":{"1":12,"2":3,"3":6,"4":9,"5":203},"num_ratings":233,"support_threads":63,"support_threads_resolved":28,"active_installs":1000000,"downloaded":8724946,"last_updated":"2021-06-17 2:40am GMT","added":"2010-02-26","homepage":"https://github.com/WebDevStudios/custom-post-type-ui/","short_description":"Admin UI for creating custom post types and custom taxonomies for WordPress","description":"

Custom Post Type UI provides an easy to use interface for registering and managing custom post types and taxonomies for your website.

\n

While CPTUI helps solve the problem of creating custom post types, displaying the data gleaned from them can be a whole new challenge. That’s why we created Custom Post Type UI Extended. View our Layouts page to see some examples that are available with Custom Post Type UI Extended.

\n

Official development of Custom Post Type UI is on GitHub, with official stable releases published on WordPress.org. The GitHub repo can be found at https://github.com/WebDevStudios/custom-post-type-ui. Please use the Support tab for potential bugs, issues, or enhancement ideas.

\n

Pluginize was launched in 2016 by WebDevStudios to promote, support, and house all of their WordPress products. Pluginize is not only creating new products for WordPress all the time, like CPTUI Extended, but also provides ongoing support and development for WordPress community favorites like CMB2 and more.

\n","download_link":"https://downloads.wordpress.org/plugin/custom-post-type-ui.zip","tags":{"cms":"cms","cpt":"cpt","custom-post-types":"custom post types","post":"post","types":"types"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=3084056","icons":{"1x":"https://ps.w.org/custom-post-type-ui/assets/icon-128x128.png?rev=2549362","2x":"https://ps.w.org/custom-post-type-ui/assets/icon-256x256.png?rev=2549362"},"wporg":true},{"name":"Flex Posts – Widget and Gutenberg Block","slug":"flex-posts","version":"1.8.1","author":"Tajam","author_profile":"https://profiles.wordpress.org/tajam","requires":"5.2","tested":"5.8","requires_php":false,"rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":17},"num_ratings":17,"support_threads":8,"support_threads_resolved":5,"active_installs":3000,"downloaded":24580,"last_updated":"2021-07-29 10:41am GMT","added":"2018-05-10","homepage":"https://tajam.id/flex-posts/","short_description":"A widget to display posts with thumbnails in various layouts. Fits nicely in any widget…","description":"

Flex Posts is a widget to display posts in various different layouts. It is useful for a news site where you need to display a lot of posts in a page.

\n

The widget is responsive so you can place it in any widget area. The widget content will adapt based on the width of its container. In a narrow area like standard sidebar, posts will be displayed vertically, but in a wider area, posts will be displayed in 2 or 3 columns depends on the container’s width.

\n

Widget Settings

\n
    \n
  • Title: Set the widget title. Leave it empty to hide the title section.
  • \n
  • Title URL: Set the title link url. Leave it empty to disable link in the title.
  • \n
  • Layout: Select a widget layout, from layout 1 to 4.
  • \n
  • Post type: Select the post type. Options include: Post, Page, custom post types if available, and any.
  • \n
  • Category: Select a category for the posts, or choose All Categories to disable this filter.
  • \n
  • Tag(s): Set a post tag (using the tag slug). You can also use comma separated value for multiple tags. Prepending a tag with a hyphen will exclude posts matching that tag. Eg, featured, -video will show posts tagged with featured but not video.
  • \n
  • Order by: Set the order in which the posts will be displayed. Options include: Newest, Oldest, Most Commented, Alphabetical, Random, Modified Date.
  • \n
  • Number of posts to show: Set the number of posts displayed.
  • \n
  • Number of posts to skip: Set the number of posts to displace or pass over.
  • \n
  • Show image on: Select in which posts the image will be displayed. Options include: All posts, First post only, or none.
  • \n
  • Image size: Select image size from registered image sizes.
  • \n
  • Show post title: Choose to show or hide the post title.
  • \n
  • Show categories: Choose to show or hide the categories.
  • \n
  • Show author: Choose to show or hide the author.
  • \n
  • Show date: Choose to show or hide the date.
  • \n
  • Show comments number: Choose to show or hide the comments number.
  • \n
  • Show excerpt: Choose to show or hide the excerpt
  • \n
  • Excerpt length: Set the number of words for the excerpt.
  • \n
  • Show read more link: Choose to show or hide the Read More link.
  • \n
  • Read more text: Set the text for the read more link. You can leave it empty to use the default text Read More.
  • \n
  • Show pagination: Choose to show or hide the pagination links.
  • \n
  • Additional class(es): Set a custom class for the widget container. You can use spaces to separate multiple classes.
  • \n
\n

Gutenberg Block

\n

Since version 1.1.0, Flex Posts also includes a gutenberg block. You can add the widget directly into the post/page content with the WP 5.0 block editor.

\n

Demo

\n

Please visit the live demo here: Flex Posts Demo

\n

Requirements

\n

This plugin has been tested and works with at least PHP 5.3 installed in your environment. But we strongly recommend you to use the latest PHP version, as using older versions may expose you to security vulnerabilities.

\n","download_link":"https://downloads.wordpress.org/plugin/flex-posts.zip","tags":{"category-posts":"category posts","grid":"grid","magazine":"magazine","news":"news","responsive":"responsive"},"donate_link":"https://tajam.id/","icons":{"1x":"https://ps.w.org/flex-posts/assets/icon-128x128.png?rev=1871802"},"wporg":true},{"name":"YARPP – Yet Another Related Posts Plugin","slug":"yet-another-related-posts-plugin","version":"5.27.4","author":"YARPP","author_profile":"https://profiles.wordpress.org/jeffparker","requires":"3.7","tested":"5.8","requires_php":"5.3","rating":94,"ratings":{"1":33,"2":2,"3":14,"4":45,"5":627},"num_ratings":721,"support_threads":26,"support_threads_resolved":12,"active_installs":100000,"downloaded":6487625,"last_updated":"2021-08-25 5:56pm GMT","added":"2008-01-02","homepage":"https://yarpp.com/","short_description":"The best WordPress plugin for displaying related posts. Simple and flexible, with a powerful proven algorithm and inbuilt caching.","description":"

Related Posts Plugin for WordPress

\n

Yet Another Related Posts Plugin (YARPP) is a professionally maintained, highly customizable, performant and feature rich plugin that displays pages, posts, and custom post types related to the current entry. YARPP introduces your visitors to other relevant content on your site — boosting visitor engagement, time on site and SEO. Related Posts can increase your pageviews up to 10%. Simply install, activate and watch your sessions and pageviews increase.

\n

Key Features

\n
    \n
  • An advanced and versatile algorithm: Using a customizable algorithm considering post titles, content, tags, categories, and custom taxonomies, YARPP finds related content from across your site
  • \n
  • Caching: Inbuilt cache makes subsequent queries super efficient and fast
  • \n
  • Custom Templates and Styles: Use a pre-built list or thumbnail template, or use the YARPP custom templating system for 100% control of how results are styles and displayed
  • \n
  • Flexible with a full range of placement options, including:\n\n
  • \n
  • Works with all languages, including those with full-width (double-byte) characters and those that don’t use spaces between words
  • \n
  • Custom post type and taxonomy support
  • \n
  • WordPress Multisite support
  • \n
  • bbPress forums support
  • \n
  • WooCommerce support
  • \n
  • Professionally maintained and supported with regular updates
  • \n
\n

YARPP Algorithm Explained

\n

\n

Contribute: Translate YARPP

\n

YARPP is available for translation directly on WordPress.org. Please check out the official Translator Handbook.

\n

Wide Support

\n

YARPP is the most popular and the highest rated Related Posts Plugin for WordPress. With your support, this plugin always strives to be the best WordPress plugin for Content Discovery and Related Posts.

\n

✔ Over 10 years of development
\n✔ Over 6 million downloads
\n✔ Translated into more than a dozen languages
\n✔ Professionally maintained and actively supported with regular updates
\n✔ Works with all languages

\n

YARPP works best with PHP 5.3 or greater, MySQL 5.6 or greater OR MariaDB 10.1 or greater, and WordPress 3.7 or greater. See the FAQ for answers to common questions.

\n","download_link":"https://downloads.wordpress.org/plugin/yet-another-related-posts-plugin.5.27.4.zip","tags":{"contextual-related-posts":"contextual related posts","posts":"posts","related-posts":"related posts","seo":"seo","similar-posts":"similar posts"},"donate_link":"https://yarpp.com","icons":{"1x":"https://ps.w.org/yet-another-related-posts-plugin/assets/icon-128x128.png?rev=2549977","2x":"https://ps.w.org/yet-another-related-posts-plugin/assets/icon-256x256.png?rev=2549977"},"wporg":true},{"name":"Superb WordPress Table (SEO Optimized Tables With Schema)","slug":"superb-tables","version":"1.0.8","author":"SuPlugins","author_profile":"https://profiles.wordpress.org/suplugins","requires":"3.0.1","tested":"5.7.2","requires_php":"5.2.4","rating":80,"ratings":{"1":0,"2":1,"3":0,"4":0,"5":2},"num_ratings":3,"support_threads":1,"support_threads_resolved":1,"active_installs":4000,"downloaded":34022,"last_updated":"2021-05-26 8:49pm GMT","added":"2019-03-05","homepage":"https://superbthemes.com/plugins/superb-tables/","short_description":"Responsive & SEO Optimized tables. Get your Google Featured Snippets. Different table designs, table shortcodes…","description":"

Responsive & SEO Optimized tables. Get your Google Featured Snippets. Different table designs, table shortcodes & lightweight code.

\n

Click here to view the demo!

\n

Features

\n
    \n
  • Table Shortcodes
  • \n
  • Multiple Color Schemes
  • \n
  • Use Themes Own Table Design
  • \n
  • Schema Markup (Micro Data)
  • \n
  • Create Unlimited Tables
  • \n
  • Create Unlimited Rows
  • \n
  • Create unlimited Columns
  • \n
  • SEO-friendly Tables With Schema markup
  • \n
  • Purple Color Scheme
  • \n
  • Black/White Color Scheme
  • \n
  • Swap around on columns & rows with drag n’ drop
  • \n
  • Delete Tables & Remove Them From Your Database
  • \n
  • Gives you a better chance to get Google Featured Snippets
  • \n
  • Friendly User Support)
  • \n
  • GDPR Compliant
  • \n
  • W3C Valid Code
  • \n
  • WYSIWYG Functionality Editor
  • \n
\n

Configuring the plugin

\n

Once you’ve installed the plugin, check the left sidebar, and you will notice the Superb Table section. Click on it, and you can now create your first table. Just click on the Add New Table button.

\n

Feel free to add as many columns and rows as you want—inserting rows and columns is extremely easy.

\n

You have a few options to make your table stand apart. First, choose one of the three color schemes: standard, purple, or black. Second, choose your table design: default or custom. Block, left, and inline-block are the floating modes for your table. Finally, enable or disable the full width of the table.

\n

Once you finish your table, name it and save it. All you have to do now is to copy the shortcode and paste wherever you want, you can for example embed it in the Gutenberg Shortcode Block! (It works in the classic WordPress editor too)

\n

Consider purchasing our premium version for $11 to unlock more features!

\n

Why use a HTML table

\n

Displaying data within a comparison table is beneficial for not only readers but also content creators. A table does a better job than long paragraphs of text, underlined phrases, and bulleted lists. It shows a lot of information side by side in a concise format. Bloggers and content creators should create tables and insert the data. There’s no need to search for breathtaking expressions, cool descriptions, or digestible lists of items. It’s just pure data, and everyone is happy with this situation. You can read our full guide on How to Add a Table to Your WordPress Website with Superb Tables.

\n

Responsive Tables

\n

We developed Superb Tables mobile friendly by taking responsiveness into account, and as a result, you can make a WordPress table responsive by using our plugin. The tables are fully responsive regardless of the number of rows and columns. The plugin works on all mobile devices and tablets (iPhone, Android etc.). The plugin works with AMP.

\n

SEO Friendly WordPress Tables With Schema Markup

\n

“Schema markup“ and “featured snippets“ are two interconnected terms that are being used by more and more bloggers, SEO practitioners, and developers. Have you noticed that Google now provides complex answers in the form of lists, tables, paragraphs, or videos directly on the results page? Those are featured snippets.

\n

Moz claims that 23% of all search results include a featured snippet—a descriptive box displayed on the search results page providing information for your query. It may include paragraphs, lists, videos, or tables. You have to consider featured snippets when choosing a table plugin—can it help Google generate a featured snippet from the data within your table?

\n

We developed Superb Tables with featured snippets in mind, and you can use the plugin worry-free. We used schema markup, which is the code that helps search engine bots generate snippets from your content, including tables. It’s a great way for affiliate websites and blogs to promote their content.

\n

You must use WordPress tables with schema markup to get featured snippets on search engines, and Superb Tables is a reliable solution in this respect.

\n

Add Tables everywhere & use them for Any Purpose

\n

You can insert the SEO optimised tables with microdata everywhere through the shortcode. For example in a popup, widgets, Gutenberg blocks, email newsletter sent from your WordPress website. You can also insert it on any post or page, even category pages, blog feed, search page and your 404 page! The plugin is made for affiliates marketers and affiliate websites, having a good SERP rank in Google and Bing is critical. When you’re looking to improve your ranking then all of your plugins must be SEO optimized, otherwise it’s gonna be hard to create monetization through ads programs such as AdSense and Amazon Associates Program.

\n

We know that business is important for any modern blog or affiliate marketing website that’s looking to make a revenue from it. Remember to use HTTPS (SSL) on your website, a CDN and lightweight stats tracking tools such as Google Analytics to better your SEO as well.

\n

Guide to creating your Superb Tables

\n
    \n
  1. In the wordpress admin panel, go to the sidebar and click ‘Superb Tables’.
  2. \n
  3. Click the green ‘Add new table’ in the top left corner
  4. \n
  5. Fill in your table data, click ‘Save’
  6. \n
  7. Click ‘Superb Tables’ in the left sidebar and copy paste the ‘Table Shortcode’
  8. \n
  9. Insert the Table Shortcode (For example [spbtbl_sc id=1] ) in a post, page, widget or in HTML.
  10. \n
\n

You’re done!

\n

Resources & Inspiration

\n
    \n
  • Auto-Expand: https://codepen.io/vsync/pen/frudD
  • \n
  • Data Table: https://codepen.io/alassetter/pen/cyrfB
  • \n
  • Table DnD: https://github.com/isocra/TableDnD/
  • \n
  • Table icon: https://www.iconfinder.com/icons/1608863/table_icon#size=256
  • \n
  • Custom confirm: https://codepen.io/Ana_Champion/pen/JRbZEL
  • \n
  • Table design inspiration: https://codepen.io/lukepeters/pen/bfFur
  • \n
  • Table design inspiration: https://codepen.io/alassetter/pen/cyrfB
  • \n
  • Table design inspiration: https://uicookies.com/wp-content/uploads/2018/05/table-responsive-v2-1000×750.jpg
  • \n
  • Table design inspiration: https://uicookies.com/wp-content/uploads/2018/05/table-responsive-v1.jpg
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/superb-tables.1.0.8.zip","tags":{"content-tables":"content tables","responsive-tables":"responsive tables","table":"table","tables":"tables"},"donate_link":"","icons":{"1x":"https://ps.w.org/superb-tables/assets/icon-256x256.png?rev=2044672","2x":"https://ps.w.org/superb-tables/assets/icon-256x256.png?rev=2044672"},"wporg":true},{"name":"Floating Button","slug":"floating-button","version":"4.3","author":"Wow-Company","author_profile":"https://profiles.wordpress.org/wpcalc","requires":"3.2","tested":"5.8","requires_php":"5.3","rating":80,"ratings":{"1":1,"2":1,"3":0,"4":0,"5":5},"num_ratings":7,"support_threads":1,"support_threads_resolved":0,"active_installs":2000,"downloaded":32557,"last_updated":"2021-07-21 5:47am GMT","added":"2018-09-08","homepage":"https://wordpress.org/plugins/floating-button/","short_description":"Easily create a custom sticky floating buttons. The Floating Button will be the effective solution…","description":"

The Floating Button is the free WordPress plugin for creating the original sticky floating actions buttons. It allows you to install on the site floating buttons with unique thematic icons. The extension serves for placing both traditional navigation bar and additional block with useful information for user.

\n

The Floating Button plugin will be the effective solution for increasing the recognition of your web resource. Its connection will bring originality and novelty to the used theme of the site. The extension helps to configure user-friendly navigation, place useful information or contact panel.

\n

Main features

\n
    \n
  • 2 submenu;
  • \n
  • more than 1500+ FontAwesome icons;
  • \n
  • any links insertion;
  • \n
  • using the tooltips to provide more information;
  • \n
  • round buttons shape;
  • \n
  • LogIn link;
  • \n
  • LogOut link;
  • \n
  • Lost password link
  • \n
\n

Floating Button can be used for:

\n
    \n
  • site navigation;
  • \n
  • additional menu;
  • \n
  • social panel;
  • \n
  • user menu;
  • \n
  • Skype menu and others;
  • \n
  • And more…
  • \n
\n

Pro version

\n

Connect the Pro-version of the plugin to gain access to more features:

\n

Preview of Pro version

\n
    \n
  • create an unlimited amount of buttons;
  • \n
  • use up to 4 floating button positions;
  • \n
  • change the form of the menu display: Circle, Rounded square, Ellipse, Square;
  • \n
  • set the color of the main button and submenu items;
  • \n
  • accompany the change in navigation behavior with the highlight when hovering the mouse cursor;
  • \n
  • use the built-in user menu, social panel and print function;
  • \n
  • set the display according to the user role and status;
  • \n
  • change the menu output depending on the language of the page;
  • \n
  • add restrictions for screens with large or small resolution;
  • \n
  • use the categories on the site, exceptions and ID to place the menu on individual pages;
  • \n
  • insert the shortcode of the panel in the specified location;
  • \n
  • And more…
  • \n
\n

Buy Pro version

\n

Use with other plugins to maximize your results

\n\n

Support

\n

Search for answers and ask your questions at support center

\n","download_link":"https://downloads.wordpress.org/plugin/floating-button.4.3.zip","tags":{"circle-menu":"circle menu","float-menu":"float menu","floating-button":"floating button","floating-menu":"floating menu","sticky-button":"sticky button"},"donate_link":"https://wow-estore.com/item/floating-button-pro/","icons":{"1x":"https://ps.w.org/floating-button/assets/icon-128x128.png?rev=2533016","2x":"https://ps.w.org/floating-button/assets/icon-256x256.png?rev=2533016"},"wporg":true},{"name":"Breadcrumb NavXT","slug":"breadcrumb-navxt","version":"6.6.0","author":"John Havlik","author_profile":"https://profiles.wordpress.org/mtekk","requires":"4.9","tested":"5.7.2","requires_php":"5.5","rating":94,"ratings":{"1":5,"2":2,"3":4,"4":7,"5":104},"num_ratings":122,"support_threads":14,"support_threads_resolved":0,"active_installs":900000,"downloaded":10114154,"last_updated":"2021-04-01 2:13am GMT","added":"2007-12-01","homepage":"http://mtekk.us/code/breadcrumb-navxt/","short_description":"Breadcrumb NavXT, the successor to the popular WordPress plugin Breadcrumb Navigation XT, was written from the ground up to be better than its ancesto …","description":"

Breadcrumb NavXT, the successor to the popular WordPress plugin Breadcrumb Navigation XT, was written from the ground up to be better than its ancestor. This plugin generates locational breadcrumb trails for your WordPress powered blog or website. These breadcrumb trails are highly customizable to suit the needs of just about any website running WordPress. The Administrative interface makes setting options easy, while a direct class access is available for theme developers and more adventurous users.

\n

PHP Requirements

\n

Breadcrumb NavXT 5.2 and newer require PHP5.3
\nBreadcrumb NavXT 5.1.1 and older require PHP5.2

\n

Features (non-exhaustive)

\n
    \n
  • RDFa format Schema.org BreadcrumbList compatible breadcrumb generation.
  • \n
  • Extensive breadcrumb customization control via a settings page with appropriate default values for most use cases.
  • \n
  • Network admin settings page for managing breadcrumb settings for all subsites with configurable global priority.
  • \n
  • Built in WordPress Widget.
  • \n
  • Extensible via OOP and provided actions and filters.
  • \n
  • WPML compatible (enhanced compatibility with WPML extensions plugin).
  • \n
  • Polylang compatible (enhanced compatibility with Polylang extensions plugin).
  • \n
  • bbPress compatible (enhanced compatibility with bbPress extensions plugin).
  • \n
  • BuddyPress compatible (enhanced compatibility with BuddyPress extensions plugin).
  • \n
\n

Translations

\n

Breadcrumb NavXT now supports WordPress.org language packs. Want to translate Breadcrumb NavXT? Visit Breadcrumb NavXT’s WordPress.org translation project.

\n","download_link":"https://downloads.wordpress.org/plugin/breadcrumb-navxt.6.6.0.zip","tags":{"breadcrumb":"breadcrumb","breadcrumbs":"breadcrumbs","menu":"menu","navigation":"navigation","trail":"trail"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=FD5XEU783BR8U&lc=US&item_name=Breadcrumb%20NavXT%20Donation¤cy_code=USD&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted","icons":{"1x":"https://ps.w.org/breadcrumb-navxt/assets/icon.svg?rev=1927103","2x":"https://ps.w.org/breadcrumb-navxt/assets/icon-256x256.png?rev=2410525","svg":"https://ps.w.org/breadcrumb-navxt/assets/icon.svg?rev=1927103"},"wporg":true},{"name":"WP Recipe Maker","slug":"wp-recipe-maker","version":"7.5.1","author":"Bootstrapped Ventures","author_profile":"https://profiles.wordpress.org/brechtvds","requires":"4.4","tested":"5.8","requires_php":"5.4","rating":100,"ratings":{"1":1,"2":0,"3":1,"4":4,"5":201},"num_ratings":207,"support_threads":26,"support_threads_resolved":21,"active_installs":50000,"downloaded":1532145,"last_updated":"2021-08-31 12:27pm GMT","added":"2016-09-07","homepage":"http://bootstrapped.ventures/wp-recipe-maker/","short_description":"The easy and user-friendly recipe plugin for everyone. Automatic JSON-LD metadata for food AND how-to recipes will improve your SEO!","description":"

WP Recipe Maker is the easy recipe plugin that everyone can use. An easy workflow allows you to add recipes to any post or page with automatic JSON-LD metadata for your recipes. This metadata will improve your SEO and get you more visitors!

\n

\n

Would you like to see the plugin in action before installing it? We have a WP Recipe Maker demo website showcasing all of the features!

\n
\n

Get the most out of this plugin!
\n Join the WP Recipe Maker Email Course and we’ll help you get started and learn all the tips and trick for using WPRM.

\n
\n

Features

\n

An overview of WP Recipe Maker features:

\n
    \n
  • Compatible with both the Classic Editor and new Gutenberg editor
  • \n
  • Includes an Elementor block and shortcode can be used in other page builders
  • \n
  • Easy workflow to add recipes to any post or page
  • \n
  • Uses schema.org/Recipe JSON-LD metadata optimised for Google Recipe search
  • \n
  • Uses schema.org/How-to JSON-LD metadata optimised for non-food recipes and instructions
  • \n
  • Supports both regular and Guided Recipes for Google metadata
  • \n
  • Google AMP compatible
  • \n
  • Integrates recipe metadata with Yoast SEO schema graph
  • \n
  • Option to disable metadata per recipe if you want to publish non-food or DIY recipes
  • \n
  • Compatible with Pinterest Rich Pins and a setting to easily opt out
  • \n
  • Outputs ItemList metadata for Recipe Roundup posts
  • \n
  • Associate ingredients with instructions to have them show up exactly where needed
  • \n
  • Keyboard accessible and AMP compatible ratings for comments
  • \n
  • Interactive print recipe page with room for ads and optional credit to your website
  • \n
  • Fallback recipe shows up when the plugin is disabled
  • \n
  • Include a recipe video in the template and metadata
  • \n
  • Add photos or videos to any step of the recipe
  • \n
  • Print recipe and jump to recipe shortcodes
  • \n
  • This plugin is fully responsive, your recipes will look good on any device
  • \n
  • Easily change the look and feel to fit your website in the Template Editor
  • \n
  • Structure your ingredients and instructions in groups (e.g. icing and cake batter)
  • \n
  • Full text search for your recipes
  • \n
  • Access your recipes through the WordPress REST API
  • \n
  • Built-in SEO check for your recipe metadata
  • \n
  • Compatible with RTL languages
  • \n
  • Import your recipes from other plugins (see below)
  • \n
\n

WP Recipe Maker Premium

\n

Looking for some more advanced functionality? We also have the WP Recipe Maker Premium add-on available with the following features:

\n
    \n
  • Use ingredient links for linking to products or other recipes
  • \n
  • Adjustable servings make it easy for your visitors
  • \n
  • Display all nutrition data in a nutrition label
  • \n
  • User Ratings allow visitors to vote without commenting
  • \n
  • Add a mobile-friendly kitchen timer to your recipes
  • \n
  • More Premium templates for a unique recipe template
  • \n
  • Create custom recipe taxonomies like price level, difficulty, …
  • \n
  • Use checkboxes for your ingredients and instructions
  • \n
\n

Even more add-ons can add the following functionality:

\n
    \n
  • Integration with a Nutrition API for automatic nutrition facts
  • \n
  • Unit Conversion to reach an international audience with a different unit system
  • \n
  • Have your users send in recipes through the Recipe Submission form
  • \n
  • Give your visitors the power of Recipe Collections for favourites, meal planning and more
  • \n
\n

Import Options

\n

Currently using another recipe plugin? No problem! You can easily migrate all your existing recipes to WP Recipe Maker if you’re using any of the following plugins:

\n
    \n
  • Tasty Recipes
  • \n
  • Create by Mediavine
  • \n
  • EasyRecipe
  • \n
  • WP Ultimate Recipe
  • \n
  • Recipe Card Blocks by WPZOOM
  • \n
  • Meal Planner Pro
  • \n
  • BigOven
  • \n
  • ZipList and Zip Recipes
  • \n
  • Yummly
  • \n
  • Yumprint Recipe Card
  • \n
  • FoodiePress
  • \n
  • Cooked
  • \n
  • Cookbook
  • \n
  • Simple Recipe Pro
  • \n
  • Purr Recipe Plugin
  • \n
  • Recipes by Simmer
  • \n
  • WordPress.com shortcode
  • \n
  • JSON-LD HTML Script
  • \n
  • Multi Rating (ratings only)
  • \n
  • (Need anything else? Just ask!)
  • \n
\n

This plugin is in active development. Feel free to contact us with any feature requests or ideas.

\n","download_link":"https://downloads.wordpress.org/plugin/wp-recipe-maker.zip","tags":{"cooking":"cooking","food":"food","ingredients":"ingredients","recipe":"Recipe","recipes":"recipes"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QG7KZMGFU325Y","icons":{"1x":"https://ps.w.org/wp-recipe-maker/assets/icon-128x128.png?rev=1491788","2x":"https://ps.w.org/wp-recipe-maker/assets/icon-256x256.png?rev=1491788"},"wporg":true},{"name":"Slim SEO – Fast & Automated WordPress SEO Plugin","slug":"slim-seo","version":"3.10.1","author":"eLightUp","author_profile":"https://profiles.wordpress.org/rilwis","requires":"4.5","tested":"5.8","requires_php":"5.6","rating":92,"ratings":{"1":1,"2":3,"3":0,"4":0,"5":26},"num_ratings":30,"support_threads":17,"support_threads_resolved":13,"active_installs":10000,"downloaded":170263,"last_updated":"2021-07-22 1:33am GMT","added":"2018-12-31","homepage":"https://wpslimseo.com","short_description":"A full-featured SEO plugin for WordPress that's lightweight, blazing fast with minimum configuration. No bloats,…","description":"

A Fast & Automated SEO Plugin For WordPress

\n

Currently there are many SEO plugins for WordPress in the market. But these plugins often have too many options and are very complicated for ordinary users. Access to their configuration section, you will easily get lost in a maze of explanations and options that you sometimes don’t understand. Besides, there are ads!

\n

So how can an ordinary user use an SEO plugin?

\n

SEO should be an integrated part of WordPress, where users don’t need or need very little effort to configure for SEO. The main reason is that not everyone understands the terms of SEO and how to configure them optimally.

\n

So, we made Slim SEO.

\n

Slim SEO is a full-featured SEO plugin, that’s done right! It provides a complete SEO solution for WordPress where the configuration has been done automatically. Users do not need to care about their complex and semantic options.

\n

So what does Slim SEO do?

\n

Slim SEO Features

\n

Slim SEO helps you do the following jobs automatically:

\n

1. Meta Tags

\n

The following meta tags are auto-generated and optimized for the best SEO scores.

\n\n

2. XML Sitemap

\n

Slim SEO automatically generates XML sitemap (at domain.com/sitemap.xml) to submit to search engines. With XML sitemaps, your website are indexed fast and completely.

\n

3. Breadcrumbs

\n

The plugin allows you to output a breadcrumb trail on your website easily. It automatically fetches the information from the current post and output a hierarchy for you. You can also style the breadcrumbs to match your theme style.

\n

4. Schema (Structured Data)

\n

Schema is a way that describes structured data for search engines. Based on the data provided, search engines can show the content in the search results page in a more appealing way.

\n

Slim SEO automatically adds the some structured data to the website via JSON-LD which makes your website more SEO-friendly. Not only schemas are created by the plugin, there are also meaningful connections between them. For example, an article (single post) is the main entity of the current webpage. Slim SEO does that all without any configuration.

\n

5. Auto Redirection

\n
    \n
  • Auto redirect attachment page to the attachment file URL.
  • \n
  • Auto redirect author page to the homepage if the website has only one author or the author doesn’t have any posts.
  • \n
\n

6. Open Source

\n

Slim SEO has different contributors which help make Slim SEO a quality product. Join us on Github!

\n

Who should use Slim SEO?

\n

Everyone can use Slim SEO!

\n

However, Slim SEO is perfectly suitable for users who prefer simplicity or do not like the complicated options that other SEO plugins provide. It’s also a good choice for users with little SEO knowledge and just want to use SEO plugins to automate their jobs.

\n

If you like this plugin, you might also like our other products: Meta Box and GretaThemes.

\n","download_link":"https://downloads.wordpress.org/plugin/slim-seo.3.10.1.zip","tags":{"google":"google","schema":"schema","search-engine-optimization":"search engine optimization","seo":"seo","sitemap":"sitemap"},"donate_link":"https://wpslimseo.com/pro/","icons":{"1x":"https://ps.w.org/slim-seo/assets/icon.svg?rev=2005049","svg":"https://ps.w.org/slim-seo/assets/icon.svg?rev=2005049"},"wporg":true},{"name":"Schema & Structured Data for WP & AMP","slug":"schema-and-structured-data-for-wp","version":"1.9.83.1","author":"Magazine3","author_profile":"https://profiles.wordpress.org/magazine3","requires":"3.0","tested":"5.8","requires_php":false,"rating":94,"ratings":{"1":13,"2":1,"3":2,"4":10,"5":183},"num_ratings":209,"support_threads":29,"support_threads_resolved":18,"active_installs":80000,"downloaded":2328633,"last_updated":"2021-08-31 7:07am GMT","added":"2018-08-06","homepage":"","short_description":"Schema & Structured Data for WP & AMP adds Google Rich Snippets markup according to Schema.org guidelines to structure your site for SEO.","description":"

Schema & Structured Data for WP & AMP adds Google Rich Snippets markup according to Schema.org guidelines to structure your site for SEO. (AMP Compatible)

\n

Features

\n
    \n
  • Schema Types: Currently, We have more than 35 schema types such as Blog Posting, News article, Local Business, Web page, Article, Recipe, Product, and Video Object view all. We are going to add all the schema types in the future. You can request the one you want and we will add it for you!
  • \n
  • Conditional Display Fields: Meaning you include or exclude any posts, pages, post types, taxonomies and more!
  • \n
  • Knowlegde Base Support: Recognize the content based on the organization or a person via data type option.
  • \n
  • Full AMP Compatiblity: Supports the AMP for WP and AMP by Automattic plugins.
  • \n
  • Advanced Settings: Play with output of schema markup using these options (Defragment, Add in Footer, Pretty Print, MicroData CleanUp etc.)
  • \n
  • Migration: Import the data from other schema plugins such as (SEO Pressor, WP SEO Schema, Schema Plugin etc )
  • \n
  • Compatibility: Generate the schema markup for the plugins. We have provided schema support for them. Few of them are – kk Star Ratings, WP-PostRatings, bbPress
  • \n
  • Google Review: Display your business google reviews and its schema markup on your website.
  • \n
  • [Premium] Reviews ( Fetch reviews from 75+ platforms ).
  • \n
  • [Premium] Priority Support. Get it We get more than 100 technical queries a day but the Priority support plan will help you skip that and get the help from a dedicated team.
  • \n
  • Review Module: Create your own review rating box with pros and cons and its schema markup
  • \n
  • Schema Type Blocks in Gutenberg: Create your own content with the blocks and json schema markup will be added automatically
  • \n
  • Unlimited Custom Post Types: You can control to represent the Rich Snippets data in the google search console using unlimited custom post types.
  • \n
  • Easy to use with Minimal Settings
  • \n
  • Archive Page Listing Support
  • \n
  • JSON-LD Format
  • \n
  • Easy to use Setup Wizard
  • \n
  • Breadcrumbs Listing Support
  • \n
  • Comments Post comments Support
  • \n
  • Constant Development & New Features: We’ll be releasing the constant updates along with the more handy features as soon as we get the feedback from the users.
  • \n
\n

Supported Schema Types

\n
    \n
  • Apartment
  • \n
  • House
  • \n
  • SingleFamilyResidence
  • \n
  • Article
  • \n
  • Blogposting
  • \n
  • Book
  • \n
  • Course
  • \n
  • DiscussionForumPosting,
  • \n
  • DataFeed
  • \n
  • HowTo
  • \n
  • NewsArticle
  • \n
  • QAPage
  • \n
  • Review
  • \n
  • Recipe
  • \n
  • TVSeries
  • \n
  • SoftwareApplication
  • \n
  • MobileApplication
  • \n
  • SpecialAnnouncement (Related to Coronavirus)
  • \n
  • TechArticle
  • \n
  • WebPage
  • \n
  • Event
  • \n
  • VideoGame
  • \n
  • JobPosting
  • \n
  • Service
  • \n
  • Trip
  • \n
  • AudioObject
  • \n
  • VideoObject
  • \n
  • MedicalCondition
  • \n
  • MusicPlaylist
  • \n
  • MusicAlbum
  • \n
  • LocalBusiness with all the sub categories
  • \n
  • Product
  • \n
  • TouristAttraction
  • \n
  • TouristDestination
  • \n
  • LandmarksOrHistoricalBuildings
  • \n
  • HinduTemple
  • \n
  • Church
  • \n
  • Mosque
  • \n
  • Person
  • \n
  • View All
  • \n
\n

Extensions

\n

Some useful extensions to extend Schema & Structured Data for WP & AMP features, check Woocommerce Compatibility For Schema, Cooked Compatibility For Schema and We are going to add more.

\n

Support

\n

We try our best to provide support on WordPress.org forums. However, We have a special team support where you can ask us questions and get help. Delivering a good user experience means a lot to us and so we try our best to reply each and every question that gets asked.

\n

Bug Reports

\n

Bug reports for Schema & Structured Data for WP & AMP are welcomed on GitHub. Please note GitHub is not a support forum, and issues that aren’t properly qualified as bugs will be closed.

\n

Credits

\n
    \n
  • Select2 used https://github.com/select2/select2 – License URI: https://github.com/select2/select2/blob/develop/LICENSE.md,
  • \n
  • Merlin WP used https://github.com/richtabor/MerlinWP – License URI: https://github.com/richtabor/MerlinWP/blob/master/LICENSE,
  • \n
  • jquery-timepicker used https://github.com/jonthornton/jquery-timepicker
  • \n
  • Rate Yo! used https://github.com/prrashi/rateYo – License URI: https://github.com/prrashi/rateYo/commit/f3812fe96c38b08627d209795176053550fb1427
  • \n
  • Aqua Resizer used http://aquagraphite.com – License URI: WTFPL – http://sam.zoy.org/wtfpl/
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/schema-and-structured-data-for-wp.1.9.83.1.zip","tags":{"google-snippets":"google snippets","rich-snippets":"rich snippets","schema":"schema","schema-org":"schema.org","structured-data":"structured data"},"donate_link":"","icons":{"1x":"https://ps.w.org/schema-and-structured-data-for-wp/assets/icon-128x128.png?rev=1922284","2x":"https://ps.w.org/schema-and-structured-data-for-wp/assets/icon-256x256.png?rev=1922284"},"wporg":true},{"name":"GenerateBlocks","slug":"generateblocks","version":"1.3.5","author":"Tom Usborne","author_profile":"https://profiles.wordpress.org/edge22","requires":"5.4","tested":"5.8","requires_php":"5.6","rating":98,"ratings":{"1":0,"2":0,"3":2,"4":1,"5":72},"num_ratings":75,"support_threads":29,"support_threads_resolved":14,"active_installs":50000,"downloaded":239683,"last_updated":"2021-07-19 6:12pm GMT","added":"2020-05-19","homepage":"https://generateblocks.com","short_description":"A small collection of lightweight WordPress blocks that can accomplish nearly anything.","description":"

\n

\n

Add incredible versatility to your editor without bloating it with tons of one-dimensional Gutenberg blocks. With GenerateBlocks, you can learn a handful of blocks deeply and use them to build anything.

\n

GenerateBlocks works hand-in-hand with GeneratePress, but is built to work with any theme.

\n

Looking for more features? Check out GenerateBlocks Pro.

\n

Container

\n

Organize your content into rows and sections. The Container block is the foundation of your content, allowing you to design unique sections for your content.

\n

Grid

\n

Create advanced layouts with flexible grids. The Grid block gives you the ability to create any kind of layout you can imagine.

\n

Headline

\n

Craft text-rich content with advanced typography. Everything from headings to paragraphs – take full control of your text.

\n

Buttons

\n

Drive conversions with beautiful buttons.

\n

Performance

\n

We take performance seriously. Minimal CSS is generated only for the blocks you need, and our HTML structure is as simple as possible while allowing for maximum flexibility.

\n

Coding standards

\n

Built to the highest coding standards for security, stability and future compatibility.

\n

Fully responsive

\n

Every block comes with tablet and mobile controls, giving you total control of your responsive design.

\n

Documentation

\n

Check out our documentation for more information on the individual blocks and how to use them.

\n","download_link":"https://downloads.wordpress.org/plugin/generateblocks.1.3.5.zip","tags":{"blocks":"blocks","container":"container","grid":"grid","gutenberg":"gutenberg","headline":"headline"},"donate_link":"https://generateblocks.com","icons":{"1x":"https://ps.w.org/generateblocks/assets/icon-128x128.png?rev=2336822","2x":"https://ps.w.org/generateblocks/assets/icon-256x256.png?rev=2336822"},"wporg":true},{"name":"Blackhole for Bad Bots","slug":"blackhole-bad-bots","version":"3.2","author":"Jeff Starr","author_profile":"https://profiles.wordpress.org/specialk","requires":"4.1","tested":"5.8","requires_php":"5.6.20","rating":98,"ratings":{"1":2,"2":0,"3":3,"4":2,"5":108},"num_ratings":115,"support_threads":3,"support_threads_resolved":3,"active_installs":30000,"downloaded":306082,"last_updated":"2021-07-19 8:41pm GMT","added":"2016-02-18","homepage":"https://perishablepress.com/blackhole-bad-bots/","short_description":"Blackhole is a WordPress security plugin that detects and traps bad bots in a virtual black hole, where they are denied access to your entire site.","description":"
\n

Add your own virtual black hole trap for bad bots.

\n
\n

Bye bye bad bots..

\n

Bad bots are the worst. They do all sorts of nasty stuff and waste server resources. The Blackhole plugin helps to stop bad bots and save precious resources for legit visitors.

\n

How does it work?

\n

First the plugin adds a hidden trigger link to the footer of your pages. You then add a line to your robots.txt file that forbids all bots from following the hidden link. Bots that then ignore or disobey your robots rules will crawl the link and fall into the trap. Once trapped, bad bots are denied further access to your WordPress site.

\n

I call it the “one-strike” rule: bots have one chance to obey your site’s robots.txt rule. Failure to comply results in immediate banishment. The best part is that the Blackhole only affects bad bots: human users never see the hidden link, and good bots obey the robots rules in the first place. Win-win! 🙂

\n

Using a caching plugin? Check out the Installation notes for important info.

\n

Features

\n
    \n
  • Easy to set up
  • \n
  • Squeaky clean code
  • \n
  • Focused and modular
  • \n
  • Lightweight, fast and flexible
  • \n
  • Built with the WordPress API
  • \n
  • Works with other security plugins
  • \n
  • Easy to reset the list of bad bots
  • \n
  • Easy to delete any bot from the list
  • \n
  • Regularly updated and “future proof”
  • \n
  • Blackhole link includes “nofollow” attribute
  • \n
  • Plugin options configurable via settings screen
  • \n
  • Works silently behind the scenes to protect your site
  • \n
  • Whitelists all major search engines to never block
  • \n
  • Focused on flexibility, performance, and security
  • \n
  • Email alerts with WHOIS lookup for blocked bots
  • \n
  • Complete inline documentation via the Help tab
  • \n
  • Provides setting to whitelist any IP addresses
  • \n
  • Customize the message displayed to bad bots 😉
  • \n
  • One-click restore the plugin default options
  • \n
  • Does NOT use or require any .htaccess rules
  • \n
\n

Blackhole for Bad Bots protects your site against bad bots, spammers, scrapers, scanners, and other automated threats.

\n

Not using WordPress? Check out the standalone PHP version of Blackhole!

\n

Check out Blackhole Pro and level up with advanced features!

\n

Whitelist

\n

By default, this plugin does NOT block any of the major search engines (user agents):

\n
    \n
  • AOL.com
  • \n
  • Baidu
  • \n
  • Bingbot/MSN
  • \n
  • DuckDuckGo
  • \n
  • Googlebot
  • \n
  • Teoma
  • \n
  • Yahoo!
  • \n
  • Yandex
  • \n
\n

These search engines (and all of their myriad variations) are whitelisted via user agent. So are a bunch of other “useful” bots. They always are allowed full access to your site, even if they disobey your robots.txt rules. This list can be customized in the plugin settings. For a complete list of whitelisted bots, visit the Help tab in the plugin settings (under “Whitelist Settings”).

\n

Privacy

\n

User Data: This plugin automatically blocks bad bots. When bad bots fall into the trap, their IP address, user agent, and other request data are stored in the WP database. No other user data is collected by this plugin. At any time, the administrator may delete all saved data via the plugin settings.

\n

Services: This plugin does not connect to any third-party locations or services.

\n

Cookies: This plugin does not set any cookies.

\n

Header Image Courtesy NASA/JPL-Caltech.

\n

Support development of this plugin

\n

I develop and maintain this free plugin with love for the WordPress community. To show support, you can make a donation or purchase one of my books:

\n\n

And/or purchase one of my premium WordPress plugins:

\n\n

Links, tweets and likes also appreciated. Thanks! 🙂

\n","download_link":"https://downloads.wordpress.org/plugin/blackhole-bad-bots.3.2.zip","tags":{"anti-spam":"anti-spam","bad-bots":"bad bots","blackhole":"blackhole","honeypot":"honeypot","security":"security"},"donate_link":"https://monzillamedia.com/donate.html","icons":{"1x":"https://ps.w.org/blackhole-bad-bots/assets/icon-128x128.png?rev=1471215","2x":"https://ps.w.org/blackhole-bad-bots/assets/icon-256x256.png?rev=1471215"},"wporg":true},{"name":"Page View Count","slug":"page-views-count","version":"2.4.12","author":"a3rev Software","author_profile":"https://profiles.wordpress.org/a3rev","requires":"5.0","tested":"5.8","requires_php":false,"rating":78,"ratings":{"1":8,"2":5,"3":2,"4":3,"5":31},"num_ratings":49,"support_threads":2,"support_threads_resolved":0,"active_installs":20000,"downloaded":404002,"last_updated":"2021-07-19 10:48am GMT","added":"2012-12-21","homepage":"","short_description":"Places an icon, all time views count and views today count at the bottom of…","description":"

A beautifully simple to set up plugin that gives site visitors and site owners the ability to quickly and easily see how many people have visited that page or post.

\n

FEATURES

\n
    \n
  • On the front end it adds an icon and page views count to the bottom or top of pages and posts on your WordPress website.
  • \n
  • Switch ON | OFF hide Page Views Count for all Posts, Pages and all custom posts types including WooCommerce custom post types.
  • \n
  • Set the Position of the counter to show at the top of the page or post or at the bottom
  • \n
  • Set alignment of the counter Left, Right or Centre
  • \n
  • Set the colour and size of the counter icon
  • \n
  • Option to use load by Ajax to prevent the count from being cached by caching plugins
  • \n
  • Option to Manually set / edit total views and views today from Page View Count meta box on any post or page editor
  • \n
  • Add Page Views counter via the PVC Gutenberg block
  • \n
  • Add Page Views counter via shortcode
  • \n
  • Add Page Views counter via widget
  • \n
  • Developers can add the Page Views Counter via php tag
  • \n
  • All options and settings are point click – absolutely no coding required
  • \n
\n

COMPATIBILTY

\n

Compatible with WordPress 5.3+ and backwards to WP 4.9.0. Compatible with Classic Editor plugin with 5.0+ (Gutenberg Deactivated)

\n

GUTENBERG BLOCK

\n

Using the Gutenberg Editor. Use the Page View Count Block to add the counter to any page or post content. Block search for ‘Page Views’ or selecting the block from the a3rev Blocks menu.

\n

Adding the Page Views block to your content automatically deactivates the Global Page View counter on the post or page.

\n

ELEMENTOR TEMPLATES

\n

Fully compatible with Elementor templates. Add counter via Shortcode or widget to any template.

\n

DEVELOPERS

\n

On the plugins dashboard in the + Page Views Count Function options box you will find the Page Views Count functions and notes on how to use them.

\n
    \n
  • Use to manually add Page views count to any content or object in the theme.
  • \n
  • Use to add page View Count to any content that is not create using WordPress custom post / taxonomy type.
  • \n
  • Use to create a custom position of the Page Views Count
  • \n
  • Functions support echo and return parameters when getting visitor stats on any variable.
  • \n
\n

TROUBLESHOOTING

\n
    \n
  • The number 1 support request we get about the plugin is that it double or triple counts page or post loads. Yes it does and if you see that it is a Red Flag that you have a misconfiguration or bug in your theme or a plugin. Page Views Count does exactly that – counts each time the page or post is loading in the browser – if its counting twice it is because the browser is double loading the page. That is a bad thing and you or your developer needs to fix that.
  • \n
\n

CONTRIBUTE

\n

When you download Page Views Count, you join our community. Regardless of if you are a WordPress beginner or experienced developer if you’?re interested in contributing to Page Views Count development head over to the Page Views Count GitHub Repository to find out how you can contribute.
\nWant to add a new language to Page Views Count? Great! You can contribute via translate.wordpress.org

\n

Usage

\n
    \n
  1. \n

    Install and activate the plugin

    \n
  2. \n
  3. \n

    Go to WordPress Settings menu > Page View Count Menu

    \n
  4. \n
  5. \n

    Activate Page Views Count and use the options box settings to make the desired configuration

    \n
  6. \n
  7. \n

    Be sure to clear any caching and browser cache to see your Page Views Count

    \n
  8. \n
\n","download_link":"https://downloads.wordpress.org/plugin/page-views-count.2.4.12.zip","tags":{"gutenberg":"gutenberg","page-view-count":"page view count","post-view-count":"post view count","post-views":"post views","wordpress-page-view":"wordpress page view"},"donate_link":"","icons":{"1x":"https://ps.w.org/page-views-count/assets/icon.svg?rev=986301","2x":"https://ps.w.org/page-views-count/assets/icon-256x256.png?rev=986301","svg":"https://ps.w.org/page-views-count/assets/icon.svg?rev=986301"},"wporg":true},{"name":"Newspack Listings","slug":"newspack-listings","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://github.com/Automattic/newspack-listings/releases","short_description":"

Create reusable content as listings and add them to lists wherever core blocks can be used

\n","description":"\n\n\n

Create reusable content as listings and add them to lists wherever core blocks can be used

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2021/02/listings2-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2021/02/listings2-372x209.jpg","svg":""},"wporg":false},{"name":"Newspack Newsletters","slug":"newspack-newsletters","version":"1.31.1","author":"Automattic","author_profile":"https://profiles.wordpress.org/automattic","requires":"5.3","tested":"5.8.0","requires_php":"5.6","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":1,"support_threads_resolved":1,"active_installs":500,"downloaded":2877,"last_updated":"2021-08-10 8:45pm GMT","added":"2021-02-15","homepage":"https://newspack.pub","short_description":"Create email newsletters with the Gutenberg editor and distribute them with your Mailchimp or Constant…","description":"

Create email newsletters with the Gutenberg editor and send them via Mailchimp or Constant Contact, all without leaving WP Admin! Newspack Newsletters lets you build eye-catching newsletters using the WordPress editing tools you’re already familiar with, and lets you save drafts, create reusable layouts, send to your existing mailing list, and also publish them to your website.

\n

Use and create newsletter layouts

\n

Newspack Newsletters comes with four default layouts to help you start building newsletters quickly. You can use an existing layout, or start fresh with a blank page. You can also create and save your own layouts, or alter the ones that come bundled with the plugin and save the settings, and use them for future campaigns.

\n

Use Gutenberg blocks and settings

\n

Newspack Newsletters supports most core Gutenberg blocks and configurations, letting you use blocks like Group, Button, Columns, and more, to create dynamic layouts. The plugin will warn you when a block will not display as expected in an email.

\n

Customize your newsletter’s appearance

\n

You can customize your newsletters further by changing the header and body fonts, or picking a background color.

\n

Newspack Blocks

\n

Newspack Newsletters comes bundled with the Newspack Post Inserter block. This block lets you insert excerpts from live posts on your site, and, once inserted, will turn those posts into static content using the Header and Paragraph blocks, linking back to your site.

\n

Need to target a post title to your newsletter audience? Not a problem! You can edit these blocks, and add others, to make sure they’ speak to your readers.

\n

Add ads!

\n

Monetize your newsletters by including advertising. The Newspack Newsletters plugin lets you create ads, which are stored as a custom post type. Ads are automatically inserted into your newsletters, and can also be toggled off on a newsletter-by-newsletter basis.

\n

Send with ease

\n

Newspack Newsletters connects to your Mailchimp or Constant Contact accounts to send emails using the mailing lists you’ve collected there, all without leaving the WordPress Admin.

\n

Before sending your campaign, you can send test emails to one or more email addresses at a time from the newsletter editor, to make sure everything is pixel perfect before sharing with the world.

\n

About Newspack

\n

The Newspack Newletters plugin is part of Newspack, a suite of tools to help small to mid-sized news organizations publish and generate revenue with WordPress. Newspack is a collaborative project by WordPress.com and the Google News Initiative. You can learn more about Newspack by visiting our website.

\n

Credits

\n

The beach photograph in the screenshot is by Life of Pix, licensed CC0.

\n","download_link":"https://downloads.wordpress.org/plugin/newspack-newsletters.zip","tags":{"constant-contact":"constant contact","mailchimp":"mailchimp","newsletters":"newsletters","newspack":"Newspack","wordpress-com":"WordPress.com"},"donate_link":"","icons":{"1x":"https://ps.w.org/newspack-newsletters/assets/icon.svg?rev=2475195","2x":"https://ps.w.org/newspack-newsletters/assets/icon-256x256.png?rev=2475195","svg":"https://ps.w.org/newspack-newsletters/assets/icon.svg?rev=2475195"},"wporg":true},{"name":"Web Stories","slug":"web-stories","version":"1.10.1","author":"Google","author_profile":"https://profiles.wordpress.org/google","requires":"5.5","tested":"5.8","requires_php":"7.0","rating":84,"ratings":{"1":5,"2":2,"3":2,"4":4,"5":31},"num_ratings":44,"support_threads":112,"support_threads_resolved":84,"active_installs":20000,"downloaded":324339,"last_updated":"2021-08-25 7:02pm GMT","added":"2020-09-22","homepage":"https://wp.stories.google/","short_description":"Web Stories are a visual storytelling format for the open web which immerses your readers…","description":"

Web Stories are a free, open-web, visual storytelling format for the web, enabling you to easily create visual narratives with engaging animations and tappable interactions, and immerse your readers in great and fast-loading full-screen experiences.

\n

Benefits of Web Stories

\n

The Web Stories format puts features and capabilities at your fingertips to engage with your audience via the power of storytelling on the open web. Specifically, you can:

\n
    \n
  • Create beautiful and engaging content easily: Web Stories make the production of stories as easy as possible from a technical perspective.
  • \n
  • Enjoy creative flexibility for editorial freedom and branding: The Web Stories format comes with preset but flexible layout templates, standardized UI controls, and components for sharing and adding follow-on content.
  • \n
  • Share and link your stories on the open web: Web Stories are part of the open web and can be shared and embedded across sites and apps without being confined to a single ecosystem.
  • \n
  • Track and measure your stories: Supports analytics and bookend capabilities for viral sharing and monetization.
  • \n
  • Capture the attention of your readers by offering fast loading times to your stories: Web Stories are lightning fast so that your audience stays engaged and entertained.
  • \n
  • Engage with your readers via immersive storytelling: Web Stories are a new and modern way to reach existing readers.
  • \n
  • Monetize effectively the beautiful and engaging stories you create: Web Stories enable monetization capability for publishers using affiliate links. For advertisers, Stories is a way to reach a unique audience within a new storytelling experience.
  • \n
\n

Web Stories Editor

\n

The Web Stories editor for WordPress brings together a robust set of story creation capabilities in a user-friendly, WYSIWYG creation tool. Some of the key features you can leverage out of the box are:

\n
    \n
  • A visually rich and intuitive dashboard, allowing you to easily navigate the story creation process
  • \n
  • Beautiful and expressive page templates to you get your story creation process started quickly and smoothly
  • \n
  • Easy drag-and-drop capabilities, making it easy to compose beautiful stories
  • \n
  • Convenient access to WordPress’ media library, enabling you to grab your media assets right from the plugin dashboard as you create your stories
  • \n
  • Customizable color and text style presets, making it easy to tailor the style of your stories to the needs of your content strategy
  • \n
  • And much more!
  • \n
\n

Using the Web Stories editor for WordPress, you can easily create visual narratives with tappable interactions, and share freely across the web, or embed them on your existing content strategies. The Stories you create are yours in every way, as Web Stories belong to the open web, instead of being confined to any specific closed ecosystem or platform.

\n

Audience: Everyone

\n

Web Stories are for everyone! If you are a site owner, content creator, or publisher on the web, embracing the Web Stories format would be great as a way to enhance the quality of your content strategy, the value you bring to your readers, and consequently your chances of achieving sustainable success.

\n

Terms of Service

\n

By using this plugin, you agree to Google’s Terms of Service. By using third-party imagery and video provided by Unsplash, Coverr and Tenor, you agree to adhere to the respective Terms of Service.

\n","download_link":"https://downloads.wordpress.org/plugin/web-stories.1.10.1.zip","tags":{"amp":"amp","google":"google","stories":"stories","storytelling":"storytelling","web-stories":"web stories"},"donate_link":"","icons":{"1x":"https://ps.w.org/web-stories/assets/icon.svg?rev=2386543","2x":"https://ps.w.org/web-stories/assets/icon-256x256.png?rev=2386543","svg":"https://ps.w.org/web-stories/assets/icon.svg?rev=2386543"},"wporg":true},{"name":"Jetpack – WP Security, Backup, Speed, & Growth","slug":"jetpack","version":"10.0","author":"Automattic","author_profile":"https://profiles.wordpress.org/automattic","requires":"5.7","tested":"5.8","requires_php":"5.6","rating":78,"ratings":{"1":319,"2":80,"3":81,"4":137,"5":1019},"num_ratings":1636,"support_threads":355,"support_threads_resolved":316,"active_installs":5000000,"downloaded":242963856,"last_updated":"2021-08-03 4:25pm GMT","added":"2011-01-20","homepage":"https://jetpack.com","short_description":"Improve your WP security with powerful one-click tools like backup and malware scan. Get essential free tools including stats, CDN and social sharing.","description":"

The most popular WordPress plugin for just about everything.

\n

WordPress security, performance, marketing, and design tools — Jetpack is made by WordPress experts to make WP sites safer and faster, and help you grow your traffic.

\n

24/7 AUTO SITE SECURITY

\n

We guard your site so you can run your site or business. Jetpack Security provides easy-to-use, comprehensive WordPress site security including auto real-time backups and easy restores, malware scans, and spam protection. Essential features like brute force protection and downtime / uptime monitoring are free.

\n
    \n
  • Back up your site automatically in real time and restore to any point with one click. Unlimited storage for your backup. Great for eCommerce stores especially Woo.
  • \n
  • Manage migration to a new host, migrate theme files and plugins to a new database, easily duplicate websites, create full database backups, clone websites, repair broken websites by restoring older backups or easily set up a test site by creating a duplicate of your existing WP website.
  • \n
  • See every site change and who made it with the activity log, great for coordination, debug, maintenance, or troubleshooting.
  • \n
  • Automatically perform malware scans and security scans for other code threats. One click fix to restore your site for malware.
  • \n
  • Block spam comments and form responses with anti spam features powered by Akismet.
  • \n
  • Brute force attack protection to protect your WordPress login page from attacks.
  • \n
  • Monitor your site uptime / downtime and get an instant alert of any change by email.
  • \n
  • Secure WordPress.com powered login used by millions of sites with optional 2FA (two factor authentication) for extra protection.
  • \n
  • Auto update individual plugins for easy site maintenance and management.
  • \n
\n

PEAK SPEED AND PERFORMANCE

\n

Get blazing fast site speed with Jetpack, the premier WP plugin built to leverage the power of AMP, a tool that helps optimize your site on mobile devices. Jetpack’s free CDN (content delivery network) auto optimizes your images. Watch your page load times decrease — we’ll optimize your images and serve them from our own powerful global network, and speed up your site on mobile devices to reduce bandwidth usage and save money!

\n
    \n
  • Jetpack has partnered with Google AMP to create the best, highest performance all-in-one toolkit for WordPress. By using Jetpack and AMP together, you get all the features you need to build a beautiful, fast, modern website with no coding required.
  • \n
  • Image CDN for images and static files, like CSS and JavaScript, served from our servers, not yours, which saves you money and bandwidth.
  • \n
  • Lazy load images for a super fast experience, even on mobile. Jetpack’s lazy loading automatically delays the loading of media on your posts and pages until your visitors scroll down to where they appear on the page.
  • \n
  • Unlimited, high speed, ad free video hosting keeps the focus on your content, not on ads or recommendations that lead people off site.
  • \n
  • Custom site search is incredibly powerful and customizable. Helps your visitors instantly find the right content so they read and buy more. Works great with WooCommerce / eCommerce sites to help filter products so customers get what they want on your site faster.
  • \n
  • Recommended to use with WP Super Cache for ultimate WordPress site speed.
  • \n
\n

POWERFUL TOOLS FOR GROWTH

\n

Create and customize your WordPress site, optimize it for visitors and revenue, and enjoy watching your stats tick up. Build it, share it, and watch it grow.

\n
    \n
  • Advanced site stats and analytics to help you understand your audience.
  • \n
  • Auto publish blog posts and products to social media by simply using our tools to connect to Facebook, Twitter, and Linkedin.
  • \n
  • Easily share Instagram posts on your pages and blog posts.
  • \n
  • Collect a payment or donation, sell a product, service, or membership with simple integrations with PayPal and Stripe.
  • \n
  • Grow traffic with SEO tools for Google, Bing, Twitter, Facebook, and WordPress.com. XML sitemap created automatically.
  • \n
  • Advertise on your site to generate revenue. The ad network automatically does the work for you to find high-quality ads that are placed on your site.
  • \n
  • Manage Jetpack features from anywhere with the official WordPress mobile app, available for Apple iOS (iPhone or iPad) and Google Android.
  • \n
  • Looking for Customer Relationship Management? Check out the Jetpack CRM plugin which works alongside Jetpack to give you a simple and practical way to build relationships with your customers and leads.
  • \n
\n

EASY DESIGN TOOLS

\n

Quickly customize your site to make it stand out — no coding needed.

\n
    \n
  • Themes — Simple themes to get started or pick a professional theme to make your site stand out.
  • \n
  • Related posts — Keep visitors on your site by automatically showing them related content they will be interested in.
  • \n
  • Gallery and Slideshow tools — Image galleries, carousel slider, and slideshows for WP sites and stores.
  • \n
  • Subscriptions — Make it easy for visitors to sign up to receive notifications of your latest posts and comments.
  • \n
  • Contact form — Easily build unlimited contact forms for free without any coding. Receive email notifications for each response. Integrate with mail solutions like Creative Mail to reach your customers and leads quickly. Connect to Jetpack Anti spam (powered by Akismet) to filter submissions.
  • \n
  • oEmbed Support — easily embed images, posts, and links from Facebook and Instagram.
  • \n
\n

INTEGRATIONS

\n

Jetpack is updated monthly to ensure seamless integration with top WordPress plugins and other tech products.

\n
    \n
  • Built for WooCommerce: Jetpack and WooCommerce are both made by Automattic. Backup, Scan, Anti-spam, integrate perfectly for Woo / eComm stores
  • \n
  • Jetpack is fully compatible with v2.0 of the official AMP plugin for WordPress.
  • \n
  • Better understand your customers and marketing with Google Analytics (GA) integration
  • \n
  • Social media platforms: Instagram, Facebook, Twitter, LinkedIn
  • \n
  • Simple Blocks to customize your site: Pinterest, Whatsapp, Podcast player, GIFs, maps, tiled gallery, slideshow
  • \n
  • Payment processors: easily collect payments or donations and sell products through Stripe and PayPal
  • \n
  • Site speed and performance plugins: Works great with WP Super Cache by Automattic and Cloudflare.
  • \n
  • Contact form: Anti-spam (Powered by Akismet) blocks spam comments for Jetpack forms, Contact Form 7, Ninja Forms, Gravity Forms, Formidable Forms, and more.
  • \n
  • Other tech integrations: Instagram, Creative Mail, Mailchimp, Calendly, Whatsapp, Pinterest, Revue, and more.
  • \n
\n

EXPERT SUPPORT

\n

We have a global team of Happiness Engineers ready to provide incredible support. Ask your questions in the support forum or contact us directly.

\n

GET STARTED

\n

Installation is free, quick, and easy. Set up Jetpack in minutes. Take advantage of more robust features like WordPress site security and design and growth tools by upgrading to a paid plan.

\n","download_link":"https://downloads.wordpress.org/plugin/jetpack.10.0.zip","tags":{"backup":"backup","malware":"malware","scan":"scan","security":"security","woo":"woo"},"donate_link":"","icons":{"1x":"https://ps.w.org/jetpack/assets/icon.svg?rev=2394525","2x":"https://ps.w.org/jetpack/assets/icon-256x256.png?rev=2394525","svg":"https://ps.w.org/jetpack/assets/icon.svg?rev=2394525"},"wporg":true},{"name":"Easy Notification Bar","slug":"easy-notification-bar","version":"1.4.2","author":"WPExplorer","author_profile":"https://profiles.wordpress.org/wpexplorer","requires":"5.2.0","tested":"5.8","requires_php":"5.6.2","rating":82,"ratings":{"1":0,"2":1,"3":1,"4":1,"5":4},"num_ratings":7,"support_threads":2,"support_threads_resolved":1,"active_installs":4000,"downloaded":34025,"last_updated":"2021-08-22 1:48am GMT","added":"2019-06-20","homepage":"https://wordpress.org/plugins/easy-notification-bar/","short_description":"Easily add a custom top bar notification message to on your site with live customization options via the WordPress customizer.","description":"

Easily add a custom top bar notification message to on your site with live customization options via the WordPress customizer. The plugin allows you to enter your notification bar text as well as an optional button to display next to your text. Perfect for notifying visitors of a current sale, hot product, warnings or other important messages.

\n

The Easy Notification Bar plugin makes use of the newer “wp_body_open” action hook introduced in WordPress 5.2.0 which allows the plugin to work better with any theme that has been updated to support the tag. Contrary to other notice bar solutions which rely on absolute positioning, this plugin inserts the notice bar right after the body tag so it should display perfectly without any conflicts on any well-coded theme.

\n

By default, the notification bar is “static” which means it displays at the top of your site so when you scroll down the page it will become “hidden”. This is generally better for usability and SEO. However, in version 1.4 we added a new sticky option which you can enable in the Customizer so that the notification bar remains visible as you scroll down the page. The sticky functionality makes use of the CSS sticky property (not javascript).

\n

Although disabled by default, you can enable a close icon for your notice. When enabled, your visitors will see an “x” icon over the top bar which they can click to hide the message for their current and future sessions. This functionality makes use of localStorage (not cookies).

\n

Live Demo: You can view a live demo for the notification bar on our More Widgets Plugin Demo

\n

Features

\n
    \n
  • Sitewide (or homepage only) top notification bar.
  • \n
  • Easy setup via the WordPress customizer.
  • \n
  • Optional close icon.
  • \n
  • Optional sticky display.
  • \n
  • Custom background, color, text alignment and font size settings.
  • \n
  • Optional callout button.
  • \n
  • Responsive design so it looks good on mobile.
  • \n
  • Minimal code.
  • \n
  • Vanilla Javascript used for close icon (jQuery not needed).
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/easy-notification-bar.zip","tags":{"notice":"notice","notice-bar":"notice bar","notification":"notification","notification-bar":"notification bar","top-bar":"top bar"},"donate_link":"","icons":{"1x":"https://ps.w.org/easy-notification-bar/assets/icon-128x128.png?rev=2515988","2x":"https://ps.w.org/easy-notification-bar/assets/icon-256x256.png?rev=2515988"},"wporg":true},{"name":"Antispam Bee","slug":"antispam-bee","version":"2.10.0","author":"pluginkollektiv","author_profile":"https://profiles.wordpress.org/pluginkollektiv","requires":"4.5","tested":"5.8","requires_php":"5.2","rating":96,"ratings":{"1":7,"2":1,"3":1,"4":2,"5":175},"num_ratings":186,"support_threads":6,"support_threads_resolved":4,"active_installs":700000,"downloaded":5047137,"last_updated":"2021-07-29 11:15am GMT","added":"2009-01-10","homepage":"https://antispambee.pluginkollektiv.org/","short_description":"Antispam plugin with a sophisticated tool set for effective day to day comment and trackback spam-fighting. Build with data protection and privacy in …","description":"

Say Goodbye to comment spam on your WordPress blog or website. Antispam Bee blocks spam comments and trackbacks effectively, without captchas and without sending personal information to third party services. It is free of charge, ad-free and 100% GDPR compliant.

\n

Feature/Settings Overview

\n
    \n
  • Trust approved commenters.
  • \n
  • Trust commenters with a Gravatar.
  • \n
  • Consider the comment time.
  • \n
  • Allow comments only in a certain language.
  • \n
  • Block or allow commenters from certain countries.
  • \n
  • Treat BBCode links as spam.
  • \n
  • Validate the IP address of commenters.
  • \n
  • Use regular expressions.
  • \n
  • Search local spam database for commenters previously marked as spammers.
  • \n
  • Notify admins by e-mail about incoming spam.
  • \n
  • Delete existing spam after n days.
  • \n
  • Limit approval to comments/pings (will delete other comment types).
  • \n
  • Select spam indicators to send comments to deletion directly.
  • \n
  • Optionally exclude trackbacks and pingbacks from spam detection.
  • \n
  • Optionally spam-check comment forms on archive pages.
  • \n
  • Display spam statistics on the dashboard, including daily updates of spam detection rate and a total of blocked spam comments.
  • \n
\n

Support

\n\n

Contribute

\n
    \n
  • Active development of this plugin is handled on GitHub.
  • \n
  • Pull requests for documented bugs are highly appreciated.
  • \n
  • If you think you’ve found a bug (e.g. you’re experiencing unexpected behavior), please post at the support forums first.
  • \n
  • If you want to help us translate this plugin you can do so on WordPress Translate.
  • \n
\n

Credits

\n\n","download_link":"https://downloads.wordpress.org/plugin/antispam-bee.2.10.0.zip","tags":{"anti-spam":"anti-spam","antispam":"antispam","block-spam":"block spam","comment":"comment","comments":"comments"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=TD4AMD2D8EMZW","icons":{"1x":"https://ps.w.org/antispam-bee/assets/icon-128x128.png?rev=977629","2x":"https://ps.w.org/antispam-bee/assets/icon-256x256.png?rev=977629"},"wporg":true},{"name":"SimpleTOC – Table of Contents Block","slug":"simpletoc","version":"4.8","author":"Marc Tönsing","author_profile":"https://profiles.wordpress.org/marcdk","requires":"5.0","tested":"5.8","requires_php":false,"rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":24},"num_ratings":24,"support_threads":2,"support_threads_resolved":1,"active_installs":2000,"downloaded":20704,"last_updated":"2021-07-29 9:07pm GMT","added":"2020-04-14","homepage":"https://marc.tv/simpletoc-wordpress-inhaltsverzeichnis-plugin-gutenberg/","short_description":"Adds a custom Table of Contents Gutenberg block.","description":"

In Gutenberg, add a block and search for “SimpleTOC” or just “TOC”. You need to save your post before you add the block. It works by parsing the post content and retrieving the heading blocks and creates a new dynamic block with a list of links to the headings.

\n

Hide the headline “Table of Contents” and set a maximum display depth in the blocks’ sidebar configuration. Add the CSS class “simpletoc-hidden” to a heading block to remove that specific heading from the generated TOC.

\n

Features

\n
    \n
  • No javascript or css added.
  • \n
  • Designed for Gutenberg.
  • \n
  • Compatible with AMP plugins.
  • \n
  • Minimal and valid HTML output.
  • \n
  • Inherits the style of your theme.
  • \n
  • Support for column block layouts.
  • \n
  • Control the maximum depth of the headings.
  • \n
  • Choose between an ordered and unordered html list.
  • \n
  • SEO friendly: Disable the h2 heading of the TOC block and add your own.
  • \n
  • Comes with English, French, Spanish, German, and Brazilian Portuguese translations.
  • \n
  • Works with non-latin texts. Tested with Japanese and Arabic.
  • \n
  • Finds headlines in groups and reusable blocks. And in groups within reusable blocks.
  • \n
  • Rank Math support.
  • \n
\n

Credits

\n

This plugin is forked from https://github.com/pdewouters/gutentoc by pdewouters and uses code from https://github.com/shazahm1/Easy-Table-of-Contents by shazahm1

\n

Many thanks to Tom J Nowell https://tomjn.com and and Sally CJ who both helped me a lot with my questions over at wordpress.stackexchange.com

\n","download_link":"https://downloads.wordpress.org/plugin/simpletoc.4.8.zip","tags":{"amp":"amp","block":"block","gutenberg":"gutenberg","table-of-contents":"table of contents","toc":"toc"},"donate_link":"https://marc.tv/out/donate","icons":{"1x":"https://ps.w.org/simpletoc/assets/icon.svg?rev=2451408","2x":"https://ps.w.org/simpletoc/assets/icon-256x256.png?rev=2451408","svg":"https://ps.w.org/simpletoc/assets/icon.svg?rev=2451408"},"wporg":true},{"name":"Log in with Google","slug":"login-with-google","version":"1.2.1","author":"rtCamp","author_profile":"https://profiles.wordpress.org/rtcamp","requires":"5.4.2","tested":"5.7.2","requires_php":"7.3","rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":6},"num_ratings":6,"support_threads":4,"support_threads_resolved":2,"active_installs":300,"downloaded":2952,"last_updated":"2021-07-23 10:00pm GMT","added":"2020-10-01","homepage":"","short_description":"Minimal plugin that allows WordPress users to log in using Google.","description":"

Ultra minimal plugin to let your users login to WordPress applications using their Google accounts. No more remembering hefty passwords!

\n

Initial Setup

\n
    \n
  1. \n

    Create a project from Google Developers Console if none exists.

    \n
  2. \n
  3. \n

    Go to Credentials tab, then create credential for OAuth client.

    \n
      \n
    • Application type will be Web Application
    • \n
    • Add YOUR_DOMAIN/wp-login.php in Authorized redirect URIs
    • \n
    \n
  4. \n
  5. \n

    This will give you Client ID and Secret key.

    \n
  6. \n
  7. \n

    Input these values either in WP Admin > Settings > WP Google Login, or in wp-config.php using the following code snippet:

    \n

    `
    \ndefine( ‘WP_GOOGLE_LOGIN_CLIENT_ID’, ‘YOUR_GOOGLE_CLIENT_ID’ );
    \ndefine( ‘WP_GOOGLE_LOGIN_SECRET’, ‘YOUR_SECRET_KEY’ );
    \n“

    \n
  8. \n
\n

Browser support

\n

These browsers are supported. Note, for example, that One Tap Login is not supported in Safari.

\n

How to enable automatic user registration

\n

You can enable user registration either by
\n– Enabling Settings > WP Google Login > Enable Google Login Registration

\n

OR

\n
    \n
  • Adding
    \ndefine( 'WP_GOOGLE_LOGIN_USER_REGISTRATION', 'true' );
    \nin wp-config.php file.
  • \n
\n

Note: If the checkbox is ON then, it will register valid Google users even when WordPress default setting, under

\n

Settings > General Settings > Membership > Anyone can register checkbox

\n

is OFF.

\n

Restrict user registration to one or more domain(s)

\n

By default, when you enable user registration via constant WP_GOOGLE_LOGIN_USER_REGISTRATION or enable Settings > WP Google Login > Enable Google Login Registration, it will create a user for any Google login (including gmail.com users). If you are planning to use this plugin on a private, internal site, then you may like to restrict user registration to users under a single Google Suite organization. This configuration variable does that.

\n

Add your domain name, without any schema prefix and www, as the value of WP_GOOGLE_LOGIN_WHITELIST_DOMAINS constant or in the settings Settings > WP Google Login > Whitelisted Domains. You can whitelist multiple domains. Please separate domains with commas. See the below example to know how to do it via constants:

\n
`\n
\n

define( ‘WP_GOOGLE_LOGIN_WHITELIST_DOMAINS’, ‘example.com,sample.com’ );
\n `

\n

Note: If a user already exists, they will be allowed to login with Google regardless of whether their domain is whitelisted or not. Whitelisting will only prevent users from registering with email addresses from non-whitelisted domains.

\n

Hooks

\n

Filter wp_google_login_scopes
\nThis filter can be used to filter existing scope used in Google Sign in.
\nYou can ask for additional permission while user logs in.
\nThis filter will provide 1 parameter scopes in callback, which contains array of scopes.

\n

wp-config.php parameters list

\n
    \n
  • \n

    WP_GOOGLE_LOGIN_CLIENT_ID (string): Google client ID of your application.

    \n
  • \n
  • \n

    WP_GOOGLE_LOGIN_SECRET (string): Secret key of your application

    \n
  • \n
  • \n

    WP_GOOGLE_LOGIN_USER_REGISTRATION (boolean) (optional): Set true If you want to enable new user registration. By default, user registration defers to Settings > General Settings > Membership if constant is not set.

    \n
  • \n
  • \n

    WP_GOOGLE_LOGIN_WHITELIST_DOMAINS (string) (optional): Domain names, if you want to restrict login with your custom domain. By default, it will allow all domains. You can whitelist multiple domains.

    \n
  • \n
\n

BTW, We’re Hiring!

\n

\n","download_link":"https://downloads.wordpress.org/plugin/login-with-google.1.2.1.zip","tags":{"authentication":"authentication","google-login":"Google Login","oauth":"oauth","sign-in":"sign in","sso":"sso"},"donate_link":"https://rtcamp.com/","icons":{"1x":"https://ps.w.org/login-with-google/assets/icon-128x128.png?rev=2402713","2x":"https://ps.w.org/login-with-google/assets/icon-256x256.png?rev=2402713"},"wporg":true},{"name":"Search with Google","slug":"search-with-google","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://wordpress.org/plugins/search-with-google/","short_description":"

This plugin replaces the WordPress default search query with server-side results from Custom Search Site Restricted JSON API. 

\n","description":"\n\n\n

This plugin replaces the WordPress default search query with server-side results from Custom Search Site Restricted JSON API

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2020/11/searchWithGoogle-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2020/11/searchWithGoogle-372x209.jpg","svg":""},"wporg":false},{"name":"Page Builder Gutenberg Blocks – CoBlocks","slug":"coblocks","version":"2.16.0","author":"GoDaddy","author_profile":"https://profiles.wordpress.org/godaddy","requires":"5.0","tested":"5.8","requires_php":"5.6","rating":88,"ratings":{"1":7,"2":3,"3":4,"4":5,"5":63},"num_ratings":82,"support_threads":16,"support_threads_resolved":4,"active_installs":500000,"downloaded":5426664,"last_updated":"2021-08-12 8:29pm GMT","added":"2018-04-19","homepage":"","short_description":"CoBlocks is a suite of page builder WordPress blocks for Gutenberg, with 10+ new blocks and a true page builder experience with rows and columns.","description":"

CoBlocks is the most innovative collection of page building WordPress blocks for the new Gutenberg WordPress block editor.

\n

With additional blocks and true row and column building, CoBlocks gives you a true page builder experience for Gutenberg.

\n

CoBlocks is powerful but lightweight: it adds functionality to the WordPress editor without bloat. This is the plugin you’ve been waiting for, and it will make you rethink what WordPress is capable of.

\n

Make Beautiful Web Pages With Gutenberg & CoBlocks

\n

CoBlocks is the last page builder you’ll ever need: you get a winning mix of additional WordPress blocks, and page builder functionality. With CoBlocks you have everything you need to make beautiful web pages with the new block editor:

\n
    \n
  • Accordion Block
  • \n
  • Alert Block
  • \n
  • Author Profile Block
  • \n
  • Buttons Block
  • \n
  • Carousel Gallery Block
  • \n
  • Click to Tweet Block
  • \n
  • Collage Gallery Block
  • \n
  • Dynamic Separator Block
  • \n
  • Events Block (New!)
  • \n
  • Features Block
  • \n
  • Food & Drinks Block
  • \n
  • Form Block
  • \n
  • Gif Block
  • \n
  • GitHub Gist Block
  • \n
  • Hero Block
  • \n
  • Highlight Block
  • \n
  • Icon Block
  • \n
  • Logos & Badges Block
  • \n
  • Map Block
  • \n
  • Masonry Gallery Block
  • \n
  • Media Card Block
  • \n
  • Offset Gallery Block
  • \n
  • Post Carousel Block
  • \n
  • Posts Block
  • \n
  • Pricing Table Block
  • \n
  • Resizable Row/Columns Blocks
  • \n
  • Services Block
  • \n
  • Shape Divider Block
  • \n
  • Social Profiles Block
  • \n
  • Social Sharing Block
  • \n
  • Stacked Gallery Block
  • \n
\n

Breakthrough Page Builder System

\n

CoBlocks features an innovative block system that allows you to create stunning web pages, and even entire websites, with the new WordPress editor.

\n

You get the extra blocks you need and the layout and design functionality for a true page builder experience.

\n

Use the exceptional Row and Columns blocks to add dynamically generated content areas with specific responsive margin and padding settings that only CoBlocks provides.

\n

Style these with innovative new blocks such as the Shape Divider, which lets you split up your content with beautiful dividers.

\n

Each of the WordPress blocks within CoBlocks have been precisely fined tuned to offer a familiar, yet powerful, customization experience. Tailor each block to your taste using our custom controls and settings. Change fonts, set margin and padding, pick colors and more.

\n

Custom Typography Controls

\n

The breakthrough Typography Control Panel within CoBlocks lets you design web pages with alluring typographic elements. Set fonts, sizes, weights, transformations and more, in our CoBlocks blocks, and in core WordPress blocks.

\n

Free Companion Theme

\n

CoBlocks is built to show off the best of Gutenberg, but it requires a Gutenberg-first theme to unlock its full potential. We also created the free Go theme in the WordPress theme repository as the perfect companion for CoBlocks.

\n

Going Beyond Gutenberg Blocks

\n

The vision for CoBlocks is to create a suite of Gutenberg blocks to help folks make beautiful websites easily. These newest releases of CoBlocks is the ultimate expression of that vision.

\n

Built With Developers in Mind

\n

Extensible, adaptable, and open source — CoBlocks is created with theme and plugin developers in mind. If you’re interested to jump in the project, there are opportunities for developers at all levels to get involved. Contribute to CoBlocks on GitHub and join the party. 🎉

\n","download_link":"https://downloads.wordpress.org/plugin/coblocks.2.16.0.zip","tags":{"blocks":"blocks","gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","page-builder":"page builder","wordpress-blocks":"wordpress blocks"},"donate_link":"","icons":{"1x":"https://ps.w.org/coblocks/assets/icon-128x128.jpg?rev=2243972","2x":"https://ps.w.org/coblocks/assets/icon-256x256.jpg?rev=2243972"},"wporg":true},{"name":"Simple Author Box","slug":"simple-author-box","version":"2.42","author":"WebFactory Ltd","author_profile":"https://profiles.wordpress.org/webfactory","requires":"4.6","tested":"5.8","requires_php":"5.6","rating":88,"ratings":{"1":9,"2":0,"3":5,"4":8,"5":75},"num_ratings":97,"support_threads":12,"support_threads_resolved":11,"active_installs":50000,"downloaded":897638,"last_updated":"2021-08-13 8:08am GMT","added":"2014-08-08","homepage":"https://wpauthorbox.com/","short_description":"Add a responsive author box with social icons to any post. Great author box for any site!","description":"

Simple Author Box adds a responsive author box at the end of your posts, showing the author name, author gravatar and author description – author bio. It also adds over 30 social profile fields on WordPress user profile screen, allowing to display the author social icons in the author box.

\n

Main Features

\n
    \n
  • Shows author gravatar, name, website, description (author bio) and social icons
  • \n
  • Fully customizable to match your theme design (style, color, size and text options)
  • \n
  • Nice looking on desktop, laptop, tablet or mobile phones
  • \n
  • Automatically insert the author box at the end of your post
  • \n
  • Option to manually insert the author box on your template file (single.php or author.php)
  • \n
  • Simple Author Box has RTL support
  • \n
  • Simple Author Box has AMP support
  • \n
  • Great for guest posts, and guest authors
  • \n
\n

Simple Author Box Pro Features

\n
\n

Premium features only available in Simple Author Box Pro

\n
    \n
  • Change author box position to before/after content
  • \n
  • Choose whether the author’s name should link to its website/page/none
  • \n
  • Select where to show author box on
  • \n
  • Add rotate effect on author avatar hover
  • \n
  • Option to open author website link in a new tab
  • \n
  • Option to add “nofollow” attribute on author website link
  • \n
  • Choose the author website’s position: right/left
  • \n
  • Social icons type, style, rotate effect, shadow effect, thin border
  • \n
  • Option to change the color palette
  • \n
  • Choose the font and font sizes for the author’s job title, website, name, and description
  • \n
  • Enable guest authors and co-authors
  • \n
  • Option to use guest authors as co-authors
  • \n
  • Top authors widget – displays the most popular authors based of comments
  • \n
  • Simple author box widget – displays the users selected
  • \n
\n
\n

Read more about the Simple Author Box advanced features.

\n","download_link":"https://downloads.wordpress.org/plugin/simple-author-box.2.42.zip","tags":{"author-bio":"author bio","author-box":"author box","author-profile-fields":"author profile fields","author-social-icons":"author social icons","responsive-author-box":"responsive author box"},"donate_link":"","icons":{"1x":"https://ps.w.org/simple-author-box/assets/icon-128x128.jpg?rev=1821054"},"wporg":true},{"name":"Genesis Blocks","slug":"genesis-blocks","version":"1.2.5","author":"StudioPress","author_profile":"https://profiles.wordpress.org/studiopress","requires":"5.3","tested":"5.8","requires_php":"7.1","rating":90,"ratings":{"1":1,"2":0,"3":1,"4":0,"5":10},"num_ratings":12,"support_threads":11,"support_threads_resolved":4,"active_installs":40000,"downloaded":195792,"last_updated":"2021-07-20 6:30pm GMT","added":"2020-08-25","homepage":"https://studiopress.com/genesis-pro/","short_description":"A collection of content blocks, sections, & full-page layouts for the block editor.","description":"

Genesis Blocks is a collection of page building blocks for the Gutenberg block editor. Building pages with the block editor and Genesis Blocks gives you more control to quickly create and launch any kind of site you want!

\n

Installing the customizable Genesis Blocks plugin adds a collection of beautiful, site-building blocks to help you customize page layouts, increase engagement, and get results for your business. Genesis Blocks provides everything from customizable buttons, to beautifully-designed page sections and full-page layout designs via the Section & Layout block.

\n

Along with the blocks themselves, Genesis Blocks extends the content creation experience by providing a library of page sections and full-page layouts, all available from within the block editor.

\n

Create compelling content faster.

\n

Create and use content quickly with prebuilt and custom content sections and full-page layouts.

\n

Enhance the Gutenberg editor.

\n

Additional content blocks and the layout selector make it easy to get the most value out of the block-based editor.

\n

Genesis Blocks currently includes the following blocks to help you build content and pages quickly and effortlessly:

\n
    \n
  • Section & Layout Block
  • \n
  • Advanced Columns Block
  • \n
  • Newsletter Block
  • \n
  • Pricing Block
  • \n
  • Post Grid Block
  • \n
  • Container Block
  • \n
  • Testimonial Block
  • \n
  • Inline Notice Block
  • \n
  • Accordion Block
  • \n
  • Share Icons Block
  • \n
  • Call-To-Action Block
  • \n
  • Customizable Button Block
  • \n
  • Spacer & Divider Block
  • \n
  • Author Profile Block
  • \n
  • Drop Cap Block
  • \n
\n

Do more with Genesis Pro

\n

For those wanting to level-up with Genesis Blocks, a Genesis Pro subscription brings even richer tooling and a bigger library of sections and layouts.

\n
    \n
  • 2 new blocks (more coming soon)
  • \n
  • 26 pre-built full-page layouts
  • \n
  • 56 pre-built sections
  • \n
  • Save & reuse your own sections & layouts
  • \n
  • Advanced block-level user permissions
  • \n
  • Access to and support for Genesis Framework & all of our 35 StudioPress-made premium child themes.
  • \n
  • Additional advanced features for the rest of the Genesis Product Suite
  • \n
\n

Genesis Pro includes even more value for modern WordPress content creators, marketers, and developers. Learn more about Genesis Pro here.

\n

Google AMP Support

\n

The Accelerated Mobile Pages (AMP) project is a publishing format created by Google to enhance site performance for mobile website users. AMP pages are specially designed for Google search users to quickly load website pages without using any extraneous data. Genesis Blocks has support for AMP built into each block!

\n

Help & Docs

\n

User and developer docs for Genesis Blocks can be found here.

\n","download_link":"https://downloads.wordpress.org/plugin/genesis-blocks.1.2.5.zip","tags":{"blocks":"blocks","editor":"editor","gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","page-builder":"page builder"},"donate_link":"https://studiopress.com","icons":{"1x":"https://ps.w.org/genesis-blocks/assets/icon-128x128.png?rev=2368839","2x":"https://ps.w.org/genesis-blocks/assets/icon-256x256.png?rev=2368840"},"wporg":true},{"name":"MathML Block","slug":"mathml-block","version":"1.2.0","author":"adamsilverstein","author_profile":"https://profiles.wordpress.org/adamsilverstein","requires":"5.0","tested":"5.5.5","requires_php":"5.6","rating":90,"ratings":{"1":0,"2":0,"3":0,"4":1,"5":1},"num_ratings":2,"support_threads":1,"support_threads_resolved":0,"active_installs":500,"downloaded":7397,"last_updated":"2020-10-01 11:05pm GMT","added":"2018-12-28","homepage":"","short_description":"A MathML block for the WordPress block editor (Gutenberg).","description":"

A MathML block for the WordPress block editor (Gutenberg).
\nRequires PHP 5.4+ and WordPress 5.0+.

\n

Development takes place on the GitHub repository: https://github.com/adamsilverstein/mathml-block.

\n

Screencast: https://cl.ly/c0f6bbfbc3b1

\n

What is MathML?

\n

Mathematical Markup Language is a mathematical markup language, an application of XML for describing mathematical notations and capturing both its structure and content. It aims at integrating mathematical formulae into World Wide Web pages and other documents.

\n

The MathML block uses MathJax to render MathML formulas in the editor and on the front end of a website. MathJax (https://www.mathjax.org/) is A JavaScript display engine for mathematics that works in all browsers.

\n

To test a MathML block and enter a formula, for example: \\[x = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}\\].

\n

To test using math formulas inline, type an formula into a block of text, select it and hit the ‘M’ icon in the control bar. For example: \\( \\cos(θ+φ)=\\cos(θ)\\cos(φ)−\\sin(θ)\\sin(φ) \\). Note: if you are copying and pasting formulas into the rich text editor, switching to HTML/code editor mode is less likely to reformat your pasted formula.

\n

This plugin is compatible with the official AMP plugin by rendering amp-mathml on AMP pages.

\n

Technical Notes

\n
    \n
  • Requires PHP 5.6+.
  • \n
  • Requires WordPress 5.0+.
  • \n
  • Issues and Pull requests welcome on the GitHub repository: https://github.com/adamsilverstein/mathml-block.
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/mathml-block.zip","tags":{"block":"block","block-editor":"block-editor","gutenberg":"gutenberg","math":"math","mathml":"mathml"},"donate_link":"","icons":{"1x":"https://ps.w.org/mathml-block/assets/icon-128x128.png?rev=2002452","2x":"https://ps.w.org/mathml-block/assets/icon-256x256.png?rev=2002452"},"wporg":true},{"name":"Calculated Fields Form","slug":"calculated-fields-form","version":"1.1.15","author":"CodePeople","author_profile":"https://profiles.wordpress.org/codepeople","requires":"3.0.5","tested":"5.8","requires_php":false,"rating":96,"ratings":{"1":20,"2":2,"3":4,"4":26,"5":675},"num_ratings":727,"support_threads":102,"support_threads_resolved":101,"active_installs":60000,"downloaded":3481554,"last_updated":"2021-09-06 2:13pm GMT","added":"2013-03-12","homepage":"https://cff.dwbooster.com","short_description":"Calculated Fields Form allows you to create both simple and rich forms, quickly like a professional. It includes a form builder with dynamic calculate …","description":"

The “Calculated Fields Form” plugin allows you to create web forms with calculated fields, whose values are dynamically calculated based on other fields’ values in the web form.

\n

The possibilities are unlimited. For example, you can create forms with financial calculations, date operations to create reservation forms, and calculate the product prices. The plugin includes text operations for editing, translation, or advertising services. There are more advanced operations available such as determining the distance between addresses or generating graphs. The resulting forms are 100% mobile responsive.

\n

The most impressive thing is that you don’t need to hire a programmer to create the forms. With basic knowledge, you will have a professional form in just five minutes.

\n

Creating a form is all visual. The “Calculated Fields Form” plugin includes a form editor with multiple controls. Such as text fields, numeric fields, currency fields, slider controls, email fields, radio buttons, checkboxes, container fields, page breaks to create multipage forms, and most importantly, calculated fields.

\n

The form editor includes a list of controls, a property bar to easily edit field properties, a dashboard where you can design your forms, and the attributes for form configuration. Also, the plugin comes with multiple predefined layouts to change the forms’ appearance. If there are not enough predefined layouts for your project, there is a style editor to customize the form’s design.

\n

The “Calculated Fields Form” plugin includes integration with popular page builders:

\n
    \n
  • Classic WordPress Editor
  • \n
  • Gutenberg Editor
  • \n
  • Elementor
  • \n
  • Page Builder by SiteOrigin
  • \n
  • Beaver Builder
  • \n
  • WPBakery Page Builder
  • \n
  • DIVI Builder
  • \n
\n

For other editors, it is possible to insert the form into the pages via its shortcode. Each web form has an associated shortcode that allows you to insert it wherever you want.

\n

Features

\n

Main features:

\n
    \n
  • Visual form builder with an intuitive and interactive interface.
  • \n
  • Includes general-purpose controls such as radio buttons, checkboxes, menu lists, date fields, slider controls, numeric fields, text currency fields, etc.
  • \n
  • Includes calculated fields whose values result from operations involving other form fields.
    \nInsert as many calculated fields in the form as you need.
  • \n
  • Contains an advanced formula editor associated with the calculated fields with syntax highlighting and error detection.
  • \n
  • Features many operations modules: mathematical operations, operations with dates, financial operations, distance operations, text management, operations for calling remote services, etc. The calculated fields can identify numbers and prices within the values of the fields.
  • \n
  • Distributed with several predefined forms that you can use as a starting point for your projects.
  • \n
  • Includes several design templates.
  • \n
  • Supports multi-pages forms by inserting page break controls between fields belonging to different pages.
  • \n
  • Allows the grouping of fields inside container controls (Div and Fieldset).
  • \n
  • Possible to define dependency rules between fields in the form, which is very useful in the design of wizards.
  • \n
\n

Other features:

\n
    \n
  • From the plugin configuration page, it is possible to duplicate a form by pressing the “Clone” button associated with it. By cloning a form, you can reuse the work already done.
  • \n
  • Includes a troubleshooting and optimization area.
  • \n
  • Allows you to disable forms in the indexing process to improve the speed of the website.
  • \n
  • Includes a version control in the forms to recover previous versions.
  • \n
\n

Predefined forms:

\n

“Calculated Fields Form” is distributed with five predefined sample forms.

\n
    \n
  1. Simple Calculator Operations
  2. \n
  3. Calculation with Dates (bookings with check-in and check-out dates)
  4. \n
  5. Ideal Weight Calculator
  6. \n
  7. Pregnancy Calculator
  8. \n
  9. Lease Calculator
  10. \n
\n

You can clone a sample form to implement your project, or create a new form from scratch.

\n
\n

Calculated Fields Form Commercial
\n The free version of the “Calculated Fields Form” plugin includes only basic functionality. Other distributions (Professional, Developer, and Platinum) are available with advanced functionalities, such as sending notification emails, integration with payment gateways and external services, controls for database’s connection (and connection to other data sources), complex operations, and many other features.

\n
\n

Features of the Profesional version:

\n
    \n
  • Includes all the features of the free version of the plugin.
  • \n
  • Submit the data collected by the forms and store it on the website for review.
  • \n
  • Send notification emails with the data collected by the form, as well as confirmation emails to the users.
  • \n
  • Integrate the form with PayPal and calculate the amount to be charged through a calculated field.
    \nPayments allow SCA (strong customer authentication), compatible with the new payment services (PSD 2) – Directive (EU).
  • \n
  • Export and import forms between different WordPress sites.
  • \n
  • Different mechanisms to protect forms, such as captcha, WordPress nonces, and honeypot fields.
  • \n
  • Associate “Thank You” page with the form, where you can show a summary of the form’s submission.
  • \n
  • Dashboard widget to show the last week’s submissions.
  • \n
  • Cache the forms to increase the rendering speed.
  • \n
  • Export the information submitted by the forms to a CSV file and use it with third-party tools such as Excel, OpenOffice, LibreOffice, or any other spreadsheet editor.
  • \n
\n

Features of the Developer version:

\n\n

Includes add-ons to extend the form features and make use of third-party plugins and external services

\n
    \n
  • Server-Side Equations add-on: define server-side equations.
  • \n
  • Verification Code add-on: verifies the user’s email by sending him a verification code and blocking the form’s submission until the verification code is entered.
  • \n
  • WooCommerce add-on: integrate forms with WooCommerce products and calculate their prices, dimensions, and weight at the runtime.
  • \n
  • SalesForce add-on: integrate the form with the SalesForce service.
  • \n
  • WebHooks add-on: send the information collected by the form to a WebHook URL to open countless possibilities. By connecting your form to services such as Zapier, Microsoft Flow, IFTTT, Workato, and others, you can connect to hundreds of third-party services (e.g. Zoho CRM, Dropbox, Mailchimp, Google Drive, Facebook, Twitter, etc.).
  • \n
  • User Permissions add-on: control the forms’ access, as well as allowing users to access and edit their data.
  • \n
  • User Registration Form add-on: build a user registration form that captures the user’s basic information and metadata.
  • \n
  • reCAPTCHA add-on: replace the basic captcha with Google reCAPTCHA to protect the forms.
  • \n
\n

Features of the Platinum version:

\n
    \n
  • Includes all the features of free, Professional, and Developer versions of the plugin.
  • \n
  • Unique Fields Values add-on: verifies that the values entered by users have not been used in previous submissions.
  • \n
  • Easy Digital Downloads add-on: integrate the forms into Easy Digital Downloads products and calculate their prices at the runtime.
  • \n
  • Google Analytics add-on: generate usage reports in “Google Analytics” for the users’ actions.
  • \n
  • PayPal Pro add-on: enable the payer’s credit card details to be entered directly through the website without any redirection to the PayPal website.
  • \n
  • Upload Files add-on: add uploaded files to the media library and extend the file types accepted by WordPress.
  • \n
  • DropBox Integration add-on: copy or move the uploaded files to a DropBox account.
  • \n
  • ip2location add-on: identify the users’ data using the ip2location databases.
  • \n
  • Google Places add-on: transform form fields into autocomplete address fields.
  • \n
  • Autocomplete Places add-on: transform form fields into autocomplete address fields by using the Photon API.
  • \n
  • Signature add-on: convert form fields into “Signature” fields, allowing the users to sign the form with a mouse or touchscreen.
  • \n
  • iCal add-on: send iCal file in the notification emails to import the events into most popular calendars like Outlook and Google Calendar.
  • \n
  • CSV Generator add-on: export the information collected by the form to CSV files and attach these to the notification emails.
  • \n
  • PDF Generator add-on: generate PDF files with the information collected by the forms and attach them to the notification emails.
  • \n
  • WebMerge add-on: integrate the forms with FormStack documents (formerly WebMerge) to generate PDF and Office documents at runtime with the information collected by the web forms.
  • \n
  • PrintFriendly add-on: generate PDF files with the PrintFriendly API and attach the resulting files to the notification emails.
  • \n
  • Mailchimp add-on: add new members to the MailChimp account.
  • \n
  • Mautic add-on: add new contacts (or update existing ones) into the Mautic Service.
  • \n
  • HubSpot add-on: add/update contacts in HubSpot, using the information collected by the form.
  • \n
  • Emma add-on: add new members to the Emma service.
  • \n
  • Twilio add-on: send notification messages (SMS) in the forms’ submissions.
  • \n
  • MailPoet add-on: add new subscribers to MailPoet’s Mailing Lists (MailPoet versions 2 and 3).
  • \n
  • AffiliateWP add-on: integrate the forms with the AffiliateWP plugin.
  • \n
  • Authorize.Net add-on: accept payments via Authorize.Net from the form.
  • \n
  • Stripe add-on: accept payments via the Stripe payment gateway from the form.
  • \n
  • Skrill Payments Integration add-on: integrate with the Skrill Moneybookers payment gateway.
  • \n
  • TargetPay (iDeal) add-on add-on: integrate with iDeal, the popular Dutch payment method.
  • \n
  • Mollie (iDeal) add-on: accept payments via iDeal.
  • \n
  • RedSys / Servired / Sermepa add-on provides: a secure interface for accepting credit card payments from most banks in Spain.
  • \n
  • PayTM add-on: a secure interface for accepting payments with credit cards, debit cards, net banking, wallets, and EMI.
  • \n
  • SagePay add-on: a secure interface for accepting payments via SagePay.
  • \n
  • Sage Payment add-on: a secure interface for accepting payments through a secure SSL checkout system for both bankcard and virtual check transactions.
  • \n
\n

Please keep the plugin updated. Updates contain bug fixes as well as new features. The WordPress directory distributes the updates for the free version of the plugin. But for commercial versions, it would be necessary to register your copy of the plugin. The following link describes the registration process: CLICK HEREThis section mainly contains notes on features of the form builder that are too detailed to include in the main description.

\n

Conditional rules

\n

It is possible to show or hide form fields (dependent fields) based on the options selected in checkbox fields, radio buttons, the options selected in dropdown menus, or the result of calculated fields.

\n

The value of a dependent field is zero when it is hidden/disabled. The plugin excludes the disabled form fields from the submission.

\n

Additional details about the use of dependencies

\n

Predefined values

\n

The predefined values in the fields have two possible uses:

\n

1- To fill the field by default. This makes it easier for the end-user to enter values.

\n

2- Hint of the values to be entered in the field (like “Enter your name”). To use the predefined value as a placeholder, you must tick the “Hide predefined value on click” checkbox. The value will disappear once the user starts filling in the field. The calculated fields’ equations ignore placeholders.

\n

The “User Instructions” attribute

\n

The “User instructions” attribute in the field settings allows you to instruct the user on how to fill in the field. By default, the instructions appear as smaller text on the public website. But they can be configured as tooltips.

\n

Adding CSS layout keywords

\n

The “Add CSS layout keywords” attribute in the fields settings allows you to apply CSS styles to fields. You must only enter the name of the CSS class names, and not their definitions.

\n

You can define the CSS classes via the “Customize Form Design” attribute in the “Form Settings” tab. This attribute contains a CSS editor with syntax highlighting and error checking.

\n

If you want to assign several class names to the field, separate them by space characters.

\n

The plugin includes multiple predefined classes that you can assign to the form fields.

\n

More information about the form’s design can be found by reading the following post in the plugin’s blog:

\n

Customizing the form’s design

\n

The classes listed below allow you to align two, three, or four fields on the same line:

\n
column2\ncolumn3\ncolumn4\n
\n

For example, if you want to put two fields on the same line, give both fields the class name “column2”.

\n

There are other variants for displaying several fields on the same line, such as container fields (Div or Fieldset). Container fields allow you to select the number of columns in your configuration. The following post describes all the alternatives for positioning the fields in the form:

\n

Formatting the form (distributing the fields in columns)

\n

Multi-page form

\n

To create multi-page forms, you must insert “Page break” controls between fields belonging to different pages.

\n

When the user presses the “Next Page” button, the plugin validates the fields in the current form. If there is any validation error (such as an unfilled required field), the plugin stops the “Next page” action.

\n

Hidden calculated fields

\n

Calculated fields include a checkbox in the configuration that allows them to be hidden from the public website. This feature is essential in those fields that are used to calculate intermediate values or when we want to show the results only in emails or thank you pages.

\n

Equation / Formula format for calculated fields

\n

Below, some possible formulas are included as examples, but the possibilities are endless.

\n
    \n
  • \n

    With simple mathematical operations:

    \n
    fieldname1 + fieldname2\n\nfieldname1 * fieldname2\n\nfieldname1 / fieldname2\n\nfieldname1 - fieldname2\n\nfieldname1 - fieldname2\n
    \n
  • \n
  • \n

    With mathematical operations involving multiple fields and grouped fields:

    \n
    fieldname1 * (fieldname2 + fieldname3)\n
    \n
  • \n
  • \n

    With rounding operations. Round the result to two decimal places:

    \n
    PREC(fieldname2 / fieldname3, 2)\n
    \n
  • \n
  • \n

    There are infinite number of formulas that can be created using complex structures. For example, the following formula includes conditional statements:

    \n
    (function () {\nif (100 < fieldname3) return fieldname1 + fieldname2;\nif (fieldname3 <= 100) return fieldname1 * fieldname2;\n})();\n
    \n
  • \n
  • \n

    For complex formulas/equations you must use the function format with return statement to return the result to the calculated field:

    \n
     (function () {\n    var result = 0;\n    /* Your code here */\n    return result;\n}) ();\n
    \n
  • \n
\n

Operations and operators to use in equations/formulas

\n

One of the “Calculated Fields Form” strengths is the ability to use any valid JavaScript code to implement the equations/formulas.

\n

However, the plugin includes a wide variety of operations and operators to simplify the development process.

\n

Mathematical Operations and Operators

\n

Conditional Operations

\n

Field Handling Operations

\n

Operations for interacting with external services

\n

Operations for handling URLs and query strings

\n

In addition to the operation modules listed above, the Developer and Platinum versions of the plugin include additional modules:

\n

Date Time Operations

\n

Financial Operations

\n

Distance and Travel Time Operations

\n

Operations to generate charts

\n

Controls available in the form generator of the “Calculated Fields Form”

\n

The complete list of controls is available from this link: CLICK HERE

\n

Create JavaScript variables from parameters received by “GET” or “POST”, “SESSION” variables, or “COOKIES” to use in the equations

\n

The plugin includes the shortcode [CP_CALCULATED_FIELDS_VAR] to generate JavaScript variables from parameters received by “GET” or “POST”, “SESSION” variables, or “COOKIES”:

\n
[CP_CALCULATED_FIELDS_VAR name=\"...\"]\n
\n

In the shortcode, you must replace the “…” symbols with the name of the parameter or variable. It will be the same name for the JavaScript variable.

\n

For example:

\n
[CP_CALCULATED_FIELDS_VAR name=\"varname\"]\n
\n

You can use the variables generated through the shortcode [CP_CALCULATED_FIELDS_VAR] in the formulas of the calculated fields: fieldname1*varname

\n

The complete list of parameters accepted by the variables shortcode is available at the following link: CLICK HERE

\n

Tips for calculating prices

\n

One of the most frequent uses of our plugin is for price calculation. When displaying the price of a product, you may want to split the form into two pages. The first page would request the information needed to calculate the price, and the second page would include the calculated field with the final price. Also, you could use the “Instruct. Text” fields to indicate the terms, conditions, and validity period of the offer.

\n

Note that you can make the “Instruct. Text” fields dependent on the calculated value. This allows you to vary the text displayed to the user depending on the calculated price, as the terms, conditions, or offers often depend on the transaction amount.

\n

Add-ons

\n

The add-ons are only distributed with the Developer and Platinum versions of the plugin.

\n

The plugin lists the add ons in the “Add-ons area” of the settings page. To enable the add-ons, you must tick their corresponding checkbox and press the “Activate/Deactivate Add-ons” button.

\n

Server-Side Equations add-on – included in the Developer and Platinum versions of the plugin

\n

Define equations with PHP code on the server-side. The calculated fields call the server-side equations via AJAX.

\n

CLICK HERE for additional information

\n

Verification Code add-on – included in the Developer and Platinum versions of the plugin

\n

The “Verification Code” add-on allows verifying the users’ emails by sending a verification code and blocking the form’s submission until a valid code is entered.

\n

CLICK HERE for additional information

\n

Unique Fields Values add-on – included in the Platinum version of the plugin

\n

The “Unique Fields Values” add-on verifies that the values entered by users have not been used in previous submissions. It allows to enter simple and complex verification rules (one or multiple fields separated by comma symbols).

\n

CLICK HERE for additional information

\n

WooCommerce add-on – included in the Developer and Platinum versions of the plugin

\n

Integrate the forms created by the “Calculated Fields Form” with WooCommerce products and calculate their prices, weights, dimensions, and more at the runtime.

\n

CLICK HERE for additional information

\n

Easy Digital Downloads add-on – included in the Platinum version of the plugin

\n

Integrate forms created by the “Calculated Fields Form” with the Easy Digital Downloads products, and calculate their price dynamically at the runtime.

\n

CLICK HERE for additional information

\n

SalesForce add-on – included in the Developer and Platinum versions of the plugin

\n

Add new leads to a SalesForce account using the data collected by the forms.

\n

CLICK HERE for additional information

\n

WebHook add-on – included in the Developer and Platinum versions of the plugin

\n

Post the information collected by the forms to WebHook URLs.

\n

Through connecting the forms created by the plugin with services like Zapier, Microsoft Flow, Workato, or IFTTT (and many others), you will have access to hundreds of third-party services, like Zoho CRM, Dropbox, Mailchimp, Evernote, Google Drive, Facebook, Twitter, and more than 300 services https://zapier.com/zapbook/apps/, https://flow.microsoft.com/, https://ifttt.com/discover

\n

CLICK HERE for additional information

\n

User Permissions add-on – included in the Developer and Platinum versions of the plugin

\n

Control access to forms. Access can be restricted to registered users, users with certain roles, or to specific users.

\n

The add-on adds a new shortcode to the plugin to list the data submitted by the logged-in user (it is possible to insert the new shortcode into the user’s profile) and assign user permissions to edit their information or delete an entry.

\n

Limit the number of submissions (e.g. one submission per form/user).

\n

CLICK HERE for additional information

\n

User Registration Form add-on – included in the Developer and Platinum versions of the plugin

\n

Build user registration forms. The form can collect basic user information and metadata required by other plugins.

\n

CLICK HERE for additional information

\n

reCAPTCHA add-on – included in the Developer and Platinum versions of the plugin

\n

Protect forms using Google reCAPTCHA instead of the basic captcha distributed with the plugin, as reCAPTCHA is more visual and intuitive than traditional captchas.

\n

CLICK HERE for additional information

\n

Google Analytics add-on – included in the Platinum version of the plugin

\n

Generate usage reports in “Google Analytics” for the users’ actions.

\n

CLICK HERE for additional information

\n

PayPal Pro add-on – included in the Platinum version of the plugin

\n

Allow the user to enter their credit card details directly on your website without redirecting them to the PayPal website. Once the user has filled the form fields and clicked the submit button, the payment is processed and the posted data (excluding the credit card information) is stored in the WordPress database.

\n

CLICK HERE for additional information

\n

Upload Files add-on – included in the Platinum version of the plugin

\n

Every commercial version of the plugin includes the “Upload File” control to upload files from the form. However, the “Upload Files” add-on allows the uploaded files to be added to the Media Library and be accessed from the pages and posts of the website.

\n

WordPress restricts the file types that can be uploaded. The “Uploads Files” add-on allows the list of accepted files to be extended.

\n

CLICK HERE for additional information

\n

DropBox Integration add-on – included in the Platinum version of the plugin

\n

Copy or move files uploaded through the forms to a DropBox account.

\n

CLICK HERE for additional information

\n

ip2location add-on – included in the Platinum version of the plugin

\n

Use the ip2location databases to identify additional user information based on their IP. Address such as country, city, coordinates, weather station, time zone, ZIP code, etc.

\n

CLICK HERE for additional information

\n

Google Places add-on – included in the Platinum version of the plugin

\n

Transform fields into autocomplete address fields calling the Google Places API.

\n

CLICK HERE for additional information

\n

Autocomplete Places add-on – included in the Platinum version of the plugin

\n

Transform fields into autocomplete address fields by calling the Photon API.

\n

CLICK HERE for additional information

\n

Signature add-on – included in the Platinum version of the plugin

\n

Transform fields into “Signature” fields to allow the users to sign the form with their mouse or touchscreens.

\n

CLICK HERE for additional information

\n

iCal add-on – included in the Platinum version of the plugin

\n

Send the users iCal files attached to the confirmation emails to import events into the most popular calendars like Outlook and Google Calendar.

\n

CLICK HERE for additional information

\n

CSV Generator add-on – included in the Platinum version of the plugin

\n

Export the information collected by the form to CSV files and attach them to the notification emails.

\n

CLICK HERE for additional information

\n

PDF Generator add-on – included in the Platinum version of the plugin

\n

An experimental add-on that generates PDF files with the information collected by the forms and attaches them to the notification emails.

\n

CLICK HERE for additional information

\n

WebMerge add-on – included in the Platinum version of the plugin

\n

Integrate the forms with the FormStack Documents service (formerly WebMerge) to generate PDF and Office documents with the information collected from the form.

\n

CLICK HERE for additional information

\n

Integrate the form with the Silverpop service (now: IBM Watson Campaign Automation) CLICK HERE for additional information

\n

PrintFriendly add-on – included in the Platinum version of the plugin

\n

Send the information collected by the forms to PrintFriendly and attach the resulting PDF files to the notification emails.

\n

CLICK HERE for additional information

\n

Mailchimp add-on – included in the Platinum version of the plugin

\n

Add new members to the MailChimp lists with the information collected by the form.

\n

CLICK HERE for additional information

\n

Mautic add-on – included in the Platinum version of the plugin

\n

Add/update contacts in the Mautic service with information collected by the forms.

\n

CLICK HERE for additional information

\n

HubSpot add-on – included in the Platinum version of the plugin

\n

Add/update HubSpot contacts with information collected by the forms.

\n

CLICK HERE for additional information

\n

Emma add-on – included in the Platinum version of the plugin

\n

Connect the forms to the Emma service to add new members to Emma groups.

\n

CLICK HERE for additional information

\n

Twilio add-on – included in the Platinum version of the plugin

\n

Send notification messages (SMS) through Twilio in the form’s submissions.

\n

CLICK HERE for additional information

\n

MailPoet add-on – included in the Platinum version of the plugin

\n

Adds subscribers to MailPoet Mailing Lists (MailPoet versions 2 and 3).

\n

CLICK HERE for additional information

\n

AffiliateWP add-on – included in the Platinum version of the plugin

\n

Integrate the forms with the “AffiliateWP” plugin.

\n

CLICK HERE for additional information

\n

Authorize.Net add-on – included in the Platinum version of the plugin

\n

The Authorize.net Server Integration Method (Authorize.net SIM) is a hosted payment processing solution that handles all of the steps in processing a transaction.

\n

CLICK HERE for additional information

\n

Stripe add-on – included in the Platinum version of the plugin

\n

The Stripe Payments add-on (www.stripe.com) provides a way to accept all major cards from customers around the world.

\n

CLICK HERE for additional information

\n

Skrill Payments Integration add-on – included in the Platinum version of the plugin

\n

An interface for accepting payments through secure pages.

\n

You can accept cards, more than 20 local payment methods, and over 80 direct bank transfer connections with a single integration.

\n

CLICK HERE for additional information

\n

TargetPay (iDeal) add-on – included in the Platinum version of the plugin

\n

Integrate with iDeal, the most popular Dutch payment method. The integration is made via TargetPay: https://www.targetpay.com/info/ideal?setlang=en

\n

CLICK HERE for additional information

\n

Mollie (iDeal) add-on – included in the Platinum version of the plugin

\n

Integrate with iDeal, the popular Dutch payment method.

\n

CLICK HERE for additional information

\n

RedSys / Servired / Sermepa add-on – included in the Platinum version of the plugin

\n

A secure interface for accepting credit card payments through most banks in Spain (Sabadell, Banco Popular, BBVA, Santander, Bankia-Caixa, Bankinter, etc.)

\n

CLICK HERE for additional information

\n

PayTM add-on – included in the Platinum version of the plugin

\n

A secure interface for accepting payments through credit cards, debit cards, net banking, wallets, and EMI. With over 100 million PayTM users in India, your customers will appreciate the option to pay with their trusted PayTM Wallet.

\n

CLICK HERE for additional information

\n

SagePay add-on – included in the Platinum version of the plugin

\n

A secure interface for accepting payments through SagePay.

\n

CLICK HERE for additional information

\n

Sage Payment add-on – included in the Platinum version of the plugin

\n

An interface for accepting payments through a secure SSL-checkout system for both bank cards and virtual check transactions. All authorized and approved transactions will be delivered to your current bank card and/or virtual check batches, viewable within the Virtual Terminal for order processing and settlement.

\n

CLICK HERE for additional information

\n","download_link":"https://downloads.wordpress.org/plugin/calculated-fields-form.zip","tags":{"calculator":"calculator","contact-form":"contact form","form":"form","form-builder":"form builder","quote-form":"quote form"},"donate_link":"http://cff.dwbooster.com","icons":{"1x":"https://ps.w.org/calculated-fields-form/assets/icon-128x128.jpg?rev=1734377","2x":"https://ps.w.org/calculated-fields-form/assets/icon-256x256.jpg?rev=1734377"},"wporg":true},{"name":"All in One SEO – Best WordPress SEO Plugin – Easily Improve SEO Rankings & Increase Traffic","slug":"all-in-one-seo-pack","version":"4.1.3.3","author":"All in One SEO Team","author_profile":"https://profiles.wordpress.org/smub","requires":"4.9","tested":"5.8","requires_php":"5.4","rating":90,"ratings":{"1":163,"2":21,"3":15,"4":58,"5":1499},"num_ratings":1756,"support_threads":124,"support_threads_resolved":114,"active_installs":2000000,"downloaded":83004263,"last_updated":"2021-08-16 1:02pm GMT","added":"2007-03-30","homepage":"https://aioseo.com/","short_description":"The original WordPress SEO plugin. Improve your WordPress SEO rankings and traffic with our comprehensive SEO tools and smart SEO optimizations.","description":"

AIOSEO – The Best WordPress SEO Plugin & Toolkit

\n

All in One SEO for WordPress is the original WordPress SEO plugin started in 2007. Over 2 million smart website owners use AIOSEO to properly setup WordPress SEO, so their websites can rank higher in search engines.

\n

We believe you shouldn’t have to hire an SEO expert or developer to properly setup WordPress SEO. That’s why we built AIOSEO as the most comprehensive WordPress SEO plugin and marketing toolkit, so you can improve your website’s SEO rankings and uncover new SEO growth opportunities in less than 10 minutes.

\n

At All in One SEO (AIOSEO), user experience is our #1 priority. From website SEO setup to ongoing SEO optimization, our team of SEO experts have created easy to follow SEO workflows that will help you outrank your competitors in search results. This is why many industry leaders award AIOSEO as the most beginner friendly WordPress SEO plugin that’s both EASY and POWERFUL!

\n

AIOSEO’s WordPress SEO plugin features are highly optimized for Google and other popular search engine algorithm because we follow the most up to date SEO standards and SEO best practices. We can honestly say that AIOSEO is the best WordPress SEO plugin in the world.

\n
\n

AIOSEO Pro
\n This plugin is the lite version of the All in One WordPress SEO Pro plugin that comes with all the SEO features you will ever need to rank higher in search engines including smart SEO schema markup, advanced SEO modules, powerful SEO sitemap suite, local SEO module, Google AMP SEO, WooCommerce SEO, and tons more. Click here to purchase the best premium WordPress SEO plugin now!

\n
\n

We took the pain out of optimizing WordPress SEO and made it easy. Here’s why smart business owners, SEO experts, marketers, and developers love AIOSEO, and you will too!

\n

\n

Properly Setup WordPress SEO (without Hiring an Expert)

\n

AIOSEO makes it easy to setup WordPress SEO, the RIGHT WAY. Our smart WordPress SEO setup wizard helps you optimize your website’s SEO settings based on your unique industry needs.

\n

In less than 10 minutes, you will be able to setup all the advanced WordPress SEO features like XML sitemaps, optimized search appearance, SEO meta title, SEO meta description, SEO keywords, Open Graph SEO Knowledge Panel information, social media integration, SEO search console / webmaster tool connections, local SEO, schema markup for SEO, and more.

\n

But don’t just take our word. See what another website owner like yourself is saying:

\n
\n

Swift, honest, full control. After all these years and having used almost every WP SEO plugin I’m amazed by AIOSEO’s depth, simplicity and fast workflow ❤️
\n @aaronbol

\n
\n

Optimize Your Pages for Higher SEO Rankings with TruSEO Analysis

\n

Creating SEO optimized content used to be hard. Why?

\n

Because most business owners aren’t SEO experts.

\n

That’s why we created the TruSEO score. This gives you a more in-depth SEO optimization analysis and an actionable SEO checklist, so you can easily optimize your website pages for any keyword to get higher SEO rankings and maximum traffic.

\n

Our SEO content analysis tool is enabled by default in both the Gutenberg block editor and Classic Editor, so you can quickly optimize your blog posts and pages for your SEO keywords to get higher SEO rankings.

\n

Our SEO readability analysis gives you further insights on how to improve your content for maximum SEO benefits.

\n

The best part about TruSEO analysis is that you can use it to optimize your posts / pages for unlimited SEO keywords.

\n

Seamless SEO Integrations with Webmaster Tools & Social Media

\n

All in One SEO for WordPress offers seamless integration with popular social media platforms like Facebook, Twitter, Pinterest, YouTube, LinkedIn, Instagram, and more.

\n

This ensures that your website preview is optimized for both search engines (SEO), and social media networks.

\n

AIOSEO also makes it easy to connect your website with Google Search Console, Bing webmaster tools, Yandex webmaster tools, Baidu webmaster tools, Google Analytics, and all other SEO webmaster tools.

\n

This helps you easily measure your SEO results and progress.

\n
\n

I’m a professional SEO and used many tools and extensions. Regarding simplicity, individuality and configurability All in One SEO Pro is by far the best SEO plugin out there for WordPress.
\n Joel Steinmann

\n
\n

Smart XML Sitemaps and Rich Snippets (SEO Schema Markup)

\n

Proper website SEO markup plays an important role in improving SEO rankings. That’s why smart SEO experts use AIOSEO for on-page SEO optimization.

\n

Aside from the comprehensive WordPress XML sitemap feature, we also offer News SEO sitemap and Video SEO sitemap to help you improve your website’s SEO ranking and get more traffic.

\n

AIOSEO comes with built-in smart SEO schema markup feature to help you get more traffic through SEO rich snippets, Google featured snippets, breadcrumb site links in SEO, and image SEO search results.

\n
\n

The best SEO plugin. All in One SEO is the best SEO Plugin. I personally find it better than Yoast. This plugin offers so much freedom in configuration.
\n hanapupu

\n
\n

Local SEO, WooCommerce SEO, Google AMP, and More

\n

All in One SEO is the most comprehensive WordPress SEO plugin / marketing toolkit in the world.

\n

We offer complete support for Google Knowledge Graph and Schema.org markup for local businesses. You can add multiple business locations, opening hours, contact info (business email, business phone, business address, etc) and more with our Local SEO module.

\n

AIOSEO also makes WooCommerce SEO easy. With our SEO plugin, you can optimize your product pages and product categories for better SEO rankings (with just a few clicks).

\n

Since AIOSEO is the original WordPress SEO plugin, we have SEO integrations with all popular WordPress plugins such as membership plugin SEO, landing page plugin SEO, Semrush SEO integration, etc. AIOSEO also offers Google AMP integration and works seamlessly with all popular speed & caching plugins.

\n
\n

Best SEO Plugin for WordPress. We continue to use All in One SEO on all our WordPress sites and Clients sites, and we recommend it too all other clients.
\n MySEOGuy

\n
\n

Since SEO is an essential feature, AIOSEO is a must have plugin for every website!

\n

SEO Redirection Manager and 404 Monitoring

\n

AIOSEO Redirection manager helps you set up proper 301 redirects to improve your SEO rankings.

\n

We also support other advanced SEO redirects including 302 redirects, 307 redirects, 410 redirection, 404 redirects, REGEX redirects for advanced SEO needs, and more.

\n

We have an automatic 404 error monitor that helps you track and redirect 404 errors, so you can prevent losing SEO rankings.

\n

Since redirect speed is important for SEO, we built in both Apache / NGINX server level redirects to help you get maximum SEO benefit.

\n

Full All in One SEO Feature List

\n
    \n
  • WordPress SEO Setup Wizard – Properly setup WordPress SEO in less than 10 minutes.
  • \n
  • On-page SEO Optimization – optimize SEO code markup (without hiring a developer)
  • \n
  • TruSEO score – detailed content & readability analysis to help you optimize your pages for higher SEO rankings.
  • \n
  • Smart Meta Title & Description – Automatic SEO generation, dynamic SEO smart tags, and more.
  • \n
  • Unlimited SEO Keywords – our SEO content analyzer helps you optimize your pages for unlimited SEO keywords.
  • \n
  • XML Sitemap – Advanced XML sitemaps to boost your SEO rankings.
  • \n
  • Video SEO Sitemap – Improve your SEO rankings with video sitemap.
  • \n
  • News SEO Sitemap – Increase your SEO traffic with Google News sitemap.
  • \n
  • RSS SEO Sitemap – Improve SEO crawl frequency with RSS sitemap.
  • \n
  • Automatic Image SEO – Our image SEO module helps your images rank higher.
  • \n
  • Local Business SEO – Improve your local business SEO presence with our local SEO module.
  • \n
  • Multiple location SEO – Great for SEO optimization for businesses with multiple local store locations.
  • \n
  • Rich Snippets Schema – Get better click through rate (CTR) and increase SEO rankings with rich snippets schema.
  • \n
  • SEO Knowledge Graph Support – Improve your website’s search appearance with SEO Knowledge panel.
  • \n
  • Advanced SEO Schema – Easily add advanced SEO schema markups like FAQ schema, product schema, recipe schema (food blogger SEO), software application schema markup (SaaS SEO), online course schema (for course SEO), and more.
  • \n
  • Sitelinks Search Box – Helps you get a search box in Google SEO rankings.
  • \n
  • Google Site Links – Our SEO markup can help you get sitelinks for your brand.
  • \n
  • Robots.txt Editor – Control what SEO robots can see with our easy SEO robots.txt editor.
  • \n
  • SEO Audit Checklist – Improve your website’s SEO ranking with our SEO audit checklist.
  • \n
  • Google Search Console – Connect your WordPress site with Google webmaster tools to see additional SEO insights.
  • \n
  • Search Engine Verification Tools – Easily integrate with other popular SEO webmaster tools to improve search visibility.
  • \n
  • Google AMP SEO – Improve your mobile SEO rankings with Google AMP SEO.
  • \n
  • Advanced SEO Canonical URLs – Prevent duplicate content in SEO with automatic canonical URLs and boost your SEO rankings.
  • \n
  • Advanced Robots Meta SEO Settings – granular controls for no index, no follow, no archive, no snippet, max snippet, max video, and more.
  • \n
  • RSS Content for SEO – Stop content theft from hurting your SEO rankings with our RSS Content tool.
  • \n
  • User Access Control – Control who can manage your SEO settings with our advanced SEO access control.
  • \n
  • Competitor Site SEO Analysis – Use our competitor SEO analysis to outrank them by improving your website’s SEO optimization.
  • \n
  • Smart Breadcrumbs – Add Breadcrumb navigation to improve user experience and boost your SEO rankings. Comes with full SEO JSON+LD support.
  • \n
  • Smart SEO Redirects – Setup proper 301 redirects to improve your SEO rankings.
  • \n
  • 404 Error Monitor for SEO – Monitor website 404 errors and set up proper SEO redirects to prevent losing SEO rankings.
  • \n
  • Title and Nofollow for SEO – We make it easy for you to add title and nofollow to external links to improve SEO rankings.
  • \n
\n

WordPress SEO Integrations

\n
    \n
  • WooCommerce SEO – optimize your WooCommerce product pages and improve your WooCommerce store’s SEO rankings.
  • \n
  • MemberPress SEO – optimize your MemberPress course pages and improve your membership site’s SEO rankings.
  • \n
  • Elementor SEO – add SEO optimization for your Elementor landing pages.
  • \n
  • LearnDash SEO – SEO optimization for LearnDash courses.
  • \n
  • Facebook SEO – SEO optimize your website preview on Facebook.
  • \n
  • Twitter SEO – SEO optimize your website preview on Twitter.
  • \n
  • Pinterest SEO – SEO optimize your website preview on Pinterest.
  • \n
  • Open Graph Support – improve your SEO with open graph meta data.
  • \n
  • Knowledge Panel SEO – improve website SEO apperance by adding social media profile links for Facebook, Twitter, Wikpedia, Instagram, LinkedIn, Yelp, YouTube, and more.
  • \n
  • SEO Webmaster Tool Content – Connect your WordPress site with various webmaster tools to improve SEO rankings.
  • \n
  • Semrush SEO integration – See additional SEO keywords and relevant SEO keyphrases with our Semrush SEO integration.
  • \n
\n

WordPress SEO Plugin Importer

\n
    \n
  • Yoast SEO Importer – easily switch from Yoast SEO to AIOSEO with our full SEO migration wizard that includes SEO keywords, SEO title, meta description, XML sitemaps and more.
  • \n
  • Yoast SEO Premium Importer – easily import Yoast SEO premium settings including SEO redirects to AIOSEO with our full SEO migration wizard.
  • \n
  • RankMath SEO Importer – easily switch from RankMath SEO to AIOSEO with our SEO migration wizard.
  • \n
  • SEO Settings Backup – create a backup of your AIOSEO settings.
  • \n
  • Advanced SEO Import / Export – easily import / export AIOSEO settings from one site to another.
  • \n
  • Redirection Importer – import your SEO redirects from the Redirection plugin with our SEO migration wizard.
  • \n
  • Simple 301 Redirects Importer – import your SEO redirects from Simple 301 redirets with our SEO migration wizard.
  • \n
  • Safe Redirection Manager – easily import SEO redirects from safe redirect manager with our SEO migration wizard.
  • \n
\n

After reading this feature list, you can probably imagine why AIOSEO is the best WordPress SEO plugin in the market.

\n

Give AIOSEO a try.

\n

Want to unlock more SEO features? Upgrade to AIOSEO Pro.

\n

Credits

\n

This plugin is created by Benjamin Rojas and Syed Balkhi.

\n

Branding Guideline

\n

AIOSEO® is a registered trademark of Semper Plugins LLC. When writing about the WordPress SEO plugin by AIOSEO, please use the following format.

\n
    \n
  • AIOSEO (correct)
  • \n
  • All in One SEO (correct)
  • \n
  • AIO SEO (incorrect)
  • \n
  • All in 1 SEO (incorrect)
  • \n
  • AISEO (incorrect)
  • \n
\n

What’s Next

\n

If you like our WordPress SEO plugin, then consider checking out our other projects:

\n
    \n
  • OptinMonster – Get More Email Subscribers with the most popular conversion optimization plugin for WordPress.
  • \n
  • WPForms – #1 drag & drop online form builder for WordPress.
  • \n
  • MonsterInsights – See the Stats that Matter and Grow Your Business with Confidence. Best Google Analytics Plugin for WordPress.
  • \n
  • SeedProd – Create beautiful landing pages with our powerful drag & drop landing page builder.
  • \n
  • WP Mail SMTP – Improve email deliverability for your contact form with the most popular SMTP plugin for WordPress.
  • \n
  • RafflePress – Best WordPress giveaway and contest plugin.
  • \n
  • Smash Balloon – #1 social feeds plugin for WordPress.
  • \n
  • SearchWP – advanced WordPress search plugin.
  • \n
  • PushEngage – best web push notification plugin.
  • \n
\n

Visit WPBeginner to learn from our WordPress Tutorials and find out about other best WordPress plugins.

\n","download_link":"https://downloads.wordpress.org/plugin/all-in-one-seo-pack.4.1.3.3.zip","tags":{"google-search-console":"google search console","meta-description":"meta description","schema":"schema","seo":"seo","xml-sitemap":"xml sitemap"},"donate_link":"","icons":{"1x":"https://ps.w.org/all-in-one-seo-pack/assets/icon.svg?rev=2443290","2x":"https://ps.w.org/all-in-one-seo-pack/assets/icon-256x256.png?rev=2443290","svg":"https://ps.w.org/all-in-one-seo-pack/assets/icon.svg?rev=2443290"},"wporg":true},{"name":"Translate WordPress – Weglot Translate","slug":"weglot","version":"3.3.6","author":"Weglot Translate team","author_profile":"https://profiles.wordpress.org/remyb92","requires":"4.5","tested":"5.8","requires_php":"5.6","rating":96,"ratings":{"1":39,"2":7,"3":6,"4":27,"5":1206},"num_ratings":1285,"support_threads":8,"support_threads_resolved":3,"active_installs":40000,"downloaded":1204390,"last_updated":"2021-08-18 2:44pm GMT","added":"2015-09-27","homepage":"http://wordpress.org/plugins/weglot/","short_description":"Translate your WordPress website in 110+ languages within minutes with Weglot Translate, without any coding.","description":"

Weglot Translate is the leading WordPress translation plugin, trusted by 60,000+ users worldwide. Translate your WordPress website into 110+ languages within minutes, no coding required.

\n

Increase visibility and boost conversions with ease by adding multilingual functionality. Weglot Translate is fully optimized for SEO, with every translated page automatically indexed by Google. Say hello in multiple languages to millions of new visitors.

\n

Make your website multilingual in minutes with a free trial. Visit https://weglot.com/ to learn more!

\n

How Weglot Translate works

\n\n

Why Weglot Translate

\n

It’s easy to install: Weglot Translate is quick to set up to have a multilingual WordPress website ready, instantly. Reach out to millions of new visitors worldwide with a few clicks, without any coding.

\n

It’s built for maximum compatibility: Weglot Translate is fully compatible with all platforms, WordPress themes, and plugins. From WooCommerce product descriptions to Elementor order forms, everything is translated into the languages of your choice. So you can focus on your content, not the technical details.

\n

It’s optimized for SEO: Weglot Translate follows Google’s best practices for multilingual website translation, serving all translated web pages with clean source code. Google will automatically index every translated page with dedicated URLs.

\n

It’s easy to set and forget: Weglot Translate automatically detects all your website content for easy translation. No more time-consuming manual duplication of every single line of content to get a multilingual website. All translations are updated in real-time, so you don’t need to worry about maintenance and any newly added content is automatically translated.

\n

It takes translation seriously: Weglot Translate gives you an edge on your translation tasks with the first layer of automatic translation provided by the best machine learning providers on the market (DeepL, Google, Microsoft, and Yandex). You can also edit the translations and collaborate with your team to work on translations together, directly within Weglot.

\n

It partners with the pros: Weglot Translate lets you order from vetted professional translators directly inside your Weglot dashboard. Set translation quality the way you want it to be, with Weglot Translate.

\n

“Within a week of translating our site to English with Weglot, international sales doubled, by the following month – they had quadrupled.”
\nClara Champion – Director of Digital and E-Commerce, Jimmy Fairly
\nRead the case study

\n

Multilingual functionality like no other

\n

Increase visibility: All translated pages are automatically indexed following Google’s best practices with dedicated URLs. Get new traffic with your multilingual website.

\n

Reduce bounce rate: Redirect visitors automatically to serve them in the language of their choice, based on their browser settings.

\n

Enhance user experience: From the landing page to the email confirmation, get all your key conversion steps translated in your customers’ language. You can even add different images and videos for various languages. Useful for images with text, Weglot Translate makes it easy to display “translated” images in your translated versions. Media localization is an essential aspect of any multilingual project and Weglot Translate makes it simple to do so.

\n

“We really loved the localization features provided by Weglot, such as the ability to translate images and other types of media depending on the language the visitor is viewing the site in.”
\nKim Martin – Senior Communications and Marketing Officer, The Challenge Initiative
\nRead the case study

\n

An all-in-one language translation platform

\n
    \n
  • Manage and edit all of your translations through a user-friendly interface.
  • \n
  • Collaborate with team members and trusted translators to translate together, directly inside Weglot.
  • \n
  • Is it a title? Is it a link? No more guessing the context of the text. Weglot Translate’s in-context editor lets you translate directly within the webpage.
  • \n
  • Make it your own. The language switcher is fully customizable for multiple design choices.
  • \n
  • Weglot Translate makes it easy to migrate from other WordPress multilingual plugins like Polylang or WPML. Simply deactivate your existing translation plugin and install Weglot Translate.
  • \n
\n

“Weglot removed the pain of having to manage multiple stores for multiple locales. The integration was easy, and the support is incredibly helpful. I highly recommend Weglot to anyone looking for a simple and cost-effective solution to translate their stores!”
\nMike Robertson – Director of Sales Operations, Nikon

\n

With an increase in site visitors and session duration thanks to your multilingual website, you can expect a massive boost to your conversions. See why thousands of e-commerce platforms, SaaS firms, marketplaces, corporate websites, and blogs worldwide love Weglot Translate. Try it today for free

\n","download_link":"https://downloads.wordpress.org/plugin/weglot.3.3.6.zip","tags":{"language":"language","localization":"localization","multilingual":"multilingual","translate":"translate","translation":"translation"},"donate_link":"","icons":{"1x":"https://ps.w.org/weglot/assets/icon-128x128.png?rev=2186774","2x":"https://ps.w.org/weglot/assets/icon-256x256.png?rev=2186774"},"wporg":true},{"name":"Rank Math SEO – Best SEO Plugin For WordPress To Increase Your SEO Traffic","slug":"seo-by-rank-math","version":"1.0.71.1","author":"Rank Math","author_profile":"https://profiles.wordpress.org/rankmath","requires":"5.6","tested":"5.8","requires_php":"7.2","rating":98,"ratings":{"1":69,"2":17,"3":20,"4":48,"5":3381},"num_ratings":3535,"support_threads":138,"support_threads_resolved":133,"active_installs":900000,"downloaded":19912354,"last_updated":"2021-09-03 7:13pm GMT","added":"2018-11-19","homepage":"https://s.rankmath.com/home","short_description":"Rank Math SEO is the Best WordPress SEO plugin combines the features of many SEO tools in a single package & helps you multiply your SEO traffic.","description":"

Rank Math SEO – Best SEO Plugin for WordPress
\n★★★★★

\n

SEO is the most consistent source of traffic for any website. We created Rank Math SEO, a WordPress SEO plugin, to help every website owner get access to the SEO tools they need to improve their SEO and attract more traffic to their website.

\n

Try The Demo

\n\n

Features | Why Choose Rank Math SEO? | Compare | Screenshots | Benefits

\n

SEO might be the best and most consistent source of traffic for one’s website, but it’s not without its quirks. The constant process of optimizing your posts can sometimes take more time than actually writing the content. If you always feel that you can do more on the SEO front for your website but don’t have the time, then Rank Math SEO is what you’re looking for.

\n

Its host of intelligent features brings top SEO capabilities in your hands that were previously out of reach. The smart automation features give you the power of an entire SEO team with just a few clicks. A well thought out design, powerful features, and years of development by the MyThemeShop squad make Rank Math SEO a game-changing SEO plugin that will level the SEO playing field in your favor to help increase traffic.

\n

Rank Math SEO beats all of its competitors, hands down.

\n

See the features which are exclusive to the Rank Math SEO plugin and understand why Rank Math SEO is possibly the Best SEO Plugin for WordPress.

\n
    \n
  • \n

    Setup Wizard (Easy to follow)
    \nRank Math SEO practically configures itself. Rank Math SEO features a step-by-step installation and configuration wizard that sets up SEO for WordPress perfectly.

    \n
  • \n
  • \n

    Google Schema Markup aka Rich Snippets Integrated
    \nConfiguring Google Schema Markup, aka Rich Snippets, is now easy, thanks to Rank Math SEO. With support for 16+ types of Schema Markups, aka Rich Snippets, including the Rating Schema, you’ll be able to optimize your posts in just a few clicks. It also includes the FAQ Schema aka FAQPage Schema Block & the HowTo aka How To Schema Block in the plugin.

    \n
  • \n
  • \n

    Optimize Unlimited Keywords
    \nUnlike other plugins, Rank Math SEO lets you optimize your posts for unlimited focus keywords per post. 5 by default. Increase by adding this filter.

    \n
  • \n
  • \n

    Google Search Console Integration
    \nRank Math SEO saves you a ton of time by integrating with Google Search Console and displaying important information about your website right inside WordPress.

    \n
  • \n
  • \n

    Google Keyword Ranking
    \nWith Rank Math SEO Plugin, you can track your keyword rankings in Google.

    \n
  • \n
  • \n

    Google Analytics Integration
    \nRank Math SEO offers a one-click solution to install Google Analytics script without pasting anything manually anywhere. You can also exclude the Logged-in users.

    \n
  • \n
  • \n

    Optimal Settings Pre-Selected
    \nConfiguring an SEO plugin takes time, and can be confusing. Rank Math SEO saves you the trouble with its optimal default settings, which are ideal for most websites, and if needed, can be changed.

    \n
  • \n
  • \n

    LSI Keyword Tool Integrated
    \nRank Math SEO’s integrated LSI keyword tool gives you multiple keyword variations of your focus keyword, which helps you attract more traffic to your posts. Free account needed.

    \n
  • \n
  • \n

    Add Overlay Icons On Social Images
    \nRank Math SEO makes social thumbnails click magnets by giving you the option of overlaying a GIF or a video icon on the thumbnail.

    \n
  • \n
  • \n

    Advanced SEO Analysis Tool
    \nWith just a single click, Rank Math SEO can perform an SEO audit of your website.

    \n
  • \n
  • \n

    30 Detailed SEO Tests
    \nRank Math SEO is designed to completely supercharge your website’s SEO with its 30 detailed SEO tests. Free account needed.

    \n
  • \n
  • \n

    Module Based System
    \nRank Math SEO has been designed with a module-based system, each of which can be enabled or disabled as per your needs, giving you extra speed and control.

    \n
  • \n
  • \n

    Smart Redirection Manager
    \nRank Math SEO’s built-in smart redirection manager will help you create, manage, delete, enable, or disable redirects at scale.

    \n
  • \n
  • \n

    Local Business SEO
    \nRank Math SEO is designed to be used by Global websites and local websites alike. With its local SEO features, local sites can stand out in the search engine results like Google’s and attract more traffic.

    \n
  • \n
  • \n

    SEO Optimized Breadcrumbs
    \nRank Math SEO can display SEO optimized Breadcrumbs on all websites, even if the theme doesn’t support Schema.org coding.

    \n
  • \n
  • \n

    404 Monitor
    \nRank Math SEO has a built-in 404 error monitor that helps you find and resolve 404 errors for a better user experience.

    \n
  • \n
  • \n

    Deep Content Analysis Tests
    \nOn-Page SEO is no longer a mystery with Rank Math SEO’s deep content analysis and precise SEO recommendations.

    \n
  • \n
  • \n

    Internal Linking Suggestions
    \nRank Math SEO intelligently suggests other posts from your website for internal linking from your current posts, improving the chances of ranking higher in the SERPs.

    \n
  • \n
  • \n

    Role Manager
    \nEven if you have multiple employees manage your website, you can precisely control what each of them has to access to in Rank Math SEO with its role manager.

    \n
  • \n
  • \n

    Multisite Ready
    \nWhether you run a single WordPress website or an entire network of sites – we are ready for you. Rank Math SEO fully supports the WordPress Multiuser project (WPMU).

    \n
  • \n
  • \n

    and has lightweight Code compared to slow-loading in other SEO plugins.
    \nEven with significantly more features than other plugins, Rank Math SEO loads amazingly fast and keeps your website fast always.

    \n
  • \n
\n

Why is Rank Math SEO such a game-changer?

\n
    \n
  • \n

    Auto Configuration — All you have to do is set a few options, and Rank Math SEO will configure itself perfectly for your website.

    \n
  • \n
  • \n

    Super Fast SEO Plugin — Even after packing so many features, Rank Math SEO has a negligible load on your server, thus making it one of the fastest SEO plugins for WordPress.

    \n
  • \n
  • \n

    Automatic Keyword Suggestions from Google — Get keyword suggestions from Google as you start typing letters in the focus keyword field of Rank Math SEO.

    \n
  • \n
  • \n

    New SEO Analyzer — Rank Math SEO’s built-in SEO analysis will give you SEO recommendations that you’d normally spend hundreds of dollars to get.

    \n
  • \n
  • \n

    Elementor SEO – Deep integration with the Elementor Page builder. Now, you don’t need to go back and forth between tabs to configure your page’s SEO. Everything related to SEO for Elementor can be configured in the visual editor.

    \n
  • \n
  • \n

    Divi SEO – One of its kind integration with the Divi Page Builder and theme. Handle everything related to SEO from the page editor screen without jumping back to the default editor. This helps you optimize your website in real-time for SEO.

    \n
  • \n
  • \n

    Page Builder SEO – The Rank Math SEO plugin’s content analysis works perfectly with popular page builders and themes like Oxygen Builder, WPBakery, Avada, Astra, Kadence, Themify, Beaver Builder, Page Builder Framework, Schema theme, Flothemes, OceanWP, etc.

    \n
  • \n
  • \n

    Optimize UNLIMITED Keywords At Once — You can optimize your post for up to 5 different keywords by default with the Rank Math SEO plugin and can use a filter to optimize for unlimited keywords.

    \n
  • \n
  • \n

    Image SEO – With Rank Math SEO’s perfect solution to add ALT & Title tags on the fly, to optimize images, showing inside the content, and that too for FREE, there is no reason to choose any other SEO solution that does not provide all the essential SEO features.

    \n
  • \n
  • \n

    Web Stories SEO – Make any Story created with the Google’s Web Stories plugin SEO-Ready. Automatically adds AMP-friendly Schema markup and Meta tags.

    \n
  • \n
  • \n

    WooCommerce SEO – Optimizing your store products is easier with Rank Math. SEO Meta tags and Schema are automatically added but can be customized with total control as well. Rank Math SEO has the most advanced SEO for WooCommerce.

    \n
  • \n
  • \n

    Google AMP SEO – Accelerated Mobile Pages need to be prepared for search engines. What better way to do that than letting Rank Math SEO use your regular SEO details and optimizing AMPs based on that data?

    \n
  • \n
  • \n

    bbPress SEO – User-generated content in bbPress is properly optimized with Rank Math handling all the important SEO aspects. Q&A Schema is added to bbPress topics along with other essential meta tags.

    \n
  • \n
  • \n

    BuddyPress SEO – As with bbPress, SEO for BuddyPress content is done automatically done using Rank Math. You get all the options you need to get higher rankings with your user-generated content.

    \n
  • \n
  • \n

    Quick Edit SEO Details – Go through a lot of posts/pages quickly by ensuring they are optimized for search engines. Quickly edit multiple SEO fields at once using Rank Math SEO.

    \n
  • \n
  • \n

    Instant Indexing for Bing – Get your content instantly indexed by Bing. Enter a few key details and you are all set and ready to go.

    \n
  • \n
  • \n

    Instant Indexing for Google – Instantly getting indexed by Google used to be reserved to huge brands and large websites. Not anymore. Just about anyone can take advantage of Google’s Instant Indexing feature using Rank Math SEO.

    \n
  • \n
  • \n

    Version Control – Rollback or try beta versions. Updating and downgrading your plugins is now a matter of few clicks. Automatically update to the latest versions or try out the latest beta builds.

    \n
  • \n
  • \n

    Translation Plugins Support — Rank Math SEO works flawlessly with the top translations plugins like WPML, TranslatePress, Weglot, Polylang (not entirely compatible yet), etc., making it a perfect companion.

    \n
  • \n
  • \n

    XML Sitemap – The Rank Math SEO plugin comes with a fast-loading Sitemap feature that works with different post types, including the custom ones, and provides deep controlling. One can also generate a Locations KML file via filter for Local Sitemap, & a WooCommerce Sitemap.

    \n
  • \n
  • \n

    1-Click Import From Yoast — With a single click of your mouse, Rank Math SEO can import all your settings from Yoast SEO & Yoast SEO Premium to itself. The transfer is instant, and you don’t lose any SERP rankings as a result.

    \n
  • \n
  • \n

    1-Click Import From AIO SEO — Rank Math SEO can also import all your settings from AIO SEO & All in One SEO Pack Pro in a single click. The transfer is instant, and you don’t lose any SERP rankings as a result.

    \n
  • \n
  • \n

    1-Click Import From All In One Schema Rich Snippets — Rank Math SEO can also import all of AIO’s Rich Snippet & Schema Pro settings in a few clicks, which help preserve your rich rankings when moving to Rank Math SEO.

    \n
  • \n
  • \n

    1-Click Import From SEOPress SEO — With a single click of your mouse, Rank Math SEO can import all your settings from SEOPress & SEOPress Pro SEO plugin to itself. The transfer is instant, and you don’t lose any SERP rankings as a result.

    \n
  • \n
  • \n

    1-Click Import From Redirection — Moving all your redirects shouldn’t be a hassle. That’s why we have made importing redirections from the popular Redirection plugin as simple as clicking a button.

    \n
  • \n
  • \n

    Google Keyword Suggestion — When deciding on focus keywords, Rank Math SEO can help you discover more keywords by pulling in automatic keyword suggestions from Google.

    \n
  • \n
\n

Who Can Benefit From Rank Math SEO?

\n

Rank Math SEO Plugin is perfect for:

\n

✔ Bloggers
\n✔ eCommerce Store Owners
\n✔ Niche Sites
\n✔ Businesses
\n✔ Local Businesses
\n✔ Startups
\n✔ The Real Estate
\n✔ Artists & Photographers
\n✔ The Solution Offerer
\n✔ Directories
\n✔ Vloggers (Video Bloggers)
\n✔ Or any WordPress Website

\n

Take a sneak peek into Rank Math SEO’s features

\n

Detailed Setup Tutorial

\n\n

List of Best Rank Math SEO Features

\n
    \n
  • Clean, & Simple User Interface
  • \n
  • Optimal Settings Pre-Selected
  • \n
  • Simple Setup Wizard\n
      \n
    • Compatibility Check
    • \n
    \n
  • \n
  • Auto Canonical URLs
  • \n
  • LSI Keyword Tool Integrated
  • \n
  • Google Search Console Integration
  • \n
  • Google Keyword Ranking
  • \n
  • Import Other Plugin Settings\n
      \n
    • 1 Click Import From Yoast SEO Plugin
    • \n
    • 1 Click Import From AIO SEO
    • \n
    • 1 Click Import From SEOPress & SEOPress Pro
    • \n
    • 1 Click Import From All In One Schema Rich Snippets & Schema Pro
    • \n
    • 1 Click Import From Redirection Plugin
    • \n
    \n
  • \n
  • Role Manager
  • \n
  • ACF Support
  • \n
  • AMP Ready
  • \n
  • bbPress & BuddyPress Modules
  • \n
  • Google Schema Markup Integrated\n
      \n
    • Article Rich Snippet
    • \n
    • Review Rich Snippet
    • \n
    • Book Rich Snippet
    • \n
    • Course Rich Snippet
    • \n
    • Event Rich Snippet
    • \n
    • Job Posting Rich Snippet
    • \n
    • Local Business Rich Snippet
    • \n
    • 193 Local Business Types
    • \n
    • Music Rich Snippet
    • \n
    • Person Rich Snippet
    • \n
    • Product Rich Snippet
    • \n
    • Recipe Rich Snippet
    • \n
    • Restaurant Rich Snippet
    • \n
    • Service Rich Snippet
    • \n
    • Software Application Rich Snippet
    • \n
    • Video Rich Snippet
    • \n
    • Author Stay Rating
    • \n
    \n
  • \n
  • Social Media Optimization\n
      \n
    • Add Overlay Icons On Social Images
    • \n
    • Default OpenGraph Thumbnail
    • \n
    • Auto Facebook Open Graph
    • \n
    • Facebook Authorship
    • \n
    • Facebook Open Graph for Homepage
    • \n
    • Automatic Twitter Meta Cards
    • \n
    • Twitter Card for Homepage
    • \n
    • Default Twitter Card Type
    • \n
    • Social Previews
    • \n
    \n
  • \n
  • Add Knowledge Graph\n
      \n
    • Represent site as a Person
    • \n
    • Represent site as a Company
    • \n
    • Set a Site Logo
    • \n
    \n
  • \n
  • Advanced SEO Analysis Tool\n
      \n
    • 30 Detailed SEO Tests
    • \n
    • SEO Analysis Score
    • \n
    \n
  • \n
  • Automated Image SEO
  • \n
  • Powerful Post Optimization\n
      \n
    • Add SEO Meta Box to all post types
    • \n
    • Bulk Edit Titles & Descriptions
    • \n
    • Post Preview on Google
    • \n
    • Content Analysis
    • \n
    • Control SEO For Single Pages
    • \n
    • Control The Title
    • \n
    • Control Meta Description
    • \n
    • Auto Add Additional Meta Data
    • \n
    • Control ROBOTS Meta
    • \n
    • Choose a Primary Category
    • \n
    \n
  • \n
  • Single Post/page Optimization\n
      \n
    • Focus Keyword
    • \n
    • Google Keyword Suggestion
    • \n
    • Optimize UNLIMITED Keywords (5 by default)
    • \n
    • Choose Pillar Posts & Pages
    • \n
    • Internal Linking Suggestions
    • \n
    • Capitalize Titles
    • \n
    • SEO Failed Tests
    • \n
    • SEO Warnings
    • \n
    \n
  • \n
  • XML Sitemap (New!)
  • \n
  • Module Based System
  • \n
  • Choose Any Separator Character
  • \n
  • Modify Global Meta
  • \n
  • Search Engine Verification Tools\n
      \n
    • Bing Site Verification
    • \n
    • Baidu Site Verification
    • \n
    • Alexa Site Verification
    • \n
    • Yandex Site Verification
    • \n
    • Google Site Verification
    • \n
    • Pinterest Site Verification
    • \n
    • Norton Safe Web Site Verification
    • \n
    \n
  • \n
  • Advanced Redirection Manager\n
      \n
    • Smart & Automatic Post Redirects
    • \n
    • 301 Redirection Type
    • \n
    • 302 Redirection Type
    • \n
    • 307 Redirection Type
    • \n
    • 410 Redirection Type
    • \n
    • 451 Redirection Type
    • \n
    • Support for REGEX
    • \n
    • Debug Redirections
    • \n
    \n
  • \n
  • Simple 404 Monitor\n
      \n
    • Advanced 404 Monitor
    • \n
    \n
  • \n
  • Advanced SEO Breadcrumbs\n
      \n
    • Auto Show SEO Breadcrumbs
    • \n
    \n
  • \n
  • Advanced Link Options\n
      \n
    • Nofollow All External Image Links
    • \n
    • Nofollow All External Links
    • \n
    • Open External Links in New Tab/Window
    • \n
    • Redirect Attachments to Parent
    • \n
    • Strip Category Base
    • \n
    \n
  • \n
  • Remove Stopwords from Permalinks
  • \n
  • Ping Search Engines
  • \n
  • Local SEO Optimization\n
      \n
    • Contact Info Shortcode
    • \n
    \n
  • \n
  • Deep Support For WooCommerce SEO
  • \n
  • Compatible for EDD SEO (Easy Digital Downloads SEO)
  • \n
  • Only 30k Lines of Code\n
      \n
    • PSR-4 Coding Standards (wherever possible)
    • \n
    \n
  • \n
  • Optimize Different Archives\n
      \n
    • Optimize Author Archive Pages
    • \n
    • Optimize Date Archive Pages
    • \n
    • Optimize Archive Pages
    • \n
    \n
  • \n
  • .htaccess Editor
  • \n
  • Robots.txt Editor
  • \n
  • Import/Export Settings
  • \n
  • Import/Export Redirections
  • \n
  • Add Content Before the RSS Feed
  • \n
  • Add Content After the RSS Feed
  • \n
  • Detailed Documentation\n
      \n
    • Contextual Help
    • \n
    \n
  • \n
\n

BIG Publications are Raving About Rank Math SEO

\n

Rank Math SEO Reviews

\n\n\n

Rank Math SEO Review – Why I Ditched Yoast For Rank Math SEO

\n

Rank Math SEO on Product Hunt

\n

Rank Math SEO Plugin Review from an SEO Consultant

\n

and many more

\n

Check RANK MATH PRO WHICH MAKES SEO EASIER & FASTER

\n\n

FREE VS PRO COMPARISON

\n

UNIQUE FEATURES OF RANK MATH PRO

\n

Google Analytics & Search Console Integration (The only SEO plugin that provides it)
\n✔ Integrated Google Analytics, AdSense & Search Console Data
\n✔ Analyze SEO Performance of Each Post & Page
\n✔ See Top Winning/Losing Posts & Keywords
\n✔ Keep Track of Position History
\n✔ Rank Tracker for Important Keywords

\n

Schema aka Structured Data aka Rich Snippets. The BEST Schema Generator Available Online
\n✔ 20+ Pre-defined Schema types (more than any other plugin) –
\n✔ Import Schema from Other Websites
\n✔ Advanced Schema Builder [Advanced SEOs can use this to create any complex Schema Markup)
\n✔ Schema Templates for Automation
\n✔ Conditional Schema Markup
\n✔ Inbuilt Schema Code Preview and Validation
\n✔ Multiple Location Schema On Any Page (using the Shortcode)

\n

Automation At Its BEST
\n✔ Automated Image SEO
\n✔ Advanced Filtering for Images [https://i.rankmath.com/zAUHHP]
\n✔ Watermark Your images
\n✔ Advanced Post filtering
\n✔ Bulk Actions [index, noindex, redirect, etc.]
\n✔ Quick Edit SEO Details
\n✔ Bulk Import SEO Meta Details Using CSV file
\n✔ Auto Detect Videos and Generate Schema Markup for Them
\n✔ Auto Fetch Thumbnail, Duration of YouTube & Vimeo Videos
\n✔ Automatically Flush Facebook Thumbnails
\n✔ Open External Links in New Tabs
\n✔ Nofollow External Links
\n✔ Noindex Paginated, Archive, Search Result Pages
\n✔ Instant Indexing for Bing [Also Google using our Instant Indexing Plugin]

\n

WooCommerce SEO
\n✔ Automatic Schema for WooCommerce Products
\n✔ Advanced Open Graph Tags for WooCommerce Products
\n✔ Automatic NoIndex Hidden Products
\n✔ Remove WooCommerce Product and Category Base
\n✔ Add Custom Brands to Products
\n✔ Add Global Identifier Like GTIN/MPN – Even to Variations

\n

Workflow Improvements
\n✔ Internal Role Manager
\n✔ Inbuilt Google Trends Insights
\n✔ Site Audit with 29 Unique Tests
\n✔ Import Redirections Using CSV File
\n✔ Categorize Redirections for Grouping
\n✔ One-Click Redirection for 404s
\n✔ Monitor Search Performance of Entire Portfolio
\n✔ Easy and Advanced Mode

\n

Miscellaneous
\n✔ Supports bbPress and BuddyPress SEO
\n✔ Version Control – Rollback or Try Beta Versions

\n

MANY MORE FEATURES
\n✔ PREMIUM 24x7x365 Dedicated Support Managers
\n✔ MOST COMPETITIVE PRICING EVER!

\n

CHEK ALL THE PREMIUM FEATURES AND PRICING HERE

\n

CONNECT WITH THE TEAM AND SEO EXPERTS

\n

JOIN FACEBOOK GROUP COMMUNITY: The purpose of this Facebook group is to have a collective place where the community can help each other, and we can get some feedback to improve Rank Math SEO as well. Joining the group is also a great way to connect with like-minded people and share your SEO experience.

\n

Branding Guideline

\n

Rank Math SEO® is a registered trademark. Please use the following format when mentioning the Rank Math SEO plugin anywhere.
\n* Rank Math SEO [correct]
\n* Rank Math SEO [incorrect]
\n* Rank Math SEO [incorrect]
\n* Rank Math SEO [incorrect]
\n* RankMath [incorrect]
\n* Rankmath [incorrect]
\n* rankmath [incorrect]
\n* rankMath [incorrect]

\n

Getting Started:

\n

1. How to Setup Rank Math SEO: Once you install Rank Math SEO for the first time, you will be greeted with the Setup Wizard, which is discussed in detail here.

\n

2. Facebook Group: In this group, you will find the team of Rank Math SEO plugin fairly active and ready to answer your SEO related queries.

\n

3. User Documentation: Although Rank Math SEO is already easy to set up, we’ve put together tutorials, guides, and some knowledge bases to help you set up and get started with Rank Math SEO.

\n

4. Contribute (Sharing is caring): If you are one of those caring hearts that want to help, go to our Rank Math SEO’s GitHub Repository and see how you can contribute to the SEO community. You can also add a new language via translate.wordpress.org.

\n

5. Fixing Common Errors: Sometimes, avoidable or common issues can get you stuck. We’ve created a common guide where we discuss all the common issues and how to fix them.

\n

6. Support Ticket Forum: Our dedicated forum is where you can get support for any issues that you face with Rank Math SEO. In the forum, we’ll also try to answer some SEO queries. User experience is important to us, and our aim is to answer all the queries on the forum in a timely manner.

\n

7. Frequently Asked Questions: Here, we’ve answered the most commonly asked questions about Rank Math SEO. The questions are related to features, pricing, and others.

\n","download_link":"https://downloads.wordpress.org/plugin/seo-by-rank-math.1.0.71.1.zip","tags":{"google-search-console":"google search console","redirection":"redirection","schema":"schema","seo":"seo","sitemap":"sitemap"},"donate_link":"","icons":{"1x":"https://ps.w.org/seo-by-rank-math/assets/icon.svg?rev=2348086","2x":"https://ps.w.org/seo-by-rank-math/assets/icon-256x256.png?rev=2348086","svg":"https://ps.w.org/seo-by-rank-math/assets/icon.svg?rev=2348086"},"wporg":true},{"name":"Head, Footer and Post Injections","slug":"header-footer","version":"3.2.2","author":"Stefano Lissa","author_profile":"https://profiles.wordpress.org/satollo","requires":"4.0","tested":"5.7.2","requires_php":"5.6","rating":98,"ratings":{"1":3,"2":2,"3":4,"4":13,"5":621},"num_ratings":643,"support_threads":1,"support_threads_resolved":0,"active_installs":300000,"downloaded":2776491,"last_updated":"2021-03-17 1:26pm GMT","added":"2008-04-07","homepage":"https://www.satollo.net/plugins/header-footer","short_description":"Header and Footer plugin let you to add html code to the head and footer sections of your blog... and more!","description":"

About WordPress SEO and Facebook Open Graph: I was very unpleased by Yoast invitation to
\nremove my plugin, and it’s not the case.
\nRead more here.

\n

Head and Footer Codes

\n

Why you have to install 10 plugins to add Google Analytics, Facebook Pixel, custom
\ntracking code, Google DFP code, Google Webmaster/Alexa/Bing/Tradedoubler verification code and so on…

\n

With Header and Footer plugin you can just copy the code those services give you
\nin a centralized point to manage them all. And theme independent: you can change your theme
\nwithout loosing the code injected!

\n

Injection points and features

\n
    \n
  • in the page section where most if the codes are usually added
  • \n
  • just after the tag as required by some JavaScript SDK (like Facebook)
  • \n
  • in the page footer (just before the tag)
  • \n
  • recognize and execute PHP code to add logic to your injections
  • \n
  • distinct desktop and mobile injections
  • \n
\n

AMP

\n

A new AMP dedicated section compatible with AMP plugin lets you to inject specific codes in
\nAMP pages. Should be ok even with other AMP plugins.

\n

Post Top and Bottom Codes

\n

Do you need to inject a banner over the post content or after it? No problem. With Header and
\nFooter you can:

\n
    \n
  • Add codes on top, bottom and in the middle of posts and pages
  • \n
  • Differentiate between mobile and desktop (you don’t display the same ad format on both, true?)
  • \n
  • Separate post and page configuration
  • \n
  • Native PHP code enabled
  • \n
  • Shortcodes enabled
  • \n
\n

Special Injections

\n
    \n
  • Just after the opening BODY tag
  • \n
  • In the middle of post content (using configurable rules)
  • \n
  • Everywhere on template (using placeholders)
  • \n
\n

bbPress

\n

The specific bbPress injections are going to be removed. Switch to my
\nAds for bbPress, which is more flexible and complete.

\n

Limits

\n

This plugin cannot change the menu or the footer layout, those features must be covered by your theme!

\n

Official page: Header and Footer.

\n

Other plugins by Stefano Lissa:

\n\n

Translation

\n

You can contribute to translate this plugin in your language on WordPress Translate

\n

Privacy and GDPR

\n

This plugin does not collect or process any personal user data.

\n","download_link":"https://downloads.wordpress.org/plugin/header-footer.3.2.2.zip","tags":{"blog":"blog","footer":"footer","header":"header","page":"page","single":"single"},"donate_link":"http://www.satollo.net/donations","icons":{"1x":"https://ps.w.org/header-footer/assets/icon-256x256.png?rev=1064219","2x":"https://ps.w.org/header-footer/assets/icon-256x256.png?rev=1064219"},"wporg":true},{"name":"WP Rocket","slug":"wp-rocket","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://wp-rocket.me/","short_description":"

Powerful caching to speed up your WordPress website in a few clicks. No coding required.

\n","description":"\n\n\n

Powerful caching to speed up your WordPress website in a few clicks. No coding required.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2020/06/WP-Rocket-285x160.png","2x":"https://amp-wp.org/wp-content/uploads/2020/06/WP-Rocket-372x209.png","svg":""},"wporg":false},{"name":"Statify","slug":"statify","version":"1.8.3","author":"pluginkollektiv","author_profile":"https://profiles.wordpress.org/pluginkollektiv","requires":"4.7","tested":"5.8","requires_php":"5.2","rating":94,"ratings":{"1":2,"2":0,"3":0,"4":3,"5":33},"num_ratings":38,"support_threads":3,"support_threads_resolved":1,"active_installs":200000,"downloaded":1499013,"last_updated":"2021-07-17 8:46am GMT","added":"2011-03-16","homepage":"https://statify.pluginkollektiv.org/","short_description":"Visitor statistics for WordPress with focus on data protection, transparency and clarity. Perfect as a widget in your WordPress Dashboard.","description":"

Statify provides a straightforward and compact access to the number of site views. It is privacy-friendly as it uses neither cookies nor a third party.

\n

An interactive chart is followed by lists of the most common reference sources and target pages. The period of statistics and length of lists can be set directly in the dashboard widget.

\n

Data Privacy

\n

In direct comparison to statistics services such as Google Analytics, WordPress.com Stats and Matomo (Piwik) Statify doesn’t process and store personal data as e.g. IP addresses – Statify counts site views, not visitors.

\n

Absolute privacy compliance coupled with transparent procedures: A locally in WordPress created database table consists of only four fields (ID, date, source, target) and can be viewed at any time, cleaned up and cleared by the administrator.

\n

Due to this tracking approach, Statify is 100% compliant with GDPR and serves as an lightweight alternative to other tracking services.

\n

Display of the widget

\n

The plugin configuration can be changed directly in the Statify Widget on the dashboard by clicking the Configure link.

\n

The amount of links shown in the Statify Widget can be set as well as the option to only count views from today. Of course, older entries are not deleted when changing this setting.

\n

The statistics for the dashboard widget are cached for four minutes.

\n

Period of data saving

\n

Statify stores the data only for a limited period (default: two weeks), longer intervals can be selected as option in the widget. Data which is older than the selected period is deleted by a daily cron job.

\n

An increase in the database volume can be expected because all statistic values are collected and managed in the local WordPress database (especially if you increase the period of data saving).

\n

JavaScript tracking for caching compatibility

\n

For compatibility with caching plugins like Cachify Statify offers an optional switchable tracking via JavaScript. This function allows reliable count of cached blog pages.

\n

For this to work correctly, the active theme has to call wp_footer(), typically in a file named footer.php.

\n

Skip tracking for spam referrers

\n

The comment blacklist can be enabled to skip tracking for views with a referrer URL listed in comment blacklist, i. e. which considered as spam.

\n

Support

\n

If you’ve problems or think you’ve found a bug (e.g. you’re experiencing unexpected behavior), please post at the support forums.

\n

Contribute

\n
    \n
  • Active development of this plugin is handled on GitHub.
  • \n
  • Pull requests for documented bugs are highly appreciated.
  • \n
  • If you want to help us translate this plugin you can do so on WordPress Translate.
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/statify.1.8.3.zip","tags":{"analytics":"analytics","dashboard":"dashboard","pageviews":"pageviews","privacy":"privacy","statistics":"statistics"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=TD4AMD2D8EMZW","icons":{"1x":"https://ps.w.org/statify/assets/icon-128x128.png?rev=2355063","2x":"https://ps.w.org/statify/assets/icon-256x256.png?rev=2355063"},"wporg":true},{"name":"LIQUID BLOCKS GALLERY 37+ Free Designs","slug":"liquid-blocks","version":"1.1.1","author":"LIQUID DESIGN Ltd.","author_profile":"https://profiles.wordpress.org/lqd","requires":"5.2","tested":"5.8","requires_php":false,"rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"num_ratings":1,"support_threads":1,"support_threads_resolved":0,"active_installs":4000,"downloaded":20103,"last_updated":"2021-07-22 6:55am GMT","added":"2019-10-18","homepage":"https://lqd.jp/wp/plugin.html","short_description":"If you’re looking to create block page sections that look great give LIQUID BLOCKS a…","description":"

If you’re looking to create block page sections that look great give LIQUID BLOCKS a try.

\n

In Gutenberg Block Template & Design Gallery, Just select your favorite design. Instantly create page section elements. Like a very simple page builder.

\n

You can manage Block Pattern. (WordPress 5.5+)
\nFully compatible with Gutenberg and themes and AMP.
\nlatest information on LIQUID PRESS.

\n

\n

Design Gallery

\n

Carefully selected 37+ Free Designs.
\n* Headlines
\n* Layouts (Q&A, Ranking, Column, Step, Fluid Shape.)
\n* Price list
\n* CTA
\n* Landing pages
\n* Block Patterns (You can register.)

\n

Toolbar

\n

Add to RichText Toolbar.
\n* Mark
\n* Underline
\n* Big
\n* Small

\n","download_link":"https://downloads.wordpress.org/plugin/liquid-blocks.zip","tags":{"block":"block","block-editor":"block-editor","blocks":"blocks","editor":"editor","gutenberg":"gutenberg"},"donate_link":"https://lqd.jp/wp/plugin.html","icons":{"1x":"https://ps.w.org/liquid-blocks/assets/icon-128x128.png?rev=2175390"},"wporg":true},{"name":"Schema","slug":"schema","version":"1.7.9.2","author":"Hesham","author_profile":"https://profiles.wordpress.org/hishaman","requires":"4.0","tested":"5.7.2","requires_php":"5.4","rating":90,"ratings":{"1":15,"2":6,"3":4,"4":8,"5":162},"num_ratings":195,"support_threads":3,"support_threads_resolved":0,"active_installs":60000,"downloaded":1083426,"last_updated":"2021-05-19 2:51pm GMT","added":"2016-05-11","homepage":"https://schema.press","short_description":"Get the next generation of Schema Structured Data to enhance your WordPress site presentation in Google search results.","description":"

Like Schema plugin? Consider leaving a 5 star review.

\n

Super fast, light-weight plugin for adding schema.org structured data markup in recommended JSON-LD format automatically to WordPress sites.

\n

Enhanced Presentation in Search Results By including structured data appropriate to your content, your site can enhance its search results and presentation.

\n

Check out the Plugin Homepage for more info and documentation.

\n

What is Schema markup?

\n

Schema markup is code (semantic vocabulary) that you put on your website to help the search engines return more informative results for users. So, Schema is not just for SEO reasons, it’s also for the benefit of the searcher.

\n

Schema.org Structured Data Demo & Examples

\n\n

Schema Key Features

\n
    \n
  • Easy to use, set it and forget it, with minimal settings.
  • \n
  • [Premium] Support for different schema.org types.
  • \n
  • Enable Schema types at once per post type or post category.
  • \n
  • [Premium] Enable Schema types anywhere you want on your site content.
  • \n
  • [Premium] Customize source data of schema.org properties.
  • \n
  • Valid markup, test it in Google Structured Data Testing Tool.
  • \n
  • Output JSON-LD format, the most recommended by Google.
  • \n
  • Reuse data saved in post meta, which is created by other plugins.
  • \n
  • Extensible, means you can extend its functionality via other plugins, extensions or within your Theme’s functions.php file.
  • \n
\n
\n

Note: some features are Premium. Which means you need Schema Premium to have those features. Get Schema Premium here!

\n
\n

Free vs Premium

\n
\n

See: a Free vs Premium comparison.

\n
\n

Free Plugin Extensions

\n
    \n
  • Schema Review: Extend Schema functionality by adding review and rating Structured Data functionality for Editors and Authors.
  • \n
  • Schema Default Image: Add ability to set a default WordPress Featured image for schema.org markup.
  • \n
\n

Premium Plugin Extensions

\n\n

Supported Google/Schema Markups

\n\n

Supported Schema.org Types

\n\n

Premium Supported Schema.org Types

\n
\n

Schema Premium has additional support for schema.org types, including:

\n
\n\n

Schema.org Markup Examples

\n

View our Live Structured Data Demo examples.

\n

Supported Plugins

\n

Schema plugin integrates and/or play nicely with (not necessarily a full integration):

\n
    \n
  • Yoast SEO
  • \n
  • AMP plugin (Automattic’s Accelerated Mobile Pages)
  • \n
  • Accelerated Mobile Pages – AMP for WP
  • \n
  • WPRichSnippets
  • \n
  • The SEO Framework
  • \n
  • WPBakery Page Builder
  • \n
  • ThirstyAffiliates
  • \n
  • [Premium] WooCommerce: Schema for WooCommerce extension.
  • \n
  • Easy Digital Downloads (EDD)
  • \n
\n

Supported Themes

\n

The plugin should work fine with any well coded WordPress theme, however these themes were tested and works properly with the plugin.

\n
    \n
  • Genesis 2.x
  • \n
  • Thesis 2.x
  • \n
  • Divi
  • \n
\n

Premium support

\n

schema.press team does not always provide active support for the Schema plugin on the WordPress.org forums, as we prioritize our email support. One-on-one email support is available to people who bought Schema Premium only.

\n

Note that the premium Schema Plugin also has several extra features too, including the option to enable more schema.org types, set content location target for markup, and map schema.org properties, so it is well worth your investment!

\n

Developers?

\n

Feel free to fork the project on GitHub and submit your contributions via pull request.

\n","download_link":"https://downloads.wordpress.org/plugin/schema.zip","tags":{"json-ld":"JSON-LD","rich-snippets":"rich snippets","schema":"schema","schema-org":"schema.org","structured-data":"structured data"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=NGVUBT2QXN7YL","icons":{"1x":"https://ps.w.org/schema/assets/icon-128x128.png?rev=1750172","2x":"https://ps.w.org/schema/assets/icon-256x256.png?rev=1750173"},"wporg":true},{"name":"Iframely – rich media embeds for 2000+ publishers","slug":"iframely","version":"0.7.2","author":"Itteco Corp.","author_profile":"https://profiles.wordpress.org/ivanp","requires":"3.5.1","tested":"5.4.6","requires_php":false,"rating":80,"ratings":{"1":2,"2":0,"3":1,"4":0,"5":7},"num_ratings":10,"support_threads":1,"support_threads_resolved":0,"active_installs":3000,"downloaded":97238,"last_updated":"2020-05-22 5:21pm GMT","added":"2013-10-03","homepage":"http://wordpress.org/plugins/iframely/","short_description":"Iframely extends WordPress default rich media embeds and adds support of over 2000 more providers…","description":"

Iframely extends WordPress default embeds and adds over 2000 more providers and cards as URL previews for the rest of the Web. Provides responsive embed codes, works with AMP.

\n

Just like default WordPress embeds, Iframely will detect URLs in your posts and replace it with responsive embed codes. Supports all usual suspects such as YouTube, Vimeo, Instagram, Facebook, Giphy, GfyCat, Imgur, Google +, GitHub Gists, Storify, SlideShare, Streamable, Vidme, Reddit, Dailymotion, Spotify, Tableau, Prezi, Apester, QZZR, Tidal, MLB. Well over two thousand of providers and keeps growing.

\n

Test your URL here to check if we support it.

\n

Iframely also generates and hosts summary cards as URL previews for general articles. It includes your own site, and Iframely can replace the default embed cards that your publish via WordPress for other sites to use.

\n

API key and paid/free

\n

Powered by Iframely cloud service and requires an account with us. Grab an API key for extended trial at iframely.com, or test the plugin out without an API key.

\n

Before you push the plugin to production, a service subscription is required to avoid any possible disruptions.

\n

We maintain an overwhelming number of integrations and widgets in the background for you, and make sure your sites remains fast and keeps your users happy. This requires a substantial effort on our part, and we won’t be able to provide it without requiring a service subscription.

\n

How to use:

\n

The plugin works the same way the standard oEmbed is supported by WordPress: URL on a separate line.

\n

For example,

\n
Check out this cool video:\n\nhttp://your.url/here\n\nThat was a cool video.\n
\n

Iframely also has its own shortcode [iframely]http://your.url/here[/iframely].

\n

Heads-up:

\n

Iframely does not simply wrap URLs with <iframe src=...> code. That’s not what Iframely is for. We can only match URLs to the known embed codes if publisher offers them for manual copy-paste, or generate a summary card for URL preview if a publisher provides at least a thumnnail image.

\n

To keep default embed providers

\n

By default, Iframely will inject itself to be the first embeds provider in the list, thus intercepting all URLs. It means that the default providers that are later in the list won’t get called and will thus be disabled.

\n

It means Iframely replaces default YouTube, Vimeo, Twitter, other oEmbed plugins that you might have(like JetPack), etc.

\n

Although we should support the same providers and output the same code, just make it responsive and add extra features, you can still disable such behavior and tell Iframely to only process links that otherwise don’t have an embed provider.

\n

Just choose this option in your settings. It will essentially put Iframely to be the last in the list, be “a catcher”, rather then “an interceptor”.

\n

URL editor options

\n

You can fine-tune many aspects of Iframely on your dashboard at iframely.com. This would include some most common settings for popular rich media publishers. Our support team can also fine-tune many other publishers, just for you.

\n

However, you might need a per-post editor for the widgets options. And, Iframely does provide this too. It’s done via URL options editor, and available for higher-tier plans, or during your initial trial period. Make sure to check it out.

\n

AMP support

\n

Yes, Iframely works nicely with AMP WP plugin. It catches all missing embeds and follow your Iframely settings. But you can also opt to have Iframely for all embeds, including default AMP embeds too. For example, Facebook video will be indeed a nice video without user’s text message.

\n","download_link":"https://downloads.wordpress.org/plugin/iframely.zip","tags":{"embed":"embed","embed-code":"embed code","iframely":"iframely","oembed":"oembed","responsive":"responsive"},"donate_link":"","icons":{"default":"https://s.w.org/plugins/geopattern-icon/iframely.svg"},"wporg":true},{"name":"Pym.js Embeds","slug":"pym-shortcode","version":"1.3.2.4","author":"INN Labs","author_profile":"https://profiles.wordpress.org/automattic","requires":"3.0.1","tested":"5.4.6","requires_php":"5.3","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":1,"support_threads_resolved":0,"active_installs":100,"downloaded":2298,"last_updated":"2020-03-26 6:09pm GMT","added":"2016-06-17","homepage":"https://github.com/INN/pym-shortcode","short_description":"A WordPress block and shortcode for embedding iframes that are responsive horizontally and vertically, using…","description":"

Pym.js Embeds provides shortcode and Gutenberg block wrappers for embedding responsive iframes using Pym.js, developed by the NPR Visuals Team. Embedded content resizes vertically to match its container’s width.

\n

AMP compatibility is provided by the official AMP plugin.

\n

Pym.js Resources from NPR

\n

You may also want to look at NPR’s Pym.js resources:

\n\n","download_link":"https://downloads.wordpress.org/plugin/pym-shortcode.1.3.2.4.zip","tags":{"embeds":"Embeds","iframe":"iframe","javascript":"javascript","responsive":"responsive","shortcode":"shortcode"},"donate_link":"https://inn.org/donate","icons":{"1x":"https://ps.w.org/pym-shortcode/assets/icon.svg?rev=1944461","svg":"https://ps.w.org/pym-shortcode/assets/icon.svg?rev=1944461"},"wporg":true},{"name":"PWA","slug":"pwa","version":"0.6.0","author":"PWA Plugin Contributors","author_profile":"https://profiles.wordpress.org/westonruter","requires":"5.5","tested":"5.7.2","requires_php":"5.6","rating":84,"ratings":{"1":3,"2":0,"3":0,"4":0,"5":12},"num_ratings":15,"support_threads":8,"support_threads_resolved":6,"active_installs":40000,"downloaded":291751,"last_updated":"2021-03-09 8:50pm GMT","added":"2018-07-12","homepage":"https://github.com/GoogleChromeLabs/pwa-wp","short_description":"WordPress feature plugin to bring Progressive Web App (PWA) capabilities to Core","description":"

\nProgressive Web Apps are user experiences that have the reach of the web, and are:

\n
    \n
  • Reliable – Load instantly and never show the downasaur, even in uncertain network conditions.
  • \n
  • Fast – Respond quickly to user interactions with silky smooth animations and no janky scrolling.
  • \n
  • Engaging – Feel like a natural app on the device, with an immersive user experience.
  • \n
\n

This new level of quality allows Progressive Web Apps to earn a place on the user’s home screen.\n

\n

Continue reading more about Progressive Web Apps (PWA) from Google.

\n

In general a PWA depends on the following technologies to be available:

\n\n

This plugin serves as a place to implement support for these in WordPress with the intention of being proposed for core merge, piece by piece.

\n

This feature plugin is not intended to obsolete the other plugins and themes which turn WordPress sites into PWAs. Rather, this plugin is intended to provide the PWA building blocks and coordination mechanism for these themes and plugins to not reinvent the wheel and also to not conflict with each other. For example, a theme that implements the app shell model should be able to extend the core service worker while a plugin that provides push notifications should be able to do the same. Themes and plugins no longer should have to each create a service worker on their own, something which is inherently problematic because only one service worker can be active at a time: only one service worker can win. If you are developing a plugin or theme that includes a service worker, consider relying on this PWA plugin, or at least only use the built-in implementation as a fallback for when the PWA plugin is not available.

\n

In versions prior to 0.6, no caching strategies were added by default. The only service worker behavior was to serve an offline template when the client’s connection is down or the site is down, and also to serve an error page when the server returns with 500 Internal Server Error. As of 0.6, there is a new “Offline browsing” toggle on the Reading Settings screen in the admin. It is disabled by default, but when enabled a network-first caching strategy is registered for navigations so that the offline page won’t be shown when accessing previously-accessed pages. The network-first strategy is also used for assets from themes, plugins, and WordPress core. In addition, uploaded images get served with a stale-while-revalidate strategy. For all the details on these changes, see the pull request.

\n

Documentation for the plugin can be found on the GitHub project Wiki.

\n

Development of this plugin is done on GitHub. Pull requests welcome. Please see issues reported there before going to the plugin forum.

\n","download_link":"https://downloads.wordpress.org/plugin/pwa.0.6.0.zip","tags":{"https":"https","progressive-web-apps":"progressive web apps","pwa":"pwa","service-workers":"service-workers.","web-app-manifest":"web app manifest"},"donate_link":"","icons":{"1x":"https://ps.w.org/pwa/assets/icon.svg?rev=1908485","2x":"https://ps.w.org/pwa/assets/icon-256x256.png?rev=1908485","svg":"https://ps.w.org/pwa/assets/icon.svg?rev=1908485"},"wporg":true},{"name":"MC4WP: Mailchimp for WordPress","slug":"mailchimp-for-wp","version":"4.8.6","author":"ibericode","author_profile":"https://profiles.wordpress.org/dvankooten","requires":"4.6","tested":"5.8","requires_php":"5.3","rating":96,"ratings":{"1":35,"2":10,"3":16,"4":35,"5":1277},"num_ratings":1373,"support_threads":46,"support_threads_resolved":43,"active_installs":2000000,"downloaded":35714933,"last_updated":"2021-08-04 7:14am GMT","added":"2013-06-19","homepage":"https://www.mc4wp.com/#utm_source=wp-plugin&utm_medium=mailchimp-for-wp&utm_campaign=plugins-page","short_description":"Mailchimp for WordPress, the #1 unofficial Mailchimp plugin.","description":"

Mailchimp for WordPress

\n

Allowing your visitors to subscribe to your newsletter should be easy. With this plugin, it finally is.

\n

This plugin helps you grow your Mailchimp lists and write better newsletters through various methods. You can create good looking opt-in forms or integrate with any existing form on your site, like your comment, contact or checkout form.

\n\n

Some (but not all) features

\n
    \n
  • \n

    Connect with your Mailchimp account in seconds.

    \n
  • \n
  • \n

    Sign-up forms which are good looking, user-friendly and mobile optimized. You have complete control over the form fields and can send anything you like to Mailchimp.

    \n
  • \n
  • \n

    Seamless integration with the following plugins:

    \n
      \n
    • Default WordPress Comment Form
    • \n
    • Default WordPress Registration Form
    • \n
    • Contact Form 7
    • \n
    • WooCommerce
    • \n
    • Gravity Forms
    • \n
    • Ninja Forms 3
    • \n
    • WPForms
    • \n
    • BuddyPress
    • \n
    • MemberPress
    • \n
    • Events Manager
    • \n
    • Easy Digital Downloads
    • \n
    • Give
    • \n
    • UltimateMember
    • \n
    \n
  • \n
  • \n

    A multitude of available add-on plugins and integrations:

    \n\n
  • \n
  • \n

    Well documented. Our knowledge base is updated daily.

    \n
  • \n
  • \n

    Developer friendly. For inspiration, check out our repository of example code snippets.

    \n
  • \n
\n
\n

Become a Premium user

\n

Mailchimp for WordPress has a Premium add-on which comes with several additional benefits.

\n
    \n
  • Multiple forms
  • \n
  • Advanced e-commerce integration for WooCommerce
  • \n
  • Email notifications
  • \n
  • An easy way to style your forms
  • \n
  • Detailed reports & statistics
  • \n
\n

View more Premium features

\n
\n

What is Mailchimp?

\n

Mailchimp is a newsletter service that allows you to send out email campaigns to a list of email subscribers. It is free for lists up to 2000 subscribers, which is why it is the newsletter-service of choice for thousands of businesses.

\n

This plugin allows you to tightly integrate your WordPress site with your Mailchimp account.

\n

If you are not yet using Mailchimp, creating an account is 100% free and only takes you about 30 seconds.

\n

Support

\n

Use the WordPress.org plugin forums for community support where we try to help all of our users. If you found a bug, please create an issue on Github where we can act upon them more efficiently.

\n

If you’re a premium user, please use the email address inside the plugin for support as that will guarantee a faster response time.

\n

Please take a look at the Mailchimp for WordPress knowledge base as well.

\n

Add-on plugins

\n

There are several add-on plugins available, which help you get even more out of your site.

\n

Translations

\n

You can help translate Mailchimp for WordPress into your language using your WordPress.org account.

\n

Development

\n

This plugin is being developed on GitHub. If you want to collaborate, please look at ibericode/mailchimp-for-wordpress.

\n

Customizing the plugin

\n

The plugin provides various filter & action hooks that allow you to modify or extend default behavior. We’re also maintaining a collection of sample code snippets.

\n","download_link":"https://downloads.wordpress.org/plugin/mailchimp-for-wp.4.8.6.zip","tags":{"email":"email","mailchimp":"mailchimp","marketing":"marketing","mc4wp":"mc4wp","newsletter":"newsletter"},"donate_link":"https://www.mc4wp.com/#utm_source=wp-plugin-repo&utm_medium=mailchimp-for-wp&utm_campaign=donate-link","icons":{"1x":"https://ps.w.org/mailchimp-for-wp/assets/icon-128x128.png?rev=1224577","2x":"https://ps.w.org/mailchimp-for-wp/assets/icon-256x256.png?rev=1224577"},"wporg":true},{"name":"Site Kit by Google","slug":"google-site-kit","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://sitekit.withgoogle.com/","short_description":"

Site Kit is the official WordPress plugin from Google for insights about how people find and use your site. Site Kit is the one-stop solution to deploy, manage, and get insights from critical Google tools to make the site successful on the web. It provides authoritative, up-to-date insights from multiple Google products directly on the

\n

Read More

\n","description":"\n\n\n

Site Kit is the official WordPress plugin from Google for insights about how people find and use your site. Site Kit is the one-stop solution to deploy, manage, and get insights from critical Google tools to make the site successful on the web. It provides authoritative, up-to-date insights from multiple Google products directly on the WordPress dashboard for easy access, all for free.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2019/12/site-kit-by-google-logo-285x160.png","2x":"https://amp-wp.org/wp-content/uploads/2019/12/site-kit-by-google-logo-372x209.png","svg":""},"wporg":false},{"name":"Newspack Blocks","slug":"newspack-blocks","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://github.com/Automattic/newspack-blocks","short_description":"

A collection of useful and easy to use Gutenberg based blocks, developed primarily for the Newspack project.

\n","description":"\n\n\n

A collection of useful and easy to use Gutenberg based blocks, developed primarily for the Newspack project.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2019/11/newspack_blocks-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2019/11/newspack_blocks-372x209.jpg","svg":""},"wporg":false},{"name":"Advanced Ads – Ad Manager & AdSense","slug":"advanced-ads","version":"1.28.0","author":"Thomas Maier, Advanced Ads GmbH","author_profile":"https://profiles.wordpress.org/webzunft","requires":"4.9","tested":"5.8","requires_php":"5.6","rating":98,"ratings":{"1":17,"2":1,"3":9,"4":21,"5":1181},"num_ratings":1229,"support_threads":73,"support_threads_resolved":68,"active_installs":100000,"downloaded":5160565,"last_updated":"2021-09-07 8:15am GMT","added":"2014-06-23","homepage":"https://wpadvancedads.com","short_description":"Manage and optimize all ad types. Support for Google AdSense Auto ads, Amazon, image banners,…","description":"

Are you looking for a simple ad manager plugin? These are the top arguments to use Advanced Ads:

\n
    \n
  • approved in publishing and ad optimization since 2009
  • \n
  • works with all ad types and networks, including Google AdSense, Google Ad Manager (formerly Google DoubleClick for Publishers, DFP), Amazon ads, or media.net ads
  • \n
  • most features to test and optimize ads
  • \n
  • unlimited ad units
  • \n
  • ads.txt support
  • \n
  • dedicated ad block for the block editor
  • \n
  • Google AdSense Partner, who implements all technical changes early and in 100% compliance with the Google AdSense policies
  • \n
  • the only advertising solution with Ad Health integration and Google AdSense violation checks
  • \n
  • best rated free support
  • \n
\n

This is what our users are saying about Advanced Ads:

\n
\n

We use this plugin to deliver rotating ads on a community news site, and it’s great. Both feature-rich and reliable, your imagination is the limit when it comes to the product you want to create for your users. We’ve delivered over a million ad impressions since we launched less than a year ago, using a combination of sidebar, top, sticky and in-content placements — both HTML5 and images. Advanced Ads makes it easy for our small team to deliver a good experience to our users and our advertisers.
\n mytown304 on wp.org

\n
\n

Would you like to know if there is a certain feature, what the optimized setup would be, or how to implement your client’s demands? Just open a thread in the forum!

\n

Advanced Ads allowed us to grow from 0 to 100 MM monthly ad impressions. Benefit from our experience as a publisher and monetize your website today!

\n

Full Feature List.

\n

ad management

\n
    \n
  • create and display unlimited ad units
  • \n
  • rotate ads
  • \n
  • schedule ads and set start time and expiration date
  • \n
  • target ads by content and user groups
  • \n
  • inject ads into posts and pages automatically without coding
  • \n
\n

ad types

\n

choose between different ad types that enable you to:

\n
    \n
  • insert ads and banners from all ad and affiliate networks (e.g., Google AdSense, Amazon, BuySellAds, Google Ad Manager (formerly Google DoubleClick for Publishers, DFP), Ezoic, media.net, Booking.com, Tradedoubler, Awin, Getyourguide, The Moneytizer, Infolinks…)
  • \n
  • dedicated support for all types of Google AdSense ads, including text and display ads, native ads (In-article, In-feed, matched content), Auto ads, and Auto ads for AMP
  • \n
  • display images and image banners
  • \n
  • create content-rich ads with the WordPress TinyMCE editor
  • \n
  • insert contextual Amazon Native Shopping Ads
  • \n
  • inject HTML, CSS, Javascript or PHP code
  • \n
  • use shortcodes within ads (to also deliver advertisements from another ad plugin like Ad Inserter, AdRotate, Quick AdSense, WP Bannerize, or the Google AdSense Plugin WP QUADS)
  • \n
\n

display ads for WP

\n
    \n
  • auto-inject ads via placements
  • \n
  • use functions to display ads in template files
  • \n
  • use shortcodes to place ads manually in post content
  • \n
  • show ads in the sidebar and in widgets
  • \n
  • disable all ads on specific pages
  • \n
  • display multiple ads (ad blocks)
  • \n
  • display a customizable ad label, e.g., “Advertisements” above each banner ad
  • \n
\n

display conditions

\n

show ads based on conditions like:

\n
    \n
  • individual posts, pages, and other post types
  • \n
  • posts by category, tags, taxonomies, author, and age
  • \n
  • archive pages by category, tags, taxonomies
  • \n
  • special page types like 404, attachment and front page
  • \n
  • hide ads on secondary queries (e.g., posts in sidebars)
  • \n
  • display or hide banners within the post feed
  • \n
  • hide all ads from specific page types, e.g., 404 pages, feed
  • \n
  • hide ads from bots and web crawlers
  • \n
\n

visitor conditions

\n

serve ads by conditions based on the visitor. List of all visitor conditions

\n
    \n
  • display or hide a banner by device: mobile and tablet or desktop
  • \n
  • display or hide a banner by role and for logged-in visitors
  • \n
  • advanced visitor conditions: previously visited URL (referrer), user capability, browser language, browser and device, URL parameters included in Pro
  • \n
  • display ads by geolocation with the Geo Targeting add-on
  • \n
  • display ads by browser width with the Responsive add-on
  • \n
\n
\n

Fantastic plugin and outstanding support
\n I tried at least three other ad plugins for WordPress and ‘Advanced Ads’ is by and far the best one. Last but not least in the support. The first port of call are a number of excellent tutorials. And finally the hands on support. I don’t quite know how he does it but the speed and depth of responses are absolutely amazing.
\n djsawyer on wp.org

\n
\n

ad injection | placements

\n

Placements to insert ads in pre-defined positions in your theme and content. List of all placements

\n
    \n
  • ads after any given paragraph, headline, image, or other HTML element
  • \n
  • ads at the top or bottom of the post content
  • \n
  • ads before closing </head> tag
  • \n
  • ads in the footer
  • \n
  • test placements against each other with Pro (A/B testing)
  • \n
  • many more ad positions with add-ons
  • \n
  • automatic insertion of any kind of code into header or footer, not only advertising
  • \n
\n

mobile devices

\n
    \n
  • display ads on mobile and tablets or desktop only
  • \n
  • display responsive image ads
  • \n
  • ads for specific browser sizes only using Responsive Ads
  • \n
  • inserting ads on AMP pages with Responsive Ads
  • \n
\n

Google AdSense

\n

Amazing features of the most powerful and easy Google AdSense plugin.

\n
    \n
  • unlimited Google AdSense ads banners
  • \n
  • pull ad units directly from your Google AdSense account
  • \n
  • show AdSense revenue in WP Admin
  • \n
  • change settings of your Google AdSense ads directly from your WordPress backend
  • \n
  • supports all Google AdSense ad types, including Google AdSense display ads, native ads like In-feed ads, In-article ads, matched content ads, Google AdSense Auto ads, and Google AdSense Auto ads for AMP
  • \n
  • change type and sizes of AdSense ads without going into your Google AdSense account
  • \n
  • hide Google AdSense advertisements on 404 pages by default (to comply with Google AdSense terms)
  • \n
  • insert Google AdSense code for verification and AdSense Auto Ads
  • \n
  • enable AdSense Auto ads on AMP
  • \n
  • easy Ad Health integration and Google AdSense violation checks
  • \n
  • option to remove the Google AdSense background color
  • \n
  • place Google AdSense In-feed ads using the also free In-feed add-on
  • \n
  • assistant for exact sizes of responsive Google AdSense ads with the Responsive add-on
  • \n
  • convert Google AdSense ads into AMP ads automatically with the Responsive add-on
  • \n
  • ads.txt generated with the correct AdSense information automatically
  • \n
  • works along with Google Site Kit or can replace it if you want to control your ad placements
  • \n
\n

\n

\n

Like j4ckson185, there are thousands of happy AdSense users:

\n
\n

Your app is awesome, congratulations! Google Adsense suggests using your app on its official website, it’s incredible!

\n
\n

ads.txt

\n
    \n
  • generates an ads.txt with custom content
  • \n
  • adds the content for AdSense to the ads.txt automatically
  • \n
\n

\n

\n

ad blocker

\n
    \n
  • basic features to prevent ads from being removed by AdBlock and other ad blockers
  • \n
  • prevent ad blockers from breaking sites where plugin scripts are running
  • \n
  • ad blocking detection: show alternative content to ad block users with Pro and improve the monetization of your website
  • \n
\n

Learn more on the plugin homepage.

\n

Thank you for motivating us with your positive review.

\n

Localizations: Arabic, Chinese, Czech, Danish, Dutch, English, French, German, Hungarian, Italian, Japanese, Norwegian, Polish, Portuguese, Russian, Slovak, Spanish, Turkish, Vietnamese

\n
\n

Add-Ons

\n
    \n
  • all add-ons include priority email support
  • \n
  • Advanced Ads Pro – powerful tools for ad optimizations: cache-busting, more placements, lazy loading, ad blocker module, click fraud protection, and many more
  • \n
  • Tracking – track ad impressions and ad clicks with local methods or Google Analytics
  • \n
  • Responsive Ads – target ads to specific browser sizes and create ads for AMP
  • \n
  • Google Ad Manager Integration – a quick and error-free way to load ad units from your Google Ad Manager (formerly Google DoubleClick for Publishers, DFP) account without touching any ad codes
  • \n
  • Geo Targeting – display ads based on the geo location of the visitor
  • \n
  • Sticky Ads – increase click rates with fixed, sticky, and anchor ads
  • \n
  • Fixed Widget for WordPress – turn sidebar widgets into performant fixed sticky ads
  • \n
  • PopUp and Layer Ads – display ads and other content in layers and popups
  • \n
  • Selling Ads – allows you to sell ads on your website fully automated, including payments and advertiser profiles.
  • \n
  • Ad Slider – create a simple slider from your ads
  • \n
\n
\n

If you have problems with Advanced Ads, please reach out to our support or open a new topic in our forums on wordpress.org
\n.

\n

Integrations

\n

Advanced Ads integrates with plenty of other plugins:

\n\n","download_link":"https://downloads.wordpress.org/plugin/advanced-ads.1.28.0.zip","tags":{"ad-manager":"ad manager","ad-rotation":"ad rotation","ads":"ads","adsense":"adsense","banner":"banner"},"donate_link":"","icons":{"1x":"https://ps.w.org/advanced-ads/assets/icon-128x128.gif?rev=2293174","2x":"https://ps.w.org/advanced-ads/assets/icon-256x256.gif?rev=2293174"},"wporg":true},{"name":"Syntax-highlighting Code Block (with Server-side Rendering)","slug":"syntax-highlighting-code-block","version":"1.3.1","author":"Weston Ruter","author_profile":"https://profiles.wordpress.org/westonruter","requires":"5.5","tested":"5.7.2","requires_php":"5.6","rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":18},"num_ratings":18,"support_threads":1,"support_threads_resolved":0,"active_installs":1000,"downloaded":11981,"last_updated":"2021-03-09 8:51pm GMT","added":"2019-07-30","homepage":"https://github.com/westonruter/syntax-highlighting-code-block","short_description":"Extending the Code block with syntax highlighting rendered on the server, thus being AMP-compatible and…","description":"

This plugin extends the Code block in WordPress core to add syntax highlighting which is rendered on the server. Pre-existing Code blocks on a site are automatically extended to include syntax highlighting. Doing server-side syntax highlighting eliminates the need to enqueue any JavaScript on the frontend (e.g. Highlight.js or Prism.js) and this ensures there is no flash of unhighlighted code (FOUC?). Reducing script on the frontend improves frontend performance and it also allows for the syntax highlighted code to appear properly in AMP pages as rendered by the official AMP plugin (see also ampproject/amp-wp#972) or when JavaScript is turned off in the browser.

\n

In addition to not adding any JavaScript to the frontend, the stylesheets needed for styling the Code block will only be added to the page if there is a Code block present. The stylesheets are added inline when the Code block is rendered, ensuring that they do not block rendering of any content higher in the page. If stylesheets fail to load for any reason, the block simply renders without styling, with one key exception: highlighted lines are wrapped in mark elements so they’ll get highlighted regardless, including in RSS Feeds and posts syndicated in email (as long as the mark element is supported in the client).

\n

This extended Code block uses language auto-detection to add syntax highlighting, but you can override the language in the block’s settings sidebar. (There is currently no syntax highlighting of the Code block in the editor.) The plugin supports all programming languages that highlight.php supports (being a port of highlight.js). The Code block also is extended to support specifying the aforementioned highlighted lines. There is also a checkbox for whether to show line numbers on the frontend (with the numbers being non-selectable). Lastly, given inconsistencies across themes as to whether lines in a Code block should be wrapped, this plugin adds styling to force them to no-wrap by default, with a checkbox to opt-in to wrapping when desired.

\n

For advanced usage, please see the plugin wiki.

\n

This plugin is developed on GitHub. See list of current issues with the plugin. Please feel free to file any additional issues or requests that you may come across. Pull requests are welcome.

\n

Credits

\n

This is a fork of Code Syntax Block by Marcus Kazmierczak (mkaz), which is also available on WordPress.org. Copyright (c) 2018 Marcus Kazmierczak. Licensed under GPL 2.0 or later.

\n

highlight.php is released under the BSD 3-Clause License. Copyright © 2006-2013, Ivan Sagalaev (maniac@softwaremaniacs.org), highlight.js (original author). Copyright © 2013, Geert Bergman (geert@scrivo.nl), highlight.php

\n","download_link":"https://downloads.wordpress.org/plugin/syntax-highlighting-code-block.1.3.1.zip","tags":{"block":"block","code":"code","code-highlighting":"code highlighting","code-syntax":"code syntax","syntax-highlight":"syntax highlight"},"donate_link":"","icons":{"1x":"https://ps.w.org/syntax-highlighting-code-block/assets/icon.svg?rev=2131108","2x":"https://ps.w.org/syntax-highlighting-code-block/assets/icon-256x256.png?rev=2131108","svg":"https://ps.w.org/syntax-highlighting-code-block/assets/icon.svg?rev=2131108"},"wporg":true},{"name":"Contact Form by WPForms – Drag & Drop Form Builder for WordPress","slug":"wpforms-lite","version":"1.6.9","author":"WPForms","author_profile":"https://profiles.wordpress.org/jaredatch","requires":"4.9","tested":"5.8","requires_php":"5.5","rating":98,"ratings":{"1":210,"2":46,"3":54,"4":219,"5":9583},"num_ratings":10112,"support_threads":98,"support_threads_resolved":82,"active_installs":4000000,"downloaded":81563291,"last_updated":"2021-08-26 11:06am GMT","added":"2016-03-14","homepage":"https://wpforms.com","short_description":"The best WordPress contact form plugin. Drag & Drop online form builder that helps you create beautiful contact forms with just a few clicks.","description":"

WordPress Contact Form Builder Plugin

\n

We believe that you shouldn’t have to hire a developer to create a WordPress contact form. That’s why we built WPForms, a drag & drop WordPress form builder that’s EASY and POWERFUL.

\n

WPForms allows you to create beautiful contact forms, feedback form, subscription forms, payment forms, and other types of forms for your site in minutes, not hours!

\n

At WPForms, user experience is our #1 priority. Our pre-built form templates and workflows make WPForms the most beginner friendly contact form plugin in the market.

\n

The WPForms Challenge guides you through creating your first form in under 5 minutes. We walk you through using the form builder all the way to adding a form to a page on your site! WPForms includes integrations for popular page builders like the WordPress Block Editor (Gutenberg), Classic Editor, Elementor, and Divi making the whole process seamless.

\n

WPForms is a 100% mobile responsive contact form solution, so your contact forms will always look great on all devices (mobile, tablet, laptop, and desktop).

\n

WPForms’ contact forms are also highly optimized for web and server performance because we understand the importance of speed when it comes to SEO, marketing, and conversion. We can honestly say that WPForms is one of the fastest WordPress contact form builder plugins in the world.

\n
\n

WPForms Pro
\n This plugin is the lite version of the WPForms Pro plugin that comes with all the contact form features you will ever need including email subscription forms, multi-page contact forms, file uploads, conditional logic, payment integrations, form templates, and tons more. Click here to purchase the best premium WordPress contact form plugin now!

\n
\n

We took the pain out of creating contact forms and made it easy. Here’s why smart business owners, designers, and developers love WPForms, and you will too!

\n

\n

Drag & Drop Contact Form Builder

\n

We were tired of the bloated and buggy contact form builder plugins. That’s why we built WPForms to adapt to your workflow and allow you to create custom contact forms in minutes. By using our easy to use drag and drop online form builder, you can easily add custom form fields, rearrange them, and basically create a complete contact form in 5 minutes or less.

\n

But don’t just take our word. See what one of the WordPress experts are saying:

\n
\n

WPForms is by far the easiest form plugin to use. My clients love WPForms and it’s one of the few plugins they can use without any training. As a developer I appreciate how fast, modern, clean and extensible it is.
\n Bill Erickson – Expert WordPress Consultant

\n
\n

Pre-built Form Templates

\n

Building contact forms in WordPress can be time consuming. Why?

\n

Because every other WordPress contact form builder plugin requires you to build your contact form from scratch. The truth is it’s often not necessary to create a contact form completely from scratch unless you really want to.

\n

Whether you’re looking to create a simple contact form, marketing form, request a quote form, donation form, payment order form, registration form, or a subscription form, we have a form template for you inside our contact form builder.

\n

WPForms comes with pre-built form templates to help you save time. You can add, remove, or re-arrange fields as necessary.

\n

See 100+ Pre-Made WPForms Form Template Demo

\n

Mobile Ready, SEO Friendly and Optimized for Speed

\n

WPForms’ contact forms are 100% responsive and mobile-friendly by default. We also optimized every query on the front-end and the back-end to ensure maximum speed – Yes, WPForms is one of the fastest WordPress contact form plugin.

\n

You can embed your contact form on any page with optimized title and description. With the speed and proper formatting, WPForms is also one of the most SEO friendly contact form plugin.

\n

All the Fields & Features that You Need to Succeed

\n

From star ratings to file uploads to multi-page contact forms with progress bar, we have all the fields you need.

\n

You can easily integrate your contact forms with an email marketing service or collect payments for bookings and orders. WPForms allows you to do it all.

\n

The best part is, you can do it all without hiring a developer.

\n

See what one business owner has to say about WPForms’ contact form:

\n
\n

As a business owner, time is my most valuable asset. WPForms allow me to create smart contact forms with just a few clicks. With their pre-built form templates and the drag & drop builder, I can create a new form that works in less than 2 minutes without writing a single line of code. Well worth the investment.
\n David Henzel – Co-founder of MaxCDN

\n
\n

Surveys & Polls

\n

Along with contact form, you can also use WPForms to create surveys and polls.

\n

Our WordPress Survey plugin addon comes with smart survey fields including likert scale, star ratings, multiple choice, Net Promoter Score (NPS), and more, so you can create custom survey forms like Survey Monkey (without the high costs).

\n

WPForms offer the best-in class survey reporting. You can use our interactive reports to customize the graphs, export them for your presentations, and even display the aggregate results to your users.

\n

The best part about WPForms survey reports is that it can retroactively work on any old contact form or feedback survey contact form created with WPForms.

\n

Thousands of businesses love WPForms surveys for creating employee feedback form, customer feedback form, online petition form, and more.

\n

You can also use the surveys & polls addon to easily create a poll on your site. To save you time when creating a user poll, we have added a built-in poll forms template. Our poll feature offers real-time reports, so you can share poll results with the user immediately after they submit their vote.

\n

Just like the contact form, you can embed your surveys and polls inside any post, page, or widget area in WordPress.

\n

Membership and Default WordPress Forms

\n

Aside from building simple contact forms which every WordPress site needs, WPForms also helps you create better default WordPress forms.

\n

For example, you can use WPForms to create custom WordPress login forms and custom WordPress user registration forms which are great for membership sites.

\n

For membership sites, you can also use WPForms to create a password-protected contact form or even a members only contact form which is restricited to logged-in users only.

\n

Even if you’re not using a WordPress membership plugin, you can use WPForms to create membership registration forms, online RSVP forms, and other address book contact forms.

\n

Bloggers and publishers can use our WordPress post submission forms to accept guest posts, testimonials contact form to collect testiomnials, and partnership agreement forms to grow their business.

\n

Payment Form, Donation Form, Booking Form, and More

\n

While WPForms started out as a contact form plugin, it has evolved into a powerful custom forms solution that you can use to create a payment form, donation form, registration form, online booking form, mobile form, and basically any type of custom form you need.

\n

WPForms integrates with both PayPal and Stripe, so you can easily create a credit card payment form to accept payments on your website. If you’re using SSL, then you can use our Stripe Payment form to accept credit card payments. Alternatively you can use our PayPal payment form to make a donation form and accept payments online.

\n

Aside from simple order forms, business owners also use WPForms to create custom product purchase forms, t-shirt order forms, online booking forms, and more.

\n

We understand that sometimes you may need to create a contact form that require a signature. WPForms comes with a signature field to collect user signature on your WordPress forms or even create custom signature forms.

\n

You can do all of this while still using the same easy-to-use contact form builder that’s loved by over 4 million users.

\n
\n

I am so impressed with this plugin. I decided to give it a shot over some of the other form plugins, and I am so glad I did. It works well, is so easy to use and customize. The support is amazing on top of it all. I got the pro version because I was so pleased. Highly recommend.
\n Micky73 – WordPress user

\n
\n

Forms that are Optimized for Conversion and Results

\n

With our Form Pages addon, you can create distraction-free custom form landing pages like Google Forms and Wufoo right inside WordPress, so you can increase conversions without the high costs (See Form Pages Demo).

\n

To improve form completion rate, we created Conversational Forms® which helps you make your generic feedback form and other custom contact forms feel more human by adding an interactive form layout. Our conversational forms are similar to Typeform without the high subscription costs (See Conversational Forms Demo).

\n

WPForms also has other conversion optimization features such as our smart form logic that lets you create dynamic contact forms where fields change based on user’s answer, multi-page contact forms with progress bar, and other advanced contact forms.

\n

WPForms form analytics integration with MonsterInsights allow you to easily track your lead capture forms, newsletter signup forms, request a quote contact form, and other important forms on your site.

\n

Easy to Customize and Extend

\n

You can easily customize your contact forms with our section dividers, HTML blocks, and custom CSS.

\n

If you’re using Elementor or Divi page builders our native integrations let you easily customize the style of your forms.

\n

We also knew that our developer friends may want to extend simple contact forms further. That’s why WPForms come with tons of hooks and filters to create custom functionality.

\n

Since contact forms are essential for marketing, WPForms is a must have plugin for every website!

\n

Full WPForms Feature List

\n
    \n
  • Online Form Builder – Our powerful drag & drop contact form builder allows you to easily create WordPress contact forms and other online forms in just a few minutes without writing any code.
  • \n
  • 100% Responsive – Mobile Friendly contact forms.
  • \n
  • GDPR Friendly – Make your contact form GDPR compatible with just a few clicks.
  • \n
  • Form Templates – Use our pre-built form templates to save time. Never start from scratch again (see all form templates demos).
  • \n
  • Spam Protection – WPForms provides smart anti-spam protection out-of-the-box, plus direct integrations with hCaptcha and Google reCAPTCHA.
  • \n
  • Instant Form Notification – Quickly respond to incoming inquiries with our instant contact form notification system.
  • \n
  • Smart Form Confirmation – Show a custom success message, or redirect users to a custom thank you page.
  • \n
  • File Uploads – Collect files and media through your contact forms with File Uploads.
  • \n
  • Multi-Page Forms – Split long forms into multiple pages with progress bar to improve user experience.
  • \n
  • Smart Conditional Logic – Show or hide fields and contact form sections based on user behavior.
  • \n
  • Signature Forms – Create signature forms or add the signature field to your contact form, application form, booking form, etc.
  • \n
  • User Registration Forms – Create custom user registration form and custom login form in WordPress.
  • \n
  • Post Submissions – Collect user-submitted content in WordPress with our front-end post submission form. Great for guest posts, testimonials, business directory, listings, etc.
  • \n
  • Geolocation – Display location information about your users.
  • \n
  • Custom Captchas – Create custom captchas for your contact form.
  • \n
  • Surveys and Polls – Easily create surveys forms and analyze the data with interactive reports.
  • \n
  • Form Abandonment – Unlock more leads and grow your business with partial-form submission.
  • \n
  • Form Locker – Manage form permissions and add access control rules including password-protected forms, members only forms, limit contact form entry per person, close form after specific date / time, etc.
  • \n
  • Offline Forms – Let your visitors save their entered data offline and submit when their internet connection is restored.
  • \n
  • Form Landing Pages – Create “distraction-free” form landing pages to boost conversions. Great Google Forms and Wufoo alternative.
  • \n
  • Conversational Forms – Interactive form layout that makes your form feels more human and boost overall completion rate. Great for surveys and registration forms. Perfect Typeform alternative for WordPress without the high costs.
  • \n
  • Webhooks – Send form entry data to secondary tools and external services. No code required, and no need for a third party connector.
  • \n
  • User Journey Reporting – Discover the steps your visitors take before they submit your forms. Right in the WordPress dashboard, you can easily see the content that’s driving the most valuable form conversions.
  • \n
\n

Integrations

\n
    \n
  • PayPal Payment Forms – Create PayPal forms to easily collect payments, donations, and online orders.
  • \n
  • Stripe Forms – Easily collect credit card payments, donations, and online orders with our Stripe addon.
  • \n
  • Authorize.Net Forms – Connect your WordPress site with Authorize.Net to collect payments, donations, and online orders.
  • \n
  • Mailchimp Forms – Create Mailchimp newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • AWeber Forms – Create AWeber newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • Campaign Monitor Forms – Create Campaign Monitor newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • GetResponse Forms – Create GetResponse newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • Constant Contact Forms – Create Constant Contact newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • Drip Forms – Create Drip newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • ActiveCampaign Forms – Add contacts to your ActiveCampaign account, record events, add notes to contacts, and more.
  • \n
  • Sendinblue Forms – Create Sendinblue forms to automate your marketing and engage your subscribers.
  • \n
  • Salesforce Forms – Easily send your WordPress form contacts and leads to your Salesforce CRM account.
  • \n
  • Zapier Addon – Connect your WordPress forms with over 1000+ apps. Route your contact form data to your favorite CRM, email marketing service, etc.
  • \n
\n

After reading this feature list, you can probably imagine why WPForms is the best WordPress contact form plugin in the market.

\n

Give WPForms a try.

\n

Want to unlock more features? Upgrade to our Pro version.

\n

Credits

\n

This plugin is created by Jared Atchison and Syed Balkhi.

\n

Branding Guideline

\n

WPForms® is a registered trademark of WPForms LLC. When writing about the contact form plugin by WPForms, please make sure to uppercase the initial 3 letters.

\n
    \n
  • WPForms (correct)
  • \n
  • WP Forms (incorrect)
  • \n
  • wpforms (incorrect)
  • \n
  • wpform (incorrect)
  • \n
\n

What’s Next

\n

If you like this plugin, then consider checking out our other projects:

\n
    \n
  • OptinMonster – Get More Email Subscribers with the most popular conversion optimization plugin for WordPress.
  • \n
  • MonsterInsights – See the stats that matter and grow your business with confidence. The best Google Analytics plugin for WordPress.
  • \n
  • SeedProd – Create beautiful landing pages with our powerful drag & drop landing page builder.
  • \n
  • WP Mail SMTP – Improve email deliverability for your contact form with the most popular SMTP plugin for WordPress.
  • \n
  • RafflePress – Best WordPress giveaway and contest plugin to grow traffic and social followers.
  • \n
  • Smash Baloon – #1 social feeds plugin for WordPress – display social media content in WordPress without code.
  • \n
  • AIOSEO – The original WordPress SEO plugin to help you rank higher in search results (trusted by over 2 million sites).
  • \n
  • Push Engage – Connect with visitors after they leave your website with the leading web push notification plugin.
  • \n
  • TrustPulse – Add real-time social proof notifications to boost your store conversions by up to 15%.
  • \n
\n

Visit WPBeginner to learn from our WordPress Tutorials and find out about other best WordPress plugins.

\n

Notes

\n

WPForms is absolutely, positively the most beginner friendly WordPress contact form plugin on the market. It is both easy and powerful.

\n

We took the pain out of creating online forms and made it easy. Check out all WPForms features.

\n

Also, I’m the founder of WPBeginner, the largest WordPress resource site for beginners. It was a huge priority for me to make a WordPress contact form plugin that beginners can use without any training.

\n

I feel that we have done that here. I hope you enjoy using WPForms.

\n

Thank you

\n

Syed Balkhi

\n","download_link":"https://downloads.wordpress.org/plugin/wpforms-lite.1.6.9.zip","tags":{"contact-form":"contact form","contact-form-plugin":"contact form plugin","custom-form":"custom form","form-builder":"form builder","forms":"forms"},"donate_link":"","icons":{"1x":"https://ps.w.org/wpforms-lite/assets/icon.svg?rev=2574198","2x":"https://ps.w.org/wpforms-lite/assets/icon-256x256.png?rev=2574201","svg":"https://ps.w.org/wpforms-lite/assets/icon.svg?rev=2574198"},"wporg":true},{"name":"MonsterInsights – Google Analytics Dashboard for WordPress (Website Stats Made Easy)","slug":"google-analytics-for-wordpress","version":"7.18.0","author":"MonsterInsights","author_profile":"https://profiles.wordpress.org/chriscct7","requires":"3.8.0","tested":"5.8","requires_php":"5.2","rating":92,"ratings":{"1":194,"2":39,"3":34,"4":75,"5":2078},"num_ratings":2420,"support_threads":9,"support_threads_resolved":8,"active_installs":3000000,"downloaded":96817891,"last_updated":"2021-08-10 9:06pm GMT","added":"2007-09-14","homepage":"https://www.monsterinsights.com/?utm_source=liteplugin&utm_medium=pluginheader&utm_campaign=pluginurl&utm_content=7%2E0%2E0","short_description":"The best free Google Analytics plugin for WordPress. See how visitors find and use your website, so you can grow your business.","description":"

Google Analytics Plugin for WordPress

\n

With over 3 million active installs, MonsterInsights is the most popular Google Analytics plugin for WordPress.

\n

We believe that it’s easy to double your traffic and sales when you know exactly how people find and use your website. MonsterInsights shows you the analytics and stats that matter, so you can grow your business with confidence.

\n

At MonsterInsights, we make it “effortless” to properly connect your WordPress site with Google Analytics, so you can start making data-driven decisions to grow your business.

\n

Unlike other Google Analytics plugins, MonsterInsights allow you to enable all advanced Google Analytics tracking features with just a few clicks (no need to hire a developer).

\n

The best part is that MonsterInsights comes with an analytics dashboard for WordPress that shows you actionable analytics reports right inside your WordPress dashboard. We have created customized reports that eliminate the fluff and only show you the stats that matter, so you can see exactly what’s working and what’s not!

\n

Simply put, MonsterInsights is the most complete Google Analytics plugin for WordPress that’s both EASY and POWERFUL.

\n

That’s why millions of small businesses and top companies like Microsoft, Bloomberg, FedEx, Yelp, Subway, etc. use MonsterInsights to setup Google Analytics on their WordPress sites.

\n
\n

MonsterInsights Pro
\n This plugin is the lite version of MonsterInsights Pro plugin that comes with all the tracking features you will ever need including events tracking, ecommerce tracking, custom dimensions tracking, page speed reports, popular post tracking, custom dimensions, affiliate link tracking, and tons more. Click here to purchase the best premium Google Analytics plugin for WordPress now!

\n
\n

We took the pain out of installing Google Analytics in WordPress and made it easy. Here’s why over 3 million smart business owners, designers, and developers love MonsterInsights, and you will too!

\n

\n

Quick & Easy Google Analytics Setup

\n

Properly setting up Google Analytics is complicated. You have to either hire a developer or learn how to add advanced code snippets to your website in many different areas. This process can take days or weeks…and can even break your website!

\n

With MonsterInsights, we made it “effortless” to properly setup Google Analytics in WordPress. Yes, you can enable all advanced Google Analytics features with just a few clicks.

\n

If you can point-and-click, then you can set up Google Analytics inside WordPress and start seeing insights in under 15 minutes (no code necessary).

\n

We keep up with all Google Analytics updates, so you can sleep well at night knowing that your website will always stay up to date with the newest features.

\n

See what one business owner is saying about MonsterInsights:

\n
\n

It just works. Really easy way to insert Google Analytics tracking code and keep it there when switching themes. No need to copy/paste code anywhere. This is the best way to handle Google Analytics in WordPress.
\n Steven Gliebe

\n
\n

Google Analytics Dashboard + Real Time Stats

\n

Our goal at MonsterInsights is to make Google Analytics easy and accessible for everyone.

\n

We understand that Google Analytics has a steep learning curve which often prevents small business owners from making informed decisions to grow their business.

\n

That’s why MonsterInsights comes with a built-in Google Analytics Dashboard for your WordPress site, so you can see all the useful information about your visitors right inside your WordPress dashboard without needing to login somewhere else.

\n

We have even created customized reports to help you filter through the noise and see the stats that really matter!

\n
    \n
  • \n

    Audience Report helps you get to know your visitors in a whole new way. It shows you detailed insights like which country your visitors are coming from, what are they most interested in, which device are they using, their age, gender, and a whole lot more. You can use this demographics report and audience clues to tweak your website design and content accordingly.

    \n
  • \n
  • \n

    **Publishers Report ** helps you understand which pages your visitors are arriving, and which pages they are leaving from. Designed specifically for blogs and other resource sites, this powerful report will show you which outbound links are getting clicked so you can easily optimize for higher conversions.

    \n
  • \n
  • \n

    Behavior Report shows you exactly how people find your website, which keywords did they search for, who referred them, what did they click on your site, and more. You can use these useful stats to identify low-hanging fruits, new partnership opportunities, and promotional areas to focus on.

    \n
  • \n
  • \n

    Content Report shows you stats on exactly which content gets the most visits, so you can stop guessing and start creating content that gets more traffic and conversion.

    \n
  • \n
  • \n

    Ecommerce Report shows you important store stats like total revenue, conversion rate, average order value, top referral sources, and more (all in one place).

    \n
  • \n
  • \n

    Forms Report shows you conversion stats for various contact forms and lead forms on your website, so you can improve the conversions to grow your business.

    \n
  • \n
  • \n

    Search Console Report shows you exactly how well your website is ranking in Google, so you can further optimize your SEO to grow your organic traffic.

    \n
  • \n
  • \n

    Custom Dimensions Report helps you dig deeper by showing you useful stats like who are your most popular authors, what are the best publication times, which are your most popular categories or tags, how well are your Yoast focus keywords and SEO score performing, and more.

    \n
  • \n
  • \n

    Site Speed Report makes it easy to track pagespeed insights and loading times for your website and get the information you need to improve user experience and your SEO rankings.

    \n
  • \n
\n

Our custom Google Analytics Dashboard reports are based on over 12+ years of online business experience. We built MonsterInsights to be the Google Analytics plugin that we wish we had.

\n

We currently use MonsterInsights on all our portfolio companies which include both media sites generating tens of millions of pageviews and eCommerce sites generating millions in sales.

\n

That’s why we can confidently say that MonsterInsights is the ultimate Google Analytics Shortcut for seeing the stats that matter and making data-driven decisions to grow your business.

\n
\n

I love being able to drill down into the analytics via the reporting feature. I have the PRO version and it makes a big difference what you can analyze. I’m glad that I can integrate with Pretty Links too!
\n Kim Beasley – MonsterInsights user

\n
\n

Google Analytics Enhanced Ecommerce Tracking Made Easy

\n

Google Analytics Enhanced Ecommerce tracking is a powerful feature that lets you track user behavior across your online store starting from product views to checkout page to thank you page and beyond.

\n

With MonsterInsights’ easy WooCommerce integration, you can setup WooCommerce analytics with literally 1-click.

\n

Once you have enabled WooCommerce tracking, MonsterInsights will show you all important WooCommerce metrics in a single dashboard including WooCommerce conversion rate, top products in your WooCommerce store, total transactions, total revenue, average order value, top referral sources, and more.

\n

Our WooCommerce analytics report also includes other detailed WooCommerce event tracking data like total add to carts, total removed from cart, time to purchase, and sessions to purchase.

\n

For those who want to go beyond our WooCommerce stats dashboard, you can easily open up the Google Analytics dashboard to combine WooCommerce data with other secondary dimensions and filters to find exactly what you’re looking for.

\n

Aside from WooCommerce Google Analytics integration, MonsterInsights’ eCommerce addon also offers seamless integration for the Easy Digital Downloads plugin.

\n

Our Easy Digital Downloads Google Analytics integration allows you to set up Enhanced Ecommerce Tracking on your store with just 1-click.

\n

Simply put, MonsterInsights’ Enhanced Ecommerce for WordPress feature is by far the easiest and most powerful in the market.

\n

Google Analytics + GDPR Compliance

\n

MonsterInsights helps make Google Analytics GDPR compliance easier for business owners.

\n

Our EU compliance addon allows you to:

\n
    \n
  • Anonymize IP in Google Analytics
  • \n
  • Disable the Demographics and Interest Reports for Remarketing and Advertising
  • \n
  • Disable UserID and author name tracking
  • \n
  • Enable the ga() compatibility mode
  • \n
  • Integrate with Cookie Notice and CookieBot plugins to collect user consent before tracking
  • \n
  • Integrate with Google AMP Consent Box before enable tracking
  • \n
  • Integrate with Google Analytics’s Chrome browser opt-out extension and built-in cookie opt-out system
  • \n
  • Offer Easy Opt Out link for Google Analytics tracking
  • \n
\n

While no single plugin can guarantee 100% GDPR compliance in WordPress, MonsterInsights goes to great length in helping business owners with GDPR compliance.

\n

For more details, see: GDPR and MonsterInsights – Everything You Need to Know.

\n

Universal Tracking + Google Analytics for AMP and Instant Articles

\n

MonsterInsights uses Google Analytics universal tracking, so you can track your users across devices and platforms.

\n

Accelerated Mobile Pages (AMP) is a project by Google that helps you speed up your website. However if you don’t set it up properly, Google AMP can cause you to lose your website analytics. Our Google Analytics AMP integration allows you to have accurate tracking on all AMP enabled pages. It works seamlessly with AMP for WordPress plugin.

\n

We also offer 1-click Google Analytics integration with Facebook Instant Articles.

\n

At MonsterInsights, we always stay ahead of the curve in helping you integrate WordPress with the latest Google Analytics tracking features.

\n
\n

Analytics for PROs! This plugin brings it all, great features and helpful info to easily see what you are doing.
\n Frank van der Sluijs

\n
\n

Google AdSense Tracking and Affiliate Link Tracking

\n

With MonsterInsights Ads tracking addon, publishers can easily track the performance of their Google AdSense Ads inside their Google Analytics dashboard.

\n

Our affiliate link tracking makes it easy for bloggers and affiliate marketers to track their affiliate links with Google Analytics.

\n

MonsterInsights uses event tracking for all WordPress outbound link tracking which is far more accurate than any built-in WordPress analytics solution.

\n

Unlike other WordPress analytics plugin, our Google Analytics affiliate link tracking does NOT slow down your website because all events are recorded via JavaScript and sent straight to your account.

\n

Most other WordPress stats plugin track data on your WordPress hosting server which slows down your website and does not scale for larger websites.

\n

Since our affiliate link tracking uses Google Analytics’ powerful servers, we can skip WordPress entirely.

\n

MonsterInsights’ affiliate link tracking feature works with all WordPress affiliate link management plugins including Pretty Links, Thirsty Affiliates, and others.

\n

Custom Dimensions Tracking, Custom Google Analytics Event Tracking, and More

\n

Our Google Analytics event tracking feature for WordPress doesn’t just stop at affiliate link tracking.

\n

You can use MonsterInsights custom Google analytics event tracking feature to easily add outbound-link tracking, file downloads tracking, call-to-action button tracking, hashmark tracking, telephone link tracking, and more.

\n

Our powerful Forms Tracking addon uses Google Analytics custom event tracking feature to enable form analytics in WordPress. With just 1-click, you can enable form conversion tracking for your contact forms, lead generation forms, registration forms, surveys, and any other type of form in WordPress.

\n

MonsterInsights’ Custom Dimensions addon allows you to push WordPress analytics even further. You can use Google Analytics custom dimensions to generate helpful WordPress stats for:

\n
    \n
  • Author Tracking – see stats for each author to find which author’s posts generate the most traffic.
  • \n
  • Post Type Tracking – see stats for WordPress post types to find out which sections are performing the best.
  • \n
  • Category Tracking – see stats for your WordPress categories to find out which sections of your sites are the most popular.
  • \n
  • Tags Tracking – see stats for your WordPress tags to find out which tags are the most popular.
  • \n
  • SEO Score Tracking – see stats for your Yoast SEO score and see how it impacts your traffic.
  • \n
  • Focus Keyword Tracking – see stats for Yoast focus keyword and see how it correlates with your traffic.
  • \n
  • Logged-in User Tracking – see WordPress stats for what percentage of your users are logged-in.
  • \n
  • User ID Tracking – see stats for each individual logged-in user’s activity through User ID custom dimension – great for Ecommerce and membership sites.
  • \n
  • Published Time Tracking – track the performance of your posts based on their published time.
  • \n
\n

Simply put, MonsterInsights allow you to take full advantage of all the powerful Google Analytics features.

\n
\n

I like how simple it is for client users and how I can turn on the advanced features for myself to get all the details right.
\n Skip Shean

\n
\n

Google Analytics Dashboard Plugin for WordPress Multisite Networks

\n

MonsterInsights is the most popular analytics plugin for adding Google Analytics to WordPress multisite.

\n

We have built-in all permissions and controls that you would need to successfully run Google Analytics on a WordPress multi-site.

\n

You can control who has access to view the Google Analytics Dashboard report in WordPress. Our permissions setting allows you to hide analytics reports for specific user roles.

\n

Similarly, we understand that some sites may want to exclude logged-in users from tracking. MonsterInsights gives you granular control to exclude admin in Analytics as well as other user roles.

\n

Our performance addon allows you to adjust sample rate and site speed sample rates for Google Analytics.

\n

By now you can probably see why MonsterInsights has become the most popular Google Analytics plugin for WordPress.

\n

We understand Google Analytics better than any other analytics plugin for WordPress.

\n

Full MonsterInsights Feature List

\n
    \n
  • Quick and Easy Setup – Easily setup Google Analytics for WordPress with just a few clicks (no coding needed)
  • \n
  • Real Time Stats – See real time stats inside your Google Analytics dashboard.
  • \n
  • Universal Tracking – Get better insights with Google Analytics’ universal tracking.
  • \n
  • Google Analytics Dashboard – See the stats that matter from right inside your WordPress dashboard with custom Publisher Report, Ecommerce report, and Search Console report.
  • \n
  • eCommerce Tracking – Add Google Analytics Ecommerce tracking to WordPress.
  • \n
  • WooCommerce Google Analytics – Add Enhanced Ecommerce Tracking to your WooCommerce store.
  • \n
  • Easy Digital Downloads Google Analytics – Add Enhanced Ecommerce Tracking to your EDD store.
  • \n
  • Ads Tracking – Track your Google Adsense ads with Google Analytics.
  • \n
  • Affiliate Link Tracking – Track your affiliate links and get stats that matter.
  • \n
  • File Download Tracking – Enable file download stats with just a click.
  • \n
  • Custom Link Tracking – Track your outbound link clicks with Google Analytics.
  • \n
  • Events Tracking – Track custom button and banner clicks with Google Analytics.
  • \n
  • Custom Dimensions Tracking – Enable Google analytics custom dimensions tracking for WordPress.
  • \n
  • Author Tracking – See author stats and discover who’s the most popular author on your site.
  • \n
  • Popular Post Tracking – See which blog post and section is the most popular.
  • \n
  • Contextual Insights – Get actionable tips on how to improve engagement and get more visitors based on your site’s traffic.
  • \n
  • Headline Analyzer – Get more clicks and improve SEO following suggestions from our Headline Analyzer directly in the WordPress editor
  • \n
  • Custom Post Type Tracking – Track the performance of your custom post types.
  • \n
  • Referral Tracking – See how visitors are finding your website to better focus your marketing efforts.
  • \n
  • Performance Tracking – Control the performance rate and sample rate for your Google Analytics report.
  • \n
  • Enhanced Link Attribution – Get better analytics with enhanced link attribution.
  • \n
  • Email Summaries – Your site’s Google Analytics traffic report delivered straight to your inbox every week.
  • \n
  • Google Analytics for AMP – Add proper tracking for Google AMP.
  • \n
  • Google Analytics for Facebook Instant Articles – Add proper tracking for Facebook Analytics.
  • \n
  • Google Analytics GDPR Compliance – EU compliance addon helps you improve Google Analytics GDPR compliance by adding anonymize IP, cookie consent for opt-out tracking, and more.
  • \n
  • Form Conversion Tracking – Track conversions for your WordPress forms. Works with all popular plugins including WPForms, Contact Form 7, Gravity Forms, Formidable Forms, and more.
  • \n
  • Google Optimize Tracking – Enable Google Analytics support for Google Optimize A/B Testing.
  • \n
  • Google Analytics Tools – Helpful tools for Google Analytics such as UTM link tracking builder.
  • \n
  • Want us to add something else? Suggest a feature and we’ll get it added!
  • \n
\n

After reading this exhaustive feature list, you can probably imagine why MonsterInsights is the best Google Analytics plugin for WordPress.

\n

Give MonsterInsights a try.

\n

Want to unlock even more features? Upgrade to our Pro version.

\n
\n

Simple, yet powerful. Amazing piece of plugin, does exactly what expected and even more.
\n Matt Jaworski

\n
\n

Popular Google Analytics Tutorials

\n\n

Note for Beginners

\n

Like all WordPress plugins, Google Analytics by MonsterInsights is only available for self-hosted WordPress sites. This means you will need to switch from WordPress.com to WordPress.org if you want to use this plugin on your WordPress site.

\n

For more details, see this infographic on self hosted WordPress.org vs free WordPress.com

\n

Credits

\n

This plugin is created by Chris Christoff and Syed Balkhi with sponsorship from WPBeginner.

\n

Branding Guidelines

\n

MonsterInsights® is a registered trademark of MonsterInsights LLC. When writing about the Google Analytics for WordPress plugin by MonsterInsights, please make sure to uppercase the first letters of both word.

\n
    \n
  • MonsterInsights (correct)
  • \n
  • Monster Insights (incorrect)
  • \n
  • monsterinsights (incorrect)
  • \n
  • monsterinsight (incorrect)
  • \n
\n

What’s Next

\n

If you like this plugin, then consider checking out our other projects:

\n
    \n
  • OptinMonster – Get More Email Subscribers
  • \n
  • WPForms – Best WordPress Contact Form Plugin
  • \n
  • AIOSEO – The original WordPress SEO plugin to help you rank higher in search results (trusted by over 2 million sites)
  • \n
  • SeedProd – Most popular coming soon & maintenance mode plugin for WordPress
  • \n
  • WP Mail SMTP – Improve email deliverability for your contact form with the most popular SMTP plugin for WordPress
  • \n
  • RafflePress – Best WordPress giveaway and contest plugin to grow traffic and social followers
  • \n
  • Smash Balloon – #1 social feeds plugin for WordPress – display social media content in WordPress without code
  • \n
  • PushEngage – Connect with visitors after they leave your website with the leading web push notification plugin
  • \n
  • TrustPulse – Add real-time social proof notifications to boost your store conversions by up to 15%
  • \n
\n

This plugin would not be possible without the help and support of WPBeginner, the largest WordPress resource site. You can learn from our free WordPress Tutorials like how to install WordPress, choose the best WordPress hosting, WordPress glossary, and more.

\n

You can also learn about other best WordPress plugins.

\n","download_link":"https://downloads.wordpress.org/plugin/google-analytics-for-wordpress.7.18.0.zip","tags":{"google-analytics":"google analytics","google-analytics-dashboard":"google analytics dashboard","google-analytics-widget":"google analytics widget","woocommerce-stats":"WooCommerce stats","wordpress-analytics":"WordPress analytics"},"donate_link":"http://www.wpbeginner.com/wpbeginner-needs-your-help/","icons":{"1x":"https://ps.w.org/google-analytics-for-wordpress/assets/icon.svg?rev=1598927","2x":"https://ps.w.org/google-analytics-for-wordpress/assets/icon-256x256.png?rev=1598927","svg":"https://ps.w.org/google-analytics-for-wordpress/assets/icon.svg?rev=1598927"},"wporg":true},{"name":"Atomic Blocks – Gutenberg Blocks Collection","slug":"atomic-blocks","version":"2.9.0","author":"atomicblocks","author_profile":"https://profiles.wordpress.org/atomicblocks","requires":"5.3","tested":"5.5.5","requires_php":"5.6","rating":86,"ratings":{"1":5,"2":0,"3":1,"4":6,"5":31},"num_ratings":43,"support_threads":1,"support_threads_resolved":0,"active_installs":40000,"downloaded":991977,"last_updated":"2020-10-28 4:53pm GMT","added":"2018-03-26","homepage":"https://atomicblocks.com","short_description":"A collection of beautiful, customizable Gutenberg blocks for the new block editor.","description":"

Atomic Blocks has moved!

\n

Same powerful blocks, same beautiful designs, same innovative team. Atomic Blocks has been renamed to Genesis Blocks. Learn more about Genesis Blocks. With our migration tool built right into Genesis Blocks, the transition between plugins will be simple and seamless – plus you’ll be ready to receive the new blocks and features we’re releasing soon.

\n

Atomic Blocks is a collection of page building blocks for the new Gutenberg block editor. Building pages with the block editor and Atomic Blocks gives you more control to quickly create and launch any kind of site you want!

\n

Installing the customizable Atomic Block plugin adds a collection of beautiful, site-building blocks to help you customize page layouts, increase engagement, and get results for your business. Atomic Blocks provides everything from customizable buttons, to beautifully-designed page sections and full-page layout designs via the Section & Layout block.

\n

Along with the content blocks you’ll find in Atomic Blocks, we’re also publishing helpful articles and tutorials to help you get started with Gutenberg.

\n

New Section and Layout Block!

\n

\n

On top of the handy, time-saving blocks already found in Atomic Blocks, we’re excited to introduce the brand new Section and Layout block! This block comes with a library of pre-designed sections and layouts to help you quickly and easily build a beautiful site with the new block editor.

\n

Using the Section and Layout modal window, you can browse designs by category, search, and even add sections and layouts to a Favorites tab for quick access later. Paired with the free Atomic Blocks theme, which has support for full-width, block-based page building, you have everything you need to start building your site today!

\n

Atomic Blocks currently includes the following blocks:

\n\n

Atomic Blocks WordPress Theme

\n

We’ve created a beautiful WordPress theme to help you get started with the Atomic Blocks plugin and the new WordPress block editor. The theme integrates seamlessly with the blocks you’ll find in the plugin!

\n\n

In addition to the Atomic Block Theme, we’ve built Revolution Pro with the StudioPress team. This theme is built from the ground up with blocks—Gutenberg core and Atomic. Using this Theme and the Genesis One-Click Theme Install you can have a new block-based site up and running in minutes.

\n\n

Google AMP Support

\n

The Accelerated Mobile Pages (AMP) project is a publishing format created by Google to enhance site performance for mobile website users. AMP pages are specially designed for Google search users to quickly load website pages without using any extraneous data. Atomic Blocks has support for AMP built into each block!

\n

Atomic Blocks Help File

\n

We’ve created a handy help file that you can check out here. The help file covers how to setup the plugin and get started with the blocks.

\n

The help file is also available in the plugin once activated. Click the Atomic Blocks admin menu item to visit the Getting Started page.

\n

View the plugin help file

\n

Follow Along:

\n\n","download_link":"https://downloads.wordpress.org/plugin/atomic-blocks.2.9.0.zip","tags":{"blocks":"blocks","editor":"editor","gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","page-builder":"page builder"},"donate_link":"https://atomicblocks.com","icons":{"1x":"https://ps.w.org/atomic-blocks/assets/icon-128x128.jpg?rev=1914920","2x":"https://ps.w.org/atomic-blocks/assets/icon-256x256.jpg?rev=1914921"},"wporg":true},{"name":"Akismet Spam Protection","slug":"akismet","version":"4.1.12","author":"Automattic","author_profile":"https://profiles.wordpress.org/automattic","requires":"4.6","tested":"5.8","requires_php":false,"rating":94,"ratings":{"1":40,"2":9,"3":13,"4":45,"5":811},"num_ratings":918,"support_threads":9,"support_threads_resolved":8,"active_installs":5000000,"downloaded":211563301,"last_updated":"2021-09-03 4:53pm GMT","added":"2005-10-20","homepage":"https://akismet.com/","short_description":"The best anti-spam protection to block spam comments and spam in a contact form. The most trusted antispam solution for WordPress and WooCommerce.","description":"

Akismet checks your comments and contact form submissions against our global database of spam to prevent your site from publishing malicious content. You can review the comment spam it catches on your blog’s “Comments” admin screen.

\n

Major features in Akismet include:

\n
    \n
  • Automatically checks all comments and filters out the ones that look like spam.
  • \n
  • Each comment has a status history, so you can easily see which comments were caught or cleared by Akismet and which were spammed or unspammed by a moderator.
  • \n
  • URLs are shown in the comment body to reveal hidden or misleading links.
  • \n
  • Moderators can see the number of approved comments for each user.
  • \n
  • A discard feature that outright blocks the worst spam, saving you disk space and speeding up your site.
  • \n
\n

PS: You’ll be prompted to get an Akismet.com API key to use it, once activated. Keys are free for personal blogs; paid subscriptions are available for businesses and commercial sites.

\n","download_link":"https://downloads.wordpress.org/plugin/akismet.4.1.12.zip","tags":{"anti-spam":"anti-spam","antispam":"antispam","comments":"comments","contact-form":"contact form","spam":"spam"},"donate_link":"","icons":{"1x":"https://ps.w.org/akismet/assets/icon-128x128.png?rev=969272","2x":"https://ps.w.org/akismet/assets/icon-256x256.png?rev=969272"},"wporg":true},{"name":"WP GDPR Cookie Notice","slug":"wp-gdpr-cookie-notice","version":"1.0.0-rc.1","author":"Felix Arntz","author_profile":"https://profiles.wordpress.org/flixos90","requires":"4.9.6","tested":"5.7.2","requires_php":"7.0","rating":76,"ratings":{"1":4,"2":0,"3":0,"4":0,"5":9},"num_ratings":13,"support_threads":1,"support_threads_resolved":0,"active_installs":700,"downloaded":5952,"last_updated":"2021-04-02 11:51pm GMT","added":"2019-03-01","homepage":"https://wordpress.org/plugins/wp-gdpr-cookie-notice/","short_description":"Simple performant cookie consent notice that supports AMP, Web Stories, granular cookie control and live…","description":"

This plugin adds a simple performant cookie consent notice to your WordPress site that supports AMP, Web Stories, granular cookie control and live preview customization.

\n

Not only does the notice allow you to provide the regular message that your site uses cookies, you can also optionally grant your site visitors permission to granularly allow which cookie types are allowed, supporting groups of functional (always required), preferences, analytics and marketing cookies. This aims towards compliance with how the new GDPR regulations recommend implementing cookie control for your site.

\n

In addition to the Privacy Policy page setting that WordPress core provides, you also get a settings to optionally set an extra Cookie Policy page, and you can easily link to either of them from the cookie consent notice.

\n

The cookie notice content and appearance can easily be tweaked using the Customizer, with an immediate live-preview of what your changes will look like.

\n

Last but not least, another important thing that this plugin takes care of, other than most other cookie consent plugins, is that it actually ensures cookies are only placed if the respective cookie type has been allowed by the visitor. The plugin does this by implementing cookie rules for WordPress itself, and also for the following plugins:

\n\n

More plugins will be supported in the future. If you are a developer though, it’s also very easy to add cookie rules for other code, by using the flexible cookie rule component the plugin provides as an extension point.

\n

Feature Summary

\n
    \n
  • Lightweight and easy-to-use: Simply activate the plugin, and the notice will appear.
  • \n
  • Live Preview: Use the Customizer to adjust the notice to your needs, with an instant live preview.
  • \n
  • Customizable Appearance: Specify the notice position, colors, border, button size and more.
  • \n
  • Customizable Content: Adjust the notice heading, text and button label to your preferences. You can easily link to your cookie policy page or privacy policy page, and even give visitors granular control about which cookie types they allow.
  • \n
  • Cookie Policy Support: Define an optional cookie policy page if your site has one, or alternatively provide an ID attribute to the cookie section in your privacy policy.
  • \n
  • Cookie Integrations: Supported cookies are only set once the visitor has given their consent. The cookie rules implemented also respect the more granular cookie control.
  • \n
  • JavaScript-driven: The cookie notice is inserted into the page as necessary via JavaScript, but at the same time provides easy access to whether it should be displayed via its PHP API.
  • \n
  • AMP Support: The notice is fully AMP-compatible using <amp-consent>, integrating seamlessly with the AMP plugin. It integrates with Web Stories as well.
  • \n
  • Coding Best Practices: The plugin is fully object-oriented and is coded after best practices, such as using interfaces, traits, dependency injection or the single responsibility principle. It also implements modern coding features requiring PHP 7, such as scalar type hints or return type hints.
  • \n
\n

Disclaimer

\n

This plugin does not provide any legal protection. You as a site administrator are required to ensure that it meets legal standards. This plugin is a technical tool, not a lawyer.

\n","download_link":"https://downloads.wordpress.org/plugin/wp-gdpr-cookie-notice.1.0.0-rc.1.zip","tags":{"amp":"amp","cookie-consent":"cookie consent","cookie-notice":"cookie notice","gdpr":"GDPR","web-stories":"web stories"},"donate_link":"","icons":{"1x":"https://ps.w.org/wp-gdpr-cookie-notice/assets/icon-128x128.png?rev=2042024","2x":"https://ps.w.org/wp-gdpr-cookie-notice/assets/icon-256x256.png?rev=2042024"},"wporg":true},{"name":"WordPress Share Buttons Plugin – AddThis","slug":"addthis","version":"6.2.6","author":"The AddThis Team","author_profile":"https://profiles.wordpress.org/arnavarro","requires":"3.0","tested":"5.2.11","requires_php":false,"rating":84,"ratings":{"1":75,"2":25,"3":22,"4":46,"5":444},"num_ratings":612,"support_threads":2,"support_threads_resolved":0,"active_installs":100000,"downloaded":5069215,"last_updated":"2019-07-10 5:19pm GMT","added":"2008-12-23","homepage":"https://wordpress.org/plugins/addthis/","short_description":"Now compatible with the AMP Plugin! Free Share Buttons from AddThis. Share to Messenger, WhatsApp, Facebook, Twitter, Pinterest and many more.","description":"

Now compatible with the AMP Plugin! The Free WordPress Share Buttons Plugin from AddThis makes it easier than ever for your audience to spread your content around the web. Our quick-loading Share Buttons Plugin lets you connect to over 200 social channels including Messenger, WhatsApp, Facebook, Twitter, Pinterest and many more.

\n

Our clean, customizable and simple share buttons are beautiful, quick to load and recognized all over the web.

\n

AddThis is trusted by over 15,000,000 websites with over 2 billion unique users, sharing content all over the world, in more than sixty languages.

\n

Types of Share Buttons:

\n
    \n
  • \n

    Floating share buttons: Placed on the side of your page, following your reader as they scroll. A great way to promote sharing without getting too in-your-face.

    \n
  • \n
  • \n

    Expanding share buttons: Modern, clean, and best suited for sites with tons of mobile traffic. This button expands to reveal sharing options on hover or click.

    \n
  • \n
  • \n

    Inline share buttons: Integrate share buttons into your own content for a seamless sharing experience.

    \n
  • \n
  • \n

    Image sharing buttons: Seamlessly integrate sharing into your layout with adjustable image sharing buttons. Perfect for pages with tons of shareable content.

    \n
  • \n
\n

Customizable:

\n
    \n
  • \n

    Designed for desktop, tablet, and mobile

    \n
  • \n
  • \n

    Choose from over 200 social media channels to display

    \n
  • \n
  • \n

    Adjust coloring to match your brand

    \n
  • \n
\n

Analytics:

\n
    \n
  • Sign up for a free AddThis account to get analytics on how your content is performing such as your top shared content, referring social networks and more. After you register, these analytics are accessible by logging into your AddThis.com account and visiting your AddThis dashboard. Analytics include site pageviews, your top shared content, referring social networks, and more.
  • \n
\n

Support:

\n

We strive to provide best-in-class support with a response time of around two hours, and a customer satisfaction rate of over 98%. To get in touch with our team, head to http://www.addthis.com/support.

\n

Check out our other plugins to help you grow and engage your audience!

\n
    \n
  • \n

    Follow Buttons: Add followers to 65+ social networks, including Facebook, Snapchat, Instagram, and more.

    \n
  • \n
  • \n

    Related Posts: Boost your on-site engagement with our Related Posts tool, which recommends content not only by what’s popular, but also what’s most relevant.

    \n
  • \n
\n

Want more? Visit our website to learn how you can activate our Email List Building and Link Promotion Tools.

\n

AddThis Academy | Privacy Policy

\n","download_link":"https://downloads.wordpress.org/plugin/addthis.6.2.6.zip","tags":{"share-buttons":"share buttons","social":"social","social-marketing":"Social Marketing","social-share":"social share","social-sharing":"social sharing"},"donate_link":"","icons":{"1x":"https://ps.w.org/addthis/assets/icon-128x128.png?rev=1223867","2x":"https://ps.w.org/addthis/assets/icon-256x256.png?rev=1223867"},"wporg":true},{"name":"BigCommerce For WordPress","slug":"bigcommerce","version":"4.16.0","author":"BigCommerce","author_profile":"https://profiles.wordpress.org/bigcommerce","requires":"5.2","tested":"5.5.5","requires_php":"7.2.0","rating":80,"ratings":{"1":8,"2":1,"3":0,"4":3,"5":27},"num_ratings":39,"support_threads":4,"support_threads_resolved":1,"active_installs":1000,"downloaded":57555,"last_updated":"2021-08-12 3:08am GMT","added":"2018-11-16","homepage":"","short_description":"Scale your ecommerce business with WordPress on the front-end and BigCommerce on the back end. Free up server resources from things like catalog manag …","description":"

BigCommerce for WordPress is a plugin that allows you to scale ecommerce further than ever before on WordPress. Scale your business with WordPress on the front-end and free up server resources from things like catalog management, processing payments, managing fulfillment logistics and more with BigCommerce on the back end.

\n

Built to integrate seamlessly with WordPress, you get access to our native ecommerce features from a single plugin, the ability to sell across multiple channels and marketplaces from a single location, and best of all, an embedded checkout experience that takes on PCI compliance and customer security on your behalf.

\n

Quick Start!

\n

Look at details from the latest release, including new features and enhancements here: https://github.com/bigcommerce/bigcommerce-for-wordpress/releases

\n

Dive into how you set up and customize your site using BC4WP using our guides here: https://developer.bigcommerce.com/bigcommerce-for-wordpress/getting-started/introduction

\n

Have a suggestion for how we can be better? Ping the team! wordpress-suggestions@bigcommerce.com

\n

DIFFERENT FROM YOUR TRADITIONAL PLUGIN

\n

We’ve taken a very different approach to ecommerce in WordPress. We set out to build our plugin the WordPress Way: deliver value to the community, build it with WordPress experts and make something developers can call their own.

\n

The BigCommerce for WordPress plugin leverages the best aspects of both platforms, allowing WordPress to manage content and BigCommerce to manage ecommerce.

\n

SCALABLE ECOMMERCE FOR WORDPRESS

\n

Continue to tap into the unrestricted customization of WordPress while pairing it with the most scalable SaaS ecommerce engine. BigCommerce lets you build complex catalogs, manage large volumes of concurrent traffic, orders and analytics.

\n

The BigCommerce plugin ports over a copy of your product catalog and stores products as custom post types in WordPress. It also creates pages for your cart, checkout, account profiles, sign in, shipping & returns, gift certificates and order history.

\n

The key difference to our approach is that you don’t need to install additional extensions to get access to common ecommerce features. Instead, you get instant access to many common (and advanced) features, such as complex catalog support, global payment gateways, currency handling, taxation, shipping calculations and centralized channel management; all out-of-the-box.

\n

OFFLOAD BACKEND RESOURCES

\n

Our philosophy is that processing orders and running your store shouldn’t affect the uptime and speed of your site — which can hurt your SEO, conversion, and brand. The BigCommerce plugin does the heavy commerce lifting, letting you scale your ecommerce without losing speed or uptime.

\n

LET US HANDLE PCI COMPLIANCE

\n

Taking on your own PCI compliance comes with a huge amount of liability and risk. BigCommerce powers the full checkout experience, assuming the burden of PCI compliance for you.

\n

EXTENSIVE PAYMENT GATEWAYS

\n

BigCommerce has over 65 payment gateway integrations available out-of-the box, serving 100+ countries and over 250 local payment methods.

\n

To help you reduce costs, we’ve pre-negotiated special credit and debit card processing rates with PayPal, our preferred payment solution. The more you grow with BigCommerce and upgrade your plan, the lower your rates can go.

\n

HIGHLY SCALABLE PRODUCT CATALOG

\n

BigCommerce is built for large, complex catalogs with up to 600 SKUs per product, and 250 product values for a single option. Our native catalog structure treats single products (including variants, details, SKUs, etc.) as a single API call, making inventory syncing with ERPs, PIMs (and WordPress) fast.

\n

MULTI-CHANNEL SELLING & MANAGEMENT

\n

With the core BigCommerce platform, you now have access within the control panel to sell across multiple marketplaces simultaneously, such as eBay, Amazon, Facebook, Instagram, Google Shopping, Square and more! Save time and eliminate errors and overselling with bulk listing, automatic inventory syncing and unified order and fulfillment management.

\n

USE YOUR FAVORITE WORDPRESS THEME

\n

BigCommerce for WordPress will work with any WordPress theme, but it may require some styling to make it fit perfectly. Are you a theme developer? We’d love to promote your BigCommerce for WordPress compatible theme. Get in touch with us here.

\n

To start, we recommend choosing a cross-browser compatible WordPress ecommerce theme, since the theme options included will better match what an online store requires.

\n

ECOMMERCE WITH GUTENBERG

\n

We’re big supporters of Gutenberg and built our plugin to support both the classic editor and Gutenberg. Whether you’re inserting shortcodes in classic mode or product blocks in Gutenberg, we will continue to enable support for both.

\n

SECURED USER ACCOUNTS & LOGINS

\n

In addition to offering you peace of mind with a secure checkout experience, we also extend this level of security to your shoppers, their accounts and logins, and payment information — all managed by BigCommerce.

\n

GLOBAL SHIPPING STREAMLINED

\n

We support all major global carriers, offer real-time carrier quotes, allow for free shipping, flat rates, dropshipping and more. With our deep ShipperHQ integration, you can even specify rates by product, category, customer group, quantity, destination, dimensions and more.

\n

FLEXIBLE SHOPPING CART

\n

We are bringing over a decade of focusing on building online stores to every WordPress website. Through this we bring our flexible shopping cart, along with it’s extensive customization options, so can offer enterprise grade promotions and discounts within a fully responsive layout, without additional extensions that other WordPress ecommerce plugins require.

\n

MULTIPLE SITES; ONE CONTROL PANEL

\n

Even if you sell across multiple WordPress sites, you shouldn’t have to manage them all in separate places. BigCommerce gives you a single control panel to manage your catalog, orders and shipping, all from one place. Streamline your admin experience and spend less time managing ecommerce on WordPress.

\n

Beyond WordPress, the endpoints we’ve opened on our platform allow you to build commerce into any sort of experience. Looking to launch a site in React? Interested in developing a mobile app? Want to integrate with an in-house POS? All of these can be built and managed from within the BigCommerce Control Panel.

\n

COMPLEX ENTERPRISE SYSTEMS INTEGRATIONS

\n

A huge benefit of having a SaaS ecommerce engine behind the scenes is that the core platform is already built for mid-market and enterprise use cases. Natively connect to your existing ERP suites, PIM software, OMS solutions, POS systems or marketing automation tools right out of the box.

\n

AMP SUPPORT

\n

Unique to most WordPress ecommerce plugins, BigCommerce for WordPress also includes support for Accelerated Mobile Pages. To activate, install the official Google plugin.

\n

SUPPORT AND SERVICES

\n

All of our BigCommerce customers have access to our 24/7 live phone, chat, and email support, run from our headquarters in Austin, Texas. For larger enterprise customers, we offer dedicated account management and implementation management services as part of your plan. We also have an ever-growing collection of help, support, and how-to guides in our help center.

\n

BUILT WITH DEVELOPERS IN MIND

\n

BigCommerce for WordPress was built by WordPress developers, with developers in mind. Our plugin is open source and available for you to fork, extend and modify as your needs require.

\n

Our plugin supports WordPress’ standard method of overriding template files so you can modify out-of-the-box designs. Customize your product cards, lists and shopping cart without risking plugin updates that will undo your changes.

\n

Additionally, there are many hooks and filters, so you can manipulate content to your heart’s content.

\n

JOIN OUR BIGCOMMERCE COMMUNITY

\n

All BigCommerce customers get access to our ever-growing online community to answer questions, discuss ecommerce strategies, learn about the latest product updates, contribute ideas and more.

\n

If you’re interested in contributing to BigCommerce for WordPress, head over to our GitHub Repository.

\n","download_link":"https://downloads.wordpress.org/plugin/bigcommerce.4.16.0.zip","tags":{"ecommerce":"ecommerce","online-store":"online store","retail":"retail","sell-online":"sell online","storefront":"storefront"},"donate_link":"","icons":{"1x":"https://ps.w.org/bigcommerce/assets/icon-256x256.png?rev=2141502","2x":"https://ps.w.org/bigcommerce/assets/icon-256x256.png?rev=2141502"},"wporg":true},{"name":"Yoast SEO","slug":"wordpress-seo","version":"17.1","author":"Team Yoast","author_profile":"https://profiles.wordpress.org/joostdevalk","requires":"5.6","tested":"5.8","requires_php":"5.6.20","rating":96,"ratings":{"1":718,"2":124,"3":170,"4":616,"5":25755},"num_ratings":27383,"support_threads":533,"support_threads_resolved":483,"active_installs":5000000,"downloaded":352498508,"last_updated":"2021-09-07 6:57am GMT","added":"2010-10-11","homepage":"https://yoa.st/1uj","short_description":"Improve your WordPress SEO: Write better content and have a fully optimized WordPress site using the Yoast SEO plugin.","description":"

Yoast SEO: the #1 WordPress SEO plugin

\n

Since 2008 Yoast SEO has helped millions of websites worldwide to rank higher in search engines.

\n

Yoast’s mission is SEO for Everyone. Our plugin’s users range from the bakery around the corner to some of the most popular sites on the planet.

\n

Yoast SEO Free contains everything that you need to manage your SEO, and the Yoast SEO Premium plugin and its extensions unlock even more tools and functionality.

\n

GET AHEAD OF THE COMPETITION

\n

To rank highly in search engines, you need to beat the competition. You need a better, faster, stronger website than the people who sell or do the same kinds of things as you.

\n

Yoast SEO is the most-used WordPress SEO plugin, and has helped millions of people like you to get ahead, and to stay ahead.

\n

TAKING CARE OF YOUR WORDPRESS SEO

\n

Yoast SEO is packed full of features, designed to help visitors and search engines to get the most out of your website. Some of our favourites are:

\n
    \n
  • Automated technical SEO improvements, like canonical URLs and meta tags.
  • \n
  • Advanced XML sitemaps; making it easy for Google to understand your site structure.
  • \n
  • Title and meta description templating, for better branding and consistent snippets in the search results.
  • \n
  • An in-depth Schema.org integration that will increase your chance of getting rich results, by helping search engines to understand your content.
  • \n
  • Full control over site breadcrumbs, so that users and search engines always know where they are.
  • \n
  • Faster loading times for your whole website, due to an innovative way of managing data in WordPress.
  • \n
  • [Premium] E-mail support for our Yoast SEO Premium users.
  • \n
  • [Premium] The possibility to expand Yoast SEO with the News SEO, Video SEO, Local SEO and WooCommerce SEO extensions.
  • \n
\n

WRITE KILLER CONTENT WITH YOAST SEO

\n

We know content is king, that’s why Yoast SEO is famous for its state-of-the-art content and SEO analysis. Yoast SEO gives you:

\n
    \n
  • SEO analysis: an invaluable tool while writing SEO-friendly content with the right (focus) keyphrases in mind.
  • \n
  • Readability analysis: ensures that humans and search engines can read and understand your content.
  • \n
  • Full language support for: English, German, French, Dutch, Spanish, Italian, Russian, Indonesian, Polish, Portuguese, Arabic, Swedish, Hebrew, Hungarian, Turkish, Czech, Norwegian and Slovak.
  • \n
  • A Google preview, which shows what your listings will look like in the search results. Even on mobile devices!
  • \n
  • Innovative Schema blocks for the WordPress block editor, so that your FAQ and HowTo content can be shown directly in the search results. Plus a breadcrumbs block to guide your users.
  • \n
  • [Premium] Internal linking blocks to easily improve the structure of your content. Easily add a table of contents block, a related links block, a subpages block, or siblings block! Plus, we’ll keep adding these easy-to-add blocks to improve your site structure.
  • \n
  • [Premium] Social previews to show you how your content will be shown on Twitter and Facebook. Plus: Social Appearance Templates to guarantee a consistent look.
  • \n
  • [Premium] The Insights tool that shows you what your text focuses on. This way you can keep your article in line with your keyphrases.
  • \n
  • [Premium] Optimize your content for synonyms and related keyphrases.
  • \n
  • [Premium] Optimize your article for different word forms of your keyphrases, as the singular and plural. But also different verb forms, synonyms, and related keyphrases. This makes for more natural content!
  • \n
  • [Premium] Automatic internal linking suggestions: write your article and get automatic suggested posts to link to!
  • \n
  • [Premium] An orphaned content filter to detect posts that have no links pointing towards them!
  • \n
  • [Premium] SEO workouts to make working on your site as easy as ABC. These SEO workflows will get your site into shape in no time!
  • \n
\n

KEEP YOUR SITE IN PERFECT SHAPE

\n

Whether you are an online entrepreneur, blogger or content creator, a developer, a (WordPress) SEO expert or a business owner, Yoast SEO helps you keep your website in perfect shape by:

\n
    \n
  • Tuning the engine of your website, so you can work on creating great content!
  • \n
  • Giving you cornerstone content and internal linking features to help you optimize your site structure in a breeze.
  • \n
  • Translating your content to structured data where possible, to help search engines understand your website.
  • \n
  • Helping you manage your team: with our SEO roles you can give colleagues access to specific sections of the Yoast SEO plugin.
  • \n
  • [Premium] Automatically creating redirects when URLs change or when pages are deleted, and providing tools to manage or create redirects.
  • \n
  • [Premium] Showing you social previews to manage the way your page is shared on social networks like Facebook and Twitter.
  • \n
\n

TRUST THE EXPERTS

\n

Yoast is powered by a team of expert developers, testers, software architects, and SEO consultants. They work constantly to stay at the cutting edge of WordPress SEO, and to improve the plugin with every release.

\n

Yoast SEO is the only WordPress SEO plugin made by world-renowned SEO experts.

\n

GET PREMIUM SUPPORT

\n

The Yoast team offers regular support on the WordPress.org forums. But we hope you understand that we prioritize our Premium customers. This one-on-one email support is available to people who have purchased Yoast SEO Premium.

\n

Did you know that Yoast SEO Premium contains a lot of extra features:

\n
    \n
  • A redirect manager that prevents “404: page not found” errors
  • \n
  • Optimize without worrying about over-optimization with intelligent word form recognition available in multiple languages.
  • \n
  • Internal linking blocks to structure your site easily.
  • \n
  • Internal linking suggestions while you’re writing.
  • \n
  • Preview your content to see what it will look like in the search results and when shared on social media using the Google preview and social preview.
  • \n
  • Cornerstone content checks that point search engines to your most important pages.
  • \n
  • Connect Yoast SEO to Zapier to easily create zaps that instantly share your published posts with 2000+ destinations like Twitter, Facebook, and much more.
  • \n
\n

If you are serious about your WordPress SEO, install the Yoast SEO Premium plugin! Costs a little, saves a lot of time!

\n

OUR EXTENSIONS TO FURTHER IMPROVE YOUR WORDPRESS SEO

\n

Check out these SEO add-ons by Yoast:

\n
    \n
  • Yoast Local SEO optimizes your website for a local audience.
  • \n
  • Yoast Video SEO ensures that Google understands what your video is about, increasing the chances of ranking in the video results.
  • \n
  • Yoast News SEO for news websites that want to improve their visibility and performance in Google News.
  • \n
  • WooCommerce SEO for all online shops that want to perform better in the search results and social media.
  • \n
\n

These extensions work fine with the free version of Yoast SEO. Of course, the premium extensions also include 24/7 support.

\n

Oh, don’t forget: our Yoast Academy is for all entrepreneurs, bloggers, and anyone who wants to learn more about optimizing websites, improving your WordPress SEO, and if you want to take your content to the next level!

\n

INTEGRATIONS

\n

Yoast SEO integrates seamlessly into a range of themes and plugins. We work particularly well with:

\n\n

BUG REPORTS

\n

Do you want to report a bug for Yoast SEO? Best to do so in the WordPress SEO repository on GitHub. Please note that GitHub is not a support forum and issues will be closed if they don’t meet the bug requirements.

\n

READ MORE

\n

Want more information on search engine optimization and Yoast SEO? Have a look at:

\n\n","download_link":"https://downloads.wordpress.org/plugin/wordpress-seo.17.1.zip","tags":{"content-analysis":"Content analysis","readability":"Readability","schema":"schema","seo":"seo","xml-sitemap":"xml sitemap"},"donate_link":"https://yoa.st/1up","icons":{"1x":"https://ps.w.org/wordpress-seo/assets/icon.svg?rev=2363699","2x":"https://ps.w.org/wordpress-seo/assets/icon-256x256.png?rev=2363699","svg":"https://ps.w.org/wordpress-seo/assets/icon.svg?rev=2363699"},"wporg":true},{"name":"Gutenberg","slug":"gutenberg","version":"11.4.1","author":"Gutenberg Team","author_profile":"https://profiles.wordpress.org/matveb","requires":"5.6","tested":"5.8","requires_php":"5.6","rating":42,"ratings":{"1":2267,"2":201,"3":126,"4":133,"5":701},"num_ratings":3428,"support_threads":61,"support_threads_resolved":8,"active_installs":300000,"downloaded":24491928,"last_updated":"2021-09-03 3:27pm GMT","added":"2017-06-16","homepage":"https://github.com/WordPress/gutenberg","short_description":"The Gutenberg plugin provides editing, customization, and site building features to WordPress. This beta plugin allows you to test bleeding-edge featu …","description":"

“Gutenberg” is a codename for a whole new paradigm in WordPress site building and publishing, that aims to revolutionize the entire publishing experience as much as Gutenberg did the printed word. Right now, the project is in the first phase of a four-phase process that will touch every piece of WordPress — Editing, Customization, Collaboration, and Multilingual — and is focused on a new editing experience, the block editor.

\n

The block editor introduces a modular approach to pages and posts: each piece of content in the editor, from a paragraph to an image gallery to a headline, is its own block. And just like physical blocks, WordPress blocks can added, arranged, and rearranged, allowing WordPress users to create media-rich pages in a visually intuitive way — and without work-arounds like shortcodes or custom HTML.

\n

The block editor first became available in December 2018, and we’re still hard at work refining the experience, creating more and better blocks, and laying the groundwork for the next three phases of work. The Gutenberg plugin gives you the latest version of the block editor so you can join us in testing bleeding-edge features, start playing with blocks, and maybe get inspired to build your own.

\n

Discover More

\n
    \n
  • \n

    User Documentation: See the WordPress Editor documentation for detailed docs on using the editor as an author creating posts and pages.

    \n
  • \n
  • \n

    Developer Documentation: Extending and customizing is at the heart of the WordPress platform, see the Developer Documentation for extensive tutorials, documentation, and API reference on how to extend the editor.

    \n
  • \n
  • \n

    Contributors: Gutenberg is an open-source project and welcomes all contributors from code to design, from documentation to triage. See the Contributor’s Handbook for all the details on how you can help.

    \n
  • \n
\n

The development hub for the Gutenberg project is on Github at: https://github.com/wordpress/gutenberg

\n

Discussion for the project is on Make Blog and the #core-editor channel in Slack, signup information.

\n","download_link":"https://downloads.wordpress.org/plugin/gutenberg.11.4.1.zip","tags":[],"donate_link":"","icons":{"1x":"https://ps.w.org/gutenberg/assets/icon-128x128.jpg?rev=1776042","2x":"https://ps.w.org/gutenberg/assets/icon-256x256.jpg?rev=1776042"},"wporg":true},{"name":"Setka Editor","slug":"setka-editor","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://setka.io/","short_description":"

Setka Editor is the first WYSIWYG plugin with page builder functionality.

\n","description":"\n\n\n

Setka Editor is the first WYSIWYG plugin with page builder functionality.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2018/11/Setka-Banner-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2018/11/Setka-Banner-372x209.jpg","svg":""},"wporg":false}] \ No newline at end of file diff --git a/data/themes.json b/data/themes.json index 629f47f5e0b..2bbb4bd189f 100644 --- a/data/themes.json +++ b/data/themes.json @@ -1 +1 @@ -[{"name":"Sydney","slug":"sydney","version":"1.79","preview_url":"https://wp-themes.com/sydney/","author":{"user_nicename":"athemes","profile":"https://profiles.wordpress.org/athemes","avatar":"https://secure.gravatar.com/avatar/0fe6c4dee6e201e81783d8a0ee12d83b?s=96&d=monsterid&r=g","display_name":"athemes","author":"aThemes","author_url":"https://athemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/sydney/screenshot.png?ver=1.79","rating":98,"num_ratings":497,"homepage":"https://wordpress.org/themes/sydney/","description":"Sydney is a powerful business theme that provides a fast way for companies or freelancers to create an awesome online presence. As well as being fully compatible with Elementor, Sydney brings plenty of customization possibilities like access to all Google Fonts, full color control, layout control, logo upload, full screen slider, header image, sticky navigation and much more. Also, Sydney provides all the construction blocks you need to rapidly create an engaging front page. Looking for a quick start with Sydney? With just a few clicks, you can import one of our existing demos (https://athemes.com/sydney-demos/)","requires":false,"requires_php":"5.6","wporg":true},{"name":"Really Simple","slug":"really-simple","version":"1.0.7","preview_url":"https://wp-themes.com/really-simple/","author":{"user_nicename":"flauberthenriques","profile":"https://profiles.wordpress.org/flauberthenriques","avatar":"https://secure.gravatar.com/avatar/d524eb0811fa44be90481509b000c779?s=96&d=monsterid&r=g","display_name":"Flaubert Henriques","author":"Flaubert Henriques","author_url":"https://profiles.wordpress.org/flauberthenriques/"},"screenshot_url":"//ts.w.org/wp-content/themes/really-simple/screenshot.png?ver=1.0.7","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/really-simple/","description":"Really Simple is a theme for bloggers and writers who need a ultra light and fast theme. The theme focuses on simplicity and loading speed. Yes, Really Simple Theme is also fully AMP compatible. Check the readme.txt file and leave the sidebar perfect after WordPress 5.8 update.","requires":"5.3","requires_php":"7.0","wporg":true},{"name":"Artpop","slug":"artpop","version":"1.0.7","preview_url":"https://wp-themes.com/artpop/","author":{"user_nicename":"designlabthemes","profile":"https://profiles.wordpress.org/designlabthemes","avatar":"https://secure.gravatar.com/avatar/956873f77232371cb89d8a0d7a516354?s=96&d=monsterid&r=g","display_name":"designlabthemes","author":"Design Lab","author_url":"https://www.designlabthemes.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/artpop/screenshot.png?ver=1.0.7","rating":100,"num_ratings":1,"homepage":"https://wordpress.org/themes/artpop/","description":"Artpop is a beautiful Gutenberg-first WordPress theme, carefully designed to help you build your online brand. Unleash your creativity, Artpop takes care of the rest! Well documented and easy to use even for WordPress beginners, Artpop is perfect for a blog, personal portfolio, small business website, and WooCommerce storefront. Easily set your logo, change colors, and create awesome layouts to give your website a truly unique look.","requires":"4.7","requires_php":"5.6","wporg":true},{"name":"Michelle","slug":"michelle","version":"1.2.0","preview_url":"https://wp-themes.com/michelle/","author":{"user_nicename":"webmandesign","profile":"https://profiles.wordpress.org/webmandesign","avatar":"https://secure.gravatar.com/avatar/f4a334f9f5af61b2bd22fcaadb04dd06?s=96&d=monsterid&r=g","display_name":"WebMan Design | Oliver Juhas","author":"WebMan Design","author_url":"https://www.webmandesign.eu/"},"screenshot_url":"//ts.w.org/wp-content/themes/michelle/screenshot.png?ver=1.2.0","rating":100,"num_ratings":3,"homepage":"https://wordpress.org/themes/michelle/","description":"Michelle is accessibility ready WordPress theme for creating inclusive websites easily and with fun using block editor. Useful block patterns, block styles, templates and featured posts functionality allow you to build an eyecatching website in no time. Customize site footer and error 404 page content with block editor! The theme also works with Beaver Builder, Elementor, or any other page builder. It also supports theme builders! Michelle elevates your business, eCommerce, portfolio, or blog website. Check out the demo at https://themedemos.webmandesign.eu/michelle/ and documentation at https://webmandesign.github.io/docs/michelle/","requires":"5.5","requires_php":"7.0","wporg":true},{"name":"Miniva","slug":"miniva","version":"1.6.3","preview_url":"https://wp-themes.com/miniva/","author":{"user_nicename":"tajam","profile":"https://profiles.wordpress.org/tajam","avatar":"https://secure.gravatar.com/avatar/378d4e715829ccf6f1fbe6dfef6eb539?s=96&d=monsterid&r=g","display_name":"Tajam","author":"Tajam","author_url":"https://tajam.id/"},"screenshot_url":"//ts.w.org/wp-content/themes/miniva/screenshot.png?ver=1.6.3","rating":100,"num_ratings":6,"homepage":"https://wordpress.org/themes/miniva/","description":"A fast, lightweight, and mobile-friendly WordPress theme for bloggers. Miniva is built with simplicity, accessibility and performance in mind. The clean and minimal design helps readers focus on your content. It supports AMP and several Jetpack modules including featured content, infinite scroll, content options and social menu. See the theme demo at https://tajam.id/miniva-demo/","requires":"4.5","requires_php":"5.3","wporg":true},{"name":"Iknow","slug":"iknow","version":"1.2.6","preview_url":"https://wp-themes.com/iknow/","author":{"user_nicename":"wpcalc","profile":"https://profiles.wordpress.org/wpcalc","avatar":"https://secure.gravatar.com/avatar/64ca4933fab3d5e50383f0b514acd5f6?s=96&d=monsterid&r=g","display_name":"Wow-Company","author":"Wow-Company","author_url":"https://wow-company.com"},"screenshot_url":"//ts.w.org/wp-content/themes/iknow/screenshot.png?ver=1.2.6","rating":98,"num_ratings":9,"homepage":"https://wordpress.org/themes/iknow/","description":"Iknow WordPress Theme has a minimalistic, responsive and mobile-friendly design. Easy and fast theme. The theme is perfect for creating Knowledge Base, Helpdesk, Wiki and FAQ websites. Ability to set custom icons for each category and tag. Manage the display of categories on the main page of the site. The integrated post rating system VoteUp/VoteDown. Breadcrumbs for easy site navigation. Custom widget to display the current navigation in a category and in a separate post. You can view the appearance and features of the theme on the site https://wow-company.com/wp-theme-iknow/. Documentation https://wow-company.com/faq/category/wow-themes/iknow/","requires":false,"requires_php":"5.6","wporg":true},{"name":"Kadence","slug":"kadence","version":"1.1.3","preview_url":"https://wp-themes.com/kadence/","author":{"user_nicename":"britner","profile":"https://profiles.wordpress.org/britner","avatar":"https://secure.gravatar.com/avatar/3276133b8df529e6e1e58586ab1a309e?s=96&d=monsterid&r=g","display_name":"Ben Ritner - Kadence WP","author":"Kadence WP","author_url":"https://www.kadencewp.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/kadence/screenshot.png?ver=1.1.3","rating":98,"num_ratings":135,"homepage":"https://wordpress.org/themes/kadence/","description":"Kadence Theme is a lightweight yet full featured WordPress theme for creating beautiful fast loading and accessible websites, easier than ever. It features an easy to use drag and drop header and footer builder to build any type of header in minutes. It features a full library of gorgeous starter templates that are easy to modify with our intelligent global font and color controls. With extensive integration with the most popular 3rd party plugins, you can quickly build impressive ecommerce websites, course websites, business websites, and more.","requires":"5.0","requires_php":"7.0","wporg":true},{"name":"Izo","slug":"izo","version":"1.0.12","preview_url":"https://wp-themes.com/izo/","author":{"user_nicename":"elfwp","profile":"https://profiles.wordpress.org/elfwp","avatar":"https://secure.gravatar.com/avatar/1cfedf4555fea4d8fbba2947635586ea?s=96&d=monsterid&r=g","display_name":"elfwp","author":"elfWP","author_url":"https://elfwp.com"},"screenshot_url":"//ts.w.org/wp-content/themes/izo/screenshot.png?ver=1.0.12","rating":90,"num_ratings":2,"homepage":"https://wordpress.org/themes/izo/","description":"Izo a fast, lightweight, native AMP and fully customizable multipurpose WordPress theme. Features include compatibility with many popular plugins like Elementor and other page builders, WooCommerce, WPML, LifterLMS and more. There is also full support for the new WordPress block editor. Izo is fully responsive and our users can take advantage of the many customizer options to easily change styles. Also, if you're looking for a quick start, we're offering a bunch of free starter sites, ready to easily import.","requires":false,"requires_php":"5.6","wporg":true},{"name":"OceanWP","slug":"oceanwp","version":"3.0.6","preview_url":"https://wp-themes.com/oceanwp/","author":{"user_nicename":"oceanwp","profile":"https://profiles.wordpress.org/oceanwp","avatar":"https://secure.gravatar.com/avatar/05f8d3fe2ccb6479bac14e4d40b406dd?s=96&d=monsterid&r=g","display_name":"oceanwp","author":"Nick","author_url":"https://oceanwp.org/about-me/"},"screenshot_url":"//ts.w.org/wp-content/themes/oceanwp/screenshot.png?ver=3.0.6","rating":98,"num_ratings":4918,"homepage":"https://wordpress.org/themes/oceanwp/","description":"OceanWP is the perfect theme for your project. Lightweight and highly extendable, it will enable you to create almost any type of website such a blog, portfolio, business website and WooCommerce storefront with a beautiful & professional design. Very fast, responsive, RTL & translation ready, best SEO practices, unique WooCommerce features to increase conversion and much more. You can even edit the settings on tablet & mobile so your site looks good on every device. Work with the most popular page builders as Elementor, Beaver Builder, Brizy, Visual Composer, Divi, SiteOrigin, etc... Developers will love his extensible codebase making it a joy to customize and extend. Best friend of Elementor & WooCommerce. Looking for a Multi-Purpose theme? Look no further! Check the demos to realize that it's the only theme you will ever need: https://oceanwp.org/demos/","requires":"5.3","requires_php":"7.2","wporg":true},{"name":"Twenty Twenty-One","slug":"twentytwentyone","version":"1.4","preview_url":"https://wp-themes.com/twentytwentyone/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentytwentyone/screenshot.png?ver=1.4","rating":82,"num_ratings":33,"homepage":"https://wordpress.org/themes/twentytwentyone/","description":"Twenty Twenty-One is a blank canvas for your ideas and it makes the block editor your best brush. With new block patterns, which allow you to create a beautiful layout in a matter of seconds, this theme’s soft colors and eye-catching — yet timeless — design will let your work shine. Take it for a spin! See how Twenty Twenty-One elevates your portfolio, business website, or personal blog.","requires":"5.3","requires_php":"5.6","wporg":true},{"name":"Occasio","slug":"occasio","version":"","preview_url":"https://themezee.com/themes/occasio/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/12/occasio.jpg","rating":0,"num_ratings":0,"homepage":"https://themezee.com/themes/occasio/","description":"\n\n\n

A sleek and modern Blogging & Magazine theme, carefully designed for writers using the Gutenberg Block Editor.

\n","requires":"","requires_php":"","wporg":false},{"name":"Tortuga","slug":"tortuga","version":"2.3.4","preview_url":"https://wp-themes.com/tortuga/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/tortuga/screenshot.jpg?ver=2.3.4","rating":96,"num_ratings":19,"homepage":"https://wordpress.org/themes/tortuga/","description":"Tortuga is a highly flexible and adventurous WordPress theme for your pirate magazine or any news related website. It supports three different post layouts, two sidebar schemes and a Magazine Homepage template based on widgets. Other highlights of Tortuga are the beautiful post slider and header widgets area. Arrr!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Treville","slug":"treville","version":"2.1.4","preview_url":"https://wp-themes.com/treville/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/treville/screenshot.jpg?ver=2.1.4","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/treville/","description":"An elegant Blogging & Magazine WordPress Theme with subtle colors and great typography. Treville supports two navigation menus, advanced post settings and a post slider with fullscreen images!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Wellington","slug":"wellington","version":"2.1.4","preview_url":"https://wp-themes.com/wellington/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/wellington/screenshot.jpg?ver=2.1.4","rating":100,"num_ratings":12,"homepage":"https://wordpress.org/themes/wellington/","description":"Wellington is a clean and simple Magazine WordPress theme with beautiful typography and subtle colors. The theme includes two different post layouts, a featured post slider and thoughtful theme settings in the Customizer.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Poseidon","slug":"poseidon","version":"2.3.4","preview_url":"https://wp-themes.com/poseidon/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/poseidon/screenshot.jpg?ver=2.3.4","rating":96,"num_ratings":16,"homepage":"https://wordpress.org/themes/poseidon/","description":"Poseidon is an elegant designed WordPress theme featuring a splendid fullscreen image slideshow. The clean typography and spacious white layout makes it great to share your stories. You can use the theme as simple blog or easily create a news website with the widget-based Magazine Homepage template.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Napoli","slug":"napoli","version":"2.2.4","preview_url":"https://wp-themes.com/napoli/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/napoli/screenshot.jpg?ver=2.2.4","rating":100,"num_ratings":4,"homepage":"https://wordpress.org/themes/napoli/","description":"Napoli is a beautiful WordPress theme perfectly suited for a food magazine. It features a great featured post slider, smooth typography and a grid-layout for posts. Bon appetit!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Mercia","slug":"mercia","version":"1.9.7","preview_url":"https://wp-themes.com/mercia/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/mercia/screenshot.jpg?ver=1.9.7","rating":100,"num_ratings":1,"homepage":"https://wordpress.org/themes/mercia/","description":"Mercia is a flexible and versatile theme perfect for lifestyle, travel, or fashion magazines. It features a modern and minimalist design with great typropaphy. Of course it works on all screen sizes. With multiple blog layouts and powerful Magazine widgets, you can easily create a stunning and dynamic news website in just a few minutes.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Maxwell","slug":"maxwell","version":"2.3.4","preview_url":"https://wp-themes.com/maxwell/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/maxwell/screenshot.jpg?ver=2.3.4","rating":100,"num_ratings":6,"homepage":"https://wordpress.org/themes/maxwell/","description":"Maxwell is a minimalistic and elegant WordPress theme featuring an ultra clean magazine layout. With a beautiful typography, various post layouts and a gorgeous featured posts slideshow Maxwell truly helps you to stand out.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Harrison","slug":"harrison","version":"1.3.4","preview_url":"https://wp-themes.com/harrison/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/harrison/screenshot.jpg?ver=1.3.4","rating":80,"num_ratings":1,"homepage":"https://wordpress.org/themes/harrison/","description":"Harrison is a highly versatile WordPress Theme and was specially designed for use with the new WordPress Block Editor. The theme supports the latest Gutenberg features and provides different blog layouts and extensive post settings. The clean and elegant design is perfect to create all kinds of websites. You should really try it!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Gridbox","slug":"gridbox","version":"2.3.4","preview_url":"https://wp-themes.com/gridbox/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/gridbox/screenshot.jpg?ver=2.3.4","rating":74,"num_ratings":6,"homepage":"https://wordpress.org/themes/gridbox/","description":"Gridbox is a clean and solid WordPress theme featuring a three-column grid-layout for posts. The theme works out of the box and does not require any complicated setup. It is perfectly suited for a simple magazine, blog or portfolio website.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Chronus","slug":"chronus","version":"2.0.5","preview_url":"https://wp-themes.com/chronus/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/chronus/screenshot.jpg?ver=2.0.5","rating":80,"num_ratings":5,"homepage":"https://wordpress.org/themes/chronus/","description":"Chronus is a fast and lightweight WordPress Theme created for magazines, news websites and personal blogs. The Featured Content section and flexible Magazine Widgets give you the ability to highlight your most important posts on the home page. The minimalistic and responsive design focuses on your content and looks great on any screen size.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Donovan","slug":"donovan","version":"1.8.4","preview_url":"https://wp-themes.com/donovan/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/donovan/screenshot.jpg?ver=1.8.4","rating":96,"num_ratings":16,"homepage":"https://wordpress.org/themes/donovan/","description":"Donovan is a flexible, yet easy-to-use blogging theme with a clean and modern design. It features an elegant mobile-first design, three different blog layouts and extensive post settings. Donovan is perfect for your personal blog or for any content-focused website.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Yosemite Lite","slug":"yosemite-lite","version":"1.2.1","preview_url":"https://wp-themes.com/yosemite-lite/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/yosemite-lite/screenshot.jpg?ver=1.2.1","rating":60,"num_ratings":2,"homepage":"https://wordpress.org/themes/yosemite-lite/","description":"Yosemite is a beautiful WordPress blog theme for personal blogs. Yosemite has a modern, clean and elegant look and lots of customization for bloggers. Built on the latest technology of WordPress, Yosemite is lightweight, fast and optimized for all mobile phones.","requires":false,"requires_php":false,"wporg":true},{"name":"Justread","slug":"justread","version":"1.3.0","preview_url":"https://wp-themes.com/justread/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/justread/screenshot.jpg?ver=1.3.0","rating":100,"num_ratings":5,"homepage":"https://wordpress.org/themes/justread/","description":"Justread is a clean and modern WordPress theme that focuses on reading experience. Justread has a grid layout with single column content. The theme uses system fonts and SVG for fast loading. Enjoy reading long content with comfortability.","requires":false,"requires_php":"5.6","wporg":true},{"name":"Floral Lite","slug":"floral-lite","version":"1.4","preview_url":"https://wp-themes.com/floral-lite/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/floral-lite/screenshot.jpg?ver=1.4","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/floral-lite/","description":"Floral is a beautiful WordPress blog theme for personal blogs. Floral has a modern, clean and elegant look and lots of customization for bloggers. Built on the latest technology of WordPress, Floral is lightweight, fast and optimized for all mobile phones.","requires":"4.5","requires_php":"5.6","wporg":true},{"name":"EightyDays Lite","slug":"eightydays-lite","version":"2.2.7","preview_url":"https://wp-themes.com/eightydays-lite/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"http://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/eightydays-lite/screenshot.png?ver=2.2.7","rating":90,"num_ratings":4,"homepage":"https://wordpress.org/themes/eightydays-lite/","description":"EightyDays is a beautiful WordPress travel theme for travel blogs or magazines. EightyDays has a modern, clean and elegant look and lots of customization for bloggers. Built on the latest technology of WordPress, EightyDays is lightweight, fast and optimized for all mobile phones.","requires":false,"requires_php":false,"wporg":true},{"name":"eStar","slug":"estar","version":"1.3.4","preview_url":"https://wp-themes.com/estar/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/estar/screenshot.png?ver=1.3.4","rating":100,"num_ratings":3,"homepage":"https://wordpress.org/themes/estar/","description":"eStar is a super fast, lightweight (less than 10KB on the front end), responsive and highly customizable WordPress theme suitable for blog, personal portfolio and business websites. It works perfectly with Gutenberg and all WordPress blocks. You can also pair it with any page builder plugin like Elementor, Beaver Builder, Visual Composer, SiteOrigin, Divi, Thrive Architect, Brizy and more. eStar is written from scratch with performance, extensibility, usability and SEO in mind. The theme follows best practices, well-coded and follows the latest web standards (HTML5, SVG, JavaScript). Some of the other features: microdata integration, widget areas, sidebar layouts, custom colors, custom Google fonts, translation ready. Looking for a perfect base theme? Look no further. eStar is fast, fully customizable WordPress theme that you can use for building any kind of website like business agencies, corporate, portfolio, education, university portal, consulting, church, restaurant, medical and so on. Learn more about the theme at https://gretathemes.com/wordpress-themes/estar/","requires":false,"requires_php":"5.6","wporg":true},{"name":"Stow","slug":"stow-2","version":"","preview_url":"https://wordpress.com/theme/stow","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/stow.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/stow","description":"\n\n\n

A bold and clean theme with lots of space for large images, it’s the ideal choice for creating an online presence for your business. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Shawburn","slug":"shawburn","version":"","preview_url":"https://wordpress.com/theme/shawburn","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/shawborn.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/shawburn","description":"\n\n\n

Shawburn is the ideal choice for creating an online presence for your business. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Rivington","slug":"rivington-2","version":"","preview_url":"https://wordpress.com/theme/rivington","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/rivington.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/rivington","description":"\n\n\n

Rivington was designed as a website template for realtors. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Redhill","slug":"redhill-2","version":"","preview_url":"https://wordpress.com/theme/redhill","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/redhill.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/redhill","description":"\n\n\n

Redhill is a simple theme with clean typography, created with entrepreneurs and small business owners in mind. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Morden","slug":"morden-2","version":"","preview_url":"https://wordpress.com/theme/morden","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/morden.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/morden","description":"\n\n\n

Morden is a functional and responsive multi-purpose theme that is the perfect solution for your business’s online presence. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Maywood","slug":"maywood-2","version":"","preview_url":"https://wordpress.com/theme/maywood","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/maywood.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/maywood","description":"\n\n\n

Modern, clean, sophisticated: Make your online presence as striking and stylish as your business with Maywood. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Mayland","slug":"mayland","version":"","preview_url":"https://wordpress.com/theme/mayland","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/mmayland.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/mayland","description":"\n\n\n

Mayland is a free WordPress theme. The clean, tasteful design highlights all your writing and photography projects. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Leven","slug":"leven-2","version":"","preview_url":"https://wordpress.com/theme/leven","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/leven.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/leven","description":"\n\n\n

Leven is a colorful, typography driven theme meant to grab the attention of potential customers and market or sell products to them. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Hever","slug":"hever-2","version":"","preview_url":"https://wordpress.com/theme/hever","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/hever.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/hever","description":"\n\n\n

Hever is a fun and friendly free WordPress theme that works particularly well for creative and crafty businesses. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Exford","slug":"exford-2","version":"","preview_url":"https://wordpress.com/theme/exford","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/exford.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/exford","description":"\n\n\n

A classic typography and clean design lend a sophisticated air to your website’s content. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Brompton","slug":"brompton-2","version":"","preview_url":"https://wordpress.com/theme/brompton","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/brompton.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/brompton","description":"\n\n\n

A a simple yet powerful website theme for small-business owners and entrepreneurs. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Barnsbury","slug":"barnsbury-2","version":"","preview_url":"https://wordpress.com/theme/barnsbury","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/Barnsbury.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/barnsbury","description":"\n\n\n

Barnsbury is an earthy, friendly theme made with farming and agriculture businesses in mind — but versatile enough for a personal site, too. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Balasana","slug":"balasana-2","version":"","preview_url":"https://wordpress.com/theme/balasana","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/Balasana.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/balasana","description":"\n\n\n

Balasana is a clean and minimalist business theme designed with health and wellness-focused sites in mind. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Alves","slug":"alves-2","version":"","preview_url":"https://wordpress.com/theme/alves","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/Alves.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/alves","description":"\n\n\n

Convincing design for your charity or organization’s online presence. Highlight your actions, causes and projects, Alves is versatile enough to be your personal site too. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Varia","slug":"varia-2","version":"","preview_url":"https://wordpress.com/theme/varia","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/varia.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/varia","description":"\n\n\n

A variable-based design system for WordPress sites built with Gutenberg. Parent theme of multiple AMP compatible themes.

\n","requires":"","requires_php":"","wporg":false},{"name":"Activation","slug":"activation","version":"1.2.2","preview_url":"https://wp-themes.com/activation/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/activation/screenshot.png?ver=1.2.2","rating":100,"num_ratings":1,"homepage":"https://wordpress.org/themes/activation/","description":"Activation is a Primer child theme with a colorful, fitness-focused design.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":false,"wporg":true},{"name":"Velux","slug":"velux","version":"1.1.3","preview_url":"https://wp-themes.com/velux/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/velux/screenshot.png?ver=1.1.3","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/velux/","description":"Velux is a Primer child theme with a clean, professional, and upscale design.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":"5.6.0","wporg":true},{"name":"Scribbles","slug":"scribbles","version":"1.1.2","preview_url":"https://wp-themes.com/scribbles/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/scribbles/screenshot.png?ver=1.1.2","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/scribbles/","description":"Scribbles is a Primer child theme with a playful and fun mood.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.1","requires_php":false,"wporg":true},{"name":"Ascension","slug":"ascension","version":"1.1.5","preview_url":"https://wp-themes.com/ascension/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/ascension/screenshot.png?ver=1.1.5","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/ascension/","description":"Ascension is a Primer child theme with a business-oriented design.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":"5.6.0","wporg":true},{"name":"Uptown Style","slug":"uptown-style","version":"1.1.3","preview_url":"https://wp-themes.com/uptown-style/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/uptown-style/screenshot.png?ver=1.1.3","rating":100,"num_ratings":3,"homepage":"https://wordpress.org/themes/uptown-style/","description":"Uptown Style is a Primer child theme with elegance and class.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":"5.6.0","wporg":true},{"name":"Go","slug":"go","version":"1.4.4","preview_url":"https://wp-themes.com/go/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":"GoDaddy","author_url":"https://www.godaddy.com"},"screenshot_url":"//ts.w.org/wp-content/themes/go/screenshot.png?ver=1.4.4","rating":94,"num_ratings":14,"homepage":"https://wordpress.org/themes/go/","description":"Go is an innovative, Gutenberg-first WordPress theme, hyper-focused on empowering makers to build beautifully rich websites with WordPress.","requires":false,"requires_php":"5.6","wporg":true},{"name":"Navigation Pro","slug":"navigation-pro","version":"","preview_url":"https://my.studiopress.com/themes/navigation/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/02/navigationPro.jpg","rating":0,"num_ratings":0,"homepage":"https://my.studiopress.com/themes/navigation/","description":"\n\n\n

A Genesis framework theme that cuts through the haze with bright colors, bold images and versatile layouts to steer your site to success.

\n","requires":"","requires_php":"","wporg":false},{"name":"Memory","slug":"memory","version":"2.0.1","preview_url":"https://wp-themes.com/memory/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/memory/screenshot.png?ver=2.0.1","rating":60,"num_ratings":1,"homepage":"https://wordpress.org/themes/memory/","description":"Clean and beautiful personal blog theme.","requires":"4.5","requires_php":"5.2","wporg":true},{"name":"Sacha","slug":"sacha","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/sacha9.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","description":"\n\n\n

Sacha is a Newspack child theme. You’ll find the latest version on the Newspack release page.

\n","requires":"","requires_php":"","wporg":false},{"name":"Scott","slug":"scott-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/scott.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","description":"\n\n\n

Scott is a Newspack child theme. You’ll find the latest version on the Newspack release page.

\n","requires":"","requires_php":"","wporg":false},{"name":"Katharine","slug":"katharine-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/katharine.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","description":"\n\n\n

Katharine is a Newspack child theme. You’ll find the latest version on the Newspack release page.

\n","requires":"","requires_php":"","wporg":false},{"name":"Joseph","slug":"joseph-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/joseph-1.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","description":"\n\n\n

Joseph is a Newspack child theme. You’ll find the latest version on the Newspack release page.

\n","requires":"","requires_php":"","wporg":false},{"name":"Nelson","slug":"nelson-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/nelson.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","description":"\n\n\n

Nelson is a Newspack child theme. You’ll find the latest version on the Newspack release page.

\n","requires":"","requires_php":"","wporg":false},{"name":"Newspack","slug":"newspack","version":"","preview_url":"https://github.com/Automattic/newspack-theme","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2019/11/newspack.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme","description":"\n\n\n

The Newspack theme is a forward-looking news theme designed and developed to be highly customizable with the WordPress block editor.

\n","requires":"","requires_php":"","wporg":false},{"name":"Twenty Twenty","slug":"twentytwenty","version":"1.8","preview_url":"https://wp-themes.com/twentytwenty/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentytwenty/screenshot.png?ver=1.8","rating":88,"num_ratings":60,"homepage":"https://wordpress.org/themes/twentytwenty/","description":"Our default theme for 2020 is designed to take full advantage of the flexibility of the block editor. Organizations and businesses have the ability to create dynamic landing pages with endless layouts using the group and column blocks. The centered content column and fine-tuned typography also makes it perfect for traditional blogs. Complete editor styles give you a good idea of what your content will look like, even before you publish. You can give your site a personal touch by changing the background colors and the accent color in the Customizer. The colors of all elements on your site are automatically calculated based on the colors you pick, ensuring a high, accessible color contrast for your visitors.","requires":"4.7","requires_php":"5.2.4","wporg":true},{"name":"Primer","slug":"primer","version":"1.8.9","preview_url":"https://wp-themes.com/primer/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/primer/screenshot.png?ver=1.8.9","rating":90,"num_ratings":15,"homepage":"https://wordpress.org/themes/primer/","description":"Primer is a powerful theme that brings clarity to your content in a fresh design.","requires":false,"requires_php":false,"wporg":true},{"name":"Essence Pro","slug":"essence-pro-theme","version":"","preview_url":"https://my.studiopress.com/themes/essence/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2019/07/cropped-Essence-Pro.png","rating":0,"num_ratings":0,"homepage":"https://my.studiopress.com/themes/essence/","description":"\n\n\n

Essence Pro is a beautiful, clutter-free theme for sites in the health, wellness, and lifestyle niches.

\n","requires":"","requires_php":"","wporg":false},{"name":"Genesis Framework","slug":"genesis-theme-framework","version":"","preview_url":"https://my.studiopress.com/themes/genesis/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2019/07/cropped-Genesis.png","rating":0,"num_ratings":0,"homepage":"https://my.studiopress.com/themes/genesis/","description":"\n\n\n

The Genesis Framework empowers webmasters to quickly and easily build websites with WordPress.

\n","requires":"","requires_php":"","wporg":false},{"name":"Twenty Fourteen","slug":"twentyfourteen","version":"3.2","preview_url":"https://wp-themes.com/twentyfourteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyfourteen/screenshot.png?ver=3.2","rating":88,"num_ratings":93,"homepage":"https://wordpress.org/themes/twentyfourteen/","description":"In 2014, our default theme lets you create a responsive magazine website with a sleek, modern design. Feature your favorite homepage content in either a grid or a slider. Use the three widget areas to customize your website, and change your content's layout with a full-width page template and a contributor page to show off your authors. Creating a magazine website with WordPress has never been easier.","requires":false,"requires_php":"5.2.4","wporg":true},{"name":"Twenty Thirteen","slug":"twentythirteen","version":"3.4","preview_url":"https://wp-themes.com/twentythirteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentythirteen/screenshot.png?ver=3.4","rating":82,"num_ratings":62,"homepage":"https://wordpress.org/themes/twentythirteen/","description":"The 2013 theme for WordPress takes us back to the blog, featuring a full range of post formats, each displayed beautifully in their own unique way. Design details abound, starting with a vibrant color scheme and matching header images, beautiful typography and icons, and a flexible layout that looks great on any device, big or small.","requires":"3.6","requires_php":"5.2.4","wporg":true},{"name":"Twenty Eleven","slug":"twentyeleven","version":"3.9","preview_url":"https://wp-themes.com/twentyeleven/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyeleven/screenshot.png?ver=3.9","rating":92,"num_ratings":49,"homepage":"https://wordpress.org/themes/twentyeleven/","description":"The 2011 theme for WordPress is sophisticated, lightweight, and adaptable. Make it yours with a custom menu, header image, and background -- then go further with available theme options for light or dark color scheme, custom link colors, and three layout choices. Twenty Eleven comes equipped with a Showcase page template that transforms your front page into a showcase to show off your best content, widget support galore (sidebar, three footer areas, and a Showcase page widget area), and a custom \"Ephemera\" widget to display your Aside, Link, Quote, or Status posts. Included are styles for print and for the admin editor, support for featured images (as custom header images on posts and pages and as large images on featured \"sticky\" posts), and special styles for six different post formats.","requires":false,"requires_php":"5.2.4","wporg":true},{"name":"Twenty Ten","slug":"twentyten","version":"3.5","preview_url":"https://wp-themes.com/twentyten/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyten/screenshot.png?ver=3.5","rating":94,"num_ratings":50,"homepage":"https://wordpress.org/themes/twentyten/","description":"The 2010 theme for WordPress is stylish, customizable, simple, and readable -- make it yours with a custom menu, header image, and background. Twenty Ten supports six widgetized areas (two in the sidebar, four in the footer) and featured images (thumbnails for gallery posts and custom header images for posts and pages). It includes stylesheets for print and the admin Visual Editor, special styles for posts in the \"Asides\" and \"Gallery\" categories, and has an optional one-column page template that removes the sidebar.","requires":"3.0","requires_php":"5.2.4","wporg":true},{"name":"Zakra","slug":"zakra","version":"2.0.3","preview_url":"https://wp-themes.com/zakra/","author":{"user_nicename":"themegrill","profile":"https://profiles.wordpress.org/themegrill","avatar":"https://secure.gravatar.com/avatar/fa3cda768036cc3983458ed23394a43d?s=96&d=monsterid&r=g","display_name":"ThemeGrill","author":"ThemeGrill","author_url":"https://themegrill.com"},"screenshot_url":"//ts.w.org/wp-content/themes/zakra/screenshot.jpg?ver=2.0.3","rating":100,"num_ratings":474,"homepage":"https://wordpress.org/themes/zakra/","description":"Zakra is flexible, fast, lightweight and modern multipurpose theme that comes with many starter free sites (currently 10+ free starter sites and more will be added later) that you can use to make your site beautiful and professional. Check all the starter sites at https://zakratheme.com/demos. Suitable for personal blog, portfolio, WooCommerce stores, business websites and niche-based sites (like Cafe, Spa, Charity, Yoga, Wedding, Dentist, Education etc) as well. Works with Elementor plus other major page builders so you can create any layout you want. The theme is responsive, Gutenberg compatible, SEO friendly, translation ready and major WordPress plugins compatible.","requires":false,"requires_php":"5.6","wporg":true},{"name":"Neve","slug":"neve","version":"3.0.3","preview_url":"https://wp-themes.com/neve/","author":{"user_nicename":"themeisle","profile":"https://profiles.wordpress.org/themeisle","avatar":"https://secure.gravatar.com/avatar/a0ec097eaf5f30933eb00c1175d4bd55?s=96&d=monsterid&r=g","display_name":"Themeisle","author":"ThemeIsle","author_url":"https://themeisle.com"},"screenshot_url":"//ts.w.org/wp-content/themes/neve/screenshot.png?ver=3.0.3","rating":96,"num_ratings":806,"homepage":"https://wordpress.org/themes/neve/","description":"Neve is a super fast, easily customizable, multi-purpose theme. It’s perfect for blogs, small business, startups, agencies, firms, e-commerce shops (WooCommerce storefront) as well as personal portfolio sites and most types of projects. A fully AMP optimized and responsive theme, Neve will load in mere seconds and adapt perfectly on any viewing device. While it is lightweight and has a minimalist design, the theme is highly extendable, it has a highly SEO optimized code, resulting in top rankings in Google search results. Neve works perfectly with Gutenberg and the most popular page builders (Elementor, Brizy, Beaver Builder, Visual Composer, SiteOrigin, Divi). Neve is also WooCommerce ready, responsive, RTL & translation ready. Look no further. Neve is the perfect theme for you!","requires":false,"requires_php":"7.0","wporg":true},{"name":"Astra","slug":"astra","version":"3.6.9","preview_url":"https://wp-themes.com/astra/","author":{"user_nicename":"brainstormforce","profile":"https://profiles.wordpress.org/brainstormforce","avatar":"https://secure.gravatar.com/avatar/9f4255d653745eaa037105cd5eab2295?s=96&d=monsterid&r=g","display_name":"Brainstorm Force","author":"Brainstorm Force","author_url":"https://wpastra.com/about/"},"screenshot_url":"//ts.w.org/wp-content/themes/astra/screenshot.jpg?ver=3.6.9","rating":98,"num_ratings":4982,"homepage":"https://wordpress.org/themes/astra/","description":"Astra is fast, fully customizable & beautiful WordPress theme suitable for blog, personal portfolio, business website and WooCommerce storefront. It is very lightweight (less than 50KB on frontend) and offers unparalleled speed. Built with SEO in mind, Astra comes with Schema.org code integrated and is Native AMP ready so search engines will love your site. It offers special features and templates so it works perfectly with all page builders like Elementor, Beaver Builder, Visual Composer, SiteOrigin, Divi, etc. Some of the other features: # WooCommerce Ready # Responsive # RTL & Translation Ready # Extendible with premium addons # Regularly updated # Designed, Developed, Maintained & Supported by Brainstorm Force. Looking for a perfect base theme? Look no further. Astra is fast, fully customizable and WooCommerce ready theme that you can use for building any kind of website!","requires":"5.3","requires_php":"5.3","wporg":true},{"name":"Twenty Twelve","slug":"twentytwelve","version":"3.5","preview_url":"https://wp-themes.com/twentytwelve/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentytwelve/screenshot.png?ver=3.5","rating":92,"num_ratings":155,"homepage":"https://wordpress.org/themes/twentytwelve/","description":"The 2012 theme for WordPress is a fully responsive theme that looks great on any device. Features include a front page template with its own widgets, an optional display font, styling for post formats on both index and single views, and an optional no-sidebar page template. Make it yours with a custom menu, header image, and background.","requires":"3.5","requires_php":"5.2.4","wporg":true},{"name":"Twenty Nineteen","slug":"twentynineteen","version":"2.1","preview_url":"https://wp-themes.com/twentynineteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentynineteen/screenshot.png?ver=2.1","rating":74,"num_ratings":59,"homepage":"https://wordpress.org/themes/twentynineteen/","description":"Our 2019 default theme is designed to show off the power of the block editor. It features custom styles for all the default blocks, and is built so that what you see in the editor looks like what you'll see on your website. Twenty Nineteen is designed to be adaptable to a wide range of websites, whether you’re running a photo blog, launching a new business, or supporting a non-profit. Featuring ample whitespace and modern sans-serif headlines paired with classic serif body text, it's built to be beautiful on all screen sizes.","requires":"4.9.6","requires_php":"5.2.4","wporg":true},{"name":"Twenty Seventeen","slug":"twentyseventeen","version":"2.8","preview_url":"https://wp-themes.com/twentyseventeen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyseventeen/screenshot.png?ver=2.8","rating":88,"num_ratings":114,"homepage":"https://wordpress.org/themes/twentyseventeen/","description":"Twenty Seventeen brings your site to life with header video and immersive featured images. With a focus on business sites, it features multiple sections on the front page as well as widgets, navigation and social menus, a logo, and more. Personalize its asymmetrical grid with a custom color scheme and showcase your multimedia content with post formats. Our default theme for 2017 works great in many languages, for any abilities, and on any device.","requires":"4.7","requires_php":"5.2.4","wporg":true},{"name":"Twenty Sixteen","slug":"twentysixteen","version":"2.5","preview_url":"https://wp-themes.com/twentysixteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentysixteen/screenshot.png?ver=2.5","rating":82,"num_ratings":79,"homepage":"https://wordpress.org/themes/twentysixteen/","description":"Twenty Sixteen is a modernized take on an ever-popular WordPress layout — the horizontal masthead with an optional right sidebar that works perfectly for blogs and websites. It has custom color options with beautiful default color schemes, a harmonious fluid grid using a mobile-first approach, and impeccable polish in every detail. Twenty Sixteen will make your WordPress look beautiful everywhere.","requires":"4.4","requires_php":"5.2.4","wporg":true},{"name":"Twenty Fifteen","slug":"twentyfifteen","version":"3.0","preview_url":"https://wp-themes.com/twentyfifteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyfifteen/screenshot.png?ver=3.0","rating":88,"num_ratings":50,"homepage":"https://wordpress.org/themes/twentyfifteen/","description":"Our 2015 default theme is clean, blog-focused, and designed for clarity. Twenty Fifteen's simple, straightforward typography is readable on a wide variety of screen sizes, and suitable for multiple languages. We designed it using a mobile-first approach, meaning your content takes center-stage, regardless of whether your visitors arrive by smartphone, tablet, laptop, or desktop computer.","requires":false,"requires_php":"5.2.4","wporg":true}] \ No newline at end of file +[{"name":"Sydney","slug":"sydney","version":"1.79","preview_url":"https://wp-themes.com/sydney/","author":{"user_nicename":"athemes","profile":"https://profiles.wordpress.org/athemes","avatar":"https://secure.gravatar.com/avatar/0fe6c4dee6e201e81783d8a0ee12d83b?s=96&d=monsterid&r=g","display_name":"athemes","author":"aThemes","author_url":"https://athemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/sydney/screenshot.png?ver=1.79","rating":98,"num_ratings":497,"homepage":"https://wordpress.org/themes/sydney/","description":"Sydney is a powerful business theme that provides a fast way for companies or freelancers to create an awesome online presence. As well as being fully compatible with Elementor, Sydney brings plenty of customization possibilities like access to all Google Fonts, full color control, layout control, logo upload, full screen slider, header image, sticky navigation and much more. Also, Sydney provides all the construction blocks you need to rapidly create an engaging front page. Looking for a quick start with Sydney? With just a few clicks, you can import one of our existing demos (https://athemes.com/sydney-demos/)","requires":false,"requires_php":"5.6","wporg":true},{"name":"Really Simple","slug":"really-simple","version":"1.0.7","preview_url":"https://wp-themes.com/really-simple/","author":{"user_nicename":"flauberthenriques","profile":"https://profiles.wordpress.org/flauberthenriques","avatar":"https://secure.gravatar.com/avatar/d524eb0811fa44be90481509b000c779?s=96&d=monsterid&r=g","display_name":"Flaubert Henriques","author":"Flaubert Henriques","author_url":"https://profiles.wordpress.org/flauberthenriques/"},"screenshot_url":"//ts.w.org/wp-content/themes/really-simple/screenshot.png?ver=1.0.7","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/really-simple/","description":"Really Simple is a theme for bloggers and writers who need a ultra light and fast theme. The theme focuses on simplicity and loading speed. Yes, Really Simple Theme is also fully AMP compatible. Check the readme.txt file and leave the sidebar perfect after WordPress 5.8 update.","requires":"5.3","requires_php":"7.0","wporg":true},{"name":"Artpop","slug":"artpop","version":"1.0.7","preview_url":"https://wp-themes.com/artpop/","author":{"user_nicename":"designlabthemes","profile":"https://profiles.wordpress.org/designlabthemes","avatar":"https://secure.gravatar.com/avatar/956873f77232371cb89d8a0d7a516354?s=96&d=monsterid&r=g","display_name":"designlabthemes","author":"Design Lab","author_url":"https://www.designlabthemes.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/artpop/screenshot.png?ver=1.0.7","rating":100,"num_ratings":1,"homepage":"https://wordpress.org/themes/artpop/","description":"Artpop is a beautiful Gutenberg-first WordPress theme, carefully designed to help you build your online brand. Unleash your creativity, Artpop takes care of the rest! Well documented and easy to use even for WordPress beginners, Artpop is perfect for a blog, personal portfolio, small business website, and WooCommerce storefront. Easily set your logo, change colors, and create awesome layouts to give your website a truly unique look.","requires":"4.7","requires_php":"5.6","wporg":true},{"name":"Michelle","slug":"michelle","version":"1.2.0","preview_url":"https://wp-themes.com/michelle/","author":{"user_nicename":"webmandesign","profile":"https://profiles.wordpress.org/webmandesign","avatar":"https://secure.gravatar.com/avatar/f4a334f9f5af61b2bd22fcaadb04dd06?s=96&d=monsterid&r=g","display_name":"WebMan Design | Oliver Juhas","author":"WebMan Design","author_url":"https://www.webmandesign.eu/"},"screenshot_url":"//ts.w.org/wp-content/themes/michelle/screenshot.png?ver=1.2.0","rating":100,"num_ratings":3,"homepage":"https://wordpress.org/themes/michelle/","description":"Michelle is accessibility ready WordPress theme for creating inclusive websites easily and with fun using block editor. Useful block patterns, block styles, templates and featured posts functionality allow you to build an eyecatching website in no time. Customize site footer and error 404 page content with block editor! The theme also works with Beaver Builder, Elementor, or any other page builder. It also supports theme builders! Michelle elevates your business, eCommerce, portfolio, or blog website. Check out the demo at https://themedemos.webmandesign.eu/michelle/ and documentation at https://webmandesign.github.io/docs/michelle/","requires":"5.5","requires_php":"7.0","wporg":true},{"name":"Miniva","slug":"miniva","version":"1.6.3","preview_url":"https://wp-themes.com/miniva/","author":{"user_nicename":"tajam","profile":"https://profiles.wordpress.org/tajam","avatar":"https://secure.gravatar.com/avatar/378d4e715829ccf6f1fbe6dfef6eb539?s=96&d=monsterid&r=g","display_name":"Tajam","author":"Tajam","author_url":"https://tajam.id/"},"screenshot_url":"//ts.w.org/wp-content/themes/miniva/screenshot.png?ver=1.6.3","rating":100,"num_ratings":6,"homepage":"https://wordpress.org/themes/miniva/","description":"A fast, lightweight, and mobile-friendly WordPress theme for bloggers. Miniva is built with simplicity, accessibility and performance in mind. The clean and minimal design helps readers focus on your content. It supports AMP and several Jetpack modules including featured content, infinite scroll, content options and social menu. See the theme demo at https://tajam.id/miniva-demo/","requires":"4.5","requires_php":"5.3","wporg":true},{"name":"Iknow","slug":"iknow","version":"1.2.6","preview_url":"https://wp-themes.com/iknow/","author":{"user_nicename":"wpcalc","profile":"https://profiles.wordpress.org/wpcalc","avatar":"https://secure.gravatar.com/avatar/64ca4933fab3d5e50383f0b514acd5f6?s=96&d=monsterid&r=g","display_name":"Wow-Company","author":"Wow-Company","author_url":"https://wow-company.com"},"screenshot_url":"//ts.w.org/wp-content/themes/iknow/screenshot.png?ver=1.2.6","rating":98,"num_ratings":9,"homepage":"https://wordpress.org/themes/iknow/","description":"Iknow WordPress Theme has a minimalistic, responsive and mobile-friendly design. Easy and fast theme. The theme is perfect for creating Knowledge Base, Helpdesk, Wiki and FAQ websites. Ability to set custom icons for each category and tag. Manage the display of categories on the main page of the site. The integrated post rating system VoteUp/VoteDown. Breadcrumbs for easy site navigation. Custom widget to display the current navigation in a category and in a separate post. You can view the appearance and features of the theme on the site https://wow-company.com/wp-theme-iknow/. Documentation https://wow-company.com/faq/category/wow-themes/iknow/","requires":false,"requires_php":"5.6","wporg":true},{"name":"Kadence","slug":"kadence","version":"1.1.3","preview_url":"https://wp-themes.com/kadence/","author":{"user_nicename":"britner","profile":"https://profiles.wordpress.org/britner","avatar":"https://secure.gravatar.com/avatar/3276133b8df529e6e1e58586ab1a309e?s=96&d=monsterid&r=g","display_name":"Ben Ritner - Kadence WP","author":"Kadence WP","author_url":"https://www.kadencewp.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/kadence/screenshot.png?ver=1.1.3","rating":98,"num_ratings":136,"homepage":"https://wordpress.org/themes/kadence/","description":"Kadence Theme is a lightweight yet full featured WordPress theme for creating beautiful fast loading and accessible websites, easier than ever. It features an easy to use drag and drop header and footer builder to build any type of header in minutes. It features a full library of gorgeous starter templates that are easy to modify with our intelligent global font and color controls. With extensive integration with the most popular 3rd party plugins, you can quickly build impressive ecommerce websites, course websites, business websites, and more.","requires":"5.0","requires_php":"7.0","wporg":true},{"name":"Izo","slug":"izo","version":"1.0.12","preview_url":"https://wp-themes.com/izo/","author":{"user_nicename":"elfwp","profile":"https://profiles.wordpress.org/elfwp","avatar":"https://secure.gravatar.com/avatar/1cfedf4555fea4d8fbba2947635586ea?s=96&d=monsterid&r=g","display_name":"elfwp","author":"elfWP","author_url":"https://elfwp.com"},"screenshot_url":"//ts.w.org/wp-content/themes/izo/screenshot.png?ver=1.0.12","rating":90,"num_ratings":2,"homepage":"https://wordpress.org/themes/izo/","description":"Izo a fast, lightweight, native AMP and fully customizable multipurpose WordPress theme. Features include compatibility with many popular plugins like Elementor and other page builders, WooCommerce, WPML, LifterLMS and more. There is also full support for the new WordPress block editor. Izo is fully responsive and our users can take advantage of the many customizer options to easily change styles. Also, if you're looking for a quick start, we're offering a bunch of free starter sites, ready to easily import.","requires":false,"requires_php":"5.6","wporg":true},{"name":"OceanWP","slug":"oceanwp","version":"3.0.7","preview_url":"https://wp-themes.com/oceanwp/","author":{"user_nicename":"oceanwp","profile":"https://profiles.wordpress.org/oceanwp","avatar":"https://secure.gravatar.com/avatar/05f8d3fe2ccb6479bac14e4d40b406dd?s=96&d=monsterid&r=g","display_name":"oceanwp","author":"Nick","author_url":"https://oceanwp.org/about-me/"},"screenshot_url":"//ts.w.org/wp-content/themes/oceanwp/screenshot.png?ver=3.0.7","rating":98,"num_ratings":4918,"homepage":"https://wordpress.org/themes/oceanwp/","description":"OceanWP is the perfect theme for your project. Lightweight and highly extendable, it will enable you to create almost any type of website such a blog, portfolio, business website and WooCommerce storefront with a beautiful & professional design. Very fast, responsive, RTL & translation ready, best SEO practices, unique WooCommerce features to increase conversion and much more. You can even edit the settings on tablet & mobile so your site looks good on every device. Work with the most popular page builders as Elementor, Beaver Builder, Brizy, Visual Composer, Divi, SiteOrigin, etc... Developers will love his extensible codebase making it a joy to customize and extend. Best friend of Elementor & WooCommerce. Looking for a Multi-Purpose theme? Look no further! Check the demos to realize that it's the only theme you will ever need: https://oceanwp.org/demos/","requires":"5.3","requires_php":"7.2","wporg":true},{"name":"Twenty Twenty-One","slug":"twentytwentyone","version":"1.4","preview_url":"https://wp-themes.com/twentytwentyone/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentytwentyone/screenshot.png?ver=1.4","rating":82,"num_ratings":33,"homepage":"https://wordpress.org/themes/twentytwentyone/","description":"Twenty Twenty-One is a blank canvas for your ideas and it makes the block editor your best brush. With new block patterns, which allow you to create a beautiful layout in a matter of seconds, this theme’s soft colors and eye-catching — yet timeless — design will let your work shine. Take it for a spin! See how Twenty Twenty-One elevates your portfolio, business website, or personal blog.","requires":"5.3","requires_php":"5.6","wporg":true},{"name":"Occasio","slug":"occasio","version":"","preview_url":"https://themezee.com/themes/occasio/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/12/occasio.jpg","rating":0,"num_ratings":0,"homepage":"https://themezee.com/themes/occasio/","description":"\n\n\n

A sleek and modern Blogging & Magazine theme, carefully designed for writers using the Gutenberg Block Editor.

\n","requires":"","requires_php":"","wporg":false},{"name":"Tortuga","slug":"tortuga","version":"2.3.4","preview_url":"https://wp-themes.com/tortuga/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/tortuga/screenshot.jpg?ver=2.3.4","rating":96,"num_ratings":19,"homepage":"https://wordpress.org/themes/tortuga/","description":"Tortuga is a highly flexible and adventurous WordPress theme for your pirate magazine or any news related website. It supports three different post layouts, two sidebar schemes and a Magazine Homepage template based on widgets. Other highlights of Tortuga are the beautiful post slider and header widgets area. Arrr!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Treville","slug":"treville","version":"2.1.4","preview_url":"https://wp-themes.com/treville/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/treville/screenshot.jpg?ver=2.1.4","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/treville/","description":"An elegant Blogging & Magazine WordPress Theme with subtle colors and great typography. Treville supports two navigation menus, advanced post settings and a post slider with fullscreen images!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Wellington","slug":"wellington","version":"2.1.4","preview_url":"https://wp-themes.com/wellington/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/wellington/screenshot.jpg?ver=2.1.4","rating":100,"num_ratings":12,"homepage":"https://wordpress.org/themes/wellington/","description":"Wellington is a clean and simple Magazine WordPress theme with beautiful typography and subtle colors. The theme includes two different post layouts, a featured post slider and thoughtful theme settings in the Customizer.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Poseidon","slug":"poseidon","version":"2.3.4","preview_url":"https://wp-themes.com/poseidon/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/poseidon/screenshot.jpg?ver=2.3.4","rating":96,"num_ratings":16,"homepage":"https://wordpress.org/themes/poseidon/","description":"Poseidon is an elegant designed WordPress theme featuring a splendid fullscreen image slideshow. The clean typography and spacious white layout makes it great to share your stories. You can use the theme as simple blog or easily create a news website with the widget-based Magazine Homepage template.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Napoli","slug":"napoli","version":"2.2.4","preview_url":"https://wp-themes.com/napoli/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/napoli/screenshot.jpg?ver=2.2.4","rating":100,"num_ratings":4,"homepage":"https://wordpress.org/themes/napoli/","description":"Napoli is a beautiful WordPress theme perfectly suited for a food magazine. It features a great featured post slider, smooth typography and a grid-layout for posts. Bon appetit!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Mercia","slug":"mercia","version":"1.9.7","preview_url":"https://wp-themes.com/mercia/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/mercia/screenshot.jpg?ver=1.9.7","rating":100,"num_ratings":1,"homepage":"https://wordpress.org/themes/mercia/","description":"Mercia is a flexible and versatile theme perfect for lifestyle, travel, or fashion magazines. It features a modern and minimalist design with great typropaphy. Of course it works on all screen sizes. With multiple blog layouts and powerful Magazine widgets, you can easily create a stunning and dynamic news website in just a few minutes.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Maxwell","slug":"maxwell","version":"2.3.4","preview_url":"https://wp-themes.com/maxwell/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/maxwell/screenshot.jpg?ver=2.3.4","rating":100,"num_ratings":6,"homepage":"https://wordpress.org/themes/maxwell/","description":"Maxwell is a minimalistic and elegant WordPress theme featuring an ultra clean magazine layout. With a beautiful typography, various post layouts and a gorgeous featured posts slideshow Maxwell truly helps you to stand out.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Harrison","slug":"harrison","version":"1.3.4","preview_url":"https://wp-themes.com/harrison/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/harrison/screenshot.jpg?ver=1.3.4","rating":80,"num_ratings":1,"homepage":"https://wordpress.org/themes/harrison/","description":"Harrison is a highly versatile WordPress Theme and was specially designed for use with the new WordPress Block Editor. The theme supports the latest Gutenberg features and provides different blog layouts and extensive post settings. The clean and elegant design is perfect to create all kinds of websites. You should really try it!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Gridbox","slug":"gridbox","version":"2.3.4","preview_url":"https://wp-themes.com/gridbox/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/gridbox/screenshot.jpg?ver=2.3.4","rating":74,"num_ratings":6,"homepage":"https://wordpress.org/themes/gridbox/","description":"Gridbox is a clean and solid WordPress theme featuring a three-column grid-layout for posts. The theme works out of the box and does not require any complicated setup. It is perfectly suited for a simple magazine, blog or portfolio website.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Chronus","slug":"chronus","version":"2.0.5","preview_url":"https://wp-themes.com/chronus/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/chronus/screenshot.jpg?ver=2.0.5","rating":80,"num_ratings":5,"homepage":"https://wordpress.org/themes/chronus/","description":"Chronus is a fast and lightweight WordPress Theme created for magazines, news websites and personal blogs. The Featured Content section and flexible Magazine Widgets give you the ability to highlight your most important posts on the home page. The minimalistic and responsive design focuses on your content and looks great on any screen size.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Donovan","slug":"donovan","version":"1.8.4","preview_url":"https://wp-themes.com/donovan/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/donovan/screenshot.jpg?ver=1.8.4","rating":96,"num_ratings":16,"homepage":"https://wordpress.org/themes/donovan/","description":"Donovan is a flexible, yet easy-to-use blogging theme with a clean and modern design. It features an elegant mobile-first design, three different blog layouts and extensive post settings. Donovan is perfect for your personal blog or for any content-focused website.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Yosemite Lite","slug":"yosemite-lite","version":"1.2.1","preview_url":"https://wp-themes.com/yosemite-lite/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/yosemite-lite/screenshot.jpg?ver=1.2.1","rating":60,"num_ratings":2,"homepage":"https://wordpress.org/themes/yosemite-lite/","description":"Yosemite is a beautiful WordPress blog theme for personal blogs. Yosemite has a modern, clean and elegant look and lots of customization for bloggers. Built on the latest technology of WordPress, Yosemite is lightweight, fast and optimized for all mobile phones.","requires":false,"requires_php":false,"wporg":true},{"name":"Justread","slug":"justread","version":"1.3.0","preview_url":"https://wp-themes.com/justread/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/justread/screenshot.jpg?ver=1.3.0","rating":100,"num_ratings":5,"homepage":"https://wordpress.org/themes/justread/","description":"Justread is a clean and modern WordPress theme that focuses on reading experience. Justread has a grid layout with single column content. The theme uses system fonts and SVG for fast loading. Enjoy reading long content with comfortability.","requires":false,"requires_php":"5.6","wporg":true},{"name":"Floral Lite","slug":"floral-lite","version":"1.4","preview_url":"https://wp-themes.com/floral-lite/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/floral-lite/screenshot.jpg?ver=1.4","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/floral-lite/","description":"Floral is a beautiful WordPress blog theme for personal blogs. Floral has a modern, clean and elegant look and lots of customization for bloggers. Built on the latest technology of WordPress, Floral is lightweight, fast and optimized for all mobile phones.","requires":"4.5","requires_php":"5.6","wporg":true},{"name":"EightyDays Lite","slug":"eightydays-lite","version":"2.2.7","preview_url":"https://wp-themes.com/eightydays-lite/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"http://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/eightydays-lite/screenshot.png?ver=2.2.7","rating":90,"num_ratings":4,"homepage":"https://wordpress.org/themes/eightydays-lite/","description":"EightyDays is a beautiful WordPress travel theme for travel blogs or magazines. EightyDays has a modern, clean and elegant look and lots of customization for bloggers. Built on the latest technology of WordPress, EightyDays is lightweight, fast and optimized for all mobile phones.","requires":false,"requires_php":false,"wporg":true},{"name":"eStar","slug":"estar","version":"1.3.4","preview_url":"https://wp-themes.com/estar/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/estar/screenshot.png?ver=1.3.4","rating":100,"num_ratings":3,"homepage":"https://wordpress.org/themes/estar/","description":"eStar is a super fast, lightweight (less than 10KB on the front end), responsive and highly customizable WordPress theme suitable for blog, personal portfolio and business websites. It works perfectly with Gutenberg and all WordPress blocks. You can also pair it with any page builder plugin like Elementor, Beaver Builder, Visual Composer, SiteOrigin, Divi, Thrive Architect, Brizy and more. eStar is written from scratch with performance, extensibility, usability and SEO in mind. The theme follows best practices, well-coded and follows the latest web standards (HTML5, SVG, JavaScript). Some of the other features: microdata integration, widget areas, sidebar layouts, custom colors, custom Google fonts, translation ready. Looking for a perfect base theme? Look no further. eStar is fast, fully customizable WordPress theme that you can use for building any kind of website like business agencies, corporate, portfolio, education, university portal, consulting, church, restaurant, medical and so on. Learn more about the theme at https://gretathemes.com/wordpress-themes/estar/","requires":false,"requires_php":"5.6","wporg":true},{"name":"Stow","slug":"stow-2","version":"","preview_url":"https://wordpress.com/theme/stow","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/stow.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/stow","description":"\n\n\n

A bold and clean theme with lots of space for large images, it’s the ideal choice for creating an online presence for your business. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Shawburn","slug":"shawburn","version":"","preview_url":"https://wordpress.com/theme/shawburn","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/shawborn.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/shawburn","description":"\n\n\n

Shawburn is the ideal choice for creating an online presence for your business. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Rivington","slug":"rivington-2","version":"","preview_url":"https://wordpress.com/theme/rivington","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/rivington.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/rivington","description":"\n\n\n

Rivington was designed as a website template for realtors. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Redhill","slug":"redhill-2","version":"","preview_url":"https://wordpress.com/theme/redhill","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/redhill.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/redhill","description":"\n\n\n

Redhill is a simple theme with clean typography, created with entrepreneurs and small business owners in mind. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Morden","slug":"morden-2","version":"","preview_url":"https://wordpress.com/theme/morden","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/morden.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/morden","description":"\n\n\n

Morden is a functional and responsive multi-purpose theme that is the perfect solution for your business’s online presence. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Maywood","slug":"maywood-2","version":"","preview_url":"https://wordpress.com/theme/maywood","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/maywood.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/maywood","description":"\n\n\n

Modern, clean, sophisticated: Make your online presence as striking and stylish as your business with Maywood. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Mayland","slug":"mayland","version":"","preview_url":"https://wordpress.com/theme/mayland","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/mmayland.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/mayland","description":"\n\n\n

Mayland is a free WordPress theme. The clean, tasteful design highlights all your writing and photography projects. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Leven","slug":"leven-2","version":"","preview_url":"https://wordpress.com/theme/leven","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/leven.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/leven","description":"\n\n\n

Leven is a colorful, typography driven theme meant to grab the attention of potential customers and market or sell products to them. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Hever","slug":"hever-2","version":"","preview_url":"https://wordpress.com/theme/hever","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/hever.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/hever","description":"\n\n\n

Hever is a fun and friendly free WordPress theme that works particularly well for creative and crafty businesses. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Exford","slug":"exford-2","version":"","preview_url":"https://wordpress.com/theme/exford","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/exford.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/exford","description":"\n\n\n

A classic typography and clean design lend a sophisticated air to your website’s content. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Brompton","slug":"brompton-2","version":"","preview_url":"https://wordpress.com/theme/brompton","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/brompton.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/brompton","description":"\n\n\n

A a simple yet powerful website theme for small-business owners and entrepreneurs. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Barnsbury","slug":"barnsbury-2","version":"","preview_url":"https://wordpress.com/theme/barnsbury","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/Barnsbury.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/barnsbury","description":"\n\n\n

Barnsbury is an earthy, friendly theme made with farming and agriculture businesses in mind — but versatile enough for a personal site, too. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Balasana","slug":"balasana-2","version":"","preview_url":"https://wordpress.com/theme/balasana","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/Balasana.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/balasana","description":"\n\n\n

Balasana is a clean and minimalist business theme designed with health and wellness-focused sites in mind. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Alves","slug":"alves-2","version":"","preview_url":"https://wordpress.com/theme/alves","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/Alves.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/alves","description":"\n\n\n

Convincing design for your charity or organization’s online presence. Highlight your actions, causes and projects, Alves is versatile enough to be your personal site too. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Varia","slug":"varia-2","version":"","preview_url":"https://wordpress.com/theme/varia","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/varia.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/varia","description":"\n\n\n

A variable-based design system for WordPress sites built with Gutenberg. Parent theme of multiple AMP compatible themes.

\n","requires":"","requires_php":"","wporg":false},{"name":"Activation","slug":"activation","version":"1.2.2","preview_url":"https://wp-themes.com/activation/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/activation/screenshot.png?ver=1.2.2","rating":100,"num_ratings":1,"homepage":"https://wordpress.org/themes/activation/","description":"Activation is a Primer child theme with a colorful, fitness-focused design.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":false,"wporg":true},{"name":"Velux","slug":"velux","version":"1.1.3","preview_url":"https://wp-themes.com/velux/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/velux/screenshot.png?ver=1.1.3","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/velux/","description":"Velux is a Primer child theme with a clean, professional, and upscale design.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":"5.6.0","wporg":true},{"name":"Scribbles","slug":"scribbles","version":"1.1.2","preview_url":"https://wp-themes.com/scribbles/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/scribbles/screenshot.png?ver=1.1.2","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/scribbles/","description":"Scribbles is a Primer child theme with a playful and fun mood.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.1","requires_php":false,"wporg":true},{"name":"Ascension","slug":"ascension","version":"1.1.5","preview_url":"https://wp-themes.com/ascension/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/ascension/screenshot.png?ver=1.1.5","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/ascension/","description":"Ascension is a Primer child theme with a business-oriented design.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":"5.6.0","wporg":true},{"name":"Uptown Style","slug":"uptown-style","version":"1.1.3","preview_url":"https://wp-themes.com/uptown-style/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/uptown-style/screenshot.png?ver=1.1.3","rating":100,"num_ratings":3,"homepage":"https://wordpress.org/themes/uptown-style/","description":"Uptown Style is a Primer child theme with elegance and class.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":"5.6.0","wporg":true},{"name":"Go","slug":"go","version":"1.4.4","preview_url":"https://wp-themes.com/go/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":"GoDaddy","author_url":"https://www.godaddy.com"},"screenshot_url":"//ts.w.org/wp-content/themes/go/screenshot.png?ver=1.4.4","rating":94,"num_ratings":14,"homepage":"https://wordpress.org/themes/go/","description":"Go is an innovative, Gutenberg-first WordPress theme, hyper-focused on empowering makers to build beautifully rich websites with WordPress.","requires":false,"requires_php":"5.6","wporg":true},{"name":"Navigation Pro","slug":"navigation-pro","version":"","preview_url":"https://my.studiopress.com/themes/navigation/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/02/navigationPro.jpg","rating":0,"num_ratings":0,"homepage":"https://my.studiopress.com/themes/navigation/","description":"\n\n\n

A Genesis framework theme that cuts through the haze with bright colors, bold images and versatile layouts to steer your site to success.

\n","requires":"","requires_php":"","wporg":false},{"name":"Memory","slug":"memory","version":"2.0.1","preview_url":"https://wp-themes.com/memory/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/memory/screenshot.png?ver=2.0.1","rating":60,"num_ratings":1,"homepage":"https://wordpress.org/themes/memory/","description":"Clean and beautiful personal blog theme.","requires":"4.5","requires_php":"5.2","wporg":true},{"name":"Sacha","slug":"sacha","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/sacha9.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","description":"\n\n\n

Sacha is a Newspack child theme. You’ll find the latest version on the Newspack release page.

\n","requires":"","requires_php":"","wporg":false},{"name":"Scott","slug":"scott-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/scott.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","description":"\n\n\n

Scott is a Newspack child theme. You’ll find the latest version on the Newspack release page.

\n","requires":"","requires_php":"","wporg":false},{"name":"Katharine","slug":"katharine-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/katharine.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","description":"\n\n\n

Katharine is a Newspack child theme. You’ll find the latest version on the Newspack release page.

\n","requires":"","requires_php":"","wporg":false},{"name":"Joseph","slug":"joseph-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/joseph-1.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","description":"\n\n\n

Joseph is a Newspack child theme. You’ll find the latest version on the Newspack release page.

\n","requires":"","requires_php":"","wporg":false},{"name":"Nelson","slug":"nelson-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/nelson.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","description":"\n\n\n

Nelson is a Newspack child theme. You’ll find the latest version on the Newspack release page.

\n","requires":"","requires_php":"","wporg":false},{"name":"Newspack","slug":"newspack","version":"","preview_url":"https://github.com/Automattic/newspack-theme","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2019/11/newspack.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme","description":"\n\n\n

The Newspack theme is a forward-looking news theme designed and developed to be highly customizable with the WordPress block editor.

\n","requires":"","requires_php":"","wporg":false},{"name":"Twenty Twenty","slug":"twentytwenty","version":"1.8","preview_url":"https://wp-themes.com/twentytwenty/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentytwenty/screenshot.png?ver=1.8","rating":88,"num_ratings":60,"homepage":"https://wordpress.org/themes/twentytwenty/","description":"Our default theme for 2020 is designed to take full advantage of the flexibility of the block editor. Organizations and businesses have the ability to create dynamic landing pages with endless layouts using the group and column blocks. The centered content column and fine-tuned typography also makes it perfect for traditional blogs. Complete editor styles give you a good idea of what your content will look like, even before you publish. You can give your site a personal touch by changing the background colors and the accent color in the Customizer. The colors of all elements on your site are automatically calculated based on the colors you pick, ensuring a high, accessible color contrast for your visitors.","requires":"4.7","requires_php":"5.2.4","wporg":true},{"name":"Primer","slug":"primer","version":"1.8.9","preview_url":"https://wp-themes.com/primer/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/primer/screenshot.png?ver=1.8.9","rating":90,"num_ratings":15,"homepage":"https://wordpress.org/themes/primer/","description":"Primer is a powerful theme that brings clarity to your content in a fresh design.","requires":false,"requires_php":false,"wporg":true},{"name":"Essence Pro","slug":"essence-pro-theme","version":"","preview_url":"https://my.studiopress.com/themes/essence/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2019/07/cropped-Essence-Pro.png","rating":0,"num_ratings":0,"homepage":"https://my.studiopress.com/themes/essence/","description":"\n\n\n

Essence Pro is a beautiful, clutter-free theme for sites in the health, wellness, and lifestyle niches.

\n","requires":"","requires_php":"","wporg":false},{"name":"Genesis Framework","slug":"genesis-theme-framework","version":"","preview_url":"https://my.studiopress.com/themes/genesis/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2019/07/cropped-Genesis.png","rating":0,"num_ratings":0,"homepage":"https://my.studiopress.com/themes/genesis/","description":"\n\n\n

The Genesis Framework empowers webmasters to quickly and easily build websites with WordPress.

\n","requires":"","requires_php":"","wporg":false},{"name":"Twenty Fourteen","slug":"twentyfourteen","version":"3.2","preview_url":"https://wp-themes.com/twentyfourteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyfourteen/screenshot.png?ver=3.2","rating":88,"num_ratings":93,"homepage":"https://wordpress.org/themes/twentyfourteen/","description":"In 2014, our default theme lets you create a responsive magazine website with a sleek, modern design. Feature your favorite homepage content in either a grid or a slider. Use the three widget areas to customize your website, and change your content's layout with a full-width page template and a contributor page to show off your authors. Creating a magazine website with WordPress has never been easier.","requires":false,"requires_php":"5.2.4","wporg":true},{"name":"Twenty Thirteen","slug":"twentythirteen","version":"3.4","preview_url":"https://wp-themes.com/twentythirteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentythirteen/screenshot.png?ver=3.4","rating":82,"num_ratings":62,"homepage":"https://wordpress.org/themes/twentythirteen/","description":"The 2013 theme for WordPress takes us back to the blog, featuring a full range of post formats, each displayed beautifully in their own unique way. Design details abound, starting with a vibrant color scheme and matching header images, beautiful typography and icons, and a flexible layout that looks great on any device, big or small.","requires":"3.6","requires_php":"5.2.4","wporg":true},{"name":"Twenty Eleven","slug":"twentyeleven","version":"3.9","preview_url":"https://wp-themes.com/twentyeleven/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyeleven/screenshot.png?ver=3.9","rating":92,"num_ratings":49,"homepage":"https://wordpress.org/themes/twentyeleven/","description":"The 2011 theme for WordPress is sophisticated, lightweight, and adaptable. Make it yours with a custom menu, header image, and background -- then go further with available theme options for light or dark color scheme, custom link colors, and three layout choices. Twenty Eleven comes equipped with a Showcase page template that transforms your front page into a showcase to show off your best content, widget support galore (sidebar, three footer areas, and a Showcase page widget area), and a custom \"Ephemera\" widget to display your Aside, Link, Quote, or Status posts. Included are styles for print and for the admin editor, support for featured images (as custom header images on posts and pages and as large images on featured \"sticky\" posts), and special styles for six different post formats.","requires":false,"requires_php":"5.2.4","wporg":true},{"name":"Twenty Ten","slug":"twentyten","version":"3.5","preview_url":"https://wp-themes.com/twentyten/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyten/screenshot.png?ver=3.5","rating":94,"num_ratings":50,"homepage":"https://wordpress.org/themes/twentyten/","description":"The 2010 theme for WordPress is stylish, customizable, simple, and readable -- make it yours with a custom menu, header image, and background. Twenty Ten supports six widgetized areas (two in the sidebar, four in the footer) and featured images (thumbnails for gallery posts and custom header images for posts and pages). It includes stylesheets for print and the admin Visual Editor, special styles for posts in the \"Asides\" and \"Gallery\" categories, and has an optional one-column page template that removes the sidebar.","requires":"3.0","requires_php":"5.2.4","wporg":true},{"name":"Zakra","slug":"zakra","version":"2.0.3","preview_url":"https://wp-themes.com/zakra/","author":{"user_nicename":"themegrill","profile":"https://profiles.wordpress.org/themegrill","avatar":"https://secure.gravatar.com/avatar/fa3cda768036cc3983458ed23394a43d?s=96&d=monsterid&r=g","display_name":"ThemeGrill","author":"ThemeGrill","author_url":"https://themegrill.com"},"screenshot_url":"//ts.w.org/wp-content/themes/zakra/screenshot.jpg?ver=2.0.3","rating":100,"num_ratings":474,"homepage":"https://wordpress.org/themes/zakra/","description":"Zakra is flexible, fast, lightweight and modern multipurpose theme that comes with many starter free sites (currently 10+ free starter sites and more will be added later) that you can use to make your site beautiful and professional. Check all the starter sites at https://zakratheme.com/demos. Suitable for personal blog, portfolio, WooCommerce stores, business websites and niche-based sites (like Cafe, Spa, Charity, Yoga, Wedding, Dentist, Education etc) as well. Works with Elementor plus other major page builders so you can create any layout you want. The theme is responsive, Gutenberg compatible, SEO friendly, translation ready and major WordPress plugins compatible.","requires":false,"requires_php":"5.6","wporg":true},{"name":"Neve","slug":"neve","version":"3.0.3","preview_url":"https://wp-themes.com/neve/","author":{"user_nicename":"themeisle","profile":"https://profiles.wordpress.org/themeisle","avatar":"https://secure.gravatar.com/avatar/a0ec097eaf5f30933eb00c1175d4bd55?s=96&d=monsterid&r=g","display_name":"Themeisle","author":"ThemeIsle","author_url":"https://themeisle.com"},"screenshot_url":"//ts.w.org/wp-content/themes/neve/screenshot.png?ver=3.0.3","rating":96,"num_ratings":807,"homepage":"https://wordpress.org/themes/neve/","description":"Neve is a super fast, easily customizable, multi-purpose theme. It’s perfect for blogs, small business, startups, agencies, firms, e-commerce shops (WooCommerce storefront) as well as personal portfolio sites and most types of projects. A fully AMP optimized and responsive theme, Neve will load in mere seconds and adapt perfectly on any viewing device. While it is lightweight and has a minimalist design, the theme is highly extendable, it has a highly SEO optimized code, resulting in top rankings in Google search results. Neve works perfectly with Gutenberg and the most popular page builders (Elementor, Brizy, Beaver Builder, Visual Composer, SiteOrigin, Divi). Neve is also WooCommerce ready, responsive, RTL & translation ready. Look no further. Neve is the perfect theme for you!","requires":false,"requires_php":"7.0","wporg":true},{"name":"Astra","slug":"astra","version":"3.6.9","preview_url":"https://wp-themes.com/astra/","author":{"user_nicename":"brainstormforce","profile":"https://profiles.wordpress.org/brainstormforce","avatar":"https://secure.gravatar.com/avatar/9f4255d653745eaa037105cd5eab2295?s=96&d=monsterid&r=g","display_name":"Brainstorm Force","author":"Brainstorm Force","author_url":"https://wpastra.com/about/"},"screenshot_url":"//ts.w.org/wp-content/themes/astra/screenshot.jpg?ver=3.6.9","rating":98,"num_ratings":4982,"homepage":"https://wordpress.org/themes/astra/","description":"Astra is fast, fully customizable & beautiful WordPress theme suitable for blog, personal portfolio, business website and WooCommerce storefront. It is very lightweight (less than 50KB on frontend) and offers unparalleled speed. Built with SEO in mind, Astra comes with Schema.org code integrated and is Native AMP ready so search engines will love your site. It offers special features and templates so it works perfectly with all page builders like Elementor, Beaver Builder, Visual Composer, SiteOrigin, Divi, etc. Some of the other features: # WooCommerce Ready # Responsive # RTL & Translation Ready # Extendible with premium addons # Regularly updated # Designed, Developed, Maintained & Supported by Brainstorm Force. Looking for a perfect base theme? Look no further. Astra is fast, fully customizable and WooCommerce ready theme that you can use for building any kind of website!","requires":"5.3","requires_php":"5.3","wporg":true},{"name":"Twenty Twelve","slug":"twentytwelve","version":"3.5","preview_url":"https://wp-themes.com/twentytwelve/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentytwelve/screenshot.png?ver=3.5","rating":92,"num_ratings":155,"homepage":"https://wordpress.org/themes/twentytwelve/","description":"The 2012 theme for WordPress is a fully responsive theme that looks great on any device. Features include a front page template with its own widgets, an optional display font, styling for post formats on both index and single views, and an optional no-sidebar page template. Make it yours with a custom menu, header image, and background.","requires":"3.5","requires_php":"5.2.4","wporg":true},{"name":"Twenty Nineteen","slug":"twentynineteen","version":"2.1","preview_url":"https://wp-themes.com/twentynineteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentynineteen/screenshot.png?ver=2.1","rating":74,"num_ratings":59,"homepage":"https://wordpress.org/themes/twentynineteen/","description":"Our 2019 default theme is designed to show off the power of the block editor. It features custom styles for all the default blocks, and is built so that what you see in the editor looks like what you'll see on your website. Twenty Nineteen is designed to be adaptable to a wide range of websites, whether you’re running a photo blog, launching a new business, or supporting a non-profit. Featuring ample whitespace and modern sans-serif headlines paired with classic serif body text, it's built to be beautiful on all screen sizes.","requires":"4.9.6","requires_php":"5.2.4","wporg":true},{"name":"Twenty Seventeen","slug":"twentyseventeen","version":"2.8","preview_url":"https://wp-themes.com/twentyseventeen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyseventeen/screenshot.png?ver=2.8","rating":88,"num_ratings":114,"homepage":"https://wordpress.org/themes/twentyseventeen/","description":"Twenty Seventeen brings your site to life with header video and immersive featured images. With a focus on business sites, it features multiple sections on the front page as well as widgets, navigation and social menus, a logo, and more. Personalize its asymmetrical grid with a custom color scheme and showcase your multimedia content with post formats. Our default theme for 2017 works great in many languages, for any abilities, and on any device.","requires":"4.7","requires_php":"5.2.4","wporg":true},{"name":"Twenty Sixteen","slug":"twentysixteen","version":"2.5","preview_url":"https://wp-themes.com/twentysixteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentysixteen/screenshot.png?ver=2.5","rating":82,"num_ratings":79,"homepage":"https://wordpress.org/themes/twentysixteen/","description":"Twenty Sixteen is a modernized take on an ever-popular WordPress layout — the horizontal masthead with an optional right sidebar that works perfectly for blogs and websites. It has custom color options with beautiful default color schemes, a harmonious fluid grid using a mobile-first approach, and impeccable polish in every detail. Twenty Sixteen will make your WordPress look beautiful everywhere.","requires":"4.4","requires_php":"5.2.4","wporg":true},{"name":"Twenty Fifteen","slug":"twentyfifteen","version":"3.0","preview_url":"https://wp-themes.com/twentyfifteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyfifteen/screenshot.png?ver=3.0","rating":88,"num_ratings":50,"homepage":"https://wordpress.org/themes/twentyfifteen/","description":"Our 2015 default theme is clean, blog-focused, and designed for clarity. Twenty Fifteen's simple, straightforward typography is readable on a wide variety of screen sizes, and suitable for multiple languages. We designed it using a mobile-first approach, meaning your content takes center-stage, regardless of whether your visitors arrive by smartphone, tablet, laptop, or desktop computer.","requires":false,"requires_php":"5.2.4","wporg":true}] \ No newline at end of file diff --git a/src/Admin/PluginInstallTab.php b/src/Admin/PluginInstallTab.php index a818f6f0632..afef1fab852 100644 --- a/src/Admin/PluginInstallTab.php +++ b/src/Admin/PluginInstallTab.php @@ -95,9 +95,9 @@ public function register() { public function enqueue_scripts() { wp_enqueue_style( - 'amp-admin-plugin-install', - amp_get_asset_url( 'css/admin-plugin-install.css' ), - [ 'amp-icons' ], + 'amp-admin', + amp_get_asset_url( 'css/amp-admin.css' ), + [], AMP__VERSION ); @@ -604,7 +604,7 @@ class="thickbox open-plugin-details-modal"> ?> -
+
  themes as $theme ) { + if ( true !== $theme['wporg'] ) { + $none_wporg[] = $theme['slug']; + } + } + + $js_data = [ + 'AMP_THEMES' => wp_list_pluck( $this->themes, 'slug' ), + 'NONE_WPORG_THEMES' => $none_wporg, + ]; + + wp_add_inline_script( + self::ASSET_HANDLE, + sprintf( + 'var ampThemes = %s;', + wp_json_encode( $js_data ) + ), + 'before' + ); } /** diff --git a/webpack.config.js b/webpack.config.js index 0cda66bdcbb..6946bff29aa 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -127,6 +127,9 @@ const classicEditor = { const admin = { ...sharedConfig, + externals: { + 'amp-themes': 'ampThemes', + }, entry: { 'amp-validation-tooltips': './assets/src/admin/amp-validation-tooltips.js', 'amp-paired-browsing-app': './assets/src/admin/paired-browsing/app.js', From dac16407d182cb3f832d12e4e28642d688405fc0 Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Tue, 7 Sep 2021 19:12:26 +0530 Subject: [PATCH 012/105] Add tooltip in AMP compatible message in install plugin/theme page --- assets/css/src/amp-admin.css | 31 ++++++++++++++++++++ assets/src/admin/theme-install/view/theme.js | 7 +++++ src/Admin/PluginInstallTab.php | 5 ++++ 3 files changed, 43 insertions(+) diff --git a/assets/css/src/amp-admin.css b/assets/css/src/amp-admin.css index f83e9145091..7e17c7dd20b 100644 --- a/assets/css/src/amp-admin.css +++ b/assets/css/src/amp-admin.css @@ -5,6 +5,8 @@ background-color: #e7e7e7; border-top: 2px solid #dcdcde; color: #3c434a; + position: relative; + } .amp-logo-icon { @@ -22,3 +24,32 @@ display: inline-block; vertical-align: top; } + +.extension-card-px-message .tooltiptext { + visibility: hidden; + width: 60%; + background-color: rgba(0, 0, 0, 0.8); + color: #fff; + text-align: center; + border-radius: 6px; + padding: 5px; + position: absolute; + z-index: 1; + bottom: 100%; + left: 20%; +} + +.tooltiptext::after { + content: ""; + position: absolute; + top: 100%; + left: 50%; + margin-left: -7px; + border-width: 7px; + border-style: solid; + border-color: rgba(0, 0, 0, 0.8) transparent transparent transparent; +} + +.extension-card-px-message:hover .tooltiptext { + visibility: visible; +} diff --git a/assets/src/admin/theme-install/view/theme.js b/assets/src/admin/theme-install/view/theme.js index 853eb4e8c31..99677555d3a 100644 --- a/assets/src/admin/theme-install/view/theme.js +++ b/assets/src/admin/theme-install/view/theme.js @@ -26,11 +26,18 @@ export default wpThemeView.extend( { if ( this.isAMPTheme( data.slug ) ) { const messageElement = document.createElement( 'div' ); const iconElement = document.createElement( 'span' ); + const tooltipElement = document.createElement( 'span' ); messageElement.classList.add( 'extension-card-px-message' ); iconElement.classList.add( 'amp-logo-icon' ); + tooltipElement.classList.add( 'tooltiptext' ); + + tooltipElement.append( + __( 'This theme follow best practice and is known to work well with AMP plugin.', 'amp' ), + ); messageElement.append( iconElement ); + messageElement.append( tooltipElement ); messageElement.append( ' ' ); messageElement.append( __( 'Page Experience Enhancing', 'amp' ) ); diff --git a/src/Admin/PluginInstallTab.php b/src/Admin/PluginInstallTab.php index afef1fab852..d9e35ca5b5f 100644 --- a/src/Admin/PluginInstallTab.php +++ b/src/Admin/PluginInstallTab.php @@ -606,6 +606,11 @@ class="thickbox open-plugin-details-modal">
  + + + From efd02530e89a4eb9f779cf00d4b98228ab6a3538 Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Tue, 7 Sep 2021 20:45:35 +0530 Subject: [PATCH 013/105] Add AMP compatiable message in plugin card on install plugin page --- .eslintrc | 2 +- assets/src/admin/amp-plugin-install.js | 59 +++ src/Admin/PluginInstallTab.php | 495 +++---------------------- webpack.config.js | 2 + 4 files changed, 112 insertions(+), 446 deletions(-) create mode 100644 assets/src/admin/amp-plugin-install.js diff --git a/.eslintrc b/.eslintrc index ce58cef132b..2b5334a4664 100644 --- a/.eslintrc +++ b/.eslintrc @@ -60,7 +60,7 @@ "react/no-unused-prop-types": "error", "react/self-closing-comp": "error", "import/no-unresolved": [ "error", { - "ignore": [ "jquery", "amp-block-editor-data", "amp-settings", "amp-themes", "amp-support", "amp-block-validation" ] + "ignore": [ "jquery", "amp-block-editor-data", "amp-settings", "amp-themes", "amp-plugins", "amp-support", "amp-block-validation" ] } ], "import/order": [ "error", { "groups": [ "builtin", [ "external", "unknown" ], "internal", "parent", "sibling", "index" ] } ], "jsdoc/check-indentation": "error", diff --git a/assets/src/admin/amp-plugin-install.js b/assets/src/admin/amp-plugin-install.js new file mode 100644 index 00000000000..4b3615ac19b --- /dev/null +++ b/assets/src/admin/amp-plugin-install.js @@ -0,0 +1,59 @@ +/** + * WordPress dependencies + */ +import domReady from '@wordpress/dom-ready'; +import { __ } from '@wordpress/i18n'; + +/** + * External dependencies + */ +import { AMP_PLUGINS } from 'amp-plugins'; // From WP inline script. +import jQuery from 'jquery'; + +const ampPluginInstall = { + + /** + * Init function. + */ + init() { + this.addAmpMessage(); + }, + + /** + * Add AMP compatible message in AMP compatible plugin card. + */ + addAmpMessage() { + // eslint-disable-next-line guard-for-in + for ( const index in AMP_PLUGINS ) { + const pluginSlug = AMP_PLUGINS[ index ]; + const pluginCardElement = document.querySelector( `.plugin-card.plugin-card-${ pluginSlug }` ); + + if ( ! pluginCardElement ) { + continue; + } + + const messageElement = document.createElement( 'div' ); + const iconElement = document.createElement( 'span' ); + const tooltipElement = document.createElement( 'span' ); + + messageElement.classList.add( 'extension-card-px-message' ); + iconElement.classList.add( 'amp-logo-icon' ); + tooltipElement.classList.add( 'tooltiptext' ); + + tooltipElement.append( + __( 'This theme follow best practice and is known to work well with AMP plugin.', 'amp' ), + ); + + messageElement.append( iconElement ); + messageElement.append( tooltipElement ); + messageElement.append( ' ' ); + messageElement.append( __( 'Page Experience Enhancing', 'amp' ) ); + + jQuery( pluginCardElement ).append( messageElement ); + } + }, +}; + +domReady( () => { + ampPluginInstall.init(); +} ); diff --git a/src/Admin/PluginInstallTab.php b/src/Admin/PluginInstallTab.php index d9e35ca5b5f..21c9ebacea6 100644 --- a/src/Admin/PluginInstallTab.php +++ b/src/Admin/PluginInstallTab.php @@ -22,6 +22,13 @@ */ class PluginInstallTab implements Conditional, Delayed, Service, Registerable { + /** + * Assets handle. + * + * @var string + */ + const ASSET_HANDLE = 'amp-plugin-install'; + /** * @var array List AMP plugins. */ @@ -83,7 +90,7 @@ public function register() { add_filter( 'plugins_api', [ $this, 'plugins_api' ], 10, 3 ); add_filter( 'plugin_install_action_links', [ $this, 'action_links' ], 10, 2 ); - add_action( 'install_plugins_px_enhancing', [ $this, 'install_plugin_amp' ] ); + add_action( 'install_plugins_px_enhancing', 'display_plugins_table' ); add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_scripts' ] ); } @@ -94,6 +101,19 @@ public function register() { */ public function enqueue_scripts() { + $asset_file = AMP__DIR__ . '/assets/js/' . self::ASSET_HANDLE . '.asset.php'; + $asset = require $asset_file; + $dependencies = $asset['dependencies']; + $version = $asset['version']; + + wp_enqueue_script( + self::ASSET_HANDLE, + amp_get_asset_url( 'js/' . self::ASSET_HANDLE . '.js' ), + $dependencies, + $version, + true + ); + wp_enqueue_style( 'amp-admin', amp_get_asset_url( 'css/amp-admin.css' ), @@ -101,6 +121,18 @@ public function enqueue_scripts() { AMP__VERSION ); + $js_data = [ + 'AMP_PLUGINS' => wp_list_pluck( $this->plugins, 'slug' ), + ]; + + wp_add_inline_script( + self::ASSET_HANDLE, + sprintf( + 'var ampPlugins = %s;', + wp_json_encode( $js_data ) + ), + 'before' + ); } /** @@ -127,9 +159,16 @@ public function add_tab( $tabs ) { */ public function tab_args() { + $per_page = 36; + $total_page = ceil( count( $this->plugins ) / $per_page ); + $pagenum = isset( $_REQUEST['paged'] ) ? absint( $_REQUEST['paged'] ) : 1; // phpcs:ignore WordPress.Security.NonceVerification.Recommended + $pagenum = ( $pagenum > $total_page ) ? $total_page : $pagenum; + $page = max( 1, $pagenum ); + return [ 'px_enhancing' => true, - 'per_page' => count( $this->plugins ), + 'per_page' => $per_page, + 'page' => $page, ]; } @@ -149,12 +188,17 @@ public function plugins_api( $response, $action, $args ) { return $response; } + $total_page = ceil( count( $this->plugins ) / $args['per_page'] ); + $page = ( ! empty( $args['page'] ) && 0 < (int) $args['page'] ) ? (int) $args['page'] : 1; + $plugin_chunks = array_chunk( (array) $this->plugins, $args['per_page'] ); + $plugins = ( ! empty( $plugin_chunks[ $page - 1 ] ) && is_array( $plugin_chunks[ $page - 1 ] ) ) ? $plugin_chunks[ $page - 1 ] : []; + $response = new stdClass(); - $response->plugins = $this->plugins; + $response->plugins = $plugins; $response->info = [ - 'page' => 1, - 'pages' => 1, - 'results' => count( $response->plugins ), + 'page' => $page, + 'pages' => $total_page, + 'results' => count( $this->plugins ), ]; return $response; @@ -185,443 +229,4 @@ public function action_links( $actions, $plugin ) { return $actions; } - - /** - * Content for AMP tab in plugin install screen. - * - * @return void - */ - public function install_plugin_amp() { - - ?> -
- display(); ?> -
- display_tablenav( 'top' ); - - ?> -
- screen->render_screen_reader_content( 'heading_list' ); ?> -
- display_rows_or_placeholder(); ?> -
-
- display_tablenav( 'bottom' ); - } - - /** - * Generates the tbody element for the list table. - * - * @reference \WP_Plugin_Install_List_Table::display_rows_or_placeholder() - * - * @return void - */ - public function display_rows_or_placeholder() { - - global $wp_list_table; - - if ( $wp_list_table->has_items() ) { - $this->display_rows(); - } else { - echo ''; - $wp_list_table->no_items(); - echo ''; - } - } - - /** - * Generate rows for plugins for install plugin screen. - * overwrite \WP_Plugin_Install_List_Table::display_rows() - * - * @reference \WP_Plugin_Install_List_Table::display_rows() - * - * @return void - */ - public function display_rows() { - - global $wp_list_table; - $plugins_allowedtags = [ - 'a' => [ - 'href' => [], - 'title' => [], - 'target' => [], - ], - 'abbr' => [ 'title' => [] ], - 'acronym' => [ 'title' => [] ], - 'code' => [], - 'pre' => [], - 'em' => [], - 'strong' => [], - 'ul' => [], - 'ol' => [], - 'li' => [], - 'p' => [], - 'br' => [], - ]; - - $plugins_group_titles = [ - 'Performance' => _x( 'Performance', 'Plugin installer group title', 'amp' ), - 'Social' => _x( 'Social', 'Plugin installer group title', 'amp' ), - 'Tools' => _x( 'Tools', 'Plugin installer group title', 'amp' ), - ]; - - $group = null; - - foreach ( (array) $wp_list_table->items as $plugin ) { - if ( is_object( $plugin ) ) { - $plugin = (array) $plugin; - } - - // Display the group heading if there is one. - if ( isset( $plugin['group'] ) && $plugin['group'] !== $group ) { - if ( isset( $wp_list_table->groups[ $plugin['group'] ] ) ) { - $group_name = $wp_list_table->groups[ $plugin['group'] ]; - if ( isset( $plugins_group_titles[ $group_name ] ) ) { - $group_name = $plugins_group_titles[ $group_name ]; - } - } else { - $group_name = $plugin['group']; - } - - // Starting a new group, close off the divs of the last one. - if ( ! empty( $group ) ) { - echo '
'; - } - - echo '

' . esc_html( $group_name ) . '

'; - // Needs an extra wrapping div for nth-child selectors to work. - echo '
'; - - $group = $plugin['group']; - } - - $title = wp_kses( $plugin['name'], $plugins_allowedtags ); - - // Remove any HTML from the description. - $description = wp_strip_all_tags( $plugin['short_description'] ); - $version = wp_kses( $plugin['version'], $plugins_allowedtags ); - - $name = strip_tags( $title . ' ' . $version ); // phpcs:ignore WordPressVIPMinimum.Functions.StripTags.StripTagsOneParameter - - $author = wp_kses( $plugin['author'], $plugins_allowedtags ); - if ( ! empty( $author ) ) { - /* translators: %s: Plugin author. */ - $author = ' ' . sprintf( __( 'By %s', 'amp' ), $author ) . ''; - } - - $requires_php = isset( $plugin['requires_php'] ) ? $plugin['requires_php'] : null; - $requires_wp = isset( $plugin['requires'] ) ? $plugin['requires'] : null; - - $compatible_php = is_php_version_compatible( $requires_php ); - $compatible_wp = is_wp_version_compatible( $requires_wp ); - $tested_wp = ( empty( $plugin['tested'] ) || version_compare( get_bloginfo( 'version' ), $plugin['tested'], '<=' ) ); - - $action_links = []; - - if ( current_user_can( 'install_plugins' ) || current_user_can( 'update_plugins' ) ) { - $status = install_plugin_install_status( $plugin ); - - switch ( $status['status'] ) { - case 'install': - if ( $status['url'] ) { - if ( $compatible_php && $compatible_wp ) { - $action_links[] = sprintf( - '%s', - esc_attr( $plugin['slug'] ), - esc_url( $status['url'] ), - /* translators: %s: Plugin name and version. */ - esc_attr( sprintf( _x( 'Install %s now', 'plugin', 'amp' ), $name ) ), - esc_attr( $name ), - __( 'Install Now', 'amp' ) - ); - } else { - $action_links[] = sprintf( - '', - _x( 'Cannot Install', 'plugin', 'amp' ) - ); - } - } - break; - - case 'update_available': - if ( $status['url'] ) { - if ( $compatible_php && $compatible_wp ) { - $action_links[] = sprintf( - '%s', - esc_attr( $status['file'] ), - esc_attr( $plugin['slug'] ), - esc_url( $status['url'] ), - /* translators: %s: Plugin name and version. */ - esc_attr( sprintf( _x( 'Update %s now', 'plugin', 'amp' ), $name ) ), - esc_attr( $name ), - __( 'Update Now', 'amp' ) - ); - } else { - $action_links[] = sprintf( - '', - _x( 'Cannot Update', 'plugin', 'amp' ) - ); - } - } - break; - - case 'latest_installed': - case 'newer_installed': - if ( is_plugin_active( $status['file'] ) ) { - $action_links[] = sprintf( - '', - _x( 'Active', 'plugin', 'amp' ) - ); - } elseif ( current_user_can( 'activate_plugin', $status['file'] ) ) { - $button_text = __( 'Activate', 'amp' ); - /* translators: %s: Plugin name. */ - $button_label = _x( 'Activate %s', 'plugin', 'amp' ); - $activate_url = add_query_arg( - [ - '_wpnonce' => wp_create_nonce( 'activate-plugin_' . $status['file'] ), - 'action' => 'activate', - 'plugin' => $status['file'], - ], - network_admin_url( 'plugins.php' ) - ); - - if ( is_network_admin() ) { - $button_text = __( 'Network Activate', 'amp' ); - /* translators: %s: Plugin name. */ - $button_label = _x( 'Network Activate %s', 'plugin', 'amp' ); - $activate_url = add_query_arg( [ 'networkwide' => 1 ], $activate_url ); - } - - $action_links[] = sprintf( - '%3$s', - esc_url( $activate_url ), - esc_attr( sprintf( $button_label, $plugin['name'] ) ), - $button_text - ); - } else { - $action_links[] = sprintf( - '', - _x( 'Installed', 'plugin', 'amp' ) - ); - } - break; - } - } - - $details_link = self_admin_url( - 'plugin-install.php?tab=plugin-information&plugin=' . $plugin['slug'] . - '&TB_iframe=true&width=600&height=550' - ); - - $action_links[] = sprintf( - '%s', - esc_url( $details_link ), - /* translators: %s: Plugin name and version. */ - esc_attr( sprintf( __( 'More information about %s', 'amp' ), $name ) ), - esc_attr( $name ), - __( 'More Details', 'amp' ) - ); - - if ( ! empty( $plugin['icons']['svg'] ) ) { - $plugin_icon_url = $plugin['icons']['svg']; - } elseif ( ! empty( $plugin['icons']['2x'] ) ) { - $plugin_icon_url = $plugin['icons']['2x']; - } elseif ( ! empty( $plugin['icons']['1x'] ) ) { - $plugin_icon_url = $plugin['icons']['1x']; - } else { - $plugin_icon_url = $plugin['icons']['default']; - } - - /** - * Filters the install action links for a plugin. - * - * @param string[] $action_links An array of plugin action links. Defaults are links to Details and Install Now. - * @param array $plugin The plugin currently being listed. - */ - $action_links = apply_filters( 'plugin_install_action_links', $action_links, $plugin ); - - $last_updated_timestamp = strtotime( $plugin['last_updated'] ); - ?> -
-

'; - if ( ! $compatible_php && ! $compatible_wp ) { - esc_html_e( 'This plugin doesn’t work with your versions of WordPress and PHP.', 'amp' ); - if ( current_user_can( 'update_core' ) && current_user_can( 'update_php' ) ) { - echo wp_kses_post( - sprintf( - /* translators: 1: URL to WordPress Updates screen, 2: URL to Update PHP page. */ - ' ' . __( 'Please update WordPress, and then learn more about updating PHP.', 'amp' ), - self_admin_url( 'update-core.php' ), - esc_url( wp_get_update_php_url() ) - ) - ); - wp_update_php_annotation( '

', '' ); - } elseif ( current_user_can( 'update_core' ) ) { - echo wp_kses_post( - sprintf( - /* translators: %s: URL to WordPress Updates screen. */ - ' ' . __( 'Please update WordPress.', 'amp' ), - self_admin_url( 'update-core.php' ) - ) - ); - } elseif ( current_user_can( 'update_php' ) ) { - echo wp_kses_post( - sprintf( - /* translators: %s: URL to Update PHP page. */ - ' ' . __( 'Learn more about updating PHP.', 'amp' ), - esc_url( wp_get_update_php_url() ) - ) - ); - wp_update_php_annotation( '

', '' ); - } - } elseif ( ! $compatible_wp ) { - _e( 'This plugin doesn’t work with your version of WordPress.', 'amp' ); - if ( current_user_can( 'update_core' ) ) { - echo wp_kses_post( - sprintf( - /* translators: %s: URL to WordPress Updates screen. */ - ' ' . __( 'Please update WordPress.', 'amp' ), - self_admin_url( 'update-core.php' ) - ) - ); - } - } elseif ( ! $compatible_php ) { - _e( 'This plugin doesn’t work with your version of PHP.', 'amp' ); - if ( current_user_can( 'update_php' ) ) { - echo wp_kses_post( - sprintf( - /* translators: %s: URL to Update PHP page. */ - ' ' . __( 'Learn more about updating PHP.', 'amp' ), - esc_url( wp_get_update_php_url() ) - ) - ); - wp_update_php_annotation( '

', '' ); - } - } - echo '

'; - } - ?> -
-
-

- - - - -

-
- -
-

-

-
-
-
-
- $plugin['rating'], - 'type' => 'percent', - 'number' => $plugin['num_ratings'], - ] - ); - ?> - -
-
- - -
-
- = 1000000 ) { - $active_installs_millions = floor( $plugin['active_installs'] / 1000000 ); - $active_installs_text = sprintf( - /* translators: %s: Number of millions. */ - _nx( '%s+ Million', '%s+ Million', $active_installs_millions, 'Active plugin installations', 'amp' ), - number_format_i18n( $active_installs_millions ) - ); - } elseif ( 0 === $plugin['active_installs'] ) { - $active_installs_text = _x( 'Less Than 10', 'Active plugin installations', 'amp' ); - } else { - $active_installs_text = number_format_i18n( $plugin['active_installs'] ) . '+'; - } - - echo esc_html( - /* translators: %s: Number of installations. */ - sprintf( __( '%s Active Installations', 'amp' ), $active_installs_text ) - ); - ?> -
-
- ' . __( 'Untested with your version of WordPress', 'amp' ) . '' - ); - } elseif ( ! $compatible_wp ) { - echo wp_kses_post( - '' . __( 'Incompatible with your version of WordPress', 'amp' ) . '' - ); - } else { - echo wp_kses_post( - '' . __( 'Compatible with your version of WordPress', 'amp' ) . '' - ); - } - ?> -
-
-
-   - - - - -
-
-
'; - } - } } diff --git a/webpack.config.js b/webpack.config.js index 6946bff29aa..a64bed49de9 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -129,12 +129,14 @@ const admin = { ...sharedConfig, externals: { 'amp-themes': 'ampThemes', + 'amp-plugins': 'ampPlugins', }, entry: { 'amp-validation-tooltips': './assets/src/admin/amp-validation-tooltips.js', 'amp-paired-browsing-app': './assets/src/admin/paired-browsing/app.js', 'amp-paired-browsing-client': './assets/src/admin/paired-browsing/client.js', 'amp-theme-install': './assets/src/admin/amp-theme-install.js', + 'amp-plugin-install': './assets/src/admin/amp-plugin-install.js', }, plugins: [ ...sharedConfig.plugins, From 31f36ff47378b9b6f3404bada3949903d4c23d93 Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Wed, 8 Sep 2021 13:16:54 +0530 Subject: [PATCH 014/105] Add plugin meta for AMP compatibility in plugin listing page --- assets/css/src/amp-admin.css | 8 ++++++- src/Admin/PluginInstallTab.php | 40 ++++++++++++++++++++++++---------- 2 files changed, 35 insertions(+), 13 deletions(-) diff --git a/assets/css/src/amp-admin.css b/assets/css/src/amp-admin.css index 7e17c7dd20b..eb51f6ca8fe 100644 --- a/assets/css/src/amp-admin.css +++ b/assets/css/src/amp-admin.css @@ -16,7 +16,13 @@ height: 20px; width: 20px; display: inline-block; - vertical-align: bottom; + vertical-align: middle; +} + +.amp-logo-icon.small { + background-size: 15px 15px; + height: 15px; + width: 15px; } .theme-browser .theme { diff --git a/src/Admin/PluginInstallTab.php b/src/Admin/PluginInstallTab.php index 21c9ebacea6..b9a25f9fa94 100644 --- a/src/Admin/PluginInstallTab.php +++ b/src/Admin/PluginInstallTab.php @@ -51,17 +51,7 @@ public static function get_registration_action() { */ public static function is_needed() { - if ( wp_doing_ajax() || ! is_admin() ) { - return false; - } - - $screen = get_current_screen(); - - if ( ! $screen instanceof \WP_Screen || 'plugin-install' !== $screen->id ) { - return false; - } - - return true; + return ( ! wp_doing_ajax() && is_admin() ); } /** @@ -84,14 +74,19 @@ protected function set_plugins() { public function register() { $this->set_plugins(); + $screen = get_current_screen(); + + if ( $screen instanceof \WP_Screen && in_array( $screen->id, [ 'plugins', 'plugin-install' ], true ) ) { + add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_scripts' ] ); + } add_filter( 'install_plugins_tabs', [ $this, 'add_tab' ] ); add_filter( 'install_plugins_table_api_args_px_enhancing', [ $this, 'tab_args' ] ); add_filter( 'plugins_api', [ $this, 'plugins_api' ], 10, 3 ); add_filter( 'plugin_install_action_links', [ $this, 'action_links' ], 10, 2 ); + add_filter( 'plugin_row_meta', [ $this, 'plugin_row_meta' ], 10, 3 ); add_action( 'install_plugins_px_enhancing', 'display_plugins_table' ); - add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_scripts' ] ); } /** @@ -229,4 +224,25 @@ public function action_links( $actions, $plugin ) { return $actions; } + + /** + * Add plugin metadata for AMP compatibility in plugin listing page. + * + * @param string[] $plugin_meta An array of the plugin's metadata, including + * the version, author, author URI, and plugin URI. + * @param string $plugin_file Path to the plugin file relative to the plugins directory. + * @param array $plugin_data An array of plugin data. + * + * @return string[] An array of the plugin's metadata + */ + public function plugin_row_meta( $plugin_meta, $plugin_file, $plugin_data ) { + + $amp_plugins = wp_list_pluck( $this->plugins, 'slug' ); + + if ( ! empty( $plugin_data['slug'] ) && in_array( $plugin_data['slug'], $amp_plugins, true ) ) { + $plugin_meta[] = ' Page Experience Enhancing'; + } + + return $plugin_meta; + } } From e235fe20ed1fa9c3e3482b2e2e90446ca69577f0 Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Wed, 8 Sep 2021 13:39:12 +0530 Subject: [PATCH 015/105] Add AMP compatiable message for compatiable themes in installed theme list --- assets/src/admin/amp-theme-install.js | 7 ++++++- assets/src/admin/theme-install/view/theme.js | 9 +++++++-- src/Admin/ThemeInstallTab.php | 2 +- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/assets/src/admin/amp-theme-install.js b/assets/src/admin/amp-theme-install.js index 4dd2d4e0fcf..a77437b4a7f 100644 --- a/assets/src/admin/amp-theme-install.js +++ b/assets/src/admin/amp-theme-install.js @@ -23,6 +23,11 @@ const ampThemeInstall = { * Add new tab for PX Enhanced theme in theme install page. */ addTab() { + const filterLinks = document.querySelector( '.filter-links' ); + if ( ! filterLinks ) { + return; + } + const listItem = document.createElement( 'li' ); const anchorElement = document.createElement( 'a' ); const spanElement = document.createElement( 'span' ); @@ -36,7 +41,7 @@ const ampThemeInstall = { listItem.appendChild( anchorElement ); - document.querySelector( '.filter-links' ).prepend( listItem ); + filterLinks.prepend( listItem ); }, /** diff --git a/assets/src/admin/theme-install/view/theme.js b/assets/src/admin/theme-install/view/theme.js index 99677555d3a..11107a270b2 100644 --- a/assets/src/admin/theme-install/view/theme.js +++ b/assets/src/admin/theme-install/view/theme.js @@ -22,8 +22,13 @@ export default wpThemeView.extend( { wpThemeView.prototype.render.apply( this, args ); const data = this.model.toJSON(); + let slug = data?.slug; - if ( this.isAMPTheme( data.slug ) ) { + if ( ! slug ) { + slug = data?.id; + } + + if ( slug && this.isAMPTheme( slug ) ) { const messageElement = document.createElement( 'div' ); const iconElement = document.createElement( 'span' ); const tooltipElement = document.createElement( 'span' ); @@ -44,7 +49,7 @@ export default wpThemeView.extend( { this.$el.append( messageElement ); } - if ( ! this.isWPORGTheme( data.slug ) ) { + if ( slug && ! this.isWPORGTheme( slug ) ) { const siteLinkButton = document.createElement( 'a' ); siteLinkButton.classList.add( 'button' ); siteLinkButton.classList.add( 'button-primary' ); diff --git a/src/Admin/ThemeInstallTab.php b/src/Admin/ThemeInstallTab.php index 1b06c70cb4e..b3a0214544f 100644 --- a/src/Admin/ThemeInstallTab.php +++ b/src/Admin/ThemeInstallTab.php @@ -67,7 +67,7 @@ public function register_hooks() { $screen = get_current_screen(); - if ( $screen instanceof \WP_Screen && 'theme-install' === $screen->id ) { + if ( $screen instanceof \WP_Screen && in_array( $screen->id, [ 'themes', 'theme-install' ], true ) ) { add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_scripts' ] ); } } From 89514c7c6f86c3752df950a479bf4c6cdeecb2b8 Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Wed, 8 Sep 2021 13:50:28 +0530 Subject: [PATCH 016/105] Remove rating info for none wporg plugins --- assets/src/admin/amp-plugin-install.js | 17 ++++++++++++++++- src/Admin/PluginInstallTab.php | 11 ++++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/assets/src/admin/amp-plugin-install.js b/assets/src/admin/amp-plugin-install.js index 4b3615ac19b..e6bd51b6d85 100644 --- a/assets/src/admin/amp-plugin-install.js +++ b/assets/src/admin/amp-plugin-install.js @@ -7,7 +7,7 @@ import { __ } from '@wordpress/i18n'; /** * External dependencies */ -import { AMP_PLUGINS } from 'amp-plugins'; // From WP inline script. +import { AMP_PLUGINS, NONE_WPORG_PLUGINS } from 'amp-plugins'; // From WP inline script. import jQuery from 'jquery'; const ampPluginInstall = { @@ -17,6 +17,7 @@ const ampPluginInstall = { */ init() { this.addAmpMessage(); + this.removeAdditionalInfo(); }, /** @@ -52,6 +53,20 @@ const ampPluginInstall = { jQuery( pluginCardElement ).append( messageElement ); } }, + + removeAdditionalInfo() { + // eslint-disable-next-line guard-for-in + for ( const index in NONE_WPORG_PLUGINS ) { + const pluginSlug = NONE_WPORG_PLUGINS[ index ]; + const pluginCardElement = document.querySelector( `.plugin-card.plugin-card-${ pluginSlug }` ); + + if ( ! pluginCardElement ) { + continue; + } + + jQuery( '.plugin-card-bottom', pluginCardElement ).remove(); + } + }, }; domReady( () => { diff --git a/src/Admin/PluginInstallTab.php b/src/Admin/PluginInstallTab.php index b9a25f9fa94..d6c554259bf 100644 --- a/src/Admin/PluginInstallTab.php +++ b/src/Admin/PluginInstallTab.php @@ -116,8 +116,17 @@ public function enqueue_scripts() { AMP__VERSION ); + $none_wporg = []; + + foreach ( $this->plugins as $plugin ) { + if ( true !== $plugin['wporg'] ) { + $none_wporg[] = $plugin['slug']; + } + } + $js_data = [ - 'AMP_PLUGINS' => wp_list_pluck( $this->plugins, 'slug' ), + 'AMP_PLUGINS' => wp_list_pluck( $this->plugins, 'slug' ), + 'NONE_WPORG_PLUGINS' => $none_wporg, ]; wp_add_inline_script( From b0886892a3e174296e9cbb880045b93f5cda8db6 Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Wed, 8 Sep 2021 14:56:04 +0530 Subject: [PATCH 017/105] Rename the class names --- src/Admin/{PluginInstallTab.php => AMPPlugins.php} | 2 +- src/Admin/{ThemeInstallTab.php => AMPThemes.php} | 2 +- src/AmpWpPlugin.php | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) rename src/Admin/{PluginInstallTab.php => AMPPlugins.php} (98%) rename src/Admin/{ThemeInstallTab.php => AMPThemes.php} (98%) diff --git a/src/Admin/PluginInstallTab.php b/src/Admin/AMPPlugins.php similarity index 98% rename from src/Admin/PluginInstallTab.php rename to src/Admin/AMPPlugins.php index d6c554259bf..1b938d5c0aa 100644 --- a/src/Admin/PluginInstallTab.php +++ b/src/Admin/AMPPlugins.php @@ -20,7 +20,7 @@ * @since 2.2 * @internal */ -class PluginInstallTab implements Conditional, Delayed, Service, Registerable { +class AMPPlugins implements Conditional, Delayed, Service, Registerable { /** * Assets handle. diff --git a/src/Admin/ThemeInstallTab.php b/src/Admin/AMPThemes.php similarity index 98% rename from src/Admin/ThemeInstallTab.php rename to src/Admin/AMPThemes.php index b3a0214544f..b689593f288 100644 --- a/src/Admin/ThemeInstallTab.php +++ b/src/Admin/AMPThemes.php @@ -16,7 +16,7 @@ * @since 2.2 * @internal */ -class ThemeInstallTab implements Service, Registerable { +class AMPThemes implements Service, Registerable { /** * Assets handle. diff --git a/src/AmpWpPlugin.php b/src/AmpWpPlugin.php index 3b8a215fb52..1ee0b61d16c 100644 --- a/src/AmpWpPlugin.php +++ b/src/AmpWpPlugin.php @@ -81,8 +81,8 @@ final class AmpWpPlugin extends ServiceBasedPlugin { 'admin.polyfills' => Admin\Polyfills::class, 'admin.user_rest_endpoint_extension' => Admin\UserRESTEndpointExtension::class, 'admin.validation_counts' => Admin\ValidationCounts::class, - 'admin.plugin_install_tab' => Admin\PluginInstallTab::class, - 'admin.theme_install_tab' => Admin\ThemeInstallTab::class, + 'admin.amp_plugins' => Admin\AMPPlugins::class, + 'admin.amp_themes' => Admin\AMPThemes::class, 'amp_slug_customization_watcher' => AmpSlugCustomizationWatcher::class, 'background_task_deactivator' => BackgroundTaskDeactivator::class, 'cli.command_namespace' => Cli\CommandNamespaceRegistration::class, From d5e095ed5881c327b298c42cd007d03038c86192 Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Wed, 8 Sep 2021 17:55:06 +0530 Subject: [PATCH 018/105] Add unit test cases --- src/Admin/AMPPlugins.php | 6 +- src/Admin/AMPThemes.php | 4 + tests/php/src/Admin/AMPPluginsTest.php | 230 +++++++++++++++++++++++++ tests/php/src/Admin/AMPThemesTest.php | 101 +++++++++++ 4 files changed, 338 insertions(+), 3 deletions(-) create mode 100644 tests/php/src/Admin/AMPPluginsTest.php create mode 100644 tests/php/src/Admin/AMPThemesTest.php diff --git a/src/Admin/AMPPlugins.php b/src/Admin/AMPPlugins.php index 1b938d5c0aa..63ea7619f0d 100644 --- a/src/Admin/AMPPlugins.php +++ b/src/Admin/AMPPlugins.php @@ -179,9 +179,9 @@ public function tab_args() { /** * Filter the response of API call to wordpress.org for plugin data. * - * @param bool|array $response List of AMP compatible plugins. - * @param string $action API Action. - * @param array $args Args for plugin list. + * @param bool|array|stdClass $response List of AMP compatible plugins. + * @param string $action API Action. + * @param array $args Args for plugin list. * * @return stdClass|array List of AMP compatible plugins. */ diff --git a/src/Admin/AMPThemes.php b/src/Admin/AMPThemes.php index b689593f288..d7fea2c1aad 100644 --- a/src/Admin/AMPThemes.php +++ b/src/Admin/AMPThemes.php @@ -141,6 +141,8 @@ public function themes_api( $response, $action, $args ) { $response = new \stdClass(); $response->themes = []; + $args['per_page'] = ( ! empty( $args['per_page'] ) ) ? $args['per_page'] : 36; + $page = ( ! empty( $args['page'] ) && 0 < (int) $args['page'] ) ? (int) $args['page'] : 1; $theme_chunks = array_chunk( (array) $this->themes, $args['per_page'] ); $themes = ( ! empty( $theme_chunks[ $page - 1 ] ) && is_array( $theme_chunks[ $page - 1 ] ) ) ? $theme_chunks[ $page - 1 ] : []; @@ -149,6 +151,8 @@ public function themes_api( $response, $action, $args ) { foreach ( $themes as $i => $theme ) { $response->themes[ $i ] = (object) $theme; } + } else { + $response->themes = $themes; } $response->info = [ diff --git a/tests/php/src/Admin/AMPPluginsTest.php b/tests/php/src/Admin/AMPPluginsTest.php new file mode 100644 index 00000000000..90bc65a7642 --- /dev/null +++ b/tests/php/src/Admin/AMPPluginsTest.php @@ -0,0 +1,230 @@ +instance = new AMPPlugins(); + } + + /** + * @covers ::get_registration_action + */ + public function test_get_registration_action() { + + $this->assertEquals( 'current_screen', AMPPlugins::get_registration_action() ); + } + + /** + * @covers ::is_needed + */ + public function test_is_needed() { + + // Test 1: None admin request. + $this->assertFalse( AMPPlugins::is_needed() ); + + // Test 2: Ajax request. + add_filter( 'wp_doing_ajax', '__return_true' ); + $this->assertFalse( AMPPlugins::is_needed() ); + + // Test 3: None ajax and admin request. + set_current_screen( 'index.php' ); + add_filter( 'wp_doing_ajax', '__return_false' ); + $this->assertTrue( AMPPlugins::is_needed() ); + + set_current_screen( 'front' ); + } + + /** + * @covers ::register + */ + public function test_register() { + + $this->instance->register(); + $this->assertFalse( has_action( 'admin_enqueue_scripts', [ $this->instance, 'enqueue_scripts' ] ) ); + + $this->assertEquals( + 10, + has_filter( 'install_plugins_tabs', [ $this->instance, 'add_tab' ] ) + ); + $this->assertEquals( + 10, + has_filter( + 'install_plugins_table_api_args_px_enhancing', + [ $this->instance, 'tab_args' ] + ) + ); + $this->assertEquals( + 10, + has_filter( 'plugins_api', [ $this->instance, 'plugins_api' ] ) + ); + $this->assertEquals( + 10, + has_filter( 'plugin_install_action_links', [ $this->instance, 'action_links' ] ) + ); + $this->assertEquals( + 10, + has_filter( 'plugin_row_meta', [ $this->instance, 'plugin_row_meta' ] ) + ); + $this->assertEquals( + 10, + has_action( 'install_plugins_px_enhancing', 'display_plugins_table' ) + ); + + set_current_screen( 'plugins' ); + $this->instance->register(); + $this->assertEquals( + 10, + has_action( 'admin_enqueue_scripts', [ $this->instance, 'enqueue_scripts' ] ) + ); + set_current_screen( 'front' ); + } + + /** + * @covers ::enqueue_scripts + */ + public function test_enqueue_scripts() { + $this->instance->enqueue_scripts(); + $this->assertTrue( wp_script_is( AMPPlugins::ASSET_HANDLE ) ); + $this->assertTrue( wp_style_is( 'amp-admin' ) ); + } + + /** + * @covers ::add_tab + */ + public function test_add_tab() { + + $this->assertArrayHasKey( + 'px_enhancing', + $this->instance->add_tab( [] ) + ); + } + + /** + * @covers ::tab_args + */ + public function test_tab_args() { + + $output = $this->instance->tab_args(); + + $this->assertArrayHasKey( 'px_enhancing', $output ); + $this->assertArrayHasKey( 'per_page', $output ); + $this->assertArrayHasKey( 'page', $output ); + } + + /** + * @covers ::plugins_api + */ + public function test_plugins_api() { + $this->instance->register(); + $response = new \stdClass(); + + // Test 1: Normal request. + $response = $this->instance->plugins_api( $response, 'query_themes', [ 'per_page' => 36 ] ); + $this->assertEmpty( (array) $response ); + + // Test 2: Request for PX compatible data. + $args = [ + 'px_enhancing' => true, + 'per_page' => 36, + ]; + + $response = $this->instance->plugins_api( $response, 'query_themes', $args ); + + $this->assertIsArray( $response->info ); + $this->assertArrayHasKey( 'page', $response->info ); + $this->assertArrayHasKey( 'pages', $response->info ); + $this->assertArrayHasKey( 'results', $response->info ); + $this->assertIsArray( $response->plugins ); + } + + /** + * @covers ::action_links + */ + public function test_action_links() { + + // Test 1: wporg plugins + $actions = [ + 'test action', + ]; + $plugin_data = [ + 'wporg' => true, + ]; + $output = $this->instance->action_links( $actions, $plugin_data ); + $this->assertEquals( $actions, $output ); + + // Test 2: wporg plugin. + $plugin_data = [ + 'wporg' => false, + 'name' => 'Sample Plugin', + 'homepage' => 'https://sample-plugin.com', + ]; + $output = $this->instance->action_links( $actions, $plugin_data ); + $this->assertIsArray( $output ); + $this->assertEquals( + sprintf( + '%s', + esc_url( $plugin_data['homepage'] ), + esc_html( $plugin_data['name'] ), + esc_html__( 'Visit site', 'amp' ) + ), + $output[0] + ); + } + + public function test_plugin_row_meta() { + + $this->instance->register(); + + $plugin_meta = [ + 'meta_1', + 'meta_2', + ]; + + // Test 1: None AMP plugin. + $output = $this->instance->plugin_row_meta( $plugin_meta, '', [ 'slug' => 'example' ] ); + $this->assertEquals( $plugin_meta, $output ); + + // Test 2: None AMP plugin. + $output = $this->instance->plugin_row_meta( $plugin_meta, '', [ 'slug' => 'akismet' ] ); + + $this->assertContains( + ' Page Experience Enhancing', + $output + ); + + } +} diff --git a/tests/php/src/Admin/AMPThemesTest.php b/tests/php/src/Admin/AMPThemesTest.php new file mode 100644 index 00000000000..02607915e41 --- /dev/null +++ b/tests/php/src/Admin/AMPThemesTest.php @@ -0,0 +1,101 @@ +instance = new AMPThemes(); + } + + /** + * @covers ::register + */ + public function test_register() { + + set_current_screen( 'index.php' ); + + $this->instance->register(); + + $this->assertEquals( 10, has_filter( 'themes_api', [ $this->instance, 'themes_api' ] ) ); + $this->assertEquals( 10, has_action( 'current_screen', [ $this->instance, 'register_hooks' ] ) ); + + set_current_screen( 'front' ); + } + + /** + * @covers ::register_hooks + */ + public function test_register_hooks() { + + set_current_screen( 'themes' ); + + $this->instance->register_hooks(); + $this->assertEquals( 10, has_action( 'admin_enqueue_scripts', [ $this->instance, 'enqueue_scripts' ] ) ); + } + + /** + * @covers ::enqueue_scripts + */ + public function test_enqueue_scripts() { + $this->instance->enqueue_scripts(); + $this->assertTrue( wp_script_is( AMPThemes::ASSET_HANDLE ) ); + $this->assertTrue( wp_style_is( 'amp-admin' ) ); + } + + /** + * @covers ::themes_api + */ + public function test_themes_api() { + $this->instance->register(); + $response = new \stdClass(); + + // Test 1: Normal request. + $response = $this->instance->themes_api( $response, 'query_themes', [ 'per_page' => 36 ] ); + $this->assertEmpty( (array) $response ); + + // Test 2: Request for PX compatible data. + $args = [ + 'browse' => 'px_enhancing', + 'per_page' => 36, + ]; + + $response = $this->instance->themes_api( $response, 'query_themes', $args ); + $this->assertIsArray( $response->info ); + $this->assertArrayHasKey( 'page', $response->info ); + $this->assertArrayHasKey( 'pages', $response->info ); + $this->assertArrayHasKey( 'results', $response->info ); + $this->assertIsArray( $response->themes ); + } +} From 6ef834a9a29c4388d8bde95cd989648c8931e750 Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Thu, 9 Sep 2021 18:46:53 +0530 Subject: [PATCH 019/105] Add PX enhanced message in on borading wizard --- .../components/px-enhancing-message/index.js | 22 ++++++ .../components/px-enhancing-message/style.css | 69 +++++++++++++++++++ .../reader-theme-selection/index.js | 4 +- .../reader-themes-context-provider/index.js | 3 +- assets/src/components/theme-card/index.js | 9 ++- src/Admin/AMPPlugins.php | 22 +++--- src/Admin/AMPThemes.php | 18 ++--- src/Admin/OnboardingWizardSubmenuPage.php | 3 + 8 files changed, 127 insertions(+), 23 deletions(-) create mode 100644 assets/src/components/px-enhancing-message/index.js create mode 100644 assets/src/components/px-enhancing-message/style.css diff --git a/assets/src/components/px-enhancing-message/index.js b/assets/src/components/px-enhancing-message/index.js new file mode 100644 index 00000000000..74bd2f9a663 --- /dev/null +++ b/assets/src/components/px-enhancing-message/index.js @@ -0,0 +1,22 @@ +/** + * Internal dependencies + */ +import './style.css'; + +/** + * WordPress dependencies + */ +import { __ } from '@wordpress/i18n'; + +export function PXEnhancingMessage() { + return ( +
+ +   + + { __( 'This plugin follow best practice and is known to work well with AMP plugin.', 'amp' ) } + + { __( 'Page Experience Enhancing', 'amp' ) } +
+ ); +} diff --git a/assets/src/components/px-enhancing-message/style.css b/assets/src/components/px-enhancing-message/style.css new file mode 100644 index 00000000000..ed4785e21d1 --- /dev/null +++ b/assets/src/components/px-enhancing-message/style.css @@ -0,0 +1,69 @@ +.extension-card-px-message { + text-align: center; + padding: 7px 20px; + clear: both; + background-color: #e7e7e7; + border-top: 2px solid #dcdcde; + color: #3c434a; + position: relative; +} + +.theme-card .extension-card-px-message { + margin: 0 -1.5rem -1.5rem; +} + +.amp-logo-icon { + background-image: url("../images/amp-logo-icon.svg"); + background-color: transparent; + background-size: 20px 20px; + height: 20px; + width: 20px; + display: inline-block; + vertical-align: middle; +} + +.amp-logo-icon.small { + background-size: 15px 15px; + height: 15px; + width: 15px; +} + +.theme-browser .theme { + float: none; + display: inline-block; + vertical-align: top; +} + +.extension-card-px-message .tooltiptext { + visibility: hidden; + width: 60%; + background-color: rgba(0, 0, 0, 0.8); + color: #fff; + text-align: center; + border-radius: 6px; + padding: 5px; + position: absolute; + z-index: 1; + bottom: 100%; + left: 20%; +} + +.theme-card .extension-card-px-message .tooltiptext { + width: 80%; + left: 10%; +} + +.tooltiptext::after { + content: ""; + position: absolute; + top: 100%; + left: 50%; + margin-left: -7px; + border-width: 7px; + border-style: solid; + border-color: rgba(0, 0, 0, 0.8) transparent transparent transparent; +} + +.extension-card-px-message:hover .tooltiptext { + visibility: visible; +} diff --git a/assets/src/components/reader-theme-selection/index.js b/assets/src/components/reader-theme-selection/index.js index 79cfc42d649..312301138ec 100644 --- a/assets/src/components/reader-theme-selection/index.js +++ b/assets/src/components/reader-theme-selection/index.js @@ -22,7 +22,7 @@ import { ThemesAPIError } from '../themes-api-error'; * Component for selecting a reader theme. */ export function ReaderThemeSelection() { - const { availableThemes, fetchingThemes, unavailableThemes } = useContext( ReaderThemes ); + const { availableThemes, fetchingThemes, unavailableThemes, ampThemes } = useContext( ReaderThemes ); if ( fetchingThemes ) { return ; @@ -43,6 +43,7 @@ export function ReaderThemeSelection() { ) ) } @@ -63,6 +64,7 @@ export function ReaderThemeSelection() { key={ `theme-card-${ theme.slug }` } screenshotUrl={ theme.screenshot_url } disabled={ true } + isPXEnhanced={ ampThemes.includes( theme.slug ) } { ...theme } /> ) ) } diff --git a/assets/src/components/reader-themes-context-provider/index.js b/assets/src/components/reader-themes-context-provider/index.js index 3d099d0b8e9..9b01121648a 100644 --- a/assets/src/components/reader-themes-context-provider/index.js +++ b/assets/src/components/reader-themes-context-provider/index.js @@ -9,7 +9,7 @@ import { __ } from '@wordpress/i18n'; * External dependencies */ import PropTypes from 'prop-types'; -import { USING_FALLBACK_READER_THEME, LEGACY_THEME_SLUG } from 'amp-settings'; +import { USING_FALLBACK_READER_THEME, LEGACY_THEME_SLUG, AMP_THEMES } from 'amp-settings'; /** * Internal dependencies @@ -310,6 +310,7 @@ export function ReaderThemesContextProvider( { wpAjaxUrl, children, currentTheme themes: filteredThemes, themesAPIError, unavailableThemes, + ampThemes: AMP_THEMES, } } > diff --git a/assets/src/components/theme-card/index.js b/assets/src/components/theme-card/index.js index 0235dc7db6e..f8c647a2962 100644 --- a/assets/src/components/theme-card/index.js +++ b/assets/src/components/theme-card/index.js @@ -19,6 +19,7 @@ import MobileIcon from '../svg/mobile-icon.svg'; import { Options } from '../options-context-provider'; import { Selectable } from '../selectable'; import { Phone } from '../phone'; +import { PXEnhancingMessage } from '../px-enhancing-message'; /** * A selectable card showing a theme in a list of themes. @@ -32,8 +33,9 @@ import { Phone } from '../phone'; * @param {boolean} props.disabled Whether the theme is not automatically installable in the current environment. * @param {Object} props.style Style object to pass to the Selectable component. * @param {string} props.ElementName Name for the wrapper element. + * @param {boolean} props.isPXEnhanced Is themes is AMP compatible or not. */ -export function ThemeCard( { description, ElementName = 'li', homepage, screenshotUrl, slug, name, disabled, style } ) { +export function ThemeCard( { description, ElementName = 'li', homepage, screenshotUrl, slug, name, disabled, style, isPXEnhanced } ) { const { editedOptions, updateOptions } = useContext( Options ); const { reader_theme: readerTheme } = editedOptions; @@ -100,6 +102,10 @@ export function ThemeCard( { description, ElementName = 'li', homepage, screensh

) } + { isPXEnhanced && ( + + ) } + ); } @@ -113,4 +119,5 @@ ThemeCard.propTypes = { name: PropTypes.string, disabled: PropTypes.bool, style: PropTypes.object, + isPXEnhanced: PropTypes.bool, }; diff --git a/src/Admin/AMPPlugins.php b/src/Admin/AMPPlugins.php index 63ea7619f0d..0667d1398ea 100644 --- a/src/Admin/AMPPlugins.php +++ b/src/Admin/AMPPlugins.php @@ -30,9 +30,9 @@ class AMPPlugins implements Conditional, Delayed, Service, Registerable { const ASSET_HANDLE = 'amp-plugin-install'; /** - * @var array List AMP plugins. + * @var array List of AMP plugins. */ - protected $plugins = []; + public static $plugins = []; /** * Get the action to use for registering the service. @@ -59,11 +59,11 @@ public static function is_needed() { * * @return void */ - protected function set_plugins() { + public static function set_plugins() { $plugin_json = AMP__DIR__ . '/data/plugins.json'; $json_data = file_get_contents( $plugin_json ); - $this->plugins = json_decode( $json_data, true ); + self::$plugins = json_decode( $json_data, true ); } /** @@ -118,14 +118,14 @@ public function enqueue_scripts() { $none_wporg = []; - foreach ( $this->plugins as $plugin ) { + foreach ( self::$plugins as $plugin ) { if ( true !== $plugin['wporg'] ) { $none_wporg[] = $plugin['slug']; } } $js_data = [ - 'AMP_PLUGINS' => wp_list_pluck( $this->plugins, 'slug' ), + 'AMP_PLUGINS' => wp_list_pluck( self::$plugins, 'slug' ), 'NONE_WPORG_PLUGINS' => $none_wporg, ]; @@ -164,7 +164,7 @@ public function add_tab( $tabs ) { public function tab_args() { $per_page = 36; - $total_page = ceil( count( $this->plugins ) / $per_page ); + $total_page = ceil( count( self::$plugins ) / $per_page ); $pagenum = isset( $_REQUEST['paged'] ) ? absint( $_REQUEST['paged'] ) : 1; // phpcs:ignore WordPress.Security.NonceVerification.Recommended $pagenum = ( $pagenum > $total_page ) ? $total_page : $pagenum; $page = max( 1, $pagenum ); @@ -192,9 +192,9 @@ public function plugins_api( $response, $action, $args ) { return $response; } - $total_page = ceil( count( $this->plugins ) / $args['per_page'] ); + $total_page = ceil( count( self::$plugins ) / $args['per_page'] ); $page = ( ! empty( $args['page'] ) && 0 < (int) $args['page'] ) ? (int) $args['page'] : 1; - $plugin_chunks = array_chunk( (array) $this->plugins, $args['per_page'] ); + $plugin_chunks = array_chunk( (array) self::$plugins, $args['per_page'] ); $plugins = ( ! empty( $plugin_chunks[ $page - 1 ] ) && is_array( $plugin_chunks[ $page - 1 ] ) ) ? $plugin_chunks[ $page - 1 ] : []; $response = new stdClass(); @@ -202,7 +202,7 @@ public function plugins_api( $response, $action, $args ) { $response->info = [ 'page' => $page, 'pages' => $total_page, - 'results' => count( $this->plugins ), + 'results' => count( self::$plugins ), ]; return $response; @@ -246,7 +246,7 @@ public function action_links( $actions, $plugin ) { */ public function plugin_row_meta( $plugin_meta, $plugin_file, $plugin_data ) { - $amp_plugins = wp_list_pluck( $this->plugins, 'slug' ); + $amp_plugins = wp_list_pluck( self::$plugins, 'slug' ); if ( ! empty( $plugin_data['slug'] ) && in_array( $plugin_data['slug'], $amp_plugins, true ) ) { $plugin_meta[] = ' Page Experience Enhancing'; diff --git a/src/Admin/AMPThemes.php b/src/Admin/AMPThemes.php index d7fea2c1aad..347b4c198f4 100644 --- a/src/Admin/AMPThemes.php +++ b/src/Admin/AMPThemes.php @@ -26,20 +26,20 @@ class AMPThemes implements Service, Registerable { const ASSET_HANDLE = 'amp-theme-install'; /** - * @var array List AMP plugins. + * @var array List of AMP themes. */ - protected $themes = []; + public static $themes = []; /** * Fetch AMP themes data. * * @return void */ - protected function set_themes() { + public static function set_themes() { $file_path = AMP__DIR__ . '/data/themes.json'; $json_data = file_get_contents( $file_path ); - $this->themes = json_decode( $json_data, true ); + self::$themes = json_decode( $json_data, true ); } /** @@ -49,7 +49,7 @@ protected function set_themes() { */ public function register() { - $this->set_themes(); + self::set_themes(); add_filter( 'themes_api', [ $this, 'themes_api' ], 10, 3 ); @@ -101,14 +101,14 @@ public function enqueue_scripts() { $none_wporg = []; - foreach ( $this->themes as $theme ) { + foreach ( self::$themes as $theme ) { if ( true !== $theme['wporg'] ) { $none_wporg[] = $theme['slug']; } } $js_data = [ - 'AMP_THEMES' => wp_list_pluck( $this->themes, 'slug' ), + 'AMP_THEMES' => wp_list_pluck( self::$themes, 'slug' ), 'NONE_WPORG_THEMES' => $none_wporg, ]; @@ -144,7 +144,7 @@ public function themes_api( $response, $action, $args ) { $args['per_page'] = ( ! empty( $args['per_page'] ) ) ? $args['per_page'] : 36; $page = ( ! empty( $args['page'] ) && 0 < (int) $args['page'] ) ? (int) $args['page'] : 1; - $theme_chunks = array_chunk( (array) $this->themes, $args['per_page'] ); + $theme_chunks = array_chunk( (array) self::$themes, $args['per_page'] ); $themes = ( ! empty( $theme_chunks[ $page - 1 ] ) && is_array( $theme_chunks[ $page - 1 ] ) ) ? $theme_chunks[ $page - 1 ] : []; if ( 'query_themes' === $action ) { @@ -158,7 +158,7 @@ public function themes_api( $response, $action, $args ) { $response->info = [ 'page' => $page, 'pages' => count( $theme_chunks ), - 'results' => count( (array) $this->themes ), + 'results' => count( (array) self::$themes ), ]; return $response; diff --git a/src/Admin/OnboardingWizardSubmenuPage.php b/src/Admin/OnboardingWizardSubmenuPage.php index bbb4a105a09..790e6056e3c 100644 --- a/src/Admin/OnboardingWizardSubmenuPage.php +++ b/src/Admin/OnboardingWizardSubmenuPage.php @@ -226,6 +226,8 @@ public function enqueue_assets( $hook_suffix ) { $amp_settings_link = menu_page_url( AMP_Options_Manager::OPTION_NAME, false ); + AMPThemes::set_themes(); + $setup_wizard_data = [ 'AMP_OPTIONS_KEY' => AMP_Options_Manager::OPTION_NAME, 'AMP_QUERY_VAR' => amp_get_slug(), @@ -254,6 +256,7 @@ public function enqueue_assets( $hook_suffix ) { 'UPDATES_NONCE' => wp_create_nonce( 'updates' ), 'USER_FIELD_DEVELOPER_TOOLS_ENABLED' => UserAccess::USER_FIELD_DEVELOPER_TOOLS_ENABLED, 'USERS_RESOURCE_REST_PATH' => '/wp/v2/users', + 'AMP_THEMES' => wp_list_pluck( AMPThemes::$themes, 'slug' ), ]; wp_add_inline_script( From e36e7a10df9bca106f5965fb63938dbcf2ae9bcc Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Fri, 10 Sep 2021 18:03:40 +0530 Subject: [PATCH 020/105] Fix markup on search plugin page --- src/Admin/AMPPlugins.php | 2 +- tests/php/src/Admin/AMPPluginsTest.php | 7 +------ 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/src/Admin/AMPPlugins.php b/src/Admin/AMPPlugins.php index 0667d1398ea..aeafa18c3e2 100644 --- a/src/Admin/AMPPlugins.php +++ b/src/Admin/AMPPlugins.php @@ -51,7 +51,7 @@ public static function get_registration_action() { */ public static function is_needed() { - return ( ! wp_doing_ajax() && is_admin() ); + return is_admin(); } /** diff --git a/tests/php/src/Admin/AMPPluginsTest.php b/tests/php/src/Admin/AMPPluginsTest.php index 90bc65a7642..f1619cd3565 100644 --- a/tests/php/src/Admin/AMPPluginsTest.php +++ b/tests/php/src/Admin/AMPPluginsTest.php @@ -56,13 +56,8 @@ public function test_is_needed() { // Test 1: None admin request. $this->assertFalse( AMPPlugins::is_needed() ); - // Test 2: Ajax request. - add_filter( 'wp_doing_ajax', '__return_true' ); - $this->assertFalse( AMPPlugins::is_needed() ); - - // Test 3: None ajax and admin request. + // Test 2: Admin request. set_current_screen( 'index.php' ); - add_filter( 'wp_doing_ajax', '__return_false' ); $this->assertTrue( AMPPlugins::is_needed() ); set_current_screen( 'front' ); From 1c5de0a65127af98cee3e05f2979cbe18b902a63 Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Fri, 10 Sep 2021 22:20:36 +0530 Subject: [PATCH 021/105] Add AMP message in add plugin screen after search result comes in --- assets/src/admin/amp-plugin-install.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/assets/src/admin/amp-plugin-install.js b/assets/src/admin/amp-plugin-install.js index e6bd51b6d85..dbafcf78d32 100644 --- a/assets/src/admin/amp-plugin-install.js +++ b/assets/src/admin/amp-plugin-install.js @@ -1,3 +1,4 @@ +/* global _ */ /** * WordPress dependencies */ @@ -18,6 +19,22 @@ const ampPluginInstall = { init() { this.addAmpMessage(); this.removeAdditionalInfo(); + this.addAMPMessageInSearchResult(); + }, + + /** + * Add AMP compatible message in AMP compatible plugin card after search result comes in. + */ + addAMPMessageInSearchResult() { + const pluginInstallSearch = jQuery( '.plugin-install-php .wp-filter-search' ); + + pluginInstallSearch.on( 'keyup input', _.debounce( () => { + if ( 'undefined' !== typeof wp.updates.searchRequest ) { + wp.updates.searchRequest.done( () => { + this.addAmpMessage(); + } ); + } + }, 1500 ) ); }, /** From 87ee4622eb5358c5302750ba413371aca69f78a8 Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Tue, 5 Oct 2021 14:18:42 +0530 Subject: [PATCH 022/105] Update package-lock.json --- package-lock.json | 1627 ++++++++++++++++++--------------------------- 1 file changed, 649 insertions(+), 978 deletions(-) diff --git a/package-lock.json b/package-lock.json index 27cbfb7401a..4e908970853 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1709,12 +1709,12 @@ } }, "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^5.0.1" } }, "supports-color": { @@ -2116,34 +2116,34 @@ } }, "@octokit/openapi-types": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-10.2.2.tgz", - "integrity": "sha512-EVcXQ+ZrC04cg17AMg1ofocWMxHDn17cB66ZHgYc0eUwjFtxS0oBzkyw2VqIrHBwVgtfoYrq1WMQfQmMjUwthw==", + "version": "10.6.4", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-10.6.4.tgz", + "integrity": "sha512-JVmwWzYTIs6jACYOwD6zu5rdrqGIYsiAsLzTCxdrWIPNKNVjEF6vPTL20shmgJ4qZsq7WPBcLXLsaQD+NLChfg==", "dev": true }, "@octokit/plugin-paginate-rest": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.16.3.tgz", - "integrity": "sha512-kdc65UEsqze/9fCISq6BxLzeB9qf0vKvKojIfzgwf4tEF+Wy6c9dXnPFE6vgpoDFB1Z5Jek5WFVU6vL1w22+Iw==", + "version": "2.16.7", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.16.7.tgz", + "integrity": "sha512-TMlyVhMPx6La1Ud4PSY4YxqAvb9YPEMs/7R1nBSbsw4wNqG73aBqls0r0dRRCWe5Pm0ZUGS9a94N46iAxlOR8A==", "dev": true, "requires": { - "@octokit/types": "^6.28.1" + "@octokit/types": "^6.31.3" } }, "@octokit/plugin-rest-endpoint-methods": { - "version": "5.10.4", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.10.4.tgz", - "integrity": "sha512-Dh+EAMCYR9RUHwQChH94Skl0lM8Fh99auT8ggck/xTzjJrwVzvsd0YH68oRPqp/HxICzmUjLfaQ9sy1o1sfIiA==", + "version": "5.11.4", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.11.4.tgz", + "integrity": "sha512-iS+GYTijrPUiEiLoDsGJhrbXIvOPfm2+schvr+FxNMs7PeE9Nl4bAMhE8ftfNX3Z1xLxSKwEZh0O7GbWurX5HQ==", "dev": true, "requires": { - "@octokit/types": "^6.28.1", + "@octokit/types": "^6.31.2", "deprecation": "^2.3.1" } }, "@octokit/request": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.1.tgz", - "integrity": "sha512-Ls2cfs1OfXaOKzkcxnqw5MR6drMA/zWX/LIS/p8Yjdz7QKTPQLMsB3R+OvoxE6XnXeXEE2X7xe4G4l4X0gRiKQ==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.2.tgz", + "integrity": "sha512-je66CvSEVf0jCpRISxkUcCa0UkxmFs6eGDRSbfJtAVwbLH5ceqF+YEyC8lj8ystKyZTy8adWr0qmkY52EfOeLA==", "dev": true, "requires": { "@octokit/endpoint": "^6.0.1", @@ -2166,24 +2166,24 @@ } }, "@octokit/types": { - "version": "6.28.1", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.28.1.tgz", - "integrity": "sha512-XlxDoQLFO5JnFZgKVQTYTvXRsQFfr/GwDUU108NJ9R5yFPkA2qXhTJjYuul3vE4eLXP40FA2nysOu2zd6boE+w==", + "version": "6.31.3", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.31.3.tgz", + "integrity": "sha512-IUG3uMpsLHrtEL6sCVXbxCgnbKcgpkS4K7gVEytLDvYYalkK3XcuMCHK1YPD8xJglSJAOAbL4MgXp47rS9G49w==", "dev": true, "requires": { - "@octokit/openapi-types": "^10.2.2" + "@octokit/openapi-types": "^10.6.4" } }, "@polka/url": { - "version": "1.0.0-next.20", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.20.tgz", - "integrity": "sha512-88p7+M0QGxKpmnkfXjS4V26AnoC/eiqZutE8GLdaI5X12NY75bXSdTY9NkmYb2Xyk1O+MmkuO6Frmsj84V6I8Q==", + "version": "1.0.0-next.21", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", + "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==", "dev": true }, "@popperjs/core": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.10.1.tgz", - "integrity": "sha512-HnUhk1Sy9IuKrxEMdIRCxpIqPw6BFsbYSEUO9p/hNw5sMld/+3OLMWQP80F8/db9qsv3qUjs7ZR5bS/R+iinXw==" + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.10.2.tgz", + "integrity": "sha512-IXf3XA7+XyN7CP9gGh/XB0UxVMlvARGEgGXLubFICsUMGz6Q+DU+i4gGlpOxTjKvXjkJDJC8YdqdKkDj9qZHEQ==" }, "@sinonjs/commons": { "version": "1.8.3", @@ -2579,9 +2579,9 @@ "dev": true }, "@types/lodash": { - "version": "4.14.173", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.173.tgz", - "integrity": "sha512-vv0CAYoaEjCw/mLy96GBTnRoZrSxkGE0BKzKimdR8P3OzrNYNvBgtW7p055A+E8C31vXNUhWKoFCbhq7gbyhFg==" + "version": "4.14.175", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.175.tgz", + "integrity": "sha512-XmdEOrKQ8a1Y/yxQFOMbC47G/V2VDO1GvMRnl4O75M4GW/abC5tnfzadQYkqEveqRM1dEJGFFegfPNA2vvx2iw==" }, "@types/mdast": { "version": "3.0.10", @@ -2610,9 +2610,9 @@ "integrity": "sha512-zTqjvgCUT5EoXqbqmd8iJMb4NJqyV/V7pK7AIKq7qcaAsJIpGlTVJS1HQM6YkdHCdnkNSbhcQI7MXYxFfE3iCA==" }, "@types/node": { - "version": "16.9.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.4.tgz", - "integrity": "sha512-KDazLNYAGIuJugdbULwFZULF9qQ13yNWEBFnfVpqlpgAAo6H/qnM9RjBgh0A0kmHf3XxAKLdN5mTIng9iUvVLA==", + "version": "16.10.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.10.2.tgz", + "integrity": "sha512-zCclL4/rx+W5SQTzFs9wyvvyCwoK9QtBpratqz2IYJ3O8Umrn0m3nsTv0wQBk9sRGpvUe9CwPDrQFB10f1FIjQ==", "dev": true }, "@types/normalize-package-data": { @@ -2627,9 +2627,9 @@ "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" }, "@types/prettier": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.3.2.tgz", - "integrity": "sha512-eI5Yrz3Qv4KPUa/nSIAi0h+qX0XyewOliug5F2QAtuRg6Kjg6jfmxe1GIwoIRhZspD1A0RP8ANrPwvEXXtRFog==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.1.tgz", + "integrity": "sha512-Fo79ojj3vdEZOHg3wR9ksAMRz4P3S5fDB5e/YWZiFnyFQI1WY2Vftu9XoXVVtJfxB7Bpce/QTqWSSntkz2Znrw==", "dev": true }, "@types/prop-types": { @@ -2644,9 +2644,9 @@ "dev": true }, "@types/react": { - "version": "16.14.15", - "resolved": "https://registry.npmjs.org/@types/react/-/react-16.14.15.tgz", - "integrity": "sha512-jOxlBV9RGZhphdeqJTCv35VZOkjY+XIEY2owwSk84BNDdDv2xS6Csj6fhi+B/q30SR9Tz8lDNt/F2Z5RF3TrRg==", + "version": "16.14.16", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.14.16.tgz", + "integrity": "sha512-7waDQ0h1TkAk99S04wV0LUiiSXpT02lzrdDF4WZFqn2W0XE5ICXLBMtqXWZ688aX2dJislQ3knmZX/jH53RluQ==", "requires": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -2774,15 +2774,16 @@ } }, "@typescript-eslint/eslint-plugin": { - "version": "4.31.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.31.2.tgz", - "integrity": "sha512-w63SCQ4bIwWN/+3FxzpnWrDjQRXVEGiTt9tJTRptRXeFvdZc/wLiz3FQUwNQ2CVoRGI6KUWMNUj/pk63noUfcA==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", + "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "4.31.2", - "@typescript-eslint/scope-manager": "4.31.2", + "@typescript-eslint/experimental-utils": "4.33.0", + "@typescript-eslint/scope-manager": "4.33.0", "debug": "^4.3.1", "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", "regexpp": "^3.1.0", "semver": "^7.3.5", "tsutils": "^3.21.0" @@ -2800,55 +2801,55 @@ } }, "@typescript-eslint/experimental-utils": { - "version": "4.31.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.31.2.tgz", - "integrity": "sha512-3tm2T4nyA970yQ6R3JZV9l0yilE2FedYg8dcXrTar34zC9r6JB7WyBQbpIVongKPlhEMjhQ01qkwrzWy38Bk1Q==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", + "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==", "dev": true, "requires": { "@types/json-schema": "^7.0.7", - "@typescript-eslint/scope-manager": "4.31.2", - "@typescript-eslint/types": "4.31.2", - "@typescript-eslint/typescript-estree": "4.31.2", + "@typescript-eslint/scope-manager": "4.33.0", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/typescript-estree": "4.33.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" } }, "@typescript-eslint/parser": { - "version": "4.31.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.31.2.tgz", - "integrity": "sha512-EcdO0E7M/sv23S/rLvenHkb58l3XhuSZzKf6DBvLgHqOYdL6YFMYVtreGFWirxaU2mS1GYDby3Lyxco7X5+Vjw==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", + "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "4.31.2", - "@typescript-eslint/types": "4.31.2", - "@typescript-eslint/typescript-estree": "4.31.2", + "@typescript-eslint/scope-manager": "4.33.0", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/typescript-estree": "4.33.0", "debug": "^4.3.1" } }, "@typescript-eslint/scope-manager": { - "version": "4.31.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.31.2.tgz", - "integrity": "sha512-2JGwudpFoR/3Czq6mPpE8zBPYdHWFGL6lUNIGolbKQeSNv4EAiHaR5GVDQaLA0FwgcdcMtRk+SBJbFGL7+La5w==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", + "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", "dev": true, "requires": { - "@typescript-eslint/types": "4.31.2", - "@typescript-eslint/visitor-keys": "4.31.2" + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0" } }, "@typescript-eslint/types": { - "version": "4.31.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.31.2.tgz", - "integrity": "sha512-kWiTTBCTKEdBGrZKwFvOlGNcAsKGJSBc8xLvSjSppFO88AqGxGNYtF36EuEYG6XZ9vT0xX8RNiHbQUKglbSi1w==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", + "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "4.31.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.31.2.tgz", - "integrity": "sha512-ieBq8U9at6PvaC7/Z6oe8D3czeW5d//Fo1xkF/s9394VR0bg/UaMYPdARiWyKX+lLEjY3w/FNZJxitMsiWv+wA==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", + "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", "dev": true, "requires": { - "@typescript-eslint/types": "4.31.2", - "@typescript-eslint/visitor-keys": "4.31.2", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0", "debug": "^4.3.1", "globby": "^11.0.3", "is-glob": "^4.0.1", @@ -2868,12 +2869,12 @@ } }, "@typescript-eslint/visitor-keys": { - "version": "4.31.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.31.2.tgz", - "integrity": "sha512-PrBId7EQq2Nibns7dd/ch6S6/M4/iwLM9McbgeEbCXfxdwRUNxJ4UNreJ6Gh3fI2GNKNrWnQxKL7oCPmngKBug==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", + "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", "dev": true, "requires": { - "@typescript-eslint/types": "4.31.2", + "@typescript-eslint/types": "4.33.0", "eslint-visitor-keys": "^2.0.0" } }, @@ -4074,12 +4075,6 @@ "semver": "^7.3.5" } }, - "prettier": { - "version": "npm:wp-prettier@2.2.1-beta-1", - "resolved": "https://registry.npmjs.org/wp-prettier/-/wp-prettier-2.2.1-beta-1.tgz", - "integrity": "sha512-+JHkqs9LC/JPp51yy1hzs3lQ7qeuWCwOcSzpQNeeY/G7oSpnF61vxt7hRh87zNRTr6ob2ndy0W8rVzhgrcA+Gw==", - "dev": true - }, "read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", @@ -4268,9 +4263,9 @@ } }, "acorn-import-assertions": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.7.6.tgz", - "integrity": "sha512-FlVvVFA1TX6l3lp8VjDnYYq7R1nyW6x3svAt4nDgrWQ9SBaSh9CnbwgSUTasgfNfOG5HlM1ehugCvM+hjo56LA==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", "dev": true }, "acorn-jsx": { @@ -4448,16 +4443,16 @@ "dev": true }, "array-includes": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz", - "integrity": "sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", + "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2", + "es-abstract": "^1.19.1", "get-intrinsic": "^1.1.1", - "is-string": "^1.0.5" + "is-string": "^1.0.7" } }, "array-slice": { @@ -4485,47 +4480,47 @@ "dev": true }, "array.prototype.filter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array.prototype.filter/-/array.prototype.filter-1.0.0.tgz", - "integrity": "sha512-TfO1gz+tLm+Bswq0FBOXPqAchtCr2Rn48T8dLJoRFl8NoEosjZmzptmuo1X8aZBzZcqsR1W8U761tjACJtngTQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array.prototype.filter/-/array.prototype.filter-1.0.1.tgz", + "integrity": "sha512-Dk3Ty7N42Odk7PjU/Ci3zT4pLj20YvuVnneG/58ICM6bt4Ij5kZaJTVQ9TSaWaIECX2sFyz4KItkVZqHNnciqw==", "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0", + "es-abstract": "^1.19.0", "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.5" + "is-string": "^1.0.7" } }, "array.prototype.find": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.1.1.tgz", - "integrity": "sha512-mi+MYNJYLTx2eNYy+Yh6raoQacCsNeeMUaspFPh9Y141lFSsWxxB8V9mM2ye+eqiRs917J6/pJ4M9ZPzenWckA==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.1.2.tgz", + "integrity": "sha512-00S1O4ewO95OmmJW7EesWfQlrCrLEL8kZ40w3+GkLX2yTt0m2ggcePPa2uHPJ9KUmJvwRq+lCV9bD8Yim23x/Q==", "requires": { + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.17.4" + "es-abstract": "^1.19.0" } }, "array.prototype.flat": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz", - "integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz", + "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==", "requires": { - "call-bind": "^1.0.0", + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1" + "es-abstract": "^1.19.0" } }, "array.prototype.flatmap": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz", - "integrity": "sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz", + "integrity": "sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA==", "dev": true, "requires": { "call-bind": "^1.0.0", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1", - "function-bind": "^1.1.1" + "es-abstract": "^1.19.0" } }, "arrify": { @@ -4589,16 +4584,16 @@ "dev": true }, "autoprefixer": { - "version": "10.3.4", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.3.4.tgz", - "integrity": "sha512-EKjKDXOq7ug+jagLzmnoTRpTT0q1KVzEJqrJd0hCBa7FiG0WbFOBCcJCy2QkW1OckpO3qgttA1aWjVbeIPAecw==", + "version": "10.3.7", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.3.7.tgz", + "integrity": "sha512-EmGpu0nnQVmMhX8ROoJ7Mx8mKYPlcUHuxkwrRYEYMz85lu7H09v8w6R1P0JPdn/hKU32GjpLBFEOuIlDWCRWvg==", "dev": true, "requires": { - "browserslist": "^4.16.8", - "caniuse-lite": "^1.0.30001252", - "colorette": "^1.3.0", + "browserslist": "^4.17.3", + "caniuse-lite": "^1.0.30001264", "fraction.js": "^4.1.1", "normalize-range": "^0.1.2", + "picocolors": "^0.2.1", "postcss-value-parser": "^4.1.0" } }, @@ -4625,6 +4620,14 @@ "integrity": "sha512-/lqqLAmuIPi79WYfRpy2i8z+x+vxU3zX2uAm0gs1q52qTuKwolOj1P8XbufpXcsydrpKx2yGn2wzAnxCMV86QA==", "dev": true }, + "axios": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", + "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", + "requires": { + "follow-redirects": "^1.10.0" + } + }, "axobject-query": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", @@ -4823,13 +4826,13 @@ } }, "babel-plugin-polyfill-corejs3": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.4.tgz", - "integrity": "sha512-z3HnJE5TY/j4EFEa/qpQMSbcUJZ5JQi+3UFjXzn6pQCmIKc5Ug5j98SuYyH+m4xQnvKlMDIW4plLfgyVnd0IcQ==", + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.5.tgz", + "integrity": "sha512-ninF5MQNwAX9Z7c9ED+H2pGt1mXdP4TqzlHKyPIYmJIYz0N+++uwdM7RnJukklhzJ54Q84vA4ZJkgs7lu5vqcw==", "dev": true, "requires": { "@babel/helper-define-polyfill-provider": "^0.2.2", - "core-js-compat": "^3.14.0" + "core-js-compat": "^3.16.2" } }, "babel-plugin-polyfill-regenerator": { @@ -5065,16 +5068,16 @@ "dev": true }, "browserslist": { - "version": "4.17.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.0.tgz", - "integrity": "sha512-g2BJ2a0nEYvEFQC208q8mVAhfNwpZ5Mu8BwgtCdZKO3qx98HChmeg448fPdUzld8aFmfLgVh7yymqV+q1lJZ5g==", + "version": "4.17.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.3.tgz", + "integrity": "sha512-59IqHJV5VGdcJZ+GZ2hU5n4Kv3YiASzW6Xk5g9tf5a/MAzGeFwgGWU39fVzNIOVcgB3+Gp+kiQu0HEfTVU/3VQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001254", - "colorette": "^1.3.0", - "electron-to-chromium": "^1.3.830", + "caniuse-lite": "^1.0.30001264", + "electron-to-chromium": "^1.3.857", "escalade": "^3.1.1", - "node-releases": "^1.1.75" + "node-releases": "^1.1.77", + "picocolors": "^0.2.1" } }, "bser": { @@ -5173,9 +5176,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001259", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001259.tgz", - "integrity": "sha512-V7mQTFhjITxuk9zBpI6nYsiTXhcPe05l+364nZjK7MFK/E7ibvYBSAXr4YcA6oPR8j3ZLM/LN+lUqUVAQEUZFg==", + "version": "1.0.30001264", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001264.tgz", + "integrity": "sha512-Ftfqqfcs/ePiUmyaySsQ4PUsdcYyXG2rfoBVsk3iY1ahHaJEw65vfb7Suzqm+cEkwwPIv/XWkg27iCpRavH4zA==", "dev": true }, "capture-exit": { @@ -5567,23 +5570,23 @@ } }, "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "strip-ansi": "^6.0.1" } }, "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^5.0.1" } } } @@ -5703,9 +5706,9 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "colord": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.7.0.tgz", - "integrity": "sha512-pZJBqsHz+pYyw3zpX6ZRXWoCHM1/cvFikY9TV8G3zcejCaKE0lhankoj8iScyrrePA8C7yJ5FStfA9zbcOnw7Q==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.8.0.tgz", + "integrity": "sha512-kNkVV4KFta3TYQv0bzs4xNwLaeag261pxgzGQSh4cQ1rEhYjcTJfFRP0SDlbhLONg0eSoLzrDd79PosjbltufA==", "dev": true }, "colorette": { @@ -5823,12 +5826,12 @@ }, "dependencies": { "glob-parent": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.1.tgz", - "integrity": "sha512-kEVjS71mQazDBHKcsq4E9u/vUzaLcw1A8EtUeydawvIWQCJM0qQ08G1H7/XTjFUulla6XQiDOG6MXSaG0HDKog==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "requires": { - "is-glob": "^4.0.1" + "is-glob": "^4.0.3" } }, "p-limit": { @@ -5854,18 +5857,18 @@ } }, "core-js": { - "version": "3.18.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.18.0.tgz", - "integrity": "sha512-WJeQqq6jOYgVgg4NrXKL0KLQhi0CT4ZOCvFL+3CQ5o7I6J8HkT5wd53EadMfqTDp1so/MT1J+w2ujhWcCJtN7w==", + "version": "3.18.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.18.1.tgz", + "integrity": "sha512-vJlUi/7YdlCZeL6fXvWNaLUPh/id12WXj3MbkMw5uOyF0PfWPBNOCNbs53YqgrvtujLNlt9JQpruyIKkUZ+PKA==", "dev": true }, "core-js-compat": { - "version": "3.18.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.18.0.tgz", - "integrity": "sha512-tRVjOJu4PxdXjRMEgbP7lqWy1TWJu9a01oBkn8d+dNrhgmBwdTkzhHZpVJnEmhISLdoJI1lX08rcBcHi3TZIWg==", + "version": "3.18.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.18.1.tgz", + "integrity": "sha512-XJMYx58zo4W0kLPmIingVZA10+7TuKrMLPt83+EzDmxFJQUMcTVVmQ+n5JP4r6Z14qSzhQBRi3NSWoeVyKKXUg==", "dev": true, "requires": { - "browserslist": "^4.17.0", + "browserslist": "^4.17.1", "semver": "7.0.0" }, "dependencies": { @@ -5878,9 +5881,9 @@ } }, "core-js-pure": { - "version": "3.18.0", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.18.0.tgz", - "integrity": "sha512-ZnK+9vyuMhKulIGqT/7RHGRok8RtkHMEX/BGPHkHx+ouDkq+MUvf9mfIgdqhpmPDu8+V5UtRn/CbCRc9I4lX4w==", + "version": "3.18.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.18.1.tgz", + "integrity": "sha512-kmW/k8MaSuqpvA1xm2l3TVlBuvW+XBkcaOroFUpO3D4lsTGQWBTb/tBDCf/PNkkPLrwgrkQRIYNPB0CeqGJWGQ==", "dev": true }, "core-util-is": { @@ -5992,14 +5995,13 @@ }, "dependencies": { "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "source-map": { @@ -6007,15 +6009,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -6051,14 +6044,13 @@ "dev": true }, "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "postcss-selector-parser": { @@ -6077,15 +6069,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -6143,9 +6126,9 @@ "dev": true }, "jest-worker": { - "version": "27.2.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.2.0.tgz", - "integrity": "sha512-laB0ZVIBz+voh/QQy9dmUuuDsadixeerrKqyVpgPz+CCWiOYjOBabUXHIXZhsdvkWbLqSHbgkAHWl5cg24Q6RA==", + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.2.4.tgz", + "integrity": "sha512-Zq9A2Pw59KkVjBBKD1i3iE2e22oSjXhUKKuAK1HGX8flGwkm6NMozyEYzKd41hXc64dbd/0eWFeEEuxqXyhM+g==", "dev": true, "requires": { "@types/node": "*", @@ -6200,14 +6183,13 @@ }, "dependencies": { "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "source-map": { @@ -6215,15 +6197,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -6820,9 +6793,9 @@ } }, "electron-to-chromium": { - "version": "1.3.845", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.845.tgz", - "integrity": "sha512-y0RorqmExFDI4RjLEC6j365bIT5UAXf9WIRcknvSFHVhbC/dRnCgJnPA3DUUW6SCC85QGKEafgqcHJ6uPdEP1Q==", + "version": "1.3.859", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.859.tgz", + "integrity": "sha512-gXRXKNWedfdiKIzwr0Mg/VGCvxXzy+4SuK9hp1BDvfbCwx0O5Ot+2f4CoqQkqEJ3Zj/eAV/GoAFgBVFgkBLXuQ==", "dev": true }, "emittery": { @@ -6964,9 +6937,9 @@ } }, "es-abstract": { - "version": "1.18.6", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.6.tgz", - "integrity": "sha512-kAeIT4cku5eNLNuUKhlmtuk1/TRZvQoYccn6TO0cSVdf1kzB0T7+dYuVK9MWM7l+/53W2Q8M7N2c6MQvhXFcUQ==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", @@ -6979,7 +6952,9 @@ "is-callable": "^1.2.4", "is-negative-zero": "^2.0.1", "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", "is-string": "^1.0.7", + "is-weakref": "^1.0.1", "object-inspect": "^1.11.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", @@ -6995,9 +6970,9 @@ "dev": true }, "es-module-lexer": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.7.1.tgz", - "integrity": "sha512-MgtWFl5No+4S3TmhDmCz2ObFGm6lEpTnzbQi+Dd+pw4mlTIZTmM2iAs5gRlmx5zS9luzobCSBSI90JM/1/JgOw==", + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.2.tgz", + "integrity": "sha512-YkAGWqxZq2B4FxQ5y687UwywDwvLQhIMCZ+SDU7ZW729SDHOEI6wVFXwTRecz+yiwJzCsVwC6V7bxyNbZSB1rg==", "dev": true }, "es-to-primitive": { @@ -7274,12 +7249,12 @@ "dev": true }, "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^5.0.1" } }, "supports-color": { @@ -7492,6 +7467,14 @@ "comment-parser": "1.2.4", "esquery": "^1.4.0", "jsdoc-type-pratt-parser": "1.1.1" + }, + "dependencies": { + "jsdoc-type-pratt-parser": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-1.1.1.tgz", + "integrity": "sha512-uelRmpghNwPBuZScwgBG/OzodaFk5RbO5xaivBdsAY70icWfShwZ7PCMO0x1zSkOa8T1FzHThmrdoyg/0AwV5g==", + "dev": true + } } }, "comment-parser": { @@ -7633,6 +7616,12 @@ "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true }, + "esm": { + "version": "3.2.25", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", + "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", + "dev": true + }, "espree": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", @@ -8436,6 +8425,11 @@ "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==", "dev": true }, + "follow-redirects": { + "version": "1.14.4", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz", + "integrity": "sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==" + }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -8521,6 +8515,12 @@ "tslib": "^2.1.0" } }, + "fs": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", + "integrity": "sha1-invTcYa23d84E/I4WLV+yq9eQdQ=", + "dev": true + }, "fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", @@ -8552,13 +8552,13 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "function.prototype.name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.4.tgz", - "integrity": "sha512-iqy1pIotY/RmhdFZygSSlW0wko2yxkSCKqsuv4pr8QESohpYyG/Z7B/XXvPRKTJS//960rgguE5mSRUsDdaJrQ==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2", + "es-abstract": "^1.19.0", "functions-have-names": "^1.2.2" } }, @@ -8661,9 +8661,9 @@ } }, "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -8820,6 +8820,20 @@ "rimraf": "~3.0.2" }, "dependencies": { + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, "grunt-cli": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.4.3.tgz", @@ -9409,9 +9423,9 @@ "dev": true }, "import-local": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", - "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.3.tgz", + "integrity": "sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA==", "dev": true, "requires": { "pkg-dir": "^4.2.0", @@ -9684,9 +9698,9 @@ } }, "is-core-module": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz", - "integrity": "sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.7.0.tgz", + "integrity": "sha512-ByY+tjCciCr+9nLryBYcSD50EOGWt95c7tIsKTG1J2ixKKXPvF7Ej3AVd+UfDydAJom3biBGDBALaO79ktwgEQ==", "requires": { "has": "^1.0.3" } @@ -9775,9 +9789,9 @@ "dev": true }, "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "requires": { "is-extglob": "^2.1.1" @@ -9891,6 +9905,11 @@ "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", "dev": true }, + "is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==" + }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", @@ -9951,6 +9970,14 @@ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", "dev": true }, + "is-weakref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", + "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", + "requires": { + "call-bind": "^1.0.0" + } + }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -9992,9 +10019,9 @@ "dev": true }, "istanbul-lib-coverage": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", - "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.1.tgz", + "integrity": "sha512-GvCYYTxaCPqwMjobtVcVKvSHtAGe48MNhGjpK8LtVF8K0ISX7hCKl85LgtuaSneWVyQmaGcW3iXVV3GaZSLpmQ==", "dev": true }, "istanbul-lib-instrument": { @@ -10202,23 +10229,23 @@ "dev": true }, "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "strip-ansi": "^6.0.1" } }, "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^5.0.1" } }, "supports-color": { @@ -11390,23 +11417,23 @@ "dev": true }, "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "strip-ansi": "^6.0.1" } }, "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^5.0.1" } }, "strip-bom": { @@ -11873,9 +11900,9 @@ "dev": true }, "jsdoc-type-pratt-parser": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-1.1.1.tgz", - "integrity": "sha512-uelRmpghNwPBuZScwgBG/OzodaFk5RbO5xaivBdsAY70icWfShwZ7PCMO0x1zSkOa8T1FzHThmrdoyg/0AwV5g==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-1.2.0.tgz", + "integrity": "sha512-4STjeF14jp4bqha44nKMY1OUI6d2/g6uclHWUCZ7B4DoLzaB5bmpTkQrpqU+vSVzMD0LsKAOskcnI3I3VfIpmg==", "dev": true }, "jsdoctypeparser": { @@ -12211,9 +12238,9 @@ "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" }, "linkify-it": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.2.tgz", - "integrity": "sha512-gDBO4aHNZS6coiZCKVhSNh43F9ioIL4JwRjLZPkoLIY4yZFwg264Y5lu2x6rb1Js42Gh6Yqm2f6L2AJcnkzinQ==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", + "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", "dev": true, "requires": { "uc.micro": "^1.0.1" @@ -12397,9 +12424,9 @@ } }, "listr2": { - "version": "3.12.1", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.12.1.tgz", - "integrity": "sha512-oB1DlXlCzGPbvWhqYBZUQEPJKqsmebQWofXG6Mpbe3uIvoNl8mctBEojyF13ZyqwQ91clCWXpwsWp+t98K4FOQ==", + "version": "3.12.2", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.12.2.tgz", + "integrity": "sha512-64xC2CJ/As/xgVI3wbhlPWVPx0wfTqbUAkpb7bjDi0thSWMqrf07UFhrfsGoo8YSXmF049Rp9C0cjLC8rZxK9A==", "dev": true, "requires": { "cli-truncate": "^2.1.0", @@ -12463,23 +12490,23 @@ } }, "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "strip-ansi": "^6.0.1" } }, "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^5.0.1" } }, "wrap-ansi": { @@ -12763,23 +12790,23 @@ } }, "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "strip-ansi": "^6.0.1" } }, "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^5.0.1" } }, "wrap-ansi": { @@ -12942,6 +12969,20 @@ "integrity": "sha512-pRxBna3MJe6HKnBGsDyMv8ETbptw3axEdYHoqNh7gu5oDcew8fs0xnivZGm06Ogk8zGAJ9VX+OPEr2GXEQK4dg==", "dev": true }, + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -13198,18 +13239,18 @@ "dev": true }, "mime-db": { - "version": "1.49.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz", - "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==", + "version": "1.50.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz", + "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==", "dev": true }, "mime-types": { - "version": "2.1.32", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz", - "integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==", + "version": "2.1.33", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz", + "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==", "dev": true, "requires": { - "mime-db": "1.49.0" + "mime-db": "1.50.0" } }, "mimic-fn": { @@ -13374,9 +13415,9 @@ "dev": true }, "nanocolors": { - "version": "0.2.11", - "resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.2.11.tgz", - "integrity": "sha512-83ttyvfJj66dKMadWfBkEUOEDFfRc8FpzTJvh1MySR/pzWFmFikTQZGOV6kHZRz7yR/heiQ1y/MHBBN5P/e7WQ==", + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.2.12.tgz", + "integrity": "sha512-SFNdALvzW+rVlzqexid6epYdt8H9Zol7xDoQarioEFcFN0JHo4CYNztAxmtfgGTVRCmFlEOqqhBpoFGKqSAMug==", "dev": true }, "nanoid": { @@ -13435,9 +13476,9 @@ "dev": true }, "node-fetch": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.4.tgz", - "integrity": "sha512-aD1fO+xtLiSCc9vuD+sYMxpIuQyhHscGSkBEo2o5LTV/3bTEAYvdUii29n8LlO5uLCmWdGP7uVUVXFo5SRdkLA==", + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.5.tgz", + "integrity": "sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ==", "dev": true, "requires": { "whatwg-url": "^5.0.0" @@ -13493,9 +13534,9 @@ } }, "node-releases": { - "version": "1.1.76", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.76.tgz", - "integrity": "sha512-9/IECtNr8dXNmPWmFXepT0/7o5eolGesHUa3mtr0KlgnCvnZxwh2qensKL42JJY2vQKC3nIBXetFAqR+PW1CmA==", + "version": "1.1.77", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.77.tgz", + "integrity": "sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ==", "dev": true }, "nopt": { @@ -13825,46 +13866,45 @@ } }, "object.entries": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.4.tgz", - "integrity": "sha512-h4LWKWE+wKQGhtMjZEBud7uLGhqyLwj8fpHOarZhD2uY3C9cRtk57VQ89ke3moByLXMedqs3XCHzyb4AmA2DjA==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", + "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.2" + "es-abstract": "^1.19.1" } }, "object.fromentries": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.4.tgz", - "integrity": "sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", + "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2", - "has": "^1.0.3" + "es-abstract": "^1.19.1" } }, "object.getownpropertydescriptors": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz", - "integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz", + "integrity": "sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw==", "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" + "es-abstract": "^1.19.1" } }, "object.hasown": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.0.0.tgz", - "integrity": "sha512-qYMF2CLIjxxLGleeM0jrcB4kiv3loGVAjKQKvH8pSU/i2VcRRvUNmxbD+nEMmrXRfORhuVJuH8OtSYCZoue3zA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz", + "integrity": "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==", "dev": true, "requires": { "define-properties": "^1.1.3", - "es-abstract": "^1.18.1" + "es-abstract": "^1.19.1" } }, "object.map": { @@ -13898,13 +13938,13 @@ } }, "object.values": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.4.tgz", - "integrity": "sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", + "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.2" + "es-abstract": "^1.19.1" } }, "once": { @@ -14137,6 +14177,12 @@ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", "dev": true }, + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, "picomatch": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", @@ -14366,14 +14412,13 @@ }, "dependencies": { "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "source-map": { @@ -14381,15 +14426,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -14414,14 +14450,13 @@ }, "dependencies": { "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "source-map": { @@ -14429,15 +14464,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -14453,14 +14479,13 @@ }, "dependencies": { "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "source-map": { @@ -14468,15 +14493,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -14491,14 +14507,13 @@ }, "dependencies": { "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "source-map": { @@ -14506,15 +14521,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -14530,14 +14536,13 @@ }, "dependencies": { "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "source-map": { @@ -14545,15 +14550,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -14568,14 +14564,13 @@ }, "dependencies": { "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "source-map": { @@ -14583,15 +14578,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -14626,14 +14612,13 @@ }, "dependencies": { "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "source-map": { @@ -14641,15 +14626,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -14664,14 +14640,13 @@ }, "dependencies": { "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "source-map": { @@ -14679,15 +14654,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -14708,14 +14674,13 @@ "dev": true }, "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "postcss-selector-parser": { @@ -14734,15 +14699,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -14763,14 +14719,13 @@ "dev": true }, "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "postcss-selector-parser": { @@ -14789,15 +14744,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -14836,14 +14782,13 @@ }, "dependencies": { "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "source-map": { @@ -14851,15 +14796,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -14874,14 +14810,13 @@ }, "dependencies": { "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "source-map": { @@ -14889,15 +14824,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -14911,14 +14837,13 @@ }, "dependencies": { "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "source-map": { @@ -14926,15 +14851,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -14948,14 +14864,13 @@ }, "dependencies": { "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "source-map": { @@ -14963,15 +14878,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -14985,14 +14891,13 @@ }, "dependencies": { "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "source-map": { @@ -15000,15 +14905,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -15022,14 +14918,13 @@ }, "dependencies": { "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "source-map": { @@ -15037,15 +14932,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -15100,14 +14986,13 @@ }, "dependencies": { "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "source-map": { @@ -15115,15 +15000,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -15148,14 +15024,13 @@ }, "dependencies": { "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "source-map": { @@ -15163,15 +15038,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -15187,14 +15053,13 @@ }, "dependencies": { "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "source-map": { @@ -15202,15 +15067,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -15224,14 +15080,13 @@ }, "dependencies": { "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "source-map": { @@ -15239,15 +15094,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -15309,14 +15155,13 @@ }, "dependencies": { "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "source-map": { @@ -15324,15 +15169,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -15346,14 +15182,13 @@ }, "dependencies": { "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "source-map": { @@ -15361,15 +15196,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -15500,14 +15326,13 @@ }, "dependencies": { "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "source-map": { @@ -15515,15 +15340,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -15631,14 +15447,13 @@ }, "dependencies": { "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "source-map": { @@ -15646,15 +15461,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -15668,14 +15474,13 @@ }, "dependencies": { "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "source-map": { @@ -15683,15 +15488,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -15706,14 +15502,13 @@ }, "dependencies": { "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "source-map": { @@ -15721,15 +15516,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -15779,29 +15565,28 @@ }, "dependencies": { "autoprefixer": { - "version": "9.8.6", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz", - "integrity": "sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==", + "version": "9.8.8", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", + "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", "dev": true, "requires": { "browserslist": "^4.12.0", "caniuse-lite": "^1.0.30001109", - "colorette": "^1.2.1", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", + "picocolors": "^0.2.1", "postcss": "^7.0.32", "postcss-value-parser": "^4.1.0" } }, "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "source-map": { @@ -15809,15 +15594,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -15838,14 +15614,13 @@ "dev": true }, "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "postcss-selector-parser": { @@ -15864,15 +15639,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -15906,14 +15672,13 @@ }, "dependencies": { "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "source-map": { @@ -15921,15 +15686,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -15949,14 +15705,13 @@ }, "dependencies": { "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "source-map": { @@ -15964,15 +15719,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -15987,14 +15733,13 @@ }, "dependencies": { "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "source-map": { @@ -16002,15 +15747,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -16024,14 +15760,13 @@ }, "dependencies": { "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "source-map": { @@ -16039,15 +15774,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -16062,14 +15788,13 @@ }, "dependencies": { "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "source-map": { @@ -16077,15 +15802,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -16100,14 +15816,13 @@ }, "dependencies": { "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "source-map": { @@ -16115,15 +15830,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -16560,9 +16266,9 @@ } }, "react-colorful": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/react-colorful/-/react-colorful-5.4.0.tgz", - "integrity": "sha512-k7QJXuQGWevr/V8hoMJ1wBW9i2CVhBdDXpBf3jy/AAtzVyYtsFqEAT+y+NOGiSG1cmnGTreqm5EFLXlVaKbPLQ==" + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/react-colorful/-/react-colorful-5.5.0.tgz", + "integrity": "sha512-BuzrlrM0ylg7coPkXOrRqlf2BgHLw5L44sybbr9Lg4xy7w9e5N7fGYbojOO0s8J0nvrM3PERN2rVFkvSa24lnQ==" }, "react-dates": { "version": "17.2.0", @@ -17160,9 +16866,9 @@ } }, "resolve-bin": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/resolve-bin/-/resolve-bin-0.4.1.tgz", - "integrity": "sha512-cPOo/AQjgGONYhFbAcJd1+nuVHKs5NZ8K96Zb6mW+nDl55a7+ya9MWkeYuSMDv/S+YpksZ3EbeAnGWs5x04x8w==", + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/resolve-bin/-/resolve-bin-0.4.3.tgz", + "integrity": "sha512-9u8TMpc+SEHXxQXblXHz5yRvRZERkCZimFN9oz85QI3uhkh7nqfjm6OGTLg+8vucpXGcY4jLK6WkylPmt7GSvw==", "dev": true, "requires": { "find-parent-dir": "~0.3.0" @@ -17528,9 +17234,9 @@ } }, "sass": { - "version": "1.42.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.42.0.tgz", - "integrity": "sha512-kcjxsemgaOnfl43oZgO/IePLvXQI0ZKzo0/xbCt6uyrg3FY/FF8hVK9YoO8GiZBcEG2Ebl79EKnUc+aiE4f2Vw==", + "version": "1.42.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.42.1.tgz", + "integrity": "sha512-/zvGoN8B7dspKc5mC6HlaygyCBRvnyzzgD5khiaCfglWztY99cYoiTUksVx11NlnemrcfH5CEaCpsUKoW0cQqg==", "dev": true, "requires": { "chokidar": ">=3.0.0 <4.0.0" @@ -17720,9 +17426,9 @@ } }, "signal-exit": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.4.tgz", - "integrity": "sha512-rqYhcAnZ6d/vTPGghdrw7iumdcbXpsk1b8IG/rz+VWV51DM0p7XCtMoJ3qhPLIbp3tvyt3pKRbaaEMZYpHto8Q==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz", + "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==", "dev": true }, "simple-html-tokenizer": { @@ -18109,12 +17815,12 @@ } }, "std-env": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-2.3.0.tgz", - "integrity": "sha512-4qT5B45+Kjef2Z6pE0BkskzsH0GO7GrND0wGlTM1ioUe3v0dGYx9ZJH0Aro/YyA8fqQ5EyIKDRjZojJYMFTflw==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-2.3.1.tgz", + "integrity": "sha512-eOsoKTWnr6C8aWrqJJ2KAReXoa7Vn5Ywyw6uCXgA/xDhxPoaIsBa5aNJmISY04dLwXPBnDHW4diGM7Sn5K4R/g==", "dev": true, "requires": { - "ci-info": "^3.0.0" + "ci-info": "^3.1.1" }, "dependencies": { "ci-info": { @@ -18148,12 +17854,12 @@ "dev": true }, "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^5.0.1" } } } @@ -18175,14 +17881,14 @@ } }, "string.prototype.matchall": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.5.tgz", - "integrity": "sha512-Z5ZaXO0svs0M2xd/6By3qpeKpLKd9mO4v4q3oMEQrk8Ck4xOD5d5XeBOOjGrmVZZ/AHB1S0CgG4N5r1G9N3E2Q==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz", + "integrity": "sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg==", "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.2", + "es-abstract": "^1.19.1", "get-intrinsic": "^1.1.1", "has-symbols": "^1.0.2", "internal-slot": "^1.0.3", @@ -18191,25 +17897,25 @@ } }, "string.prototype.padend": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.2.tgz", - "integrity": "sha512-/AQFLdYvePENU3W5rgurfWSMU6n+Ww8n/3cUt7E+vPBB/D7YDG8x+qjoFs4M/alR2bW7Qg6xMjVwWUOvuQ0XpQ==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.3.tgz", + "integrity": "sha512-jNIIeokznm8SD/TZISQsZKYu7RJyheFNt84DUPrh482GC8RVp2MKqm2O5oBRdGxbDQoXrhhWtPIWQOiy20svUg==", "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" + "es-abstract": "^1.19.1" } }, "string.prototype.trim": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.4.tgz", - "integrity": "sha512-hWCk/iqf7lp0/AgTF7/ddO1IWtSNPASjlzCicV5irAVdE1grjsneK26YG6xACMBEdCvO8fUST0UzDMh/2Qy+9Q==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.5.tgz", + "integrity": "sha512-Lnh17webJVsD6ECeovpVN17RlAKjmz4rF9S+8Y45CkMc/ufVpTkU3vZIyIC7sllQ1FCvObZnnCdNs/HXTUOTlg==", "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" + "es-abstract": "^1.19.1" } }, "string.prototype.trimend": { @@ -18403,17 +18109,26 @@ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, "autoprefixer": { - "version": "9.8.6", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz", - "integrity": "sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==", + "version": "9.8.8", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", + "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", "dev": true, "requires": { "browserslist": "^4.12.0", "caniuse-lite": "^1.0.30001109", - "colorette": "^1.2.1", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", + "picocolors": "^0.2.1", "postcss": "^7.0.32", "postcss-value-parser": "^4.1.0" } @@ -18432,32 +18147,6 @@ "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } } }, "color-convert": { @@ -18494,12 +18183,6 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, "find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", @@ -18530,6 +18213,12 @@ "which": "^1.3.1" } }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "hosted-git-info": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", @@ -18602,38 +18291,13 @@ "dev": true }, "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - } + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "read-pkg": { @@ -18721,32 +18385,32 @@ "dev": true }, "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "strip-ansi": "^6.0.1" } }, "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^5.0.1" } }, "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" } }, "type-fest": { @@ -18814,14 +18478,13 @@ }, "dependencies": { "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "source-map": { @@ -18829,15 +18492,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -19002,17 +18656,17 @@ "dev": true }, "table": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", - "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.2.tgz", + "integrity": "sha512-UFZK67uvyNivLeQbVtkiUs8Uuuxv24aSL4/Vil2PJVtMgU8Lx0CYkP12uCGa3kjyQzOSgV1+z9Wkb82fCGsO0g==", "dev": true, "requires": { "ajv": "^8.0.1", "lodash.clonedeep": "^4.5.0", "lodash.truncate": "^4.4.2", "slice-ansi": "^4.0.0", - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0" + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" }, "dependencies": { "ajv": { @@ -19052,23 +18706,23 @@ "dev": true }, "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "strip-ansi": "^6.0.1" } }, "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^5.0.1" } } } @@ -19162,9 +18816,9 @@ "dev": true }, "jest-worker": { - "version": "27.2.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.2.0.tgz", - "integrity": "sha512-laB0ZVIBz+voh/QQy9dmUuuDsadixeerrKqyVpgPz+CCWiOYjOBabUXHIXZhsdvkWbLqSHbgkAHWl5cg24Q6RA==", + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.2.4.tgz", + "integrity": "sha512-Zq9A2Pw59KkVjBBKD1i3iE2e22oSjXhUKKuAK1HGX8flGwkm6NMozyEYzKd41hXc64dbd/0eWFeEEuxqXyhM+g==", "dev": true, "requires": { "@types/node": "*", @@ -19537,6 +19191,12 @@ "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", "dev": true }, + "underscore": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz", + "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==", + "dev": true + }, "underscore.string": { "version": "3.3.5", "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.5.tgz", @@ -19956,9 +19616,9 @@ "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==" }, "webpack": { - "version": "5.53.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.53.0.tgz", - "integrity": "sha512-RZ1Z3z3ni44snoWjfWeHFyzvd9HMVYDYC5VXmlYUT6NWgEOWdCNpad5Fve2CzzHoRED7WtsKe+FCyP5Vk4pWiQ==", + "version": "5.56.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.56.1.tgz", + "integrity": "sha512-MRbTPooHJuSAfbx7Lh/qEMRUe/d0p4cRj2GPo/fq+4JUeR/+Q1EfLvS1lexslbMcJZyPXxxz/k/NzVepkA5upA==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.0", @@ -19970,8 +19630,8 @@ "acorn-import-assertions": "^1.7.6", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.8.0", - "es-module-lexer": "^0.7.1", + "enhanced-resolve": "^5.8.3", + "es-module-lexer": "^0.9.0", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", @@ -20373,23 +20033,23 @@ "dev": true }, "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "strip-ansi": "^6.0.1" } }, "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^5.0.1" } }, "supports-color": { @@ -20523,6 +20183,17 @@ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true }, + "wporg-api-client": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wporg-api-client/-/wporg-api-client-1.0.1.tgz", + "integrity": "sha512-XdPnka1eUIZZVbzQuPQ4OXnxLVzAEcgSLZT/UU8er0g32GcTi5U5go6zXd19/RxESR0ftORO1if4+dLQY80/5w==", + "dev": true, + "requires": { + "axios": "^0.21.0", + "esm": "^3.2.25", + "lodash": "^4.17.20" + } + }, "wrap-ansi": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", From 041e779231541d7cb6d307d0bef15c2668dd1fc8 Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Tue, 5 Oct 2021 16:06:56 +0530 Subject: [PATCH 023/105] Update package-lock.json --- data/plugins.json | 2 +- data/themes.json | 2 +- includes/embeds/class-amp-twitter-embed-handler.php | 1 - 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/data/plugins.json b/data/plugins.json index cc42242b6a6..48d48528732 100644 --- a/data/plugins.json +++ b/data/plugins.json @@ -1 +1 @@ -[{"name":"Podcast Player – Your Podcasting Companion","slug":"podcast-player","version":"5.1.0","author":"vedathemes","author_profile":"https://profiles.wordpress.org/vedathemes","requires":"4.9","tested":"5.8","requires_php":"5.6","rating":98,"ratings":{"1":0,"2":1,"3":0,"4":2,"5":43},"num_ratings":46,"support_threads":8,"support_threads_resolved":6,"active_installs":8000,"downloaded":114062,"last_updated":"2021-09-06 4:16pm GMT","added":"2019-02-06","homepage":"https://vedathemes.com/podcast-player/","short_description":"Showcase your podcast only using podcasting feed url. Use custom widget, shortcode or editor block…","description":"

Podcast Player provides an easy way to show and play your podcast episodes using podcasting feed url. It is a must have plugin for your podcast website. Give your listeners an easy access to all your episodes from any page or even from all the pages of your website.

\n

Podcast Player Pro | Documentation

\n\n

Podcast player key features

\n
    \n
  • Give your listeners an easy access to your podcast episodes.
  • \n
  • Display responsive podcast player just by entering your podcast’s feed url.
  • \n
  • Fetch all required details from feed url.
  • \n
  • Option to modify fetched details of your podcast.
  • \n
  • Option to Show or Hide individual player elements.
  • \n
  • Give your listener an option to share your podcast episodes.
  • \n
  • Ajax live search episodes from the podcast.
  • \n
  • It is possible to have multiple instances of podcast player on single page.
  • \n
  • Self adjusting layout according to width of the podcast player.
  • \n
\n

Podcast player pro features

\n
    \n
  • Professionally showcase your podcast using our unified player, episode list and grid templates.
  • \n
  • Use powerful filter options to choose which episodes or seasons you want to display on your website.
  • \n
  • Make your entire podcast catalogue easily available using our ajax approximate search feature.
  • \n
  • Add an audio message within your podcast episode.
  • \n
  • Add audio mp3 to your WordPress posts and display as podcast episodes.
  • \n
  • Show or hide specific elements and customize color and fonts to personalize your podcast display
  • \n
\n

Setup Podcast Player Widget

\n

Display searchable podcast episodes list on any widget area of your website.

\n

Minimum Setup

\n
    \n
  1. After activating the plugin, visit Appearance > Widgets in admin dashboard.
  2. \n
  3. Look for ‘Podcast player’ widget in left ‘Available Widgets’ section.
  4. \n
  5. Drag the widget to any available sidebar/widget area.
  6. \n
  7. Enter feed url in the appropriate field.
  8. \n
  9. Click [Save] button.
  10. \n
\n

Advanced Setup

\n
    \n
  1. After activating the plugin, visit Appearance > Widgets in admin dashboard.
  2. \n
  3. Look for ‘Podcast player’ widget in left ‘Available Widgets’ section.
  4. \n
  5. Drag the widget to any available sidebar/widget area.
  6. \n
  7. Enter feed url in the appropriate field.
  8. \n
  9. Optionally, click on “Change podcast content” button to customize feed’s auto fetched details.
  10. \n
  11. Optionally, click on “Show/Hide player items” button to show or hide player elements.
  12. \n
  13. Optionally, click on “Podcast player styling” button to customize player’s accent color.
  14. \n
  15. Optionally, click on “Sort & Filter” button to sort or filter podcast episodes.
  16. \n
  17. Click [Save] button.
  18. \n
\n

Setup Podcast Player Block

\n

Display searchable podcast episodes list on any post or page. Make sure you have not disabled WordPress latest block editor.

\n

Setup

\n
    \n
  1. After activating the plugin, visit any post or page’s edit screen.
  2. \n
  3. In main content area, click on ‘+’ icon to add a new block.
  4. \n
  5. Search for ‘Podcast Player’ block.
  6. \n
  7. Enter feed url in the appropriate field. A preview of your podcast player will appear.
  8. \n
  9. Click on the podcast player preview.
  10. \n
  11. Select appropriate options from the right sidebar to customize the player.
  12. \n
  13. Save or Update the post.
  14. \n
\n

Setup Podcast Player using shortcode

\n

Minimum Setup

\n
[podcastplayer feed_url ='']\n
\n
    \n
  1. feed_url – Your podcast feed url.
  2. \n
\n

Advanced Setup

\n
[podcastplayer feed_url ='' number='' podcast_menu='' cover_image_url='' hide_cover='true' hide_description='true' hide_subscribe='true' hide_search='true' hide_loadmore='true' hide_download='true' accent_color='#65b84f']Short Description [/podcastplayer]\n
\n
    \n
  1. feed_url: Your podcast feed url.
  2. \n
  3. number: Number of podcasts episodes to be displayed at a time.
  4. \n
  5. podcast_menu: Any previously created WordPress menu’s name OR ID OR slug. (optional)
  6. \n
  7. cover_image_url: Podcast’s cover image url. The image must be from your WP media library. (optional)
  8. \n
  9. header_default: (false/true) Show player header items by default
  10. \n
  11. hide_header: Hide player header items
  12. \n
  13. hide_title: (false/true) Show / Hide podcast Title in header info section
  14. \n
  15. hide_cover: (false/true) Show / Hide podcast cover image
  16. \n
  17. hide_description: (false/true) Show / Hide podcast description
  18. \n
  19. hide_subscribe: (false/true) Show / Hide podcast subscribe button.
  20. \n
  21. hide_search: (false/true) Show / Hide podcast search field.
  22. \n
  23. hide_author: (false/true) Show / Hide author/podcaster’s name.
  24. \n
  25. hide_content: (false/true) Show / Hide podcast episode’s content.
  26. \n
  27. hide_loadmore: (false/true) Show / Hide podcast load more button.
  28. \n
  29. hide_download: (false/true) Show/ Hide podcast episode download link.
  30. \n
  31. hide_social: (false/true) Show/ Hide podcast episode social sharing links.
  32. \n
  33. accent_color: Podcast player’s accent color (Color hex-code to be entered).
  34. \n
  35. sortby: Sort podcast episodes (sort_date_desc/sort_date_asc/sort_title_desc/sort_title_asc)
  36. \n
  37. filterby: Filter by any string in episode’s title
  38. \n
  39. list_default: (false/true) Display Episodes list by default on small screen
  40. \n
  41. hide_featured: (false/true) Show / Hide podcast episode featured image
  42. \n
  43. apple_sub: Apple podcast subscription link
  44. \n
  45. google_sub: Google podcast subscription link
  46. \n
  47. Short Description: Podcast short text description. (optional)
  48. \n
\n","download_link":"https://downloads.wordpress.org/plugin/podcast-player.5.1.0.zip","tags":{"feed-to-audio":"feed to audio","podcast":"podcast","podcaster":"podcaster","podcasting":"podcasting","rss-feed":"rss feed"},"donate_link":"","icons":{"1x":"https://ps.w.org/podcast-player/assets/icon-256x256.png?rev=2025683","2x":"https://ps.w.org/podcast-player/assets/icon-256x256.png?rev=2025683"},"wporg":true},{"name":"WPSSO Schema JSON-LD Markup | Google Rich Results, Rich Snippets, and Structured Data","slug":"wpsso-schema-json-ld","version":"4.18.1","author":"JS Morisset","author_profile":"https://profiles.wordpress.org/jsmoriss","requires":"5.0","tested":"5.8","requires_php":"7.0","rating":90,"ratings":{"1":5,"2":2,"3":1,"4":1,"5":55},"num_ratings":64,"support_threads":5,"support_threads_resolved":4,"active_installs":4000,"downloaded":284054,"last_updated":"2021-09-06 3:23pm GMT","added":"2016-02-14","homepage":"https://wpsso.com/extend/plugins/wpsso-schema-json-ld/","short_description":"Google Rich Results for Articles, Carousels, Events, FAQ pages, How-Tos, Local SEO, Products, Recipes, Ratings, Reviews, and more.","description":"

Supports over 500 different Schema (aka Schema.org) types and sub-types:

\n

Google Rich Results with JSON-LD structured data for Articles, Carousels (aka Item Lists), Claim Reviews, Events, FAQ pages, How-Tos, Images, Local Business / Local SEO, Organizations, Products, Ratings, Recipes, Restaurants, Reviews, Video Objects, and much more.

\n

Reads your existing content, plugin data, and service API data:

\n

There’s no need to manually re-enter descriptions, titles, product information, and re-select images / videos like other SEO and Schema markup plugins.

\n

Provides comprehensive Schema JSON-LD markup for posts, pages, custom post types, terms (category, tags, etc.), custom taxonomies, user profile pages, search result pages, archive pages, and Accelerated Mobile Pages (AMP) pages – including image SEO, video SEO, local business, organization, publisher, person, author and co-authors, extensive e-Commerce product markup, product variations, product ratings, aggregate ratings, reviews, recipe information, event details, collection pages, profile pages, search pages, FAQ pages, item lists for Google’s Carousel Rich Results, and much more.

\n

Most complete Schema JSON-LD markup for WooCommerce products:

\n

Note that WooCommerce offers incomplete Schema markup for Google Rich Results by default. The WPSSO Core Premium plugin and this add-on provide a solution by offering complete product meta tags for Facebook / Pinterest and complete Schema product markup for Google Rich Results – including additional product images, product variations, product information (brand, color, condition, EAN, dimensions, GTIN-8/12/13/14, ISBN, material, MPN, size, SKU, volume, weight, etc), product reviews, product ratings, sale start / end dates, sale prices, pre-tax prices, VAT prices, shipping rates, shipping times, and much, much more.

\n

Fixes all Google Search Console and Schema Markup Validator (aka Google Structured Data Testing Tool) errors:

\n
    \n
  • A value for the headline field is required.
  • \n
  • A value for the image field is required.
  • \n
  • A value for the logo field is required.
  • \n
  • A value for the publisher field is required.
  • \n
  • The aggregateRating field is recommended.
  • \n
  • The brand field is recommended.
  • \n
  • The headline field is recommended.
  • \n
  • The image field is recommended.
  • \n
  • The mainEntityOfPage field is recommended.
  • \n
  • The review field is recommended.
  • \n
  • This Product is missing a global identifier (e.g. isbn, mpn or gtin8).
  • \n
  • No global identifier provided (e.g. gtin mpn isbn).
  • \n
  • Not a known valid target type for the itemReviewed property.
  • \n
  • And more…
  • \n
\n

Some Schema property values may require data from WPSSO Core Premium supported third-party plugins and service APIs.

\n

Google regularly updates and changes their Schema markup requirements – WPSSO JSON Premium customers can also open a Premium support ticket for timely assistance with any new Google testing tool errors.

\n

Users Love the WPSSO JSON Add-on

\n

★★★★★ – “Forget everything else this is the best schema plugin – Sincerely, we bought other plugins that we had to abandon due to the lack of important features, but with this [WPSSO JSON] we get all that we need – and our schema has more features than the competition!” – zuki305

\n

★★★★★ – “Tried three other plugins before this one – for our Woocommerce site, this was by far the best one. Thanks!” – EntoMarket

\n

★★★★★ – “Crazy good! This plugin is one of my favorites! JS aggressively develops and improves this suite of plugins, continuously improving and adding features – with great customer support to boot! Highly recommended to improve your SEO for all kinds of JSON schemas!” – mikegoubeaux

\n

★★★★★ – “This plugin is heaven sent. I know little about SSO and this has taken care of everything. The support makes this an even better plugin to have. Keep up the great work!” – kevanchetty

\n

WPSSO JSON Add-on Features

\n

Extends the features of the WPSSO Core plugin (required plugin).

\n

Provides accurate and comprehensive Schema JSON-LD markup for Google Rich Results (aka Rich Snippets) with Structured Data.

\n

Provides complete Schema ImageObject SEO markup with image information from the WordPress Media Library (name, alternateName, alternativeHeadline, caption, description, fileFormat, uploadDate, and more).

\n

Provides complete Schema VideoObject SEO markup with video information from WPSSO Core Premium service APIs (Facebook, Slideshare, Soundcloud, Vimeo, Wistia, YouTube) including the ’embedUrl’ and ‘contentUrl’ properties for Google.

\n

Provides Schema 1:1, 4:3, and 16:9 images for Google Rich Results (see the Google rich results search library for details).

\n

Provides Schema FAQPage and Question / Answer markup for the WPSSO FAQ Manager add-on.

\n

Includes Schema JSON-LD scripts from shortcodes and WordPress editor blocks in the Schema CreativeWork type and sub-types.

\n

Built-in support for AMP and AMP for WP plugins.

\n

Includes contributor markup for Co-Authors Plus authors and guest authors (WPSSO Core Premium plugin required).

\n

Supports additional custom product information and WooCommerce product attributes from the WPSSO Core Premium plugin:

\n
    \n
  • Product Availability
  • \n
  • Product Brand
  • \n
  • Product Color
  • \n
  • Product Condition
  • \n
  • Product Depth
  • \n
  • Product Fluid Volume
  • \n
  • Product GTIN-14
  • \n
  • Product GTIN-13 (EAN)
  • \n
  • Product GTIN-12 (UPC)
  • \n
  • Product GTIN-8
  • \n
  • Product GTIN
  • \n
  • Product ISBN
  • \n
  • Product Length
  • \n
  • Product Material
  • \n
  • Product MPN
  • \n
  • Product Price
  • \n
  • Product Size
  • \n
  • Product SKU
  • \n
  • Product Target Gender
  • \n
  • Product Type
  • \n
  • Product Weight
  • \n
  • Product Width
  • \n
\n

Provides Schema Product markup for Google price drop appearance in search results.

\n

Fixes common Google testing tool warnings like “aggregateRating field is recommended” and “review field is recommended”.

\n

Fixes Google testing tool warnings for supported WPSSO Core Premium e-commerce products, like “brand field is recommended”, “missing a global identifier”, etc.

\n

The WPSSO Schema JSON-LD Markup Standard add-on is designed to satisfy the requirements of most standard WordPress sites. If your content requires additional customization of some Schema properties for products, events, places / locations, recipes, etc., then you may want to get the WPSSO JSON Premium add-on for those additional features.

\n

[Premium] Includes additional customizable option values in the Document SSO metabox (shown based on the Schema Type selected):

\n
    \n
  • All Schema Types\n
      \n
    • Name (Title)
    • \n
    • Alternate Name
    • \n
    • Description
    • \n
    • Microdata Type URLs
    • \n
    • Same-As URLs
    • \n
    \n
  • \n
  • Creative Work Information\n
      \n
    • Is Part of URL
    • \n
    • Headline
    • \n
    • Full Text
    • \n
    • Keywords
    • \n
    • Language
    • \n
    • Family Friendly
    • \n
    • Copyright Year
    • \n
    • License URL
    • \n
    • Publisher (Org)
    • \n
    • Publisher (Person)
    • \n
    • Service Provider (Org)
    • \n
    • Service Provider (Person)
    • \n
    \n
  • \n
  • Event Information\n
      \n
    • Event Language
    • \n
    • Event Attendance
    • \n
    • Event Online URL
    • \n
    • Event Physical Venue
    • \n
    • Event Organizer (Org)
    • \n
    • Event Organizer (Person)
    • \n
    • Event Performer (Org)
    • \n
    • Event Performer (Person)
    • \n
    • Event Start (date, time, timezone)
    • \n
    • Event End (date, time, timezone)
    • \n
    • Event Offers Start (date, time, timezone)
    • \n
    • Event Offers End (date, time, timezone)
    • \n
    • Event Offers (name, price, currency, availability)
    • \n
    \n
  • \n
  • How-To\n
      \n
    • How-To Makes
    • \n
    • How-To Preparation Time
    • \n
    • How-To Total Time
    • \n
    • How-To Supplies
    • \n
    • How-To Tools
    • \n
    • How-To Steps (section name, section description, step name, direction text and image)
    • \n
    \n
  • \n
  • Job Posting Information\n
      \n
    • Job Title
    • \n
    • Hiring Organization
    • \n
    • Job Location
    • \n
    • Job Location Type
    • \n
    • Base Salary
    • \n
    • Employment Type
    • \n
    • Jpb Posting Expires
    • \n
    \n
  • \n
  • Movie Information\n
      \n
    • Cast Names
    • \n
    • Director Names
    • \n
    • Production Company
    • \n
    • Movie Runtime
    • \n
    \n
  • \n
  • Organization Information\n
      \n
    • Select an Organization
    • \n
    \n
  • \n
  • Person Information\n
      \n
    • Select a Person
    • \n
    \n
  • \n
  • Product Information (Additional)\n
      \n
    • Product Length (cm)
    • \n
    • Product Width (cm)
    • \n
    • Product Height (cm)
    • \n
    • Product Depth (cm)
    • \n
    • Product Fluid Volume (ml)
    • \n
    • Product GTIN-14
    • \n
    • Product GTIN-13 (EAN)
    • \n
    • Product GTIN-12 (UPC)
    • \n
    • Product GTIN-8
    • \n
    • Product GTIN
    • \n
    \n
  • \n
  • QA Page Information\n
      \n
    • QA Heading
    • \n
    \n
  • \n
  • Recipe Information\n
      \n
    • Recipe Cuisine
    • \n
    • Recipe Course
    • \n
    • Recipe Makes
    • \n
    • Cooking Method
    • \n
    • Preparation Time
    • \n
    • Cooking Time
    • \n
    • Total Time
    • \n
    • Recipe Ingredients
    • \n
    • Recipe Instructions
    • \n
    • Nutrition Information per Serving\n
        \n
      • Serving Size
      • \n
      • Calories
      • \n
      • Protein
      • \n
      • Fiber
      • \n
      • Carbohydrates
      • \n
      • Sugar
      • \n
      • Sodium
      • \n
      • Fat
      • \n
      • Saturated Fat
      • \n
      • Unsaturated Fat
      • \n
      • Trans Fat
      • \n
      • Cholesterol
      • \n
      \n
    • \n
    \n
  • \n
  • Review Information\n
      \n
    • Review Rating
    • \n
    • Rating Value Name
    • \n
    • Subject of the Review\n
        \n
      • Subject Webpage Type
      • \n
      • Subject Webpage URL
      • \n
      • Subject Same-As URL
      • \n
      • Subject Name
      • \n
      • Subject Description
      • \n
      • Subject Image ID or URL
      • \n
      • Claim Subject Information (for Claim Review)\n
          \n
        • Short Summary of Claim
        • \n
        • First Appearance URL
        • \n
        \n
      • \n
      • Creative Work Subject Information\n
          \n
        • C.W. Author Type
        • \n
        • C.W. Author Name
        • \n
        • C.W. Author URL
        • \n
        • C.W. Published Date
        • \n
        • C.W. Created Date
        • \n
        \n
      • \n
      • Book Subject Information\n
          \n
        • Book ISBN
        • \n
        \n
      • \n
      • Movie Subject Information\n
          \n
        • Movie Cast Names
        • \n
        • Movie Director Names
        • \n
        \n
      • \n
      • Product Subject Information\n
          \n
        • Product Brand
        • \n
        • Product Offers (name, price, currency, availability)
        • \n
        • Product SKU
        • \n
        • Product MPN
        • \n
        \n
      • \n
      • Software App Subject Information\n
          \n
        • Operating System
        • \n
        • Application Category
        • \n
        • Software App Offers (name, price, currency, availability)
        • \n
        \n
      • \n
      \n
    • \n
    \n
  • \n
  • Software Application Information\n
      \n
    • Operating System
    • \n
    • Application Category
    • \n
    \n
  • \n
\n

WPSSO Core Required

\n

WPSSO Schema JSON-LD Markup (WPSSO JSON) is an add-on for the WPSSO Core plugin.

\n","download_link":"https://downloads.wordpress.org/plugin/wpsso-schema-json-ld.4.18.1.zip","tags":{"rich-results":"rich results","rich-snippets":"rich snippets","schema-org":"schema.org","video-seo":"video seo","woocommerce":"woocommerce"},"donate_link":"","icons":{"1x":"https://ps.w.org/wpsso-schema-json-ld/assets/icon-128x128.png?rev=2480083","2x":"https://ps.w.org/wpsso-schema-json-ld/assets/icon-256x256.png?rev=2480083"},"wporg":true},{"name":"ShortPixel Image Optimizer","slug":"shortpixel-image-optimiser","version":"4.22.5","author":"ShortPixel","author_profile":"https://profiles.wordpress.org/shortpixel","requires":"4.2.0","tested":"5.8","requires_php":"5.6","rating":92,"ratings":{"1":53,"2":10,"3":8,"4":11,"5":544},"num_ratings":626,"support_threads":10,"support_threads_resolved":8,"active_installs":300000,"downloaded":6871154,"last_updated":"2021-08-31 5:54pm GMT","added":"2014-11-05","homepage":"https://shortpixel.com/","short_description":"Speed up your website & boost your SEO by compressing old & new images and PDFs. AVIF & WebP convert and optimize support.","description":"

A freemium, easy to use, comprehensive, stable and frequently updated image compression plugin supported by the friendly team that created it. 🙂

\n

Increase your website’s SEO ranking, number of visitors and ultimately your sales by optimising any image or PDF document on your website.
\nShortPixel is an easy to use, lightweight, install-and-forget-about-it image optimization plugin that can compress all your past images and PDF documents with a single click. New images are automatically resized/rescaled and optimized on the fly, in the background. It’s also compatible with any gallery, slider or ecommerce plugin.

\n

Ready for a quick DEMO? Test our plugin here.
\nOr you can create a staging copy of your site using WP Staging and test it there.

\n

Short Pixel uses minimal resources and works well with any shared, cloud, VPS or dedicated web hosting. It can optimize any image you have on your website even the images that aren’t listed in Media Library like those in galleries like NextGEN, Modula or added directly via FTP!

\n

Both lossy and lossless image compression are available for the most common image types (JPG, PNG, GIF, WebP and AVIF) plus PDF files.
\nWe also offer glossy JPEG compression which is a very high quality lossy optimization algorithm. Specially designed for photographers!
\nOptimized images mean better user experience, better PageSpeed Insights or GTmetrix results, better Google PageRank and more visitors.

\n

Make an instant image compression test of your site or compress some images to test our optimization algorithms.

\n

Why is ShortPixel the best choice when it comes to image optimization or PDF compression?

\n
    \n
  • popular plugin with over 300,000 active installations – according to WordPress
  • \n
  • compress JPG (and its variations JPEG, JPEG 2000, JPEG XR), PNG, GIF (still or animated) images and also PDF documents
  • \n
  • option to convert any JPEG, PNG or GIF (even animated ones!) to WebP and AVIF for more Google love. How to enable WebP?. What is AVIF and why is it good?.
  • \n
  • option to automatically convert PNG to JPG if that will result in smaller images. Ideal for large images in PNG format
  • \n
  • option to include the next generation images (WebP and AVIF) into the front-end pages by using the <picture> tag instead of <img>, independent from generating them through the plugin
  • \n
  • compatible with WP Retina 2x – all retina images are automatically compressed. How to benefit from Retina displays?
  • \n
  • optimize thumbnails as well as featured images. You can also select individual thumbnails to exclude from optimization
  • \n
  • ability to optimize any image on your site including images in NextGEN Gallery and any other image galleries or sliders
  • \n
  • option to scale images down, with 2 different options, which is very useful to automatically resize large images. This applies to the featured images and there is no need for additional plugins like Imsanity
  • \n
  • CMYK to RGB conversion
  • \n
  • skip already optimized images
  • \n
  • 24h stellar support (24/7) directly from developers.
  • \n
  • easily test lossy/glossy/lossless versions of the images with a single click in your Media Library
  • \n
  • great for photographers: keep or remove EXIF data from your images, compress photos with lossless option
  • \n
  • works well with both HTTPS and HTTP websites
  • \n
  • uses progressive JPEG for larger images in order to speed up the image display
  • \n
  • you can run ShortPixel plugin on multiple websites or on a multisite with a single API Key
  • \n
  • it is safe to test and use the plugin: all the original images are by default saved in a local backup that can be restored with a click, either one by one or in bulk
  • \n
  • ‘Bulk’ optimize all the existing images in Media Library or in any gallery with one click
  • \n
  • works great for eCommerce websites using WooCommerce or other plugins
  • \n
  • works great with NextGEN gallery, Foo Gallery and any other galleries and sliders
  • \n
  • compatible with WP Engine hosted websites and all the major hosting providers
  • \n
  • compatible with WPML and WPML Media plugins
  • \n
  • no file size limit
  • \n
  • integrates with Gravity Forms post_image field type optimizing the images upon upload
  • \n
  • compatible with watermarking plugins
  • \n
  • option to deactivate auto-optimizing images on upload
  • \n
  • no credits are used for the images that are optimised less that 5%
  • \n
  • direct integration with CloudFlare, either by using an API Key or a Token
  • \n
  • 30 days optimization report with all image details and overall statistics
  • \n
  • We are GDPR compliant! Read more.
  • \n
  • free optimization credits for non-profits, contact us for details
  • \n
\n

How much does it cost?
\nShortPixel comes with 100 free credits/month and additional credits can be bought for as little as $4.99 for 5,000 image credits.
\nCheck out our prices.

\n
\n

Testimonials:
\n ★★★★★ A Super Plugin works very well 62% reduction overall. robertvarns
\n ★★★★★ The secret sauce for a WordPress website. mark1mark
\n ★★★★★ A must have plugin, great support! ElColo13
\n ★★★★★ Excellent Plugin! Even Better Customer Service! scaliendo
\n ★★★★★ Great image compression, solid plugin, equally great support. matters1959
\n more testimonials

\n
\n\n

Help us spread the word by recommending ShortPixel to your friends and collect 100 lifetime monthly additional image credits for each referred active user. Make money by promoting a great plugin with our 30% commission affiliate program.

\n

Other plugins by ShortPixel

\n\n

Get in touch!

\n\n

Actions and Filters for Developers

\n

The ShortPixel Image Optimiser plugin calls the following actions and filters:

\n
do_action( 'shortpixel_image_optimised', $post_id );\n
\n

upon successful optimization;

\n
do_action(\"shortpixel_before_restore_image\", $post_id);\n
\n

before restoring an image from backup;

\n
do_action(\"shortpixel_after_restore_image\", $post_id);\n
\n

after succesful restore;

\n
apply_filters(\"shortpixel_backup_folder\", $backup_folder, $main_file_path, $sizes);\n
\n

just before returning the ShortPixel backup folder, usually /wp-content/uploads/ShortpixelBackups. The $sizes are the sizes array from metadata;

\n
apply_filters('shortpixel_image_exists', file_exists($path), $path, $post_id);\n
\n

post ID is not always set, only if it’s an image from Media Library;

\n
apply_filters('shortpixel_image_urls', $URLs, $post_id);\n
\n

filters the URLs that will be sent to optimisation, $URLs is a plain array;

\n
apply_filters('shortpixel/db/chunk_size', $chunk);\n
\n

the $chunk is the value ShortPixel chooses to use as number of selected records in one query (based on total table size), some hosts work better with a different value;

\n
apply_filters('shortpixel/backup/paths', $PATHs, $mainPath);\n
\n

filters the array of paths of the images sent for backup and can be used to exclude certain paths/images/thumbs from being backed up, based on the image path. $mainPath is the path of the main image, while $PATHs is an array with all files to be backed up (including thumbnails);

\n
apply_filters('shortpixel/settings/image_sizes', $sizes);\n
\n

filters the array ($sizes) of image sizes which can be excluded from processing (displayed in the plugin Advanced settings).

\n

In order to define custom thumbnails to be picked up by the optimization you have two options, both comma separated defines:

\n
define('SHORTPIXEL_CUSTOM_THUMB_SUFFIXES', '_tl,_tr');\n
\n

will handle custom thumbnails like image-100x100_tl.jpg;

\n
define('SHORTPIXEL_CUSTOM_THUMB_INFIXES', '-uae');\n
\n

will handle custom thumbnails like image-uae-100×100.jpg;

\n
define('SHORTPIXEL_USE_DOUBLE_WEBP_EXTENSION', true);\n
\n

will tell the plugin to create double extensions for the WebP image counterparts, for example image.jpg.webp for image.jpg;

\n
define(\"SHORTPIXEL_NOFLOCK\", true);\n
\n

don’t use flock queue, only activate this when you have flock() denied errors on your installation;

\n
define(\"SHORTPIXEL_EXPERIMENTAL_SECURICACHE\", true);\n
\n

adds timestamps to URLS, to prevent hitting the cache. Useful for persistent caches.

\n

Hide the Cloudflare settings by defining these constants in wp-config.php:

\n
define('SHORTPIXEL_CFTOKEN', 'the Cloudflare API token that has Purge Cache right');\ndefine('SHORTPIXEL_CFZONE', 'The Zone ID from the domain settings in Cloudflare');\n
\n

Hide the WSO banner in the settings by defining this constant in wp-config.php:

\n
define('SHORTPIXEL_NO_BANNER', true);\n
\n

Alternatively, you can use this filter in your theme’s functions.php file:

\n
add_filter('shortpixel/settings/no_banner', true);\n
\n","download_link":"https://downloads.wordpress.org/plugin/shortpixel-image-optimiser.4.22.5.zip","tags":{"compressor":"compressor","convert-webp":"convert webp","image-optimization":"image optimization","optimize-images":"optimize images","resize":"resize"},"donate_link":"","icons":{"1x":"https://ps.w.org/shortpixel-image-optimiser/assets/icon-128x128.png?rev=1038819","2x":"https://ps.w.org/shortpixel-image-optimiser/assets/icon-256x256.png?rev=1038819"},"wporg":true},{"name":"Theme Kit for Twenty Twenty-One & Twenty Twenty (Customization, Gutenberg Blocks, Templates) – Twentig","slug":"twentig","version":"1.3.5","author":"Twentig","author_profile":"https://profiles.wordpress.org/twentig","requires":"5.5","tested":"5.8","requires_php":"5.6","rating":100,"ratings":{"1":0,"2":0,"3":0,"4":2,"5":106},"num_ratings":108,"support_threads":33,"support_threads_resolved":31,"active_installs":10000,"downloaded":139374,"last_updated":"2021-08-10 11:02am GMT","added":"2019-05-29","homepage":"https://twentig.com","short_description":"Supercharge your WordPress theme (Twenty Twenty-One & Twenty Twenty) with customization options, enhanced Gutenberg blocks,…","description":"

The easy way to build a beautiful website.

\n

Twentig helps you customize the default WordPress theme (Twenty Twenty-One and Twenty Twenty) the way you want with Google Fonts, colors, custom layouts, and many more options.

\n

With enhanced Gutenberg blocks, pre-designed block templates, and starter websites, you’ve got everything you need to build stunning pages that look great on any device — no coding or design skills needed.

\n
\n

“Twentig is a plugin that essentially gives superpowers to the default theme.” — Justin Tadlock, WP Tavern

\n
\n

Customize the most popular WordPress theme. Your way.

\n

Twentig offers powerful features to customize the Twenty Twenty-One and Twenty Twenty themes — making it easier than ever to create your own professional website.

\n

Advanced theme customization. From post grid to sidebar to sticky header to footer layout, our plugin provides endless ways to enhance your WordPress theme. Change the look and feel of your website by customizing the fonts (Google Fonts), colors, global styles, 404 page, and more.

\n

Custom page templates. Control the look of your entire page with our page templates. Easily remove the page title, header, footer, or set a transparent header. Now you can use Gutenberg blocks to create a custom hero, landing page, coming soon page, and more.

\n

Tailored design. Twentig brings design improvements to the default WordPress theme. Our additional block settings and pre-designed block templates are specially built for it — so it’s simple to make beautiful pages with Gutenberg blocks.

\n

Start with a pre-built website.

\n

Instead of starting from scratch, you can quickly import one of Twentig’s starter websites crafted by award-winning designers.

\n

The simple way to import starter websites. Choose from a variety of starter websites and seamlessly load them in a few seconds in the Customizer. Preview and customize your theme any way you like before publishing it to your live site.

\n

Flexible import. Twentig lets you import full websites (Customizer settings, menus, widgets, and pages built with Gutenberg blocks). You can also only import what you need, be it the styling or the pages, on a fresh install or an existing website.

\n

Check out the starter websites to see the power and flexibility of Twentig.

\n

Do more with Gutenberg blocks.

\n

Twentig enhances the existing Gutenberg blocks — taking the WordPress block editor to a new level of design and creativity.

\n

Block customization made easy. We’ve added the right amount of features to the Gutenberg core blocks. So you can easily customize your blocks to fit your needs with just a few clicks.

\n

Powerful Gutenberg block features. Twentig provides alternative styles, advanced block settings, margin controls, and CSS classes. From columns style to group shape divider to typography settings, you have the best tools to customize the Gutenberg blocks and build gorgeous pages.

\n

Build your pages with ready-to-use templates.

\n

Twentig brings hundreds of pre-designed block patterns and page templates — making it easier and faster than ever to create stunning pages.

\n

Flexible block templates. Choose from a variety of versatile block patterns and page templates that you can mix and match to fit your project. Our block template library is designed to enable a wide range of uses and endless design possibilities.

\n

Professional design. Our templates are responsive and give your pages a professional look right from the start — no coding or design skills needed.

\n

Twentig features list

\n

Check out the screenshots to see how Twentig can transform your theme and the Gutenberg blocks.

\n

ADDITIONAL THEME OPTIONS

\n

Header

\n
    \n
  • Header layouts
  • \n
  • Sticky header
  • \n
  • Header width
  • \n
  • Header decoration
  • \n
  • Additional elements: search bar, social icons, button
  • \n
  • Logo width
  • \n
  • Custom logo for transparent header
  • \n
  • Menu link style
  • \n
  • Option to display the burger menu on tablet
  • \n
\n

Footer

\n
    \n
  • Footer layouts
  • \n
  • Footer widgets layout
  • \n
  • Footer width
  • \n
  • Custom copyright and remove “Powered by WordPress”
  • \n
  • Social icons
  • \n
\n

Site Layout

\n
    \n
  • Text width
  • \n
  • Wide width (Twenty Twenty-One theme)
  • \n
  • Site width to create a boxed layout site (Twenty Twenty-One theme)
  • \n
\n

Blog Posts Page

\n
    \n
  • Option to display the page title (Twenty Twenty-One theme)
  • \n
  • Blog layouts: stack, post grid, post grid card
  • \n
  • Blog sidebar (Twenty Twenty-One theme)
  • \n
  • Number of columns for post grid layouts
  • \n
  • Featured image options
  • \n
  • Blog content options
  • \n
  • Blog meta options
  • \n
  • Pagination style (Twenty Twenty-One theme)
  • \n
\n

Single Blog Post

\n
    \n
  • Featured image and post title layouts
  • \n
  • Blog sidebar (Twenty Twenty-One theme)
  • \n
  • Option to display the manual excerpt below the title
  • \n
  • Single post meta options
  • \n
  • Post navigation layout (Twenty Twenty theme)
  • \n
  • Hide comments section
  • \n
\n

Typography & Colors

\n
    \n
  • Google Fonts options (curated collection and custom Google Fonts)
  • \n
  • Google Fonts pairings and Google Fonts presets
  • \n
  • Font settings
  • \n
  • Color options
  • \n
\n

Pages

\n
    \n
  • Custom page templates: remove the page title, header, and footer, or set a transparent header
  • \n
  • Featured image and page title layouts
  • \n
\n

Custom 404 Page

\n
    \n
  • Option to assign any page as the 404 page
  • \n
\n

Additional Settings

\n
    \n
  • Minimal style for links (Twenty Twenty-One theme)
  • \n
  • Button style
  • \n
  • Separator style
  • \n
  • Social icons style (Twenty Twenty theme)
  • \n
\n

ADDITIONAL GUTENBERG BLOCK SETTINGS

\n
    \n
  • Gutenberg core blocks: top margin and bottom margin
  • \n
  • Group: shadow, border, shape divider, full height
  • \n
  • Columns: gutter, responsive layout, columns style (card, border), text alignment, stretched link
  • \n
  • Media & Text: styles (shadow, overlap), responsive layout, reverse stack order, stretched link, full height
  • \n
  • Cover: styles (shadow, inner border), stretched link, hover effect
  • \n
  • Heading: typography options, decoration
  • \n
  • Paragraph: wide width, typography options
  • \n
  • List: styles (dash, checkmark, arrow, border, no bullet, inline), typography options, spacing
  • \n
  • Image: styles (rounded, shadow, frame, border), image filter
  • \n
  • Gallery: stack variation, styles (rounded, frame), fixed width columns, image aspect ratio, gutter, responsive layout, caption size, border, image filter
  • \n
  • YouTube, Vimeo, SoundCloud, and Video blocks: style (frame)
  • \n
  • Latest Posts: styles (card, border), image aspect ratio, heading size, stretched link, text alignment
  • \n
  • Social Icons: hover effect
  • \n
  • Quote: additional styles
  • \n
  • Pullquote: additional styles
  • \n
  • Table: styles (border, inner border), vertical alignment
  • \n
  • Separator: style (short line), responsive visibility
  • \n
  • Spacer: responsive visibility
  • \n
\n

GUTENBERG TEMPLATE LIBRARY

\n

Hundreds of Gutenberg block patterns grouped by following categories:

\n
    \n
  • Columns
  • \n
  • Text Columns
  • \n
  • Text and Image
  • \n
  • Text
  • \n
  • Hero
  • \n
  • Cover
  • \n
  • Call to Action
  • \n
  • List
  • \n
  • Numbers, Stats
  • \n
  • Gallery
  • \n
  • Video, Audio
  • \n
  • Latest Posts
  • \n
  • Contact
  • \n
  • Team
  • \n
  • Testimonials
  • \n
  • Logos, Clients
  • \n
  • Pricing
  • \n
  • FAQ
  • \n
  • Events, Schedule
  • \n
\n

Dozens of pre-designed page templates grouped by following categories:

\n
    \n
  • Homepage
  • \n
  • About
  • \n
  • Services
  • \n
  • Contact
  • \n
  • Single Page
  • \n
\n

Get more

\n\n

Enjoying Twentig?

\n\n","download_link":"https://downloads.wordpress.org/plugin/twentig.1.3.5.zip","tags":{"gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","templates":"templates","theme":"theme","twenty-twenty-one":"twenty-twenty-one"},"donate_link":"https://www.paypal.com/donate?hosted_button_id=JTBTPQAFEA94E","icons":{"1x":"https://ps.w.org/twentig/assets/icon.svg?rev=2569439","2x":"https://ps.w.org/twentig/assets/icon-256x256.png?rev=2569439","svg":"https://ps.w.org/twentig/assets/icon.svg?rev=2569439"},"wporg":true},{"name":"Custom Post Type UI","slug":"custom-post-type-ui","version":"1.9.2","author":"WebDevStudios","author_profile":"https://profiles.wordpress.org/williamsba1","requires":"5.5","tested":"5.7.2","requires_php":"5.6","rating":94,"ratings":{"1":12,"2":3,"3":6,"4":9,"5":203},"num_ratings":233,"support_threads":63,"support_threads_resolved":28,"active_installs":1000000,"downloaded":8724946,"last_updated":"2021-06-17 2:40am GMT","added":"2010-02-26","homepage":"https://github.com/WebDevStudios/custom-post-type-ui/","short_description":"Admin UI for creating custom post types and custom taxonomies for WordPress","description":"

Custom Post Type UI provides an easy to use interface for registering and managing custom post types and taxonomies for your website.

\n

While CPTUI helps solve the problem of creating custom post types, displaying the data gleaned from them can be a whole new challenge. That’s why we created Custom Post Type UI Extended. View our Layouts page to see some examples that are available with Custom Post Type UI Extended.

\n

Official development of Custom Post Type UI is on GitHub, with official stable releases published on WordPress.org. The GitHub repo can be found at https://github.com/WebDevStudios/custom-post-type-ui. Please use the Support tab for potential bugs, issues, or enhancement ideas.

\n

Pluginize was launched in 2016 by WebDevStudios to promote, support, and house all of their WordPress products. Pluginize is not only creating new products for WordPress all the time, like CPTUI Extended, but also provides ongoing support and development for WordPress community favorites like CMB2 and more.

\n","download_link":"https://downloads.wordpress.org/plugin/custom-post-type-ui.zip","tags":{"cms":"cms","cpt":"cpt","custom-post-types":"custom post types","post":"post","types":"types"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=3084056","icons":{"1x":"https://ps.w.org/custom-post-type-ui/assets/icon-128x128.png?rev=2549362","2x":"https://ps.w.org/custom-post-type-ui/assets/icon-256x256.png?rev=2549362"},"wporg":true},{"name":"Flex Posts – Widget and Gutenberg Block","slug":"flex-posts","version":"1.8.1","author":"Tajam","author_profile":"https://profiles.wordpress.org/tajam","requires":"5.2","tested":"5.8","requires_php":false,"rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":17},"num_ratings":17,"support_threads":8,"support_threads_resolved":5,"active_installs":3000,"downloaded":24580,"last_updated":"2021-07-29 10:41am GMT","added":"2018-05-10","homepage":"https://tajam.id/flex-posts/","short_description":"A widget to display posts with thumbnails in various layouts. Fits nicely in any widget…","description":"

Flex Posts is a widget to display posts in various different layouts. It is useful for a news site where you need to display a lot of posts in a page.

\n

The widget is responsive so you can place it in any widget area. The widget content will adapt based on the width of its container. In a narrow area like standard sidebar, posts will be displayed vertically, but in a wider area, posts will be displayed in 2 or 3 columns depends on the container’s width.

\n

Widget Settings

\n
    \n
  • Title: Set the widget title. Leave it empty to hide the title section.
  • \n
  • Title URL: Set the title link url. Leave it empty to disable link in the title.
  • \n
  • Layout: Select a widget layout, from layout 1 to 4.
  • \n
  • Post type: Select the post type. Options include: Post, Page, custom post types if available, and any.
  • \n
  • Category: Select a category for the posts, or choose All Categories to disable this filter.
  • \n
  • Tag(s): Set a post tag (using the tag slug). You can also use comma separated value for multiple tags. Prepending a tag with a hyphen will exclude posts matching that tag. Eg, featured, -video will show posts tagged with featured but not video.
  • \n
  • Order by: Set the order in which the posts will be displayed. Options include: Newest, Oldest, Most Commented, Alphabetical, Random, Modified Date.
  • \n
  • Number of posts to show: Set the number of posts displayed.
  • \n
  • Number of posts to skip: Set the number of posts to displace or pass over.
  • \n
  • Show image on: Select in which posts the image will be displayed. Options include: All posts, First post only, or none.
  • \n
  • Image size: Select image size from registered image sizes.
  • \n
  • Show post title: Choose to show or hide the post title.
  • \n
  • Show categories: Choose to show or hide the categories.
  • \n
  • Show author: Choose to show or hide the author.
  • \n
  • Show date: Choose to show or hide the date.
  • \n
  • Show comments number: Choose to show or hide the comments number.
  • \n
  • Show excerpt: Choose to show or hide the excerpt
  • \n
  • Excerpt length: Set the number of words for the excerpt.
  • \n
  • Show read more link: Choose to show or hide the Read More link.
  • \n
  • Read more text: Set the text for the read more link. You can leave it empty to use the default text Read More.
  • \n
  • Show pagination: Choose to show or hide the pagination links.
  • \n
  • Additional class(es): Set a custom class for the widget container. You can use spaces to separate multiple classes.
  • \n
\n

Gutenberg Block

\n

Since version 1.1.0, Flex Posts also includes a gutenberg block. You can add the widget directly into the post/page content with the WP 5.0 block editor.

\n

Demo

\n

Please visit the live demo here: Flex Posts Demo

\n

Requirements

\n

This plugin has been tested and works with at least PHP 5.3 installed in your environment. But we strongly recommend you to use the latest PHP version, as using older versions may expose you to security vulnerabilities.

\n","download_link":"https://downloads.wordpress.org/plugin/flex-posts.zip","tags":{"category-posts":"category posts","grid":"grid","magazine":"magazine","news":"news","responsive":"responsive"},"donate_link":"https://tajam.id/","icons":{"1x":"https://ps.w.org/flex-posts/assets/icon-128x128.png?rev=1871802"},"wporg":true},{"name":"YARPP – Yet Another Related Posts Plugin","slug":"yet-another-related-posts-plugin","version":"5.27.4","author":"YARPP","author_profile":"https://profiles.wordpress.org/jeffparker","requires":"3.7","tested":"5.8","requires_php":"5.3","rating":94,"ratings":{"1":33,"2":2,"3":14,"4":45,"5":627},"num_ratings":721,"support_threads":26,"support_threads_resolved":12,"active_installs":100000,"downloaded":6487625,"last_updated":"2021-08-25 5:56pm GMT","added":"2008-01-02","homepage":"https://yarpp.com/","short_description":"The best WordPress plugin for displaying related posts. Simple and flexible, with a powerful proven algorithm and inbuilt caching.","description":"

Related Posts Plugin for WordPress

\n

Yet Another Related Posts Plugin (YARPP) is a professionally maintained, highly customizable, performant and feature rich plugin that displays pages, posts, and custom post types related to the current entry. YARPP introduces your visitors to other relevant content on your site — boosting visitor engagement, time on site and SEO. Related Posts can increase your pageviews up to 10%. Simply install, activate and watch your sessions and pageviews increase.

\n

Key Features

\n
    \n
  • An advanced and versatile algorithm: Using a customizable algorithm considering post titles, content, tags, categories, and custom taxonomies, YARPP finds related content from across your site
  • \n
  • Caching: Inbuilt cache makes subsequent queries super efficient and fast
  • \n
  • Custom Templates and Styles: Use a pre-built list or thumbnail template, or use the YARPP custom templating system for 100% control of how results are styles and displayed
  • \n
  • Flexible with a full range of placement options, including:\n\n
  • \n
  • Works with all languages, including those with full-width (double-byte) characters and those that don’t use spaces between words
  • \n
  • Custom post type and taxonomy support
  • \n
  • WordPress Multisite support
  • \n
  • bbPress forums support
  • \n
  • WooCommerce support
  • \n
  • Professionally maintained and supported with regular updates
  • \n
\n

YARPP Algorithm Explained

\n

\n

Contribute: Translate YARPP

\n

YARPP is available for translation directly on WordPress.org. Please check out the official Translator Handbook.

\n

Wide Support

\n

YARPP is the most popular and the highest rated Related Posts Plugin for WordPress. With your support, this plugin always strives to be the best WordPress plugin for Content Discovery and Related Posts.

\n

✔ Over 10 years of development
\n✔ Over 6 million downloads
\n✔ Translated into more than a dozen languages
\n✔ Professionally maintained and actively supported with regular updates
\n✔ Works with all languages

\n

YARPP works best with PHP 5.3 or greater, MySQL 5.6 or greater OR MariaDB 10.1 or greater, and WordPress 3.7 or greater. See the FAQ for answers to common questions.

\n","download_link":"https://downloads.wordpress.org/plugin/yet-another-related-posts-plugin.5.27.4.zip","tags":{"contextual-related-posts":"contextual related posts","posts":"posts","related-posts":"related posts","seo":"seo","similar-posts":"similar posts"},"donate_link":"https://yarpp.com","icons":{"1x":"https://ps.w.org/yet-another-related-posts-plugin/assets/icon-128x128.png?rev=2549977","2x":"https://ps.w.org/yet-another-related-posts-plugin/assets/icon-256x256.png?rev=2549977"},"wporg":true},{"name":"Superb WordPress Table (SEO Optimized Tables With Schema)","slug":"superb-tables","version":"1.0.8","author":"SuPlugins","author_profile":"https://profiles.wordpress.org/suplugins","requires":"3.0.1","tested":"5.7.2","requires_php":"5.2.4","rating":80,"ratings":{"1":0,"2":1,"3":0,"4":0,"5":2},"num_ratings":3,"support_threads":1,"support_threads_resolved":1,"active_installs":4000,"downloaded":34022,"last_updated":"2021-05-26 8:49pm GMT","added":"2019-03-05","homepage":"https://superbthemes.com/plugins/superb-tables/","short_description":"Responsive & SEO Optimized tables. Get your Google Featured Snippets. Different table designs, table shortcodes…","description":"

Responsive & SEO Optimized tables. Get your Google Featured Snippets. Different table designs, table shortcodes & lightweight code.

\n

Click here to view the demo!

\n

Features

\n
    \n
  • Table Shortcodes
  • \n
  • Multiple Color Schemes
  • \n
  • Use Themes Own Table Design
  • \n
  • Schema Markup (Micro Data)
  • \n
  • Create Unlimited Tables
  • \n
  • Create Unlimited Rows
  • \n
  • Create unlimited Columns
  • \n
  • SEO-friendly Tables With Schema markup
  • \n
  • Purple Color Scheme
  • \n
  • Black/White Color Scheme
  • \n
  • Swap around on columns & rows with drag n’ drop
  • \n
  • Delete Tables & Remove Them From Your Database
  • \n
  • Gives you a better chance to get Google Featured Snippets
  • \n
  • Friendly User Support)
  • \n
  • GDPR Compliant
  • \n
  • W3C Valid Code
  • \n
  • WYSIWYG Functionality Editor
  • \n
\n

Configuring the plugin

\n

Once you’ve installed the plugin, check the left sidebar, and you will notice the Superb Table section. Click on it, and you can now create your first table. Just click on the Add New Table button.

\n

Feel free to add as many columns and rows as you want—inserting rows and columns is extremely easy.

\n

You have a few options to make your table stand apart. First, choose one of the three color schemes: standard, purple, or black. Second, choose your table design: default or custom. Block, left, and inline-block are the floating modes for your table. Finally, enable or disable the full width of the table.

\n

Once you finish your table, name it and save it. All you have to do now is to copy the shortcode and paste wherever you want, you can for example embed it in the Gutenberg Shortcode Block! (It works in the classic WordPress editor too)

\n

Consider purchasing our premium version for $11 to unlock more features!

\n

Why use a HTML table

\n

Displaying data within a comparison table is beneficial for not only readers but also content creators. A table does a better job than long paragraphs of text, underlined phrases, and bulleted lists. It shows a lot of information side by side in a concise format. Bloggers and content creators should create tables and insert the data. There’s no need to search for breathtaking expressions, cool descriptions, or digestible lists of items. It’s just pure data, and everyone is happy with this situation. You can read our full guide on How to Add a Table to Your WordPress Website with Superb Tables.

\n

Responsive Tables

\n

We developed Superb Tables mobile friendly by taking responsiveness into account, and as a result, you can make a WordPress table responsive by using our plugin. The tables are fully responsive regardless of the number of rows and columns. The plugin works on all mobile devices and tablets (iPhone, Android etc.). The plugin works with AMP.

\n

SEO Friendly WordPress Tables With Schema Markup

\n

“Schema markup“ and “featured snippets“ are two interconnected terms that are being used by more and more bloggers, SEO practitioners, and developers. Have you noticed that Google now provides complex answers in the form of lists, tables, paragraphs, or videos directly on the results page? Those are featured snippets.

\n

Moz claims that 23% of all search results include a featured snippet—a descriptive box displayed on the search results page providing information for your query. It may include paragraphs, lists, videos, or tables. You have to consider featured snippets when choosing a table plugin—can it help Google generate a featured snippet from the data within your table?

\n

We developed Superb Tables with featured snippets in mind, and you can use the plugin worry-free. We used schema markup, which is the code that helps search engine bots generate snippets from your content, including tables. It’s a great way for affiliate websites and blogs to promote their content.

\n

You must use WordPress tables with schema markup to get featured snippets on search engines, and Superb Tables is a reliable solution in this respect.

\n

Add Tables everywhere & use them for Any Purpose

\n

You can insert the SEO optimised tables with microdata everywhere through the shortcode. For example in a popup, widgets, Gutenberg blocks, email newsletter sent from your WordPress website. You can also insert it on any post or page, even category pages, blog feed, search page and your 404 page! The plugin is made for affiliates marketers and affiliate websites, having a good SERP rank in Google and Bing is critical. When you’re looking to improve your ranking then all of your plugins must be SEO optimized, otherwise it’s gonna be hard to create monetization through ads programs such as AdSense and Amazon Associates Program.

\n

We know that business is important for any modern blog or affiliate marketing website that’s looking to make a revenue from it. Remember to use HTTPS (SSL) on your website, a CDN and lightweight stats tracking tools such as Google Analytics to better your SEO as well.

\n

Guide to creating your Superb Tables

\n
    \n
  1. In the wordpress admin panel, go to the sidebar and click ‘Superb Tables’.
  2. \n
  3. Click the green ‘Add new table’ in the top left corner
  4. \n
  5. Fill in your table data, click ‘Save’
  6. \n
  7. Click ‘Superb Tables’ in the left sidebar and copy paste the ‘Table Shortcode’
  8. \n
  9. Insert the Table Shortcode (For example [spbtbl_sc id=1] ) in a post, page, widget or in HTML.
  10. \n
\n

You’re done!

\n

Resources & Inspiration

\n
    \n
  • Auto-Expand: https://codepen.io/vsync/pen/frudD
  • \n
  • Data Table: https://codepen.io/alassetter/pen/cyrfB
  • \n
  • Table DnD: https://github.com/isocra/TableDnD/
  • \n
  • Table icon: https://www.iconfinder.com/icons/1608863/table_icon#size=256
  • \n
  • Custom confirm: https://codepen.io/Ana_Champion/pen/JRbZEL
  • \n
  • Table design inspiration: https://codepen.io/lukepeters/pen/bfFur
  • \n
  • Table design inspiration: https://codepen.io/alassetter/pen/cyrfB
  • \n
  • Table design inspiration: https://uicookies.com/wp-content/uploads/2018/05/table-responsive-v2-1000×750.jpg
  • \n
  • Table design inspiration: https://uicookies.com/wp-content/uploads/2018/05/table-responsive-v1.jpg
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/superb-tables.1.0.8.zip","tags":{"content-tables":"content tables","responsive-tables":"responsive tables","table":"table","tables":"tables"},"donate_link":"","icons":{"1x":"https://ps.w.org/superb-tables/assets/icon-256x256.png?rev=2044672","2x":"https://ps.w.org/superb-tables/assets/icon-256x256.png?rev=2044672"},"wporg":true},{"name":"Floating Button","slug":"floating-button","version":"4.3","author":"Wow-Company","author_profile":"https://profiles.wordpress.org/wpcalc","requires":"3.2","tested":"5.8","requires_php":"5.3","rating":80,"ratings":{"1":1,"2":1,"3":0,"4":0,"5":5},"num_ratings":7,"support_threads":1,"support_threads_resolved":0,"active_installs":2000,"downloaded":32557,"last_updated":"2021-07-21 5:47am GMT","added":"2018-09-08","homepage":"https://wordpress.org/plugins/floating-button/","short_description":"Easily create a custom sticky floating buttons. The Floating Button will be the effective solution…","description":"

The Floating Button is the free WordPress plugin for creating the original sticky floating actions buttons. It allows you to install on the site floating buttons with unique thematic icons. The extension serves for placing both traditional navigation bar and additional block with useful information for user.

\n

The Floating Button plugin will be the effective solution for increasing the recognition of your web resource. Its connection will bring originality and novelty to the used theme of the site. The extension helps to configure user-friendly navigation, place useful information or contact panel.

\n

Main features

\n
    \n
  • 2 submenu;
  • \n
  • more than 1500+ FontAwesome icons;
  • \n
  • any links insertion;
  • \n
  • using the tooltips to provide more information;
  • \n
  • round buttons shape;
  • \n
  • LogIn link;
  • \n
  • LogOut link;
  • \n
  • Lost password link
  • \n
\n

Floating Button can be used for:

\n
    \n
  • site navigation;
  • \n
  • additional menu;
  • \n
  • social panel;
  • \n
  • user menu;
  • \n
  • Skype menu and others;
  • \n
  • And more…
  • \n
\n

Pro version

\n

Connect the Pro-version of the plugin to gain access to more features:

\n

Preview of Pro version

\n
    \n
  • create an unlimited amount of buttons;
  • \n
  • use up to 4 floating button positions;
  • \n
  • change the form of the menu display: Circle, Rounded square, Ellipse, Square;
  • \n
  • set the color of the main button and submenu items;
  • \n
  • accompany the change in navigation behavior with the highlight when hovering the mouse cursor;
  • \n
  • use the built-in user menu, social panel and print function;
  • \n
  • set the display according to the user role and status;
  • \n
  • change the menu output depending on the language of the page;
  • \n
  • add restrictions for screens with large or small resolution;
  • \n
  • use the categories on the site, exceptions and ID to place the menu on individual pages;
  • \n
  • insert the shortcode of the panel in the specified location;
  • \n
  • And more…
  • \n
\n

Buy Pro version

\n

Use with other plugins to maximize your results

\n\n

Support

\n

Search for answers and ask your questions at support center

\n","download_link":"https://downloads.wordpress.org/plugin/floating-button.4.3.zip","tags":{"circle-menu":"circle menu","float-menu":"float menu","floating-button":"floating button","floating-menu":"floating menu","sticky-button":"sticky button"},"donate_link":"https://wow-estore.com/item/floating-button-pro/","icons":{"1x":"https://ps.w.org/floating-button/assets/icon-128x128.png?rev=2533016","2x":"https://ps.w.org/floating-button/assets/icon-256x256.png?rev=2533016"},"wporg":true},{"name":"Breadcrumb NavXT","slug":"breadcrumb-navxt","version":"6.6.0","author":"John Havlik","author_profile":"https://profiles.wordpress.org/mtekk","requires":"4.9","tested":"5.7.2","requires_php":"5.5","rating":94,"ratings":{"1":5,"2":2,"3":4,"4":7,"5":104},"num_ratings":122,"support_threads":14,"support_threads_resolved":0,"active_installs":900000,"downloaded":10114154,"last_updated":"2021-04-01 2:13am GMT","added":"2007-12-01","homepage":"http://mtekk.us/code/breadcrumb-navxt/","short_description":"Breadcrumb NavXT, the successor to the popular WordPress plugin Breadcrumb Navigation XT, was written from the ground up to be better than its ancesto …","description":"

Breadcrumb NavXT, the successor to the popular WordPress plugin Breadcrumb Navigation XT, was written from the ground up to be better than its ancestor. This plugin generates locational breadcrumb trails for your WordPress powered blog or website. These breadcrumb trails are highly customizable to suit the needs of just about any website running WordPress. The Administrative interface makes setting options easy, while a direct class access is available for theme developers and more adventurous users.

\n

PHP Requirements

\n

Breadcrumb NavXT 5.2 and newer require PHP5.3
\nBreadcrumb NavXT 5.1.1 and older require PHP5.2

\n

Features (non-exhaustive)

\n
    \n
  • RDFa format Schema.org BreadcrumbList compatible breadcrumb generation.
  • \n
  • Extensive breadcrumb customization control via a settings page with appropriate default values for most use cases.
  • \n
  • Network admin settings page for managing breadcrumb settings for all subsites with configurable global priority.
  • \n
  • Built in WordPress Widget.
  • \n
  • Extensible via OOP and provided actions and filters.
  • \n
  • WPML compatible (enhanced compatibility with WPML extensions plugin).
  • \n
  • Polylang compatible (enhanced compatibility with Polylang extensions plugin).
  • \n
  • bbPress compatible (enhanced compatibility with bbPress extensions plugin).
  • \n
  • BuddyPress compatible (enhanced compatibility with BuddyPress extensions plugin).
  • \n
\n

Translations

\n

Breadcrumb NavXT now supports WordPress.org language packs. Want to translate Breadcrumb NavXT? Visit Breadcrumb NavXT’s WordPress.org translation project.

\n","download_link":"https://downloads.wordpress.org/plugin/breadcrumb-navxt.6.6.0.zip","tags":{"breadcrumb":"breadcrumb","breadcrumbs":"breadcrumbs","menu":"menu","navigation":"navigation","trail":"trail"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=FD5XEU783BR8U&lc=US&item_name=Breadcrumb%20NavXT%20Donation¤cy_code=USD&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted","icons":{"1x":"https://ps.w.org/breadcrumb-navxt/assets/icon.svg?rev=1927103","2x":"https://ps.w.org/breadcrumb-navxt/assets/icon-256x256.png?rev=2410525","svg":"https://ps.w.org/breadcrumb-navxt/assets/icon.svg?rev=1927103"},"wporg":true},{"name":"WP Recipe Maker","slug":"wp-recipe-maker","version":"7.5.1","author":"Bootstrapped Ventures","author_profile":"https://profiles.wordpress.org/brechtvds","requires":"4.4","tested":"5.8","requires_php":"5.4","rating":100,"ratings":{"1":1,"2":0,"3":1,"4":4,"5":201},"num_ratings":207,"support_threads":26,"support_threads_resolved":21,"active_installs":50000,"downloaded":1532145,"last_updated":"2021-08-31 12:27pm GMT","added":"2016-09-07","homepage":"http://bootstrapped.ventures/wp-recipe-maker/","short_description":"The easy and user-friendly recipe plugin for everyone. Automatic JSON-LD metadata for food AND how-to recipes will improve your SEO!","description":"

WP Recipe Maker is the easy recipe plugin that everyone can use. An easy workflow allows you to add recipes to any post or page with automatic JSON-LD metadata for your recipes. This metadata will improve your SEO and get you more visitors!

\n

\n

Would you like to see the plugin in action before installing it? We have a WP Recipe Maker demo website showcasing all of the features!

\n
\n

Get the most out of this plugin!
\n Join the WP Recipe Maker Email Course and we’ll help you get started and learn all the tips and trick for using WPRM.

\n
\n

Features

\n

An overview of WP Recipe Maker features:

\n
    \n
  • Compatible with both the Classic Editor and new Gutenberg editor
  • \n
  • Includes an Elementor block and shortcode can be used in other page builders
  • \n
  • Easy workflow to add recipes to any post or page
  • \n
  • Uses schema.org/Recipe JSON-LD metadata optimised for Google Recipe search
  • \n
  • Uses schema.org/How-to JSON-LD metadata optimised for non-food recipes and instructions
  • \n
  • Supports both regular and Guided Recipes for Google metadata
  • \n
  • Google AMP compatible
  • \n
  • Integrates recipe metadata with Yoast SEO schema graph
  • \n
  • Option to disable metadata per recipe if you want to publish non-food or DIY recipes
  • \n
  • Compatible with Pinterest Rich Pins and a setting to easily opt out
  • \n
  • Outputs ItemList metadata for Recipe Roundup posts
  • \n
  • Associate ingredients with instructions to have them show up exactly where needed
  • \n
  • Keyboard accessible and AMP compatible ratings for comments
  • \n
  • Interactive print recipe page with room for ads and optional credit to your website
  • \n
  • Fallback recipe shows up when the plugin is disabled
  • \n
  • Include a recipe video in the template and metadata
  • \n
  • Add photos or videos to any step of the recipe
  • \n
  • Print recipe and jump to recipe shortcodes
  • \n
  • This plugin is fully responsive, your recipes will look good on any device
  • \n
  • Easily change the look and feel to fit your website in the Template Editor
  • \n
  • Structure your ingredients and instructions in groups (e.g. icing and cake batter)
  • \n
  • Full text search for your recipes
  • \n
  • Access your recipes through the WordPress REST API
  • \n
  • Built-in SEO check for your recipe metadata
  • \n
  • Compatible with RTL languages
  • \n
  • Import your recipes from other plugins (see below)
  • \n
\n

WP Recipe Maker Premium

\n

Looking for some more advanced functionality? We also have the WP Recipe Maker Premium add-on available with the following features:

\n
    \n
  • Use ingredient links for linking to products or other recipes
  • \n
  • Adjustable servings make it easy for your visitors
  • \n
  • Display all nutrition data in a nutrition label
  • \n
  • User Ratings allow visitors to vote without commenting
  • \n
  • Add a mobile-friendly kitchen timer to your recipes
  • \n
  • More Premium templates for a unique recipe template
  • \n
  • Create custom recipe taxonomies like price level, difficulty, …
  • \n
  • Use checkboxes for your ingredients and instructions
  • \n
\n

Even more add-ons can add the following functionality:

\n
    \n
  • Integration with a Nutrition API for automatic nutrition facts
  • \n
  • Unit Conversion to reach an international audience with a different unit system
  • \n
  • Have your users send in recipes through the Recipe Submission form
  • \n
  • Give your visitors the power of Recipe Collections for favourites, meal planning and more
  • \n
\n

Import Options

\n

Currently using another recipe plugin? No problem! You can easily migrate all your existing recipes to WP Recipe Maker if you’re using any of the following plugins:

\n
    \n
  • Tasty Recipes
  • \n
  • Create by Mediavine
  • \n
  • EasyRecipe
  • \n
  • WP Ultimate Recipe
  • \n
  • Recipe Card Blocks by WPZOOM
  • \n
  • Meal Planner Pro
  • \n
  • BigOven
  • \n
  • ZipList and Zip Recipes
  • \n
  • Yummly
  • \n
  • Yumprint Recipe Card
  • \n
  • FoodiePress
  • \n
  • Cooked
  • \n
  • Cookbook
  • \n
  • Simple Recipe Pro
  • \n
  • Purr Recipe Plugin
  • \n
  • Recipes by Simmer
  • \n
  • WordPress.com shortcode
  • \n
  • JSON-LD HTML Script
  • \n
  • Multi Rating (ratings only)
  • \n
  • (Need anything else? Just ask!)
  • \n
\n

This plugin is in active development. Feel free to contact us with any feature requests or ideas.

\n","download_link":"https://downloads.wordpress.org/plugin/wp-recipe-maker.zip","tags":{"cooking":"cooking","food":"food","ingredients":"ingredients","recipe":"Recipe","recipes":"recipes"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QG7KZMGFU325Y","icons":{"1x":"https://ps.w.org/wp-recipe-maker/assets/icon-128x128.png?rev=1491788","2x":"https://ps.w.org/wp-recipe-maker/assets/icon-256x256.png?rev=1491788"},"wporg":true},{"name":"Slim SEO – Fast & Automated WordPress SEO Plugin","slug":"slim-seo","version":"3.10.1","author":"eLightUp","author_profile":"https://profiles.wordpress.org/rilwis","requires":"4.5","tested":"5.8","requires_php":"5.6","rating":92,"ratings":{"1":1,"2":3,"3":0,"4":0,"5":26},"num_ratings":30,"support_threads":17,"support_threads_resolved":13,"active_installs":10000,"downloaded":170263,"last_updated":"2021-07-22 1:33am GMT","added":"2018-12-31","homepage":"https://wpslimseo.com","short_description":"A full-featured SEO plugin for WordPress that's lightweight, blazing fast with minimum configuration. No bloats,…","description":"

A Fast & Automated SEO Plugin For WordPress

\n

Currently there are many SEO plugins for WordPress in the market. But these plugins often have too many options and are very complicated for ordinary users. Access to their configuration section, you will easily get lost in a maze of explanations and options that you sometimes don’t understand. Besides, there are ads!

\n

So how can an ordinary user use an SEO plugin?

\n

SEO should be an integrated part of WordPress, where users don’t need or need very little effort to configure for SEO. The main reason is that not everyone understands the terms of SEO and how to configure them optimally.

\n

So, we made Slim SEO.

\n

Slim SEO is a full-featured SEO plugin, that’s done right! It provides a complete SEO solution for WordPress where the configuration has been done automatically. Users do not need to care about their complex and semantic options.

\n

So what does Slim SEO do?

\n

Slim SEO Features

\n

Slim SEO helps you do the following jobs automatically:

\n

1. Meta Tags

\n

The following meta tags are auto-generated and optimized for the best SEO scores.

\n\n

2. XML Sitemap

\n

Slim SEO automatically generates XML sitemap (at domain.com/sitemap.xml) to submit to search engines. With XML sitemaps, your website are indexed fast and completely.

\n

3. Breadcrumbs

\n

The plugin allows you to output a breadcrumb trail on your website easily. It automatically fetches the information from the current post and output a hierarchy for you. You can also style the breadcrumbs to match your theme style.

\n

4. Schema (Structured Data)

\n

Schema is a way that describes structured data for search engines. Based on the data provided, search engines can show the content in the search results page in a more appealing way.

\n

Slim SEO automatically adds the some structured data to the website via JSON-LD which makes your website more SEO-friendly. Not only schemas are created by the plugin, there are also meaningful connections between them. For example, an article (single post) is the main entity of the current webpage. Slim SEO does that all without any configuration.

\n

5. Auto Redirection

\n
    \n
  • Auto redirect attachment page to the attachment file URL.
  • \n
  • Auto redirect author page to the homepage if the website has only one author or the author doesn’t have any posts.
  • \n
\n

6. Open Source

\n

Slim SEO has different contributors which help make Slim SEO a quality product. Join us on Github!

\n

Who should use Slim SEO?

\n

Everyone can use Slim SEO!

\n

However, Slim SEO is perfectly suitable for users who prefer simplicity or do not like the complicated options that other SEO plugins provide. It’s also a good choice for users with little SEO knowledge and just want to use SEO plugins to automate their jobs.

\n

If you like this plugin, you might also like our other products: Meta Box and GretaThemes.

\n","download_link":"https://downloads.wordpress.org/plugin/slim-seo.3.10.1.zip","tags":{"google":"google","schema":"schema","search-engine-optimization":"search engine optimization","seo":"seo","sitemap":"sitemap"},"donate_link":"https://wpslimseo.com/pro/","icons":{"1x":"https://ps.w.org/slim-seo/assets/icon.svg?rev=2005049","svg":"https://ps.w.org/slim-seo/assets/icon.svg?rev=2005049"},"wporg":true},{"name":"Schema & Structured Data for WP & AMP","slug":"schema-and-structured-data-for-wp","version":"1.9.83.1","author":"Magazine3","author_profile":"https://profiles.wordpress.org/magazine3","requires":"3.0","tested":"5.8","requires_php":false,"rating":94,"ratings":{"1":13,"2":1,"3":2,"4":10,"5":183},"num_ratings":209,"support_threads":29,"support_threads_resolved":18,"active_installs":80000,"downloaded":2328633,"last_updated":"2021-08-31 7:07am GMT","added":"2018-08-06","homepage":"","short_description":"Schema & Structured Data for WP & AMP adds Google Rich Snippets markup according to Schema.org guidelines to structure your site for SEO.","description":"

Schema & Structured Data for WP & AMP adds Google Rich Snippets markup according to Schema.org guidelines to structure your site for SEO. (AMP Compatible)

\n

Features

\n
    \n
  • Schema Types: Currently, We have more than 35 schema types such as Blog Posting, News article, Local Business, Web page, Article, Recipe, Product, and Video Object view all. We are going to add all the schema types in the future. You can request the one you want and we will add it for you!
  • \n
  • Conditional Display Fields: Meaning you include or exclude any posts, pages, post types, taxonomies and more!
  • \n
  • Knowlegde Base Support: Recognize the content based on the organization or a person via data type option.
  • \n
  • Full AMP Compatiblity: Supports the AMP for WP and AMP by Automattic plugins.
  • \n
  • Advanced Settings: Play with output of schema markup using these options (Defragment, Add in Footer, Pretty Print, MicroData CleanUp etc.)
  • \n
  • Migration: Import the data from other schema plugins such as (SEO Pressor, WP SEO Schema, Schema Plugin etc )
  • \n
  • Compatibility: Generate the schema markup for the plugins. We have provided schema support for them. Few of them are – kk Star Ratings, WP-PostRatings, bbPress
  • \n
  • Google Review: Display your business google reviews and its schema markup on your website.
  • \n
  • [Premium] Reviews ( Fetch reviews from 75+ platforms ).
  • \n
  • [Premium] Priority Support. Get it We get more than 100 technical queries a day but the Priority support plan will help you skip that and get the help from a dedicated team.
  • \n
  • Review Module: Create your own review rating box with pros and cons and its schema markup
  • \n
  • Schema Type Blocks in Gutenberg: Create your own content with the blocks and json schema markup will be added automatically
  • \n
  • Unlimited Custom Post Types: You can control to represent the Rich Snippets data in the google search console using unlimited custom post types.
  • \n
  • Easy to use with Minimal Settings
  • \n
  • Archive Page Listing Support
  • \n
  • JSON-LD Format
  • \n
  • Easy to use Setup Wizard
  • \n
  • Breadcrumbs Listing Support
  • \n
  • Comments Post comments Support
  • \n
  • Constant Development & New Features: We’ll be releasing the constant updates along with the more handy features as soon as we get the feedback from the users.
  • \n
\n

Supported Schema Types

\n
    \n
  • Apartment
  • \n
  • House
  • \n
  • SingleFamilyResidence
  • \n
  • Article
  • \n
  • Blogposting
  • \n
  • Book
  • \n
  • Course
  • \n
  • DiscussionForumPosting,
  • \n
  • DataFeed
  • \n
  • HowTo
  • \n
  • NewsArticle
  • \n
  • QAPage
  • \n
  • Review
  • \n
  • Recipe
  • \n
  • TVSeries
  • \n
  • SoftwareApplication
  • \n
  • MobileApplication
  • \n
  • SpecialAnnouncement (Related to Coronavirus)
  • \n
  • TechArticle
  • \n
  • WebPage
  • \n
  • Event
  • \n
  • VideoGame
  • \n
  • JobPosting
  • \n
  • Service
  • \n
  • Trip
  • \n
  • AudioObject
  • \n
  • VideoObject
  • \n
  • MedicalCondition
  • \n
  • MusicPlaylist
  • \n
  • MusicAlbum
  • \n
  • LocalBusiness with all the sub categories
  • \n
  • Product
  • \n
  • TouristAttraction
  • \n
  • TouristDestination
  • \n
  • LandmarksOrHistoricalBuildings
  • \n
  • HinduTemple
  • \n
  • Church
  • \n
  • Mosque
  • \n
  • Person
  • \n
  • View All
  • \n
\n

Extensions

\n

Some useful extensions to extend Schema & Structured Data for WP & AMP features, check Woocommerce Compatibility For Schema, Cooked Compatibility For Schema and We are going to add more.

\n

Support

\n

We try our best to provide support on WordPress.org forums. However, We have a special team support where you can ask us questions and get help. Delivering a good user experience means a lot to us and so we try our best to reply each and every question that gets asked.

\n

Bug Reports

\n

Bug reports for Schema & Structured Data for WP & AMP are welcomed on GitHub. Please note GitHub is not a support forum, and issues that aren’t properly qualified as bugs will be closed.

\n

Credits

\n
    \n
  • Select2 used https://github.com/select2/select2 – License URI: https://github.com/select2/select2/blob/develop/LICENSE.md,
  • \n
  • Merlin WP used https://github.com/richtabor/MerlinWP – License URI: https://github.com/richtabor/MerlinWP/blob/master/LICENSE,
  • \n
  • jquery-timepicker used https://github.com/jonthornton/jquery-timepicker
  • \n
  • Rate Yo! used https://github.com/prrashi/rateYo – License URI: https://github.com/prrashi/rateYo/commit/f3812fe96c38b08627d209795176053550fb1427
  • \n
  • Aqua Resizer used http://aquagraphite.com – License URI: WTFPL – http://sam.zoy.org/wtfpl/
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/schema-and-structured-data-for-wp.1.9.83.1.zip","tags":{"google-snippets":"google snippets","rich-snippets":"rich snippets","schema":"schema","schema-org":"schema.org","structured-data":"structured data"},"donate_link":"","icons":{"1x":"https://ps.w.org/schema-and-structured-data-for-wp/assets/icon-128x128.png?rev=1922284","2x":"https://ps.w.org/schema-and-structured-data-for-wp/assets/icon-256x256.png?rev=1922284"},"wporg":true},{"name":"GenerateBlocks","slug":"generateblocks","version":"1.3.5","author":"Tom Usborne","author_profile":"https://profiles.wordpress.org/edge22","requires":"5.4","tested":"5.8","requires_php":"5.6","rating":98,"ratings":{"1":0,"2":0,"3":2,"4":1,"5":72},"num_ratings":75,"support_threads":29,"support_threads_resolved":14,"active_installs":50000,"downloaded":239683,"last_updated":"2021-07-19 6:12pm GMT","added":"2020-05-19","homepage":"https://generateblocks.com","short_description":"A small collection of lightweight WordPress blocks that can accomplish nearly anything.","description":"

\n

\n

Add incredible versatility to your editor without bloating it with tons of one-dimensional Gutenberg blocks. With GenerateBlocks, you can learn a handful of blocks deeply and use them to build anything.

\n

GenerateBlocks works hand-in-hand with GeneratePress, but is built to work with any theme.

\n

Looking for more features? Check out GenerateBlocks Pro.

\n

Container

\n

Organize your content into rows and sections. The Container block is the foundation of your content, allowing you to design unique sections for your content.

\n

Grid

\n

Create advanced layouts with flexible grids. The Grid block gives you the ability to create any kind of layout you can imagine.

\n

Headline

\n

Craft text-rich content with advanced typography. Everything from headings to paragraphs – take full control of your text.

\n

Buttons

\n

Drive conversions with beautiful buttons.

\n

Performance

\n

We take performance seriously. Minimal CSS is generated only for the blocks you need, and our HTML structure is as simple as possible while allowing for maximum flexibility.

\n

Coding standards

\n

Built to the highest coding standards for security, stability and future compatibility.

\n

Fully responsive

\n

Every block comes with tablet and mobile controls, giving you total control of your responsive design.

\n

Documentation

\n

Check out our documentation for more information on the individual blocks and how to use them.

\n","download_link":"https://downloads.wordpress.org/plugin/generateblocks.1.3.5.zip","tags":{"blocks":"blocks","container":"container","grid":"grid","gutenberg":"gutenberg","headline":"headline"},"donate_link":"https://generateblocks.com","icons":{"1x":"https://ps.w.org/generateblocks/assets/icon-128x128.png?rev=2336822","2x":"https://ps.w.org/generateblocks/assets/icon-256x256.png?rev=2336822"},"wporg":true},{"name":"Blackhole for Bad Bots","slug":"blackhole-bad-bots","version":"3.2","author":"Jeff Starr","author_profile":"https://profiles.wordpress.org/specialk","requires":"4.1","tested":"5.8","requires_php":"5.6.20","rating":98,"ratings":{"1":2,"2":0,"3":3,"4":2,"5":108},"num_ratings":115,"support_threads":3,"support_threads_resolved":3,"active_installs":30000,"downloaded":306082,"last_updated":"2021-07-19 8:41pm GMT","added":"2016-02-18","homepage":"https://perishablepress.com/blackhole-bad-bots/","short_description":"Blackhole is a WordPress security plugin that detects and traps bad bots in a virtual black hole, where they are denied access to your entire site.","description":"
\n

Add your own virtual black hole trap for bad bots.

\n
\n

Bye bye bad bots..

\n

Bad bots are the worst. They do all sorts of nasty stuff and waste server resources. The Blackhole plugin helps to stop bad bots and save precious resources for legit visitors.

\n

How does it work?

\n

First the plugin adds a hidden trigger link to the footer of your pages. You then add a line to your robots.txt file that forbids all bots from following the hidden link. Bots that then ignore or disobey your robots rules will crawl the link and fall into the trap. Once trapped, bad bots are denied further access to your WordPress site.

\n

I call it the “one-strike” rule: bots have one chance to obey your site’s robots.txt rule. Failure to comply results in immediate banishment. The best part is that the Blackhole only affects bad bots: human users never see the hidden link, and good bots obey the robots rules in the first place. Win-win! 🙂

\n

Using a caching plugin? Check out the Installation notes for important info.

\n

Features

\n
    \n
  • Easy to set up
  • \n
  • Squeaky clean code
  • \n
  • Focused and modular
  • \n
  • Lightweight, fast and flexible
  • \n
  • Built with the WordPress API
  • \n
  • Works with other security plugins
  • \n
  • Easy to reset the list of bad bots
  • \n
  • Easy to delete any bot from the list
  • \n
  • Regularly updated and “future proof”
  • \n
  • Blackhole link includes “nofollow” attribute
  • \n
  • Plugin options configurable via settings screen
  • \n
  • Works silently behind the scenes to protect your site
  • \n
  • Whitelists all major search engines to never block
  • \n
  • Focused on flexibility, performance, and security
  • \n
  • Email alerts with WHOIS lookup for blocked bots
  • \n
  • Complete inline documentation via the Help tab
  • \n
  • Provides setting to whitelist any IP addresses
  • \n
  • Customize the message displayed to bad bots 😉
  • \n
  • One-click restore the plugin default options
  • \n
  • Does NOT use or require any .htaccess rules
  • \n
\n

Blackhole for Bad Bots protects your site against bad bots, spammers, scrapers, scanners, and other automated threats.

\n

Not using WordPress? Check out the standalone PHP version of Blackhole!

\n

Check out Blackhole Pro and level up with advanced features!

\n

Whitelist

\n

By default, this plugin does NOT block any of the major search engines (user agents):

\n
    \n
  • AOL.com
  • \n
  • Baidu
  • \n
  • Bingbot/MSN
  • \n
  • DuckDuckGo
  • \n
  • Googlebot
  • \n
  • Teoma
  • \n
  • Yahoo!
  • \n
  • Yandex
  • \n
\n

These search engines (and all of their myriad variations) are whitelisted via user agent. So are a bunch of other “useful” bots. They always are allowed full access to your site, even if they disobey your robots.txt rules. This list can be customized in the plugin settings. For a complete list of whitelisted bots, visit the Help tab in the plugin settings (under “Whitelist Settings”).

\n

Privacy

\n

User Data: This plugin automatically blocks bad bots. When bad bots fall into the trap, their IP address, user agent, and other request data are stored in the WP database. No other user data is collected by this plugin. At any time, the administrator may delete all saved data via the plugin settings.

\n

Services: This plugin does not connect to any third-party locations or services.

\n

Cookies: This plugin does not set any cookies.

\n

Header Image Courtesy NASA/JPL-Caltech.

\n

Support development of this plugin

\n

I develop and maintain this free plugin with love for the WordPress community. To show support, you can make a donation or purchase one of my books:

\n\n

And/or purchase one of my premium WordPress plugins:

\n\n

Links, tweets and likes also appreciated. Thanks! 🙂

\n","download_link":"https://downloads.wordpress.org/plugin/blackhole-bad-bots.3.2.zip","tags":{"anti-spam":"anti-spam","bad-bots":"bad bots","blackhole":"blackhole","honeypot":"honeypot","security":"security"},"donate_link":"https://monzillamedia.com/donate.html","icons":{"1x":"https://ps.w.org/blackhole-bad-bots/assets/icon-128x128.png?rev=1471215","2x":"https://ps.w.org/blackhole-bad-bots/assets/icon-256x256.png?rev=1471215"},"wporg":true},{"name":"Page View Count","slug":"page-views-count","version":"2.4.12","author":"a3rev Software","author_profile":"https://profiles.wordpress.org/a3rev","requires":"5.0","tested":"5.8","requires_php":false,"rating":78,"ratings":{"1":8,"2":5,"3":2,"4":3,"5":31},"num_ratings":49,"support_threads":2,"support_threads_resolved":0,"active_installs":20000,"downloaded":404002,"last_updated":"2021-07-19 10:48am GMT","added":"2012-12-21","homepage":"","short_description":"Places an icon, all time views count and views today count at the bottom of…","description":"

A beautifully simple to set up plugin that gives site visitors and site owners the ability to quickly and easily see how many people have visited that page or post.

\n

FEATURES

\n
    \n
  • On the front end it adds an icon and page views count to the bottom or top of pages and posts on your WordPress website.
  • \n
  • Switch ON | OFF hide Page Views Count for all Posts, Pages and all custom posts types including WooCommerce custom post types.
  • \n
  • Set the Position of the counter to show at the top of the page or post or at the bottom
  • \n
  • Set alignment of the counter Left, Right or Centre
  • \n
  • Set the colour and size of the counter icon
  • \n
  • Option to use load by Ajax to prevent the count from being cached by caching plugins
  • \n
  • Option to Manually set / edit total views and views today from Page View Count meta box on any post or page editor
  • \n
  • Add Page Views counter via the PVC Gutenberg block
  • \n
  • Add Page Views counter via shortcode
  • \n
  • Add Page Views counter via widget
  • \n
  • Developers can add the Page Views Counter via php tag
  • \n
  • All options and settings are point click – absolutely no coding required
  • \n
\n

COMPATIBILTY

\n

Compatible with WordPress 5.3+ and backwards to WP 4.9.0. Compatible with Classic Editor plugin with 5.0+ (Gutenberg Deactivated)

\n

GUTENBERG BLOCK

\n

Using the Gutenberg Editor. Use the Page View Count Block to add the counter to any page or post content. Block search for ‘Page Views’ or selecting the block from the a3rev Blocks menu.

\n

Adding the Page Views block to your content automatically deactivates the Global Page View counter on the post or page.

\n

ELEMENTOR TEMPLATES

\n

Fully compatible with Elementor templates. Add counter via Shortcode or widget to any template.

\n

DEVELOPERS

\n

On the plugins dashboard in the + Page Views Count Function options box you will find the Page Views Count functions and notes on how to use them.

\n
    \n
  • Use to manually add Page views count to any content or object in the theme.
  • \n
  • Use to add page View Count to any content that is not create using WordPress custom post / taxonomy type.
  • \n
  • Use to create a custom position of the Page Views Count
  • \n
  • Functions support echo and return parameters when getting visitor stats on any variable.
  • \n
\n

TROUBLESHOOTING

\n
    \n
  • The number 1 support request we get about the plugin is that it double or triple counts page or post loads. Yes it does and if you see that it is a Red Flag that you have a misconfiguration or bug in your theme or a plugin. Page Views Count does exactly that – counts each time the page or post is loading in the browser – if its counting twice it is because the browser is double loading the page. That is a bad thing and you or your developer needs to fix that.
  • \n
\n

CONTRIBUTE

\n

When you download Page Views Count, you join our community. Regardless of if you are a WordPress beginner or experienced developer if you’?re interested in contributing to Page Views Count development head over to the Page Views Count GitHub Repository to find out how you can contribute.
\nWant to add a new language to Page Views Count? Great! You can contribute via translate.wordpress.org

\n

Usage

\n
    \n
  1. \n

    Install and activate the plugin

    \n
  2. \n
  3. \n

    Go to WordPress Settings menu > Page View Count Menu

    \n
  4. \n
  5. \n

    Activate Page Views Count and use the options box settings to make the desired configuration

    \n
  6. \n
  7. \n

    Be sure to clear any caching and browser cache to see your Page Views Count

    \n
  8. \n
\n","download_link":"https://downloads.wordpress.org/plugin/page-views-count.2.4.12.zip","tags":{"gutenberg":"gutenberg","page-view-count":"page view count","post-view-count":"post view count","post-views":"post views","wordpress-page-view":"wordpress page view"},"donate_link":"","icons":{"1x":"https://ps.w.org/page-views-count/assets/icon.svg?rev=986301","2x":"https://ps.w.org/page-views-count/assets/icon-256x256.png?rev=986301","svg":"https://ps.w.org/page-views-count/assets/icon.svg?rev=986301"},"wporg":true},{"name":"Newspack Listings","slug":"newspack-listings","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://github.com/Automattic/newspack-listings/releases","short_description":"

Create reusable content as listings and add them to lists wherever core blocks can be used

\n","description":"\n\n\n

Create reusable content as listings and add them to lists wherever core blocks can be used

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2021/02/listings2-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2021/02/listings2-372x209.jpg","svg":""},"wporg":false},{"name":"Newspack Newsletters","slug":"newspack-newsletters","version":"1.31.1","author":"Automattic","author_profile":"https://profiles.wordpress.org/automattic","requires":"5.3","tested":"5.8.0","requires_php":"5.6","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":1,"support_threads_resolved":1,"active_installs":500,"downloaded":2877,"last_updated":"2021-08-10 8:45pm GMT","added":"2021-02-15","homepage":"https://newspack.pub","short_description":"Create email newsletters with the Gutenberg editor and distribute them with your Mailchimp or Constant…","description":"

Create email newsletters with the Gutenberg editor and send them via Mailchimp or Constant Contact, all without leaving WP Admin! Newspack Newsletters lets you build eye-catching newsletters using the WordPress editing tools you’re already familiar with, and lets you save drafts, create reusable layouts, send to your existing mailing list, and also publish them to your website.

\n

Use and create newsletter layouts

\n

Newspack Newsletters comes with four default layouts to help you start building newsletters quickly. You can use an existing layout, or start fresh with a blank page. You can also create and save your own layouts, or alter the ones that come bundled with the plugin and save the settings, and use them for future campaigns.

\n

Use Gutenberg blocks and settings

\n

Newspack Newsletters supports most core Gutenberg blocks and configurations, letting you use blocks like Group, Button, Columns, and more, to create dynamic layouts. The plugin will warn you when a block will not display as expected in an email.

\n

Customize your newsletter’s appearance

\n

You can customize your newsletters further by changing the header and body fonts, or picking a background color.

\n

Newspack Blocks

\n

Newspack Newsletters comes bundled with the Newspack Post Inserter block. This block lets you insert excerpts from live posts on your site, and, once inserted, will turn those posts into static content using the Header and Paragraph blocks, linking back to your site.

\n

Need to target a post title to your newsletter audience? Not a problem! You can edit these blocks, and add others, to make sure they’ speak to your readers.

\n

Add ads!

\n

Monetize your newsletters by including advertising. The Newspack Newsletters plugin lets you create ads, which are stored as a custom post type. Ads are automatically inserted into your newsletters, and can also be toggled off on a newsletter-by-newsletter basis.

\n

Send with ease

\n

Newspack Newsletters connects to your Mailchimp or Constant Contact accounts to send emails using the mailing lists you’ve collected there, all without leaving the WordPress Admin.

\n

Before sending your campaign, you can send test emails to one or more email addresses at a time from the newsletter editor, to make sure everything is pixel perfect before sharing with the world.

\n

About Newspack

\n

The Newspack Newletters plugin is part of Newspack, a suite of tools to help small to mid-sized news organizations publish and generate revenue with WordPress. Newspack is a collaborative project by WordPress.com and the Google News Initiative. You can learn more about Newspack by visiting our website.

\n

Credits

\n

The beach photograph in the screenshot is by Life of Pix, licensed CC0.

\n","download_link":"https://downloads.wordpress.org/plugin/newspack-newsletters.zip","tags":{"constant-contact":"constant contact","mailchimp":"mailchimp","newsletters":"newsletters","newspack":"Newspack","wordpress-com":"WordPress.com"},"donate_link":"","icons":{"1x":"https://ps.w.org/newspack-newsletters/assets/icon.svg?rev=2475195","2x":"https://ps.w.org/newspack-newsletters/assets/icon-256x256.png?rev=2475195","svg":"https://ps.w.org/newspack-newsletters/assets/icon.svg?rev=2475195"},"wporg":true},{"name":"Web Stories","slug":"web-stories","version":"1.10.1","author":"Google","author_profile":"https://profiles.wordpress.org/google","requires":"5.5","tested":"5.8","requires_php":"7.0","rating":84,"ratings":{"1":5,"2":2,"3":2,"4":4,"5":31},"num_ratings":44,"support_threads":112,"support_threads_resolved":84,"active_installs":20000,"downloaded":324339,"last_updated":"2021-08-25 7:02pm GMT","added":"2020-09-22","homepage":"https://wp.stories.google/","short_description":"Web Stories are a visual storytelling format for the open web which immerses your readers…","description":"

Web Stories are a free, open-web, visual storytelling format for the web, enabling you to easily create visual narratives with engaging animations and tappable interactions, and immerse your readers in great and fast-loading full-screen experiences.

\n

Benefits of Web Stories

\n

The Web Stories format puts features and capabilities at your fingertips to engage with your audience via the power of storytelling on the open web. Specifically, you can:

\n
    \n
  • Create beautiful and engaging content easily: Web Stories make the production of stories as easy as possible from a technical perspective.
  • \n
  • Enjoy creative flexibility for editorial freedom and branding: The Web Stories format comes with preset but flexible layout templates, standardized UI controls, and components for sharing and adding follow-on content.
  • \n
  • Share and link your stories on the open web: Web Stories are part of the open web and can be shared and embedded across sites and apps without being confined to a single ecosystem.
  • \n
  • Track and measure your stories: Supports analytics and bookend capabilities for viral sharing and monetization.
  • \n
  • Capture the attention of your readers by offering fast loading times to your stories: Web Stories are lightning fast so that your audience stays engaged and entertained.
  • \n
  • Engage with your readers via immersive storytelling: Web Stories are a new and modern way to reach existing readers.
  • \n
  • Monetize effectively the beautiful and engaging stories you create: Web Stories enable monetization capability for publishers using affiliate links. For advertisers, Stories is a way to reach a unique audience within a new storytelling experience.
  • \n
\n

Web Stories Editor

\n

The Web Stories editor for WordPress brings together a robust set of story creation capabilities in a user-friendly, WYSIWYG creation tool. Some of the key features you can leverage out of the box are:

\n
    \n
  • A visually rich and intuitive dashboard, allowing you to easily navigate the story creation process
  • \n
  • Beautiful and expressive page templates to you get your story creation process started quickly and smoothly
  • \n
  • Easy drag-and-drop capabilities, making it easy to compose beautiful stories
  • \n
  • Convenient access to WordPress’ media library, enabling you to grab your media assets right from the plugin dashboard as you create your stories
  • \n
  • Customizable color and text style presets, making it easy to tailor the style of your stories to the needs of your content strategy
  • \n
  • And much more!
  • \n
\n

Using the Web Stories editor for WordPress, you can easily create visual narratives with tappable interactions, and share freely across the web, or embed them on your existing content strategies. The Stories you create are yours in every way, as Web Stories belong to the open web, instead of being confined to any specific closed ecosystem or platform.

\n

Audience: Everyone

\n

Web Stories are for everyone! If you are a site owner, content creator, or publisher on the web, embracing the Web Stories format would be great as a way to enhance the quality of your content strategy, the value you bring to your readers, and consequently your chances of achieving sustainable success.

\n

Terms of Service

\n

By using this plugin, you agree to Google’s Terms of Service. By using third-party imagery and video provided by Unsplash, Coverr and Tenor, you agree to adhere to the respective Terms of Service.

\n","download_link":"https://downloads.wordpress.org/plugin/web-stories.1.10.1.zip","tags":{"amp":"amp","google":"google","stories":"stories","storytelling":"storytelling","web-stories":"web stories"},"donate_link":"","icons":{"1x":"https://ps.w.org/web-stories/assets/icon.svg?rev=2386543","2x":"https://ps.w.org/web-stories/assets/icon-256x256.png?rev=2386543","svg":"https://ps.w.org/web-stories/assets/icon.svg?rev=2386543"},"wporg":true},{"name":"Jetpack – WP Security, Backup, Speed, & Growth","slug":"jetpack","version":"10.0","author":"Automattic","author_profile":"https://profiles.wordpress.org/automattic","requires":"5.7","tested":"5.8","requires_php":"5.6","rating":78,"ratings":{"1":319,"2":80,"3":81,"4":137,"5":1019},"num_ratings":1636,"support_threads":355,"support_threads_resolved":316,"active_installs":5000000,"downloaded":242963856,"last_updated":"2021-08-03 4:25pm GMT","added":"2011-01-20","homepage":"https://jetpack.com","short_description":"Improve your WP security with powerful one-click tools like backup and malware scan. Get essential free tools including stats, CDN and social sharing.","description":"

The most popular WordPress plugin for just about everything.

\n

WordPress security, performance, marketing, and design tools — Jetpack is made by WordPress experts to make WP sites safer and faster, and help you grow your traffic.

\n

24/7 AUTO SITE SECURITY

\n

We guard your site so you can run your site or business. Jetpack Security provides easy-to-use, comprehensive WordPress site security including auto real-time backups and easy restores, malware scans, and spam protection. Essential features like brute force protection and downtime / uptime monitoring are free.

\n
    \n
  • Back up your site automatically in real time and restore to any point with one click. Unlimited storage for your backup. Great for eCommerce stores especially Woo.
  • \n
  • Manage migration to a new host, migrate theme files and plugins to a new database, easily duplicate websites, create full database backups, clone websites, repair broken websites by restoring older backups or easily set up a test site by creating a duplicate of your existing WP website.
  • \n
  • See every site change and who made it with the activity log, great for coordination, debug, maintenance, or troubleshooting.
  • \n
  • Automatically perform malware scans and security scans for other code threats. One click fix to restore your site for malware.
  • \n
  • Block spam comments and form responses with anti spam features powered by Akismet.
  • \n
  • Brute force attack protection to protect your WordPress login page from attacks.
  • \n
  • Monitor your site uptime / downtime and get an instant alert of any change by email.
  • \n
  • Secure WordPress.com powered login used by millions of sites with optional 2FA (two factor authentication) for extra protection.
  • \n
  • Auto update individual plugins for easy site maintenance and management.
  • \n
\n

PEAK SPEED AND PERFORMANCE

\n

Get blazing fast site speed with Jetpack, the premier WP plugin built to leverage the power of AMP, a tool that helps optimize your site on mobile devices. Jetpack’s free CDN (content delivery network) auto optimizes your images. Watch your page load times decrease — we’ll optimize your images and serve them from our own powerful global network, and speed up your site on mobile devices to reduce bandwidth usage and save money!

\n
    \n
  • Jetpack has partnered with Google AMP to create the best, highest performance all-in-one toolkit for WordPress. By using Jetpack and AMP together, you get all the features you need to build a beautiful, fast, modern website with no coding required.
  • \n
  • Image CDN for images and static files, like CSS and JavaScript, served from our servers, not yours, which saves you money and bandwidth.
  • \n
  • Lazy load images for a super fast experience, even on mobile. Jetpack’s lazy loading automatically delays the loading of media on your posts and pages until your visitors scroll down to where they appear on the page.
  • \n
  • Unlimited, high speed, ad free video hosting keeps the focus on your content, not on ads or recommendations that lead people off site.
  • \n
  • Custom site search is incredibly powerful and customizable. Helps your visitors instantly find the right content so they read and buy more. Works great with WooCommerce / eCommerce sites to help filter products so customers get what they want on your site faster.
  • \n
  • Recommended to use with WP Super Cache for ultimate WordPress site speed.
  • \n
\n

POWERFUL TOOLS FOR GROWTH

\n

Create and customize your WordPress site, optimize it for visitors and revenue, and enjoy watching your stats tick up. Build it, share it, and watch it grow.

\n
    \n
  • Advanced site stats and analytics to help you understand your audience.
  • \n
  • Auto publish blog posts and products to social media by simply using our tools to connect to Facebook, Twitter, and Linkedin.
  • \n
  • Easily share Instagram posts on your pages and blog posts.
  • \n
  • Collect a payment or donation, sell a product, service, or membership with simple integrations with PayPal and Stripe.
  • \n
  • Grow traffic with SEO tools for Google, Bing, Twitter, Facebook, and WordPress.com. XML sitemap created automatically.
  • \n
  • Advertise on your site to generate revenue. The ad network automatically does the work for you to find high-quality ads that are placed on your site.
  • \n
  • Manage Jetpack features from anywhere with the official WordPress mobile app, available for Apple iOS (iPhone or iPad) and Google Android.
  • \n
  • Looking for Customer Relationship Management? Check out the Jetpack CRM plugin which works alongside Jetpack to give you a simple and practical way to build relationships with your customers and leads.
  • \n
\n

EASY DESIGN TOOLS

\n

Quickly customize your site to make it stand out — no coding needed.

\n
    \n
  • Themes — Simple themes to get started or pick a professional theme to make your site stand out.
  • \n
  • Related posts — Keep visitors on your site by automatically showing them related content they will be interested in.
  • \n
  • Gallery and Slideshow tools — Image galleries, carousel slider, and slideshows for WP sites and stores.
  • \n
  • Subscriptions — Make it easy for visitors to sign up to receive notifications of your latest posts and comments.
  • \n
  • Contact form — Easily build unlimited contact forms for free without any coding. Receive email notifications for each response. Integrate with mail solutions like Creative Mail to reach your customers and leads quickly. Connect to Jetpack Anti spam (powered by Akismet) to filter submissions.
  • \n
  • oEmbed Support — easily embed images, posts, and links from Facebook and Instagram.
  • \n
\n

INTEGRATIONS

\n

Jetpack is updated monthly to ensure seamless integration with top WordPress plugins and other tech products.

\n
    \n
  • Built for WooCommerce: Jetpack and WooCommerce are both made by Automattic. Backup, Scan, Anti-spam, integrate perfectly for Woo / eComm stores
  • \n
  • Jetpack is fully compatible with v2.0 of the official AMP plugin for WordPress.
  • \n
  • Better understand your customers and marketing with Google Analytics (GA) integration
  • \n
  • Social media platforms: Instagram, Facebook, Twitter, LinkedIn
  • \n
  • Simple Blocks to customize your site: Pinterest, Whatsapp, Podcast player, GIFs, maps, tiled gallery, slideshow
  • \n
  • Payment processors: easily collect payments or donations and sell products through Stripe and PayPal
  • \n
  • Site speed and performance plugins: Works great with WP Super Cache by Automattic and Cloudflare.
  • \n
  • Contact form: Anti-spam (Powered by Akismet) blocks spam comments for Jetpack forms, Contact Form 7, Ninja Forms, Gravity Forms, Formidable Forms, and more.
  • \n
  • Other tech integrations: Instagram, Creative Mail, Mailchimp, Calendly, Whatsapp, Pinterest, Revue, and more.
  • \n
\n

EXPERT SUPPORT

\n

We have a global team of Happiness Engineers ready to provide incredible support. Ask your questions in the support forum or contact us directly.

\n

GET STARTED

\n

Installation is free, quick, and easy. Set up Jetpack in minutes. Take advantage of more robust features like WordPress site security and design and growth tools by upgrading to a paid plan.

\n","download_link":"https://downloads.wordpress.org/plugin/jetpack.10.0.zip","tags":{"backup":"backup","malware":"malware","scan":"scan","security":"security","woo":"woo"},"donate_link":"","icons":{"1x":"https://ps.w.org/jetpack/assets/icon.svg?rev=2394525","2x":"https://ps.w.org/jetpack/assets/icon-256x256.png?rev=2394525","svg":"https://ps.w.org/jetpack/assets/icon.svg?rev=2394525"},"wporg":true},{"name":"Easy Notification Bar","slug":"easy-notification-bar","version":"1.4.2","author":"WPExplorer","author_profile":"https://profiles.wordpress.org/wpexplorer","requires":"5.2.0","tested":"5.8","requires_php":"5.6.2","rating":82,"ratings":{"1":0,"2":1,"3":1,"4":1,"5":4},"num_ratings":7,"support_threads":2,"support_threads_resolved":1,"active_installs":4000,"downloaded":34025,"last_updated":"2021-08-22 1:48am GMT","added":"2019-06-20","homepage":"https://wordpress.org/plugins/easy-notification-bar/","short_description":"Easily add a custom top bar notification message to on your site with live customization options via the WordPress customizer.","description":"

Easily add a custom top bar notification message to on your site with live customization options via the WordPress customizer. The plugin allows you to enter your notification bar text as well as an optional button to display next to your text. Perfect for notifying visitors of a current sale, hot product, warnings or other important messages.

\n

The Easy Notification Bar plugin makes use of the newer “wp_body_open” action hook introduced in WordPress 5.2.0 which allows the plugin to work better with any theme that has been updated to support the tag. Contrary to other notice bar solutions which rely on absolute positioning, this plugin inserts the notice bar right after the body tag so it should display perfectly without any conflicts on any well-coded theme.

\n

By default, the notification bar is “static” which means it displays at the top of your site so when you scroll down the page it will become “hidden”. This is generally better for usability and SEO. However, in version 1.4 we added a new sticky option which you can enable in the Customizer so that the notification bar remains visible as you scroll down the page. The sticky functionality makes use of the CSS sticky property (not javascript).

\n

Although disabled by default, you can enable a close icon for your notice. When enabled, your visitors will see an “x” icon over the top bar which they can click to hide the message for their current and future sessions. This functionality makes use of localStorage (not cookies).

\n

Live Demo: You can view a live demo for the notification bar on our More Widgets Plugin Demo

\n

Features

\n
    \n
  • Sitewide (or homepage only) top notification bar.
  • \n
  • Easy setup via the WordPress customizer.
  • \n
  • Optional close icon.
  • \n
  • Optional sticky display.
  • \n
  • Custom background, color, text alignment and font size settings.
  • \n
  • Optional callout button.
  • \n
  • Responsive design so it looks good on mobile.
  • \n
  • Minimal code.
  • \n
  • Vanilla Javascript used for close icon (jQuery not needed).
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/easy-notification-bar.zip","tags":{"notice":"notice","notice-bar":"notice bar","notification":"notification","notification-bar":"notification bar","top-bar":"top bar"},"donate_link":"","icons":{"1x":"https://ps.w.org/easy-notification-bar/assets/icon-128x128.png?rev=2515988","2x":"https://ps.w.org/easy-notification-bar/assets/icon-256x256.png?rev=2515988"},"wporg":true},{"name":"Antispam Bee","slug":"antispam-bee","version":"2.10.0","author":"pluginkollektiv","author_profile":"https://profiles.wordpress.org/pluginkollektiv","requires":"4.5","tested":"5.8","requires_php":"5.2","rating":96,"ratings":{"1":7,"2":1,"3":1,"4":2,"5":175},"num_ratings":186,"support_threads":6,"support_threads_resolved":4,"active_installs":700000,"downloaded":5047137,"last_updated":"2021-07-29 11:15am GMT","added":"2009-01-10","homepage":"https://antispambee.pluginkollektiv.org/","short_description":"Antispam plugin with a sophisticated tool set for effective day to day comment and trackback spam-fighting. Build with data protection and privacy in …","description":"

Say Goodbye to comment spam on your WordPress blog or website. Antispam Bee blocks spam comments and trackbacks effectively, without captchas and without sending personal information to third party services. It is free of charge, ad-free and 100% GDPR compliant.

\n

Feature/Settings Overview

\n
    \n
  • Trust approved commenters.
  • \n
  • Trust commenters with a Gravatar.
  • \n
  • Consider the comment time.
  • \n
  • Allow comments only in a certain language.
  • \n
  • Block or allow commenters from certain countries.
  • \n
  • Treat BBCode links as spam.
  • \n
  • Validate the IP address of commenters.
  • \n
  • Use regular expressions.
  • \n
  • Search local spam database for commenters previously marked as spammers.
  • \n
  • Notify admins by e-mail about incoming spam.
  • \n
  • Delete existing spam after n days.
  • \n
  • Limit approval to comments/pings (will delete other comment types).
  • \n
  • Select spam indicators to send comments to deletion directly.
  • \n
  • Optionally exclude trackbacks and pingbacks from spam detection.
  • \n
  • Optionally spam-check comment forms on archive pages.
  • \n
  • Display spam statistics on the dashboard, including daily updates of spam detection rate and a total of blocked spam comments.
  • \n
\n

Support

\n\n

Contribute

\n
    \n
  • Active development of this plugin is handled on GitHub.
  • \n
  • Pull requests for documented bugs are highly appreciated.
  • \n
  • If you think you’ve found a bug (e.g. you’re experiencing unexpected behavior), please post at the support forums first.
  • \n
  • If you want to help us translate this plugin you can do so on WordPress Translate.
  • \n
\n

Credits

\n\n","download_link":"https://downloads.wordpress.org/plugin/antispam-bee.2.10.0.zip","tags":{"anti-spam":"anti-spam","antispam":"antispam","block-spam":"block spam","comment":"comment","comments":"comments"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=TD4AMD2D8EMZW","icons":{"1x":"https://ps.w.org/antispam-bee/assets/icon-128x128.png?rev=977629","2x":"https://ps.w.org/antispam-bee/assets/icon-256x256.png?rev=977629"},"wporg":true},{"name":"SimpleTOC – Table of Contents Block","slug":"simpletoc","version":"4.8","author":"Marc Tönsing","author_profile":"https://profiles.wordpress.org/marcdk","requires":"5.0","tested":"5.8","requires_php":false,"rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":24},"num_ratings":24,"support_threads":2,"support_threads_resolved":1,"active_installs":2000,"downloaded":20704,"last_updated":"2021-07-29 9:07pm GMT","added":"2020-04-14","homepage":"https://marc.tv/simpletoc-wordpress-inhaltsverzeichnis-plugin-gutenberg/","short_description":"Adds a custom Table of Contents Gutenberg block.","description":"

In Gutenberg, add a block and search for “SimpleTOC” or just “TOC”. You need to save your post before you add the block. It works by parsing the post content and retrieving the heading blocks and creates a new dynamic block with a list of links to the headings.

\n

Hide the headline “Table of Contents” and set a maximum display depth in the blocks’ sidebar configuration. Add the CSS class “simpletoc-hidden” to a heading block to remove that specific heading from the generated TOC.

\n

Features

\n
    \n
  • No javascript or css added.
  • \n
  • Designed for Gutenberg.
  • \n
  • Compatible with AMP plugins.
  • \n
  • Minimal and valid HTML output.
  • \n
  • Inherits the style of your theme.
  • \n
  • Support for column block layouts.
  • \n
  • Control the maximum depth of the headings.
  • \n
  • Choose between an ordered and unordered html list.
  • \n
  • SEO friendly: Disable the h2 heading of the TOC block and add your own.
  • \n
  • Comes with English, French, Spanish, German, and Brazilian Portuguese translations.
  • \n
  • Works with non-latin texts. Tested with Japanese and Arabic.
  • \n
  • Finds headlines in groups and reusable blocks. And in groups within reusable blocks.
  • \n
  • Rank Math support.
  • \n
\n

Credits

\n

This plugin is forked from https://github.com/pdewouters/gutentoc by pdewouters and uses code from https://github.com/shazahm1/Easy-Table-of-Contents by shazahm1

\n

Many thanks to Tom J Nowell https://tomjn.com and and Sally CJ who both helped me a lot with my questions over at wordpress.stackexchange.com

\n","download_link":"https://downloads.wordpress.org/plugin/simpletoc.4.8.zip","tags":{"amp":"amp","block":"block","gutenberg":"gutenberg","table-of-contents":"table of contents","toc":"toc"},"donate_link":"https://marc.tv/out/donate","icons":{"1x":"https://ps.w.org/simpletoc/assets/icon.svg?rev=2451408","2x":"https://ps.w.org/simpletoc/assets/icon-256x256.png?rev=2451408","svg":"https://ps.w.org/simpletoc/assets/icon.svg?rev=2451408"},"wporg":true},{"name":"Log in with Google","slug":"login-with-google","version":"1.2.1","author":"rtCamp","author_profile":"https://profiles.wordpress.org/rtcamp","requires":"5.4.2","tested":"5.7.2","requires_php":"7.3","rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":6},"num_ratings":6,"support_threads":4,"support_threads_resolved":2,"active_installs":300,"downloaded":2952,"last_updated":"2021-07-23 10:00pm GMT","added":"2020-10-01","homepage":"","short_description":"Minimal plugin that allows WordPress users to log in using Google.","description":"

Ultra minimal plugin to let your users login to WordPress applications using their Google accounts. No more remembering hefty passwords!

\n

Initial Setup

\n
    \n
  1. \n

    Create a project from Google Developers Console if none exists.

    \n
  2. \n
  3. \n

    Go to Credentials tab, then create credential for OAuth client.

    \n
      \n
    • Application type will be Web Application
    • \n
    • Add YOUR_DOMAIN/wp-login.php in Authorized redirect URIs
    • \n
    \n
  4. \n
  5. \n

    This will give you Client ID and Secret key.

    \n
  6. \n
  7. \n

    Input these values either in WP Admin > Settings > WP Google Login, or in wp-config.php using the following code snippet:

    \n

    `
    \ndefine( ‘WP_GOOGLE_LOGIN_CLIENT_ID’, ‘YOUR_GOOGLE_CLIENT_ID’ );
    \ndefine( ‘WP_GOOGLE_LOGIN_SECRET’, ‘YOUR_SECRET_KEY’ );
    \n“

    \n
  8. \n
\n

Browser support

\n

These browsers are supported. Note, for example, that One Tap Login is not supported in Safari.

\n

How to enable automatic user registration

\n

You can enable user registration either by
\n– Enabling Settings > WP Google Login > Enable Google Login Registration

\n

OR

\n
    \n
  • Adding
    \ndefine( 'WP_GOOGLE_LOGIN_USER_REGISTRATION', 'true' );
    \nin wp-config.php file.
  • \n
\n

Note: If the checkbox is ON then, it will register valid Google users even when WordPress default setting, under

\n

Settings > General Settings > Membership > Anyone can register checkbox

\n

is OFF.

\n

Restrict user registration to one or more domain(s)

\n

By default, when you enable user registration via constant WP_GOOGLE_LOGIN_USER_REGISTRATION or enable Settings > WP Google Login > Enable Google Login Registration, it will create a user for any Google login (including gmail.com users). If you are planning to use this plugin on a private, internal site, then you may like to restrict user registration to users under a single Google Suite organization. This configuration variable does that.

\n

Add your domain name, without any schema prefix and www, as the value of WP_GOOGLE_LOGIN_WHITELIST_DOMAINS constant or in the settings Settings > WP Google Login > Whitelisted Domains. You can whitelist multiple domains. Please separate domains with commas. See the below example to know how to do it via constants:

\n
`\n
\n

define( ‘WP_GOOGLE_LOGIN_WHITELIST_DOMAINS’, ‘example.com,sample.com’ );
\n `

\n

Note: If a user already exists, they will be allowed to login with Google regardless of whether their domain is whitelisted or not. Whitelisting will only prevent users from registering with email addresses from non-whitelisted domains.

\n

Hooks

\n

Filter wp_google_login_scopes
\nThis filter can be used to filter existing scope used in Google Sign in.
\nYou can ask for additional permission while user logs in.
\nThis filter will provide 1 parameter scopes in callback, which contains array of scopes.

\n

wp-config.php parameters list

\n
    \n
  • \n

    WP_GOOGLE_LOGIN_CLIENT_ID (string): Google client ID of your application.

    \n
  • \n
  • \n

    WP_GOOGLE_LOGIN_SECRET (string): Secret key of your application

    \n
  • \n
  • \n

    WP_GOOGLE_LOGIN_USER_REGISTRATION (boolean) (optional): Set true If you want to enable new user registration. By default, user registration defers to Settings > General Settings > Membership if constant is not set.

    \n
  • \n
  • \n

    WP_GOOGLE_LOGIN_WHITELIST_DOMAINS (string) (optional): Domain names, if you want to restrict login with your custom domain. By default, it will allow all domains. You can whitelist multiple domains.

    \n
  • \n
\n

BTW, We’re Hiring!

\n

\n","download_link":"https://downloads.wordpress.org/plugin/login-with-google.1.2.1.zip","tags":{"authentication":"authentication","google-login":"Google Login","oauth":"oauth","sign-in":"sign in","sso":"sso"},"donate_link":"https://rtcamp.com/","icons":{"1x":"https://ps.w.org/login-with-google/assets/icon-128x128.png?rev=2402713","2x":"https://ps.w.org/login-with-google/assets/icon-256x256.png?rev=2402713"},"wporg":true},{"name":"Search with Google","slug":"search-with-google","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://wordpress.org/plugins/search-with-google/","short_description":"

This plugin replaces the WordPress default search query with server-side results from Custom Search Site Restricted JSON API. 

\n","description":"\n\n\n

This plugin replaces the WordPress default search query with server-side results from Custom Search Site Restricted JSON API

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2020/11/searchWithGoogle-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2020/11/searchWithGoogle-372x209.jpg","svg":""},"wporg":false},{"name":"Page Builder Gutenberg Blocks – CoBlocks","slug":"coblocks","version":"2.16.0","author":"GoDaddy","author_profile":"https://profiles.wordpress.org/godaddy","requires":"5.0","tested":"5.8","requires_php":"5.6","rating":88,"ratings":{"1":7,"2":3,"3":4,"4":5,"5":63},"num_ratings":82,"support_threads":16,"support_threads_resolved":4,"active_installs":500000,"downloaded":5426664,"last_updated":"2021-08-12 8:29pm GMT","added":"2018-04-19","homepage":"","short_description":"CoBlocks is a suite of page builder WordPress blocks for Gutenberg, with 10+ new blocks and a true page builder experience with rows and columns.","description":"

CoBlocks is the most innovative collection of page building WordPress blocks for the new Gutenberg WordPress block editor.

\n

With additional blocks and true row and column building, CoBlocks gives you a true page builder experience for Gutenberg.

\n

CoBlocks is powerful but lightweight: it adds functionality to the WordPress editor without bloat. This is the plugin you’ve been waiting for, and it will make you rethink what WordPress is capable of.

\n

Make Beautiful Web Pages With Gutenberg & CoBlocks

\n

CoBlocks is the last page builder you’ll ever need: you get a winning mix of additional WordPress blocks, and page builder functionality. With CoBlocks you have everything you need to make beautiful web pages with the new block editor:

\n
    \n
  • Accordion Block
  • \n
  • Alert Block
  • \n
  • Author Profile Block
  • \n
  • Buttons Block
  • \n
  • Carousel Gallery Block
  • \n
  • Click to Tweet Block
  • \n
  • Collage Gallery Block
  • \n
  • Dynamic Separator Block
  • \n
  • Events Block (New!)
  • \n
  • Features Block
  • \n
  • Food & Drinks Block
  • \n
  • Form Block
  • \n
  • Gif Block
  • \n
  • GitHub Gist Block
  • \n
  • Hero Block
  • \n
  • Highlight Block
  • \n
  • Icon Block
  • \n
  • Logos & Badges Block
  • \n
  • Map Block
  • \n
  • Masonry Gallery Block
  • \n
  • Media Card Block
  • \n
  • Offset Gallery Block
  • \n
  • Post Carousel Block
  • \n
  • Posts Block
  • \n
  • Pricing Table Block
  • \n
  • Resizable Row/Columns Blocks
  • \n
  • Services Block
  • \n
  • Shape Divider Block
  • \n
  • Social Profiles Block
  • \n
  • Social Sharing Block
  • \n
  • Stacked Gallery Block
  • \n
\n

Breakthrough Page Builder System

\n

CoBlocks features an innovative block system that allows you to create stunning web pages, and even entire websites, with the new WordPress editor.

\n

You get the extra blocks you need and the layout and design functionality for a true page builder experience.

\n

Use the exceptional Row and Columns blocks to add dynamically generated content areas with specific responsive margin and padding settings that only CoBlocks provides.

\n

Style these with innovative new blocks such as the Shape Divider, which lets you split up your content with beautiful dividers.

\n

Each of the WordPress blocks within CoBlocks have been precisely fined tuned to offer a familiar, yet powerful, customization experience. Tailor each block to your taste using our custom controls and settings. Change fonts, set margin and padding, pick colors and more.

\n

Custom Typography Controls

\n

The breakthrough Typography Control Panel within CoBlocks lets you design web pages with alluring typographic elements. Set fonts, sizes, weights, transformations and more, in our CoBlocks blocks, and in core WordPress blocks.

\n

Free Companion Theme

\n

CoBlocks is built to show off the best of Gutenberg, but it requires a Gutenberg-first theme to unlock its full potential. We also created the free Go theme in the WordPress theme repository as the perfect companion for CoBlocks.

\n

Going Beyond Gutenberg Blocks

\n

The vision for CoBlocks is to create a suite of Gutenberg blocks to help folks make beautiful websites easily. These newest releases of CoBlocks is the ultimate expression of that vision.

\n

Built With Developers in Mind

\n

Extensible, adaptable, and open source — CoBlocks is created with theme and plugin developers in mind. If you’re interested to jump in the project, there are opportunities for developers at all levels to get involved. Contribute to CoBlocks on GitHub and join the party. 🎉

\n","download_link":"https://downloads.wordpress.org/plugin/coblocks.2.16.0.zip","tags":{"blocks":"blocks","gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","page-builder":"page builder","wordpress-blocks":"wordpress blocks"},"donate_link":"","icons":{"1x":"https://ps.w.org/coblocks/assets/icon-128x128.jpg?rev=2243972","2x":"https://ps.w.org/coblocks/assets/icon-256x256.jpg?rev=2243972"},"wporg":true},{"name":"Simple Author Box","slug":"simple-author-box","version":"2.42","author":"WebFactory Ltd","author_profile":"https://profiles.wordpress.org/webfactory","requires":"4.6","tested":"5.8","requires_php":"5.6","rating":88,"ratings":{"1":9,"2":0,"3":5,"4":8,"5":75},"num_ratings":97,"support_threads":12,"support_threads_resolved":11,"active_installs":50000,"downloaded":897638,"last_updated":"2021-08-13 8:08am GMT","added":"2014-08-08","homepage":"https://wpauthorbox.com/","short_description":"Add a responsive author box with social icons to any post. Great author box for any site!","description":"

Simple Author Box adds a responsive author box at the end of your posts, showing the author name, author gravatar and author description – author bio. It also adds over 30 social profile fields on WordPress user profile screen, allowing to display the author social icons in the author box.

\n

Main Features

\n
    \n
  • Shows author gravatar, name, website, description (author bio) and social icons
  • \n
  • Fully customizable to match your theme design (style, color, size and text options)
  • \n
  • Nice looking on desktop, laptop, tablet or mobile phones
  • \n
  • Automatically insert the author box at the end of your post
  • \n
  • Option to manually insert the author box on your template file (single.php or author.php)
  • \n
  • Simple Author Box has RTL support
  • \n
  • Simple Author Box has AMP support
  • \n
  • Great for guest posts, and guest authors
  • \n
\n

Simple Author Box Pro Features

\n
\n

Premium features only available in Simple Author Box Pro

\n
    \n
  • Change author box position to before/after content
  • \n
  • Choose whether the author’s name should link to its website/page/none
  • \n
  • Select where to show author box on
  • \n
  • Add rotate effect on author avatar hover
  • \n
  • Option to open author website link in a new tab
  • \n
  • Option to add “nofollow” attribute on author website link
  • \n
  • Choose the author website’s position: right/left
  • \n
  • Social icons type, style, rotate effect, shadow effect, thin border
  • \n
  • Option to change the color palette
  • \n
  • Choose the font and font sizes for the author’s job title, website, name, and description
  • \n
  • Enable guest authors and co-authors
  • \n
  • Option to use guest authors as co-authors
  • \n
  • Top authors widget – displays the most popular authors based of comments
  • \n
  • Simple author box widget – displays the users selected
  • \n
\n
\n

Read more about the Simple Author Box advanced features.

\n","download_link":"https://downloads.wordpress.org/plugin/simple-author-box.2.42.zip","tags":{"author-bio":"author bio","author-box":"author box","author-profile-fields":"author profile fields","author-social-icons":"author social icons","responsive-author-box":"responsive author box"},"donate_link":"","icons":{"1x":"https://ps.w.org/simple-author-box/assets/icon-128x128.jpg?rev=1821054"},"wporg":true},{"name":"Genesis Blocks","slug":"genesis-blocks","version":"1.2.5","author":"StudioPress","author_profile":"https://profiles.wordpress.org/studiopress","requires":"5.3","tested":"5.8","requires_php":"7.1","rating":90,"ratings":{"1":1,"2":0,"3":1,"4":0,"5":10},"num_ratings":12,"support_threads":11,"support_threads_resolved":4,"active_installs":40000,"downloaded":195792,"last_updated":"2021-07-20 6:30pm GMT","added":"2020-08-25","homepage":"https://studiopress.com/genesis-pro/","short_description":"A collection of content blocks, sections, & full-page layouts for the block editor.","description":"

Genesis Blocks is a collection of page building blocks for the Gutenberg block editor. Building pages with the block editor and Genesis Blocks gives you more control to quickly create and launch any kind of site you want!

\n

Installing the customizable Genesis Blocks plugin adds a collection of beautiful, site-building blocks to help you customize page layouts, increase engagement, and get results for your business. Genesis Blocks provides everything from customizable buttons, to beautifully-designed page sections and full-page layout designs via the Section & Layout block.

\n

Along with the blocks themselves, Genesis Blocks extends the content creation experience by providing a library of page sections and full-page layouts, all available from within the block editor.

\n

Create compelling content faster.

\n

Create and use content quickly with prebuilt and custom content sections and full-page layouts.

\n

Enhance the Gutenberg editor.

\n

Additional content blocks and the layout selector make it easy to get the most value out of the block-based editor.

\n

Genesis Blocks currently includes the following blocks to help you build content and pages quickly and effortlessly:

\n
    \n
  • Section & Layout Block
  • \n
  • Advanced Columns Block
  • \n
  • Newsletter Block
  • \n
  • Pricing Block
  • \n
  • Post Grid Block
  • \n
  • Container Block
  • \n
  • Testimonial Block
  • \n
  • Inline Notice Block
  • \n
  • Accordion Block
  • \n
  • Share Icons Block
  • \n
  • Call-To-Action Block
  • \n
  • Customizable Button Block
  • \n
  • Spacer & Divider Block
  • \n
  • Author Profile Block
  • \n
  • Drop Cap Block
  • \n
\n

Do more with Genesis Pro

\n

For those wanting to level-up with Genesis Blocks, a Genesis Pro subscription brings even richer tooling and a bigger library of sections and layouts.

\n
    \n
  • 2 new blocks (more coming soon)
  • \n
  • 26 pre-built full-page layouts
  • \n
  • 56 pre-built sections
  • \n
  • Save & reuse your own sections & layouts
  • \n
  • Advanced block-level user permissions
  • \n
  • Access to and support for Genesis Framework & all of our 35 StudioPress-made premium child themes.
  • \n
  • Additional advanced features for the rest of the Genesis Product Suite
  • \n
\n

Genesis Pro includes even more value for modern WordPress content creators, marketers, and developers. Learn more about Genesis Pro here.

\n

Google AMP Support

\n

The Accelerated Mobile Pages (AMP) project is a publishing format created by Google to enhance site performance for mobile website users. AMP pages are specially designed for Google search users to quickly load website pages without using any extraneous data. Genesis Blocks has support for AMP built into each block!

\n

Help & Docs

\n

User and developer docs for Genesis Blocks can be found here.

\n","download_link":"https://downloads.wordpress.org/plugin/genesis-blocks.1.2.5.zip","tags":{"blocks":"blocks","editor":"editor","gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","page-builder":"page builder"},"donate_link":"https://studiopress.com","icons":{"1x":"https://ps.w.org/genesis-blocks/assets/icon-128x128.png?rev=2368839","2x":"https://ps.w.org/genesis-blocks/assets/icon-256x256.png?rev=2368840"},"wporg":true},{"name":"MathML Block","slug":"mathml-block","version":"1.2.0","author":"adamsilverstein","author_profile":"https://profiles.wordpress.org/adamsilverstein","requires":"5.0","tested":"5.5.5","requires_php":"5.6","rating":90,"ratings":{"1":0,"2":0,"3":0,"4":1,"5":1},"num_ratings":2,"support_threads":1,"support_threads_resolved":0,"active_installs":500,"downloaded":7397,"last_updated":"2020-10-01 11:05pm GMT","added":"2018-12-28","homepage":"","short_description":"A MathML block for the WordPress block editor (Gutenberg).","description":"

A MathML block for the WordPress block editor (Gutenberg).
\nRequires PHP 5.4+ and WordPress 5.0+.

\n

Development takes place on the GitHub repository: https://github.com/adamsilverstein/mathml-block.

\n

Screencast: https://cl.ly/c0f6bbfbc3b1

\n

What is MathML?

\n

Mathematical Markup Language is a mathematical markup language, an application of XML for describing mathematical notations and capturing both its structure and content. It aims at integrating mathematical formulae into World Wide Web pages and other documents.

\n

The MathML block uses MathJax to render MathML formulas in the editor and on the front end of a website. MathJax (https://www.mathjax.org/) is A JavaScript display engine for mathematics that works in all browsers.

\n

To test a MathML block and enter a formula, for example: \\[x = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}\\].

\n

To test using math formulas inline, type an formula into a block of text, select it and hit the ‘M’ icon in the control bar. For example: \\( \\cos(θ+φ)=\\cos(θ)\\cos(φ)−\\sin(θ)\\sin(φ) \\). Note: if you are copying and pasting formulas into the rich text editor, switching to HTML/code editor mode is less likely to reformat your pasted formula.

\n

This plugin is compatible with the official AMP plugin by rendering amp-mathml on AMP pages.

\n

Technical Notes

\n
    \n
  • Requires PHP 5.6+.
  • \n
  • Requires WordPress 5.0+.
  • \n
  • Issues and Pull requests welcome on the GitHub repository: https://github.com/adamsilverstein/mathml-block.
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/mathml-block.zip","tags":{"block":"block","block-editor":"block-editor","gutenberg":"gutenberg","math":"math","mathml":"mathml"},"donate_link":"","icons":{"1x":"https://ps.w.org/mathml-block/assets/icon-128x128.png?rev=2002452","2x":"https://ps.w.org/mathml-block/assets/icon-256x256.png?rev=2002452"},"wporg":true},{"name":"Calculated Fields Form","slug":"calculated-fields-form","version":"1.1.15","author":"CodePeople","author_profile":"https://profiles.wordpress.org/codepeople","requires":"3.0.5","tested":"5.8","requires_php":false,"rating":96,"ratings":{"1":20,"2":2,"3":4,"4":26,"5":675},"num_ratings":727,"support_threads":102,"support_threads_resolved":101,"active_installs":60000,"downloaded":3481554,"last_updated":"2021-09-06 2:13pm GMT","added":"2013-03-12","homepage":"https://cff.dwbooster.com","short_description":"Calculated Fields Form allows you to create both simple and rich forms, quickly like a professional. It includes a form builder with dynamic calculate …","description":"

The “Calculated Fields Form” plugin allows you to create web forms with calculated fields, whose values are dynamically calculated based on other fields’ values in the web form.

\n

The possibilities are unlimited. For example, you can create forms with financial calculations, date operations to create reservation forms, and calculate the product prices. The plugin includes text operations for editing, translation, or advertising services. There are more advanced operations available such as determining the distance between addresses or generating graphs. The resulting forms are 100% mobile responsive.

\n

The most impressive thing is that you don’t need to hire a programmer to create the forms. With basic knowledge, you will have a professional form in just five minutes.

\n

Creating a form is all visual. The “Calculated Fields Form” plugin includes a form editor with multiple controls. Such as text fields, numeric fields, currency fields, slider controls, email fields, radio buttons, checkboxes, container fields, page breaks to create multipage forms, and most importantly, calculated fields.

\n

The form editor includes a list of controls, a property bar to easily edit field properties, a dashboard where you can design your forms, and the attributes for form configuration. Also, the plugin comes with multiple predefined layouts to change the forms’ appearance. If there are not enough predefined layouts for your project, there is a style editor to customize the form’s design.

\n

The “Calculated Fields Form” plugin includes integration with popular page builders:

\n
    \n
  • Classic WordPress Editor
  • \n
  • Gutenberg Editor
  • \n
  • Elementor
  • \n
  • Page Builder by SiteOrigin
  • \n
  • Beaver Builder
  • \n
  • WPBakery Page Builder
  • \n
  • DIVI Builder
  • \n
\n

For other editors, it is possible to insert the form into the pages via its shortcode. Each web form has an associated shortcode that allows you to insert it wherever you want.

\n

Features

\n

Main features:

\n
    \n
  • Visual form builder with an intuitive and interactive interface.
  • \n
  • Includes general-purpose controls such as radio buttons, checkboxes, menu lists, date fields, slider controls, numeric fields, text currency fields, etc.
  • \n
  • Includes calculated fields whose values result from operations involving other form fields.
    \nInsert as many calculated fields in the form as you need.
  • \n
  • Contains an advanced formula editor associated with the calculated fields with syntax highlighting and error detection.
  • \n
  • Features many operations modules: mathematical operations, operations with dates, financial operations, distance operations, text management, operations for calling remote services, etc. The calculated fields can identify numbers and prices within the values of the fields.
  • \n
  • Distributed with several predefined forms that you can use as a starting point for your projects.
  • \n
  • Includes several design templates.
  • \n
  • Supports multi-pages forms by inserting page break controls between fields belonging to different pages.
  • \n
  • Allows the grouping of fields inside container controls (Div and Fieldset).
  • \n
  • Possible to define dependency rules between fields in the form, which is very useful in the design of wizards.
  • \n
\n

Other features:

\n
    \n
  • From the plugin configuration page, it is possible to duplicate a form by pressing the “Clone” button associated with it. By cloning a form, you can reuse the work already done.
  • \n
  • Includes a troubleshooting and optimization area.
  • \n
  • Allows you to disable forms in the indexing process to improve the speed of the website.
  • \n
  • Includes a version control in the forms to recover previous versions.
  • \n
\n

Predefined forms:

\n

“Calculated Fields Form” is distributed with five predefined sample forms.

\n
    \n
  1. Simple Calculator Operations
  2. \n
  3. Calculation with Dates (bookings with check-in and check-out dates)
  4. \n
  5. Ideal Weight Calculator
  6. \n
  7. Pregnancy Calculator
  8. \n
  9. Lease Calculator
  10. \n
\n

You can clone a sample form to implement your project, or create a new form from scratch.

\n
\n

Calculated Fields Form Commercial
\n The free version of the “Calculated Fields Form” plugin includes only basic functionality. Other distributions (Professional, Developer, and Platinum) are available with advanced functionalities, such as sending notification emails, integration with payment gateways and external services, controls for database’s connection (and connection to other data sources), complex operations, and many other features.

\n
\n

Features of the Profesional version:

\n
    \n
  • Includes all the features of the free version of the plugin.
  • \n
  • Submit the data collected by the forms and store it on the website for review.
  • \n
  • Send notification emails with the data collected by the form, as well as confirmation emails to the users.
  • \n
  • Integrate the form with PayPal and calculate the amount to be charged through a calculated field.
    \nPayments allow SCA (strong customer authentication), compatible with the new payment services (PSD 2) – Directive (EU).
  • \n
  • Export and import forms between different WordPress sites.
  • \n
  • Different mechanisms to protect forms, such as captcha, WordPress nonces, and honeypot fields.
  • \n
  • Associate “Thank You” page with the form, where you can show a summary of the form’s submission.
  • \n
  • Dashboard widget to show the last week’s submissions.
  • \n
  • Cache the forms to increase the rendering speed.
  • \n
  • Export the information submitted by the forms to a CSV file and use it with third-party tools such as Excel, OpenOffice, LibreOffice, or any other spreadsheet editor.
  • \n
\n

Features of the Developer version:

\n\n

Includes add-ons to extend the form features and make use of third-party plugins and external services

\n
    \n
  • Server-Side Equations add-on: define server-side equations.
  • \n
  • Verification Code add-on: verifies the user’s email by sending him a verification code and blocking the form’s submission until the verification code is entered.
  • \n
  • WooCommerce add-on: integrate forms with WooCommerce products and calculate their prices, dimensions, and weight at the runtime.
  • \n
  • SalesForce add-on: integrate the form with the SalesForce service.
  • \n
  • WebHooks add-on: send the information collected by the form to a WebHook URL to open countless possibilities. By connecting your form to services such as Zapier, Microsoft Flow, IFTTT, Workato, and others, you can connect to hundreds of third-party services (e.g. Zoho CRM, Dropbox, Mailchimp, Google Drive, Facebook, Twitter, etc.).
  • \n
  • User Permissions add-on: control the forms’ access, as well as allowing users to access and edit their data.
  • \n
  • User Registration Form add-on: build a user registration form that captures the user’s basic information and metadata.
  • \n
  • reCAPTCHA add-on: replace the basic captcha with Google reCAPTCHA to protect the forms.
  • \n
\n

Features of the Platinum version:

\n
    \n
  • Includes all the features of free, Professional, and Developer versions of the plugin.
  • \n
  • Unique Fields Values add-on: verifies that the values entered by users have not been used in previous submissions.
  • \n
  • Easy Digital Downloads add-on: integrate the forms into Easy Digital Downloads products and calculate their prices at the runtime.
  • \n
  • Google Analytics add-on: generate usage reports in “Google Analytics” for the users’ actions.
  • \n
  • PayPal Pro add-on: enable the payer’s credit card details to be entered directly through the website without any redirection to the PayPal website.
  • \n
  • Upload Files add-on: add uploaded files to the media library and extend the file types accepted by WordPress.
  • \n
  • DropBox Integration add-on: copy or move the uploaded files to a DropBox account.
  • \n
  • ip2location add-on: identify the users’ data using the ip2location databases.
  • \n
  • Google Places add-on: transform form fields into autocomplete address fields.
  • \n
  • Autocomplete Places add-on: transform form fields into autocomplete address fields by using the Photon API.
  • \n
  • Signature add-on: convert form fields into “Signature” fields, allowing the users to sign the form with a mouse or touchscreen.
  • \n
  • iCal add-on: send iCal file in the notification emails to import the events into most popular calendars like Outlook and Google Calendar.
  • \n
  • CSV Generator add-on: export the information collected by the form to CSV files and attach these to the notification emails.
  • \n
  • PDF Generator add-on: generate PDF files with the information collected by the forms and attach them to the notification emails.
  • \n
  • WebMerge add-on: integrate the forms with FormStack documents (formerly WebMerge) to generate PDF and Office documents at runtime with the information collected by the web forms.
  • \n
  • PrintFriendly add-on: generate PDF files with the PrintFriendly API and attach the resulting files to the notification emails.
  • \n
  • Mailchimp add-on: add new members to the MailChimp account.
  • \n
  • Mautic add-on: add new contacts (or update existing ones) into the Mautic Service.
  • \n
  • HubSpot add-on: add/update contacts in HubSpot, using the information collected by the form.
  • \n
  • Emma add-on: add new members to the Emma service.
  • \n
  • Twilio add-on: send notification messages (SMS) in the forms’ submissions.
  • \n
  • MailPoet add-on: add new subscribers to MailPoet’s Mailing Lists (MailPoet versions 2 and 3).
  • \n
  • AffiliateWP add-on: integrate the forms with the AffiliateWP plugin.
  • \n
  • Authorize.Net add-on: accept payments via Authorize.Net from the form.
  • \n
  • Stripe add-on: accept payments via the Stripe payment gateway from the form.
  • \n
  • Skrill Payments Integration add-on: integrate with the Skrill Moneybookers payment gateway.
  • \n
  • TargetPay (iDeal) add-on add-on: integrate with iDeal, the popular Dutch payment method.
  • \n
  • Mollie (iDeal) add-on: accept payments via iDeal.
  • \n
  • RedSys / Servired / Sermepa add-on provides: a secure interface for accepting credit card payments from most banks in Spain.
  • \n
  • PayTM add-on: a secure interface for accepting payments with credit cards, debit cards, net banking, wallets, and EMI.
  • \n
  • SagePay add-on: a secure interface for accepting payments via SagePay.
  • \n
  • Sage Payment add-on: a secure interface for accepting payments through a secure SSL checkout system for both bankcard and virtual check transactions.
  • \n
\n

Please keep the plugin updated. Updates contain bug fixes as well as new features. The WordPress directory distributes the updates for the free version of the plugin. But for commercial versions, it would be necessary to register your copy of the plugin. The following link describes the registration process: CLICK HEREThis section mainly contains notes on features of the form builder that are too detailed to include in the main description.

\n

Conditional rules

\n

It is possible to show or hide form fields (dependent fields) based on the options selected in checkbox fields, radio buttons, the options selected in dropdown menus, or the result of calculated fields.

\n

The value of a dependent field is zero when it is hidden/disabled. The plugin excludes the disabled form fields from the submission.

\n

Additional details about the use of dependencies

\n

Predefined values

\n

The predefined values in the fields have two possible uses:

\n

1- To fill the field by default. This makes it easier for the end-user to enter values.

\n

2- Hint of the values to be entered in the field (like “Enter your name”). To use the predefined value as a placeholder, you must tick the “Hide predefined value on click” checkbox. The value will disappear once the user starts filling in the field. The calculated fields’ equations ignore placeholders.

\n

The “User Instructions” attribute

\n

The “User instructions” attribute in the field settings allows you to instruct the user on how to fill in the field. By default, the instructions appear as smaller text on the public website. But they can be configured as tooltips.

\n

Adding CSS layout keywords

\n

The “Add CSS layout keywords” attribute in the fields settings allows you to apply CSS styles to fields. You must only enter the name of the CSS class names, and not their definitions.

\n

You can define the CSS classes via the “Customize Form Design” attribute in the “Form Settings” tab. This attribute contains a CSS editor with syntax highlighting and error checking.

\n

If you want to assign several class names to the field, separate them by space characters.

\n

The plugin includes multiple predefined classes that you can assign to the form fields.

\n

More information about the form’s design can be found by reading the following post in the plugin’s blog:

\n

Customizing the form’s design

\n

The classes listed below allow you to align two, three, or four fields on the same line:

\n
column2\ncolumn3\ncolumn4\n
\n

For example, if you want to put two fields on the same line, give both fields the class name “column2”.

\n

There are other variants for displaying several fields on the same line, such as container fields (Div or Fieldset). Container fields allow you to select the number of columns in your configuration. The following post describes all the alternatives for positioning the fields in the form:

\n

Formatting the form (distributing the fields in columns)

\n

Multi-page form

\n

To create multi-page forms, you must insert “Page break” controls between fields belonging to different pages.

\n

When the user presses the “Next Page” button, the plugin validates the fields in the current form. If there is any validation error (such as an unfilled required field), the plugin stops the “Next page” action.

\n

Hidden calculated fields

\n

Calculated fields include a checkbox in the configuration that allows them to be hidden from the public website. This feature is essential in those fields that are used to calculate intermediate values or when we want to show the results only in emails or thank you pages.

\n

Equation / Formula format for calculated fields

\n

Below, some possible formulas are included as examples, but the possibilities are endless.

\n
    \n
  • \n

    With simple mathematical operations:

    \n
    fieldname1 + fieldname2\n\nfieldname1 * fieldname2\n\nfieldname1 / fieldname2\n\nfieldname1 - fieldname2\n\nfieldname1 - fieldname2\n
    \n
  • \n
  • \n

    With mathematical operations involving multiple fields and grouped fields:

    \n
    fieldname1 * (fieldname2 + fieldname3)\n
    \n
  • \n
  • \n

    With rounding operations. Round the result to two decimal places:

    \n
    PREC(fieldname2 / fieldname3, 2)\n
    \n
  • \n
  • \n

    There are infinite number of formulas that can be created using complex structures. For example, the following formula includes conditional statements:

    \n
    (function () {\nif (100 < fieldname3) return fieldname1 + fieldname2;\nif (fieldname3 <= 100) return fieldname1 * fieldname2;\n})();\n
    \n
  • \n
  • \n

    For complex formulas/equations you must use the function format with return statement to return the result to the calculated field:

    \n
     (function () {\n    var result = 0;\n    /* Your code here */\n    return result;\n}) ();\n
    \n
  • \n
\n

Operations and operators to use in equations/formulas

\n

One of the “Calculated Fields Form” strengths is the ability to use any valid JavaScript code to implement the equations/formulas.

\n

However, the plugin includes a wide variety of operations and operators to simplify the development process.

\n

Mathematical Operations and Operators

\n

Conditional Operations

\n

Field Handling Operations

\n

Operations for interacting with external services

\n

Operations for handling URLs and query strings

\n

In addition to the operation modules listed above, the Developer and Platinum versions of the plugin include additional modules:

\n

Date Time Operations

\n

Financial Operations

\n

Distance and Travel Time Operations

\n

Operations to generate charts

\n

Controls available in the form generator of the “Calculated Fields Form”

\n

The complete list of controls is available from this link: CLICK HERE

\n

Create JavaScript variables from parameters received by “GET” or “POST”, “SESSION” variables, or “COOKIES” to use in the equations

\n

The plugin includes the shortcode [CP_CALCULATED_FIELDS_VAR] to generate JavaScript variables from parameters received by “GET” or “POST”, “SESSION” variables, or “COOKIES”:

\n
[CP_CALCULATED_FIELDS_VAR name=\"...\"]\n
\n

In the shortcode, you must replace the “…” symbols with the name of the parameter or variable. It will be the same name for the JavaScript variable.

\n

For example:

\n
[CP_CALCULATED_FIELDS_VAR name=\"varname\"]\n
\n

You can use the variables generated through the shortcode [CP_CALCULATED_FIELDS_VAR] in the formulas of the calculated fields: fieldname1*varname

\n

The complete list of parameters accepted by the variables shortcode is available at the following link: CLICK HERE

\n

Tips for calculating prices

\n

One of the most frequent uses of our plugin is for price calculation. When displaying the price of a product, you may want to split the form into two pages. The first page would request the information needed to calculate the price, and the second page would include the calculated field with the final price. Also, you could use the “Instruct. Text” fields to indicate the terms, conditions, and validity period of the offer.

\n

Note that you can make the “Instruct. Text” fields dependent on the calculated value. This allows you to vary the text displayed to the user depending on the calculated price, as the terms, conditions, or offers often depend on the transaction amount.

\n

Add-ons

\n

The add-ons are only distributed with the Developer and Platinum versions of the plugin.

\n

The plugin lists the add ons in the “Add-ons area” of the settings page. To enable the add-ons, you must tick their corresponding checkbox and press the “Activate/Deactivate Add-ons” button.

\n

Server-Side Equations add-on – included in the Developer and Platinum versions of the plugin

\n

Define equations with PHP code on the server-side. The calculated fields call the server-side equations via AJAX.

\n

CLICK HERE for additional information

\n

Verification Code add-on – included in the Developer and Platinum versions of the plugin

\n

The “Verification Code” add-on allows verifying the users’ emails by sending a verification code and blocking the form’s submission until a valid code is entered.

\n

CLICK HERE for additional information

\n

Unique Fields Values add-on – included in the Platinum version of the plugin

\n

The “Unique Fields Values” add-on verifies that the values entered by users have not been used in previous submissions. It allows to enter simple and complex verification rules (one or multiple fields separated by comma symbols).

\n

CLICK HERE for additional information

\n

WooCommerce add-on – included in the Developer and Platinum versions of the plugin

\n

Integrate the forms created by the “Calculated Fields Form” with WooCommerce products and calculate their prices, weights, dimensions, and more at the runtime.

\n

CLICK HERE for additional information

\n

Easy Digital Downloads add-on – included in the Platinum version of the plugin

\n

Integrate forms created by the “Calculated Fields Form” with the Easy Digital Downloads products, and calculate their price dynamically at the runtime.

\n

CLICK HERE for additional information

\n

SalesForce add-on – included in the Developer and Platinum versions of the plugin

\n

Add new leads to a SalesForce account using the data collected by the forms.

\n

CLICK HERE for additional information

\n

WebHook add-on – included in the Developer and Platinum versions of the plugin

\n

Post the information collected by the forms to WebHook URLs.

\n

Through connecting the forms created by the plugin with services like Zapier, Microsoft Flow, Workato, or IFTTT (and many others), you will have access to hundreds of third-party services, like Zoho CRM, Dropbox, Mailchimp, Evernote, Google Drive, Facebook, Twitter, and more than 300 services https://zapier.com/zapbook/apps/, https://flow.microsoft.com/, https://ifttt.com/discover

\n

CLICK HERE for additional information

\n

User Permissions add-on – included in the Developer and Platinum versions of the plugin

\n

Control access to forms. Access can be restricted to registered users, users with certain roles, or to specific users.

\n

The add-on adds a new shortcode to the plugin to list the data submitted by the logged-in user (it is possible to insert the new shortcode into the user’s profile) and assign user permissions to edit their information or delete an entry.

\n

Limit the number of submissions (e.g. one submission per form/user).

\n

CLICK HERE for additional information

\n

User Registration Form add-on – included in the Developer and Platinum versions of the plugin

\n

Build user registration forms. The form can collect basic user information and metadata required by other plugins.

\n

CLICK HERE for additional information

\n

reCAPTCHA add-on – included in the Developer and Platinum versions of the plugin

\n

Protect forms using Google reCAPTCHA instead of the basic captcha distributed with the plugin, as reCAPTCHA is more visual and intuitive than traditional captchas.

\n

CLICK HERE for additional information

\n

Google Analytics add-on – included in the Platinum version of the plugin

\n

Generate usage reports in “Google Analytics” for the users’ actions.

\n

CLICK HERE for additional information

\n

PayPal Pro add-on – included in the Platinum version of the plugin

\n

Allow the user to enter their credit card details directly on your website without redirecting them to the PayPal website. Once the user has filled the form fields and clicked the submit button, the payment is processed and the posted data (excluding the credit card information) is stored in the WordPress database.

\n

CLICK HERE for additional information

\n

Upload Files add-on – included in the Platinum version of the plugin

\n

Every commercial version of the plugin includes the “Upload File” control to upload files from the form. However, the “Upload Files” add-on allows the uploaded files to be added to the Media Library and be accessed from the pages and posts of the website.

\n

WordPress restricts the file types that can be uploaded. The “Uploads Files” add-on allows the list of accepted files to be extended.

\n

CLICK HERE for additional information

\n

DropBox Integration add-on – included in the Platinum version of the plugin

\n

Copy or move files uploaded through the forms to a DropBox account.

\n

CLICK HERE for additional information

\n

ip2location add-on – included in the Platinum version of the plugin

\n

Use the ip2location databases to identify additional user information based on their IP. Address such as country, city, coordinates, weather station, time zone, ZIP code, etc.

\n

CLICK HERE for additional information

\n

Google Places add-on – included in the Platinum version of the plugin

\n

Transform fields into autocomplete address fields calling the Google Places API.

\n

CLICK HERE for additional information

\n

Autocomplete Places add-on – included in the Platinum version of the plugin

\n

Transform fields into autocomplete address fields by calling the Photon API.

\n

CLICK HERE for additional information

\n

Signature add-on – included in the Platinum version of the plugin

\n

Transform fields into “Signature” fields to allow the users to sign the form with their mouse or touchscreens.

\n

CLICK HERE for additional information

\n

iCal add-on – included in the Platinum version of the plugin

\n

Send the users iCal files attached to the confirmation emails to import events into the most popular calendars like Outlook and Google Calendar.

\n

CLICK HERE for additional information

\n

CSV Generator add-on – included in the Platinum version of the plugin

\n

Export the information collected by the form to CSV files and attach them to the notification emails.

\n

CLICK HERE for additional information

\n

PDF Generator add-on – included in the Platinum version of the plugin

\n

An experimental add-on that generates PDF files with the information collected by the forms and attaches them to the notification emails.

\n

CLICK HERE for additional information

\n

WebMerge add-on – included in the Platinum version of the plugin

\n

Integrate the forms with the FormStack Documents service (formerly WebMerge) to generate PDF and Office documents with the information collected from the form.

\n

CLICK HERE for additional information

\n

Integrate the form with the Silverpop service (now: IBM Watson Campaign Automation) CLICK HERE for additional information

\n

PrintFriendly add-on – included in the Platinum version of the plugin

\n

Send the information collected by the forms to PrintFriendly and attach the resulting PDF files to the notification emails.

\n

CLICK HERE for additional information

\n

Mailchimp add-on – included in the Platinum version of the plugin

\n

Add new members to the MailChimp lists with the information collected by the form.

\n

CLICK HERE for additional information

\n

Mautic add-on – included in the Platinum version of the plugin

\n

Add/update contacts in the Mautic service with information collected by the forms.

\n

CLICK HERE for additional information

\n

HubSpot add-on – included in the Platinum version of the plugin

\n

Add/update HubSpot contacts with information collected by the forms.

\n

CLICK HERE for additional information

\n

Emma add-on – included in the Platinum version of the plugin

\n

Connect the forms to the Emma service to add new members to Emma groups.

\n

CLICK HERE for additional information

\n

Twilio add-on – included in the Platinum version of the plugin

\n

Send notification messages (SMS) through Twilio in the form’s submissions.

\n

CLICK HERE for additional information

\n

MailPoet add-on – included in the Platinum version of the plugin

\n

Adds subscribers to MailPoet Mailing Lists (MailPoet versions 2 and 3).

\n

CLICK HERE for additional information

\n

AffiliateWP add-on – included in the Platinum version of the plugin

\n

Integrate the forms with the “AffiliateWP” plugin.

\n

CLICK HERE for additional information

\n

Authorize.Net add-on – included in the Platinum version of the plugin

\n

The Authorize.net Server Integration Method (Authorize.net SIM) is a hosted payment processing solution that handles all of the steps in processing a transaction.

\n

CLICK HERE for additional information

\n

Stripe add-on – included in the Platinum version of the plugin

\n

The Stripe Payments add-on (www.stripe.com) provides a way to accept all major cards from customers around the world.

\n

CLICK HERE for additional information

\n

Skrill Payments Integration add-on – included in the Platinum version of the plugin

\n

An interface for accepting payments through secure pages.

\n

You can accept cards, more than 20 local payment methods, and over 80 direct bank transfer connections with a single integration.

\n

CLICK HERE for additional information

\n

TargetPay (iDeal) add-on – included in the Platinum version of the plugin

\n

Integrate with iDeal, the most popular Dutch payment method. The integration is made via TargetPay: https://www.targetpay.com/info/ideal?setlang=en

\n

CLICK HERE for additional information

\n

Mollie (iDeal) add-on – included in the Platinum version of the plugin

\n

Integrate with iDeal, the popular Dutch payment method.

\n

CLICK HERE for additional information

\n

RedSys / Servired / Sermepa add-on – included in the Platinum version of the plugin

\n

A secure interface for accepting credit card payments through most banks in Spain (Sabadell, Banco Popular, BBVA, Santander, Bankia-Caixa, Bankinter, etc.)

\n

CLICK HERE for additional information

\n

PayTM add-on – included in the Platinum version of the plugin

\n

A secure interface for accepting payments through credit cards, debit cards, net banking, wallets, and EMI. With over 100 million PayTM users in India, your customers will appreciate the option to pay with their trusted PayTM Wallet.

\n

CLICK HERE for additional information

\n

SagePay add-on – included in the Platinum version of the plugin

\n

A secure interface for accepting payments through SagePay.

\n

CLICK HERE for additional information

\n

Sage Payment add-on – included in the Platinum version of the plugin

\n

An interface for accepting payments through a secure SSL-checkout system for both bank cards and virtual check transactions. All authorized and approved transactions will be delivered to your current bank card and/or virtual check batches, viewable within the Virtual Terminal for order processing and settlement.

\n

CLICK HERE for additional information

\n","download_link":"https://downloads.wordpress.org/plugin/calculated-fields-form.zip","tags":{"calculator":"calculator","contact-form":"contact form","form":"form","form-builder":"form builder","quote-form":"quote form"},"donate_link":"http://cff.dwbooster.com","icons":{"1x":"https://ps.w.org/calculated-fields-form/assets/icon-128x128.jpg?rev=1734377","2x":"https://ps.w.org/calculated-fields-form/assets/icon-256x256.jpg?rev=1734377"},"wporg":true},{"name":"All in One SEO – Best WordPress SEO Plugin – Easily Improve SEO Rankings & Increase Traffic","slug":"all-in-one-seo-pack","version":"4.1.3.3","author":"All in One SEO Team","author_profile":"https://profiles.wordpress.org/smub","requires":"4.9","tested":"5.8","requires_php":"5.4","rating":90,"ratings":{"1":163,"2":21,"3":15,"4":58,"5":1499},"num_ratings":1756,"support_threads":124,"support_threads_resolved":114,"active_installs":2000000,"downloaded":83004263,"last_updated":"2021-08-16 1:02pm GMT","added":"2007-03-30","homepage":"https://aioseo.com/","short_description":"The original WordPress SEO plugin. Improve your WordPress SEO rankings and traffic with our comprehensive SEO tools and smart SEO optimizations.","description":"

AIOSEO – The Best WordPress SEO Plugin & Toolkit

\n

All in One SEO for WordPress is the original WordPress SEO plugin started in 2007. Over 2 million smart website owners use AIOSEO to properly setup WordPress SEO, so their websites can rank higher in search engines.

\n

We believe you shouldn’t have to hire an SEO expert or developer to properly setup WordPress SEO. That’s why we built AIOSEO as the most comprehensive WordPress SEO plugin and marketing toolkit, so you can improve your website’s SEO rankings and uncover new SEO growth opportunities in less than 10 minutes.

\n

At All in One SEO (AIOSEO), user experience is our #1 priority. From website SEO setup to ongoing SEO optimization, our team of SEO experts have created easy to follow SEO workflows that will help you outrank your competitors in search results. This is why many industry leaders award AIOSEO as the most beginner friendly WordPress SEO plugin that’s both EASY and POWERFUL!

\n

AIOSEO’s WordPress SEO plugin features are highly optimized for Google and other popular search engine algorithm because we follow the most up to date SEO standards and SEO best practices. We can honestly say that AIOSEO is the best WordPress SEO plugin in the world.

\n
\n

AIOSEO Pro
\n This plugin is the lite version of the All in One WordPress SEO Pro plugin that comes with all the SEO features you will ever need to rank higher in search engines including smart SEO schema markup, advanced SEO modules, powerful SEO sitemap suite, local SEO module, Google AMP SEO, WooCommerce SEO, and tons more. Click here to purchase the best premium WordPress SEO plugin now!

\n
\n

We took the pain out of optimizing WordPress SEO and made it easy. Here’s why smart business owners, SEO experts, marketers, and developers love AIOSEO, and you will too!

\n

\n

Properly Setup WordPress SEO (without Hiring an Expert)

\n

AIOSEO makes it easy to setup WordPress SEO, the RIGHT WAY. Our smart WordPress SEO setup wizard helps you optimize your website’s SEO settings based on your unique industry needs.

\n

In less than 10 minutes, you will be able to setup all the advanced WordPress SEO features like XML sitemaps, optimized search appearance, SEO meta title, SEO meta description, SEO keywords, Open Graph SEO Knowledge Panel information, social media integration, SEO search console / webmaster tool connections, local SEO, schema markup for SEO, and more.

\n

But don’t just take our word. See what another website owner like yourself is saying:

\n
\n

Swift, honest, full control. After all these years and having used almost every WP SEO plugin I’m amazed by AIOSEO’s depth, simplicity and fast workflow ❤️
\n @aaronbol

\n
\n

Optimize Your Pages for Higher SEO Rankings with TruSEO Analysis

\n

Creating SEO optimized content used to be hard. Why?

\n

Because most business owners aren’t SEO experts.

\n

That’s why we created the TruSEO score. This gives you a more in-depth SEO optimization analysis and an actionable SEO checklist, so you can easily optimize your website pages for any keyword to get higher SEO rankings and maximum traffic.

\n

Our SEO content analysis tool is enabled by default in both the Gutenberg block editor and Classic Editor, so you can quickly optimize your blog posts and pages for your SEO keywords to get higher SEO rankings.

\n

Our SEO readability analysis gives you further insights on how to improve your content for maximum SEO benefits.

\n

The best part about TruSEO analysis is that you can use it to optimize your posts / pages for unlimited SEO keywords.

\n

Seamless SEO Integrations with Webmaster Tools & Social Media

\n

All in One SEO for WordPress offers seamless integration with popular social media platforms like Facebook, Twitter, Pinterest, YouTube, LinkedIn, Instagram, and more.

\n

This ensures that your website preview is optimized for both search engines (SEO), and social media networks.

\n

AIOSEO also makes it easy to connect your website with Google Search Console, Bing webmaster tools, Yandex webmaster tools, Baidu webmaster tools, Google Analytics, and all other SEO webmaster tools.

\n

This helps you easily measure your SEO results and progress.

\n
\n

I’m a professional SEO and used many tools and extensions. Regarding simplicity, individuality and configurability All in One SEO Pro is by far the best SEO plugin out there for WordPress.
\n Joel Steinmann

\n
\n

Smart XML Sitemaps and Rich Snippets (SEO Schema Markup)

\n

Proper website SEO markup plays an important role in improving SEO rankings. That’s why smart SEO experts use AIOSEO for on-page SEO optimization.

\n

Aside from the comprehensive WordPress XML sitemap feature, we also offer News SEO sitemap and Video SEO sitemap to help you improve your website’s SEO ranking and get more traffic.

\n

AIOSEO comes with built-in smart SEO schema markup feature to help you get more traffic through SEO rich snippets, Google featured snippets, breadcrumb site links in SEO, and image SEO search results.

\n
\n

The best SEO plugin. All in One SEO is the best SEO Plugin. I personally find it better than Yoast. This plugin offers so much freedom in configuration.
\n hanapupu

\n
\n

Local SEO, WooCommerce SEO, Google AMP, and More

\n

All in One SEO is the most comprehensive WordPress SEO plugin / marketing toolkit in the world.

\n

We offer complete support for Google Knowledge Graph and Schema.org markup for local businesses. You can add multiple business locations, opening hours, contact info (business email, business phone, business address, etc) and more with our Local SEO module.

\n

AIOSEO also makes WooCommerce SEO easy. With our SEO plugin, you can optimize your product pages and product categories for better SEO rankings (with just a few clicks).

\n

Since AIOSEO is the original WordPress SEO plugin, we have SEO integrations with all popular WordPress plugins such as membership plugin SEO, landing page plugin SEO, Semrush SEO integration, etc. AIOSEO also offers Google AMP integration and works seamlessly with all popular speed & caching plugins.

\n
\n

Best SEO Plugin for WordPress. We continue to use All in One SEO on all our WordPress sites and Clients sites, and we recommend it too all other clients.
\n MySEOGuy

\n
\n

Since SEO is an essential feature, AIOSEO is a must have plugin for every website!

\n

SEO Redirection Manager and 404 Monitoring

\n

AIOSEO Redirection manager helps you set up proper 301 redirects to improve your SEO rankings.

\n

We also support other advanced SEO redirects including 302 redirects, 307 redirects, 410 redirection, 404 redirects, REGEX redirects for advanced SEO needs, and more.

\n

We have an automatic 404 error monitor that helps you track and redirect 404 errors, so you can prevent losing SEO rankings.

\n

Since redirect speed is important for SEO, we built in both Apache / NGINX server level redirects to help you get maximum SEO benefit.

\n

Full All in One SEO Feature List

\n
    \n
  • WordPress SEO Setup Wizard – Properly setup WordPress SEO in less than 10 minutes.
  • \n
  • On-page SEO Optimization – optimize SEO code markup (without hiring a developer)
  • \n
  • TruSEO score – detailed content & readability analysis to help you optimize your pages for higher SEO rankings.
  • \n
  • Smart Meta Title & Description – Automatic SEO generation, dynamic SEO smart tags, and more.
  • \n
  • Unlimited SEO Keywords – our SEO content analyzer helps you optimize your pages for unlimited SEO keywords.
  • \n
  • XML Sitemap – Advanced XML sitemaps to boost your SEO rankings.
  • \n
  • Video SEO Sitemap – Improve your SEO rankings with video sitemap.
  • \n
  • News SEO Sitemap – Increase your SEO traffic with Google News sitemap.
  • \n
  • RSS SEO Sitemap – Improve SEO crawl frequency with RSS sitemap.
  • \n
  • Automatic Image SEO – Our image SEO module helps your images rank higher.
  • \n
  • Local Business SEO – Improve your local business SEO presence with our local SEO module.
  • \n
  • Multiple location SEO – Great for SEO optimization for businesses with multiple local store locations.
  • \n
  • Rich Snippets Schema – Get better click through rate (CTR) and increase SEO rankings with rich snippets schema.
  • \n
  • SEO Knowledge Graph Support – Improve your website’s search appearance with SEO Knowledge panel.
  • \n
  • Advanced SEO Schema – Easily add advanced SEO schema markups like FAQ schema, product schema, recipe schema (food blogger SEO), software application schema markup (SaaS SEO), online course schema (for course SEO), and more.
  • \n
  • Sitelinks Search Box – Helps you get a search box in Google SEO rankings.
  • \n
  • Google Site Links – Our SEO markup can help you get sitelinks for your brand.
  • \n
  • Robots.txt Editor – Control what SEO robots can see with our easy SEO robots.txt editor.
  • \n
  • SEO Audit Checklist – Improve your website’s SEO ranking with our SEO audit checklist.
  • \n
  • Google Search Console – Connect your WordPress site with Google webmaster tools to see additional SEO insights.
  • \n
  • Search Engine Verification Tools – Easily integrate with other popular SEO webmaster tools to improve search visibility.
  • \n
  • Google AMP SEO – Improve your mobile SEO rankings with Google AMP SEO.
  • \n
  • Advanced SEO Canonical URLs – Prevent duplicate content in SEO with automatic canonical URLs and boost your SEO rankings.
  • \n
  • Advanced Robots Meta SEO Settings – granular controls for no index, no follow, no archive, no snippet, max snippet, max video, and more.
  • \n
  • RSS Content for SEO – Stop content theft from hurting your SEO rankings with our RSS Content tool.
  • \n
  • User Access Control – Control who can manage your SEO settings with our advanced SEO access control.
  • \n
  • Competitor Site SEO Analysis – Use our competitor SEO analysis to outrank them by improving your website’s SEO optimization.
  • \n
  • Smart Breadcrumbs – Add Breadcrumb navigation to improve user experience and boost your SEO rankings. Comes with full SEO JSON+LD support.
  • \n
  • Smart SEO Redirects – Setup proper 301 redirects to improve your SEO rankings.
  • \n
  • 404 Error Monitor for SEO – Monitor website 404 errors and set up proper SEO redirects to prevent losing SEO rankings.
  • \n
  • Title and Nofollow for SEO – We make it easy for you to add title and nofollow to external links to improve SEO rankings.
  • \n
\n

WordPress SEO Integrations

\n
    \n
  • WooCommerce SEO – optimize your WooCommerce product pages and improve your WooCommerce store’s SEO rankings.
  • \n
  • MemberPress SEO – optimize your MemberPress course pages and improve your membership site’s SEO rankings.
  • \n
  • Elementor SEO – add SEO optimization for your Elementor landing pages.
  • \n
  • LearnDash SEO – SEO optimization for LearnDash courses.
  • \n
  • Facebook SEO – SEO optimize your website preview on Facebook.
  • \n
  • Twitter SEO – SEO optimize your website preview on Twitter.
  • \n
  • Pinterest SEO – SEO optimize your website preview on Pinterest.
  • \n
  • Open Graph Support – improve your SEO with open graph meta data.
  • \n
  • Knowledge Panel SEO – improve website SEO apperance by adding social media profile links for Facebook, Twitter, Wikpedia, Instagram, LinkedIn, Yelp, YouTube, and more.
  • \n
  • SEO Webmaster Tool Content – Connect your WordPress site with various webmaster tools to improve SEO rankings.
  • \n
  • Semrush SEO integration – See additional SEO keywords and relevant SEO keyphrases with our Semrush SEO integration.
  • \n
\n

WordPress SEO Plugin Importer

\n
    \n
  • Yoast SEO Importer – easily switch from Yoast SEO to AIOSEO with our full SEO migration wizard that includes SEO keywords, SEO title, meta description, XML sitemaps and more.
  • \n
  • Yoast SEO Premium Importer – easily import Yoast SEO premium settings including SEO redirects to AIOSEO with our full SEO migration wizard.
  • \n
  • RankMath SEO Importer – easily switch from RankMath SEO to AIOSEO with our SEO migration wizard.
  • \n
  • SEO Settings Backup – create a backup of your AIOSEO settings.
  • \n
  • Advanced SEO Import / Export – easily import / export AIOSEO settings from one site to another.
  • \n
  • Redirection Importer – import your SEO redirects from the Redirection plugin with our SEO migration wizard.
  • \n
  • Simple 301 Redirects Importer – import your SEO redirects from Simple 301 redirets with our SEO migration wizard.
  • \n
  • Safe Redirection Manager – easily import SEO redirects from safe redirect manager with our SEO migration wizard.
  • \n
\n

After reading this feature list, you can probably imagine why AIOSEO is the best WordPress SEO plugin in the market.

\n

Give AIOSEO a try.

\n

Want to unlock more SEO features? Upgrade to AIOSEO Pro.

\n

Credits

\n

This plugin is created by Benjamin Rojas and Syed Balkhi.

\n

Branding Guideline

\n

AIOSEO® is a registered trademark of Semper Plugins LLC. When writing about the WordPress SEO plugin by AIOSEO, please use the following format.

\n
    \n
  • AIOSEO (correct)
  • \n
  • All in One SEO (correct)
  • \n
  • AIO SEO (incorrect)
  • \n
  • All in 1 SEO (incorrect)
  • \n
  • AISEO (incorrect)
  • \n
\n

What’s Next

\n

If you like our WordPress SEO plugin, then consider checking out our other projects:

\n
    \n
  • OptinMonster – Get More Email Subscribers with the most popular conversion optimization plugin for WordPress.
  • \n
  • WPForms – #1 drag & drop online form builder for WordPress.
  • \n
  • MonsterInsights – See the Stats that Matter and Grow Your Business with Confidence. Best Google Analytics Plugin for WordPress.
  • \n
  • SeedProd – Create beautiful landing pages with our powerful drag & drop landing page builder.
  • \n
  • WP Mail SMTP – Improve email deliverability for your contact form with the most popular SMTP plugin for WordPress.
  • \n
  • RafflePress – Best WordPress giveaway and contest plugin.
  • \n
  • Smash Balloon – #1 social feeds plugin for WordPress.
  • \n
  • SearchWP – advanced WordPress search plugin.
  • \n
  • PushEngage – best web push notification plugin.
  • \n
\n

Visit WPBeginner to learn from our WordPress Tutorials and find out about other best WordPress plugins.

\n","download_link":"https://downloads.wordpress.org/plugin/all-in-one-seo-pack.4.1.3.3.zip","tags":{"google-search-console":"google search console","meta-description":"meta description","schema":"schema","seo":"seo","xml-sitemap":"xml sitemap"},"donate_link":"","icons":{"1x":"https://ps.w.org/all-in-one-seo-pack/assets/icon.svg?rev=2443290","2x":"https://ps.w.org/all-in-one-seo-pack/assets/icon-256x256.png?rev=2443290","svg":"https://ps.w.org/all-in-one-seo-pack/assets/icon.svg?rev=2443290"},"wporg":true},{"name":"Translate WordPress – Weglot Translate","slug":"weglot","version":"3.3.6","author":"Weglot Translate team","author_profile":"https://profiles.wordpress.org/remyb92","requires":"4.5","tested":"5.8","requires_php":"5.6","rating":96,"ratings":{"1":39,"2":7,"3":6,"4":27,"5":1206},"num_ratings":1285,"support_threads":8,"support_threads_resolved":3,"active_installs":40000,"downloaded":1204390,"last_updated":"2021-08-18 2:44pm GMT","added":"2015-09-27","homepage":"http://wordpress.org/plugins/weglot/","short_description":"Translate your WordPress website in 110+ languages within minutes with Weglot Translate, without any coding.","description":"

Weglot Translate is the leading WordPress translation plugin, trusted by 60,000+ users worldwide. Translate your WordPress website into 110+ languages within minutes, no coding required.

\n

Increase visibility and boost conversions with ease by adding multilingual functionality. Weglot Translate is fully optimized for SEO, with every translated page automatically indexed by Google. Say hello in multiple languages to millions of new visitors.

\n

Make your website multilingual in minutes with a free trial. Visit https://weglot.com/ to learn more!

\n

How Weglot Translate works

\n\n

Why Weglot Translate

\n

It’s easy to install: Weglot Translate is quick to set up to have a multilingual WordPress website ready, instantly. Reach out to millions of new visitors worldwide with a few clicks, without any coding.

\n

It’s built for maximum compatibility: Weglot Translate is fully compatible with all platforms, WordPress themes, and plugins. From WooCommerce product descriptions to Elementor order forms, everything is translated into the languages of your choice. So you can focus on your content, not the technical details.

\n

It’s optimized for SEO: Weglot Translate follows Google’s best practices for multilingual website translation, serving all translated web pages with clean source code. Google will automatically index every translated page with dedicated URLs.

\n

It’s easy to set and forget: Weglot Translate automatically detects all your website content for easy translation. No more time-consuming manual duplication of every single line of content to get a multilingual website. All translations are updated in real-time, so you don’t need to worry about maintenance and any newly added content is automatically translated.

\n

It takes translation seriously: Weglot Translate gives you an edge on your translation tasks with the first layer of automatic translation provided by the best machine learning providers on the market (DeepL, Google, Microsoft, and Yandex). You can also edit the translations and collaborate with your team to work on translations together, directly within Weglot.

\n

It partners with the pros: Weglot Translate lets you order from vetted professional translators directly inside your Weglot dashboard. Set translation quality the way you want it to be, with Weglot Translate.

\n

“Within a week of translating our site to English with Weglot, international sales doubled, by the following month – they had quadrupled.”
\nClara Champion – Director of Digital and E-Commerce, Jimmy Fairly
\nRead the case study

\n

Multilingual functionality like no other

\n

Increase visibility: All translated pages are automatically indexed following Google’s best practices with dedicated URLs. Get new traffic with your multilingual website.

\n

Reduce bounce rate: Redirect visitors automatically to serve them in the language of their choice, based on their browser settings.

\n

Enhance user experience: From the landing page to the email confirmation, get all your key conversion steps translated in your customers’ language. You can even add different images and videos for various languages. Useful for images with text, Weglot Translate makes it easy to display “translated” images in your translated versions. Media localization is an essential aspect of any multilingual project and Weglot Translate makes it simple to do so.

\n

“We really loved the localization features provided by Weglot, such as the ability to translate images and other types of media depending on the language the visitor is viewing the site in.”
\nKim Martin – Senior Communications and Marketing Officer, The Challenge Initiative
\nRead the case study

\n

An all-in-one language translation platform

\n
    \n
  • Manage and edit all of your translations through a user-friendly interface.
  • \n
  • Collaborate with team members and trusted translators to translate together, directly inside Weglot.
  • \n
  • Is it a title? Is it a link? No more guessing the context of the text. Weglot Translate’s in-context editor lets you translate directly within the webpage.
  • \n
  • Make it your own. The language switcher is fully customizable for multiple design choices.
  • \n
  • Weglot Translate makes it easy to migrate from other WordPress multilingual plugins like Polylang or WPML. Simply deactivate your existing translation plugin and install Weglot Translate.
  • \n
\n

“Weglot removed the pain of having to manage multiple stores for multiple locales. The integration was easy, and the support is incredibly helpful. I highly recommend Weglot to anyone looking for a simple and cost-effective solution to translate their stores!”
\nMike Robertson – Director of Sales Operations, Nikon

\n

With an increase in site visitors and session duration thanks to your multilingual website, you can expect a massive boost to your conversions. See why thousands of e-commerce platforms, SaaS firms, marketplaces, corporate websites, and blogs worldwide love Weglot Translate. Try it today for free

\n","download_link":"https://downloads.wordpress.org/plugin/weglot.3.3.6.zip","tags":{"language":"language","localization":"localization","multilingual":"multilingual","translate":"translate","translation":"translation"},"donate_link":"","icons":{"1x":"https://ps.w.org/weglot/assets/icon-128x128.png?rev=2186774","2x":"https://ps.w.org/weglot/assets/icon-256x256.png?rev=2186774"},"wporg":true},{"name":"Rank Math SEO – Best SEO Plugin For WordPress To Increase Your SEO Traffic","slug":"seo-by-rank-math","version":"1.0.71.1","author":"Rank Math","author_profile":"https://profiles.wordpress.org/rankmath","requires":"5.6","tested":"5.8","requires_php":"7.2","rating":98,"ratings":{"1":69,"2":17,"3":20,"4":48,"5":3381},"num_ratings":3535,"support_threads":138,"support_threads_resolved":133,"active_installs":900000,"downloaded":19912354,"last_updated":"2021-09-03 7:13pm GMT","added":"2018-11-19","homepage":"https://s.rankmath.com/home","short_description":"Rank Math SEO is the Best WordPress SEO plugin combines the features of many SEO tools in a single package & helps you multiply your SEO traffic.","description":"

Rank Math SEO – Best SEO Plugin for WordPress
\n★★★★★

\n

SEO is the most consistent source of traffic for any website. We created Rank Math SEO, a WordPress SEO plugin, to help every website owner get access to the SEO tools they need to improve their SEO and attract more traffic to their website.

\n

Try The Demo

\n\n

Features | Why Choose Rank Math SEO? | Compare | Screenshots | Benefits

\n

SEO might be the best and most consistent source of traffic for one’s website, but it’s not without its quirks. The constant process of optimizing your posts can sometimes take more time than actually writing the content. If you always feel that you can do more on the SEO front for your website but don’t have the time, then Rank Math SEO is what you’re looking for.

\n

Its host of intelligent features brings top SEO capabilities in your hands that were previously out of reach. The smart automation features give you the power of an entire SEO team with just a few clicks. A well thought out design, powerful features, and years of development by the MyThemeShop squad make Rank Math SEO a game-changing SEO plugin that will level the SEO playing field in your favor to help increase traffic.

\n

Rank Math SEO beats all of its competitors, hands down.

\n

See the features which are exclusive to the Rank Math SEO plugin and understand why Rank Math SEO is possibly the Best SEO Plugin for WordPress.

\n
    \n
  • \n

    Setup Wizard (Easy to follow)
    \nRank Math SEO practically configures itself. Rank Math SEO features a step-by-step installation and configuration wizard that sets up SEO for WordPress perfectly.

    \n
  • \n
  • \n

    Google Schema Markup aka Rich Snippets Integrated
    \nConfiguring Google Schema Markup, aka Rich Snippets, is now easy, thanks to Rank Math SEO. With support for 16+ types of Schema Markups, aka Rich Snippets, including the Rating Schema, you’ll be able to optimize your posts in just a few clicks. It also includes the FAQ Schema aka FAQPage Schema Block & the HowTo aka How To Schema Block in the plugin.

    \n
  • \n
  • \n

    Optimize Unlimited Keywords
    \nUnlike other plugins, Rank Math SEO lets you optimize your posts for unlimited focus keywords per post. 5 by default. Increase by adding this filter.

    \n
  • \n
  • \n

    Google Search Console Integration
    \nRank Math SEO saves you a ton of time by integrating with Google Search Console and displaying important information about your website right inside WordPress.

    \n
  • \n
  • \n

    Google Keyword Ranking
    \nWith Rank Math SEO Plugin, you can track your keyword rankings in Google.

    \n
  • \n
  • \n

    Google Analytics Integration
    \nRank Math SEO offers a one-click solution to install Google Analytics script without pasting anything manually anywhere. You can also exclude the Logged-in users.

    \n
  • \n
  • \n

    Optimal Settings Pre-Selected
    \nConfiguring an SEO plugin takes time, and can be confusing. Rank Math SEO saves you the trouble with its optimal default settings, which are ideal for most websites, and if needed, can be changed.

    \n
  • \n
  • \n

    LSI Keyword Tool Integrated
    \nRank Math SEO’s integrated LSI keyword tool gives you multiple keyword variations of your focus keyword, which helps you attract more traffic to your posts. Free account needed.

    \n
  • \n
  • \n

    Add Overlay Icons On Social Images
    \nRank Math SEO makes social thumbnails click magnets by giving you the option of overlaying a GIF or a video icon on the thumbnail.

    \n
  • \n
  • \n

    Advanced SEO Analysis Tool
    \nWith just a single click, Rank Math SEO can perform an SEO audit of your website.

    \n
  • \n
  • \n

    30 Detailed SEO Tests
    \nRank Math SEO is designed to completely supercharge your website’s SEO with its 30 detailed SEO tests. Free account needed.

    \n
  • \n
  • \n

    Module Based System
    \nRank Math SEO has been designed with a module-based system, each of which can be enabled or disabled as per your needs, giving you extra speed and control.

    \n
  • \n
  • \n

    Smart Redirection Manager
    \nRank Math SEO’s built-in smart redirection manager will help you create, manage, delete, enable, or disable redirects at scale.

    \n
  • \n
  • \n

    Local Business SEO
    \nRank Math SEO is designed to be used by Global websites and local websites alike. With its local SEO features, local sites can stand out in the search engine results like Google’s and attract more traffic.

    \n
  • \n
  • \n

    SEO Optimized Breadcrumbs
    \nRank Math SEO can display SEO optimized Breadcrumbs on all websites, even if the theme doesn’t support Schema.org coding.

    \n
  • \n
  • \n

    404 Monitor
    \nRank Math SEO has a built-in 404 error monitor that helps you find and resolve 404 errors for a better user experience.

    \n
  • \n
  • \n

    Deep Content Analysis Tests
    \nOn-Page SEO is no longer a mystery with Rank Math SEO’s deep content analysis and precise SEO recommendations.

    \n
  • \n
  • \n

    Internal Linking Suggestions
    \nRank Math SEO intelligently suggests other posts from your website for internal linking from your current posts, improving the chances of ranking higher in the SERPs.

    \n
  • \n
  • \n

    Role Manager
    \nEven if you have multiple employees manage your website, you can precisely control what each of them has to access to in Rank Math SEO with its role manager.

    \n
  • \n
  • \n

    Multisite Ready
    \nWhether you run a single WordPress website or an entire network of sites – we are ready for you. Rank Math SEO fully supports the WordPress Multiuser project (WPMU).

    \n
  • \n
  • \n

    and has lightweight Code compared to slow-loading in other SEO plugins.
    \nEven with significantly more features than other plugins, Rank Math SEO loads amazingly fast and keeps your website fast always.

    \n
  • \n
\n

Why is Rank Math SEO such a game-changer?

\n
    \n
  • \n

    Auto Configuration — All you have to do is set a few options, and Rank Math SEO will configure itself perfectly for your website.

    \n
  • \n
  • \n

    Super Fast SEO Plugin — Even after packing so many features, Rank Math SEO has a negligible load on your server, thus making it one of the fastest SEO plugins for WordPress.

    \n
  • \n
  • \n

    Automatic Keyword Suggestions from Google — Get keyword suggestions from Google as you start typing letters in the focus keyword field of Rank Math SEO.

    \n
  • \n
  • \n

    New SEO Analyzer — Rank Math SEO’s built-in SEO analysis will give you SEO recommendations that you’d normally spend hundreds of dollars to get.

    \n
  • \n
  • \n

    Elementor SEO – Deep integration with the Elementor Page builder. Now, you don’t need to go back and forth between tabs to configure your page’s SEO. Everything related to SEO for Elementor can be configured in the visual editor.

    \n
  • \n
  • \n

    Divi SEO – One of its kind integration with the Divi Page Builder and theme. Handle everything related to SEO from the page editor screen without jumping back to the default editor. This helps you optimize your website in real-time for SEO.

    \n
  • \n
  • \n

    Page Builder SEO – The Rank Math SEO plugin’s content analysis works perfectly with popular page builders and themes like Oxygen Builder, WPBakery, Avada, Astra, Kadence, Themify, Beaver Builder, Page Builder Framework, Schema theme, Flothemes, OceanWP, etc.

    \n
  • \n
  • \n

    Optimize UNLIMITED Keywords At Once — You can optimize your post for up to 5 different keywords by default with the Rank Math SEO plugin and can use a filter to optimize for unlimited keywords.

    \n
  • \n
  • \n

    Image SEO – With Rank Math SEO’s perfect solution to add ALT & Title tags on the fly, to optimize images, showing inside the content, and that too for FREE, there is no reason to choose any other SEO solution that does not provide all the essential SEO features.

    \n
  • \n
  • \n

    Web Stories SEO – Make any Story created with the Google’s Web Stories plugin SEO-Ready. Automatically adds AMP-friendly Schema markup and Meta tags.

    \n
  • \n
  • \n

    WooCommerce SEO – Optimizing your store products is easier with Rank Math. SEO Meta tags and Schema are automatically added but can be customized with total control as well. Rank Math SEO has the most advanced SEO for WooCommerce.

    \n
  • \n
  • \n

    Google AMP SEO – Accelerated Mobile Pages need to be prepared for search engines. What better way to do that than letting Rank Math SEO use your regular SEO details and optimizing AMPs based on that data?

    \n
  • \n
  • \n

    bbPress SEO – User-generated content in bbPress is properly optimized with Rank Math handling all the important SEO aspects. Q&A Schema is added to bbPress topics along with other essential meta tags.

    \n
  • \n
  • \n

    BuddyPress SEO – As with bbPress, SEO for BuddyPress content is done automatically done using Rank Math. You get all the options you need to get higher rankings with your user-generated content.

    \n
  • \n
  • \n

    Quick Edit SEO Details – Go through a lot of posts/pages quickly by ensuring they are optimized for search engines. Quickly edit multiple SEO fields at once using Rank Math SEO.

    \n
  • \n
  • \n

    Instant Indexing for Bing – Get your content instantly indexed by Bing. Enter a few key details and you are all set and ready to go.

    \n
  • \n
  • \n

    Instant Indexing for Google – Instantly getting indexed by Google used to be reserved to huge brands and large websites. Not anymore. Just about anyone can take advantage of Google’s Instant Indexing feature using Rank Math SEO.

    \n
  • \n
  • \n

    Version Control – Rollback or try beta versions. Updating and downgrading your plugins is now a matter of few clicks. Automatically update to the latest versions or try out the latest beta builds.

    \n
  • \n
  • \n

    Translation Plugins Support — Rank Math SEO works flawlessly with the top translations plugins like WPML, TranslatePress, Weglot, Polylang (not entirely compatible yet), etc., making it a perfect companion.

    \n
  • \n
  • \n

    XML Sitemap – The Rank Math SEO plugin comes with a fast-loading Sitemap feature that works with different post types, including the custom ones, and provides deep controlling. One can also generate a Locations KML file via filter for Local Sitemap, & a WooCommerce Sitemap.

    \n
  • \n
  • \n

    1-Click Import From Yoast — With a single click of your mouse, Rank Math SEO can import all your settings from Yoast SEO & Yoast SEO Premium to itself. The transfer is instant, and you don’t lose any SERP rankings as a result.

    \n
  • \n
  • \n

    1-Click Import From AIO SEO — Rank Math SEO can also import all your settings from AIO SEO & All in One SEO Pack Pro in a single click. The transfer is instant, and you don’t lose any SERP rankings as a result.

    \n
  • \n
  • \n

    1-Click Import From All In One Schema Rich Snippets — Rank Math SEO can also import all of AIO’s Rich Snippet & Schema Pro settings in a few clicks, which help preserve your rich rankings when moving to Rank Math SEO.

    \n
  • \n
  • \n

    1-Click Import From SEOPress SEO — With a single click of your mouse, Rank Math SEO can import all your settings from SEOPress & SEOPress Pro SEO plugin to itself. The transfer is instant, and you don’t lose any SERP rankings as a result.

    \n
  • \n
  • \n

    1-Click Import From Redirection — Moving all your redirects shouldn’t be a hassle. That’s why we have made importing redirections from the popular Redirection plugin as simple as clicking a button.

    \n
  • \n
  • \n

    Google Keyword Suggestion — When deciding on focus keywords, Rank Math SEO can help you discover more keywords by pulling in automatic keyword suggestions from Google.

    \n
  • \n
\n

Who Can Benefit From Rank Math SEO?

\n

Rank Math SEO Plugin is perfect for:

\n

✔ Bloggers
\n✔ eCommerce Store Owners
\n✔ Niche Sites
\n✔ Businesses
\n✔ Local Businesses
\n✔ Startups
\n✔ The Real Estate
\n✔ Artists & Photographers
\n✔ The Solution Offerer
\n✔ Directories
\n✔ Vloggers (Video Bloggers)
\n✔ Or any WordPress Website

\n

Take a sneak peek into Rank Math SEO’s features

\n

Detailed Setup Tutorial

\n\n

List of Best Rank Math SEO Features

\n
    \n
  • Clean, & Simple User Interface
  • \n
  • Optimal Settings Pre-Selected
  • \n
  • Simple Setup Wizard\n
      \n
    • Compatibility Check
    • \n
    \n
  • \n
  • Auto Canonical URLs
  • \n
  • LSI Keyword Tool Integrated
  • \n
  • Google Search Console Integration
  • \n
  • Google Keyword Ranking
  • \n
  • Import Other Plugin Settings\n
      \n
    • 1 Click Import From Yoast SEO Plugin
    • \n
    • 1 Click Import From AIO SEO
    • \n
    • 1 Click Import From SEOPress & SEOPress Pro
    • \n
    • 1 Click Import From All In One Schema Rich Snippets & Schema Pro
    • \n
    • 1 Click Import From Redirection Plugin
    • \n
    \n
  • \n
  • Role Manager
  • \n
  • ACF Support
  • \n
  • AMP Ready
  • \n
  • bbPress & BuddyPress Modules
  • \n
  • Google Schema Markup Integrated\n
      \n
    • Article Rich Snippet
    • \n
    • Review Rich Snippet
    • \n
    • Book Rich Snippet
    • \n
    • Course Rich Snippet
    • \n
    • Event Rich Snippet
    • \n
    • Job Posting Rich Snippet
    • \n
    • Local Business Rich Snippet
    • \n
    • 193 Local Business Types
    • \n
    • Music Rich Snippet
    • \n
    • Person Rich Snippet
    • \n
    • Product Rich Snippet
    • \n
    • Recipe Rich Snippet
    • \n
    • Restaurant Rich Snippet
    • \n
    • Service Rich Snippet
    • \n
    • Software Application Rich Snippet
    • \n
    • Video Rich Snippet
    • \n
    • Author Stay Rating
    • \n
    \n
  • \n
  • Social Media Optimization\n
      \n
    • Add Overlay Icons On Social Images
    • \n
    • Default OpenGraph Thumbnail
    • \n
    • Auto Facebook Open Graph
    • \n
    • Facebook Authorship
    • \n
    • Facebook Open Graph for Homepage
    • \n
    • Automatic Twitter Meta Cards
    • \n
    • Twitter Card for Homepage
    • \n
    • Default Twitter Card Type
    • \n
    • Social Previews
    • \n
    \n
  • \n
  • Add Knowledge Graph\n
      \n
    • Represent site as a Person
    • \n
    • Represent site as a Company
    • \n
    • Set a Site Logo
    • \n
    \n
  • \n
  • Advanced SEO Analysis Tool\n
      \n
    • 30 Detailed SEO Tests
    • \n
    • SEO Analysis Score
    • \n
    \n
  • \n
  • Automated Image SEO
  • \n
  • Powerful Post Optimization\n
      \n
    • Add SEO Meta Box to all post types
    • \n
    • Bulk Edit Titles & Descriptions
    • \n
    • Post Preview on Google
    • \n
    • Content Analysis
    • \n
    • Control SEO For Single Pages
    • \n
    • Control The Title
    • \n
    • Control Meta Description
    • \n
    • Auto Add Additional Meta Data
    • \n
    • Control ROBOTS Meta
    • \n
    • Choose a Primary Category
    • \n
    \n
  • \n
  • Single Post/page Optimization\n
      \n
    • Focus Keyword
    • \n
    • Google Keyword Suggestion
    • \n
    • Optimize UNLIMITED Keywords (5 by default)
    • \n
    • Choose Pillar Posts & Pages
    • \n
    • Internal Linking Suggestions
    • \n
    • Capitalize Titles
    • \n
    • SEO Failed Tests
    • \n
    • SEO Warnings
    • \n
    \n
  • \n
  • XML Sitemap (New!)
  • \n
  • Module Based System
  • \n
  • Choose Any Separator Character
  • \n
  • Modify Global Meta
  • \n
  • Search Engine Verification Tools\n
      \n
    • Bing Site Verification
    • \n
    • Baidu Site Verification
    • \n
    • Alexa Site Verification
    • \n
    • Yandex Site Verification
    • \n
    • Google Site Verification
    • \n
    • Pinterest Site Verification
    • \n
    • Norton Safe Web Site Verification
    • \n
    \n
  • \n
  • Advanced Redirection Manager\n
      \n
    • Smart & Automatic Post Redirects
    • \n
    • 301 Redirection Type
    • \n
    • 302 Redirection Type
    • \n
    • 307 Redirection Type
    • \n
    • 410 Redirection Type
    • \n
    • 451 Redirection Type
    • \n
    • Support for REGEX
    • \n
    • Debug Redirections
    • \n
    \n
  • \n
  • Simple 404 Monitor\n
      \n
    • Advanced 404 Monitor
    • \n
    \n
  • \n
  • Advanced SEO Breadcrumbs\n
      \n
    • Auto Show SEO Breadcrumbs
    • \n
    \n
  • \n
  • Advanced Link Options\n
      \n
    • Nofollow All External Image Links
    • \n
    • Nofollow All External Links
    • \n
    • Open External Links in New Tab/Window
    • \n
    • Redirect Attachments to Parent
    • \n
    • Strip Category Base
    • \n
    \n
  • \n
  • Remove Stopwords from Permalinks
  • \n
  • Ping Search Engines
  • \n
  • Local SEO Optimization\n
      \n
    • Contact Info Shortcode
    • \n
    \n
  • \n
  • Deep Support For WooCommerce SEO
  • \n
  • Compatible for EDD SEO (Easy Digital Downloads SEO)
  • \n
  • Only 30k Lines of Code\n
      \n
    • PSR-4 Coding Standards (wherever possible)
    • \n
    \n
  • \n
  • Optimize Different Archives\n
      \n
    • Optimize Author Archive Pages
    • \n
    • Optimize Date Archive Pages
    • \n
    • Optimize Archive Pages
    • \n
    \n
  • \n
  • .htaccess Editor
  • \n
  • Robots.txt Editor
  • \n
  • Import/Export Settings
  • \n
  • Import/Export Redirections
  • \n
  • Add Content Before the RSS Feed
  • \n
  • Add Content After the RSS Feed
  • \n
  • Detailed Documentation\n
      \n
    • Contextual Help
    • \n
    \n
  • \n
\n

BIG Publications are Raving About Rank Math SEO

\n

Rank Math SEO Reviews

\n\n\n

Rank Math SEO Review – Why I Ditched Yoast For Rank Math SEO

\n

Rank Math SEO on Product Hunt

\n

Rank Math SEO Plugin Review from an SEO Consultant

\n

and many more

\n

Check RANK MATH PRO WHICH MAKES SEO EASIER & FASTER

\n\n

FREE VS PRO COMPARISON

\n

UNIQUE FEATURES OF RANK MATH PRO

\n

Google Analytics & Search Console Integration (The only SEO plugin that provides it)
\n✔ Integrated Google Analytics, AdSense & Search Console Data
\n✔ Analyze SEO Performance of Each Post & Page
\n✔ See Top Winning/Losing Posts & Keywords
\n✔ Keep Track of Position History
\n✔ Rank Tracker for Important Keywords

\n

Schema aka Structured Data aka Rich Snippets. The BEST Schema Generator Available Online
\n✔ 20+ Pre-defined Schema types (more than any other plugin) –
\n✔ Import Schema from Other Websites
\n✔ Advanced Schema Builder [Advanced SEOs can use this to create any complex Schema Markup)
\n✔ Schema Templates for Automation
\n✔ Conditional Schema Markup
\n✔ Inbuilt Schema Code Preview and Validation
\n✔ Multiple Location Schema On Any Page (using the Shortcode)

\n

Automation At Its BEST
\n✔ Automated Image SEO
\n✔ Advanced Filtering for Images [https://i.rankmath.com/zAUHHP]
\n✔ Watermark Your images
\n✔ Advanced Post filtering
\n✔ Bulk Actions [index, noindex, redirect, etc.]
\n✔ Quick Edit SEO Details
\n✔ Bulk Import SEO Meta Details Using CSV file
\n✔ Auto Detect Videos and Generate Schema Markup for Them
\n✔ Auto Fetch Thumbnail, Duration of YouTube & Vimeo Videos
\n✔ Automatically Flush Facebook Thumbnails
\n✔ Open External Links in New Tabs
\n✔ Nofollow External Links
\n✔ Noindex Paginated, Archive, Search Result Pages
\n✔ Instant Indexing for Bing [Also Google using our Instant Indexing Plugin]

\n

WooCommerce SEO
\n✔ Automatic Schema for WooCommerce Products
\n✔ Advanced Open Graph Tags for WooCommerce Products
\n✔ Automatic NoIndex Hidden Products
\n✔ Remove WooCommerce Product and Category Base
\n✔ Add Custom Brands to Products
\n✔ Add Global Identifier Like GTIN/MPN – Even to Variations

\n

Workflow Improvements
\n✔ Internal Role Manager
\n✔ Inbuilt Google Trends Insights
\n✔ Site Audit with 29 Unique Tests
\n✔ Import Redirections Using CSV File
\n✔ Categorize Redirections for Grouping
\n✔ One-Click Redirection for 404s
\n✔ Monitor Search Performance of Entire Portfolio
\n✔ Easy and Advanced Mode

\n

Miscellaneous
\n✔ Supports bbPress and BuddyPress SEO
\n✔ Version Control – Rollback or Try Beta Versions

\n

MANY MORE FEATURES
\n✔ PREMIUM 24x7x365 Dedicated Support Managers
\n✔ MOST COMPETITIVE PRICING EVER!

\n

CHEK ALL THE PREMIUM FEATURES AND PRICING HERE

\n

CONNECT WITH THE TEAM AND SEO EXPERTS

\n

JOIN FACEBOOK GROUP COMMUNITY: The purpose of this Facebook group is to have a collective place where the community can help each other, and we can get some feedback to improve Rank Math SEO as well. Joining the group is also a great way to connect with like-minded people and share your SEO experience.

\n

Branding Guideline

\n

Rank Math SEO® is a registered trademark. Please use the following format when mentioning the Rank Math SEO plugin anywhere.
\n* Rank Math SEO [correct]
\n* Rank Math SEO [incorrect]
\n* Rank Math SEO [incorrect]
\n* Rank Math SEO [incorrect]
\n* RankMath [incorrect]
\n* Rankmath [incorrect]
\n* rankmath [incorrect]
\n* rankMath [incorrect]

\n

Getting Started:

\n

1. How to Setup Rank Math SEO: Once you install Rank Math SEO for the first time, you will be greeted with the Setup Wizard, which is discussed in detail here.

\n

2. Facebook Group: In this group, you will find the team of Rank Math SEO plugin fairly active and ready to answer your SEO related queries.

\n

3. User Documentation: Although Rank Math SEO is already easy to set up, we’ve put together tutorials, guides, and some knowledge bases to help you set up and get started with Rank Math SEO.

\n

4. Contribute (Sharing is caring): If you are one of those caring hearts that want to help, go to our Rank Math SEO’s GitHub Repository and see how you can contribute to the SEO community. You can also add a new language via translate.wordpress.org.

\n

5. Fixing Common Errors: Sometimes, avoidable or common issues can get you stuck. We’ve created a common guide where we discuss all the common issues and how to fix them.

\n

6. Support Ticket Forum: Our dedicated forum is where you can get support for any issues that you face with Rank Math SEO. In the forum, we’ll also try to answer some SEO queries. User experience is important to us, and our aim is to answer all the queries on the forum in a timely manner.

\n

7. Frequently Asked Questions: Here, we’ve answered the most commonly asked questions about Rank Math SEO. The questions are related to features, pricing, and others.

\n","download_link":"https://downloads.wordpress.org/plugin/seo-by-rank-math.1.0.71.1.zip","tags":{"google-search-console":"google search console","redirection":"redirection","schema":"schema","seo":"seo","sitemap":"sitemap"},"donate_link":"","icons":{"1x":"https://ps.w.org/seo-by-rank-math/assets/icon.svg?rev=2348086","2x":"https://ps.w.org/seo-by-rank-math/assets/icon-256x256.png?rev=2348086","svg":"https://ps.w.org/seo-by-rank-math/assets/icon.svg?rev=2348086"},"wporg":true},{"name":"Head, Footer and Post Injections","slug":"header-footer","version":"3.2.2","author":"Stefano Lissa","author_profile":"https://profiles.wordpress.org/satollo","requires":"4.0","tested":"5.7.2","requires_php":"5.6","rating":98,"ratings":{"1":3,"2":2,"3":4,"4":13,"5":621},"num_ratings":643,"support_threads":1,"support_threads_resolved":0,"active_installs":300000,"downloaded":2776491,"last_updated":"2021-03-17 1:26pm GMT","added":"2008-04-07","homepage":"https://www.satollo.net/plugins/header-footer","short_description":"Header and Footer plugin let you to add html code to the head and footer sections of your blog... and more!","description":"

About WordPress SEO and Facebook Open Graph: I was very unpleased by Yoast invitation to
\nremove my plugin, and it’s not the case.
\nRead more here.

\n

Head and Footer Codes

\n

Why you have to install 10 plugins to add Google Analytics, Facebook Pixel, custom
\ntracking code, Google DFP code, Google Webmaster/Alexa/Bing/Tradedoubler verification code and so on…

\n

With Header and Footer plugin you can just copy the code those services give you
\nin a centralized point to manage them all. And theme independent: you can change your theme
\nwithout loosing the code injected!

\n

Injection points and features

\n
    \n
  • in the page section where most if the codes are usually added
  • \n
  • just after the tag as required by some JavaScript SDK (like Facebook)
  • \n
  • in the page footer (just before the tag)
  • \n
  • recognize and execute PHP code to add logic to your injections
  • \n
  • distinct desktop and mobile injections
  • \n
\n

AMP

\n

A new AMP dedicated section compatible with AMP plugin lets you to inject specific codes in
\nAMP pages. Should be ok even with other AMP plugins.

\n

Post Top and Bottom Codes

\n

Do you need to inject a banner over the post content or after it? No problem. With Header and
\nFooter you can:

\n
    \n
  • Add codes on top, bottom and in the middle of posts and pages
  • \n
  • Differentiate between mobile and desktop (you don’t display the same ad format on both, true?)
  • \n
  • Separate post and page configuration
  • \n
  • Native PHP code enabled
  • \n
  • Shortcodes enabled
  • \n
\n

Special Injections

\n
    \n
  • Just after the opening BODY tag
  • \n
  • In the middle of post content (using configurable rules)
  • \n
  • Everywhere on template (using placeholders)
  • \n
\n

bbPress

\n

The specific bbPress injections are going to be removed. Switch to my
\nAds for bbPress, which is more flexible and complete.

\n

Limits

\n

This plugin cannot change the menu or the footer layout, those features must be covered by your theme!

\n

Official page: Header and Footer.

\n

Other plugins by Stefano Lissa:

\n\n

Translation

\n

You can contribute to translate this plugin in your language on WordPress Translate

\n

Privacy and GDPR

\n

This plugin does not collect or process any personal user data.

\n","download_link":"https://downloads.wordpress.org/plugin/header-footer.3.2.2.zip","tags":{"blog":"blog","footer":"footer","header":"header","page":"page","single":"single"},"donate_link":"http://www.satollo.net/donations","icons":{"1x":"https://ps.w.org/header-footer/assets/icon-256x256.png?rev=1064219","2x":"https://ps.w.org/header-footer/assets/icon-256x256.png?rev=1064219"},"wporg":true},{"name":"WP Rocket","slug":"wp-rocket","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://wp-rocket.me/","short_description":"

Powerful caching to speed up your WordPress website in a few clicks. No coding required.

\n","description":"\n\n\n

Powerful caching to speed up your WordPress website in a few clicks. No coding required.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2020/06/WP-Rocket-285x160.png","2x":"https://amp-wp.org/wp-content/uploads/2020/06/WP-Rocket-372x209.png","svg":""},"wporg":false},{"name":"Statify","slug":"statify","version":"1.8.3","author":"pluginkollektiv","author_profile":"https://profiles.wordpress.org/pluginkollektiv","requires":"4.7","tested":"5.8","requires_php":"5.2","rating":94,"ratings":{"1":2,"2":0,"3":0,"4":3,"5":33},"num_ratings":38,"support_threads":3,"support_threads_resolved":1,"active_installs":200000,"downloaded":1499013,"last_updated":"2021-07-17 8:46am GMT","added":"2011-03-16","homepage":"https://statify.pluginkollektiv.org/","short_description":"Visitor statistics for WordPress with focus on data protection, transparency and clarity. Perfect as a widget in your WordPress Dashboard.","description":"

Statify provides a straightforward and compact access to the number of site views. It is privacy-friendly as it uses neither cookies nor a third party.

\n

An interactive chart is followed by lists of the most common reference sources and target pages. The period of statistics and length of lists can be set directly in the dashboard widget.

\n

Data Privacy

\n

In direct comparison to statistics services such as Google Analytics, WordPress.com Stats and Matomo (Piwik) Statify doesn’t process and store personal data as e.g. IP addresses – Statify counts site views, not visitors.

\n

Absolute privacy compliance coupled with transparent procedures: A locally in WordPress created database table consists of only four fields (ID, date, source, target) and can be viewed at any time, cleaned up and cleared by the administrator.

\n

Due to this tracking approach, Statify is 100% compliant with GDPR and serves as an lightweight alternative to other tracking services.

\n

Display of the widget

\n

The plugin configuration can be changed directly in the Statify Widget on the dashboard by clicking the Configure link.

\n

The amount of links shown in the Statify Widget can be set as well as the option to only count views from today. Of course, older entries are not deleted when changing this setting.

\n

The statistics for the dashboard widget are cached for four minutes.

\n

Period of data saving

\n

Statify stores the data only for a limited period (default: two weeks), longer intervals can be selected as option in the widget. Data which is older than the selected period is deleted by a daily cron job.

\n

An increase in the database volume can be expected because all statistic values are collected and managed in the local WordPress database (especially if you increase the period of data saving).

\n

JavaScript tracking for caching compatibility

\n

For compatibility with caching plugins like Cachify Statify offers an optional switchable tracking via JavaScript. This function allows reliable count of cached blog pages.

\n

For this to work correctly, the active theme has to call wp_footer(), typically in a file named footer.php.

\n

Skip tracking for spam referrers

\n

The comment blacklist can be enabled to skip tracking for views with a referrer URL listed in comment blacklist, i. e. which considered as spam.

\n

Support

\n

If you’ve problems or think you’ve found a bug (e.g. you’re experiencing unexpected behavior), please post at the support forums.

\n

Contribute

\n
    \n
  • Active development of this plugin is handled on GitHub.
  • \n
  • Pull requests for documented bugs are highly appreciated.
  • \n
  • If you want to help us translate this plugin you can do so on WordPress Translate.
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/statify.1.8.3.zip","tags":{"analytics":"analytics","dashboard":"dashboard","pageviews":"pageviews","privacy":"privacy","statistics":"statistics"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=TD4AMD2D8EMZW","icons":{"1x":"https://ps.w.org/statify/assets/icon-128x128.png?rev=2355063","2x":"https://ps.w.org/statify/assets/icon-256x256.png?rev=2355063"},"wporg":true},{"name":"LIQUID BLOCKS GALLERY 37+ Free Designs","slug":"liquid-blocks","version":"1.1.1","author":"LIQUID DESIGN Ltd.","author_profile":"https://profiles.wordpress.org/lqd","requires":"5.2","tested":"5.8","requires_php":false,"rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"num_ratings":1,"support_threads":1,"support_threads_resolved":0,"active_installs":4000,"downloaded":20103,"last_updated":"2021-07-22 6:55am GMT","added":"2019-10-18","homepage":"https://lqd.jp/wp/plugin.html","short_description":"If you’re looking to create block page sections that look great give LIQUID BLOCKS a…","description":"

If you’re looking to create block page sections that look great give LIQUID BLOCKS a try.

\n

In Gutenberg Block Template & Design Gallery, Just select your favorite design. Instantly create page section elements. Like a very simple page builder.

\n

You can manage Block Pattern. (WordPress 5.5+)
\nFully compatible with Gutenberg and themes and AMP.
\nlatest information on LIQUID PRESS.

\n

\n

Design Gallery

\n

Carefully selected 37+ Free Designs.
\n* Headlines
\n* Layouts (Q&A, Ranking, Column, Step, Fluid Shape.)
\n* Price list
\n* CTA
\n* Landing pages
\n* Block Patterns (You can register.)

\n

Toolbar

\n

Add to RichText Toolbar.
\n* Mark
\n* Underline
\n* Big
\n* Small

\n","download_link":"https://downloads.wordpress.org/plugin/liquid-blocks.zip","tags":{"block":"block","block-editor":"block-editor","blocks":"blocks","editor":"editor","gutenberg":"gutenberg"},"donate_link":"https://lqd.jp/wp/plugin.html","icons":{"1x":"https://ps.w.org/liquid-blocks/assets/icon-128x128.png?rev=2175390"},"wporg":true},{"name":"Schema","slug":"schema","version":"1.7.9.2","author":"Hesham","author_profile":"https://profiles.wordpress.org/hishaman","requires":"4.0","tested":"5.7.2","requires_php":"5.4","rating":90,"ratings":{"1":15,"2":6,"3":4,"4":8,"5":162},"num_ratings":195,"support_threads":3,"support_threads_resolved":0,"active_installs":60000,"downloaded":1083426,"last_updated":"2021-05-19 2:51pm GMT","added":"2016-05-11","homepage":"https://schema.press","short_description":"Get the next generation of Schema Structured Data to enhance your WordPress site presentation in Google search results.","description":"

Like Schema plugin? Consider leaving a 5 star review.

\n

Super fast, light-weight plugin for adding schema.org structured data markup in recommended JSON-LD format automatically to WordPress sites.

\n

Enhanced Presentation in Search Results By including structured data appropriate to your content, your site can enhance its search results and presentation.

\n

Check out the Plugin Homepage for more info and documentation.

\n

What is Schema markup?

\n

Schema markup is code (semantic vocabulary) that you put on your website to help the search engines return more informative results for users. So, Schema is not just for SEO reasons, it’s also for the benefit of the searcher.

\n

Schema.org Structured Data Demo & Examples

\n\n

Schema Key Features

\n
    \n
  • Easy to use, set it and forget it, with minimal settings.
  • \n
  • [Premium] Support for different schema.org types.
  • \n
  • Enable Schema types at once per post type or post category.
  • \n
  • [Premium] Enable Schema types anywhere you want on your site content.
  • \n
  • [Premium] Customize source data of schema.org properties.
  • \n
  • Valid markup, test it in Google Structured Data Testing Tool.
  • \n
  • Output JSON-LD format, the most recommended by Google.
  • \n
  • Reuse data saved in post meta, which is created by other plugins.
  • \n
  • Extensible, means you can extend its functionality via other plugins, extensions or within your Theme’s functions.php file.
  • \n
\n
\n

Note: some features are Premium. Which means you need Schema Premium to have those features. Get Schema Premium here!

\n
\n

Free vs Premium

\n
\n

See: a Free vs Premium comparison.

\n
\n

Free Plugin Extensions

\n
    \n
  • Schema Review: Extend Schema functionality by adding review and rating Structured Data functionality for Editors and Authors.
  • \n
  • Schema Default Image: Add ability to set a default WordPress Featured image for schema.org markup.
  • \n
\n

Premium Plugin Extensions

\n\n

Supported Google/Schema Markups

\n\n

Supported Schema.org Types

\n\n

Premium Supported Schema.org Types

\n
\n

Schema Premium has additional support for schema.org types, including:

\n
\n\n

Schema.org Markup Examples

\n

View our Live Structured Data Demo examples.

\n

Supported Plugins

\n

Schema plugin integrates and/or play nicely with (not necessarily a full integration):

\n
    \n
  • Yoast SEO
  • \n
  • AMP plugin (Automattic’s Accelerated Mobile Pages)
  • \n
  • Accelerated Mobile Pages – AMP for WP
  • \n
  • WPRichSnippets
  • \n
  • The SEO Framework
  • \n
  • WPBakery Page Builder
  • \n
  • ThirstyAffiliates
  • \n
  • [Premium] WooCommerce: Schema for WooCommerce extension.
  • \n
  • Easy Digital Downloads (EDD)
  • \n
\n

Supported Themes

\n

The plugin should work fine with any well coded WordPress theme, however these themes were tested and works properly with the plugin.

\n
    \n
  • Genesis 2.x
  • \n
  • Thesis 2.x
  • \n
  • Divi
  • \n
\n

Premium support

\n

schema.press team does not always provide active support for the Schema plugin on the WordPress.org forums, as we prioritize our email support. One-on-one email support is available to people who bought Schema Premium only.

\n

Note that the premium Schema Plugin also has several extra features too, including the option to enable more schema.org types, set content location target for markup, and map schema.org properties, so it is well worth your investment!

\n

Developers?

\n

Feel free to fork the project on GitHub and submit your contributions via pull request.

\n","download_link":"https://downloads.wordpress.org/plugin/schema.zip","tags":{"json-ld":"JSON-LD","rich-snippets":"rich snippets","schema":"schema","schema-org":"schema.org","structured-data":"structured data"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=NGVUBT2QXN7YL","icons":{"1x":"https://ps.w.org/schema/assets/icon-128x128.png?rev=1750172","2x":"https://ps.w.org/schema/assets/icon-256x256.png?rev=1750173"},"wporg":true},{"name":"Iframely – rich media embeds for 2000+ publishers","slug":"iframely","version":"0.7.2","author":"Itteco Corp.","author_profile":"https://profiles.wordpress.org/ivanp","requires":"3.5.1","tested":"5.4.6","requires_php":false,"rating":80,"ratings":{"1":2,"2":0,"3":1,"4":0,"5":7},"num_ratings":10,"support_threads":1,"support_threads_resolved":0,"active_installs":3000,"downloaded":97238,"last_updated":"2020-05-22 5:21pm GMT","added":"2013-10-03","homepage":"http://wordpress.org/plugins/iframely/","short_description":"Iframely extends WordPress default rich media embeds and adds support of over 2000 more providers…","description":"

Iframely extends WordPress default embeds and adds over 2000 more providers and cards as URL previews for the rest of the Web. Provides responsive embed codes, works with AMP.

\n

Just like default WordPress embeds, Iframely will detect URLs in your posts and replace it with responsive embed codes. Supports all usual suspects such as YouTube, Vimeo, Instagram, Facebook, Giphy, GfyCat, Imgur, Google +, GitHub Gists, Storify, SlideShare, Streamable, Vidme, Reddit, Dailymotion, Spotify, Tableau, Prezi, Apester, QZZR, Tidal, MLB. Well over two thousand of providers and keeps growing.

\n

Test your URL here to check if we support it.

\n

Iframely also generates and hosts summary cards as URL previews for general articles. It includes your own site, and Iframely can replace the default embed cards that your publish via WordPress for other sites to use.

\n

API key and paid/free

\n

Powered by Iframely cloud service and requires an account with us. Grab an API key for extended trial at iframely.com, or test the plugin out without an API key.

\n

Before you push the plugin to production, a service subscription is required to avoid any possible disruptions.

\n

We maintain an overwhelming number of integrations and widgets in the background for you, and make sure your sites remains fast and keeps your users happy. This requires a substantial effort on our part, and we won’t be able to provide it without requiring a service subscription.

\n

How to use:

\n

The plugin works the same way the standard oEmbed is supported by WordPress: URL on a separate line.

\n

For example,

\n
Check out this cool video:\n\nhttp://your.url/here\n\nThat was a cool video.\n
\n

Iframely also has its own shortcode [iframely]http://your.url/here[/iframely].

\n

Heads-up:

\n

Iframely does not simply wrap URLs with <iframe src=...> code. That’s not what Iframely is for. We can only match URLs to the known embed codes if publisher offers them for manual copy-paste, or generate a summary card for URL preview if a publisher provides at least a thumnnail image.

\n

To keep default embed providers

\n

By default, Iframely will inject itself to be the first embeds provider in the list, thus intercepting all URLs. It means that the default providers that are later in the list won’t get called and will thus be disabled.

\n

It means Iframely replaces default YouTube, Vimeo, Twitter, other oEmbed plugins that you might have(like JetPack), etc.

\n

Although we should support the same providers and output the same code, just make it responsive and add extra features, you can still disable such behavior and tell Iframely to only process links that otherwise don’t have an embed provider.

\n

Just choose this option in your settings. It will essentially put Iframely to be the last in the list, be “a catcher”, rather then “an interceptor”.

\n

URL editor options

\n

You can fine-tune many aspects of Iframely on your dashboard at iframely.com. This would include some most common settings for popular rich media publishers. Our support team can also fine-tune many other publishers, just for you.

\n

However, you might need a per-post editor for the widgets options. And, Iframely does provide this too. It’s done via URL options editor, and available for higher-tier plans, or during your initial trial period. Make sure to check it out.

\n

AMP support

\n

Yes, Iframely works nicely with AMP WP plugin. It catches all missing embeds and follow your Iframely settings. But you can also opt to have Iframely for all embeds, including default AMP embeds too. For example, Facebook video will be indeed a nice video without user’s text message.

\n","download_link":"https://downloads.wordpress.org/plugin/iframely.zip","tags":{"embed":"embed","embed-code":"embed code","iframely":"iframely","oembed":"oembed","responsive":"responsive"},"donate_link":"","icons":{"default":"https://s.w.org/plugins/geopattern-icon/iframely.svg"},"wporg":true},{"name":"Pym.js Embeds","slug":"pym-shortcode","version":"1.3.2.4","author":"INN Labs","author_profile":"https://profiles.wordpress.org/automattic","requires":"3.0.1","tested":"5.4.6","requires_php":"5.3","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":1,"support_threads_resolved":0,"active_installs":100,"downloaded":2298,"last_updated":"2020-03-26 6:09pm GMT","added":"2016-06-17","homepage":"https://github.com/INN/pym-shortcode","short_description":"A WordPress block and shortcode for embedding iframes that are responsive horizontally and vertically, using…","description":"

Pym.js Embeds provides shortcode and Gutenberg block wrappers for embedding responsive iframes using Pym.js, developed by the NPR Visuals Team. Embedded content resizes vertically to match its container’s width.

\n

AMP compatibility is provided by the official AMP plugin.

\n

Pym.js Resources from NPR

\n

You may also want to look at NPR’s Pym.js resources:

\n\n","download_link":"https://downloads.wordpress.org/plugin/pym-shortcode.1.3.2.4.zip","tags":{"embeds":"Embeds","iframe":"iframe","javascript":"javascript","responsive":"responsive","shortcode":"shortcode"},"donate_link":"https://inn.org/donate","icons":{"1x":"https://ps.w.org/pym-shortcode/assets/icon.svg?rev=1944461","svg":"https://ps.w.org/pym-shortcode/assets/icon.svg?rev=1944461"},"wporg":true},{"name":"PWA","slug":"pwa","version":"0.6.0","author":"PWA Plugin Contributors","author_profile":"https://profiles.wordpress.org/westonruter","requires":"5.5","tested":"5.7.2","requires_php":"5.6","rating":84,"ratings":{"1":3,"2":0,"3":0,"4":0,"5":12},"num_ratings":15,"support_threads":8,"support_threads_resolved":6,"active_installs":40000,"downloaded":291751,"last_updated":"2021-03-09 8:50pm GMT","added":"2018-07-12","homepage":"https://github.com/GoogleChromeLabs/pwa-wp","short_description":"WordPress feature plugin to bring Progressive Web App (PWA) capabilities to Core","description":"

\nProgressive Web Apps are user experiences that have the reach of the web, and are:

\n
    \n
  • Reliable – Load instantly and never show the downasaur, even in uncertain network conditions.
  • \n
  • Fast – Respond quickly to user interactions with silky smooth animations and no janky scrolling.
  • \n
  • Engaging – Feel like a natural app on the device, with an immersive user experience.
  • \n
\n

This new level of quality allows Progressive Web Apps to earn a place on the user’s home screen.\n

\n

Continue reading more about Progressive Web Apps (PWA) from Google.

\n

In general a PWA depends on the following technologies to be available:

\n\n

This plugin serves as a place to implement support for these in WordPress with the intention of being proposed for core merge, piece by piece.

\n

This feature plugin is not intended to obsolete the other plugins and themes which turn WordPress sites into PWAs. Rather, this plugin is intended to provide the PWA building blocks and coordination mechanism for these themes and plugins to not reinvent the wheel and also to not conflict with each other. For example, a theme that implements the app shell model should be able to extend the core service worker while a plugin that provides push notifications should be able to do the same. Themes and plugins no longer should have to each create a service worker on their own, something which is inherently problematic because only one service worker can be active at a time: only one service worker can win. If you are developing a plugin or theme that includes a service worker, consider relying on this PWA plugin, or at least only use the built-in implementation as a fallback for when the PWA plugin is not available.

\n

In versions prior to 0.6, no caching strategies were added by default. The only service worker behavior was to serve an offline template when the client’s connection is down or the site is down, and also to serve an error page when the server returns with 500 Internal Server Error. As of 0.6, there is a new “Offline browsing” toggle on the Reading Settings screen in the admin. It is disabled by default, but when enabled a network-first caching strategy is registered for navigations so that the offline page won’t be shown when accessing previously-accessed pages. The network-first strategy is also used for assets from themes, plugins, and WordPress core. In addition, uploaded images get served with a stale-while-revalidate strategy. For all the details on these changes, see the pull request.

\n

Documentation for the plugin can be found on the GitHub project Wiki.

\n

Development of this plugin is done on GitHub. Pull requests welcome. Please see issues reported there before going to the plugin forum.

\n","download_link":"https://downloads.wordpress.org/plugin/pwa.0.6.0.zip","tags":{"https":"https","progressive-web-apps":"progressive web apps","pwa":"pwa","service-workers":"service-workers.","web-app-manifest":"web app manifest"},"donate_link":"","icons":{"1x":"https://ps.w.org/pwa/assets/icon.svg?rev=1908485","2x":"https://ps.w.org/pwa/assets/icon-256x256.png?rev=1908485","svg":"https://ps.w.org/pwa/assets/icon.svg?rev=1908485"},"wporg":true},{"name":"MC4WP: Mailchimp for WordPress","slug":"mailchimp-for-wp","version":"4.8.6","author":"ibericode","author_profile":"https://profiles.wordpress.org/dvankooten","requires":"4.6","tested":"5.8","requires_php":"5.3","rating":96,"ratings":{"1":35,"2":10,"3":16,"4":35,"5":1277},"num_ratings":1373,"support_threads":46,"support_threads_resolved":43,"active_installs":2000000,"downloaded":35714933,"last_updated":"2021-08-04 7:14am GMT","added":"2013-06-19","homepage":"https://www.mc4wp.com/#utm_source=wp-plugin&utm_medium=mailchimp-for-wp&utm_campaign=plugins-page","short_description":"Mailchimp for WordPress, the #1 unofficial Mailchimp plugin.","description":"

Mailchimp for WordPress

\n

Allowing your visitors to subscribe to your newsletter should be easy. With this plugin, it finally is.

\n

This plugin helps you grow your Mailchimp lists and write better newsletters through various methods. You can create good looking opt-in forms or integrate with any existing form on your site, like your comment, contact or checkout form.

\n\n

Some (but not all) features

\n
    \n
  • \n

    Connect with your Mailchimp account in seconds.

    \n
  • \n
  • \n

    Sign-up forms which are good looking, user-friendly and mobile optimized. You have complete control over the form fields and can send anything you like to Mailchimp.

    \n
  • \n
  • \n

    Seamless integration with the following plugins:

    \n
      \n
    • Default WordPress Comment Form
    • \n
    • Default WordPress Registration Form
    • \n
    • Contact Form 7
    • \n
    • WooCommerce
    • \n
    • Gravity Forms
    • \n
    • Ninja Forms 3
    • \n
    • WPForms
    • \n
    • BuddyPress
    • \n
    • MemberPress
    • \n
    • Events Manager
    • \n
    • Easy Digital Downloads
    • \n
    • Give
    • \n
    • UltimateMember
    • \n
    \n
  • \n
  • \n

    A multitude of available add-on plugins and integrations:

    \n\n
  • \n
  • \n

    Well documented. Our knowledge base is updated daily.

    \n
  • \n
  • \n

    Developer friendly. For inspiration, check out our repository of example code snippets.

    \n
  • \n
\n
\n

Become a Premium user

\n

Mailchimp for WordPress has a Premium add-on which comes with several additional benefits.

\n
    \n
  • Multiple forms
  • \n
  • Advanced e-commerce integration for WooCommerce
  • \n
  • Email notifications
  • \n
  • An easy way to style your forms
  • \n
  • Detailed reports & statistics
  • \n
\n

View more Premium features

\n
\n

What is Mailchimp?

\n

Mailchimp is a newsletter service that allows you to send out email campaigns to a list of email subscribers. It is free for lists up to 2000 subscribers, which is why it is the newsletter-service of choice for thousands of businesses.

\n

This plugin allows you to tightly integrate your WordPress site with your Mailchimp account.

\n

If you are not yet using Mailchimp, creating an account is 100% free and only takes you about 30 seconds.

\n

Support

\n

Use the WordPress.org plugin forums for community support where we try to help all of our users. If you found a bug, please create an issue on Github where we can act upon them more efficiently.

\n

If you’re a premium user, please use the email address inside the plugin for support as that will guarantee a faster response time.

\n

Please take a look at the Mailchimp for WordPress knowledge base as well.

\n

Add-on plugins

\n

There are several add-on plugins available, which help you get even more out of your site.

\n

Translations

\n

You can help translate Mailchimp for WordPress into your language using your WordPress.org account.

\n

Development

\n

This plugin is being developed on GitHub. If you want to collaborate, please look at ibericode/mailchimp-for-wordpress.

\n

Customizing the plugin

\n

The plugin provides various filter & action hooks that allow you to modify or extend default behavior. We’re also maintaining a collection of sample code snippets.

\n","download_link":"https://downloads.wordpress.org/plugin/mailchimp-for-wp.4.8.6.zip","tags":{"email":"email","mailchimp":"mailchimp","marketing":"marketing","mc4wp":"mc4wp","newsletter":"newsletter"},"donate_link":"https://www.mc4wp.com/#utm_source=wp-plugin-repo&utm_medium=mailchimp-for-wp&utm_campaign=donate-link","icons":{"1x":"https://ps.w.org/mailchimp-for-wp/assets/icon-128x128.png?rev=1224577","2x":"https://ps.w.org/mailchimp-for-wp/assets/icon-256x256.png?rev=1224577"},"wporg":true},{"name":"Site Kit by Google","slug":"google-site-kit","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://sitekit.withgoogle.com/","short_description":"

Site Kit is the official WordPress plugin from Google for insights about how people find and use your site. Site Kit is the one-stop solution to deploy, manage, and get insights from critical Google tools to make the site successful on the web. It provides authoritative, up-to-date insights from multiple Google products directly on the

\n

Read More

\n","description":"\n\n\n

Site Kit is the official WordPress plugin from Google for insights about how people find and use your site. Site Kit is the one-stop solution to deploy, manage, and get insights from critical Google tools to make the site successful on the web. It provides authoritative, up-to-date insights from multiple Google products directly on the WordPress dashboard for easy access, all for free.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2019/12/site-kit-by-google-logo-285x160.png","2x":"https://amp-wp.org/wp-content/uploads/2019/12/site-kit-by-google-logo-372x209.png","svg":""},"wporg":false},{"name":"Newspack Blocks","slug":"newspack-blocks","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://github.com/Automattic/newspack-blocks","short_description":"

A collection of useful and easy to use Gutenberg based blocks, developed primarily for the Newspack project.

\n","description":"\n\n\n

A collection of useful and easy to use Gutenberg based blocks, developed primarily for the Newspack project.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2019/11/newspack_blocks-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2019/11/newspack_blocks-372x209.jpg","svg":""},"wporg":false},{"name":"Advanced Ads – Ad Manager & AdSense","slug":"advanced-ads","version":"1.28.0","author":"Thomas Maier, Advanced Ads GmbH","author_profile":"https://profiles.wordpress.org/webzunft","requires":"4.9","tested":"5.8","requires_php":"5.6","rating":98,"ratings":{"1":17,"2":1,"3":9,"4":21,"5":1181},"num_ratings":1229,"support_threads":73,"support_threads_resolved":68,"active_installs":100000,"downloaded":5160565,"last_updated":"2021-09-07 8:15am GMT","added":"2014-06-23","homepage":"https://wpadvancedads.com","short_description":"Manage and optimize all ad types. Support for Google AdSense Auto ads, Amazon, image banners,…","description":"

Are you looking for a simple ad manager plugin? These are the top arguments to use Advanced Ads:

\n
    \n
  • approved in publishing and ad optimization since 2009
  • \n
  • works with all ad types and networks, including Google AdSense, Google Ad Manager (formerly Google DoubleClick for Publishers, DFP), Amazon ads, or media.net ads
  • \n
  • most features to test and optimize ads
  • \n
  • unlimited ad units
  • \n
  • ads.txt support
  • \n
  • dedicated ad block for the block editor
  • \n
  • Google AdSense Partner, who implements all technical changes early and in 100% compliance with the Google AdSense policies
  • \n
  • the only advertising solution with Ad Health integration and Google AdSense violation checks
  • \n
  • best rated free support
  • \n
\n

This is what our users are saying about Advanced Ads:

\n
\n

We use this plugin to deliver rotating ads on a community news site, and it’s great. Both feature-rich and reliable, your imagination is the limit when it comes to the product you want to create for your users. We’ve delivered over a million ad impressions since we launched less than a year ago, using a combination of sidebar, top, sticky and in-content placements — both HTML5 and images. Advanced Ads makes it easy for our small team to deliver a good experience to our users and our advertisers.
\n mytown304 on wp.org

\n
\n

Would you like to know if there is a certain feature, what the optimized setup would be, or how to implement your client’s demands? Just open a thread in the forum!

\n

Advanced Ads allowed us to grow from 0 to 100 MM monthly ad impressions. Benefit from our experience as a publisher and monetize your website today!

\n

Full Feature List.

\n

ad management

\n
    \n
  • create and display unlimited ad units
  • \n
  • rotate ads
  • \n
  • schedule ads and set start time and expiration date
  • \n
  • target ads by content and user groups
  • \n
  • inject ads into posts and pages automatically without coding
  • \n
\n

ad types

\n

choose between different ad types that enable you to:

\n
    \n
  • insert ads and banners from all ad and affiliate networks (e.g., Google AdSense, Amazon, BuySellAds, Google Ad Manager (formerly Google DoubleClick for Publishers, DFP), Ezoic, media.net, Booking.com, Tradedoubler, Awin, Getyourguide, The Moneytizer, Infolinks…)
  • \n
  • dedicated support for all types of Google AdSense ads, including text and display ads, native ads (In-article, In-feed, matched content), Auto ads, and Auto ads for AMP
  • \n
  • display images and image banners
  • \n
  • create content-rich ads with the WordPress TinyMCE editor
  • \n
  • insert contextual Amazon Native Shopping Ads
  • \n
  • inject HTML, CSS, Javascript or PHP code
  • \n
  • use shortcodes within ads (to also deliver advertisements from another ad plugin like Ad Inserter, AdRotate, Quick AdSense, WP Bannerize, or the Google AdSense Plugin WP QUADS)
  • \n
\n

display ads for WP

\n
    \n
  • auto-inject ads via placements
  • \n
  • use functions to display ads in template files
  • \n
  • use shortcodes to place ads manually in post content
  • \n
  • show ads in the sidebar and in widgets
  • \n
  • disable all ads on specific pages
  • \n
  • display multiple ads (ad blocks)
  • \n
  • display a customizable ad label, e.g., “Advertisements” above each banner ad
  • \n
\n

display conditions

\n

show ads based on conditions like:

\n
    \n
  • individual posts, pages, and other post types
  • \n
  • posts by category, tags, taxonomies, author, and age
  • \n
  • archive pages by category, tags, taxonomies
  • \n
  • special page types like 404, attachment and front page
  • \n
  • hide ads on secondary queries (e.g., posts in sidebars)
  • \n
  • display or hide banners within the post feed
  • \n
  • hide all ads from specific page types, e.g., 404 pages, feed
  • \n
  • hide ads from bots and web crawlers
  • \n
\n

visitor conditions

\n

serve ads by conditions based on the visitor. List of all visitor conditions

\n
    \n
  • display or hide a banner by device: mobile and tablet or desktop
  • \n
  • display or hide a banner by role and for logged-in visitors
  • \n
  • advanced visitor conditions: previously visited URL (referrer), user capability, browser language, browser and device, URL parameters included in Pro
  • \n
  • display ads by geolocation with the Geo Targeting add-on
  • \n
  • display ads by browser width with the Responsive add-on
  • \n
\n
\n

Fantastic plugin and outstanding support
\n I tried at least three other ad plugins for WordPress and ‘Advanced Ads’ is by and far the best one. Last but not least in the support. The first port of call are a number of excellent tutorials. And finally the hands on support. I don’t quite know how he does it but the speed and depth of responses are absolutely amazing.
\n djsawyer on wp.org

\n
\n

ad injection | placements

\n

Placements to insert ads in pre-defined positions in your theme and content. List of all placements

\n
    \n
  • ads after any given paragraph, headline, image, or other HTML element
  • \n
  • ads at the top or bottom of the post content
  • \n
  • ads before closing </head> tag
  • \n
  • ads in the footer
  • \n
  • test placements against each other with Pro (A/B testing)
  • \n
  • many more ad positions with add-ons
  • \n
  • automatic insertion of any kind of code into header or footer, not only advertising
  • \n
\n

mobile devices

\n
    \n
  • display ads on mobile and tablets or desktop only
  • \n
  • display responsive image ads
  • \n
  • ads for specific browser sizes only using Responsive Ads
  • \n
  • inserting ads on AMP pages with Responsive Ads
  • \n
\n

Google AdSense

\n

Amazing features of the most powerful and easy Google AdSense plugin.

\n
    \n
  • unlimited Google AdSense ads banners
  • \n
  • pull ad units directly from your Google AdSense account
  • \n
  • show AdSense revenue in WP Admin
  • \n
  • change settings of your Google AdSense ads directly from your WordPress backend
  • \n
  • supports all Google AdSense ad types, including Google AdSense display ads, native ads like In-feed ads, In-article ads, matched content ads, Google AdSense Auto ads, and Google AdSense Auto ads for AMP
  • \n
  • change type and sizes of AdSense ads without going into your Google AdSense account
  • \n
  • hide Google AdSense advertisements on 404 pages by default (to comply with Google AdSense terms)
  • \n
  • insert Google AdSense code for verification and AdSense Auto Ads
  • \n
  • enable AdSense Auto ads on AMP
  • \n
  • easy Ad Health integration and Google AdSense violation checks
  • \n
  • option to remove the Google AdSense background color
  • \n
  • place Google AdSense In-feed ads using the also free In-feed add-on
  • \n
  • assistant for exact sizes of responsive Google AdSense ads with the Responsive add-on
  • \n
  • convert Google AdSense ads into AMP ads automatically with the Responsive add-on
  • \n
  • ads.txt generated with the correct AdSense information automatically
  • \n
  • works along with Google Site Kit or can replace it if you want to control your ad placements
  • \n
\n

\n

\n

Like j4ckson185, there are thousands of happy AdSense users:

\n
\n

Your app is awesome, congratulations! Google Adsense suggests using your app on its official website, it’s incredible!

\n
\n

ads.txt

\n
    \n
  • generates an ads.txt with custom content
  • \n
  • adds the content for AdSense to the ads.txt automatically
  • \n
\n

\n

\n

ad blocker

\n
    \n
  • basic features to prevent ads from being removed by AdBlock and other ad blockers
  • \n
  • prevent ad blockers from breaking sites where plugin scripts are running
  • \n
  • ad blocking detection: show alternative content to ad block users with Pro and improve the monetization of your website
  • \n
\n

Learn more on the plugin homepage.

\n

Thank you for motivating us with your positive review.

\n

Localizations: Arabic, Chinese, Czech, Danish, Dutch, English, French, German, Hungarian, Italian, Japanese, Norwegian, Polish, Portuguese, Russian, Slovak, Spanish, Turkish, Vietnamese

\n
\n

Add-Ons

\n
    \n
  • all add-ons include priority email support
  • \n
  • Advanced Ads Pro – powerful tools for ad optimizations: cache-busting, more placements, lazy loading, ad blocker module, click fraud protection, and many more
  • \n
  • Tracking – track ad impressions and ad clicks with local methods or Google Analytics
  • \n
  • Responsive Ads – target ads to specific browser sizes and create ads for AMP
  • \n
  • Google Ad Manager Integration – a quick and error-free way to load ad units from your Google Ad Manager (formerly Google DoubleClick for Publishers, DFP) account without touching any ad codes
  • \n
  • Geo Targeting – display ads based on the geo location of the visitor
  • \n
  • Sticky Ads – increase click rates with fixed, sticky, and anchor ads
  • \n
  • Fixed Widget for WordPress – turn sidebar widgets into performant fixed sticky ads
  • \n
  • PopUp and Layer Ads – display ads and other content in layers and popups
  • \n
  • Selling Ads – allows you to sell ads on your website fully automated, including payments and advertiser profiles.
  • \n
  • Ad Slider – create a simple slider from your ads
  • \n
\n
\n

If you have problems with Advanced Ads, please reach out to our support or open a new topic in our forums on wordpress.org
\n.

\n

Integrations

\n

Advanced Ads integrates with plenty of other plugins:

\n\n","download_link":"https://downloads.wordpress.org/plugin/advanced-ads.1.28.0.zip","tags":{"ad-manager":"ad manager","ad-rotation":"ad rotation","ads":"ads","adsense":"adsense","banner":"banner"},"donate_link":"","icons":{"1x":"https://ps.w.org/advanced-ads/assets/icon-128x128.gif?rev=2293174","2x":"https://ps.w.org/advanced-ads/assets/icon-256x256.gif?rev=2293174"},"wporg":true},{"name":"Syntax-highlighting Code Block (with Server-side Rendering)","slug":"syntax-highlighting-code-block","version":"1.3.1","author":"Weston Ruter","author_profile":"https://profiles.wordpress.org/westonruter","requires":"5.5","tested":"5.7.2","requires_php":"5.6","rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":18},"num_ratings":18,"support_threads":1,"support_threads_resolved":0,"active_installs":1000,"downloaded":11981,"last_updated":"2021-03-09 8:51pm GMT","added":"2019-07-30","homepage":"https://github.com/westonruter/syntax-highlighting-code-block","short_description":"Extending the Code block with syntax highlighting rendered on the server, thus being AMP-compatible and…","description":"

This plugin extends the Code block in WordPress core to add syntax highlighting which is rendered on the server. Pre-existing Code blocks on a site are automatically extended to include syntax highlighting. Doing server-side syntax highlighting eliminates the need to enqueue any JavaScript on the frontend (e.g. Highlight.js or Prism.js) and this ensures there is no flash of unhighlighted code (FOUC?). Reducing script on the frontend improves frontend performance and it also allows for the syntax highlighted code to appear properly in AMP pages as rendered by the official AMP plugin (see also ampproject/amp-wp#972) or when JavaScript is turned off in the browser.

\n

In addition to not adding any JavaScript to the frontend, the stylesheets needed for styling the Code block will only be added to the page if there is a Code block present. The stylesheets are added inline when the Code block is rendered, ensuring that they do not block rendering of any content higher in the page. If stylesheets fail to load for any reason, the block simply renders without styling, with one key exception: highlighted lines are wrapped in mark elements so they’ll get highlighted regardless, including in RSS Feeds and posts syndicated in email (as long as the mark element is supported in the client).

\n

This extended Code block uses language auto-detection to add syntax highlighting, but you can override the language in the block’s settings sidebar. (There is currently no syntax highlighting of the Code block in the editor.) The plugin supports all programming languages that highlight.php supports (being a port of highlight.js). The Code block also is extended to support specifying the aforementioned highlighted lines. There is also a checkbox for whether to show line numbers on the frontend (with the numbers being non-selectable). Lastly, given inconsistencies across themes as to whether lines in a Code block should be wrapped, this plugin adds styling to force them to no-wrap by default, with a checkbox to opt-in to wrapping when desired.

\n

For advanced usage, please see the plugin wiki.

\n

This plugin is developed on GitHub. See list of current issues with the plugin. Please feel free to file any additional issues or requests that you may come across. Pull requests are welcome.

\n

Credits

\n

This is a fork of Code Syntax Block by Marcus Kazmierczak (mkaz), which is also available on WordPress.org. Copyright (c) 2018 Marcus Kazmierczak. Licensed under GPL 2.0 or later.

\n

highlight.php is released under the BSD 3-Clause License. Copyright © 2006-2013, Ivan Sagalaev (maniac@softwaremaniacs.org), highlight.js (original author). Copyright © 2013, Geert Bergman (geert@scrivo.nl), highlight.php

\n","download_link":"https://downloads.wordpress.org/plugin/syntax-highlighting-code-block.1.3.1.zip","tags":{"block":"block","code":"code","code-highlighting":"code highlighting","code-syntax":"code syntax","syntax-highlight":"syntax highlight"},"donate_link":"","icons":{"1x":"https://ps.w.org/syntax-highlighting-code-block/assets/icon.svg?rev=2131108","2x":"https://ps.w.org/syntax-highlighting-code-block/assets/icon-256x256.png?rev=2131108","svg":"https://ps.w.org/syntax-highlighting-code-block/assets/icon.svg?rev=2131108"},"wporg":true},{"name":"Contact Form by WPForms – Drag & Drop Form Builder for WordPress","slug":"wpforms-lite","version":"1.6.9","author":"WPForms","author_profile":"https://profiles.wordpress.org/jaredatch","requires":"4.9","tested":"5.8","requires_php":"5.5","rating":98,"ratings":{"1":210,"2":46,"3":54,"4":219,"5":9583},"num_ratings":10112,"support_threads":98,"support_threads_resolved":82,"active_installs":4000000,"downloaded":81563291,"last_updated":"2021-08-26 11:06am GMT","added":"2016-03-14","homepage":"https://wpforms.com","short_description":"The best WordPress contact form plugin. Drag & Drop online form builder that helps you create beautiful contact forms with just a few clicks.","description":"

WordPress Contact Form Builder Plugin

\n

We believe that you shouldn’t have to hire a developer to create a WordPress contact form. That’s why we built WPForms, a drag & drop WordPress form builder that’s EASY and POWERFUL.

\n

WPForms allows you to create beautiful contact forms, feedback form, subscription forms, payment forms, and other types of forms for your site in minutes, not hours!

\n

At WPForms, user experience is our #1 priority. Our pre-built form templates and workflows make WPForms the most beginner friendly contact form plugin in the market.

\n

The WPForms Challenge guides you through creating your first form in under 5 minutes. We walk you through using the form builder all the way to adding a form to a page on your site! WPForms includes integrations for popular page builders like the WordPress Block Editor (Gutenberg), Classic Editor, Elementor, and Divi making the whole process seamless.

\n

WPForms is a 100% mobile responsive contact form solution, so your contact forms will always look great on all devices (mobile, tablet, laptop, and desktop).

\n

WPForms’ contact forms are also highly optimized for web and server performance because we understand the importance of speed when it comes to SEO, marketing, and conversion. We can honestly say that WPForms is one of the fastest WordPress contact form builder plugins in the world.

\n
\n

WPForms Pro
\n This plugin is the lite version of the WPForms Pro plugin that comes with all the contact form features you will ever need including email subscription forms, multi-page contact forms, file uploads, conditional logic, payment integrations, form templates, and tons more. Click here to purchase the best premium WordPress contact form plugin now!

\n
\n

We took the pain out of creating contact forms and made it easy. Here’s why smart business owners, designers, and developers love WPForms, and you will too!

\n

\n

Drag & Drop Contact Form Builder

\n

We were tired of the bloated and buggy contact form builder plugins. That’s why we built WPForms to adapt to your workflow and allow you to create custom contact forms in minutes. By using our easy to use drag and drop online form builder, you can easily add custom form fields, rearrange them, and basically create a complete contact form in 5 minutes or less.

\n

But don’t just take our word. See what one of the WordPress experts are saying:

\n
\n

WPForms is by far the easiest form plugin to use. My clients love WPForms and it’s one of the few plugins they can use without any training. As a developer I appreciate how fast, modern, clean and extensible it is.
\n Bill Erickson – Expert WordPress Consultant

\n
\n

Pre-built Form Templates

\n

Building contact forms in WordPress can be time consuming. Why?

\n

Because every other WordPress contact form builder plugin requires you to build your contact form from scratch. The truth is it’s often not necessary to create a contact form completely from scratch unless you really want to.

\n

Whether you’re looking to create a simple contact form, marketing form, request a quote form, donation form, payment order form, registration form, or a subscription form, we have a form template for you inside our contact form builder.

\n

WPForms comes with pre-built form templates to help you save time. You can add, remove, or re-arrange fields as necessary.

\n

See 100+ Pre-Made WPForms Form Template Demo

\n

Mobile Ready, SEO Friendly and Optimized for Speed

\n

WPForms’ contact forms are 100% responsive and mobile-friendly by default. We also optimized every query on the front-end and the back-end to ensure maximum speed – Yes, WPForms is one of the fastest WordPress contact form plugin.

\n

You can embed your contact form on any page with optimized title and description. With the speed and proper formatting, WPForms is also one of the most SEO friendly contact form plugin.

\n

All the Fields & Features that You Need to Succeed

\n

From star ratings to file uploads to multi-page contact forms with progress bar, we have all the fields you need.

\n

You can easily integrate your contact forms with an email marketing service or collect payments for bookings and orders. WPForms allows you to do it all.

\n

The best part is, you can do it all without hiring a developer.

\n

See what one business owner has to say about WPForms’ contact form:

\n
\n

As a business owner, time is my most valuable asset. WPForms allow me to create smart contact forms with just a few clicks. With their pre-built form templates and the drag & drop builder, I can create a new form that works in less than 2 minutes without writing a single line of code. Well worth the investment.
\n David Henzel – Co-founder of MaxCDN

\n
\n

Surveys & Polls

\n

Along with contact form, you can also use WPForms to create surveys and polls.

\n

Our WordPress Survey plugin addon comes with smart survey fields including likert scale, star ratings, multiple choice, Net Promoter Score (NPS), and more, so you can create custom survey forms like Survey Monkey (without the high costs).

\n

WPForms offer the best-in class survey reporting. You can use our interactive reports to customize the graphs, export them for your presentations, and even display the aggregate results to your users.

\n

The best part about WPForms survey reports is that it can retroactively work on any old contact form or feedback survey contact form created with WPForms.

\n

Thousands of businesses love WPForms surveys for creating employee feedback form, customer feedback form, online petition form, and more.

\n

You can also use the surveys & polls addon to easily create a poll on your site. To save you time when creating a user poll, we have added a built-in poll forms template. Our poll feature offers real-time reports, so you can share poll results with the user immediately after they submit their vote.

\n

Just like the contact form, you can embed your surveys and polls inside any post, page, or widget area in WordPress.

\n

Membership and Default WordPress Forms

\n

Aside from building simple contact forms which every WordPress site needs, WPForms also helps you create better default WordPress forms.

\n

For example, you can use WPForms to create custom WordPress login forms and custom WordPress user registration forms which are great for membership sites.

\n

For membership sites, you can also use WPForms to create a password-protected contact form or even a members only contact form which is restricited to logged-in users only.

\n

Even if you’re not using a WordPress membership plugin, you can use WPForms to create membership registration forms, online RSVP forms, and other address book contact forms.

\n

Bloggers and publishers can use our WordPress post submission forms to accept guest posts, testimonials contact form to collect testiomnials, and partnership agreement forms to grow their business.

\n

Payment Form, Donation Form, Booking Form, and More

\n

While WPForms started out as a contact form plugin, it has evolved into a powerful custom forms solution that you can use to create a payment form, donation form, registration form, online booking form, mobile form, and basically any type of custom form you need.

\n

WPForms integrates with both PayPal and Stripe, so you can easily create a credit card payment form to accept payments on your website. If you’re using SSL, then you can use our Stripe Payment form to accept credit card payments. Alternatively you can use our PayPal payment form to make a donation form and accept payments online.

\n

Aside from simple order forms, business owners also use WPForms to create custom product purchase forms, t-shirt order forms, online booking forms, and more.

\n

We understand that sometimes you may need to create a contact form that require a signature. WPForms comes with a signature field to collect user signature on your WordPress forms or even create custom signature forms.

\n

You can do all of this while still using the same easy-to-use contact form builder that’s loved by over 4 million users.

\n
\n

I am so impressed with this plugin. I decided to give it a shot over some of the other form plugins, and I am so glad I did. It works well, is so easy to use and customize. The support is amazing on top of it all. I got the pro version because I was so pleased. Highly recommend.
\n Micky73 – WordPress user

\n
\n

Forms that are Optimized for Conversion and Results

\n

With our Form Pages addon, you can create distraction-free custom form landing pages like Google Forms and Wufoo right inside WordPress, so you can increase conversions without the high costs (See Form Pages Demo).

\n

To improve form completion rate, we created Conversational Forms® which helps you make your generic feedback form and other custom contact forms feel more human by adding an interactive form layout. Our conversational forms are similar to Typeform without the high subscription costs (See Conversational Forms Demo).

\n

WPForms also has other conversion optimization features such as our smart form logic that lets you create dynamic contact forms where fields change based on user’s answer, multi-page contact forms with progress bar, and other advanced contact forms.

\n

WPForms form analytics integration with MonsterInsights allow you to easily track your lead capture forms, newsletter signup forms, request a quote contact form, and other important forms on your site.

\n

Easy to Customize and Extend

\n

You can easily customize your contact forms with our section dividers, HTML blocks, and custom CSS.

\n

If you’re using Elementor or Divi page builders our native integrations let you easily customize the style of your forms.

\n

We also knew that our developer friends may want to extend simple contact forms further. That’s why WPForms come with tons of hooks and filters to create custom functionality.

\n

Since contact forms are essential for marketing, WPForms is a must have plugin for every website!

\n

Full WPForms Feature List

\n
    \n
  • Online Form Builder – Our powerful drag & drop contact form builder allows you to easily create WordPress contact forms and other online forms in just a few minutes without writing any code.
  • \n
  • 100% Responsive – Mobile Friendly contact forms.
  • \n
  • GDPR Friendly – Make your contact form GDPR compatible with just a few clicks.
  • \n
  • Form Templates – Use our pre-built form templates to save time. Never start from scratch again (see all form templates demos).
  • \n
  • Spam Protection – WPForms provides smart anti-spam protection out-of-the-box, plus direct integrations with hCaptcha and Google reCAPTCHA.
  • \n
  • Instant Form Notification – Quickly respond to incoming inquiries with our instant contact form notification system.
  • \n
  • Smart Form Confirmation – Show a custom success message, or redirect users to a custom thank you page.
  • \n
  • File Uploads – Collect files and media through your contact forms with File Uploads.
  • \n
  • Multi-Page Forms – Split long forms into multiple pages with progress bar to improve user experience.
  • \n
  • Smart Conditional Logic – Show or hide fields and contact form sections based on user behavior.
  • \n
  • Signature Forms – Create signature forms or add the signature field to your contact form, application form, booking form, etc.
  • \n
  • User Registration Forms – Create custom user registration form and custom login form in WordPress.
  • \n
  • Post Submissions – Collect user-submitted content in WordPress with our front-end post submission form. Great for guest posts, testimonials, business directory, listings, etc.
  • \n
  • Geolocation – Display location information about your users.
  • \n
  • Custom Captchas – Create custom captchas for your contact form.
  • \n
  • Surveys and Polls – Easily create surveys forms and analyze the data with interactive reports.
  • \n
  • Form Abandonment – Unlock more leads and grow your business with partial-form submission.
  • \n
  • Form Locker – Manage form permissions and add access control rules including password-protected forms, members only forms, limit contact form entry per person, close form after specific date / time, etc.
  • \n
  • Offline Forms – Let your visitors save their entered data offline and submit when their internet connection is restored.
  • \n
  • Form Landing Pages – Create “distraction-free” form landing pages to boost conversions. Great Google Forms and Wufoo alternative.
  • \n
  • Conversational Forms – Interactive form layout that makes your form feels more human and boost overall completion rate. Great for surveys and registration forms. Perfect Typeform alternative for WordPress without the high costs.
  • \n
  • Webhooks – Send form entry data to secondary tools and external services. No code required, and no need for a third party connector.
  • \n
  • User Journey Reporting – Discover the steps your visitors take before they submit your forms. Right in the WordPress dashboard, you can easily see the content that’s driving the most valuable form conversions.
  • \n
\n

Integrations

\n
    \n
  • PayPal Payment Forms – Create PayPal forms to easily collect payments, donations, and online orders.
  • \n
  • Stripe Forms – Easily collect credit card payments, donations, and online orders with our Stripe addon.
  • \n
  • Authorize.Net Forms – Connect your WordPress site with Authorize.Net to collect payments, donations, and online orders.
  • \n
  • Mailchimp Forms – Create Mailchimp newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • AWeber Forms – Create AWeber newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • Campaign Monitor Forms – Create Campaign Monitor newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • GetResponse Forms – Create GetResponse newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • Constant Contact Forms – Create Constant Contact newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • Drip Forms – Create Drip newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • ActiveCampaign Forms – Add contacts to your ActiveCampaign account, record events, add notes to contacts, and more.
  • \n
  • Sendinblue Forms – Create Sendinblue forms to automate your marketing and engage your subscribers.
  • \n
  • Salesforce Forms – Easily send your WordPress form contacts and leads to your Salesforce CRM account.
  • \n
  • Zapier Addon – Connect your WordPress forms with over 1000+ apps. Route your contact form data to your favorite CRM, email marketing service, etc.
  • \n
\n

After reading this feature list, you can probably imagine why WPForms is the best WordPress contact form plugin in the market.

\n

Give WPForms a try.

\n

Want to unlock more features? Upgrade to our Pro version.

\n

Credits

\n

This plugin is created by Jared Atchison and Syed Balkhi.

\n

Branding Guideline

\n

WPForms® is a registered trademark of WPForms LLC. When writing about the contact form plugin by WPForms, please make sure to uppercase the initial 3 letters.

\n
    \n
  • WPForms (correct)
  • \n
  • WP Forms (incorrect)
  • \n
  • wpforms (incorrect)
  • \n
  • wpform (incorrect)
  • \n
\n

What’s Next

\n

If you like this plugin, then consider checking out our other projects:

\n
    \n
  • OptinMonster – Get More Email Subscribers with the most popular conversion optimization plugin for WordPress.
  • \n
  • MonsterInsights – See the stats that matter and grow your business with confidence. The best Google Analytics plugin for WordPress.
  • \n
  • SeedProd – Create beautiful landing pages with our powerful drag & drop landing page builder.
  • \n
  • WP Mail SMTP – Improve email deliverability for your contact form with the most popular SMTP plugin for WordPress.
  • \n
  • RafflePress – Best WordPress giveaway and contest plugin to grow traffic and social followers.
  • \n
  • Smash Baloon – #1 social feeds plugin for WordPress – display social media content in WordPress without code.
  • \n
  • AIOSEO – The original WordPress SEO plugin to help you rank higher in search results (trusted by over 2 million sites).
  • \n
  • Push Engage – Connect with visitors after they leave your website with the leading web push notification plugin.
  • \n
  • TrustPulse – Add real-time social proof notifications to boost your store conversions by up to 15%.
  • \n
\n

Visit WPBeginner to learn from our WordPress Tutorials and find out about other best WordPress plugins.

\n

Notes

\n

WPForms is absolutely, positively the most beginner friendly WordPress contact form plugin on the market. It is both easy and powerful.

\n

We took the pain out of creating online forms and made it easy. Check out all WPForms features.

\n

Also, I’m the founder of WPBeginner, the largest WordPress resource site for beginners. It was a huge priority for me to make a WordPress contact form plugin that beginners can use without any training.

\n

I feel that we have done that here. I hope you enjoy using WPForms.

\n

Thank you

\n

Syed Balkhi

\n","download_link":"https://downloads.wordpress.org/plugin/wpforms-lite.1.6.9.zip","tags":{"contact-form":"contact form","contact-form-plugin":"contact form plugin","custom-form":"custom form","form-builder":"form builder","forms":"forms"},"donate_link":"","icons":{"1x":"https://ps.w.org/wpforms-lite/assets/icon.svg?rev=2574198","2x":"https://ps.w.org/wpforms-lite/assets/icon-256x256.png?rev=2574201","svg":"https://ps.w.org/wpforms-lite/assets/icon.svg?rev=2574198"},"wporg":true},{"name":"MonsterInsights – Google Analytics Dashboard for WordPress (Website Stats Made Easy)","slug":"google-analytics-for-wordpress","version":"7.18.0","author":"MonsterInsights","author_profile":"https://profiles.wordpress.org/chriscct7","requires":"3.8.0","tested":"5.8","requires_php":"5.2","rating":92,"ratings":{"1":194,"2":39,"3":34,"4":75,"5":2078},"num_ratings":2420,"support_threads":9,"support_threads_resolved":8,"active_installs":3000000,"downloaded":96817891,"last_updated":"2021-08-10 9:06pm GMT","added":"2007-09-14","homepage":"https://www.monsterinsights.com/?utm_source=liteplugin&utm_medium=pluginheader&utm_campaign=pluginurl&utm_content=7%2E0%2E0","short_description":"The best free Google Analytics plugin for WordPress. See how visitors find and use your website, so you can grow your business.","description":"

Google Analytics Plugin for WordPress

\n

With over 3 million active installs, MonsterInsights is the most popular Google Analytics plugin for WordPress.

\n

We believe that it’s easy to double your traffic and sales when you know exactly how people find and use your website. MonsterInsights shows you the analytics and stats that matter, so you can grow your business with confidence.

\n

At MonsterInsights, we make it “effortless” to properly connect your WordPress site with Google Analytics, so you can start making data-driven decisions to grow your business.

\n

Unlike other Google Analytics plugins, MonsterInsights allow you to enable all advanced Google Analytics tracking features with just a few clicks (no need to hire a developer).

\n

The best part is that MonsterInsights comes with an analytics dashboard for WordPress that shows you actionable analytics reports right inside your WordPress dashboard. We have created customized reports that eliminate the fluff and only show you the stats that matter, so you can see exactly what’s working and what’s not!

\n

Simply put, MonsterInsights is the most complete Google Analytics plugin for WordPress that’s both EASY and POWERFUL.

\n

That’s why millions of small businesses and top companies like Microsoft, Bloomberg, FedEx, Yelp, Subway, etc. use MonsterInsights to setup Google Analytics on their WordPress sites.

\n
\n

MonsterInsights Pro
\n This plugin is the lite version of MonsterInsights Pro plugin that comes with all the tracking features you will ever need including events tracking, ecommerce tracking, custom dimensions tracking, page speed reports, popular post tracking, custom dimensions, affiliate link tracking, and tons more. Click here to purchase the best premium Google Analytics plugin for WordPress now!

\n
\n

We took the pain out of installing Google Analytics in WordPress and made it easy. Here’s why over 3 million smart business owners, designers, and developers love MonsterInsights, and you will too!

\n

\n

Quick & Easy Google Analytics Setup

\n

Properly setting up Google Analytics is complicated. You have to either hire a developer or learn how to add advanced code snippets to your website in many different areas. This process can take days or weeks…and can even break your website!

\n

With MonsterInsights, we made it “effortless” to properly setup Google Analytics in WordPress. Yes, you can enable all advanced Google Analytics features with just a few clicks.

\n

If you can point-and-click, then you can set up Google Analytics inside WordPress and start seeing insights in under 15 minutes (no code necessary).

\n

We keep up with all Google Analytics updates, so you can sleep well at night knowing that your website will always stay up to date with the newest features.

\n

See what one business owner is saying about MonsterInsights:

\n
\n

It just works. Really easy way to insert Google Analytics tracking code and keep it there when switching themes. No need to copy/paste code anywhere. This is the best way to handle Google Analytics in WordPress.
\n Steven Gliebe

\n
\n

Google Analytics Dashboard + Real Time Stats

\n

Our goal at MonsterInsights is to make Google Analytics easy and accessible for everyone.

\n

We understand that Google Analytics has a steep learning curve which often prevents small business owners from making informed decisions to grow their business.

\n

That’s why MonsterInsights comes with a built-in Google Analytics Dashboard for your WordPress site, so you can see all the useful information about your visitors right inside your WordPress dashboard without needing to login somewhere else.

\n

We have even created customized reports to help you filter through the noise and see the stats that really matter!

\n
    \n
  • \n

    Audience Report helps you get to know your visitors in a whole new way. It shows you detailed insights like which country your visitors are coming from, what are they most interested in, which device are they using, their age, gender, and a whole lot more. You can use this demographics report and audience clues to tweak your website design and content accordingly.

    \n
  • \n
  • \n

    **Publishers Report ** helps you understand which pages your visitors are arriving, and which pages they are leaving from. Designed specifically for blogs and other resource sites, this powerful report will show you which outbound links are getting clicked so you can easily optimize for higher conversions.

    \n
  • \n
  • \n

    Behavior Report shows you exactly how people find your website, which keywords did they search for, who referred them, what did they click on your site, and more. You can use these useful stats to identify low-hanging fruits, new partnership opportunities, and promotional areas to focus on.

    \n
  • \n
  • \n

    Content Report shows you stats on exactly which content gets the most visits, so you can stop guessing and start creating content that gets more traffic and conversion.

    \n
  • \n
  • \n

    Ecommerce Report shows you important store stats like total revenue, conversion rate, average order value, top referral sources, and more (all in one place).

    \n
  • \n
  • \n

    Forms Report shows you conversion stats for various contact forms and lead forms on your website, so you can improve the conversions to grow your business.

    \n
  • \n
  • \n

    Search Console Report shows you exactly how well your website is ranking in Google, so you can further optimize your SEO to grow your organic traffic.

    \n
  • \n
  • \n

    Custom Dimensions Report helps you dig deeper by showing you useful stats like who are your most popular authors, what are the best publication times, which are your most popular categories or tags, how well are your Yoast focus keywords and SEO score performing, and more.

    \n
  • \n
  • \n

    Site Speed Report makes it easy to track pagespeed insights and loading times for your website and get the information you need to improve user experience and your SEO rankings.

    \n
  • \n
\n

Our custom Google Analytics Dashboard reports are based on over 12+ years of online business experience. We built MonsterInsights to be the Google Analytics plugin that we wish we had.

\n

We currently use MonsterInsights on all our portfolio companies which include both media sites generating tens of millions of pageviews and eCommerce sites generating millions in sales.

\n

That’s why we can confidently say that MonsterInsights is the ultimate Google Analytics Shortcut for seeing the stats that matter and making data-driven decisions to grow your business.

\n
\n

I love being able to drill down into the analytics via the reporting feature. I have the PRO version and it makes a big difference what you can analyze. I’m glad that I can integrate with Pretty Links too!
\n Kim Beasley – MonsterInsights user

\n
\n

Google Analytics Enhanced Ecommerce Tracking Made Easy

\n

Google Analytics Enhanced Ecommerce tracking is a powerful feature that lets you track user behavior across your online store starting from product views to checkout page to thank you page and beyond.

\n

With MonsterInsights’ easy WooCommerce integration, you can setup WooCommerce analytics with literally 1-click.

\n

Once you have enabled WooCommerce tracking, MonsterInsights will show you all important WooCommerce metrics in a single dashboard including WooCommerce conversion rate, top products in your WooCommerce store, total transactions, total revenue, average order value, top referral sources, and more.

\n

Our WooCommerce analytics report also includes other detailed WooCommerce event tracking data like total add to carts, total removed from cart, time to purchase, and sessions to purchase.

\n

For those who want to go beyond our WooCommerce stats dashboard, you can easily open up the Google Analytics dashboard to combine WooCommerce data with other secondary dimensions and filters to find exactly what you’re looking for.

\n

Aside from WooCommerce Google Analytics integration, MonsterInsights’ eCommerce addon also offers seamless integration for the Easy Digital Downloads plugin.

\n

Our Easy Digital Downloads Google Analytics integration allows you to set up Enhanced Ecommerce Tracking on your store with just 1-click.

\n

Simply put, MonsterInsights’ Enhanced Ecommerce for WordPress feature is by far the easiest and most powerful in the market.

\n

Google Analytics + GDPR Compliance

\n

MonsterInsights helps make Google Analytics GDPR compliance easier for business owners.

\n

Our EU compliance addon allows you to:

\n
    \n
  • Anonymize IP in Google Analytics
  • \n
  • Disable the Demographics and Interest Reports for Remarketing and Advertising
  • \n
  • Disable UserID and author name tracking
  • \n
  • Enable the ga() compatibility mode
  • \n
  • Integrate with Cookie Notice and CookieBot plugins to collect user consent before tracking
  • \n
  • Integrate with Google AMP Consent Box before enable tracking
  • \n
  • Integrate with Google Analytics’s Chrome browser opt-out extension and built-in cookie opt-out system
  • \n
  • Offer Easy Opt Out link for Google Analytics tracking
  • \n
\n

While no single plugin can guarantee 100% GDPR compliance in WordPress, MonsterInsights goes to great length in helping business owners with GDPR compliance.

\n

For more details, see: GDPR and MonsterInsights – Everything You Need to Know.

\n

Universal Tracking + Google Analytics for AMP and Instant Articles

\n

MonsterInsights uses Google Analytics universal tracking, so you can track your users across devices and platforms.

\n

Accelerated Mobile Pages (AMP) is a project by Google that helps you speed up your website. However if you don’t set it up properly, Google AMP can cause you to lose your website analytics. Our Google Analytics AMP integration allows you to have accurate tracking on all AMP enabled pages. It works seamlessly with AMP for WordPress plugin.

\n

We also offer 1-click Google Analytics integration with Facebook Instant Articles.

\n

At MonsterInsights, we always stay ahead of the curve in helping you integrate WordPress with the latest Google Analytics tracking features.

\n
\n

Analytics for PROs! This plugin brings it all, great features and helpful info to easily see what you are doing.
\n Frank van der Sluijs

\n
\n

Google AdSense Tracking and Affiliate Link Tracking

\n

With MonsterInsights Ads tracking addon, publishers can easily track the performance of their Google AdSense Ads inside their Google Analytics dashboard.

\n

Our affiliate link tracking makes it easy for bloggers and affiliate marketers to track their affiliate links with Google Analytics.

\n

MonsterInsights uses event tracking for all WordPress outbound link tracking which is far more accurate than any built-in WordPress analytics solution.

\n

Unlike other WordPress analytics plugin, our Google Analytics affiliate link tracking does NOT slow down your website because all events are recorded via JavaScript and sent straight to your account.

\n

Most other WordPress stats plugin track data on your WordPress hosting server which slows down your website and does not scale for larger websites.

\n

Since our affiliate link tracking uses Google Analytics’ powerful servers, we can skip WordPress entirely.

\n

MonsterInsights’ affiliate link tracking feature works with all WordPress affiliate link management plugins including Pretty Links, Thirsty Affiliates, and others.

\n

Custom Dimensions Tracking, Custom Google Analytics Event Tracking, and More

\n

Our Google Analytics event tracking feature for WordPress doesn’t just stop at affiliate link tracking.

\n

You can use MonsterInsights custom Google analytics event tracking feature to easily add outbound-link tracking, file downloads tracking, call-to-action button tracking, hashmark tracking, telephone link tracking, and more.

\n

Our powerful Forms Tracking addon uses Google Analytics custom event tracking feature to enable form analytics in WordPress. With just 1-click, you can enable form conversion tracking for your contact forms, lead generation forms, registration forms, surveys, and any other type of form in WordPress.

\n

MonsterInsights’ Custom Dimensions addon allows you to push WordPress analytics even further. You can use Google Analytics custom dimensions to generate helpful WordPress stats for:

\n
    \n
  • Author Tracking – see stats for each author to find which author’s posts generate the most traffic.
  • \n
  • Post Type Tracking – see stats for WordPress post types to find out which sections are performing the best.
  • \n
  • Category Tracking – see stats for your WordPress categories to find out which sections of your sites are the most popular.
  • \n
  • Tags Tracking – see stats for your WordPress tags to find out which tags are the most popular.
  • \n
  • SEO Score Tracking – see stats for your Yoast SEO score and see how it impacts your traffic.
  • \n
  • Focus Keyword Tracking – see stats for Yoast focus keyword and see how it correlates with your traffic.
  • \n
  • Logged-in User Tracking – see WordPress stats for what percentage of your users are logged-in.
  • \n
  • User ID Tracking – see stats for each individual logged-in user’s activity through User ID custom dimension – great for Ecommerce and membership sites.
  • \n
  • Published Time Tracking – track the performance of your posts based on their published time.
  • \n
\n

Simply put, MonsterInsights allow you to take full advantage of all the powerful Google Analytics features.

\n
\n

I like how simple it is for client users and how I can turn on the advanced features for myself to get all the details right.
\n Skip Shean

\n
\n

Google Analytics Dashboard Plugin for WordPress Multisite Networks

\n

MonsterInsights is the most popular analytics plugin for adding Google Analytics to WordPress multisite.

\n

We have built-in all permissions and controls that you would need to successfully run Google Analytics on a WordPress multi-site.

\n

You can control who has access to view the Google Analytics Dashboard report in WordPress. Our permissions setting allows you to hide analytics reports for specific user roles.

\n

Similarly, we understand that some sites may want to exclude logged-in users from tracking. MonsterInsights gives you granular control to exclude admin in Analytics as well as other user roles.

\n

Our performance addon allows you to adjust sample rate and site speed sample rates for Google Analytics.

\n

By now you can probably see why MonsterInsights has become the most popular Google Analytics plugin for WordPress.

\n

We understand Google Analytics better than any other analytics plugin for WordPress.

\n

Full MonsterInsights Feature List

\n
    \n
  • Quick and Easy Setup – Easily setup Google Analytics for WordPress with just a few clicks (no coding needed)
  • \n
  • Real Time Stats – See real time stats inside your Google Analytics dashboard.
  • \n
  • Universal Tracking – Get better insights with Google Analytics’ universal tracking.
  • \n
  • Google Analytics Dashboard – See the stats that matter from right inside your WordPress dashboard with custom Publisher Report, Ecommerce report, and Search Console report.
  • \n
  • eCommerce Tracking – Add Google Analytics Ecommerce tracking to WordPress.
  • \n
  • WooCommerce Google Analytics – Add Enhanced Ecommerce Tracking to your WooCommerce store.
  • \n
  • Easy Digital Downloads Google Analytics – Add Enhanced Ecommerce Tracking to your EDD store.
  • \n
  • Ads Tracking – Track your Google Adsense ads with Google Analytics.
  • \n
  • Affiliate Link Tracking – Track your affiliate links and get stats that matter.
  • \n
  • File Download Tracking – Enable file download stats with just a click.
  • \n
  • Custom Link Tracking – Track your outbound link clicks with Google Analytics.
  • \n
  • Events Tracking – Track custom button and banner clicks with Google Analytics.
  • \n
  • Custom Dimensions Tracking – Enable Google analytics custom dimensions tracking for WordPress.
  • \n
  • Author Tracking – See author stats and discover who’s the most popular author on your site.
  • \n
  • Popular Post Tracking – See which blog post and section is the most popular.
  • \n
  • Contextual Insights – Get actionable tips on how to improve engagement and get more visitors based on your site’s traffic.
  • \n
  • Headline Analyzer – Get more clicks and improve SEO following suggestions from our Headline Analyzer directly in the WordPress editor
  • \n
  • Custom Post Type Tracking – Track the performance of your custom post types.
  • \n
  • Referral Tracking – See how visitors are finding your website to better focus your marketing efforts.
  • \n
  • Performance Tracking – Control the performance rate and sample rate for your Google Analytics report.
  • \n
  • Enhanced Link Attribution – Get better analytics with enhanced link attribution.
  • \n
  • Email Summaries – Your site’s Google Analytics traffic report delivered straight to your inbox every week.
  • \n
  • Google Analytics for AMP – Add proper tracking for Google AMP.
  • \n
  • Google Analytics for Facebook Instant Articles – Add proper tracking for Facebook Analytics.
  • \n
  • Google Analytics GDPR Compliance – EU compliance addon helps you improve Google Analytics GDPR compliance by adding anonymize IP, cookie consent for opt-out tracking, and more.
  • \n
  • Form Conversion Tracking – Track conversions for your WordPress forms. Works with all popular plugins including WPForms, Contact Form 7, Gravity Forms, Formidable Forms, and more.
  • \n
  • Google Optimize Tracking – Enable Google Analytics support for Google Optimize A/B Testing.
  • \n
  • Google Analytics Tools – Helpful tools for Google Analytics such as UTM link tracking builder.
  • \n
  • Want us to add something else? Suggest a feature and we’ll get it added!
  • \n
\n

After reading this exhaustive feature list, you can probably imagine why MonsterInsights is the best Google Analytics plugin for WordPress.

\n

Give MonsterInsights a try.

\n

Want to unlock even more features? Upgrade to our Pro version.

\n
\n

Simple, yet powerful. Amazing piece of plugin, does exactly what expected and even more.
\n Matt Jaworski

\n
\n

Popular Google Analytics Tutorials

\n\n

Note for Beginners

\n

Like all WordPress plugins, Google Analytics by MonsterInsights is only available for self-hosted WordPress sites. This means you will need to switch from WordPress.com to WordPress.org if you want to use this plugin on your WordPress site.

\n

For more details, see this infographic on self hosted WordPress.org vs free WordPress.com

\n

Credits

\n

This plugin is created by Chris Christoff and Syed Balkhi with sponsorship from WPBeginner.

\n

Branding Guidelines

\n

MonsterInsights® is a registered trademark of MonsterInsights LLC. When writing about the Google Analytics for WordPress plugin by MonsterInsights, please make sure to uppercase the first letters of both word.

\n
    \n
  • MonsterInsights (correct)
  • \n
  • Monster Insights (incorrect)
  • \n
  • monsterinsights (incorrect)
  • \n
  • monsterinsight (incorrect)
  • \n
\n

What’s Next

\n

If you like this plugin, then consider checking out our other projects:

\n
    \n
  • OptinMonster – Get More Email Subscribers
  • \n
  • WPForms – Best WordPress Contact Form Plugin
  • \n
  • AIOSEO – The original WordPress SEO plugin to help you rank higher in search results (trusted by over 2 million sites)
  • \n
  • SeedProd – Most popular coming soon & maintenance mode plugin for WordPress
  • \n
  • WP Mail SMTP – Improve email deliverability for your contact form with the most popular SMTP plugin for WordPress
  • \n
  • RafflePress – Best WordPress giveaway and contest plugin to grow traffic and social followers
  • \n
  • Smash Balloon – #1 social feeds plugin for WordPress – display social media content in WordPress without code
  • \n
  • PushEngage – Connect with visitors after they leave your website with the leading web push notification plugin
  • \n
  • TrustPulse – Add real-time social proof notifications to boost your store conversions by up to 15%
  • \n
\n

This plugin would not be possible without the help and support of WPBeginner, the largest WordPress resource site. You can learn from our free WordPress Tutorials like how to install WordPress, choose the best WordPress hosting, WordPress glossary, and more.

\n

You can also learn about other best WordPress plugins.

\n","download_link":"https://downloads.wordpress.org/plugin/google-analytics-for-wordpress.7.18.0.zip","tags":{"google-analytics":"google analytics","google-analytics-dashboard":"google analytics dashboard","google-analytics-widget":"google analytics widget","woocommerce-stats":"WooCommerce stats","wordpress-analytics":"WordPress analytics"},"donate_link":"http://www.wpbeginner.com/wpbeginner-needs-your-help/","icons":{"1x":"https://ps.w.org/google-analytics-for-wordpress/assets/icon.svg?rev=1598927","2x":"https://ps.w.org/google-analytics-for-wordpress/assets/icon-256x256.png?rev=1598927","svg":"https://ps.w.org/google-analytics-for-wordpress/assets/icon.svg?rev=1598927"},"wporg":true},{"name":"Atomic Blocks – Gutenberg Blocks Collection","slug":"atomic-blocks","version":"2.9.0","author":"atomicblocks","author_profile":"https://profiles.wordpress.org/atomicblocks","requires":"5.3","tested":"5.5.5","requires_php":"5.6","rating":86,"ratings":{"1":5,"2":0,"3":1,"4":6,"5":31},"num_ratings":43,"support_threads":1,"support_threads_resolved":0,"active_installs":40000,"downloaded":991977,"last_updated":"2020-10-28 4:53pm GMT","added":"2018-03-26","homepage":"https://atomicblocks.com","short_description":"A collection of beautiful, customizable Gutenberg blocks for the new block editor.","description":"

Atomic Blocks has moved!

\n

Same powerful blocks, same beautiful designs, same innovative team. Atomic Blocks has been renamed to Genesis Blocks. Learn more about Genesis Blocks. With our migration tool built right into Genesis Blocks, the transition between plugins will be simple and seamless – plus you’ll be ready to receive the new blocks and features we’re releasing soon.

\n

Atomic Blocks is a collection of page building blocks for the new Gutenberg block editor. Building pages with the block editor and Atomic Blocks gives you more control to quickly create and launch any kind of site you want!

\n

Installing the customizable Atomic Block plugin adds a collection of beautiful, site-building blocks to help you customize page layouts, increase engagement, and get results for your business. Atomic Blocks provides everything from customizable buttons, to beautifully-designed page sections and full-page layout designs via the Section & Layout block.

\n

Along with the content blocks you’ll find in Atomic Blocks, we’re also publishing helpful articles and tutorials to help you get started with Gutenberg.

\n

New Section and Layout Block!

\n

\n

On top of the handy, time-saving blocks already found in Atomic Blocks, we’re excited to introduce the brand new Section and Layout block! This block comes with a library of pre-designed sections and layouts to help you quickly and easily build a beautiful site with the new block editor.

\n

Using the Section and Layout modal window, you can browse designs by category, search, and even add sections and layouts to a Favorites tab for quick access later. Paired with the free Atomic Blocks theme, which has support for full-width, block-based page building, you have everything you need to start building your site today!

\n

Atomic Blocks currently includes the following blocks:

\n\n

Atomic Blocks WordPress Theme

\n

We’ve created a beautiful WordPress theme to help you get started with the Atomic Blocks plugin and the new WordPress block editor. The theme integrates seamlessly with the blocks you’ll find in the plugin!

\n\n

In addition to the Atomic Block Theme, we’ve built Revolution Pro with the StudioPress team. This theme is built from the ground up with blocks—Gutenberg core and Atomic. Using this Theme and the Genesis One-Click Theme Install you can have a new block-based site up and running in minutes.

\n\n

Google AMP Support

\n

The Accelerated Mobile Pages (AMP) project is a publishing format created by Google to enhance site performance for mobile website users. AMP pages are specially designed for Google search users to quickly load website pages without using any extraneous data. Atomic Blocks has support for AMP built into each block!

\n

Atomic Blocks Help File

\n

We’ve created a handy help file that you can check out here. The help file covers how to setup the plugin and get started with the blocks.

\n

The help file is also available in the plugin once activated. Click the Atomic Blocks admin menu item to visit the Getting Started page.

\n

View the plugin help file

\n

Follow Along:

\n\n","download_link":"https://downloads.wordpress.org/plugin/atomic-blocks.2.9.0.zip","tags":{"blocks":"blocks","editor":"editor","gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","page-builder":"page builder"},"donate_link":"https://atomicblocks.com","icons":{"1x":"https://ps.w.org/atomic-blocks/assets/icon-128x128.jpg?rev=1914920","2x":"https://ps.w.org/atomic-blocks/assets/icon-256x256.jpg?rev=1914921"},"wporg":true},{"name":"Akismet Spam Protection","slug":"akismet","version":"4.1.12","author":"Automattic","author_profile":"https://profiles.wordpress.org/automattic","requires":"4.6","tested":"5.8","requires_php":false,"rating":94,"ratings":{"1":40,"2":9,"3":13,"4":45,"5":811},"num_ratings":918,"support_threads":9,"support_threads_resolved":8,"active_installs":5000000,"downloaded":211563301,"last_updated":"2021-09-03 4:53pm GMT","added":"2005-10-20","homepage":"https://akismet.com/","short_description":"The best anti-spam protection to block spam comments and spam in a contact form. The most trusted antispam solution for WordPress and WooCommerce.","description":"

Akismet checks your comments and contact form submissions against our global database of spam to prevent your site from publishing malicious content. You can review the comment spam it catches on your blog’s “Comments” admin screen.

\n

Major features in Akismet include:

\n
    \n
  • Automatically checks all comments and filters out the ones that look like spam.
  • \n
  • Each comment has a status history, so you can easily see which comments were caught or cleared by Akismet and which were spammed or unspammed by a moderator.
  • \n
  • URLs are shown in the comment body to reveal hidden or misleading links.
  • \n
  • Moderators can see the number of approved comments for each user.
  • \n
  • A discard feature that outright blocks the worst spam, saving you disk space and speeding up your site.
  • \n
\n

PS: You’ll be prompted to get an Akismet.com API key to use it, once activated. Keys are free for personal blogs; paid subscriptions are available for businesses and commercial sites.

\n","download_link":"https://downloads.wordpress.org/plugin/akismet.4.1.12.zip","tags":{"anti-spam":"anti-spam","antispam":"antispam","comments":"comments","contact-form":"contact form","spam":"spam"},"donate_link":"","icons":{"1x":"https://ps.w.org/akismet/assets/icon-128x128.png?rev=969272","2x":"https://ps.w.org/akismet/assets/icon-256x256.png?rev=969272"},"wporg":true},{"name":"WP GDPR Cookie Notice","slug":"wp-gdpr-cookie-notice","version":"1.0.0-rc.1","author":"Felix Arntz","author_profile":"https://profiles.wordpress.org/flixos90","requires":"4.9.6","tested":"5.7.2","requires_php":"7.0","rating":76,"ratings":{"1":4,"2":0,"3":0,"4":0,"5":9},"num_ratings":13,"support_threads":1,"support_threads_resolved":0,"active_installs":700,"downloaded":5952,"last_updated":"2021-04-02 11:51pm GMT","added":"2019-03-01","homepage":"https://wordpress.org/plugins/wp-gdpr-cookie-notice/","short_description":"Simple performant cookie consent notice that supports AMP, Web Stories, granular cookie control and live…","description":"

This plugin adds a simple performant cookie consent notice to your WordPress site that supports AMP, Web Stories, granular cookie control and live preview customization.

\n

Not only does the notice allow you to provide the regular message that your site uses cookies, you can also optionally grant your site visitors permission to granularly allow which cookie types are allowed, supporting groups of functional (always required), preferences, analytics and marketing cookies. This aims towards compliance with how the new GDPR regulations recommend implementing cookie control for your site.

\n

In addition to the Privacy Policy page setting that WordPress core provides, you also get a settings to optionally set an extra Cookie Policy page, and you can easily link to either of them from the cookie consent notice.

\n

The cookie notice content and appearance can easily be tweaked using the Customizer, with an immediate live-preview of what your changes will look like.

\n

Last but not least, another important thing that this plugin takes care of, other than most other cookie consent plugins, is that it actually ensures cookies are only placed if the respective cookie type has been allowed by the visitor. The plugin does this by implementing cookie rules for WordPress itself, and also for the following plugins:

\n\n

More plugins will be supported in the future. If you are a developer though, it’s also very easy to add cookie rules for other code, by using the flexible cookie rule component the plugin provides as an extension point.

\n

Feature Summary

\n
    \n
  • Lightweight and easy-to-use: Simply activate the plugin, and the notice will appear.
  • \n
  • Live Preview: Use the Customizer to adjust the notice to your needs, with an instant live preview.
  • \n
  • Customizable Appearance: Specify the notice position, colors, border, button size and more.
  • \n
  • Customizable Content: Adjust the notice heading, text and button label to your preferences. You can easily link to your cookie policy page or privacy policy page, and even give visitors granular control about which cookie types they allow.
  • \n
  • Cookie Policy Support: Define an optional cookie policy page if your site has one, or alternatively provide an ID attribute to the cookie section in your privacy policy.
  • \n
  • Cookie Integrations: Supported cookies are only set once the visitor has given their consent. The cookie rules implemented also respect the more granular cookie control.
  • \n
  • JavaScript-driven: The cookie notice is inserted into the page as necessary via JavaScript, but at the same time provides easy access to whether it should be displayed via its PHP API.
  • \n
  • AMP Support: The notice is fully AMP-compatible using <amp-consent>, integrating seamlessly with the AMP plugin. It integrates with Web Stories as well.
  • \n
  • Coding Best Practices: The plugin is fully object-oriented and is coded after best practices, such as using interfaces, traits, dependency injection or the single responsibility principle. It also implements modern coding features requiring PHP 7, such as scalar type hints or return type hints.
  • \n
\n

Disclaimer

\n

This plugin does not provide any legal protection. You as a site administrator are required to ensure that it meets legal standards. This plugin is a technical tool, not a lawyer.

\n","download_link":"https://downloads.wordpress.org/plugin/wp-gdpr-cookie-notice.1.0.0-rc.1.zip","tags":{"amp":"amp","cookie-consent":"cookie consent","cookie-notice":"cookie notice","gdpr":"GDPR","web-stories":"web stories"},"donate_link":"","icons":{"1x":"https://ps.w.org/wp-gdpr-cookie-notice/assets/icon-128x128.png?rev=2042024","2x":"https://ps.w.org/wp-gdpr-cookie-notice/assets/icon-256x256.png?rev=2042024"},"wporg":true},{"name":"WordPress Share Buttons Plugin – AddThis","slug":"addthis","version":"6.2.6","author":"The AddThis Team","author_profile":"https://profiles.wordpress.org/arnavarro","requires":"3.0","tested":"5.2.11","requires_php":false,"rating":84,"ratings":{"1":75,"2":25,"3":22,"4":46,"5":444},"num_ratings":612,"support_threads":2,"support_threads_resolved":0,"active_installs":100000,"downloaded":5069215,"last_updated":"2019-07-10 5:19pm GMT","added":"2008-12-23","homepage":"https://wordpress.org/plugins/addthis/","short_description":"Now compatible with the AMP Plugin! Free Share Buttons from AddThis. Share to Messenger, WhatsApp, Facebook, Twitter, Pinterest and many more.","description":"

Now compatible with the AMP Plugin! The Free WordPress Share Buttons Plugin from AddThis makes it easier than ever for your audience to spread your content around the web. Our quick-loading Share Buttons Plugin lets you connect to over 200 social channels including Messenger, WhatsApp, Facebook, Twitter, Pinterest and many more.

\n

Our clean, customizable and simple share buttons are beautiful, quick to load and recognized all over the web.

\n

AddThis is trusted by over 15,000,000 websites with over 2 billion unique users, sharing content all over the world, in more than sixty languages.

\n

Types of Share Buttons:

\n
    \n
  • \n

    Floating share buttons: Placed on the side of your page, following your reader as they scroll. A great way to promote sharing without getting too in-your-face.

    \n
  • \n
  • \n

    Expanding share buttons: Modern, clean, and best suited for sites with tons of mobile traffic. This button expands to reveal sharing options on hover or click.

    \n
  • \n
  • \n

    Inline share buttons: Integrate share buttons into your own content for a seamless sharing experience.

    \n
  • \n
  • \n

    Image sharing buttons: Seamlessly integrate sharing into your layout with adjustable image sharing buttons. Perfect for pages with tons of shareable content.

    \n
  • \n
\n

Customizable:

\n
    \n
  • \n

    Designed for desktop, tablet, and mobile

    \n
  • \n
  • \n

    Choose from over 200 social media channels to display

    \n
  • \n
  • \n

    Adjust coloring to match your brand

    \n
  • \n
\n

Analytics:

\n
    \n
  • Sign up for a free AddThis account to get analytics on how your content is performing such as your top shared content, referring social networks and more. After you register, these analytics are accessible by logging into your AddThis.com account and visiting your AddThis dashboard. Analytics include site pageviews, your top shared content, referring social networks, and more.
  • \n
\n

Support:

\n

We strive to provide best-in-class support with a response time of around two hours, and a customer satisfaction rate of over 98%. To get in touch with our team, head to http://www.addthis.com/support.

\n

Check out our other plugins to help you grow and engage your audience!

\n
    \n
  • \n

    Follow Buttons: Add followers to 65+ social networks, including Facebook, Snapchat, Instagram, and more.

    \n
  • \n
  • \n

    Related Posts: Boost your on-site engagement with our Related Posts tool, which recommends content not only by what’s popular, but also what’s most relevant.

    \n
  • \n
\n

Want more? Visit our website to learn how you can activate our Email List Building and Link Promotion Tools.

\n

AddThis Academy | Privacy Policy

\n","download_link":"https://downloads.wordpress.org/plugin/addthis.6.2.6.zip","tags":{"share-buttons":"share buttons","social":"social","social-marketing":"Social Marketing","social-share":"social share","social-sharing":"social sharing"},"donate_link":"","icons":{"1x":"https://ps.w.org/addthis/assets/icon-128x128.png?rev=1223867","2x":"https://ps.w.org/addthis/assets/icon-256x256.png?rev=1223867"},"wporg":true},{"name":"BigCommerce For WordPress","slug":"bigcommerce","version":"4.16.0","author":"BigCommerce","author_profile":"https://profiles.wordpress.org/bigcommerce","requires":"5.2","tested":"5.5.5","requires_php":"7.2.0","rating":80,"ratings":{"1":8,"2":1,"3":0,"4":3,"5":27},"num_ratings":39,"support_threads":4,"support_threads_resolved":1,"active_installs":1000,"downloaded":57555,"last_updated":"2021-08-12 3:08am GMT","added":"2018-11-16","homepage":"","short_description":"Scale your ecommerce business with WordPress on the front-end and BigCommerce on the back end. Free up server resources from things like catalog manag …","description":"

BigCommerce for WordPress is a plugin that allows you to scale ecommerce further than ever before on WordPress. Scale your business with WordPress on the front-end and free up server resources from things like catalog management, processing payments, managing fulfillment logistics and more with BigCommerce on the back end.

\n

Built to integrate seamlessly with WordPress, you get access to our native ecommerce features from a single plugin, the ability to sell across multiple channels and marketplaces from a single location, and best of all, an embedded checkout experience that takes on PCI compliance and customer security on your behalf.

\n

Quick Start!

\n

Look at details from the latest release, including new features and enhancements here: https://github.com/bigcommerce/bigcommerce-for-wordpress/releases

\n

Dive into how you set up and customize your site using BC4WP using our guides here: https://developer.bigcommerce.com/bigcommerce-for-wordpress/getting-started/introduction

\n

Have a suggestion for how we can be better? Ping the team! wordpress-suggestions@bigcommerce.com

\n

DIFFERENT FROM YOUR TRADITIONAL PLUGIN

\n

We’ve taken a very different approach to ecommerce in WordPress. We set out to build our plugin the WordPress Way: deliver value to the community, build it with WordPress experts and make something developers can call their own.

\n

The BigCommerce for WordPress plugin leverages the best aspects of both platforms, allowing WordPress to manage content and BigCommerce to manage ecommerce.

\n

SCALABLE ECOMMERCE FOR WORDPRESS

\n

Continue to tap into the unrestricted customization of WordPress while pairing it with the most scalable SaaS ecommerce engine. BigCommerce lets you build complex catalogs, manage large volumes of concurrent traffic, orders and analytics.

\n

The BigCommerce plugin ports over a copy of your product catalog and stores products as custom post types in WordPress. It also creates pages for your cart, checkout, account profiles, sign in, shipping & returns, gift certificates and order history.

\n

The key difference to our approach is that you don’t need to install additional extensions to get access to common ecommerce features. Instead, you get instant access to many common (and advanced) features, such as complex catalog support, global payment gateways, currency handling, taxation, shipping calculations and centralized channel management; all out-of-the-box.

\n

OFFLOAD BACKEND RESOURCES

\n

Our philosophy is that processing orders and running your store shouldn’t affect the uptime and speed of your site — which can hurt your SEO, conversion, and brand. The BigCommerce plugin does the heavy commerce lifting, letting you scale your ecommerce without losing speed or uptime.

\n

LET US HANDLE PCI COMPLIANCE

\n

Taking on your own PCI compliance comes with a huge amount of liability and risk. BigCommerce powers the full checkout experience, assuming the burden of PCI compliance for you.

\n

EXTENSIVE PAYMENT GATEWAYS

\n

BigCommerce has over 65 payment gateway integrations available out-of-the box, serving 100+ countries and over 250 local payment methods.

\n

To help you reduce costs, we’ve pre-negotiated special credit and debit card processing rates with PayPal, our preferred payment solution. The more you grow with BigCommerce and upgrade your plan, the lower your rates can go.

\n

HIGHLY SCALABLE PRODUCT CATALOG

\n

BigCommerce is built for large, complex catalogs with up to 600 SKUs per product, and 250 product values for a single option. Our native catalog structure treats single products (including variants, details, SKUs, etc.) as a single API call, making inventory syncing with ERPs, PIMs (and WordPress) fast.

\n

MULTI-CHANNEL SELLING & MANAGEMENT

\n

With the core BigCommerce platform, you now have access within the control panel to sell across multiple marketplaces simultaneously, such as eBay, Amazon, Facebook, Instagram, Google Shopping, Square and more! Save time and eliminate errors and overselling with bulk listing, automatic inventory syncing and unified order and fulfillment management.

\n

USE YOUR FAVORITE WORDPRESS THEME

\n

BigCommerce for WordPress will work with any WordPress theme, but it may require some styling to make it fit perfectly. Are you a theme developer? We’d love to promote your BigCommerce for WordPress compatible theme. Get in touch with us here.

\n

To start, we recommend choosing a cross-browser compatible WordPress ecommerce theme, since the theme options included will better match what an online store requires.

\n

ECOMMERCE WITH GUTENBERG

\n

We’re big supporters of Gutenberg and built our plugin to support both the classic editor and Gutenberg. Whether you’re inserting shortcodes in classic mode or product blocks in Gutenberg, we will continue to enable support for both.

\n

SECURED USER ACCOUNTS & LOGINS

\n

In addition to offering you peace of mind with a secure checkout experience, we also extend this level of security to your shoppers, their accounts and logins, and payment information — all managed by BigCommerce.

\n

GLOBAL SHIPPING STREAMLINED

\n

We support all major global carriers, offer real-time carrier quotes, allow for free shipping, flat rates, dropshipping and more. With our deep ShipperHQ integration, you can even specify rates by product, category, customer group, quantity, destination, dimensions and more.

\n

FLEXIBLE SHOPPING CART

\n

We are bringing over a decade of focusing on building online stores to every WordPress website. Through this we bring our flexible shopping cart, along with it’s extensive customization options, so can offer enterprise grade promotions and discounts within a fully responsive layout, without additional extensions that other WordPress ecommerce plugins require.

\n

MULTIPLE SITES; ONE CONTROL PANEL

\n

Even if you sell across multiple WordPress sites, you shouldn’t have to manage them all in separate places. BigCommerce gives you a single control panel to manage your catalog, orders and shipping, all from one place. Streamline your admin experience and spend less time managing ecommerce on WordPress.

\n

Beyond WordPress, the endpoints we’ve opened on our platform allow you to build commerce into any sort of experience. Looking to launch a site in React? Interested in developing a mobile app? Want to integrate with an in-house POS? All of these can be built and managed from within the BigCommerce Control Panel.

\n

COMPLEX ENTERPRISE SYSTEMS INTEGRATIONS

\n

A huge benefit of having a SaaS ecommerce engine behind the scenes is that the core platform is already built for mid-market and enterprise use cases. Natively connect to your existing ERP suites, PIM software, OMS solutions, POS systems or marketing automation tools right out of the box.

\n

AMP SUPPORT

\n

Unique to most WordPress ecommerce plugins, BigCommerce for WordPress also includes support for Accelerated Mobile Pages. To activate, install the official Google plugin.

\n

SUPPORT AND SERVICES

\n

All of our BigCommerce customers have access to our 24/7 live phone, chat, and email support, run from our headquarters in Austin, Texas. For larger enterprise customers, we offer dedicated account management and implementation management services as part of your plan. We also have an ever-growing collection of help, support, and how-to guides in our help center.

\n

BUILT WITH DEVELOPERS IN MIND

\n

BigCommerce for WordPress was built by WordPress developers, with developers in mind. Our plugin is open source and available for you to fork, extend and modify as your needs require.

\n

Our plugin supports WordPress’ standard method of overriding template files so you can modify out-of-the-box designs. Customize your product cards, lists and shopping cart without risking plugin updates that will undo your changes.

\n

Additionally, there are many hooks and filters, so you can manipulate content to your heart’s content.

\n

JOIN OUR BIGCOMMERCE COMMUNITY

\n

All BigCommerce customers get access to our ever-growing online community to answer questions, discuss ecommerce strategies, learn about the latest product updates, contribute ideas and more.

\n

If you’re interested in contributing to BigCommerce for WordPress, head over to our GitHub Repository.

\n","download_link":"https://downloads.wordpress.org/plugin/bigcommerce.4.16.0.zip","tags":{"ecommerce":"ecommerce","online-store":"online store","retail":"retail","sell-online":"sell online","storefront":"storefront"},"donate_link":"","icons":{"1x":"https://ps.w.org/bigcommerce/assets/icon-256x256.png?rev=2141502","2x":"https://ps.w.org/bigcommerce/assets/icon-256x256.png?rev=2141502"},"wporg":true},{"name":"Yoast SEO","slug":"wordpress-seo","version":"17.1","author":"Team Yoast","author_profile":"https://profiles.wordpress.org/joostdevalk","requires":"5.6","tested":"5.8","requires_php":"5.6.20","rating":96,"ratings":{"1":718,"2":124,"3":170,"4":616,"5":25755},"num_ratings":27383,"support_threads":533,"support_threads_resolved":483,"active_installs":5000000,"downloaded":352498508,"last_updated":"2021-09-07 6:57am GMT","added":"2010-10-11","homepage":"https://yoa.st/1uj","short_description":"Improve your WordPress SEO: Write better content and have a fully optimized WordPress site using the Yoast SEO plugin.","description":"

Yoast SEO: the #1 WordPress SEO plugin

\n

Since 2008 Yoast SEO has helped millions of websites worldwide to rank higher in search engines.

\n

Yoast’s mission is SEO for Everyone. Our plugin’s users range from the bakery around the corner to some of the most popular sites on the planet.

\n

Yoast SEO Free contains everything that you need to manage your SEO, and the Yoast SEO Premium plugin and its extensions unlock even more tools and functionality.

\n

GET AHEAD OF THE COMPETITION

\n

To rank highly in search engines, you need to beat the competition. You need a better, faster, stronger website than the people who sell or do the same kinds of things as you.

\n

Yoast SEO is the most-used WordPress SEO plugin, and has helped millions of people like you to get ahead, and to stay ahead.

\n

TAKING CARE OF YOUR WORDPRESS SEO

\n

Yoast SEO is packed full of features, designed to help visitors and search engines to get the most out of your website. Some of our favourites are:

\n
    \n
  • Automated technical SEO improvements, like canonical URLs and meta tags.
  • \n
  • Advanced XML sitemaps; making it easy for Google to understand your site structure.
  • \n
  • Title and meta description templating, for better branding and consistent snippets in the search results.
  • \n
  • An in-depth Schema.org integration that will increase your chance of getting rich results, by helping search engines to understand your content.
  • \n
  • Full control over site breadcrumbs, so that users and search engines always know where they are.
  • \n
  • Faster loading times for your whole website, due to an innovative way of managing data in WordPress.
  • \n
  • [Premium] E-mail support for our Yoast SEO Premium users.
  • \n
  • [Premium] The possibility to expand Yoast SEO with the News SEO, Video SEO, Local SEO and WooCommerce SEO extensions.
  • \n
\n

WRITE KILLER CONTENT WITH YOAST SEO

\n

We know content is king, that’s why Yoast SEO is famous for its state-of-the-art content and SEO analysis. Yoast SEO gives you:

\n
    \n
  • SEO analysis: an invaluable tool while writing SEO-friendly content with the right (focus) keyphrases in mind.
  • \n
  • Readability analysis: ensures that humans and search engines can read and understand your content.
  • \n
  • Full language support for: English, German, French, Dutch, Spanish, Italian, Russian, Indonesian, Polish, Portuguese, Arabic, Swedish, Hebrew, Hungarian, Turkish, Czech, Norwegian and Slovak.
  • \n
  • A Google preview, which shows what your listings will look like in the search results. Even on mobile devices!
  • \n
  • Innovative Schema blocks for the WordPress block editor, so that your FAQ and HowTo content can be shown directly in the search results. Plus a breadcrumbs block to guide your users.
  • \n
  • [Premium] Internal linking blocks to easily improve the structure of your content. Easily add a table of contents block, a related links block, a subpages block, or siblings block! Plus, we’ll keep adding these easy-to-add blocks to improve your site structure.
  • \n
  • [Premium] Social previews to show you how your content will be shown on Twitter and Facebook. Plus: Social Appearance Templates to guarantee a consistent look.
  • \n
  • [Premium] The Insights tool that shows you what your text focuses on. This way you can keep your article in line with your keyphrases.
  • \n
  • [Premium] Optimize your content for synonyms and related keyphrases.
  • \n
  • [Premium] Optimize your article for different word forms of your keyphrases, as the singular and plural. But also different verb forms, synonyms, and related keyphrases. This makes for more natural content!
  • \n
  • [Premium] Automatic internal linking suggestions: write your article and get automatic suggested posts to link to!
  • \n
  • [Premium] An orphaned content filter to detect posts that have no links pointing towards them!
  • \n
  • [Premium] SEO workouts to make working on your site as easy as ABC. These SEO workflows will get your site into shape in no time!
  • \n
\n

KEEP YOUR SITE IN PERFECT SHAPE

\n

Whether you are an online entrepreneur, blogger or content creator, a developer, a (WordPress) SEO expert or a business owner, Yoast SEO helps you keep your website in perfect shape by:

\n
    \n
  • Tuning the engine of your website, so you can work on creating great content!
  • \n
  • Giving you cornerstone content and internal linking features to help you optimize your site structure in a breeze.
  • \n
  • Translating your content to structured data where possible, to help search engines understand your website.
  • \n
  • Helping you manage your team: with our SEO roles you can give colleagues access to specific sections of the Yoast SEO plugin.
  • \n
  • [Premium] Automatically creating redirects when URLs change or when pages are deleted, and providing tools to manage or create redirects.
  • \n
  • [Premium] Showing you social previews to manage the way your page is shared on social networks like Facebook and Twitter.
  • \n
\n

TRUST THE EXPERTS

\n

Yoast is powered by a team of expert developers, testers, software architects, and SEO consultants. They work constantly to stay at the cutting edge of WordPress SEO, and to improve the plugin with every release.

\n

Yoast SEO is the only WordPress SEO plugin made by world-renowned SEO experts.

\n

GET PREMIUM SUPPORT

\n

The Yoast team offers regular support on the WordPress.org forums. But we hope you understand that we prioritize our Premium customers. This one-on-one email support is available to people who have purchased Yoast SEO Premium.

\n

Did you know that Yoast SEO Premium contains a lot of extra features:

\n
    \n
  • A redirect manager that prevents “404: page not found” errors
  • \n
  • Optimize without worrying about over-optimization with intelligent word form recognition available in multiple languages.
  • \n
  • Internal linking blocks to structure your site easily.
  • \n
  • Internal linking suggestions while you’re writing.
  • \n
  • Preview your content to see what it will look like in the search results and when shared on social media using the Google preview and social preview.
  • \n
  • Cornerstone content checks that point search engines to your most important pages.
  • \n
  • Connect Yoast SEO to Zapier to easily create zaps that instantly share your published posts with 2000+ destinations like Twitter, Facebook, and much more.
  • \n
\n

If you are serious about your WordPress SEO, install the Yoast SEO Premium plugin! Costs a little, saves a lot of time!

\n

OUR EXTENSIONS TO FURTHER IMPROVE YOUR WORDPRESS SEO

\n

Check out these SEO add-ons by Yoast:

\n
    \n
  • Yoast Local SEO optimizes your website for a local audience.
  • \n
  • Yoast Video SEO ensures that Google understands what your video is about, increasing the chances of ranking in the video results.
  • \n
  • Yoast News SEO for news websites that want to improve their visibility and performance in Google News.
  • \n
  • WooCommerce SEO for all online shops that want to perform better in the search results and social media.
  • \n
\n

These extensions work fine with the free version of Yoast SEO. Of course, the premium extensions also include 24/7 support.

\n

Oh, don’t forget: our Yoast Academy is for all entrepreneurs, bloggers, and anyone who wants to learn more about optimizing websites, improving your WordPress SEO, and if you want to take your content to the next level!

\n

INTEGRATIONS

\n

Yoast SEO integrates seamlessly into a range of themes and plugins. We work particularly well with:

\n\n

BUG REPORTS

\n

Do you want to report a bug for Yoast SEO? Best to do so in the WordPress SEO repository on GitHub. Please note that GitHub is not a support forum and issues will be closed if they don’t meet the bug requirements.

\n

READ MORE

\n

Want more information on search engine optimization and Yoast SEO? Have a look at:

\n\n","download_link":"https://downloads.wordpress.org/plugin/wordpress-seo.17.1.zip","tags":{"content-analysis":"Content analysis","readability":"Readability","schema":"schema","seo":"seo","xml-sitemap":"xml sitemap"},"donate_link":"https://yoa.st/1up","icons":{"1x":"https://ps.w.org/wordpress-seo/assets/icon.svg?rev=2363699","2x":"https://ps.w.org/wordpress-seo/assets/icon-256x256.png?rev=2363699","svg":"https://ps.w.org/wordpress-seo/assets/icon.svg?rev=2363699"},"wporg":true},{"name":"Gutenberg","slug":"gutenberg","version":"11.4.1","author":"Gutenberg Team","author_profile":"https://profiles.wordpress.org/matveb","requires":"5.6","tested":"5.8","requires_php":"5.6","rating":42,"ratings":{"1":2267,"2":201,"3":126,"4":133,"5":701},"num_ratings":3428,"support_threads":61,"support_threads_resolved":8,"active_installs":300000,"downloaded":24491928,"last_updated":"2021-09-03 3:27pm GMT","added":"2017-06-16","homepage":"https://github.com/WordPress/gutenberg","short_description":"The Gutenberg plugin provides editing, customization, and site building features to WordPress. This beta plugin allows you to test bleeding-edge featu …","description":"

“Gutenberg” is a codename for a whole new paradigm in WordPress site building and publishing, that aims to revolutionize the entire publishing experience as much as Gutenberg did the printed word. Right now, the project is in the first phase of a four-phase process that will touch every piece of WordPress — Editing, Customization, Collaboration, and Multilingual — and is focused on a new editing experience, the block editor.

\n

The block editor introduces a modular approach to pages and posts: each piece of content in the editor, from a paragraph to an image gallery to a headline, is its own block. And just like physical blocks, WordPress blocks can added, arranged, and rearranged, allowing WordPress users to create media-rich pages in a visually intuitive way — and without work-arounds like shortcodes or custom HTML.

\n

The block editor first became available in December 2018, and we’re still hard at work refining the experience, creating more and better blocks, and laying the groundwork for the next three phases of work. The Gutenberg plugin gives you the latest version of the block editor so you can join us in testing bleeding-edge features, start playing with blocks, and maybe get inspired to build your own.

\n

Discover More

\n
    \n
  • \n

    User Documentation: See the WordPress Editor documentation for detailed docs on using the editor as an author creating posts and pages.

    \n
  • \n
  • \n

    Developer Documentation: Extending and customizing is at the heart of the WordPress platform, see the Developer Documentation for extensive tutorials, documentation, and API reference on how to extend the editor.

    \n
  • \n
  • \n

    Contributors: Gutenberg is an open-source project and welcomes all contributors from code to design, from documentation to triage. See the Contributor’s Handbook for all the details on how you can help.

    \n
  • \n
\n

The development hub for the Gutenberg project is on Github at: https://github.com/wordpress/gutenberg

\n

Discussion for the project is on Make Blog and the #core-editor channel in Slack, signup information.

\n","download_link":"https://downloads.wordpress.org/plugin/gutenberg.11.4.1.zip","tags":[],"donate_link":"","icons":{"1x":"https://ps.w.org/gutenberg/assets/icon-128x128.jpg?rev=1776042","2x":"https://ps.w.org/gutenberg/assets/icon-256x256.jpg?rev=1776042"},"wporg":true},{"name":"Setka Editor","slug":"setka-editor","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://setka.io/","short_description":"

Setka Editor is the first WYSIWYG plugin with page builder functionality.

\n","description":"\n\n\n

Setka Editor is the first WYSIWYG plugin with page builder functionality.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2018/11/Setka-Banner-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2018/11/Setka-Banner-372x209.jpg","svg":""},"wporg":false}] \ No newline at end of file +[{"name":"Podcast Player – Your Podcasting Companion","slug":"podcast-player","version":"5.2.0","author":"vedathemes","author_profile":"https://profiles.wordpress.org/vedathemes","requires":"4.9","tested":"5.8.1","requires_php":"5.6","rating":98,"ratings":{"1":0,"2":1,"3":0,"4":2,"5":44},"num_ratings":47,"support_threads":5,"support_threads_resolved":3,"active_installs":8000,"downloaded":120973,"last_updated":"2021-09-27 12:03pm GMT","added":"2019-02-06","homepage":"https://vedathemes.com/podcast-player/","short_description":"Showcase your podcast only using podcasting feed url. Use custom widget, shortcode or editor block to display podcast player anywhere on your site.","description":"

Podcast Player provides an easy way to show and play your podcast episodes using podcasting feed url. It is a must have plugin for your podcast website. Give your listeners an easy access to all your episodes from any page or even from all the pages of your website.

\n

Podcast Player Pro | Documentation

\n\n

Podcast player key features

\n
    \n
  • Give your listeners an easy access to your podcast episodes.
  • \n
  • Display responsive podcast player just by entering your podcast’s feed url.
  • \n
  • Fetch all required details from feed url.
  • \n
  • Option to modify fetched details of your podcast.
  • \n
  • Option to Show or Hide individual player elements.
  • \n
  • Give your listener an option to share your podcast episodes.
  • \n
  • Ajax live search episodes from the podcast.
  • \n
  • It is possible to have multiple instances of podcast player on single page.
  • \n
  • Self adjusting layout according to width of the podcast player.
  • \n
\n

Podcast player pro features

\n
    \n
  • Professionally showcase your podcast using our unified player, episode list and grid templates.
  • \n
  • Use powerful filter options to choose which episodes or seasons you want to display on your website.
  • \n
  • Make your entire podcast catalogue easily available using our ajax approximate search feature.
  • \n
  • Add an audio message within your podcast episode.
  • \n
  • Add audio mp3 to your WordPress posts and display as podcast episodes.
  • \n
  • Show or hide specific elements and customize color and fonts to personalize your podcast display
  • \n
\n

Setup Podcast Player Widget

\n

Display searchable podcast episodes list on any widget area of your website.

\n

Minimum Setup

\n
    \n
  1. After activating the plugin, visit Appearance > Widgets in admin dashboard.
  2. \n
  3. Look for ‘Podcast player’ widget in left ‘Available Widgets’ section.
  4. \n
  5. Drag the widget to any available sidebar/widget area.
  6. \n
  7. Enter feed url in the appropriate field.
  8. \n
  9. Click [Save] button.
  10. \n
\n

Advanced Setup

\n
    \n
  1. After activating the plugin, visit Appearance > Widgets in admin dashboard.
  2. \n
  3. Look for ‘Podcast player’ widget in left ‘Available Widgets’ section.
  4. \n
  5. Drag the widget to any available sidebar/widget area.
  6. \n
  7. Enter feed url in the appropriate field.
  8. \n
  9. Optionally, click on “Change podcast content” button to customize feed’s auto fetched details.
  10. \n
  11. Optionally, click on “Show/Hide player items” button to show or hide player elements.
  12. \n
  13. Optionally, click on “Podcast player styling” button to customize player’s accent color.
  14. \n
  15. Optionally, click on “Sort & Filter” button to sort or filter podcast episodes.
  16. \n
  17. Click [Save] button.
  18. \n
\n

Setup Podcast Player Block

\n

Display searchable podcast episodes list on any post or page. Make sure you have not disabled WordPress latest block editor.

\n

Setup

\n
    \n
  1. After activating the plugin, visit any post or page’s edit screen.
  2. \n
  3. In main content area, click on ‘+’ icon to add a new block.
  4. \n
  5. Search for ‘Podcast Player’ block.
  6. \n
  7. Enter feed url in the appropriate field. A preview of your podcast player will appear.
  8. \n
  9. Click on the podcast player preview.
  10. \n
  11. Select appropriate options from the right sidebar to customize the player.
  12. \n
  13. Save or Update the post.
  14. \n
\n

Setup Podcast Player using shortcode

\n

Minimum Setup

\n
[podcastplayer feed_url ='']\n
\n
    \n
  1. feed_url – Your podcast feed url.
  2. \n
\n

Advanced Setup

\n
[podcastplayer feed_url ='' number='' podcast_menu='' cover_image_url='' hide_cover='true' hide_description='true' hide_subscribe='true' hide_search='true' hide_loadmore='true' hide_download='true' accent_color='#65b84f']Short Description [/podcastplayer]\n
\n
    \n
  1. feed_url: Your podcast feed url.
  2. \n
  3. number: Number of podcasts episodes to be displayed at a time.
  4. \n
  5. podcast_menu: Any previously created WordPress menu’s name OR ID OR slug. (optional)
  6. \n
  7. cover_image_url: Podcast’s cover image url. The image must be from your WP media library. (optional)
  8. \n
  9. header_default: (false/true) Show player header items by default
  10. \n
  11. hide_header: Hide player header items
  12. \n
  13. hide_title: (false/true) Show / Hide podcast Title in header info section
  14. \n
  15. hide_cover: (false/true) Show / Hide podcast cover image
  16. \n
  17. hide_description: (false/true) Show / Hide podcast description
  18. \n
  19. hide_subscribe: (false/true) Show / Hide podcast subscribe button.
  20. \n
  21. hide_search: (false/true) Show / Hide podcast search field.
  22. \n
  23. hide_author: (false/true) Show / Hide author/podcaster’s name.
  24. \n
  25. hide_content: (false/true) Show / Hide podcast episode’s content.
  26. \n
  27. hide_loadmore: (false/true) Show / Hide podcast load more button.
  28. \n
  29. hide_download: (false/true) Show/ Hide podcast episode download link.
  30. \n
  31. hide_social: (false/true) Show/ Hide podcast episode social sharing links.
  32. \n
  33. accent_color: Podcast player’s accent color (Color hex-code to be entered).
  34. \n
  35. sortby: Sort podcast episodes (sort_date_desc/sort_date_asc/sort_title_desc/sort_title_asc)
  36. \n
  37. filterby: Filter by any string in episode’s title
  38. \n
  39. list_default: (false/true) Display Episodes list by default on small screen
  40. \n
  41. hide_featured: (false/true) Show / Hide podcast episode featured image
  42. \n
  43. apple_sub: Apple podcast subscription link
  44. \n
  45. google_sub: Google podcast subscription link
  46. \n
  47. Short Description: Podcast short text description. (optional)
  48. \n
\n","download_link":"https://downloads.wordpress.org/plugin/podcast-player.5.2.0.zip","tags":{"feed-to-audio":"feed to audio","podcast":"podcast","podcaster":"podcaster","podcasting":"podcasting","rss-feed":"rss feed"},"donate_link":"","icons":{"1x":"https://ps.w.org/podcast-player/assets/icon-256x256.png?rev=2025683","2x":"https://ps.w.org/podcast-player/assets/icon-256x256.png?rev=2025683"},"wporg":true},{"name":"WPSSO Schema JSON-LD Markup","slug":"wpsso-schema-json-ld","version":"5.0.0","author":"JS Morisset","author_profile":"https://profiles.wordpress.org/jsmoriss","requires":"5.0","tested":"5.8.1","requires_php":"7.0","rating":90,"ratings":{"1":5,"2":2,"3":1,"4":1,"5":55},"num_ratings":64,"support_threads":4,"support_threads_resolved":4,"active_installs":4000,"downloaded":289904,"last_updated":"2021-09-25 7:00pm GMT","added":"2016-02-14","homepage":"https://wpsso.com/extend/plugins/wpsso-schema-json-ld/","short_description":"Discontinued / deprecated add-on.","description":"

Discontinued / deprecated add-on:

\n

The [schema] shortcode was migrated to a new WPSSO Schema Shortcode add-on.

\n

All other features of the WPSSO Schema JSON-LD Markup (aka WPSSO JSON) add-on were integrated into the WPSSO Core v9.0.0 plugin.

\n

The WPSSO JSON Premium version remains available and supported:

\n
    \n
  • \n

    If you are using the Free / Standard version of WPSSO Core, you can safely update and continue using the WPSSO JSON Premium add-on.

    \n
  • \n
  • \n

    If you are using the WPSSO Core Premium version, you can deactivate and delete the WPSSO JSON Premium add-on (all of its Premium features have been integrated into the WPSSO Core Premium plugin).

    \n
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/wpsso-schema-json-ld.5.0.0.zip","tags":[],"donate_link":"","icons":{"1x":"https://ps.w.org/wpsso-schema-json-ld/assets/icon-128x128.png?rev=2480083","2x":"https://ps.w.org/wpsso-schema-json-ld/assets/icon-256x256.png?rev=2480083"},"wporg":true},{"name":"ShortPixel Image Optimizer","slug":"shortpixel-image-optimiser","version":"4.22.5","author":"ShortPixel","author_profile":"https://profiles.wordpress.org/shortpixel","requires":"4.2.0","tested":"5.8.1","requires_php":"5.6","rating":92,"ratings":{"1":53,"2":12,"3":8,"4":12,"5":545},"num_ratings":630,"support_threads":13,"support_threads_resolved":9,"active_installs":300000,"downloaded":6957952,"last_updated":"2021-08-31 5:54pm GMT","added":"2014-11-05","homepage":"https://shortpixel.com/","short_description":"Speed up your website & boost your SEO by compressing old & new images and…","description":"

A freemium, easy to use, comprehensive, stable and frequently updated image compression plugin supported by the friendly team that created it. 🙂

\n

Increase your website’s SEO ranking, number of visitors and ultimately your sales by optimising any image or PDF document on your website.
\nShortPixel is an easy to use, lightweight, install-and-forget-about-it image optimization plugin that can compress all your past images and PDF documents with a single click. New images are automatically resized/rescaled and optimized on the fly, in the background. It’s also compatible with any gallery, slider or ecommerce plugin.

\n

Ready for a quick DEMO? Test our plugin here.
\nOr you can create a staging copy of your site using WP Staging and test it there.

\n

Short Pixel uses minimal resources and works well with any shared, cloud, VPS or dedicated web hosting. It can optimize any image you have on your website even the images that aren’t listed in Media Library like those in galleries like NextGEN, Modula or added directly via FTP!

\n

Both lossy and lossless image compression are available for the most common image types (JPG, PNG, GIF, WebP and AVIF) plus PDF files.
\nWe also offer glossy JPEG compression which is a very high quality lossy optimization algorithm. Specially designed for photographers!
\nOptimized images mean better user experience, better PageSpeed Insights or GTmetrix results, better Google PageRank and more visitors.

\n

Make an instant image compression test of your site or compress some images to test our optimization algorithms.

\n

Why is ShortPixel the best choice when it comes to image optimization or PDF compression?

\n
    \n
  • popular plugin with over 300,000 active installations – according to WordPress
  • \n
  • compress JPG (and its variations JPEG, JPEG 2000, JPEG XR), PNG, GIF (still or animated) images and also PDF documents
  • \n
  • option to convert any JPEG, PNG or GIF (even animated ones!) to WebP and AVIF for more Google love. How to enable WebP?. What is AVIF and why is it good?.
  • \n
  • option to automatically convert PNG to JPG if that will result in smaller images. Ideal for large images in PNG format
  • \n
  • option to include the next generation images (WebP and AVIF) into the front-end pages by using the <picture> tag instead of <img>, independent from generating them through the plugin
  • \n
  • compatible with WP Retina 2x – all retina images are automatically compressed. How to benefit from Retina displays?
  • \n
  • optimize thumbnails as well as featured images. You can also select individual thumbnails to exclude from optimization
  • \n
  • ability to optimize any image on your site including images in NextGEN Gallery and any other image galleries or sliders
  • \n
  • option to scale images down, with 2 different options, which is very useful to automatically resize large images. This applies to the featured images and there is no need for additional plugins like Imsanity
  • \n
  • CMYK to RGB conversion
  • \n
  • skip already optimized images
  • \n
  • 24h stellar support (24/7) directly from developers.
  • \n
  • easily test lossy/glossy/lossless versions of the images with a single click in your Media Library
  • \n
  • great for photographers: keep or remove EXIF data from your images, compress photos with lossless option
  • \n
  • works well with both HTTPS and HTTP websites
  • \n
  • uses progressive JPEG for larger images in order to speed up the image display
  • \n
  • you can run ShortPixel plugin on multiple websites or on a multisite with a single API Key
  • \n
  • it is safe to test and use the plugin: all the original images are by default saved in a local backup that can be restored with a click, either one by one or in bulk
  • \n
  • ‘Bulk’ optimize all the existing images in Media Library or in any gallery with one click
  • \n
  • works great for eCommerce websites using WooCommerce or other plugins
  • \n
  • works great with NextGEN gallery, Foo Gallery and any other galleries and sliders
  • \n
  • compatible with WP Engine hosted websites and all the major hosting providers
  • \n
  • compatible with WPML and WPML Media plugins
  • \n
  • no file size limit
  • \n
  • integrates with Gravity Forms post_image field type optimizing the images upon upload
  • \n
  • compatible with watermarking plugins
  • \n
  • option to deactivate auto-optimizing images on upload
  • \n
  • no credits are used for the images that are optimised less that 5%
  • \n
  • direct integration with CloudFlare, either by using an API Key or a Token
  • \n
  • 30 days optimization report with all image details and overall statistics
  • \n
  • We are GDPR compliant! Read more.
  • \n
  • free optimization credits for non-profits, contact us for details
  • \n
\n

How much does it cost?
\nShortPixel comes with 100 free credits/month and additional credits can be bought for as little as $4.99 for 5,000 image credits.
\nCheck out our prices.

\n
\n

Testimonials:
\n ★★★★★ A Super Plugin works very well 62% reduction overall. robertvarns
\n ★★★★★ The secret sauce for a WordPress website. mark1mark
\n ★★★★★ A must have plugin, great support! ElColo13
\n ★★★★★ Excellent Plugin! Even Better Customer Service! scaliendo
\n ★★★★★ Great image compression, solid plugin, equally great support. matters1959
\n more testimonials

\n
\n\n

Help us spread the word by recommending ShortPixel to your friends and collect 100 lifetime monthly additional image credits for each referred active user. Make money by promoting a great plugin with our 30% commission affiliate program.

\n

Other plugins by ShortPixel

\n\n

Get in touch!

\n\n

Actions and Filters for Developers

\n

The ShortPixel Image Optimiser plugin calls the following actions and filters:

\n
do_action( 'shortpixel_image_optimised', $post_id );\n
\n

upon successful optimization;

\n
do_action(\"shortpixel_before_restore_image\", $post_id);\n
\n

before restoring an image from backup;

\n
do_action(\"shortpixel_after_restore_image\", $post_id);\n
\n

after succesful restore;

\n
apply_filters(\"shortpixel_backup_folder\", $backup_folder, $main_file_path, $sizes);\n
\n

just before returning the ShortPixel backup folder, usually /wp-content/uploads/ShortpixelBackups. The $sizes are the sizes array from metadata;

\n
apply_filters('shortpixel_image_exists', file_exists($path), $path, $post_id);\n
\n

post ID is not always set, only if it’s an image from Media Library;

\n
apply_filters('shortpixel_image_urls', $URLs, $post_id);\n
\n

filters the URLs that will be sent to optimisation, $URLs is a plain array;

\n
apply_filters('shortpixel/db/chunk_size', $chunk);\n
\n

the $chunk is the value ShortPixel chooses to use as number of selected records in one query (based on total table size), some hosts work better with a different value;

\n
apply_filters('shortpixel/backup/paths', $PATHs, $mainPath);\n
\n

filters the array of paths of the images sent for backup and can be used to exclude certain paths/images/thumbs from being backed up, based on the image path. $mainPath is the path of the main image, while $PATHs is an array with all files to be backed up (including thumbnails);

\n
apply_filters('shortpixel/settings/image_sizes', $sizes);\n
\n

filters the array ($sizes) of image sizes which can be excluded from processing (displayed in the plugin Advanced settings).

\n

In order to define custom thumbnails to be picked up by the optimization you have two options, both comma separated defines:

\n
define('SHORTPIXEL_CUSTOM_THUMB_SUFFIXES', '_tl,_tr');\n
\n

will handle custom thumbnails like image-100x100_tl.jpg;

\n
define('SHORTPIXEL_CUSTOM_THUMB_INFIXES', '-uae');\n
\n

will handle custom thumbnails like image-uae-100×100.jpg;

\n
define('SHORTPIXEL_USE_DOUBLE_WEBP_EXTENSION', true);\n
\n

will tell the plugin to create double extensions for the WebP image counterparts, for example image.jpg.webp for image.jpg;

\n
define(\"SHORTPIXEL_NOFLOCK\", true);\n
\n

don’t use flock queue, only activate this when you have flock() denied errors on your installation;

\n
define(\"SHORTPIXEL_EXPERIMENTAL_SECURICACHE\", true);\n
\n

adds timestamps to URLS, to prevent hitting the cache. Useful for persistent caches.

\n

Hide the Cloudflare settings by defining these constants in wp-config.php:

\n
define('SHORTPIXEL_CFTOKEN', 'the Cloudflare API token that has Purge Cache right');\ndefine('SHORTPIXEL_CFZONE', 'The Zone ID from the domain settings in Cloudflare');\n
\n

Hide the WSO banner in the settings by defining this constant in wp-config.php:

\n
define('SHORTPIXEL_NO_BANNER', true);\n
\n

Alternatively, you can use this filter in your theme’s functions.php file:

\n
add_filter('shortpixel/settings/no_banner', true);\n
\n","download_link":"https://downloads.wordpress.org/plugin/shortpixel-image-optimiser.4.22.5.zip","tags":{"compressor":"compressor","convert-webp":"convert webp","image-optimization":"image optimization","optimize-images":"optimize images","resize":"resize"},"donate_link":"","icons":{"1x":"https://ps.w.org/shortpixel-image-optimiser/assets/icon-128x128.png?rev=1038819","2x":"https://ps.w.org/shortpixel-image-optimiser/assets/icon-256x256.png?rev=1038819"},"wporg":true},{"name":"Theme Kit for Twenty Twenty-One & Twenty Twenty (Customization, Gutenberg Blocks, Templates) – Twentig","slug":"twentig","version":"1.3.6","author":"Twentig","author_profile":"https://profiles.wordpress.org/twentig","requires":"5.5","tested":"5.8.1","requires_php":"5.6","rating":100,"ratings":{"1":0,"2":0,"3":0,"4":2,"5":108},"num_ratings":110,"support_threads":34,"support_threads_resolved":29,"active_installs":10000,"downloaded":149868,"last_updated":"2021-09-15 2:23pm GMT","added":"2019-05-29","homepage":"https://twentig.com","short_description":"Supercharge your WordPress theme (Twenty Twenty-One & Twenty Twenty) with customization options, enhanced Gutenberg blocks,…","description":"

The easy way to build a beautiful website.

\n

Twentig helps you customize the default WordPress theme (Twenty Twenty-One and Twenty Twenty) the way you want with Google Fonts, colors, custom layouts, and many more options.

\n

With enhanced Gutenberg blocks, pre-designed block templates, and starter websites, you’ve got everything you need to build stunning pages that look great on any device — no coding or design skills needed.

\n
\n

“Twentig is a plugin that essentially gives superpowers to the default theme.” — Justin Tadlock, WP Tavern

\n
\n

Customize the most popular WordPress theme. Your way.

\n

Twentig offers powerful features to customize the Twenty Twenty-One and Twenty Twenty themes — making it easier than ever to create your own professional website.

\n

Advanced theme customization. From post grid to sidebar to sticky header to footer layout, our plugin provides endless ways to enhance your WordPress theme. Change the look and feel of your website by customizing the fonts (Google Fonts), colors, global styles, 404 page, and more.

\n

Custom page templates. Control the look of your entire page with our page templates. Easily remove the page title, header, footer, or set a transparent header. Now you can use Gutenberg blocks to create a custom hero, landing page, coming soon page, and more.

\n

Tailored design. Twentig brings design improvements to the default WordPress theme. Our additional block settings and pre-designed block templates are specially built for it — so it’s simple to make beautiful pages with Gutenberg blocks.

\n

Start with a pre-built website.

\n

Instead of starting from scratch, you can quickly import one of Twentig’s starter websites crafted by award-winning designers.

\n

The simple way to import starter websites. Choose from a variety of starter websites and seamlessly load them in a few seconds in the Customizer. Preview and customize your theme any way you like before publishing it to your live site.

\n

Flexible import. Twentig lets you import full websites (Customizer settings, menus, widgets, and pages built with Gutenberg blocks). You can also only import what you need, be it the styling or the pages, on a fresh install or an existing website.

\n

Check out the starter websites to see the power and flexibility of Twentig.

\n

Do more with Gutenberg blocks.

\n

Twentig enhances the existing Gutenberg blocks — taking the WordPress block editor to a new level of design and creativity.

\n

Block customization made easy. We’ve added the right amount of features to the Gutenberg core blocks. So you can easily customize your blocks to fit your needs with just a few clicks.

\n

Powerful Gutenberg block features. Twentig provides alternative styles, advanced block settings, margin controls, and CSS classes. From columns style to group shape divider to typography settings, you have the best tools to customize the Gutenberg blocks and build gorgeous pages.

\n

Build your pages with ready-to-use templates.

\n

Twentig brings hundreds of pre-designed block patterns and page templates — making it easier and faster than ever to create stunning pages.

\n

Flexible block templates. Choose from a variety of versatile block patterns and page templates that you can mix and match to fit your project. Our block template library is designed to enable a wide range of uses and endless design possibilities.

\n

Professional design. Our templates are responsive and give your pages a professional look right from the start — no coding or design skills needed.

\n

Twentig features list

\n

Check out the screenshots to see how Twentig can transform your theme and the Gutenberg blocks.

\n

ADDITIONAL THEME OPTIONS

\n

Header

\n
    \n
  • Header layouts
  • \n
  • Sticky header
  • \n
  • Header width
  • \n
  • Header decoration
  • \n
  • Additional elements: search bar, social icons, button
  • \n
  • Logo width
  • \n
  • Custom logo for transparent header
  • \n
  • Menu link style
  • \n
  • Option to display the burger menu on tablet
  • \n
\n

Footer

\n
    \n
  • Footer layouts
  • \n
  • Footer widgets layout
  • \n
  • Footer width
  • \n
  • Custom copyright and remove “Powered by WordPress”
  • \n
  • Social icons
  • \n
\n

Site Layout

\n
    \n
  • Text width
  • \n
  • Wide width (Twenty Twenty-One theme)
  • \n
  • Site width to create a boxed layout site (Twenty Twenty-One theme)
  • \n
\n

Blog Posts Page

\n
    \n
  • Option to display the page title (Twenty Twenty-One theme)
  • \n
  • Blog layouts: stack, post grid, post grid card
  • \n
  • Blog sidebar (Twenty Twenty-One theme)
  • \n
  • Number of columns for post grid layouts
  • \n
  • Featured image options
  • \n
  • Blog content options
  • \n
  • Blog meta options
  • \n
  • Pagination style (Twenty Twenty-One theme)
  • \n
\n

Single Blog Post

\n
    \n
  • Featured image and post title layouts
  • \n
  • Blog sidebar (Twenty Twenty-One theme)
  • \n
  • Option to display the manual excerpt below the title
  • \n
  • Single post meta options
  • \n
  • Post navigation layout (Twenty Twenty theme)
  • \n
  • Hide comments section
  • \n
\n

Typography & Colors

\n
    \n
  • Google Fonts options (curated collection and custom Google Fonts)
  • \n
  • Google Fonts pairings and Google Fonts presets
  • \n
  • Font settings
  • \n
  • Color options
  • \n
\n

Pages

\n
    \n
  • Custom page templates: remove the page title, header, and footer, or set a transparent header
  • \n
  • Featured image and page title layouts
  • \n
\n

Custom 404 Page

\n
    \n
  • Option to assign any page as the 404 page
  • \n
\n

Additional Settings

\n
    \n
  • Minimal style for links (Twenty Twenty-One theme)
  • \n
  • Button style
  • \n
  • Separator style
  • \n
  • Social icons style (Twenty Twenty theme)
  • \n
\n

ADDITIONAL GUTENBERG BLOCK SETTINGS

\n
    \n
  • Gutenberg core blocks: top margin and bottom margin
  • \n
  • Group: shadow, border, shape divider, full height
  • \n
  • Columns: gutter, responsive layout, columns style (card, border), text alignment, stretched link
  • \n
  • Media & Text: styles (shadow, overlap), responsive layout, reverse stack order, stretched link, full height
  • \n
  • Cover: styles (shadow, inner border), stretched link, hover effect
  • \n
  • Heading: typography options, decoration
  • \n
  • Paragraph: wide width, typography options
  • \n
  • List: styles (dash, checkmark, arrow, border, no bullet, inline), typography options, spacing
  • \n
  • Image: styles (rounded, shadow, frame, border), image filter
  • \n
  • Gallery: stack variation, styles (rounded, frame), fixed width columns, image aspect ratio, gutter, responsive layout, caption size, border, image filter
  • \n
  • YouTube, Vimeo, SoundCloud, and Video blocks: style (frame)
  • \n
  • Latest Posts: styles (card, border), image aspect ratio, heading size, stretched link, text alignment
  • \n
  • Social Icons: hover effect
  • \n
  • Quote: additional styles
  • \n
  • Pullquote: additional styles
  • \n
  • Table: styles (border, inner border), vertical alignment
  • \n
  • Separator: style (short line), responsive visibility
  • \n
  • Spacer: responsive visibility
  • \n
\n

GUTENBERG TEMPLATE LIBRARY

\n

Hundreds of Gutenberg block patterns grouped by following categories:

\n
    \n
  • Columns
  • \n
  • Text Columns
  • \n
  • Text and Image
  • \n
  • Text
  • \n
  • Hero
  • \n
  • Cover
  • \n
  • Call to Action
  • \n
  • List
  • \n
  • Numbers, Stats
  • \n
  • Gallery
  • \n
  • Video, Audio
  • \n
  • Latest Posts
  • \n
  • Contact
  • \n
  • Team
  • \n
  • Testimonials
  • \n
  • Logos, Clients
  • \n
  • Pricing
  • \n
  • FAQ
  • \n
  • Events, Schedule
  • \n
\n

Dozens of pre-designed page templates grouped by following categories:

\n
    \n
  • Homepage
  • \n
  • About
  • \n
  • Services
  • \n
  • Contact
  • \n
  • Single Page
  • \n
\n

Get more

\n\n

Enjoying Twentig?

\n\n","download_link":"https://downloads.wordpress.org/plugin/twentig.1.3.6.zip","tags":{"gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","templates":"templates","theme":"theme","twenty-twenty-one":"twenty-twenty-one"},"donate_link":"https://www.paypal.com/donate?hosted_button_id=JTBTPQAFEA94E","icons":{"1x":"https://ps.w.org/twentig/assets/icon.svg?rev=2569439","2x":"https://ps.w.org/twentig/assets/icon-256x256.png?rev=2569439","svg":"https://ps.w.org/twentig/assets/icon.svg?rev=2569439"},"wporg":true},{"name":"Custom Post Type UI","slug":"custom-post-type-ui","version":"1.10.0","author":"WebDevStudios","author_profile":"https://profiles.wordpress.org/williamsba1","requires":"5.5","tested":"5.8.1","requires_php":"5.6","rating":94,"ratings":{"1":12,"2":3,"3":6,"4":9,"5":203},"num_ratings":233,"support_threads":50,"support_threads_resolved":14,"active_installs":1000000,"downloaded":8854648,"last_updated":"2021-10-05 1:54am GMT","added":"2010-02-26","homepage":"https://github.com/WebDevStudios/custom-post-type-ui/","short_description":"Admin UI for creating custom post types and custom taxonomies for WordPress","description":"

Custom Post Type UI provides an easy to use interface for registering and managing custom post types and taxonomies for your website.

\n

While CPTUI helps solve the problem of creating custom post types, displaying the data gleaned from them can be a whole new challenge. That’s why we created Custom Post Type UI Extended. View our Layouts page to see some examples that are available with Custom Post Type UI Extended.

\n

Official development of Custom Post Type UI is on GitHub, with official stable releases published on WordPress.org. The GitHub repo can be found at https://github.com/WebDevStudios/custom-post-type-ui. Please use the Support tab for potential bugs, issues, or enhancement ideas.

\n

Pluginize was launched in 2016 by WebDevStudios to promote, support, and house all of their WordPress products. Pluginize is not only creating new products for WordPress all the time, like CPTUI Extended, but also provides ongoing support and development for WordPress community favorites like CMB2 and more.

\n","download_link":"https://downloads.wordpress.org/plugin/custom-post-type-ui.1.10.0.zip","tags":{"cms":"cms","cpt":"cpt","custom-post-types":"custom post types","post":"post","types":"types"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=3084056","icons":{"1x":"https://ps.w.org/custom-post-type-ui/assets/icon-128x128.png?rev=2549362","2x":"https://ps.w.org/custom-post-type-ui/assets/icon-256x256.png?rev=2549362"},"wporg":true},{"name":"Flex Posts – Widget and Gutenberg Block","slug":"flex-posts","version":"1.8.1","author":"Tajam","author_profile":"https://profiles.wordpress.org/tajam","requires":"5.2","tested":"5.8.1","requires_php":false,"rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":17},"num_ratings":17,"support_threads":8,"support_threads_resolved":4,"active_installs":3000,"downloaded":25248,"last_updated":"2021-07-29 10:41am GMT","added":"2018-05-10","homepage":"https://tajam.id/flex-posts/","short_description":"A widget to display posts with thumbnails in various layouts. Fits nicely in any widget…","description":"

Flex Posts is a widget to display posts in various different layouts. It is useful for a news site where you need to display a lot of posts in a page.

\n

The widget is responsive so you can place it in any widget area. The widget content will adapt based on the width of its container. In a narrow area like standard sidebar, posts will be displayed vertically, but in a wider area, posts will be displayed in 2 or 3 columns depends on the container’s width.

\n

Widget Settings

\n
    \n
  • Title: Set the widget title. Leave it empty to hide the title section.
  • \n
  • Title URL: Set the title link url. Leave it empty to disable link in the title.
  • \n
  • Layout: Select a widget layout, from layout 1 to 4.
  • \n
  • Post type: Select the post type. Options include: Post, Page, custom post types if available, and any.
  • \n
  • Category: Select a category for the posts, or choose All Categories to disable this filter.
  • \n
  • Tag(s): Set a post tag (using the tag slug). You can also use comma separated value for multiple tags. Prepending a tag with a hyphen will exclude posts matching that tag. Eg, featured, -video will show posts tagged with featured but not video.
  • \n
  • Order by: Set the order in which the posts will be displayed. Options include: Newest, Oldest, Most Commented, Alphabetical, Random, Modified Date.
  • \n
  • Number of posts to show: Set the number of posts displayed.
  • \n
  • Number of posts to skip: Set the number of posts to displace or pass over.
  • \n
  • Show image on: Select in which posts the image will be displayed. Options include: All posts, First post only, or none.
  • \n
  • Image size: Select image size from registered image sizes.
  • \n
  • Show post title: Choose to show or hide the post title.
  • \n
  • Show categories: Choose to show or hide the categories.
  • \n
  • Show author: Choose to show or hide the author.
  • \n
  • Show date: Choose to show or hide the date.
  • \n
  • Show comments number: Choose to show or hide the comments number.
  • \n
  • Show excerpt: Choose to show or hide the excerpt
  • \n
  • Excerpt length: Set the number of words for the excerpt.
  • \n
  • Show read more link: Choose to show or hide the Read More link.
  • \n
  • Read more text: Set the text for the read more link. You can leave it empty to use the default text Read More.
  • \n
  • Show pagination: Choose to show or hide the pagination links.
  • \n
  • Additional class(es): Set a custom class for the widget container. You can use spaces to separate multiple classes.
  • \n
\n

Gutenberg Block

\n

Since version 1.1.0, Flex Posts also includes a gutenberg block. You can add the widget directly into the post/page content with the WP 5.0 block editor.

\n

Demo

\n

Please visit the live demo here: Flex Posts Demo

\n

Requirements

\n

This plugin has been tested and works with at least PHP 5.3 installed in your environment. But we strongly recommend you to use the latest PHP version, as using older versions may expose you to security vulnerabilities.

\n","download_link":"https://downloads.wordpress.org/plugin/flex-posts.zip","tags":{"category-posts":"category posts","grid":"grid","magazine":"magazine","news":"news","responsive":"responsive"},"donate_link":"https://tajam.id/","icons":{"1x":"https://ps.w.org/flex-posts/assets/icon-128x128.png?rev=1871802"},"wporg":true},{"name":"YARPP – Yet Another Related Posts Plugin","slug":"yet-another-related-posts-plugin","version":"5.27.5","author":"YARPP","author_profile":"https://profiles.wordpress.org/jeffparker","requires":"3.7","tested":"5.8.1","requires_php":"5.3","rating":94,"ratings":{"1":33,"2":2,"3":14,"4":45,"5":650},"num_ratings":744,"support_threads":22,"support_threads_resolved":9,"active_installs":100000,"downloaded":6553380,"last_updated":"2021-09-15 5:54pm GMT","added":"2008-01-02","homepage":"https://yarpp.com/","short_description":"The best WordPress plugin for displaying related posts. Simple and flexible, with a powerful proven algorithm and inbuilt caching.","description":"

Related Posts Plugin for WordPress

\n

Yet Another Related Posts Plugin (YARPP) is a professionally maintained, highly customizable, performant and feature rich plugin that displays pages, posts, and custom post types related to the current entry. YARPP introduces your visitors to other relevant content on your site — boosting visitor engagement, time on site and SEO. Related Posts can increase your pageviews up to 10%. Simply install, activate and watch your sessions and pageviews increase.

\n

Key Features

\n
    \n
  • An advanced and versatile algorithm: Using a customizable algorithm considering post titles, content, tags, categories, and custom taxonomies, YARPP finds related content from across your site
  • \n
  • Caching: Inbuilt cache makes subsequent queries super efficient and fast
  • \n
  • Custom Templates and Styles: Use a pre-built list or thumbnail template, or use the YARPP custom templating system for 100% control of how results are styles and displayed
  • \n
  • Flexible with a full range of placement options, including:\n\n
  • \n
  • Works with all languages, including those with full-width (double-byte) characters and those that don’t use spaces between words
  • \n
  • Custom post type and taxonomy support
  • \n
  • WordPress Multisite support
  • \n
  • bbPress forums support
  • \n
  • WooCommerce support
  • \n
  • Professionally maintained and supported with regular updates
  • \n
\n

YARPP Algorithm Explained

\n

\n

Contribute: Translate YARPP

\n

YARPP is available for translation directly on WordPress.org. Please check out the official Translator Handbook.

\n

Wide Support

\n

YARPP is the most popular and the highest rated Related Posts Plugin for WordPress. With your support, this plugin always strives to be the best WordPress plugin for Content Discovery and Related Posts.

\n

✔ Over 10 years of development
\n✔ Over 6 million downloads
\n✔ Translated into more than a dozen languages
\n✔ Professionally maintained and actively supported with regular updates
\n✔ Works with all languages

\n

YARPP works best with PHP 5.3 or greater, MySQL 5.6 or greater OR MariaDB 10.1 or greater, and WordPress 3.7 or greater. See the FAQ for answers to common questions.

\n","download_link":"https://downloads.wordpress.org/plugin/yet-another-related-posts-plugin.5.27.5.zip","tags":{"contextual-related-posts":"contextual related posts","posts":"posts","related-posts":"related posts","seo":"seo","similar-posts":"similar posts"},"donate_link":"https://yarpp.com","icons":{"1x":"https://ps.w.org/yet-another-related-posts-plugin/assets/icon-128x128.png?rev=2549977","2x":"https://ps.w.org/yet-another-related-posts-plugin/assets/icon-256x256.png?rev=2549977"},"wporg":true},{"name":"Superb WordPress Table (SEO Optimized Tables With Schema)","slug":"superb-tables","version":"1.0.9","author":"SuPlugins","author_profile":"https://profiles.wordpress.org/suplugins","requires":"3.0.1","tested":"5.8.1","requires_php":"5.2.4","rating":86,"ratings":{"1":0,"2":1,"3":0,"4":0,"5":3},"num_ratings":4,"support_threads":1,"support_threads_resolved":1,"active_installs":4000,"downloaded":36550,"last_updated":"2021-10-01 9:37am GMT","added":"2019-03-05","homepage":"https://superbthemes.com/plugins/superb-tables/","short_description":"Responsive & SEO Optimized tables. Get your Google Featured Snippets. Different table designs, table shortcodes…","description":"

Responsive & SEO Optimized tables. Get your Google Featured Snippets. Different table designs, table shortcodes & lightweight code.

\n

Click here to view the demo!

\n

Features

\n
    \n
  • Table Shortcodes
  • \n
  • Multiple Color Schemes
  • \n
  • Use Themes Own Table Design
  • \n
  • Schema Markup (Micro Data)
  • \n
  • Create Unlimited Tables
  • \n
  • Create Unlimited Rows
  • \n
  • Create unlimited Columns
  • \n
  • SEO-friendly Tables With Schema markup
  • \n
  • Purple Color Scheme
  • \n
  • Black/White Color Scheme
  • \n
  • Swap around on columns & rows with drag n’ drop
  • \n
  • Delete Tables & Remove Them From Your Database
  • \n
  • Gives you a better chance to get Google Featured Snippets
  • \n
  • Friendly User Support)
  • \n
  • GDPR Compliant
  • \n
  • W3C Valid Code
  • \n
  • WYSIWYG Functionality Editor
  • \n
\n

Configuring the plugin

\n

Once you’ve installed the plugin, check the left sidebar, and you will notice the Superb Table section. Click on it, and you can now create your first table. Just click on the Add New Table button.

\n

Feel free to add as many columns and rows as you want—inserting rows and columns is extremely easy.

\n

You have a few options to make your table stand apart. First, choose one of the three color schemes: standard, purple, or black. Second, choose your table design: default or custom. Block, left, and inline-block are the floating modes for your table. Finally, enable or disable the full width of the table.

\n

Once you finish your table, name it and save it. All you have to do now is to copy the shortcode and paste wherever you want, you can for example embed it in the Gutenberg Shortcode Block! (It works in the classic WordPress editor too)

\n

Consider purchasing our premium version for $11 to unlock more features!

\n

Why use a HTML table

\n

Displaying data within a comparison table is beneficial for not only readers but also content creators. A table does a better job than long paragraphs of text, underlined phrases, and bulleted lists. It shows a lot of information side by side in a concise format. Bloggers and content creators should create tables and insert the data. There’s no need to search for breathtaking expressions, cool descriptions, or digestible lists of items. It’s just pure data, and everyone is happy with this situation. You can read our full guide on How to Add a Table to Your WordPress Website with Superb Tables.

\n

Responsive Tables

\n

We developed Superb Tables mobile friendly by taking responsiveness into account, and as a result, you can make a WordPress table responsive by using our plugin. The tables are fully responsive regardless of the number of rows and columns. The plugin works on all mobile devices and tablets (iPhone, Android etc.). The plugin works with AMP.

\n

SEO Friendly WordPress Tables With Schema Markup

\n

“Schema markup“ and “featured snippets“ are two interconnected terms that are being used by more and more bloggers, SEO practitioners, and developers. Have you noticed that Google now provides complex answers in the form of lists, tables, paragraphs, or videos directly on the results page? Those are featured snippets.

\n

Moz claims that 23% of all search results include a featured snippet—a descriptive box displayed on the search results page providing information for your query. It may include paragraphs, lists, videos, or tables. You have to consider featured snippets when choosing a table plugin—can it help Google generate a featured snippet from the data within your table?

\n

We developed Superb Tables with featured snippets in mind, and you can use the plugin worry-free. We used schema markup, which is the code that helps search engine bots generate snippets from your content, including tables. It’s a great way for affiliate websites and blogs to promote their content.

\n

You must use WordPress tables with schema markup to get featured snippets on search engines, and Superb Tables is a reliable solution in this respect.

\n

Add Tables everywhere & use them for Any Purpose

\n

You can insert the SEO optimised tables with microdata everywhere through the shortcode. For example in a popup, widgets, Gutenberg blocks, email newsletter sent from your WordPress website. You can also insert it on any post or page, even category pages, blog feed, search page and your 404 page! The plugin is made for affiliates marketers and affiliate websites, having a good SERP rank in Google and Bing is critical. When you’re looking to improve your ranking then all of your plugins must be SEO optimized, otherwise it’s gonna be hard to create monetization through ads programs such as AdSense and Amazon Associates Program.

\n

We know that business is important for any modern blog or affiliate marketing website that’s looking to make a revenue from it. Remember to use HTTPS (SSL) on your website, a CDN and lightweight stats tracking tools such as Google Analytics to better your SEO as well.

\n

Guide to creating your Superb Tables

\n
    \n
  1. In the wordpress admin panel, go to the sidebar and click ‘Superb Tables’.
  2. \n
  3. Click the green ‘Add new table’ in the top left corner
  4. \n
  5. Fill in your table data, click ‘Save’
  6. \n
  7. Click ‘Superb Tables’ in the left sidebar and copy paste the ‘Table Shortcode’
  8. \n
  9. Insert the Table Shortcode (For example [spbtbl_sc id=1] ) in a post, page, widget or in HTML.
  10. \n
\n

You’re done!

\n

Resources & Inspiration

\n
    \n
  • Auto-Expand: https://codepen.io/vsync/pen/frudD
  • \n
  • Data Table: https://codepen.io/alassetter/pen/cyrfB
  • \n
  • Table DnD: https://github.com/isocra/TableDnD/
  • \n
  • Table icon: https://www.iconfinder.com/icons/1608863/table_icon#size=256
  • \n
  • Custom confirm: https://codepen.io/Ana_Champion/pen/JRbZEL
  • \n
  • Table design inspiration: https://codepen.io/lukepeters/pen/bfFur
  • \n
  • Table design inspiration: https://codepen.io/alassetter/pen/cyrfB
  • \n
  • Table design inspiration: https://uicookies.com/wp-content/uploads/2018/05/table-responsive-v2-1000×750.jpg
  • \n
  • Table design inspiration: https://uicookies.com/wp-content/uploads/2018/05/table-responsive-v1.jpg
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/superb-tables.1.0.9.zip","tags":{"content-tables":"content tables","responsive-tables":"responsive tables","table":"table","tables":"tables"},"donate_link":"","icons":{"1x":"https://ps.w.org/superb-tables/assets/icon-256x256.png?rev=2044672","2x":"https://ps.w.org/superb-tables/assets/icon-256x256.png?rev=2044672"},"wporg":true},{"name":"Floating Button","slug":"floating-button","version":"5.0.1","author":"Wow-Company","author_profile":"https://profiles.wordpress.org/wpcalc","requires":"3.2","tested":"5.8.1","requires_php":"5.3","rating":80,"ratings":{"1":1,"2":1,"3":0,"4":0,"5":5},"num_ratings":7,"support_threads":1,"support_threads_resolved":0,"active_installs":2000,"downloaded":34610,"last_updated":"2021-09-24 7:38am GMT","added":"2018-09-08","homepage":"https://wordpress.org/plugins/floating-button/","short_description":"Easily create a custom sticky floating buttons. The Floating Button will be the effective solution for increasing the recognition of your web resource","description":"

The Floating Button is the free WordPress plugin for creating the original sticky floating actions buttons. It allows you to install on the site floating buttons with unique thematic icons. The extension serves for placing both traditional navigation bar and additional block with useful information for user.

\n

The Floating Button plugin will be the effective solution for increasing the recognition of your web resource. Its connection will bring originality and novelty to the used theme of the site. The extension helps to configure user-friendly navigation, place useful information or contact panel.

\n

Main features

\n
    \n
  • 2 submenu;
  • \n
  • more than 1500+ FontAwesome icons;
  • \n
  • any links insertion;
  • \n
  • using the tooltips to provide more information;
  • \n
  • round buttons shape;
  • \n
  • LogIn link;
  • \n
  • LogOut link;
  • \n
  • Lost password link
  • \n
\n

Floating Button can be used for:

\n
    \n
  • site navigation;
  • \n
  • additional menu;
  • \n
  • social panel;
  • \n
  • user menu;
  • \n
  • Skype menu and others;
  • \n
  • And more…
  • \n
\n

Pro version

\n

Connect the Pro-version of the plugin to gain access to more features:

\n

Preview of Pro version

\n
    \n
  • create an unlimited amount of buttons;
  • \n
  • use up to 4 floating button positions;
  • \n
  • change the form of the menu display: Circle, Rounded square, Ellipse, Square;
  • \n
  • set the color of the main button and submenu items;
  • \n
  • accompany the change in navigation behavior with the highlight when hovering the mouse cursor;
  • \n
  • use the built-in user menu, social panel and print function;
  • \n
  • set the display according to the user role and status;
  • \n
  • change the menu output depending on the language of the page;
  • \n
  • add restrictions for screens with large or small resolution;
  • \n
  • use the categories on the site, exceptions and ID to place the menu on individual pages;
  • \n
  • insert the shortcode of the panel in the specified location;
  • \n
  • And more…
  • \n
\n

Buy Pro version

\n

Use with other plugins to maximize your results

\n\n

Support

\n

Search for answers and ask your questions at support center

\n","download_link":"https://downloads.wordpress.org/plugin/floating-button.5.0.1.zip","tags":{"circle-menu":"circle menu","float-menu":"float menu","floating-button":"floating button","floating-menu":"floating menu","sticky-button":"sticky button"},"donate_link":"https://wow-estore.com/item/floating-button-pro/","icons":{"1x":"https://ps.w.org/floating-button/assets/icon-128x128.png?rev=2533016","2x":"https://ps.w.org/floating-button/assets/icon-256x256.png?rev=2533016"},"wporg":true},{"name":"Breadcrumb NavXT","slug":"breadcrumb-navxt","version":"6.6.0","author":"John Havlik","author_profile":"https://profiles.wordpress.org/mtekk","requires":"4.9","tested":"5.7.3","requires_php":"5.5","rating":94,"ratings":{"1":5,"2":2,"3":4,"4":7,"5":104},"num_ratings":122,"support_threads":7,"support_threads_resolved":2,"active_installs":900000,"downloaded":10169653,"last_updated":"2021-04-01 2:13am GMT","added":"2007-12-01","homepage":"http://mtekk.us/code/breadcrumb-navxt/","short_description":"Breadcrumb NavXT, the successor to the popular WordPress plugin Breadcrumb Navigation XT, was written from the ground up to be better than its ancesto …","description":"

Breadcrumb NavXT, the successor to the popular WordPress plugin Breadcrumb Navigation XT, was written from the ground up to be better than its ancestor. This plugin generates locational breadcrumb trails for your WordPress powered blog or website. These breadcrumb trails are highly customizable to suit the needs of just about any website running WordPress. The Administrative interface makes setting options easy, while a direct class access is available for theme developers and more adventurous users.

\n

PHP Requirements

\n

Breadcrumb NavXT 5.2 and newer require PHP5.3
\nBreadcrumb NavXT 5.1.1 and older require PHP5.2

\n

Features (non-exhaustive)

\n
    \n
  • RDFa format Schema.org BreadcrumbList compatible breadcrumb generation.
  • \n
  • Extensive breadcrumb customization control via a settings page with appropriate default values for most use cases.
  • \n
  • Network admin settings page for managing breadcrumb settings for all subsites with configurable global priority.
  • \n
  • Built in WordPress Widget.
  • \n
  • Extensible via OOP and provided actions and filters.
  • \n
  • WPML compatible (enhanced compatibility with WPML extensions plugin).
  • \n
  • Polylang compatible (enhanced compatibility with Polylang extensions plugin).
  • \n
  • bbPress compatible (enhanced compatibility with bbPress extensions plugin).
  • \n
  • BuddyPress compatible (enhanced compatibility with BuddyPress extensions plugin).
  • \n
\n

Translations

\n

Breadcrumb NavXT now supports WordPress.org language packs. Want to translate Breadcrumb NavXT? Visit Breadcrumb NavXT’s WordPress.org translation project.

\n","download_link":"https://downloads.wordpress.org/plugin/breadcrumb-navxt.6.6.0.zip","tags":{"breadcrumb":"breadcrumb","breadcrumbs":"breadcrumbs","menu":"menu","navigation":"navigation","trail":"trail"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=FD5XEU783BR8U&lc=US&item_name=Breadcrumb%20NavXT%20Donation¤cy_code=USD&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted","icons":{"1x":"https://ps.w.org/breadcrumb-navxt/assets/icon.svg?rev=1927103","2x":"https://ps.w.org/breadcrumb-navxt/assets/icon-256x256.png?rev=2410525","svg":"https://ps.w.org/breadcrumb-navxt/assets/icon.svg?rev=1927103"},"wporg":true},{"name":"WP Recipe Maker","slug":"wp-recipe-maker","version":"7.6.1","author":"Bootstrapped Ventures","author_profile":"https://profiles.wordpress.org/brechtvds","requires":"4.4","tested":"5.8.1","requires_php":"5.4","rating":100,"ratings":{"1":1,"2":0,"3":1,"4":4,"5":209},"num_ratings":215,"support_threads":21,"support_threads_resolved":14,"active_installs":50000,"downloaded":1585332,"last_updated":"2021-09-16 11:33am GMT","added":"2016-09-07","homepage":"http://bootstrapped.ventures/wp-recipe-maker/","short_description":"The easy and user-friendly recipe plugin for everyone. Automatic JSON-LD metadata for food AND how-to…","description":"

WP Recipe Maker is the easy recipe plugin that everyone can use. An easy workflow allows you to add recipes to any post or page with automatic JSON-LD metadata for your recipes. This metadata will improve your SEO and get you more visitors!

\n

\n

Would you like to see the plugin in action before installing it? We have a WP Recipe Maker demo website showcasing all of the features!

\n
\n

Get the most out of this plugin!
\n Join the WP Recipe Maker Email Course and we’ll help you get started and learn all the tips and trick for using WPRM.

\n
\n

Features

\n

An overview of WP Recipe Maker features:

\n
    \n
  • Compatible with both the Classic Editor and new Gutenberg editor
  • \n
  • Includes an Elementor block and shortcode can be used in other page builders
  • \n
  • Easy workflow to add recipes to any post or page
  • \n
  • Uses schema.org/Recipe JSON-LD metadata optimised for Google Recipe search
  • \n
  • Uses schema.org/How-to JSON-LD metadata optimised for non-food recipes and instructions
  • \n
  • Supports both regular and Guided Recipes for Google metadata
  • \n
  • Google AMP compatible
  • \n
  • Integrates recipe metadata with Yoast SEO schema graph
  • \n
  • Option to disable metadata per recipe if you want to publish non-food or DIY recipes
  • \n
  • Compatible with Pinterest Rich Pins and a setting to easily opt out
  • \n
  • Outputs ItemList metadata for Recipe Roundup posts
  • \n
  • Associate ingredients with instructions to have them show up exactly where needed
  • \n
  • Keyboard accessible and AMP compatible ratings for comments
  • \n
  • Interactive print recipe page with room for ads and optional credit to your website
  • \n
  • Fallback recipe shows up when the plugin is disabled
  • \n
  • Include a recipe video in the template and metadata
  • \n
  • Add photos or videos to any step of the recipe
  • \n
  • Print recipe and jump to recipe shortcodes
  • \n
  • This plugin is fully responsive, your recipes will look good on any device
  • \n
  • Easily change the look and feel to fit your website in the Template Editor
  • \n
  • Structure your ingredients and instructions in groups (e.g. icing and cake batter)
  • \n
  • Full text search for your recipes
  • \n
  • Access your recipes through the WordPress REST API
  • \n
  • Built-in SEO check for your recipe metadata
  • \n
  • Compatible with RTL languages
  • \n
  • Import your recipes from other plugins (see below)
  • \n
\n

WP Recipe Maker Premium

\n

Looking for some more advanced functionality? We also have the WP Recipe Maker Premium add-on available with the following features:

\n
    \n
  • Use ingredient links for linking to products or other recipes
  • \n
  • Adjustable servings make it easy for your visitors
  • \n
  • Display all nutrition data in a nutrition label
  • \n
  • User Ratings allow visitors to vote without commenting
  • \n
  • Add a mobile-friendly kitchen timer to your recipes
  • \n
  • More Premium templates for a unique recipe template
  • \n
  • Create custom recipe taxonomies like price level, difficulty, …
  • \n
  • Use checkboxes for your ingredients and instructions
  • \n
\n

Even more add-ons can add the following functionality:

\n
    \n
  • Integration with a Nutrition API for automatic nutrition facts
  • \n
  • Unit Conversion to reach an international audience with a different unit system
  • \n
  • Have your users send in recipes through the Recipe Submission form
  • \n
  • Give your visitors the power of Recipe Collections for favourites, meal planning and more
  • \n
\n

Import Options

\n

Currently using another recipe plugin? No problem! You can easily migrate all your existing recipes to WP Recipe Maker if you’re using any of the following plugins:

\n
    \n
  • Tasty Recipes
  • \n
  • Create by Mediavine
  • \n
  • EasyRecipe
  • \n
  • WP Ultimate Recipe
  • \n
  • Recipe Card Blocks by WPZOOM
  • \n
  • Meal Planner Pro
  • \n
  • BigOven
  • \n
  • ZipList and Zip Recipes
  • \n
  • Yummly
  • \n
  • Yumprint Recipe Card
  • \n
  • FoodiePress
  • \n
  • Cooked
  • \n
  • Cookbook
  • \n
  • Simple Recipe Pro
  • \n
  • Purr Recipe Plugin
  • \n
  • Recipes by Simmer
  • \n
  • WordPress.com shortcode
  • \n
  • JSON-LD HTML Script
  • \n
  • Multi Rating (ratings only)
  • \n
  • (Need anything else? Just ask!)
  • \n
\n

This plugin is in active development. Feel free to contact us with any feature requests or ideas.

\n","download_link":"https://downloads.wordpress.org/plugin/wp-recipe-maker.zip","tags":{"cooking":"cooking","food":"food","ingredients":"ingredients","recipe":"Recipe","recipes":"recipes"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QG7KZMGFU325Y","icons":{"1x":"https://ps.w.org/wp-recipe-maker/assets/icon-128x128.png?rev=1491788","2x":"https://ps.w.org/wp-recipe-maker/assets/icon-256x256.png?rev=1491788"},"wporg":true},{"name":"Slim SEO – Fast & Automated WordPress SEO Plugin","slug":"slim-seo","version":"3.10.2","author":"eLightUp","author_profile":"https://profiles.wordpress.org/rilwis","requires":"4.5","tested":"5.8.1","requires_php":"5.6","rating":92,"ratings":{"1":1,"2":3,"3":0,"4":0,"5":27},"num_ratings":31,"support_threads":9,"support_threads_resolved":6,"active_installs":10000,"downloaded":178149,"last_updated":"2021-09-27 6:47am GMT","added":"2018-12-31","homepage":"https://wpslimseo.com","short_description":"A full-featured SEO plugin for WordPress that's lightweight, blazing fast with minimum configuration. No bloats,…","description":"

A Fast & Automated SEO Plugin For WordPress

\n

Currently there are many SEO plugins for WordPress in the market. But these plugins often have too many options and are very complicated for ordinary users. Access to their configuration section, you will easily get lost in a maze of explanations and options that you sometimes don’t understand. Besides, there are ads!

\n

So how can an ordinary user use an SEO plugin?

\n

SEO should be an integrated part of WordPress, where users don’t need or need very little effort to configure for SEO. The main reason is that not everyone understands the terms of SEO and how to configure them optimally.

\n

So, we made Slim SEO.

\n

Slim SEO is a full-featured SEO plugin, that’s done right! It provides a complete SEO solution for WordPress where the configuration has been done automatically. Users do not need to care about their complex and semantic options.

\n

So what does Slim SEO do?

\n

Slim SEO Features

\n

Slim SEO helps you do the following jobs automatically:

\n

1. Meta Tags

\n

The following meta tags are auto-generated and optimized for the best SEO scores.

\n\n

2. XML Sitemap

\n

Slim SEO automatically generates XML sitemap (at domain.com/sitemap.xml) to submit to search engines. With XML sitemaps, your website are indexed fast and completely.

\n

3. Breadcrumbs

\n

The plugin allows you to output a breadcrumb trail on your website easily. It automatically fetches the information from the current post and output a hierarchy for you. You can also style the breadcrumbs to match your theme style.

\n

4. Schema (Structured Data)

\n

Schema is a way that describes structured data for search engines. Based on the data provided, search engines can show the content in the search results page in a more appealing way.

\n

Slim SEO automatically adds the some structured data to the website via JSON-LD which makes your website more SEO-friendly. Not only schemas are created by the plugin, there are also meaningful connections between them. For example, an article (single post) is the main entity of the current webpage. Slim SEO does that all without any configuration.

\n

5. Auto Redirection

\n
    \n
  • Auto redirect attachment page to the attachment file URL.
  • \n
  • Auto redirect author page to the homepage if the website has only one author or the author doesn’t have any posts.
  • \n
\n

6. Open Source

\n

Slim SEO has different contributors which help make Slim SEO a quality product. Join us on Github!

\n

Who should use Slim SEO?

\n

Everyone can use Slim SEO!

\n

However, Slim SEO is perfectly suitable for users who prefer simplicity or do not like the complicated options that other SEO plugins provide. It’s also a good choice for users with little SEO knowledge and just want to use SEO plugins to automate their jobs.

\n

If you like this plugin, you might also like our other products: Meta Box and GretaThemes.

\n","download_link":"https://downloads.wordpress.org/plugin/slim-seo.3.10.2.zip","tags":{"google":"google","schema":"schema","search-engine-optimization":"search engine optimization","seo":"seo","sitemap":"sitemap"},"donate_link":"https://wpslimseo.com/pro/","icons":{"1x":"https://ps.w.org/slim-seo/assets/icon.svg?rev=2005049","svg":"https://ps.w.org/slim-seo/assets/icon.svg?rev=2005049"},"wporg":true},{"name":"Schema & Structured Data for WP & AMP","slug":"schema-and-structured-data-for-wp","version":"1.9.85","author":"Magazine3","author_profile":"https://profiles.wordpress.org/magazine3","requires":"3.0","tested":"5.8.1","requires_php":false,"rating":94,"ratings":{"1":13,"2":1,"3":2,"4":10,"5":183},"num_ratings":209,"support_threads":27,"support_threads_resolved":12,"active_installs":80000,"downloaded":2410857,"last_updated":"2021-09-24 10:57am GMT","added":"2018-08-06","homepage":"","short_description":"Schema & Structured Data for WP & AMP adds Google Rich Snippets markup according to…","description":"

Schema & Structured Data for WP & AMP adds Google Rich Snippets markup according to Schema.org guidelines to structure your site for SEO. (AMP Compatible)

\n

Features

\n
    \n
  • Schema Types: Currently, We have more than 35 schema types such as Blog Posting, News article, Local Business, Web page, Article, Recipe, Product, and Video Object view all. We are going to add all the schema types in the future. You can request the one you want and we will add it for you!
  • \n
  • Conditional Display Fields: Meaning you include or exclude any posts, pages, post types, taxonomies and more!
  • \n
  • Knowlegde Base Support: Recognize the content based on the organization or a person via data type option.
  • \n
  • Full AMP Compatiblity: Supports the AMP for WP and AMP by Automattic plugins.
  • \n
  • Advanced Settings: Play with output of schema markup using these options (Defragment, Add in Footer, Pretty Print, MicroData CleanUp etc.)
  • \n
  • Migration: Import the data from other schema plugins such as (SEO Pressor, WP SEO Schema, Schema Plugin etc )
  • \n
  • Compatibility: Generate the schema markup for the plugins. We have provided schema support for them. Few of them are – kk Star Ratings, WP-PostRatings, bbPress
  • \n
  • Google Review: Display your business google reviews and its schema markup on your website.
  • \n
  • [Premium] Reviews ( Fetch reviews from 75+ platforms ).
  • \n
  • [Premium] Priority Support. Get it We get more than 100 technical queries a day but the Priority support plan will help you skip that and get the help from a dedicated team.
  • \n
  • Review Module: Create your own review rating box with pros and cons and its schema markup
  • \n
  • Schema Type Blocks in Gutenberg: Create your own content with the blocks and json schema markup will be added automatically
  • \n
  • Unlimited Custom Post Types: You can control to represent the Rich Snippets data in the google search console using unlimited custom post types.
  • \n
  • Easy to use with Minimal Settings
  • \n
  • Archive Page Listing Support
  • \n
  • JSON-LD Format
  • \n
  • Easy to use Setup Wizard
  • \n
  • Breadcrumbs Listing Support
  • \n
  • Comments Post comments Support
  • \n
  • Constant Development & New Features: We’ll be releasing the constant updates along with the more handy features as soon as we get the feedback from the users.
  • \n
\n

Supported Schema Types

\n
    \n
  • Apartment
  • \n
  • House
  • \n
  • SingleFamilyResidence
  • \n
  • Article
  • \n
  • Blogposting
  • \n
  • Book
  • \n
  • Course
  • \n
  • DiscussionForumPosting,
  • \n
  • DataFeed
  • \n
  • HowTo
  • \n
  • NewsArticle
  • \n
  • QAPage
  • \n
  • Review
  • \n
  • Recipe
  • \n
  • TVSeries
  • \n
  • SoftwareApplication
  • \n
  • MobileApplication
  • \n
  • SpecialAnnouncement (Related to Coronavirus)
  • \n
  • TechArticle
  • \n
  • WebPage
  • \n
  • Event
  • \n
  • VideoGame
  • \n
  • JobPosting
  • \n
  • Service
  • \n
  • Trip
  • \n
  • AudioObject
  • \n
  • VideoObject
  • \n
  • MedicalCondition
  • \n
  • MusicPlaylist
  • \n
  • MusicAlbum
  • \n
  • LocalBusiness with all the sub categories
  • \n
  • Product
  • \n
  • TouristAttraction
  • \n
  • TouristDestination
  • \n
  • LandmarksOrHistoricalBuildings
  • \n
  • HinduTemple
  • \n
  • Church
  • \n
  • Mosque
  • \n
  • Person
  • \n
  • View All
  • \n
\n

Extensions

\n

Some useful extensions to extend Schema & Structured Data for WP & AMP features, check Woocommerce Compatibility For Schema, Cooked Compatibility For Schema and We are going to add more.

\n

Support

\n

We try our best to provide support on WordPress.org forums. However, We have a special team support where you can ask us questions and get help. Delivering a good user experience means a lot to us and so we try our best to reply each and every question that gets asked.

\n

Bug Reports

\n

Bug reports for Schema & Structured Data for WP & AMP are welcomed on GitHub. Please note GitHub is not a support forum, and issues that aren’t properly qualified as bugs will be closed.

\n

Credits

\n
    \n
  • Select2 used https://github.com/select2/select2 – License URI: https://github.com/select2/select2/blob/develop/LICENSE.md,
  • \n
  • Merlin WP used https://github.com/richtabor/MerlinWP – License URI: https://github.com/richtabor/MerlinWP/blob/master/LICENSE,
  • \n
  • jquery-timepicker used https://github.com/jonthornton/jquery-timepicker
  • \n
  • Rate Yo! used https://github.com/prrashi/rateYo – License URI: https://github.com/prrashi/rateYo/commit/f3812fe96c38b08627d209795176053550fb1427
  • \n
  • Aqua Resizer used http://aquagraphite.com – License URI: WTFPL – http://sam.zoy.org/wtfpl/
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/schema-and-structured-data-for-wp.1.9.85.zip","tags":{"google-snippets":"google snippets","rich-snippets":"rich snippets","schema":"schema","schema-org":"schema.org","structured-data":"structured data"},"donate_link":"","icons":{"1x":"https://ps.w.org/schema-and-structured-data-for-wp/assets/icon-128x128.png?rev=1922284","2x":"https://ps.w.org/schema-and-structured-data-for-wp/assets/icon-256x256.png?rev=1922284"},"wporg":true},{"name":"GenerateBlocks","slug":"generateblocks","version":"1.3.5","author":"Tom Usborne","author_profile":"https://profiles.wordpress.org/edge22","requires":"5.4","tested":"5.8.1","requires_php":"5.6","rating":98,"ratings":{"1":0,"2":0,"3":2,"4":1,"5":72},"num_ratings":75,"support_threads":22,"support_threads_resolved":7,"active_installs":50000,"downloaded":250239,"last_updated":"2021-07-19 6:12pm GMT","added":"2020-05-19","homepage":"https://generateblocks.com","short_description":"A small collection of lightweight WordPress blocks that can accomplish nearly anything.","description":"

\n

\n

Add incredible versatility to your editor without bloating it with tons of one-dimensional Gutenberg blocks. With GenerateBlocks, you can learn a handful of blocks deeply and use them to build anything.

\n

GenerateBlocks works hand-in-hand with GeneratePress, but is built to work with any theme.

\n

Looking for more features? Check out GenerateBlocks Pro.

\n

Container

\n

Organize your content into rows and sections. The Container block is the foundation of your content, allowing you to design unique sections for your content.

\n

Grid

\n

Create advanced layouts with flexible grids. The Grid block gives you the ability to create any kind of layout you can imagine.

\n

Headline

\n

Craft text-rich content with advanced typography. Everything from headings to paragraphs – take full control of your text.

\n

Buttons

\n

Drive conversions with beautiful buttons.

\n

Performance

\n

We take performance seriously. Minimal CSS is generated only for the blocks you need, and our HTML structure is as simple as possible while allowing for maximum flexibility.

\n

Coding standards

\n

Built to the highest coding standards for security, stability and future compatibility.

\n

Fully responsive

\n

Every block comes with tablet and mobile controls, giving you total control of your responsive design.

\n

Documentation

\n

Check out our documentation for more information on the individual blocks and how to use them.

\n","download_link":"https://downloads.wordpress.org/plugin/generateblocks.1.3.5.zip","tags":{"blocks":"blocks","container":"container","grid":"grid","gutenberg":"gutenberg","headline":"headline"},"donate_link":"https://generateblocks.com","icons":{"1x":"https://ps.w.org/generateblocks/assets/icon-128x128.png?rev=2336822","2x":"https://ps.w.org/generateblocks/assets/icon-256x256.png?rev=2336822"},"wporg":true},{"name":"Blackhole for Bad Bots","slug":"blackhole-bad-bots","version":"3.2","author":"Jeff Starr","author_profile":"https://profiles.wordpress.org/specialk","requires":"4.1","tested":"5.8.1","requires_php":"5.6.20","rating":98,"ratings":{"1":2,"2":0,"3":3,"4":2,"5":108},"num_ratings":115,"support_threads":4,"support_threads_resolved":4,"active_installs":30000,"downloaded":309846,"last_updated":"2021-07-19 8:41pm GMT","added":"2016-02-18","homepage":"https://perishablepress.com/blackhole-bad-bots/","short_description":"Blackhole is a WordPress security plugin that detects and traps bad bots in a virtual black hole, where they are denied access to your entire site.","description":"
\n

Add your own virtual black hole trap for bad bots.

\n
\n

Bye bye bad bots..

\n

Bad bots are the worst. They do all sorts of nasty stuff and waste server resources. The Blackhole plugin helps to stop bad bots and save precious resources for legit visitors.

\n

How does it work?

\n

First the plugin adds a hidden trigger link to the footer of your pages. You then add a line to your robots.txt file that forbids all bots from following the hidden link. Bots that then ignore or disobey your robots rules will crawl the link and fall into the trap. Once trapped, bad bots are denied further access to your WordPress site.

\n

I call it the “one-strike” rule: bots have one chance to obey your site’s robots.txt rule. Failure to comply results in immediate banishment. The best part is that the Blackhole only affects bad bots: human users never see the hidden link, and good bots obey the robots rules in the first place. Win-win! 🙂

\n

Using a caching plugin? Check out the Installation notes for important info.

\n

Features

\n
    \n
  • Easy to set up
  • \n
  • Squeaky clean code
  • \n
  • Focused and modular
  • \n
  • Lightweight, fast and flexible
  • \n
  • Built with the WordPress API
  • \n
  • Works with other security plugins
  • \n
  • Easy to reset the list of bad bots
  • \n
  • Easy to delete any bot from the list
  • \n
  • Regularly updated and “future proof”
  • \n
  • Blackhole link includes “nofollow” attribute
  • \n
  • Plugin options configurable via settings screen
  • \n
  • Works silently behind the scenes to protect your site
  • \n
  • Whitelists all major search engines to never block
  • \n
  • Focused on flexibility, performance, and security
  • \n
  • Email alerts with WHOIS lookup for blocked bots
  • \n
  • Complete inline documentation via the Help tab
  • \n
  • Provides setting to whitelist any IP addresses
  • \n
  • Customize the message displayed to bad bots 😉
  • \n
  • One-click restore the plugin default options
  • \n
  • Does NOT use or require any .htaccess rules
  • \n
\n

Blackhole for Bad Bots protects your site against bad bots, spammers, scrapers, scanners, and other automated threats.

\n

Not using WordPress? Check out the standalone PHP version of Blackhole!

\n

Check out Blackhole Pro and level up with advanced features!

\n

Whitelist

\n

By default, this plugin does NOT block any of the major search engines (user agents):

\n
    \n
  • AOL.com
  • \n
  • Baidu
  • \n
  • Bingbot/MSN
  • \n
  • DuckDuckGo
  • \n
  • Googlebot
  • \n
  • Teoma
  • \n
  • Yahoo!
  • \n
  • Yandex
  • \n
\n

These search engines (and all of their myriad variations) are whitelisted via user agent. So are a bunch of other “useful” bots. They always are allowed full access to your site, even if they disobey your robots.txt rules. This list can be customized in the plugin settings. For a complete list of whitelisted bots, visit the Help tab in the plugin settings (under “Whitelist Settings”).

\n

Privacy

\n

User Data: This plugin automatically blocks bad bots. When bad bots fall into the trap, their IP address, user agent, and other request data are stored in the WP database. No other user data is collected by this plugin. At any time, the administrator may delete all saved data via the plugin settings.

\n

Services: This plugin does not connect to any third-party locations or services.

\n

Cookies: This plugin does not set any cookies.

\n

Header Image Courtesy NASA/JPL-Caltech.

\n

Support development of this plugin

\n

I develop and maintain this free plugin with love for the WordPress community. To show support, you can make a donation or purchase one of my books:

\n\n

And/or purchase one of my premium WordPress plugins:

\n\n

Links, tweets and likes also appreciated. Thanks! 🙂

\n","download_link":"https://downloads.wordpress.org/plugin/blackhole-bad-bots.3.2.zip","tags":{"anti-spam":"anti-spam","bad-bots":"bad bots","blackhole":"blackhole","honeypot":"honeypot","security":"security"},"donate_link":"https://monzillamedia.com/donate.html","icons":{"1x":"https://ps.w.org/blackhole-bad-bots/assets/icon-128x128.png?rev=1471215","2x":"https://ps.w.org/blackhole-bad-bots/assets/icon-256x256.png?rev=1471215"},"wporg":true},{"name":"Page View Count","slug":"page-views-count","version":"2.4.12","author":"a3rev Software","author_profile":"https://profiles.wordpress.org/a3rev","requires":"5.0","tested":"5.8.1","requires_php":false,"rating":78,"ratings":{"1":8,"2":5,"3":2,"4":3,"5":30},"num_ratings":48,"support_threads":3,"support_threads_resolved":0,"active_installs":20000,"downloaded":406620,"last_updated":"2021-07-19 10:48am GMT","added":"2012-12-21","homepage":"","short_description":"Places an icon, all time views count and views today count at the bottom of posts, pages and custom post types on any WordPress website.","description":"

A beautifully simple to set up plugin that gives site visitors and site owners the ability to quickly and easily see how many people have visited that page or post.

\n

FEATURES

\n
    \n
  • On the front end it adds an icon and page views count to the bottom or top of pages and posts on your WordPress website.
  • \n
  • Switch ON | OFF hide Page Views Count for all Posts, Pages and all custom posts types including WooCommerce custom post types.
  • \n
  • Set the Position of the counter to show at the top of the page or post or at the bottom
  • \n
  • Set alignment of the counter Left, Right or Centre
  • \n
  • Set the colour and size of the counter icon
  • \n
  • Option to use load by Ajax to prevent the count from being cached by caching plugins
  • \n
  • Option to Manually set / edit total views and views today from Page View Count meta box on any post or page editor
  • \n
  • Add Page Views counter via the PVC Gutenberg block
  • \n
  • Add Page Views counter via shortcode
  • \n
  • Add Page Views counter via widget
  • \n
  • Developers can add the Page Views Counter via php tag
  • \n
  • All options and settings are point click – absolutely no coding required
  • \n
\n

COMPATIBILTY

\n

Compatible with WordPress 5.3+ and backwards to WP 4.9.0. Compatible with Classic Editor plugin with 5.0+ (Gutenberg Deactivated)

\n

GUTENBERG BLOCK

\n

Using the Gutenberg Editor. Use the Page View Count Block to add the counter to any page or post content. Block search for ‘Page Views’ or selecting the block from the a3rev Blocks menu.

\n

Adding the Page Views block to your content automatically deactivates the Global Page View counter on the post or page.

\n

ELEMENTOR TEMPLATES

\n

Fully compatible with Elementor templates. Add counter via Shortcode or widget to any template.

\n

DEVELOPERS

\n

On the plugins dashboard in the + Page Views Count Function options box you will find the Page Views Count functions and notes on how to use them.

\n
    \n
  • Use to manually add Page views count to any content or object in the theme.
  • \n
  • Use to add page View Count to any content that is not create using WordPress custom post / taxonomy type.
  • \n
  • Use to create a custom position of the Page Views Count
  • \n
  • Functions support echo and return parameters when getting visitor stats on any variable.
  • \n
\n

TROUBLESHOOTING

\n
    \n
  • The number 1 support request we get about the plugin is that it double or triple counts page or post loads. Yes it does and if you see that it is a Red Flag that you have a misconfiguration or bug in your theme or a plugin. Page Views Count does exactly that – counts each time the page or post is loading in the browser – if its counting twice it is because the browser is double loading the page. That is a bad thing and you or your developer needs to fix that.
  • \n
\n

CONTRIBUTE

\n

When you download Page Views Count, you join our community. Regardless of if you are a WordPress beginner or experienced developer if you’?re interested in contributing to Page Views Count development head over to the Page Views Count GitHub Repository to find out how you can contribute.
\nWant to add a new language to Page Views Count? Great! You can contribute via translate.wordpress.org

\n

Usage

\n
    \n
  1. \n

    Install and activate the plugin

    \n
  2. \n
  3. \n

    Go to WordPress Settings menu > Page View Count Menu

    \n
  4. \n
  5. \n

    Activate Page Views Count and use the options box settings to make the desired configuration

    \n
  6. \n
  7. \n

    Be sure to clear any caching and browser cache to see your Page Views Count

    \n
  8. \n
\n","download_link":"https://downloads.wordpress.org/plugin/page-views-count.2.4.12.zip","tags":{"gutenberg":"gutenberg","page-view-count":"page view count","post-view-count":"post view count","post-views":"post views","wordpress-page-view":"wordpress page view"},"donate_link":"","icons":{"1x":"https://ps.w.org/page-views-count/assets/icon.svg?rev=986301","2x":"https://ps.w.org/page-views-count/assets/icon-256x256.png?rev=986301","svg":"https://ps.w.org/page-views-count/assets/icon.svg?rev=986301"},"wporg":true},{"name":"Newspack Listings","slug":"newspack-listings","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://github.com/Automattic/newspack-listings/releases","short_description":"

Create reusable content as listings and add them to lists wherever core blocks can be used

\n","description":"\n\n\n

Create reusable content as listings and add them to lists wherever core blocks can be used

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2021/02/listings2-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2021/02/listings2-372x209.jpg","svg":""},"wporg":false},{"name":"Newspack Newsletters","slug":"newspack-newsletters","version":"1.33.1","author":"Automattic","author_profile":"https://profiles.wordpress.org/automattic","requires":"5.3","tested":"5.8.0","requires_php":"5.6","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":1,"support_threads_resolved":1,"active_installs":500,"downloaded":3342,"last_updated":"2021-09-14 10:52pm GMT","added":"2021-02-15","homepage":"https://newspack.pub","short_description":"Create email newsletters with the Gutenberg editor and distribute them with your Mailchimp or Constant…","description":"

Create email newsletters with the Gutenberg editor and send them via Mailchimp or Constant Contact, all without leaving WP Admin! Newspack Newsletters lets you build eye-catching newsletters using the WordPress editing tools you’re already familiar with, and lets you save drafts, create reusable layouts, send to your existing mailing list, and also publish them to your website.

\n

Use and create newsletter layouts

\n

Newspack Newsletters comes with four default layouts to help you start building newsletters quickly. You can use an existing layout, or start fresh with a blank page. You can also create and save your own layouts, or alter the ones that come bundled with the plugin and save the settings, and use them for future campaigns.

\n

Use Gutenberg blocks and settings

\n

Newspack Newsletters supports most core Gutenberg blocks and configurations, letting you use blocks like Group, Button, Columns, and more, to create dynamic layouts. The plugin will warn you when a block will not display as expected in an email.

\n

Customize your newsletter’s appearance

\n

You can customize your newsletters further by changing the header and body fonts, or picking a background color.

\n

Newspack Blocks

\n

Newspack Newsletters comes bundled with the Newspack Post Inserter block. This block lets you insert excerpts from live posts on your site, and, once inserted, will turn those posts into static content using the Header and Paragraph blocks, linking back to your site.

\n

Need to target a post title to your newsletter audience? Not a problem! You can edit these blocks, and add others, to make sure they’ speak to your readers.

\n

Add ads!

\n

Monetize your newsletters by including advertising. The Newspack Newsletters plugin lets you create ads, which are stored as a custom post type. Ads are automatically inserted into your newsletters, and can also be toggled off on a newsletter-by-newsletter basis.

\n

Send with ease

\n

Newspack Newsletters connects to your Mailchimp or Constant Contact accounts to send emails using the mailing lists you’ve collected there, all without leaving the WordPress Admin.

\n

Before sending your campaign, you can send test emails to one or more email addresses at a time from the newsletter editor, to make sure everything is pixel perfect before sharing with the world.

\n

About Newspack

\n

The Newspack Newletters plugin is part of Newspack, a suite of tools to help small to mid-sized news organizations publish and generate revenue with WordPress. Newspack is a collaborative project by WordPress.com and the Google News Initiative. You can learn more about Newspack by visiting our website.

\n

Credits

\n

The beach photograph in the screenshot is by Life of Pix, licensed CC0.

\n","download_link":"https://downloads.wordpress.org/plugin/newspack-newsletters.zip","tags":{"constant-contact":"constant contact","mailchimp":"mailchimp","newsletters":"newsletters","newspack":"Newspack","wordpress-com":"WordPress.com"},"donate_link":"","icons":{"1x":"https://ps.w.org/newspack-newsletters/assets/icon.svg?rev=2475195","2x":"https://ps.w.org/newspack-newsletters/assets/icon-256x256.png?rev=2475195","svg":"https://ps.w.org/newspack-newsletters/assets/icon.svg?rev=2475195"},"wporg":true},{"name":"Web Stories","slug":"web-stories","version":"1.11.0","author":"Google","author_profile":"https://profiles.wordpress.org/google","requires":"5.5","tested":"5.8.1","requires_php":"7.0","rating":84,"ratings":{"1":5,"2":2,"3":2,"4":4,"5":32},"num_ratings":45,"support_threads":113,"support_threads_resolved":83,"active_installs":30000,"downloaded":350277,"last_updated":"2021-09-08 11:17pm GMT","added":"2020-09-22","homepage":"https://wp.stories.google/","short_description":"Web Stories are a visual storytelling format for the open web which immerses your readers…","description":"

Web Stories are a free, open-web, visual storytelling format for the web, enabling you to easily create visual narratives with engaging animations and tappable interactions, and immerse your readers in great and fast-loading full-screen experiences.

\n

Benefits of Web Stories

\n

The Web Stories format puts features and capabilities at your fingertips to engage with your audience via the power of storytelling on the open web. Specifically, you can:

\n
    \n
  • Create beautiful and engaging content easily: Web Stories make the production of stories as easy as possible from a technical perspective.
  • \n
  • Enjoy creative flexibility for editorial freedom and branding: The Web Stories format comes with preset but flexible layout templates, standardized UI controls, and components for sharing and adding follow-on content.
  • \n
  • Share and link your stories on the open web: Web Stories are part of the open web and can be shared and embedded across sites and apps without being confined to a single ecosystem.
  • \n
  • Track and measure your stories: Supports analytics and bookend capabilities for viral sharing and monetization.
  • \n
  • Capture the attention of your readers by offering fast loading times to your stories: Web Stories are lightning fast so that your audience stays engaged and entertained.
  • \n
  • Engage with your readers via immersive storytelling: Web Stories are a new and modern way to reach existing readers.
  • \n
  • Monetize effectively the beautiful and engaging stories you create: Web Stories enable monetization capability for publishers using affiliate links. For advertisers, Stories is a way to reach a unique audience within a new storytelling experience.
  • \n
\n

Web Stories Editor

\n

The Web Stories editor for WordPress brings together a robust set of story creation capabilities in a user-friendly, WYSIWYG creation tool. Some of the key features you can leverage out of the box are:

\n
    \n
  • A visually rich and intuitive dashboard, allowing you to easily navigate the story creation process
  • \n
  • Beautiful and expressive page templates to you get your story creation process started quickly and smoothly
  • \n
  • Easy drag-and-drop capabilities, making it easy to compose beautiful stories
  • \n
  • Convenient access to WordPress’ media library, enabling you to grab your media assets right from the plugin dashboard as you create your stories
  • \n
  • Customizable color and text style presets, making it easy to tailor the style of your stories to the needs of your content strategy
  • \n
  • And much more!
  • \n
\n

Using the Web Stories editor for WordPress, you can easily create visual narratives with tappable interactions, and share freely across the web, or embed them on your existing content strategies. The Stories you create are yours in every way, as Web Stories belong to the open web, instead of being confined to any specific closed ecosystem or platform.

\n

Audience: Everyone

\n

Web Stories are for everyone! If you are a site owner, content creator, or publisher on the web, embracing the Web Stories format would be great as a way to enhance the quality of your content strategy, the value you bring to your readers, and consequently your chances of achieving sustainable success.

\n

Terms of Service

\n

By using this plugin, you agree to Google’s Terms of Service. By using third-party imagery and video provided by Unsplash, Coverr and Tenor, you agree to adhere to the respective Terms of Service.

\n","download_link":"https://downloads.wordpress.org/plugin/web-stories.1.11.0.zip","tags":{"amp":"amp","google":"google","stories":"stories","storytelling":"storytelling","web-stories":"web stories"},"donate_link":"","icons":{"1x":"https://ps.w.org/web-stories/assets/icon.svg?rev=2386543","2x":"https://ps.w.org/web-stories/assets/icon-256x256.png?rev=2386543","svg":"https://ps.w.org/web-stories/assets/icon.svg?rev=2386543"},"wporg":true},{"name":"Jetpack – WP Security, Backup, Speed, & Growth","slug":"jetpack","version":"10.1","author":"Automattic","author_profile":"https://profiles.wordpress.org/automattic","requires":"5.7","tested":"5.8.1","requires_php":"5.6","rating":78,"ratings":{"1":321,"2":80,"3":81,"4":138,"5":1023},"num_ratings":1643,"support_threads":311,"support_threads_resolved":271,"active_installs":5000000,"downloaded":245894338,"last_updated":"2021-09-07 3:42pm GMT","added":"2011-01-20","homepage":"https://jetpack.com","short_description":"Improve your WP security with powerful one-click tools like backup and malware scan. Get essential free tools including stats, CDN and social sharing.","description":"

The most popular WordPress plugin for just about everything.

\n

WordPress security, performance, marketing, and design tools — Jetpack is made by WordPress experts to make WP sites safer and faster, and help you grow your traffic.

\n

24/7 AUTO SITE SECURITY

\n

We guard your site so you can run your site or business. Jetpack Security provides easy-to-use, comprehensive WordPress site security including auto real-time backups and easy restores, malware scans, and spam protection. Essential features like brute force protection and downtime / uptime monitoring are free.

\n
    \n
  • Back up your site automatically in real time and restore to any point with one click. Unlimited storage for your backup. Great for eCommerce stores especially Woo.
  • \n
  • Manage migration to a new host, migrate theme files and plugins to a new database, easily duplicate websites, create full database backups, clone websites, repair broken websites by restoring older backups or easily set up a test site by creating a duplicate of your existing WP website.
  • \n
  • See every site change and who made it with the activity log, great for coordination, debug, maintenance, or troubleshooting.
  • \n
  • Automatically perform malware scans and security scans for other code threats. One click fix to restore your site for malware.
  • \n
  • Block spam comments and form responses with anti spam features powered by Akismet.
  • \n
  • Brute force attack protection to protect your WordPress login page from attacks.
  • \n
  • Monitor your site uptime / downtime and get an instant alert of any change by email.
  • \n
  • Secure WordPress.com powered login used by millions of sites with optional 2FA (two factor authentication) for extra protection.
  • \n
  • Auto update individual plugins for easy site maintenance and management.
  • \n
\n

PEAK SPEED AND PERFORMANCE

\n

Get blazing fast site speed with Jetpack, the premier WP plugin built to leverage the power of AMP, a tool that helps optimize your site on mobile devices. Jetpack’s free CDN (content delivery network) auto optimizes your images. Watch your page load times decrease — we’ll optimize your images and serve them from our own powerful global network, and speed up your site on mobile devices to reduce bandwidth usage and save money!

\n
    \n
  • Jetpack has partnered with Google AMP to create the best, highest performance all-in-one toolkit for WordPress. By using Jetpack and AMP together, you get all the features you need to build a beautiful, fast, modern website with no coding required.
  • \n
  • Image CDN for images and static files, like CSS and JavaScript, served from our servers, not yours, which saves you money and bandwidth.
  • \n
  • Lazy load images for a super fast experience, even on mobile. Jetpack’s lazy loading automatically delays the loading of media on your posts and pages until your visitors scroll down to where they appear on the page.
  • \n
  • Unlimited, high speed, ad free video hosting keeps the focus on your content, not on ads or recommendations that lead people off site.
  • \n
  • Custom site search is incredibly powerful and customizable. Helps your visitors instantly find the right content so they read and buy more. Works great with WooCommerce / eCommerce sites to help filter products so customers get what they want on your site faster.
  • \n
  • Recommended to use with WP Super Cache for ultimate WordPress site speed.
  • \n
\n

POWERFUL TOOLS FOR GROWTH

\n

Create and customize your WordPress site, optimize it for visitors and revenue, and enjoy watching your stats tick up. Build it, share it, and watch it grow.

\n
    \n
  • Advanced site stats and analytics to help you understand your audience.
  • \n
  • Auto publish blog posts and products to social media by simply using our tools to connect to Facebook, Twitter, and Linkedin.
  • \n
  • Easily share Instagram posts on your pages and blog posts.
  • \n
  • Collect a payment or donation, sell a product, service, or membership with simple integrations with PayPal and Stripe.
  • \n
  • Grow traffic with SEO tools for Google, Bing, Twitter, Facebook, and WordPress.com. XML sitemap created automatically.
  • \n
  • Advertise on your site to generate revenue. The ad network automatically does the work for you to find high-quality ads that are placed on your site.
  • \n
  • Manage Jetpack features from anywhere with the official WordPress mobile app, available for Apple iOS (iPhone or iPad) and Google Android.
  • \n
  • Looking for Customer Relationship Management? Check out the Jetpack CRM plugin which works alongside Jetpack to give you a simple and practical way to build relationships with your customers and leads.
  • \n
\n

EASY DESIGN TOOLS

\n

Quickly customize your site to make it stand out — no coding needed.

\n
    \n
  • Themes — Simple themes to get started or pick a professional theme to make your site stand out.
  • \n
  • Related posts — Keep visitors on your site by automatically showing them related content they will be interested in.
  • \n
  • Gallery and Slideshow tools — Image galleries, carousel slider, and slideshows for WP sites and stores.
  • \n
  • Subscriptions — Make it easy for visitors to sign up to receive notifications of your latest posts and comments.
  • \n
  • Contact form — Easily build unlimited contact forms for free without any coding. Receive email notifications for each response. Integrate with mail solutions like Creative Mail to reach your customers and leads quickly. Connect to Jetpack Anti spam (powered by Akismet) to filter submissions.
  • \n
  • oEmbed Support — easily embed images, posts, and links from Facebook and Instagram.
  • \n
\n

INTEGRATIONS

\n

Jetpack is updated monthly to ensure seamless integration with top WordPress plugins and other tech products.

\n
    \n
  • Built for WooCommerce: Jetpack and WooCommerce are both made by Automattic. Backup, Scan, Anti-spam, integrate perfectly for Woo / eComm stores
  • \n
  • Jetpack is fully compatible with v2.0 of the official AMP plugin for WordPress.
  • \n
  • Better understand your customers and marketing with Google Analytics (GA) integration
  • \n
  • Social media platforms: Instagram, Facebook, Twitter, LinkedIn
  • \n
  • Simple Blocks to customize your site: Pinterest, Whatsapp, Podcast player, GIFs, maps, tiled gallery, slideshow
  • \n
  • Payment processors: easily collect payments or donations and sell products through Stripe and PayPal
  • \n
  • Site speed and performance plugins: Works great with WP Super Cache by Automattic and Cloudflare.
  • \n
  • Contact form: Anti-spam (Powered by Akismet) blocks spam comments for Jetpack forms, Contact Form 7, Ninja Forms, Gravity Forms, Formidable Forms, and more.
  • \n
  • Other tech integrations: Instagram, Creative Mail, Mailchimp, Calendly, Whatsapp, Pinterest, Revue, and more.
  • \n
\n

EXPERT SUPPORT

\n

We have a global team of Happiness Engineers ready to provide incredible support. Ask your questions in the support forum or contact us directly.

\n

GET STARTED

\n

Installation is free, quick, and easy. Set up Jetpack in minutes. Take advantage of more robust features like WordPress site security and design and growth tools by upgrading to a paid plan.

\n","download_link":"https://downloads.wordpress.org/plugin/jetpack.10.1.zip","tags":{"backup":"backup","malware":"malware","scan":"scan","security":"security","woo":"woo"},"donate_link":"","icons":{"1x":"https://ps.w.org/jetpack/assets/icon.svg?rev=2394525","2x":"https://ps.w.org/jetpack/assets/icon-256x256.png?rev=2394525","svg":"https://ps.w.org/jetpack/assets/icon.svg?rev=2394525"},"wporg":true},{"name":"Easy Notification Bar","slug":"easy-notification-bar","version":"1.4.3","author":"WPExplorer","author_profile":"https://profiles.wordpress.org/wpexplorer","requires":"5.2.0","tested":"5.8.1","requires_php":"5.6.2","rating":82,"ratings":{"1":0,"2":1,"3":1,"4":1,"5":4},"num_ratings":7,"support_threads":4,"support_threads_resolved":1,"active_installs":4000,"downloaded":37332,"last_updated":"2021-09-28 3:14am GMT","added":"2019-06-20","homepage":"https://wordpress.org/plugins/easy-notification-bar/","short_description":"Easily add a custom top bar notification message to on your site with live customization…","description":"

Easily add a custom top bar notification message to on your site with live customization options via the WordPress customizer. The plugin allows you to enter your notification bar text as well as an optional button to display next to your text. Perfect for notifying visitors of a current sale, hot product, warnings or other important messages.

\n

The Easy Notification Bar plugin makes use of the newer “wp_body_open” action hook introduced in WordPress 5.2.0 which allows the plugin to work better with any theme that has been updated to support the tag. Contrary to other notice bar solutions which rely on absolute positioning, this plugin inserts the notice bar right after the body tag so it should display perfectly without any conflicts on any well-coded theme.

\n

By default, the notification bar is “static” which means it displays at the top of your site so when you scroll down the page it will become “hidden”. This is generally better for usability and SEO. However, in version 1.4 we added a new sticky option which you can enable in the Customizer so that the notification bar remains visible as you scroll down the page. The sticky functionality makes use of the CSS sticky property (not javascript).

\n

Although disabled by default, you can enable a close icon for your notice. When enabled, your visitors will see an “x” icon over the top bar which they can click to hide the message for their current and future sessions. This functionality makes use of localStorage (not cookies).

\n

Live Demo: You can view a live demo for the notification bar on our More Widgets Plugin Demo

\n

Features

\n
    \n
  • Sitewide (or homepage only) top notification bar.
  • \n
  • Easy setup via the WordPress customizer.
  • \n
  • Optional close icon.
  • \n
  • Optional sticky display.
  • \n
  • Custom background, color, text alignment and font size settings.
  • \n
  • Optional callout button.
  • \n
  • Responsive design so it looks good on mobile.
  • \n
  • Minimal code.
  • \n
  • Vanilla Javascript used for close icon (jQuery not needed).
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/easy-notification-bar.zip","tags":{"notice":"notice","notice-bar":"notice bar","notification":"notification","notification-bar":"notification bar","top-bar":"top bar"},"donate_link":"","icons":{"1x":"https://ps.w.org/easy-notification-bar/assets/icon-128x128.png?rev=2515988","2x":"https://ps.w.org/easy-notification-bar/assets/icon-256x256.png?rev=2515988"},"wporg":true},{"name":"Antispam Bee","slug":"antispam-bee","version":"2.10.0","author":"pluginkollektiv","author_profile":"https://profiles.wordpress.org/pluginkollektiv","requires":"4.5","tested":"5.8.1","requires_php":"5.2","rating":96,"ratings":{"1":7,"2":1,"3":1,"4":2,"5":174},"num_ratings":185,"support_threads":6,"support_threads_resolved":6,"active_installs":700000,"downloaded":5110739,"last_updated":"2021-07-29 11:15am GMT","added":"2009-01-10","homepage":"https://antispambee.pluginkollektiv.org/","short_description":"Antispam plugin with a sophisticated tool set for effective day to day comment and trackback spam-fighting. Build with data protection and privacy in …","description":"

Say Goodbye to comment spam on your WordPress blog or website. Antispam Bee blocks spam comments and trackbacks effectively, without captchas and without sending personal information to third party services. It is free of charge, ad-free and 100% GDPR compliant.

\n

Feature/Settings Overview

\n
    \n
  • Trust approved commenters.
  • \n
  • Trust commenters with a Gravatar.
  • \n
  • Consider the comment time.
  • \n
  • Allow comments only in a certain language.
  • \n
  • Block or allow commenters from certain countries.
  • \n
  • Treat BBCode links as spam.
  • \n
  • Validate the IP address of commenters.
  • \n
  • Use regular expressions.
  • \n
  • Search local spam database for commenters previously marked as spammers.
  • \n
  • Notify admins by e-mail about incoming spam.
  • \n
  • Delete existing spam after n days.
  • \n
  • Limit approval to comments/pings (will delete other comment types).
  • \n
  • Select spam indicators to send comments to deletion directly.
  • \n
  • Optionally exclude trackbacks and pingbacks from spam detection.
  • \n
  • Optionally spam-check comment forms on archive pages.
  • \n
  • Display spam statistics on the dashboard, including daily updates of spam detection rate and a total of blocked spam comments.
  • \n
\n

Support

\n\n

Contribute

\n
    \n
  • Active development of this plugin is handled on GitHub.
  • \n
  • Pull requests for documented bugs are highly appreciated.
  • \n
  • If you think you’ve found a bug (e.g. you’re experiencing unexpected behavior), please post at the support forums first.
  • \n
  • If you want to help us translate this plugin you can do so on WordPress Translate.
  • \n
\n

Credits

\n\n","download_link":"https://downloads.wordpress.org/plugin/antispam-bee.2.10.0.zip","tags":{"anti-spam":"anti-spam","antispam":"antispam","block-spam":"block spam","comment":"comment","comments":"comments"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=TD4AMD2D8EMZW","icons":{"1x":"https://ps.w.org/antispam-bee/assets/icon-128x128.png?rev=977629","2x":"https://ps.w.org/antispam-bee/assets/icon-256x256.png?rev=977629"},"wporg":true},{"name":"SimpleTOC – Table of Contents Block","slug":"simpletoc","version":"4.8","author":"Marc Tönsing","author_profile":"https://profiles.wordpress.org/marcdk","requires":"5.0","tested":"5.8.1","requires_php":false,"rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":24},"num_ratings":24,"support_threads":4,"support_threads_resolved":3,"active_installs":2000,"downloaded":21657,"last_updated":"2021-07-29 9:07pm GMT","added":"2020-04-14","homepage":"https://marc.tv/simpletoc-wordpress-inhaltsverzeichnis-plugin-gutenberg/","short_description":"Adds a custom Table of Contents Gutenberg block.","description":"

In Gutenberg, add a block and search for “SimpleTOC” or just “TOC”. You need to save your post before you add the block. It works by parsing the post content and retrieving the heading blocks and creates a new dynamic block with a list of links to the headings.

\n

Hide the headline “Table of Contents” and set a maximum display depth in the blocks’ sidebar configuration. Add the CSS class “simpletoc-hidden” to a heading block to remove that specific heading from the generated TOC.

\n

Features

\n
    \n
  • No javascript or css added.
  • \n
  • Designed for Gutenberg.
  • \n
  • Compatible with AMP plugins.
  • \n
  • Minimal and valid HTML output.
  • \n
  • Inherits the style of your theme.
  • \n
  • Support for column block layouts.
  • \n
  • Control the maximum depth of the headings.
  • \n
  • Choose between an ordered and unordered html list.
  • \n
  • SEO friendly: Disable the h2 heading of the TOC block and add your own.
  • \n
  • Comes with English, French, Spanish, German, and Brazilian Portuguese translations.
  • \n
  • Works with non-latin texts. Tested with Japanese and Arabic.
  • \n
  • Finds headlines in groups and reusable blocks. And in groups within reusable blocks.
  • \n
  • Rank Math support.
  • \n
\n

Credits

\n

This plugin is forked from https://github.com/pdewouters/gutentoc by pdewouters and uses code from https://github.com/shazahm1/Easy-Table-of-Contents by shazahm1

\n

Many thanks to Tom J Nowell https://tomjn.com and and Sally CJ who both helped me a lot with my questions over at wordpress.stackexchange.com

\n","download_link":"https://downloads.wordpress.org/plugin/simpletoc.4.8.zip","tags":{"amp":"amp","block":"block","gutenberg":"gutenberg","table-of-contents":"table of contents","toc":"toc"},"donate_link":"https://marc.tv/out/donate","icons":{"1x":"https://ps.w.org/simpletoc/assets/icon.svg?rev=2451408","2x":"https://ps.w.org/simpletoc/assets/icon-256x256.png?rev=2451408","svg":"https://ps.w.org/simpletoc/assets/icon.svg?rev=2451408"},"wporg":true},{"name":"Log in with Google","slug":"login-with-google","version":"1.2.1","author":"rtCamp","author_profile":"https://profiles.wordpress.org/rtcamp","requires":"5.4.2","tested":"5.7.3","requires_php":"7.3","rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":6},"num_ratings":6,"support_threads":1,"support_threads_resolved":0,"active_installs":400,"downloaded":3285,"last_updated":"2021-07-23 10:00pm GMT","added":"2020-10-01","homepage":"","short_description":"Minimal plugin that allows WordPress users to log in using Google.","description":"

Ultra minimal plugin to let your users login to WordPress applications using their Google accounts. No more remembering hefty passwords!

\n

Initial Setup

\n
    \n
  1. \n

    Create a project from Google Developers Console if none exists.

    \n
  2. \n
  3. \n

    Go to Credentials tab, then create credential for OAuth client.

    \n
      \n
    • Application type will be Web Application
    • \n
    • Add YOUR_DOMAIN/wp-login.php in Authorized redirect URIs
    • \n
    \n
  4. \n
  5. \n

    This will give you Client ID and Secret key.

    \n
  6. \n
  7. \n

    Input these values either in WP Admin > Settings > WP Google Login, or in wp-config.php using the following code snippet:

    \n

    `
    \ndefine( ‘WP_GOOGLE_LOGIN_CLIENT_ID’, ‘YOUR_GOOGLE_CLIENT_ID’ );
    \ndefine( ‘WP_GOOGLE_LOGIN_SECRET’, ‘YOUR_SECRET_KEY’ );
    \n“

    \n
  8. \n
\n

Browser support

\n

These browsers are supported. Note, for example, that One Tap Login is not supported in Safari.

\n

How to enable automatic user registration

\n

You can enable user registration either by
\n– Enabling Settings > WP Google Login > Enable Google Login Registration

\n

OR

\n
    \n
  • Adding
    \ndefine( 'WP_GOOGLE_LOGIN_USER_REGISTRATION', 'true' );
    \nin wp-config.php file.
  • \n
\n

Note: If the checkbox is ON then, it will register valid Google users even when WordPress default setting, under

\n

Settings > General Settings > Membership > Anyone can register checkbox

\n

is OFF.

\n

Restrict user registration to one or more domain(s)

\n

By default, when you enable user registration via constant WP_GOOGLE_LOGIN_USER_REGISTRATION or enable Settings > WP Google Login > Enable Google Login Registration, it will create a user for any Google login (including gmail.com users). If you are planning to use this plugin on a private, internal site, then you may like to restrict user registration to users under a single Google Suite organization. This configuration variable does that.

\n

Add your domain name, without any schema prefix and www, as the value of WP_GOOGLE_LOGIN_WHITELIST_DOMAINS constant or in the settings Settings > WP Google Login > Whitelisted Domains. You can whitelist multiple domains. Please separate domains with commas. See the below example to know how to do it via constants:

\n
`\n
\n

define( ‘WP_GOOGLE_LOGIN_WHITELIST_DOMAINS’, ‘example.com,sample.com’ );
\n `

\n

Note: If a user already exists, they will be allowed to login with Google regardless of whether their domain is whitelisted or not. Whitelisting will only prevent users from registering with email addresses from non-whitelisted domains.

\n

Hooks

\n

Filter wp_google_login_scopes
\nThis filter can be used to filter existing scope used in Google Sign in.
\nYou can ask for additional permission while user logs in.
\nThis filter will provide 1 parameter scopes in callback, which contains array of scopes.

\n

wp-config.php parameters list

\n
    \n
  • \n

    WP_GOOGLE_LOGIN_CLIENT_ID (string): Google client ID of your application.

    \n
  • \n
  • \n

    WP_GOOGLE_LOGIN_SECRET (string): Secret key of your application

    \n
  • \n
  • \n

    WP_GOOGLE_LOGIN_USER_REGISTRATION (boolean) (optional): Set true If you want to enable new user registration. By default, user registration defers to Settings > General Settings > Membership if constant is not set.

    \n
  • \n
  • \n

    WP_GOOGLE_LOGIN_WHITELIST_DOMAINS (string) (optional): Domain names, if you want to restrict login with your custom domain. By default, it will allow all domains. You can whitelist multiple domains.

    \n
  • \n
\n

BTW, We’re Hiring!

\n

\n","download_link":"https://downloads.wordpress.org/plugin/login-with-google.1.2.1.zip","tags":{"authentication":"authentication","google-login":"Google Login","oauth":"oauth","sign-in":"sign in","sso":"sso"},"donate_link":"https://rtcamp.com/","icons":{"1x":"https://ps.w.org/login-with-google/assets/icon-128x128.png?rev=2402713","2x":"https://ps.w.org/login-with-google/assets/icon-256x256.png?rev=2402713"},"wporg":true},{"name":"Search with Google","slug":"search-with-google","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://wordpress.org/plugins/search-with-google/","short_description":"

This plugin replaces the WordPress default search query with server-side results from Custom Search Site Restricted JSON API. 

\n","description":"\n\n\n

This plugin replaces the WordPress default search query with server-side results from Custom Search Site Restricted JSON API

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2020/11/searchWithGoogle-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2020/11/searchWithGoogle-372x209.jpg","svg":""},"wporg":false},{"name":"Page Builder Gutenberg Blocks – CoBlocks","slug":"coblocks","version":"2.16.0","author":"GoDaddy","author_profile":"https://profiles.wordpress.org/godaddy","requires":"5.0","tested":"5.8.1","requires_php":"5.6","rating":88,"ratings":{"1":7,"2":3,"3":4,"4":5,"5":63},"num_ratings":82,"support_threads":17,"support_threads_resolved":2,"active_installs":500000,"downloaded":5466671,"last_updated":"2021-08-12 8:29pm GMT","added":"2018-04-19","homepage":"","short_description":"CoBlocks is a suite of page builder WordPress blocks for Gutenberg, with 10+ new blocks and a true page builder experience with rows and columns.","description":"

CoBlocks is the most innovative collection of page building WordPress blocks for the new Gutenberg WordPress block editor.

\n

With additional blocks and true row and column building, CoBlocks gives you a true page builder experience for Gutenberg.

\n

CoBlocks is powerful but lightweight: it adds functionality to the WordPress editor without bloat. This is the plugin you’ve been waiting for, and it will make you rethink what WordPress is capable of.

\n

Make Beautiful Web Pages With Gutenberg & CoBlocks

\n

CoBlocks is the last page builder you’ll ever need: you get a winning mix of additional WordPress blocks, and page builder functionality. With CoBlocks you have everything you need to make beautiful web pages with the new block editor:

\n
    \n
  • Accordion Block
  • \n
  • Alert Block
  • \n
  • Author Profile Block
  • \n
  • Buttons Block
  • \n
  • Carousel Gallery Block
  • \n
  • Click to Tweet Block
  • \n
  • Collage Gallery Block
  • \n
  • Dynamic Separator Block
  • \n
  • Events Block (New!)
  • \n
  • Features Block
  • \n
  • Food & Drinks Block
  • \n
  • Form Block
  • \n
  • Gif Block
  • \n
  • GitHub Gist Block
  • \n
  • Hero Block
  • \n
  • Highlight Block
  • \n
  • Icon Block
  • \n
  • Logos & Badges Block
  • \n
  • Map Block
  • \n
  • Masonry Gallery Block
  • \n
  • Media Card Block
  • \n
  • Offset Gallery Block
  • \n
  • Post Carousel Block
  • \n
  • Posts Block
  • \n
  • Pricing Table Block
  • \n
  • Resizable Row/Columns Blocks
  • \n
  • Services Block
  • \n
  • Shape Divider Block
  • \n
  • Social Profiles Block
  • \n
  • Social Sharing Block
  • \n
  • Stacked Gallery Block
  • \n
\n

Breakthrough Page Builder System

\n

CoBlocks features an innovative block system that allows you to create stunning web pages, and even entire websites, with the new WordPress editor.

\n

You get the extra blocks you need and the layout and design functionality for a true page builder experience.

\n

Use the exceptional Row and Columns blocks to add dynamically generated content areas with specific responsive margin and padding settings that only CoBlocks provides.

\n

Style these with innovative new blocks such as the Shape Divider, which lets you split up your content with beautiful dividers.

\n

Each of the WordPress blocks within CoBlocks have been precisely fined tuned to offer a familiar, yet powerful, customization experience. Tailor each block to your taste using our custom controls and settings. Change fonts, set margin and padding, pick colors and more.

\n

Custom Typography Controls

\n

The breakthrough Typography Control Panel within CoBlocks lets you design web pages with alluring typographic elements. Set fonts, sizes, weights, transformations and more, in our CoBlocks blocks, and in core WordPress blocks.

\n

Free Companion Theme

\n

CoBlocks is built to show off the best of Gutenberg, but it requires a Gutenberg-first theme to unlock its full potential. We also created the free Go theme in the WordPress theme repository as the perfect companion for CoBlocks.

\n

Going Beyond Gutenberg Blocks

\n

The vision for CoBlocks is to create a suite of Gutenberg blocks to help folks make beautiful websites easily. These newest releases of CoBlocks is the ultimate expression of that vision.

\n

Built With Developers in Mind

\n

Extensible, adaptable, and open source — CoBlocks is created with theme and plugin developers in mind. If you’re interested to jump in the project, there are opportunities for developers at all levels to get involved. Contribute to CoBlocks on GitHub and join the party. 🎉

\n","download_link":"https://downloads.wordpress.org/plugin/coblocks.2.16.0.zip","tags":{"blocks":"blocks","gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","page-builder":"page builder","wordpress-blocks":"wordpress blocks"},"donate_link":"","icons":{"1x":"https://ps.w.org/coblocks/assets/icon-128x128.jpg?rev=2243972","2x":"https://ps.w.org/coblocks/assets/icon-256x256.jpg?rev=2243972"},"wporg":true},{"name":"Simple Author Box","slug":"simple-author-box","version":"2.42","author":"WebFactory Ltd","author_profile":"https://profiles.wordpress.org/webfactory","requires":"4.6","tested":"5.8.1","requires_php":"5.6","rating":88,"ratings":{"1":9,"2":0,"3":5,"4":8,"5":75},"num_ratings":97,"support_threads":8,"support_threads_resolved":8,"active_installs":50000,"downloaded":906578,"last_updated":"2021-08-13 8:08am GMT","added":"2014-08-08","homepage":"https://wpauthorbox.com/","short_description":"Add a responsive author box with social icons to any post. Great author box for…","description":"

Simple Author Box adds a responsive author box at the end of your posts, showing the author name, author gravatar and author description – author bio. It also adds over 30 social profile fields on WordPress user profile screen, allowing to display the author social icons in the author box.

\n

Main Features

\n
    \n
  • Shows author gravatar, name, website, description (author bio) and social icons
  • \n
  • Fully customizable to match your theme design (style, color, size and text options)
  • \n
  • Nice looking on desktop, laptop, tablet or mobile phones
  • \n
  • Automatically insert the author box at the end of your post
  • \n
  • Option to manually insert the author box on your template file (single.php or author.php)
  • \n
  • Simple Author Box has RTL support
  • \n
  • Simple Author Box has AMP support
  • \n
  • Great for guest posts, and guest authors
  • \n
\n

Simple Author Box Pro Features

\n
\n

Premium features only available in Simple Author Box Pro

\n
    \n
  • Change author box position to before/after content
  • \n
  • Choose whether the author’s name should link to its website/page/none
  • \n
  • Select where to show author box on
  • \n
  • Add rotate effect on author avatar hover
  • \n
  • Option to open author website link in a new tab
  • \n
  • Option to add “nofollow” attribute on author website link
  • \n
  • Choose the author website’s position: right/left
  • \n
  • Social icons type, style, rotate effect, shadow effect, thin border
  • \n
  • Option to change the color palette
  • \n
  • Choose the font and font sizes for the author’s job title, website, name, and description
  • \n
  • Enable guest authors and co-authors
  • \n
  • Option to use guest authors as co-authors
  • \n
  • Top authors widget – displays the most popular authors based of comments
  • \n
  • Simple author box widget – displays the users selected
  • \n
\n
\n

Read more about the Simple Author Box advanced features.

\n","download_link":"https://downloads.wordpress.org/plugin/simple-author-box.2.42.zip","tags":{"author-bio":"author bio","author-box":"author box","author-profile-fields":"author profile fields","author-social-icons":"author social icons","responsive-author-box":"responsive author box"},"donate_link":"","icons":{"1x":"https://ps.w.org/simple-author-box/assets/icon-128x128.jpg?rev=1821054"},"wporg":true},{"name":"Genesis Blocks","slug":"genesis-blocks","version":"1.3.0","author":"StudioPress","author_profile":"https://profiles.wordpress.org/studiopress","requires":"5.3","tested":"5.8.1","requires_php":"7.1","rating":90,"ratings":{"1":1,"2":0,"3":1,"4":0,"5":10},"num_ratings":12,"support_threads":10,"support_threads_resolved":3,"active_installs":40000,"downloaded":229071,"last_updated":"2021-09-23 6:49pm GMT","added":"2020-08-25","homepage":"https://studiopress.com/genesis-pro/","short_description":"A collection of content blocks, sections, & full-page layouts for the block editor.","description":"

Genesis Blocks is a collection of page building blocks for the Gutenberg block editor. Building pages with the block editor and Genesis Blocks gives you more control to quickly create and launch any kind of site you want!

\n

Installing the customizable Genesis Blocks plugin adds a collection of beautiful, site-building blocks to help you customize page layouts, increase engagement, and get results for your business. Genesis Blocks provides everything from customizable buttons, to beautifully-designed page sections and full-page layout designs via the Section & Layout block.

\n

Along with the blocks themselves, Genesis Blocks extends the content creation experience by providing a library of page sections and full-page layouts, all available from within the block editor.

\n

Create compelling content faster.

\n

Create and use content quickly with prebuilt and custom content sections and full-page layouts.

\n

Enhance the Gutenberg editor.

\n

Additional content blocks and the layout selector make it easy to get the most value out of the block-based editor.

\n

Genesis Blocks currently includes the following blocks to help you build content and pages quickly and effortlessly:

\n
    \n
  • Section & Layout Block
  • \n
  • Advanced Columns Block
  • \n
  • Newsletter Block
  • \n
  • Pricing Block
  • \n
  • Post Grid Block
  • \n
  • Container Block
  • \n
  • Testimonial Block
  • \n
  • Inline Notice Block
  • \n
  • Accordion Block
  • \n
  • Share Icons Block
  • \n
  • Call-To-Action Block
  • \n
  • Customizable Button Block
  • \n
  • Spacer & Divider Block
  • \n
  • Author Profile Block
  • \n
  • Drop Cap Block
  • \n
\n

Do more with Genesis Pro

\n

For those wanting to level-up with Genesis Blocks, a Genesis Pro subscription brings even richer tooling and a bigger library of sections and layouts.

\n
    \n
  • 2 new blocks (more coming soon)
  • \n
  • 26 pre-built full-page layouts
  • \n
  • 56 pre-built sections
  • \n
  • Save & reuse your own sections & layouts
  • \n
  • Advanced block-level user permissions
  • \n
  • Access to and support for Genesis Framework & all of our 35 StudioPress-made premium child themes.
  • \n
  • Additional advanced features for the rest of the Genesis Product Suite
  • \n
\n

Genesis Pro includes even more value for modern WordPress content creators, marketers, and developers. Learn more about Genesis Pro here.

\n

Google AMP Support

\n

The Accelerated Mobile Pages (AMP) project is a publishing format created by Google to enhance site performance for mobile website users. AMP pages are specially designed for Google search users to quickly load website pages without using any extraneous data. Genesis Blocks has support for AMP built into each block!

\n

Help & Docs

\n

User and developer docs for Genesis Blocks can be found here.

\n","download_link":"https://downloads.wordpress.org/plugin/genesis-blocks.1.3.0.zip","tags":{"blocks":"blocks","editor":"editor","gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","page-builder":"page builder"},"donate_link":"https://studiopress.com","icons":{"1x":"https://ps.w.org/genesis-blocks/assets/icon-128x128.png?rev=2368839","2x":"https://ps.w.org/genesis-blocks/assets/icon-256x256.png?rev=2368840"},"wporg":true},{"name":"MathML Block","slug":"mathml-block","version":"1.2.1","author":"adamsilverstein","author_profile":"https://profiles.wordpress.org/adamsilverstein","requires":"5.0","tested":"5.8.1","requires_php":"5.6","rating":90,"ratings":{"1":0,"2":0,"3":0,"4":1,"5":1},"num_ratings":2,"support_threads":1,"support_threads_resolved":0,"active_installs":500,"downloaded":7969,"last_updated":"2021-09-11 2:30pm GMT","added":"2018-12-28","homepage":"","short_description":"A MathML block for the WordPress block editor (Gutenberg).","description":"

A MathML block for the WordPress block editor (Gutenberg).
\nRequires PHP 5.4+ and WordPress 5.0+.

\n

Development takes place on the GitHub repository: https://github.com/adamsilverstein/mathml-block.

\n

Screencast: https://cl.ly/c0f6bbfbc3b1

\n

What is MathML?

\n

Mathematical Markup Language is a mathematical markup language, an application of XML for describing mathematical notations and capturing both its structure and content. It aims at integrating mathematical formulae into World Wide Web pages and other documents.

\n

The MathML block uses MathJax to render MathML formulas in the editor and on the front end of a website. MathJax (https://www.mathjax.org/) is A JavaScript display engine for mathematics that works in all browsers.

\n

To test a MathML block and enter a formula, for example: \\[x = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}\\].

\n

To test using math formulas inline, type an formula into a block of text, select it and hit the ‘M’ icon in the control bar. For example: \\( \\cos(θ+φ)=\\cos(θ)\\cos(φ)−\\sin(θ)\\sin(φ) \\). Note: if you are copying and pasting formulas into the rich text editor, switching to HTML/code editor mode is less likely to reformat your pasted formula.

\n

This plugin is compatible with the official AMP plugin by rendering amp-mathml on AMP pages.

\n

Technical Notes

\n
    \n
  • Requires PHP 5.6+.
  • \n
  • Requires WordPress 5.0+.
  • \n
  • Issues and Pull requests welcome on the GitHub repository: https://github.com/adamsilverstein/mathml-block.
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/mathml-block.zip","tags":{"block":"block","block-editor":"block-editor","gutenberg":"gutenberg","math":"math","mathml":"mathml"},"donate_link":"","icons":{"1x":"https://ps.w.org/mathml-block/assets/icon-128x128.png?rev=2002452","2x":"https://ps.w.org/mathml-block/assets/icon-256x256.png?rev=2002452"},"wporg":true},{"name":"Calculated Fields Form","slug":"calculated-fields-form","version":"1.1.24","author":"CodePeople","author_profile":"https://profiles.wordpress.org/codepeople","requires":"3.0.5","tested":"5.8.1","requires_php":false,"rating":96,"ratings":{"1":20,"2":2,"3":4,"4":27,"5":682},"num_ratings":735,"support_threads":108,"support_threads_resolved":107,"active_installs":60000,"downloaded":3585182,"last_updated":"2021-10-02 2:59pm GMT","added":"2013-03-12","homepage":"https://cff.dwbooster.com","short_description":"Calculated Fields Form allows you to create both simple and rich forms, quickly like a…","description":"

The “Calculated Fields Form” plugin allows you to create web forms with calculated fields, whose values are dynamically calculated based on other fields’ values in the web form.

\n

The possibilities are unlimited. For example, you can create forms with financial calculations, date operations to create reservation forms, and calculate the product prices. The plugin includes text operations for editing, translation, or advertising services. There are more advanced operations available such as determining the distance between addresses or generating graphs. The resulting forms are 100% mobile responsive.

\n

The most impressive thing is that you don’t need to hire a programmer to create the forms. With basic knowledge, you will have a professional form in just five minutes.

\n

Creating a form is all visual. The “Calculated Fields Form” plugin includes a form editor with multiple controls. Such as text fields, numeric fields, currency fields, slider controls, email fields, radio buttons, checkboxes, container fields, page breaks to create multipage forms, and most importantly, calculated fields.

\n

The form editor includes a list of controls, a property bar to easily edit field properties, a dashboard where you can design your forms, and the attributes for form configuration. Also, the plugin comes with multiple predefined layouts to change the forms’ appearance. If there are not enough predefined layouts for your project, there is a style editor to customize the form’s design.

\n

The “Calculated Fields Form” plugin includes integration with popular page builders:

\n
    \n
  • Classic WordPress Editor
  • \n
  • Gutenberg Editor
  • \n
  • Elementor
  • \n
  • Page Builder by SiteOrigin
  • \n
  • Beaver Builder
  • \n
  • WPBakery Page Builder
  • \n
  • DIVI Builder
  • \n
\n

For other editors, it is possible to insert the form into the pages via its shortcode. Each web form has an associated shortcode that allows you to insert it wherever you want.

\n

Features

\n

Main features:

\n
    \n
  • Visual form builder with an intuitive and interactive interface.
  • \n
  • Includes general-purpose controls such as radio buttons, checkboxes, menu lists, date fields, slider controls, numeric fields, text currency fields, etc.
  • \n
  • Includes calculated fields whose values result from operations involving other form fields.
    \nInsert as many calculated fields in the form as you need.
  • \n
  • Contains an advanced formula editor associated with the calculated fields with syntax highlighting and error detection.
  • \n
  • Features many operations modules: mathematical operations, operations with dates, financial operations, distance operations, text management, operations for calling remote services, etc. The calculated fields can identify numbers and prices within the values of the fields.
  • \n
  • Distributed with several predefined forms that you can use as a starting point for your projects.
  • \n
  • Includes several design templates.
  • \n
  • Supports multi-pages forms by inserting page break controls between fields belonging to different pages.
  • \n
  • Allows the grouping of fields inside container controls (Div and Fieldset).
  • \n
  • Possible to define dependency rules between fields in the form, which is very useful in the design of wizards.
  • \n
\n

Other features:

\n
    \n
  • From the plugin configuration page, it is possible to duplicate a form by pressing the “Clone” button associated with it. By cloning a form, you can reuse the work already done.
  • \n
  • Includes a troubleshooting and optimization area.
  • \n
  • Allows you to disable forms in the indexing process to improve the speed of the website.
  • \n
  • Includes a version control in the forms to recover previous versions.
  • \n
\n

Predefined forms:

\n

“Calculated Fields Form” is distributed with five predefined sample forms.

\n
    \n
  1. Simple Calculator Operations
  2. \n
  3. Calculation with Dates (bookings with check-in and check-out dates)
  4. \n
  5. Ideal Weight Calculator
  6. \n
  7. Pregnancy Calculator
  8. \n
  9. Lease Calculator
  10. \n
\n

You can clone a sample form to implement your project, or create a new form from scratch.

\n
\n

Calculated Fields Form Commercial
\n The free version of the “Calculated Fields Form” plugin includes only basic functionality. Other distributions (Professional, Developer, and Platinum) are available with advanced functionalities, such as sending notification emails, integration with payment gateways and external services, controls for database’s connection (and connection to other data sources), complex operations, and many other features.

\n
\n

Features of the Profesional version:

\n
    \n
  • Includes all the features of the free version of the plugin.
  • \n
  • Submit the data collected by the forms and store it on the website for review.
  • \n
  • Send notification emails with the data collected by the form, as well as confirmation emails to the users.
  • \n
  • Integrate the form with PayPal and calculate the amount to be charged through a calculated field.
    \nPayments allow SCA (strong customer authentication), compatible with the new payment services (PSD 2) – Directive (EU).
  • \n
  • Export and import forms between different WordPress sites.
  • \n
  • Different mechanisms to protect forms, such as captcha, WordPress nonces, and honeypot fields.
  • \n
  • Associate “Thank You” page with the form, where you can show a summary of the form’s submission.
  • \n
  • Dashboard widget to show the last week’s submissions.
  • \n
  • Cache the forms to increase the rendering speed.
  • \n
  • Export the information submitted by the forms to a CSV file and use it with third-party tools such as Excel, OpenOffice, LibreOffice, or any other spreadsheet editor.
  • \n
\n

Features of the Developer version:

\n\n

Includes add-ons to extend the form features and make use of third-party plugins and external services

\n
    \n
  • Server-Side Equations add-on: define server-side equations.
  • \n
  • Verification Code add-on: verifies the user’s email by sending him a verification code and blocking the form’s submission until the verification code is entered.
  • \n
  • WooCommerce add-on: integrate forms with WooCommerce products and calculate their prices, dimensions, and weight at the runtime.
  • \n
  • SalesForce add-on: integrate the form with the SalesForce service.
  • \n
  • WebHooks add-on: send the information collected by the form to a WebHook URL to open countless possibilities. By connecting your form to services such as Zapier, Microsoft Flow, IFTTT, Workato, and others, you can connect to hundreds of third-party services (e.g. Zoho CRM, Dropbox, Mailchimp, Google Drive, Facebook, Twitter, etc.).
  • \n
  • User Permissions add-on: control the forms’ access, as well as allowing users to access and edit their data.
  • \n
  • User Registration Form add-on: build a user registration form that captures the user’s basic information and metadata.
  • \n
  • reCAPTCHA add-on: replace the basic captcha with Google reCAPTCHA to protect the forms.
  • \n
\n

Features of the Platinum version:

\n
    \n
  • Includes all the features of free, Professional, and Developer versions of the plugin.
  • \n
  • Unique Fields Values add-on: verifies that the values entered by users have not been used in previous submissions.
  • \n
  • Easy Digital Downloads add-on: integrate the forms into Easy Digital Downloads products and calculate their prices at the runtime.
  • \n
  • Google Analytics add-on: generate usage reports in “Google Analytics” for the users’ actions.
  • \n
  • PayPal Pro add-on: enable the payer’s credit card details to be entered directly through the website without any redirection to the PayPal website.
  • \n
  • Upload Files add-on: add uploaded files to the media library and extend the file types accepted by WordPress.
  • \n
  • DropBox Integration add-on: copy or move the uploaded files to a DropBox account.
  • \n
  • ip2location add-on: identify the users’ data using the ip2location databases.
  • \n
  • Google Places add-on: transform form fields into autocomplete address fields.
  • \n
  • Autocomplete Places add-on: transform form fields into autocomplete address fields by using the Photon API.
  • \n
  • Signature add-on: convert form fields into “Signature” fields, allowing the users to sign the form with a mouse or touchscreen.
  • \n
  • iCal add-on: send iCal file in the notification emails to import the events into most popular calendars like Outlook and Google Calendar.
  • \n
  • CSV Generator add-on: export the information collected by the form to CSV files and attach these to the notification emails.
  • \n
  • PDF Generator add-on: generate PDF files with the information collected by the forms and attach them to the notification emails.
  • \n
  • WebMerge add-on: integrate the forms with FormStack documents (formerly WebMerge) to generate PDF and Office documents at runtime with the information collected by the web forms.
  • \n
  • PrintFriendly add-on: generate PDF files with the PrintFriendly API and attach the resulting files to the notification emails.
  • \n
  • Mailchimp add-on: add new members to the MailChimp account.
  • \n
  • Mautic add-on: add new contacts (or update existing ones) into the Mautic Service.
  • \n
  • HubSpot add-on: add/update contacts in HubSpot, using the information collected by the form.
  • \n
  • Emma add-on: add new members to the Emma service.
  • \n
  • Twilio add-on: send notification messages (SMS) in the forms’ submissions.
  • \n
  • MailPoet add-on: add new subscribers to MailPoet’s Mailing Lists (MailPoet versions 2 and 3).
  • \n
  • AffiliateWP add-on: integrate the forms with the AffiliateWP plugin.
  • \n
  • Authorize.Net add-on: accept payments via Authorize.Net from the form.
  • \n
  • Stripe add-on: accept payments via the Stripe payment gateway from the form.
  • \n
  • Skrill Payments Integration add-on: integrate with the Skrill Moneybookers payment gateway.
  • \n
  • TargetPay (iDeal) add-on add-on: integrate with iDeal, the popular Dutch payment method.
  • \n
  • Mollie (iDeal) add-on: accept payments via iDeal.
  • \n
  • RedSys / Servired / Sermepa add-on provides: a secure interface for accepting credit card payments from most banks in Spain.
  • \n
  • PayTM add-on: a secure interface for accepting payments with credit cards, debit cards, net banking, wallets, and EMI.
  • \n
  • SagePay add-on: a secure interface for accepting payments via SagePay.
  • \n
  • Sage Payment add-on: a secure interface for accepting payments through a secure SSL checkout system for both bankcard and virtual check transactions.
  • \n
\n

Please keep the plugin updated. Updates contain bug fixes as well as new features. The WordPress directory distributes the updates for the free version of the plugin. But for commercial versions, it would be necessary to register your copy of the plugin. The following link describes the registration process: CLICK HEREThis section mainly contains notes on features of the form builder that are too detailed to include in the main description.

\n

Conditional rules

\n

It is possible to show or hide form fields (dependent fields) based on the options selected in checkbox fields, radio buttons, the options selected in dropdown menus, or the result of calculated fields.

\n

The value of a dependent field is zero when it is hidden/disabled. The plugin excludes the disabled form fields from the submission.

\n

Additional details about the use of dependencies

\n

Predefined values

\n

The predefined values in the fields have two possible uses:

\n

1- To fill the field by default. This makes it easier for the end-user to enter values.

\n

2- Hint of the values to be entered in the field (like “Enter your name”). To use the predefined value as a placeholder, you must tick the “Hide predefined value on click” checkbox. The value will disappear once the user starts filling in the field. The calculated fields’ equations ignore placeholders.

\n

The “User Instructions” attribute

\n

The “User instructions” attribute in the field settings allows you to instruct the user on how to fill in the field. By default, the instructions appear as smaller text on the public website. But they can be configured as tooltips.

\n

Adding CSS layout keywords

\n

The “Add CSS layout keywords” attribute in the fields settings allows you to apply CSS styles to fields. You must only enter the name of the CSS class names, and not their definitions.

\n

You can define the CSS classes via the “Customize Form Design” attribute in the “Form Settings” tab. This attribute contains a CSS editor with syntax highlighting and error checking.

\n

If you want to assign several class names to the field, separate them by space characters.

\n

The plugin includes multiple predefined classes that you can assign to the form fields.

\n

More information about the form’s design can be found by reading the following post in the plugin’s blog:

\n

Customizing the form’s design

\n

The classes listed below allow you to align two, three, or four fields on the same line:

\n
column2\ncolumn3\ncolumn4\n
\n

For example, if you want to put two fields on the same line, give both fields the class name “column2”.

\n

There are other variants for displaying several fields on the same line, such as container fields (Div or Fieldset). Container fields allow you to select the number of columns in your configuration. The following post describes all the alternatives for positioning the fields in the form:

\n

Formatting the form (distributing the fields in columns)

\n

Multi-page form

\n

To create multi-page forms, you must insert “Page break” controls between fields belonging to different pages.

\n

When the user presses the “Next Page” button, the plugin validates the fields in the current form. If there is any validation error (such as an unfilled required field), the plugin stops the “Next page” action.

\n

Hidden calculated fields

\n

Calculated fields include a checkbox in the configuration that allows them to be hidden from the public website. This feature is essential in those fields that are used to calculate intermediate values or when we want to show the results only in emails or thank you pages.

\n

Equation / Formula format for calculated fields

\n

Below, some possible formulas are included as examples, but the possibilities are endless.

\n
    \n
  • \n

    With simple mathematical operations:

    \n
    fieldname1 + fieldname2\n\nfieldname1 * fieldname2\n\nfieldname1 / fieldname2\n\nfieldname1 - fieldname2\n\nfieldname1 - fieldname2\n
    \n
  • \n
  • \n

    With mathematical operations involving multiple fields and grouped fields:

    \n
    fieldname1 * (fieldname2 + fieldname3)\n
    \n
  • \n
  • \n

    With rounding operations. Round the result to two decimal places:

    \n
    PREC(fieldname2 / fieldname3, 2)\n
    \n
  • \n
  • \n

    There are infinite number of formulas that can be created using complex structures. For example, the following formula includes conditional statements:

    \n
    (function () {\nif (100 < fieldname3) return fieldname1 + fieldname2;\nif (fieldname3 <= 100) return fieldname1 * fieldname2;\n})();\n
    \n
  • \n
  • \n

    For complex formulas/equations you must use the function format with return statement to return the result to the calculated field:

    \n
     (function () {\n    var result = 0;\n    /* Your code here */\n    return result;\n}) ();\n
    \n
  • \n
\n

Operations and operators to use in equations/formulas

\n

One of the “Calculated Fields Form” strengths is the ability to use any valid JavaScript code to implement the equations/formulas.

\n

However, the plugin includes a wide variety of operations and operators to simplify the development process.

\n

Mathematical Operations and Operators

\n

Conditional Operations

\n

Field Handling Operations

\n

Operations for interacting with external services

\n

Operations for handling URLs and query strings

\n

In addition to the operation modules listed above, the Developer and Platinum versions of the plugin include additional modules:

\n

Date Time Operations

\n

Financial Operations

\n

Distance and Travel Time Operations

\n

Operations to generate charts

\n

Controls available in the form generator of the “Calculated Fields Form”

\n

The complete list of controls is available from this link: CLICK HERE

\n

Create JavaScript variables from parameters received by “GET” or “POST”, “SESSION” variables, or “COOKIES” to use in the equations

\n

The plugin includes the shortcode [CP_CALCULATED_FIELDS_VAR] to generate JavaScript variables from parameters received by “GET” or “POST”, “SESSION” variables, or “COOKIES”:

\n
[CP_CALCULATED_FIELDS_VAR name=\"...\"]\n
\n

In the shortcode, you must replace the “…” symbols with the name of the parameter or variable. It will be the same name for the JavaScript variable.

\n

For example:

\n
[CP_CALCULATED_FIELDS_VAR name=\"varname\"]\n
\n

You can use the variables generated through the shortcode [CP_CALCULATED_FIELDS_VAR] in the formulas of the calculated fields: fieldname1*varname

\n

The complete list of parameters accepted by the variables shortcode is available at the following link: CLICK HERE

\n

Tips for calculating prices

\n

One of the most frequent uses of our plugin is for price calculation. When displaying the price of a product, you may want to split the form into two pages. The first page would request the information needed to calculate the price, and the second page would include the calculated field with the final price. Also, you could use the “Instruct. Text” fields to indicate the terms, conditions, and validity period of the offer.

\n

Note that you can make the “Instruct. Text” fields dependent on the calculated value. This allows you to vary the text displayed to the user depending on the calculated price, as the terms, conditions, or offers often depend on the transaction amount.

\n

Add-ons

\n

The add-ons are only distributed with the Developer and Platinum versions of the plugin.

\n

The plugin lists the add ons in the “Add-ons area” of the settings page. To enable the add-ons, you must tick their corresponding checkbox and press the “Activate/Deactivate Add-ons” button.

\n

Server-Side Equations add-on – included in the Developer and Platinum versions of the plugin

\n

Define equations with PHP code on the server-side. The calculated fields call the server-side equations via AJAX.

\n

CLICK HERE for additional information

\n

Verification Code add-on – included in the Developer and Platinum versions of the plugin

\n

The “Verification Code” add-on allows verifying the users’ emails by sending a verification code and blocking the form’s submission until a valid code is entered.

\n

CLICK HERE for additional information

\n

Unique Fields Values add-on – included in the Platinum version of the plugin

\n

The “Unique Fields Values” add-on verifies that the values entered by users have not been used in previous submissions. It allows to enter simple and complex verification rules (one or multiple fields separated by comma symbols).

\n

CLICK HERE for additional information

\n

WooCommerce add-on – included in the Developer and Platinum versions of the plugin

\n

Integrate the forms created by the “Calculated Fields Form” with WooCommerce products and calculate their prices, weights, dimensions, and more at the runtime.

\n

CLICK HERE for additional information

\n

Easy Digital Downloads add-on – included in the Platinum version of the plugin

\n

Integrate forms created by the “Calculated Fields Form” with the Easy Digital Downloads products, and calculate their price dynamically at the runtime.

\n

CLICK HERE for additional information

\n

SalesForce add-on – included in the Developer and Platinum versions of the plugin

\n

Add new leads to a SalesForce account using the data collected by the forms.

\n

CLICK HERE for additional information

\n

WebHook add-on – included in the Developer and Platinum versions of the plugin

\n

Post the information collected by the forms to WebHook URLs.

\n

Through connecting the forms created by the plugin with services like Zapier, Microsoft Flow, Workato, or IFTTT (and many others), you will have access to hundreds of third-party services, like Zoho CRM, Dropbox, Mailchimp, Evernote, Google Drive, Facebook, Twitter, and more than 300 services https://zapier.com/zapbook/apps/, https://flow.microsoft.com/, https://ifttt.com/discover

\n

CLICK HERE for additional information

\n

User Permissions add-on – included in the Developer and Platinum versions of the plugin

\n

Control access to forms. Access can be restricted to registered users, users with certain roles, or to specific users.

\n

The add-on adds a new shortcode to the plugin to list the data submitted by the logged-in user (it is possible to insert the new shortcode into the user’s profile) and assign user permissions to edit their information or delete an entry.

\n

Limit the number of submissions (e.g. one submission per form/user).

\n

CLICK HERE for additional information

\n

User Registration Form add-on – included in the Developer and Platinum versions of the plugin

\n

Build user registration forms. The form can collect basic user information and metadata required by other plugins.

\n

CLICK HERE for additional information

\n

reCAPTCHA add-on – included in the Developer and Platinum versions of the plugin

\n

Protect forms using Google reCAPTCHA instead of the basic captcha distributed with the plugin, as reCAPTCHA is more visual and intuitive than traditional captchas.

\n

CLICK HERE for additional information

\n

Google Analytics add-on – included in the Platinum version of the plugin

\n

Generate usage reports in “Google Analytics” for the users’ actions.

\n

CLICK HERE for additional information

\n

PayPal Pro add-on – included in the Platinum version of the plugin

\n

Allow the user to enter their credit card details directly on your website without redirecting them to the PayPal website. Once the user has filled the form fields and clicked the submit button, the payment is processed and the posted data (excluding the credit card information) is stored in the WordPress database.

\n

CLICK HERE for additional information

\n

Upload Files add-on – included in the Platinum version of the plugin

\n

Every commercial version of the plugin includes the “Upload File” control to upload files from the form. However, the “Upload Files” add-on allows the uploaded files to be added to the Media Library and be accessed from the pages and posts of the website.

\n

WordPress restricts the file types that can be uploaded. The “Uploads Files” add-on allows the list of accepted files to be extended.

\n

CLICK HERE for additional information

\n

DropBox Integration add-on – included in the Platinum version of the plugin

\n

Copy or move files uploaded through the forms to a DropBox account.

\n

CLICK HERE for additional information

\n

ip2location add-on – included in the Platinum version of the plugin

\n

Use the ip2location databases to identify additional user information based on their IP. Address such as country, city, coordinates, weather station, time zone, ZIP code, etc.

\n

CLICK HERE for additional information

\n

Google Places add-on – included in the Platinum version of the plugin

\n

Transform fields into autocomplete address fields calling the Google Places API.

\n

CLICK HERE for additional information

\n

Autocomplete Places add-on – included in the Platinum version of the plugin

\n

Transform fields into autocomplete address fields by calling the Photon API.

\n

CLICK HERE for additional information

\n

Signature add-on – included in the Platinum version of the plugin

\n

Transform fields into “Signature” fields to allow the users to sign the form with their mouse or touchscreens.

\n

CLICK HERE for additional information

\n

iCal add-on – included in the Platinum version of the plugin

\n

Send the users iCal files attached to the confirmation emails to import events into the most popular calendars like Outlook and Google Calendar.

\n

CLICK HERE for additional information

\n

CSV Generator add-on – included in the Platinum version of the plugin

\n

Export the information collected by the form to CSV files and attach them to the notification emails.

\n

CLICK HERE for additional information

\n

PDF Generator add-on – included in the Platinum version of the plugin

\n

An experimental add-on that generates PDF files with the information collected by the forms and attaches them to the notification emails.

\n

CLICK HERE for additional information

\n

WebMerge add-on – included in the Platinum version of the plugin

\n

Integrate the forms with the FormStack Documents service (formerly WebMerge) to generate PDF and Office documents with the information collected from the form.

\n

CLICK HERE for additional information

\n

Integrate the form with the Silverpop service (now: IBM Watson Campaign Automation) CLICK HERE for additional information

\n

PrintFriendly add-on – included in the Platinum version of the plugin

\n

Send the information collected by the forms to PrintFriendly and attach the resulting PDF files to the notification emails.

\n

CLICK HERE for additional information

\n

Mailchimp add-on – included in the Platinum version of the plugin

\n

Add new members to the MailChimp lists with the information collected by the form.

\n

CLICK HERE for additional information

\n

Mautic add-on – included in the Platinum version of the plugin

\n

Add/update contacts in the Mautic service with information collected by the forms.

\n

CLICK HERE for additional information

\n

HubSpot add-on – included in the Platinum version of the plugin

\n

Add/update HubSpot contacts with information collected by the forms.

\n

CLICK HERE for additional information

\n

Emma add-on – included in the Platinum version of the plugin

\n

Connect the forms to the Emma service to add new members to Emma groups.

\n

CLICK HERE for additional information

\n

Twilio add-on – included in the Platinum version of the plugin

\n

Send notification messages (SMS) through Twilio in the form’s submissions.

\n

CLICK HERE for additional information

\n

MailPoet add-on – included in the Platinum version of the plugin

\n

Adds subscribers to MailPoet Mailing Lists (MailPoet versions 2 and 3).

\n

CLICK HERE for additional information

\n

AffiliateWP add-on – included in the Platinum version of the plugin

\n

Integrate the forms with the “AffiliateWP” plugin.

\n

CLICK HERE for additional information

\n

Authorize.Net add-on – included in the Platinum version of the plugin

\n

The Authorize.net Server Integration Method (Authorize.net SIM) is a hosted payment processing solution that handles all of the steps in processing a transaction.

\n

CLICK HERE for additional information

\n

Stripe add-on – included in the Platinum version of the plugin

\n

The Stripe Payments add-on (www.stripe.com) provides a way to accept all major cards from customers around the world.

\n

CLICK HERE for additional information

\n

Skrill Payments Integration add-on – included in the Platinum version of the plugin

\n

An interface for accepting payments through secure pages.

\n

You can accept cards, more than 20 local payment methods, and over 80 direct bank transfer connections with a single integration.

\n

CLICK HERE for additional information

\n

TargetPay (iDeal) add-on – included in the Platinum version of the plugin

\n

Integrate with iDeal, the most popular Dutch payment method. The integration is made via TargetPay: https://www.targetpay.com/info/ideal?setlang=en

\n

CLICK HERE for additional information

\n

Mollie (iDeal) add-on – included in the Platinum version of the plugin

\n

Integrate with iDeal, the popular Dutch payment method.

\n

CLICK HERE for additional information

\n

RedSys / Servired / Sermepa add-on – included in the Platinum version of the plugin

\n

A secure interface for accepting credit card payments through most banks in Spain (Sabadell, Banco Popular, BBVA, Santander, Bankia-Caixa, Bankinter, etc.)

\n

CLICK HERE for additional information

\n

PayTM add-on – included in the Platinum version of the plugin

\n

A secure interface for accepting payments through credit cards, debit cards, net banking, wallets, and EMI. With over 100 million PayTM users in India, your customers will appreciate the option to pay with their trusted PayTM Wallet.

\n

CLICK HERE for additional information

\n

SagePay add-on – included in the Platinum version of the plugin

\n

A secure interface for accepting payments through SagePay.

\n

CLICK HERE for additional information

\n

Sage Payment add-on – included in the Platinum version of the plugin

\n

An interface for accepting payments through a secure SSL-checkout system for both bank cards and virtual check transactions. All authorized and approved transactions will be delivered to your current bank card and/or virtual check batches, viewable within the Virtual Terminal for order processing and settlement.

\n

CLICK HERE for additional information

\n","download_link":"https://downloads.wordpress.org/plugin/calculated-fields-form.zip","tags":{"calculator":"calculator","contact-form":"contact form","form":"form","form-builder":"form builder","quote-form":"quote form"},"donate_link":"http://cff.dwbooster.com","icons":{"1x":"https://ps.w.org/calculated-fields-form/assets/icon-128x128.jpg?rev=1734377","2x":"https://ps.w.org/calculated-fields-form/assets/icon-256x256.jpg?rev=1734377"},"wporg":true},{"name":"All in One SEO – Best WordPress SEO Plugin – Easily Improve SEO Rankings & Increase Traffic","slug":"all-in-one-seo-pack","version":"4.1.4.4","author":"All in One SEO Team","author_profile":"https://profiles.wordpress.org/smub","requires":"4.9","tested":"5.8.1","requires_php":"5.4","rating":90,"ratings":{"1":165,"2":22,"3":15,"4":60,"5":1543},"num_ratings":1805,"support_threads":136,"support_threads_resolved":131,"active_installs":2000000,"downloaded":85806647,"last_updated":"2021-09-22 3:46pm GMT","added":"2007-03-30","homepage":"https://aioseo.com/","short_description":"The original WordPress SEO plugin. Improve your WordPress SEO rankings and traffic with our comprehensive SEO tools and smart SEO optimizations.","description":"

AIOSEO – The Best WordPress SEO Plugin & Toolkit

\n

All in One SEO for WordPress is the original WordPress SEO plugin started in 2007. Over 2 million smart website owners use AIOSEO to properly setup WordPress SEO, so their websites can rank higher in search engines.

\n

We believe you shouldn’t have to hire an SEO expert or developer to properly setup WordPress SEO. That’s why we built AIOSEO as the most comprehensive WordPress SEO plugin and marketing toolkit, so you can improve your website’s SEO rankings and uncover new SEO growth opportunities in less than 10 minutes.

\n

At All in One SEO (AIOSEO), user experience is our #1 priority. From website SEO setup to ongoing SEO optimization, our team of SEO experts have created easy to follow SEO workflows that will help you outrank your competitors in search results. This is why many industry leaders award AIOSEO as the most beginner friendly WordPress SEO plugin that’s both EASY and POWERFUL!

\n

AIOSEO’s WordPress SEO plugin features are highly optimized for Google and other popular search engine algorithm because we follow the most up to date SEO standards and SEO best practices. We can honestly say that AIOSEO is the best WordPress SEO plugin in the world.

\n
\n

AIOSEO Pro
\n This plugin is the lite version of the All in One WordPress SEO Pro plugin that comes with all the SEO features you will ever need to rank higher in search engines including smart SEO schema markup, advanced SEO modules, powerful SEO sitemap suite, local SEO module, Google AMP SEO, WooCommerce SEO, and tons more. Click here to purchase the best premium WordPress SEO plugin now!

\n
\n

We took the pain out of optimizing WordPress SEO and made it easy. Here’s why smart business owners, SEO experts, marketers, and developers love AIOSEO, and you will too!

\n

\n

Properly Setup WordPress SEO (without Hiring an Expert)

\n

AIOSEO makes it easy to setup WordPress SEO, the RIGHT WAY. Our smart WordPress SEO setup wizard helps you optimize your website’s SEO settings based on your unique industry needs.

\n

In less than 10 minutes, you will be able to setup all the advanced WordPress SEO features like XML sitemaps, optimized search appearance, SEO meta title, SEO meta description, SEO keywords, Open Graph SEO Knowledge Panel information, social media integration, SEO search console / webmaster tool connections, local SEO, schema markup for SEO, and more.

\n

But don’t just take our word. See what another website owner like yourself is saying:

\n
\n

Swift, honest, full control. After all these years and having used almost every WP SEO plugin I’m amazed by AIOSEO’s depth, simplicity and fast workflow ❤️
\n @aaronbol

\n
\n

Optimize Your Pages for Higher SEO Rankings with TruSEO Analysis

\n

Creating SEO optimized content used to be hard. Why?

\n

Because most business owners aren’t SEO experts.

\n

That’s why we created the TruSEO score. This gives you a more in-depth SEO optimization analysis and an actionable SEO checklist, so you can easily optimize your website pages for any keyword to get higher SEO rankings and maximum traffic.

\n

Our SEO content analysis tool is enabled by default in both the Gutenberg block editor and Classic Editor, so you can quickly optimize your blog posts and pages for your SEO keywords to get higher SEO rankings.

\n

Our SEO readability analysis gives you further insights on how to improve your content for maximum SEO benefits.

\n

The best part about TruSEO analysis is that you can use it to optimize your posts / pages for unlimited SEO keywords.

\n

Seamless SEO Integrations with Webmaster Tools & Social Media

\n

All in One SEO for WordPress offers seamless integration with popular social media platforms like Facebook, Twitter, Pinterest, YouTube, LinkedIn, Instagram, and more.

\n

This ensures that your website preview is optimized for both search engines (SEO), and social media networks.

\n

AIOSEO also makes it easy to connect your website with Google Search Console, Bing webmaster tools, Yandex webmaster tools, Baidu webmaster tools, Google Analytics, and all other SEO webmaster tools.

\n

This helps you easily measure your SEO results and progress.

\n
\n

I’m a professional SEO and used many tools and extensions. Regarding simplicity, individuality and configurability All in One SEO Pro is by far the best SEO plugin out there for WordPress.
\n Joel Steinmann

\n
\n

Smart XML Sitemaps and Rich Snippets (SEO Schema Markup)

\n

Proper website SEO markup plays an important role in improving SEO rankings. That’s why smart SEO experts use AIOSEO for on-page SEO optimization.

\n

Aside from the comprehensive WordPress XML sitemap feature, we also offer News SEO sitemap and Video SEO sitemap to help you improve your website’s SEO ranking and get more traffic.

\n

AIOSEO comes with built-in smart SEO schema markup feature to help you get more traffic through SEO rich snippets, Google featured snippets, breadcrumb site links in SEO, and image SEO search results.

\n
\n

The best SEO plugin. All in One SEO is the best SEO Plugin. I personally find it better than Yoast. This plugin offers so much freedom in configuration.
\n hanapupu

\n
\n

Local SEO, WooCommerce SEO, Google AMP, and More

\n

All in One SEO is the most comprehensive WordPress SEO plugin / marketing toolkit in the world.

\n

We offer complete support for Google Knowledge Graph and Schema.org markup for local businesses. You can add multiple business locations, opening hours, contact info (business email, business phone, business address, etc) and more with our Local SEO module.

\n

AIOSEO also makes WooCommerce SEO easy. With our SEO plugin, you can optimize your product pages and product categories for better SEO rankings (with just a few clicks).

\n

Since AIOSEO is the original WordPress SEO plugin, we have SEO integrations with all popular WordPress plugins such as membership plugin SEO, landing page plugin SEO, Semrush SEO integration, etc. AIOSEO also offers Google AMP integration and works seamlessly with all popular speed & caching plugins.

\n
\n

Best SEO Plugin for WordPress. We continue to use All in One SEO on all our WordPress sites and Clients sites, and we recommend it too all other clients.
\n MySEOGuy

\n
\n

Since SEO is an essential feature, AIOSEO is a must have plugin for every website!

\n

SEO Redirection Manager and 404 Monitoring

\n

AIOSEO Redirection manager helps you set up proper 301 redirects to improve your SEO rankings.

\n

We also support other advanced SEO redirects including 302 redirects, 307 redirects, 410 redirection, 404 redirects, REGEX redirects for advanced SEO needs, and more.

\n

We have an automatic 404 error monitor that helps you track and redirect 404 errors, so you can prevent losing SEO rankings.

\n

Since redirect speed is important for SEO, we built in both Apache / NGINX server level redirects to help you get maximum SEO benefit.

\n

Full All in One SEO Feature List

\n
    \n
  • WordPress SEO Setup Wizard – Properly setup WordPress SEO in less than 10 minutes.
  • \n
  • On-page SEO Optimization – optimize SEO code markup (without hiring a developer)
  • \n
  • TruSEO score – detailed content & readability analysis to help you optimize your pages for higher SEO rankings.
  • \n
  • Smart Meta Title & Description – Automatic SEO generation, dynamic SEO smart tags, and more.
  • \n
  • Unlimited SEO Keywords – our SEO content analyzer helps you optimize your pages for unlimited SEO keywords.
  • \n
  • XML Sitemap – Advanced XML sitemaps to boost your SEO rankings.
  • \n
  • Video SEO Sitemap – Improve your SEO rankings with video sitemap.
  • \n
  • News SEO Sitemap – Increase your SEO traffic with Google News sitemap.
  • \n
  • RSS SEO Sitemap – Improve SEO crawl frequency with RSS sitemap.
  • \n
  • Automatic Image SEO – Our image SEO module helps your images rank higher.
  • \n
  • Local Business SEO – Improve your local business SEO presence with our local SEO module.
  • \n
  • Multiple location SEO – Great for SEO optimization for businesses with multiple local store locations.
  • \n
  • Rich Snippets Schema – Get better click through rate (CTR) and increase SEO rankings with rich snippets schema.
  • \n
  • SEO Knowledge Graph Support – Improve your website’s search appearance with SEO Knowledge panel.
  • \n
  • Advanced SEO Schema – Easily add advanced SEO schema markups like FAQ schema, product schema, recipe schema (food blogger SEO), software application schema markup (SaaS SEO), online course schema (for course SEO), and more.
  • \n
  • Sitelinks Search Box – Helps you get a search box in Google SEO rankings.
  • \n
  • Google Site Links – Our SEO markup can help you get sitelinks for your brand.
  • \n
  • Robots.txt Editor – Control what SEO robots can see with our easy SEO robots.txt editor.
  • \n
  • SEO Audit Checklist – Improve your website’s SEO ranking with our SEO audit checklist.
  • \n
  • Google Search Console – Connect your WordPress site with Google webmaster tools to see additional SEO insights.
  • \n
  • Search Engine Verification Tools – Easily integrate with other popular SEO webmaster tools to improve search visibility.
  • \n
  • Google AMP SEO – Improve your mobile SEO rankings with Google AMP SEO.
  • \n
  • Advanced SEO Canonical URLs – Prevent duplicate content in SEO with automatic canonical URLs and boost your SEO rankings.
  • \n
  • Advanced Robots Meta SEO Settings – granular controls for no index, no follow, no archive, no snippet, max snippet, max video, and more.
  • \n
  • RSS Content for SEO – Stop content theft from hurting your SEO rankings with our RSS Content tool.
  • \n
  • User Access Control – Control who can manage your SEO settings with our advanced SEO access control.
  • \n
  • Competitor Site SEO Analysis – Use our competitor SEO analysis to outrank them by improving your website’s SEO optimization.
  • \n
  • Smart Breadcrumbs – Add Breadcrumb navigation to improve user experience and boost your SEO rankings. Comes with full SEO JSON+LD support.
  • \n
  • Smart SEO Redirects – Setup proper 301 redirects to improve your SEO rankings.
  • \n
  • 404 Error Monitor for SEO – Monitor website 404 errors and set up proper SEO redirects to prevent losing SEO rankings.
  • \n
  • Title and Nofollow for SEO – We make it easy for you to add title and nofollow to external links to improve SEO rankings.
  • \n
\n

WordPress SEO Integrations

\n
    \n
  • WooCommerce SEO – optimize your WooCommerce product pages and improve your WooCommerce store’s SEO rankings.
  • \n
  • MemberPress SEO – optimize your MemberPress course pages and improve your membership site’s SEO rankings.
  • \n
  • Elementor SEO – add SEO optimization for your Elementor landing pages.
  • \n
  • LearnDash SEO – SEO optimization for LearnDash courses.
  • \n
  • Facebook SEO – SEO optimize your website preview on Facebook.
  • \n
  • Twitter SEO – SEO optimize your website preview on Twitter.
  • \n
  • Pinterest SEO – SEO optimize your website preview on Pinterest.
  • \n
  • Open Graph Support – improve your SEO with open graph meta data.
  • \n
  • Knowledge Panel SEO – improve website SEO apperance by adding social media profile links for Facebook, Twitter, Wikpedia, Instagram, LinkedIn, Yelp, YouTube, and more.
  • \n
  • SEO Webmaster Tool Content – Connect your WordPress site with various webmaster tools to improve SEO rankings.
  • \n
  • Semrush SEO integration – See additional SEO keywords and relevant SEO keyphrases with our Semrush SEO integration.
  • \n
\n

WordPress SEO Plugin Importer

\n
    \n
  • Yoast SEO Importer – easily switch from Yoast SEO to AIOSEO with our full SEO migration wizard that includes SEO keywords, SEO title, meta description, XML sitemaps and more.
  • \n
  • Yoast SEO Premium Importer – easily import Yoast SEO premium settings including SEO redirects to AIOSEO with our full SEO migration wizard.
  • \n
  • RankMath SEO Importer – easily switch from RankMath SEO to AIOSEO with our SEO migration wizard.
  • \n
  • SEO Settings Backup – create a backup of your AIOSEO settings.
  • \n
  • Advanced SEO Import / Export – easily import / export AIOSEO settings from one site to another.
  • \n
  • Redirection Importer – import your SEO redirects from the Redirection plugin with our SEO migration wizard.
  • \n
  • Simple 301 Redirects Importer – import your SEO redirects from Simple 301 redirets with our SEO migration wizard.
  • \n
  • Safe Redirection Manager – easily import SEO redirects from safe redirect manager with our SEO migration wizard.
  • \n
\n

After reading this feature list, you can probably imagine why AIOSEO is the best WordPress SEO plugin in the market.

\n

Give AIOSEO a try.

\n

Want to unlock more SEO features? Upgrade to AIOSEO Pro.

\n

Credits

\n

This plugin is created by Benjamin Rojas and Syed Balkhi.

\n

Branding Guideline

\n

AIOSEO® is a registered trademark of Semper Plugins LLC. When writing about the WordPress SEO plugin by AIOSEO, please use the following format.

\n
    \n
  • AIOSEO (correct)
  • \n
  • All in One SEO (correct)
  • \n
  • AIO SEO (incorrect)
  • \n
  • All in 1 SEO (incorrect)
  • \n
  • AISEO (incorrect)
  • \n
\n

What’s Next

\n

If you like our WordPress SEO plugin, then consider checking out our other projects:

\n
    \n
  • OptinMonster – Get More Email Subscribers with the most popular conversion optimization plugin for WordPress.
  • \n
  • WPForms – #1 drag & drop online form builder for WordPress.
  • \n
  • MonsterInsights – See the Stats that Matter and Grow Your Business with Confidence. Best Google Analytics Plugin for WordPress.
  • \n
  • SeedProd – Create beautiful landing pages with our powerful drag & drop landing page builder.
  • \n
  • WP Mail SMTP – Improve email deliverability for your contact form with the most popular SMTP plugin for WordPress.
  • \n
  • RafflePress – Best WordPress giveaway and contest plugin.
  • \n
  • Smash Balloon – #1 social feeds plugin for WordPress.
  • \n
  • SearchWP – advanced WordPress search plugin.
  • \n
  • PushEngage – best web push notification plugin.
  • \n
\n

Visit WPBeginner to learn from our WordPress Tutorials and find out about other best WordPress plugins.

\n","download_link":"https://downloads.wordpress.org/plugin/all-in-one-seo-pack.4.1.4.4.zip","tags":{"google-search-console":"google search console","meta-description":"meta description","schema":"schema","seo":"seo","xml-sitemap":"xml sitemap"},"donate_link":"","icons":{"1x":"https://ps.w.org/all-in-one-seo-pack/assets/icon.svg?rev=2443290","2x":"https://ps.w.org/all-in-one-seo-pack/assets/icon-256x256.png?rev=2443290","svg":"https://ps.w.org/all-in-one-seo-pack/assets/icon.svg?rev=2443290"},"wporg":true},{"name":"Weglot Translate – Translate your WordPress website and go multilingual","slug":"weglot","version":"3.4","author":"Weglot Translate team","author_profile":"https://profiles.wordpress.org/remyb92","requires":"4.5","tested":"5.8.1","requires_php":"5.6","rating":96,"ratings":{"1":40,"2":7,"3":6,"4":27,"5":1219},"num_ratings":1299,"support_threads":6,"support_threads_resolved":6,"active_installs":40000,"downloaded":1233052,"last_updated":"2021-09-24 3:41pm GMT","added":"2015-09-27","homepage":"http://wordpress.org/plugins/weglot/","short_description":"Translate your WordPress website in 110+ languages within minutes with Weglot Translate, without any coding.","description":"

Weglot Translate is the leading WordPress translation plugin, trusted by 60,000+ users worldwide. Translate your WordPress website into 110+ languages and go multilingual within minutes, no coding required.

\n

Increase visibility and boost conversions with ease by adding multilingual functionality. Weglot Translate is fully optimized for multilingual SEO, with every translated page automatically indexed by Google. Say hello in multiple languages to millions of new visitors.

\n

Make your website multilingual in minutes with a free trial. Visit https://weglot.com/ to learn more!

\n

How Weglot Translate works

\n\n

Why Weglot Translate

\n

It’s easy to install: Weglot Translate is quick to set up to have a multilingual WordPress website ready, instantly. Reach out to millions of new visitors worldwide with a few clicks, without any coding.

\n

It’s built for maximum compatibility: Weglot Translate is fully compatible with all platforms, WordPress themes, and plugins. From WooCommerce product descriptions to Elementor order forms, everything is built with the creation of a successful multilingual website in mind: easily translate all your content into the languages of your choice. This way you can focus on your content, not the technical details.

\n

It’s optimized for SEO: Weglot Translate follows Google’s best practices for multilingual website translation, serving all translated web pages with clean source code. Google will automatically index every translated page with dedicated URLs.

\n

It’s easy to set and forget: Weglot Translate automatically detects all your website content for easy translation. No more time-consuming manual duplication of every single line of content to get a multilingual website. All translations are updated in real-time, so you don’t need to worry about maintenance and any newly added content is automatically translated.

\n

It takes translation seriously: Weglot Translate gives you an edge on your translation tasks with the first layer of automatic multilingual translation provided by the best machine learning providers on the market (DeepL, Google, Microsoft, and Yandex). You can also edit the translations and collaborate with your team to work on multilingual translations together, directly within Weglot.

\n

It partners with the pros: Weglot Translate lets you order from vetted professional translators directly inside your Weglot dashboard. Set translation quality the way you want it to be, with Weglot Translate.

\n

“Within a week of translating our site to English with Weglot, international sales doubled, by the following month – they had quadrupled.”
\nClara Champion – Director of Digital and E-Commerce, Jimmy Fairly
\nRead the case study

\n

Multilingual functionality like no other

\n

Increase visibility: All translated pages are automatically indexed following Google’s best practices with dedicated URLs. Get new traffic with your multilingual website.

\n

Reduce bounce rate: Redirect visitors automatically to serve them in the language of their choice, based on their browser settings.

\n

Enhance user experience: From the landing page to the email confirmation, get all your key conversion steps translated in your customers’ language. You can even add different images and videos for various languages. Useful for images with text, Weglot Translate makes it easy to display “translated” images in your translated versions. Media localization is an essential aspect of any multilingual project and Weglot Translate makes it simple to do so.

\n

“We really loved the localization features provided by Weglot, such as the ability to translate images and other types of media depending on the language the visitor is viewing the site in.”
\nKim Martin – Senior Communications and Marketing Officer, The Challenge Initiative
\nRead the case study

\n

An all-in-one language translation platform

\n
    \n
  • Manage and edit all of your translations through a user-friendly interface.
  • \n
  • Collaborate with team members and trusted translators to translate together, directly inside Weglot.
  • \n
  • Is it a title? Is it a link? No more guessing the context of the text. Weglot Translate’s in-context editor lets you translate directly within the webpage.
  • \n
  • Make it your own. The multilingual language switcher is fully customizable with multiple design choices.
  • \n
  • Weglot Translate makes it easy to migrate from other WordPress multilingual plugins like Polylang or WPML. Simply deactivate your existing translation plugin and install Weglot Translate.
  • \n
\n

“Weglot removed the pain of having to manage multiple stores for multiple locales. The integration was easy, and the support is incredibly helpful. I highly recommend Weglot to anyone looking for a simple and cost-effective solution to translate their stores!”
\nMike Robertson – Director of Sales Operations, Nikon

\n

With an increase in site visitors and session duration thanks to your multilingual website, you can expect a massive boost to your conversions. See why thousands of e-commerce platforms, SaaS firms, marketplaces, corporate websites, and blogs worldwide love Weglot Translate for its multilingual powers. Try it today for free

\n

Why should you have a multilingual website?

\n

It’s easy to forget all about other languages when setting up your online business! With the resources needed to put together a new website, multilingual capabilities are very commonly ignored, as the process to get multiple translations can get complicated and expensive. But ignoring the importance of being multilingual can be a costly mistake: unlocking the possibility for visitors to read and interact in their own language means you’ll be significantly widening your reach, increasing your chances of business success!

\n

This is why it’s important to think of ways to cater for more languages: multilingual websites naturally rank in more countries and attract more potential customers. Your visitors will also feel like you are significantly more localized by speaking to them in a language they easily understand!

\n

But how about the cost and headache to set up a proper multilingual website? This is where Weglot can make it easy: with a simple way to unlock multilingual capabilities swiftly, your website can go from targeted towards a single language to multilingual in an easy, affordable manner!

\n

Please note that Weglot is using Cloudfront CDN to display flags images to speed up performance around the world.
\nThe use of this CDN and of Weglot service is subject to Weglot terms of service

\n","download_link":"https://downloads.wordpress.org/plugin/weglot.3.4.zip","tags":{"language":"language","localization":"localization","multilingual":"multilingual","translate":"translate","translation":"translation"},"donate_link":"","icons":{"1x":"https://ps.w.org/weglot/assets/icon-128x128.png?rev=2186774","2x":"https://ps.w.org/weglot/assets/icon-256x256.png?rev=2186774"},"wporg":true},{"name":"Rank Math SEO – Best SEO Plugin For WordPress To Increase Your SEO Traffic","slug":"seo-by-rank-math","version":"1.0.73","author":"Rank Math","author_profile":"https://profiles.wordpress.org/rankmath","requires":"5.6","tested":"5.8.1","requires_php":"7.2","rating":98,"ratings":{"1":71,"2":17,"3":20,"4":51,"5":3500},"num_ratings":3659,"support_threads":117,"support_threads_resolved":116,"active_installs":900000,"downloaded":21001578,"last_updated":"2021-09-29 8:57am GMT","added":"2018-11-19","homepage":"https://s.rankmath.com/home","short_description":"Rank Math SEO is the Best WordPress SEO plugin combines the features of many SEO tools in a single package & helps you multiply your SEO traffic.","description":"

Rank Math SEO – Best SEO Plugin for WordPress
\n★★★★★

\n

SEO is the most consistent source of traffic for any website. We created Rank Math SEO, a WordPress SEO plugin, to help every website owner get access to the SEO tools they need to improve their SEO and attract more traffic to their website.

\n

Try The FREE Demo of Rank Math SEO

\n\n

Features | Why Choose Rank Math SEO? | Compare | Screenshots | Benefits

\n

SEO might be the best and most consistent source of traffic for one’s website, but it’s not without its quirks. The constant process of optimizing your posts can sometimes take more time than actually writing the content. If you always feel that you can do more on the SEO front for your website but don’t have the time, then Rank Math SEO is what you’re looking for.

\n

Its host of intelligent features brings top SEO capabilities in your hands that were previously out of reach. The smart automation features give you the power of an entire SEO team with just a few clicks. A well thought out design, powerful features, and years of development by the MyThemeShop squad make Rank Math SEO a game-changing SEO plugin that will level the SEO playing field in your favor to help increase traffic.

\n

Rank Math SEO beats all of its competitors, hands down.

\n

See the features which are exclusive to the Rank Math SEO plugin and understand why Rank Math SEO is possibly the Best SEO Plugin for WordPress.

\n
    \n
  • \n

    Setup Wizard (Easy to follow)
    \nRank Math SEO practically configures itself. Rank Math SEO features a step-by-step installation and configuration wizard that sets up SEO for WordPress perfectly.

    \n
  • \n
  • \n

    Google Schema Markup aka Rich Snippets Integrated
    \nConfiguring Google Schema Markup, aka Rich Snippets, is now easy, thanks to Rank Math SEO. With support for 16+ types of Schema Markups, aka Rich Snippets, including the Rating Schema, you’ll be able to optimize your posts in just a few clicks. It also includes the FAQ Schema aka FAQPage Schema Block & the HowTo aka How To Schema Block in the plugin.

    \n
  • \n
  • \n

    Optimize Unlimited Keywords
    \nUnlike other plugins, Rank Math SEO lets you optimize your posts for unlimited focus keywords per post. 5 by default. Increase by adding this filter.

    \n
  • \n
  • \n

    Google Search Console Integration
    \nRank Math SEO saves you a ton of time by integrating with Google Search Console and displaying important information about your website right inside WordPress.

    \n
  • \n
  • \n

    Google Keyword Ranking
    \nWith Rank Math SEO Plugin, you can track your keyword rankings in Google.

    \n
  • \n
  • \n

    Google Analytics Integration
    \nRank Math SEO offers a one-click solution to install Google Analytics script without pasting anything manually anywhere. You can also exclude the Logged-in users.

    \n
  • \n
  • \n

    Optimal Settings Pre-Selected
    \nConfiguring an SEO plugin takes time, and can be confusing. Rank Math SEO saves you the trouble with its optimal default settings, which are ideal for most websites, and if needed, can be changed.

    \n
  • \n
  • \n

    LSI Keyword Tool Integrated
    \nRank Math SEO’s integrated LSI keyword tool gives you multiple keyword variations of your focus keyword, which helps you attract more traffic to your posts. Free account needed.

    \n
  • \n
  • \n

    Add Overlay Icons On Social Images
    \nRank Math SEO makes social thumbnails click magnets by giving you the option of overlaying a GIF or a video icon on the thumbnail.

    \n
  • \n
  • \n

    Advanced SEO Analysis Tool
    \nWith just a single click, Rank Math SEO can perform an SEO audit of your website.

    \n
  • \n
  • \n

    30 Detailed SEO Tests
    \nRank Math SEO is designed to completely supercharge your website’s SEO with its 30 detailed SEO tests. Free account needed.

    \n
  • \n
  • \n

    Module Based System
    \nRank Math SEO has been designed with a module-based system, each of which can be enabled or disabled as per your needs, giving you extra speed and control.

    \n
  • \n
  • \n

    Smart Redirection Manager
    \nRank Math SEO’s built-in smart redirection manager will help you create, manage, delete, enable, or disable redirects at scale.

    \n
  • \n
  • \n

    Local Business SEO
    \nRank Math SEO is designed to be used by Global websites and local websites alike. With its local SEO features, local sites can stand out in the search engine results like Google’s and attract more traffic.

    \n
  • \n
  • \n

    SEO Optimized Breadcrumbs
    \nRank Math SEO can display SEO optimized Breadcrumbs on all websites, even if the theme doesn’t support Schema.org coding.

    \n
  • \n
  • \n

    404 Monitor
    \nRank Math SEO has a built-in 404 error monitor that helps you find and resolve 404 errors for a better user experience.

    \n
  • \n
  • \n

    Deep Content Analysis Tests
    \nOn-Page SEO is no longer a mystery with Rank Math SEO’s deep content analysis and precise SEO recommendations.

    \n
  • \n
  • \n

    Internal Linking Suggestions
    \nRank Math SEO intelligently suggests other posts from your website for internal linking from your current posts, improving the chances of ranking higher in the SERPs.

    \n
  • \n
  • \n

    Role Manager
    \nEven if you have multiple employees manage your website, you can precisely control what each of them has to access to in Rank Math SEO with its role manager.

    \n
  • \n
  • \n

    Multisite Ready
    \nWhether you run a single WordPress website or an entire network of sites – we are ready for you. Rank Math SEO fully supports the WordPress Multiuser project (WPMU).

    \n
  • \n
  • \n

    and has lightweight Code compared to slow-loading in other SEO plugins.
    \nEven with significantly more features than other plugins, Rank Math SEO loads amazingly fast and keeps your website fast always.

    \n
  • \n
\n

Why is Rank Math SEO such a game-changer?

\n
    \n
  • \n

    Auto Configuration — All you have to do is set a few options, and Rank Math SEO will configure itself perfectly for your website.

    \n
  • \n
  • \n

    Super Fast SEO Plugin — Even after packing so many features, Rank Math SEO has a negligible load on your server, thus making it one of the fastest SEO plugins for WordPress.

    \n
  • \n
  • \n

    Automatic Keyword Suggestions from Google — Get keyword suggestions from Google as you start typing letters in the focus keyword field of Rank Math SEO.

    \n
  • \n
  • \n

    New SEO Analyzer — Rank Math SEO’s built-in SEO analysis will give you SEO recommendations that you’d normally spend hundreds of dollars to get.

    \n
  • \n
  • \n

    Elementor SEO – Deep integration with the Elementor Page builder. Now, you don’t need to go back and forth between tabs to configure your page’s SEO. Everything related to SEO for Elementor can be configured in the visual editor.

    \n
  • \n
  • \n

    Divi SEO – One of its kind integration with the Divi Page Builder and theme. Handle everything related to SEO from the page editor screen without jumping back to the default editor. This helps you optimize your website in real-time for SEO.

    \n
  • \n
  • \n

    Page Builder SEO – The Rank Math SEO plugin’s content analysis works perfectly with popular page builders and themes like Oxygen Builder, WPBakery, Avada, Astra, Kadence, Themify, Beaver Builder, Page Builder Framework, Schema theme, Flothemes, OceanWP, etc.

    \n
  • \n
  • \n

    Optimize UNLIMITED Keywords At Once — You can optimize your post for up to 5 different keywords by default with the Rank Math SEO plugin and can use a filter to optimize for unlimited keywords.

    \n
  • \n
  • \n

    Image SEO – With Rank Math SEO’s perfect solution to add ALT & Title tags on the fly, to optimize images, showing inside the content, and that too for FREE, there is no reason to choose any other SEO solution that does not provide all the essential SEO features.

    \n
  • \n
  • \n

    Web Stories SEO – Make any Story created with the Google’s Web Stories plugin SEO-Ready. Automatically adds AMP-friendly Schema markup and Meta tags.

    \n
  • \n
  • \n

    WooCommerce SEO – Optimizing your store products is easier with Rank Math. SEO Meta tags and Schema are automatically added but can be customized with total control as well. Rank Math SEO has the most advanced SEO for WooCommerce.

    \n
  • \n
  • \n

    Google AMP SEO – Accelerated Mobile Pages need to be prepared for search engines. What better way to do that than letting Rank Math SEO use your regular SEO details and optimizing AMPs based on that data?

    \n
  • \n
  • \n

    bbPress SEO – User-generated content in bbPress is properly optimized with Rank Math handling all the important SEO aspects. Q&A Schema is added to bbPress topics along with other essential meta tags.

    \n
  • \n
  • \n

    BuddyPress SEO – As with bbPress, SEO for BuddyPress content is done automatically done using Rank Math. You get all the options you need to get higher rankings with your user-generated content.

    \n
  • \n
  • \n

    Quick Edit SEO Details – Go through a lot of posts/pages quickly by ensuring they are optimized for search engines. Quickly edit multiple SEO fields at once using Rank Math SEO.

    \n
  • \n
  • \n

    Instant Indexing for Bing – Get your content instantly indexed by Bing. Enter a few key details and you are all set and ready to go.

    \n
  • \n
  • \n

    Instant Indexing for Google – Instantly getting indexed by Google used to be reserved to huge brands and large websites. Not anymore. Just about anyone can take advantage of Google’s Instant Indexing feature using Rank Math SEO.

    \n
  • \n
  • \n

    Version Control – Rollback or try beta versions. Updating and downgrading your plugins is now a matter of few clicks. Automatically update to the latest versions or try out the latest beta builds.

    \n
  • \n
  • \n

    Translation Plugins Support — Rank Math SEO works flawlessly with the top translations plugins like WPML, TranslatePress, Weglot, Polylang (not entirely compatible yet), etc., making it a perfect companion.

    \n
  • \n
  • \n

    XML Sitemap – The Rank Math SEO plugin comes with a fast-loading Sitemap feature that works with different post types, including the custom ones, and provides deep controlling. One can also generate a Locations KML file via filter for Local Sitemap, & a WooCommerce Sitemap.

    \n
  • \n
  • \n

    1-Click Import From Yoast — With a single click of your mouse, Rank Math SEO can import all your settings from Yoast SEO & Yoast SEO Premium to itself. The transfer is instant, and you don’t lose any SERP rankings as a result.

    \n
  • \n
  • \n

    1-Click Import From AIO SEO — Rank Math SEO can also import all your settings from AIO SEO & All in One SEO Pack Pro in a single click. The transfer is instant, and you don’t lose any SERP rankings as a result.

    \n
  • \n
  • \n

    1-Click Import From All In One Schema Rich Snippets — Rank Math SEO can also import all of AIO’s Rich Snippet & Schema Pro settings in a few clicks, which help preserve your rich rankings when moving to Rank Math SEO.

    \n
  • \n
  • \n

    1-Click Import From SEOPress SEO — With a single click of your mouse, Rank Math SEO can import all your settings from SEOPress & SEOPress Pro SEO plugin to itself. The transfer is instant, and you don’t lose any SERP rankings as a result.

    \n
  • \n
  • \n

    1-Click Import From Redirection — Moving all your redirects shouldn’t be a hassle. That’s why we have made importing redirections from the popular Redirection plugin as simple as clicking a button.

    \n
  • \n
  • \n

    Google Keyword Suggestion — When deciding on focus keywords, Rank Math SEO can help you discover more keywords by pulling in automatic keyword suggestions from Google.

    \n
  • \n
\n

Who Can Benefit From Rank Math SEO?

\n

Rank Math SEO Plugin is perfect for:

\n

✔ Bloggers
\n✔ eCommerce Store Owners
\n✔ Niche Sites
\n✔ Businesses
\n✔ Local Businesses
\n✔ Startups
\n✔ The Real Estate
\n✔ Artists & Photographers
\n✔ The Solution Offerer
\n✔ Directories
\n✔ Vloggers (Video Bloggers)
\n✔ Or any WordPress Website

\n

Take a sneak peek into Rank Math SEO’s features

\n

Detailed Setup Tutorial

\n\n

List of Best Rank Math SEO Features

\n
    \n
  • Clean, & Simple User Interface
  • \n
  • Optimal Settings Pre-Selected
  • \n
  • Simple Setup Wizard\n
      \n
    • Compatibility Check
    • \n
    \n
  • \n
  • Auto Canonical URLs
  • \n
  • LSI Keyword Tool Integrated
  • \n
  • Google Search Console Integration
  • \n
  • Google Keyword Ranking
  • \n
  • Import Other Plugin Settings\n
      \n
    • 1 Click Import From Yoast SEO Plugin
    • \n
    • 1 Click Import From AIO SEO
    • \n
    • 1 Click Import From SEOPress & SEOPress Pro
    • \n
    • 1 Click Import From All In One Schema Rich Snippets & Schema Pro
    • \n
    • 1 Click Import From Redirection Plugin
    • \n
    \n
  • \n
  • Role Manager
  • \n
  • ACF Support
  • \n
  • AMP Ready
  • \n
  • bbPress & BuddyPress Modules
  • \n
  • Google Schema Markup Integrated\n
      \n
    • Article Rich Snippet
    • \n
    • Review Rich Snippet
    • \n
    • Book Rich Snippet
    • \n
    • Course Rich Snippet
    • \n
    • Event Rich Snippet
    • \n
    • Job Posting Rich Snippet
    • \n
    • Local Business Rich Snippet
    • \n
    • 193 Local Business Types
    • \n
    • Music Rich Snippet
    • \n
    • Person Rich Snippet
    • \n
    • Product Rich Snippet
    • \n
    • Recipe Rich Snippet
    • \n
    • Restaurant Rich Snippet
    • \n
    • Service Rich Snippet
    • \n
    • Software Application Rich Snippet
    • \n
    • Video Rich Snippet
    • \n
    • Author Stay Rating
    • \n
    \n
  • \n
  • Social Media Optimization\n
      \n
    • Add Overlay Icons On Social Images
    • \n
    • Default OpenGraph Thumbnail
    • \n
    • Auto Facebook Open Graph
    • \n
    • Facebook Authorship
    • \n
    • Facebook Open Graph for Homepage
    • \n
    • Automatic Twitter Meta Cards
    • \n
    • Twitter Card for Homepage
    • \n
    • Default Twitter Card Type
    • \n
    • Social Previews
    • \n
    \n
  • \n
  • Add Knowledge Graph\n
      \n
    • Represent site as a Person
    • \n
    • Represent site as a Company
    • \n
    • Set a Site Logo
    • \n
    \n
  • \n
  • Advanced SEO Analysis Tool\n
      \n
    • 30 Detailed SEO Tests
    • \n
    • SEO Analysis Score
    • \n
    \n
  • \n
  • Automated Image SEO
  • \n
  • Powerful Post Optimization\n
      \n
    • Add SEO Meta Box to all post types
    • \n
    • Bulk Edit Titles & Descriptions
    • \n
    • Post Preview on Google
    • \n
    • Content Analysis
    • \n
    • Control SEO For Single Pages
    • \n
    • Control The Title
    • \n
    • Control Meta Description
    • \n
    • Auto Add Additional Meta Data
    • \n
    • Control ROBOTS Meta
    • \n
    • Choose a Primary Category
    • \n
    \n
  • \n
  • Single Post/page Optimization\n
      \n
    • Focus Keyword
    • \n
    • Google Keyword Suggestion
    • \n
    • Optimize UNLIMITED Keywords (5 by default)
    • \n
    • Choose Pillar Posts & Pages
    • \n
    • Internal Linking Suggestions
    • \n
    • Capitalize Titles
    • \n
    • SEO Failed Tests
    • \n
    • SEO Warnings
    • \n
    \n
  • \n
  • XML Sitemap (New!)
  • \n
  • Module Based System
  • \n
  • Choose Any Separator Character
  • \n
  • Modify Global Meta
  • \n
  • Search Engine Verification Tools\n
      \n
    • Bing Site Verification
    • \n
    • Baidu Site Verification
    • \n
    • Alexa Site Verification
    • \n
    • Yandex Site Verification
    • \n
    • Google Site Verification
    • \n
    • Pinterest Site Verification
    • \n
    • Norton Safe Web Site Verification
    • \n
    \n
  • \n
  • Advanced Redirection Manager\n
      \n
    • Smart & Automatic Post Redirects
    • \n
    • 301 Redirection Type
    • \n
    • 302 Redirection Type
    • \n
    • 307 Redirection Type
    • \n
    • 410 Redirection Type
    • \n
    • 451 Redirection Type
    • \n
    • Support for REGEX
    • \n
    • Debug Redirections
    • \n
    \n
  • \n
  • Simple 404 Monitor\n
      \n
    • Advanced 404 Monitor
    • \n
    \n
  • \n
  • Advanced SEO Breadcrumbs\n
      \n
    • Auto Show SEO Breadcrumbs
    • \n
    \n
  • \n
  • Advanced Link Options\n
      \n
    • Nofollow All External Image Links
    • \n
    • Nofollow All External Links
    • \n
    • Open External Links in New Tab/Window
    • \n
    • Redirect Attachments to Parent
    • \n
    • Strip Category Base
    • \n
    \n
  • \n
  • Remove Stopwords from Permalinks
  • \n
  • Ping Search Engines
  • \n
  • Local SEO Optimization\n
      \n
    • Contact Info Shortcode
    • \n
    \n
  • \n
  • Deep Support For WooCommerce SEO
  • \n
  • Compatible for EDD SEO (Easy Digital Downloads SEO)
  • \n
  • Only 30k Lines of Code\n
      \n
    • PSR-4 Coding Standards (wherever possible)
    • \n
    \n
  • \n
  • Optimize Different Archives\n
      \n
    • Optimize Author Archive Pages
    • \n
    • Optimize Date Archive Pages
    • \n
    • Optimize Archive Pages
    • \n
    \n
  • \n
  • .htaccess Editor
  • \n
  • Robots.txt Editor
  • \n
  • Import/Export Settings
  • \n
  • Import/Export Redirections
  • \n
  • Add Content Before the RSS Feed
  • \n
  • Add Content After the RSS Feed
  • \n
  • Detailed Documentation\n
      \n
    • Contextual Help
    • \n
    \n
  • \n
\n

BIG Publications are Raving About Rank Math SEO

\n

Rank Math SEO Reviews

\n\n\n

Rank Math SEO Review – Why I Ditched Yoast For Rank Math SEO

\n

Rank Math SEO on Product Hunt

\n

Rank Math SEO Plugin Review from an SEO Consultant

\n

and many more

\n

Check RANK MATH PRO WHICH MAKES SEO EASIER & FASTER

\n\n

Rank Math SEO FREE VS PRO COMPARISON

\n

UNIQUE FEATURES OF RANK MATH SEO PRO

\n

Google Analytics & Search Console Integration (The only SEO plugin that provides it)
\n✔ Integrated Google Analytics, AdSense & Search Console Data
\n✔ Analyze SEO Performance of Each Post & Page
\n✔ See Top Winning/Losing Posts & Keywords
\n✔ Keep Track of Position History
\n✔ Rank Tracker for Important Keywords

\n

Schema aka Structured Data aka Rich Snippets. The BEST Schema Generator Available Online
\n✔ 20+ Pre-defined Schema types (more than any other plugin) –
\n✔ Import Schema from Other Websites
\n✔ Advanced Schema Builder [Advanced SEOs can use this to create any complex Schema Markup)
\n✔ Schema Templates for Automation
\n✔ Conditional Schema Markup
\n✔ Inbuilt Schema Code Preview and Validation
\n✔ Multiple Location Schema On Any Page (using the Shortcode)

\n

Automation At Its BEST
\n✔ Automated Image SEO
\n✔ Advanced Filtering for Images [https://i.rankmath.com/zAUHHP]
\n✔ Watermark Your images
\n✔ Advanced Post filtering
\n✔ Bulk Actions [index, noindex, redirect, etc.]
\n✔ Quick Edit SEO Details
\n✔ Bulk Import SEO Meta Details Using CSV file
\n✔ Auto Detect Videos and Generate Schema Markup for Them
\n✔ Auto Fetch Thumbnail, Duration of YouTube & Vimeo Videos
\n✔ Automatically Flush Facebook Thumbnails
\n✔ Open External Links in New Tabs
\n✔ Nofollow External Links
\n✔ Noindex Paginated, Archive, Search Result Pages
\n✔ Instant Indexing for Bing [Also Google using our Instant Indexing Plugin]

\n

WooCommerce SEO
\n✔ Automatic Schema for WooCommerce Products
\n✔ Advanced Open Graph Tags for WooCommerce Products
\n✔ Automatic NoIndex Hidden Products
\n✔ Remove WooCommerce Product and Category Base
\n✔ Add Custom Brands to Products
\n✔ Add Global Identifier Like GTIN/MPN – Even to Variations

\n

Workflow Improvements
\n✔ Internal Role Manager
\n✔ Inbuilt Google Trends Insights
\n✔ Site Audit with 29 Unique Tests
\n✔ Import Redirections Using CSV File
\n✔ Categorize Redirections for Grouping
\n✔ One-Click Redirection for 404s
\n✔ Monitor Search Performance of Entire Portfolio
\n✔ Easy and Advanced Mode

\n

Miscellaneous
\n✔ Supports bbPress SEO and BuddyPress SEO
\n✔ Version Control – Rollback or Try Beta Versions

\n

MANY MORE FEATURES
\n✔ PREMIUM 24x7x365 Dedicated Support Managers
\n✔ MOST COMPETITIVE PRICING EVER!

\n

CHEK ALL THE PREMIUM FEATURES AND PRICING HERE

\n

CONNECT WITH THE TEAM AND SEO EXPERTS

\n

JOIN FACEBOOK GROUP COMMUNITY: The purpose of this Facebook group is to have a collective place where the community can help each other, and we can get some feedback to improve Rank Math SEO as well. Joining the group is also a great way to connect with like-minded people and share your SEO experience.

\n

Branding Guideline

\n

Rank Math® SEO is a registered trademark. Please use the following format when mentioning the Rank Math SEO plugin anywhere.
\n* Rank Math SEO [correct]
\n* RankMath [incorrect]
\n* Rankmath [incorrect]
\n* rankmath [incorrect]
\n* rankMath [incorrect]

\n

Getting Started:

\n

1. How to Setup Rank Math SEO: Once you install Rank Math SEO for the first time, you will be greeted with the Setup Wizard, which is discussed in detail here.

\n

2. Facebook Group: In this group, you will find the team of Rank Math SEO plugin fairly active and ready to answer your SEO related queries.

\n

3. User Documentation: Although Rank Math SEO is already easy to set up, we’ve put together tutorials, guides, and some knowledge bases to help you set up and get started with Rank Math SEO.

\n

4. Contribute (Sharing is caring): If you are one of those caring hearts that want to help, go to our Rank Math SEO’s GitHub Repository and see how you can contribute to the SEO community. You can also add a new language via translate.wordpress.org.

\n

5. Fixing Common Errors: Sometimes, avoidable or common issues can get you stuck. We’ve created a common guide where we discuss all the common issues and how to fix them.

\n

6. Support Ticket Forum: Our dedicated forum is where you can get support for any issues that you face with Rank Math SEO. In the forum, we’ll also try to answer some SEO queries. User experience is important to us, and our aim is to answer all the queries on the forum in a timely manner.

\n

7. Frequently Asked Questions: Here, we’ve answered the most commonly asked questions about Rank Math SEO. The questions are related to features, pricing, and others.

\n","download_link":"https://downloads.wordpress.org/plugin/seo-by-rank-math.1.0.73.zip","tags":{"google-search-console":"google search console","redirection":"redirection","schema":"schema","seo":"seo","sitemap":"sitemap"},"donate_link":"","icons":{"1x":"https://ps.w.org/seo-by-rank-math/assets/icon.svg?rev=2348086","2x":"https://ps.w.org/seo-by-rank-math/assets/icon-256x256.png?rev=2348086","svg":"https://ps.w.org/seo-by-rank-math/assets/icon.svg?rev=2348086"},"wporg":true},{"name":"Head, Footer and Post Injections","slug":"header-footer","version":"3.2.2","author":"Stefano Lissa","author_profile":"https://profiles.wordpress.org/satollo","requires":"4.0","tested":"5.7.3","requires_php":"5.6","rating":98,"ratings":{"1":3,"2":2,"3":4,"4":13,"5":624},"num_ratings":646,"support_threads":1,"support_threads_resolved":0,"active_installs":300000,"downloaded":2797325,"last_updated":"2021-03-17 1:26pm GMT","added":"2008-04-07","homepage":"https://www.satollo.net/plugins/header-footer","short_description":"Header and Footer plugin let you to add html code to the head and footer sections of your blog... and more!","description":"

About WordPress SEO and Facebook Open Graph: I was very unpleased by Yoast invitation to
\nremove my plugin, and it’s not the case.
\nRead more here.

\n

Head and Footer Codes

\n

Why you have to install 10 plugins to add Google Analytics, Facebook Pixel, custom
\ntracking code, Google DFP code, Google Webmaster/Alexa/Bing/Tradedoubler verification code and so on…

\n

With Header and Footer plugin you can just copy the code those services give you
\nin a centralized point to manage them all. And theme independent: you can change your theme
\nwithout loosing the code injected!

\n

Injection points and features

\n
    \n
  • in the page section where most if the codes are usually added
  • \n
  • just after the tag as required by some JavaScript SDK (like Facebook)
  • \n
  • in the page footer (just before the tag)
  • \n
  • recognize and execute PHP code to add logic to your injections
  • \n
  • distinct desktop and mobile injections
  • \n
\n

AMP

\n

A new AMP dedicated section compatible with AMP plugin lets you to inject specific codes in
\nAMP pages. Should be ok even with other AMP plugins.

\n

Post Top and Bottom Codes

\n

Do you need to inject a banner over the post content or after it? No problem. With Header and
\nFooter you can:

\n
    \n
  • Add codes on top, bottom and in the middle of posts and pages
  • \n
  • Differentiate between mobile and desktop (you don’t display the same ad format on both, true?)
  • \n
  • Separate post and page configuration
  • \n
  • Native PHP code enabled
  • \n
  • Shortcodes enabled
  • \n
\n

Special Injections

\n
    \n
  • Just after the opening BODY tag
  • \n
  • In the middle of post content (using configurable rules)
  • \n
  • Everywhere on template (using placeholders)
  • \n
\n

bbPress

\n

The specific bbPress injections are going to be removed. Switch to my
\nAds for bbPress, which is more flexible and complete.

\n

Limits

\n

This plugin cannot change the menu or the footer layout, those features must be covered by your theme!

\n

Official page: Header and Footer.

\n

Other plugins by Stefano Lissa:

\n\n

Translation

\n

You can contribute to translate this plugin in your language on WordPress Translate

\n

Privacy and GDPR

\n

This plugin does not collect or process any personal user data.

\n","download_link":"https://downloads.wordpress.org/plugin/header-footer.3.2.2.zip","tags":{"blog":"blog","footer":"footer","header":"header","page":"page","single":"single"},"donate_link":"http://www.satollo.net/donations","icons":{"1x":"https://ps.w.org/header-footer/assets/icon-256x256.png?rev=1064219","2x":"https://ps.w.org/header-footer/assets/icon-256x256.png?rev=1064219"},"wporg":true},{"name":"WP Rocket","slug":"wp-rocket","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://wp-rocket.me/","short_description":"

Powerful caching to speed up your WordPress website in a few clicks. No coding required.

\n","description":"\n\n\n

Powerful caching to speed up your WordPress website in a few clicks. No coding required.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2020/06/WP-Rocket-285x160.png","2x":"https://amp-wp.org/wp-content/uploads/2020/06/WP-Rocket-372x209.png","svg":""},"wporg":false},{"name":"Statify","slug":"statify","version":"1.8.3","author":"pluginkollektiv","author_profile":"https://profiles.wordpress.org/pluginkollektiv","requires":"4.7","tested":"5.8.1","requires_php":"5.2","rating":94,"ratings":{"1":2,"2":0,"3":0,"4":3,"5":33},"num_ratings":38,"support_threads":1,"support_threads_resolved":0,"active_installs":200000,"downloaded":1516187,"last_updated":"2021-07-17 8:46am GMT","added":"2011-03-16","homepage":"https://statify.pluginkollektiv.org/","short_description":"Visitor statistics for WordPress with focus on data protection, transparency and clarity. Perfect as a widget in your WordPress Dashboard.","description":"

Statify provides a straightforward and compact access to the number of site views. It is privacy-friendly as it uses neither cookies nor a third party.

\n

An interactive chart is followed by lists of the most common reference sources and target pages. The period of statistics and length of lists can be set directly in the dashboard widget.

\n

Data Privacy

\n

In direct comparison to statistics services such as Google Analytics, WordPress.com Stats and Matomo (Piwik) Statify doesn’t process and store personal data as e.g. IP addresses – Statify counts site views, not visitors.

\n

Absolute privacy compliance coupled with transparent procedures: A locally in WordPress created database table consists of only four fields (ID, date, source, target) and can be viewed at any time, cleaned up and cleared by the administrator.

\n

Due to this tracking approach, Statify is 100% compliant with GDPR and serves as an lightweight alternative to other tracking services.

\n

Display of the widget

\n

The plugin configuration can be changed directly in the Statify Widget on the dashboard by clicking the Configure link.

\n

The amount of links shown in the Statify Widget can be set as well as the option to only count views from today. Of course, older entries are not deleted when changing this setting.

\n

The statistics for the dashboard widget are cached for four minutes.

\n

Period of data saving

\n

Statify stores the data only for a limited period (default: two weeks), longer intervals can be selected as option in the widget. Data which is older than the selected period is deleted by a daily cron job.

\n

An increase in the database volume can be expected because all statistic values are collected and managed in the local WordPress database (especially if you increase the period of data saving).

\n

JavaScript tracking for caching compatibility

\n

For compatibility with caching plugins like Cachify Statify offers an optional switchable tracking via JavaScript. This function allows reliable count of cached blog pages.

\n

For this to work correctly, the active theme has to call wp_footer(), typically in a file named footer.php.

\n

Skip tracking for spam referrers

\n

The comment blacklist can be enabled to skip tracking for views with a referrer URL listed in comment blacklist, i. e. which considered as spam.

\n

Support

\n

If you’ve problems or think you’ve found a bug (e.g. you’re experiencing unexpected behavior), please post at the support forums.

\n

Contribute

\n
    \n
  • Active development of this plugin is handled on GitHub.
  • \n
  • Pull requests for documented bugs are highly appreciated.
  • \n
  • If you want to help us translate this plugin you can do so on WordPress Translate.
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/statify.1.8.3.zip","tags":{"analytics":"analytics","dashboard":"dashboard","pageviews":"pageviews","privacy":"privacy","statistics":"statistics"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=TD4AMD2D8EMZW","icons":{"1x":"https://ps.w.org/statify/assets/icon-128x128.png?rev=2355063","2x":"https://ps.w.org/statify/assets/icon-256x256.png?rev=2355063"},"wporg":true},{"name":"LIQUID BLOCKS GALLERY 37+ Free Designs","slug":"liquid-blocks","version":"1.1.1","author":"LIQUID DESIGN Ltd.","author_profile":"https://profiles.wordpress.org/lqd","requires":"5.2","tested":"5.8.1","requires_php":false,"rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"num_ratings":1,"support_threads":1,"support_threads_resolved":0,"active_installs":4000,"downloaded":20745,"last_updated":"2021-07-22 6:55am GMT","added":"2019-10-18","homepage":"https://lqd.jp/wp/plugin.html","short_description":"If you’re looking to create block page sections that look great give LIQUID BLOCKS a…","description":"

If you’re looking to create block page sections that look great give LIQUID BLOCKS a try.

\n

In Gutenberg Block Template & Design Gallery, Just select your favorite design. Instantly create page section elements. Like a very simple page builder.

\n

You can manage Block Pattern. (WordPress 5.5+)
\nFully compatible with Gutenberg and themes and AMP.
\nlatest information on LIQUID PRESS.

\n

\n

Design Gallery

\n

Carefully selected 37+ Free Designs.
\n* Headlines
\n* Layouts (Q&A, Ranking, Column, Step, Fluid Shape.)
\n* Price list
\n* CTA
\n* Landing pages
\n* Block Patterns (You can register.)

\n

Toolbar

\n

Add to RichText Toolbar.
\n* Mark
\n* Underline
\n* Big
\n* Small

\n","download_link":"https://downloads.wordpress.org/plugin/liquid-blocks.zip","tags":{"block":"block","block-editor":"block-editor","blocks":"blocks","editor":"editor","gutenberg":"gutenberg"},"donate_link":"https://lqd.jp/wp/plugin.html","icons":{"1x":"https://ps.w.org/liquid-blocks/assets/icon-128x128.png?rev=2175390"},"wporg":true},{"name":"Schema","slug":"schema","version":"1.7.9.2","author":"Hesham","author_profile":"https://profiles.wordpress.org/hishaman","requires":"4.0","tested":"5.7.3","requires_php":"5.4","rating":90,"ratings":{"1":15,"2":6,"3":4,"4":8,"5":163},"num_ratings":196,"support_threads":4,"support_threads_resolved":0,"active_installs":60000,"downloaded":1088364,"last_updated":"2021-05-19 2:51pm GMT","added":"2016-05-11","homepage":"https://schema.press","short_description":"Get the next generation of Schema Structured Data to enhance your WordPress site presentation in…","description":"

Like Schema plugin? Consider leaving a 5 star review.

\n

Super fast, light-weight plugin for adding schema.org structured data markup in recommended JSON-LD format automatically to WordPress sites.

\n

Enhanced Presentation in Search Results By including structured data appropriate to your content, your site can enhance its search results and presentation.

\n

Check out the Plugin Homepage for more info and documentation.

\n

What is Schema markup?

\n

Schema markup is code (semantic vocabulary) that you put on your website to help the search engines return more informative results for users. So, Schema is not just for SEO reasons, it’s also for the benefit of the searcher.

\n

Schema.org Structured Data Demo & Examples

\n\n

Schema Key Features

\n
    \n
  • Easy to use, set it and forget it, with minimal settings.
  • \n
  • [Premium] Support for different schema.org types.
  • \n
  • Enable Schema types at once per post type or post category.
  • \n
  • [Premium] Enable Schema types anywhere you want on your site content.
  • \n
  • [Premium] Customize source data of schema.org properties.
  • \n
  • Valid markup, test it in Google Structured Data Testing Tool.
  • \n
  • Output JSON-LD format, the most recommended by Google.
  • \n
  • Reuse data saved in post meta, which is created by other plugins.
  • \n
  • Extensible, means you can extend its functionality via other plugins, extensions or within your Theme’s functions.php file.
  • \n
\n
\n

Note: some features are Premium. Which means you need Schema Premium to have those features. Get Schema Premium here!

\n
\n

Free vs Premium

\n
\n

See: a Free vs Premium comparison.

\n
\n

Free Plugin Extensions

\n
    \n
  • Schema Review: Extend Schema functionality by adding review and rating Structured Data functionality for Editors and Authors.
  • \n
  • Schema Default Image: Add ability to set a default WordPress Featured image for schema.org markup.
  • \n
\n

Premium Plugin Extensions

\n\n

Supported Google/Schema Markups

\n\n

Supported Schema.org Types

\n\n

Premium Supported Schema.org Types

\n
\n

Schema Premium has additional support for schema.org types, including:

\n
\n\n

Schema.org Markup Examples

\n

View our Live Structured Data Demo examples.

\n

Supported Plugins

\n

Schema plugin integrates and/or play nicely with (not necessarily a full integration):

\n
    \n
  • Yoast SEO
  • \n
  • AMP plugin (Automattic’s Accelerated Mobile Pages)
  • \n
  • Accelerated Mobile Pages – AMP for WP
  • \n
  • WPRichSnippets
  • \n
  • The SEO Framework
  • \n
  • WPBakery Page Builder
  • \n
  • ThirstyAffiliates
  • \n
  • [Premium] WooCommerce: Schema for WooCommerce extension.
  • \n
  • Easy Digital Downloads (EDD)
  • \n
\n

Supported Themes

\n

The plugin should work fine with any well coded WordPress theme, however these themes were tested and works properly with the plugin.

\n
    \n
  • Genesis 2.x
  • \n
  • Thesis 2.x
  • \n
  • Divi
  • \n
\n

Premium support

\n

schema.press team does not always provide active support for the Schema plugin on the WordPress.org forums, as we prioritize our email support. One-on-one email support is available to people who bought Schema Premium only.

\n

Note that the premium Schema Plugin also has several extra features too, including the option to enable more schema.org types, set content location target for markup, and map schema.org properties, so it is well worth your investment!

\n

Developers?

\n

Feel free to fork the project on GitHub and submit your contributions via pull request.

\n","download_link":"https://downloads.wordpress.org/plugin/schema.zip","tags":{"json-ld":"JSON-LD","rich-snippets":"rich snippets","schema":"schema","schema-org":"schema.org","structured-data":"structured data"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=NGVUBT2QXN7YL","icons":{"1x":"https://ps.w.org/schema/assets/icon-128x128.png?rev=1750172","2x":"https://ps.w.org/schema/assets/icon-256x256.png?rev=1750173"},"wporg":true},{"name":"Iframely – rich media embeds for 2000+ publishers","slug":"iframely","version":"0.7.2","author":"Itteco Corp.","author_profile":"https://profiles.wordpress.org/ivanp","requires":"3.5.1","tested":"5.4.7","requires_php":false,"rating":80,"ratings":{"1":2,"2":0,"3":1,"4":0,"5":7},"num_ratings":10,"support_threads":2,"support_threads_resolved":1,"active_installs":3000,"downloaded":97418,"last_updated":"2020-05-22 5:21pm GMT","added":"2013-10-03","homepage":"http://wordpress.org/plugins/iframely/","short_description":"Iframely extends WordPress default rich media embeds and adds support of over 2000 more providers…","description":"

Iframely extends WordPress default embeds and adds over 2000 more providers and cards as URL previews for the rest of the Web. Provides responsive embed codes, works with AMP.

\n

Just like default WordPress embeds, Iframely will detect URLs in your posts and replace it with responsive embed codes. Supports all usual suspects such as YouTube, Vimeo, Instagram, Facebook, Giphy, GfyCat, Imgur, Google +, GitHub Gists, Storify, SlideShare, Streamable, Vidme, Reddit, Dailymotion, Spotify, Tableau, Prezi, Apester, QZZR, Tidal, MLB. Well over two thousand of providers and keeps growing.

\n

Test your URL here to check if we support it.

\n

Iframely also generates and hosts summary cards as URL previews for general articles. It includes your own site, and Iframely can replace the default embed cards that your publish via WordPress for other sites to use.

\n

API key and paid/free

\n

Powered by Iframely cloud service and requires an account with us. Grab an API key for extended trial at iframely.com, or test the plugin out without an API key.

\n

Before you push the plugin to production, a service subscription is required to avoid any possible disruptions.

\n

We maintain an overwhelming number of integrations and widgets in the background for you, and make sure your sites remains fast and keeps your users happy. This requires a substantial effort on our part, and we won’t be able to provide it without requiring a service subscription.

\n

How to use:

\n

The plugin works the same way the standard oEmbed is supported by WordPress: URL on a separate line.

\n

For example,

\n
Check out this cool video:\n\nhttp://your.url/here\n\nThat was a cool video.\n
\n

Iframely also has its own shortcode [iframely]http://your.url/here[/iframely].

\n

Heads-up:

\n

Iframely does not simply wrap URLs with <iframe src=...> code. That’s not what Iframely is for. We can only match URLs to the known embed codes if publisher offers them for manual copy-paste, or generate a summary card for URL preview if a publisher provides at least a thumnnail image.

\n

To keep default embed providers

\n

By default, Iframely will inject itself to be the first embeds provider in the list, thus intercepting all URLs. It means that the default providers that are later in the list won’t get called and will thus be disabled.

\n

It means Iframely replaces default YouTube, Vimeo, Twitter, other oEmbed plugins that you might have(like JetPack), etc.

\n

Although we should support the same providers and output the same code, just make it responsive and add extra features, you can still disable such behavior and tell Iframely to only process links that otherwise don’t have an embed provider.

\n

Just choose this option in your settings. It will essentially put Iframely to be the last in the list, be “a catcher”, rather then “an interceptor”.

\n

URL editor options

\n

You can fine-tune many aspects of Iframely on your dashboard at iframely.com. This would include some most common settings for popular rich media publishers. Our support team can also fine-tune many other publishers, just for you.

\n

However, you might need a per-post editor for the widgets options. And, Iframely does provide this too. It’s done via URL options editor, and available for higher-tier plans, or during your initial trial period. Make sure to check it out.

\n

AMP support

\n

Yes, Iframely works nicely with AMP WP plugin. It catches all missing embeds and follow your Iframely settings. But you can also opt to have Iframely for all embeds, including default AMP embeds too. For example, Facebook video will be indeed a nice video without user’s text message.

\n","download_link":"https://downloads.wordpress.org/plugin/iframely.zip","tags":{"embed":"embed","embed-code":"embed code","iframely":"iframely","oembed":"oembed","responsive":"responsive"},"donate_link":"","icons":{"default":"https://s.w.org/plugins/geopattern-icon/iframely.svg"},"wporg":true},{"name":"Pym.js Embeds","slug":"pym-shortcode","version":"1.3.2.4","author":"INN Labs","author_profile":"https://profiles.wordpress.org/automattic","requires":"3.0.1","tested":"5.4.7","requires_php":"5.3","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":1,"support_threads_resolved":0,"active_installs":100,"downloaded":2331,"last_updated":"2020-03-26 6:09pm GMT","added":"2016-06-17","homepage":"https://github.com/INN/pym-shortcode","short_description":"A WordPress block and shortcode for embedding iframes that are responsive horizontally and vertically, using…","description":"

Pym.js Embeds provides shortcode and Gutenberg block wrappers for embedding responsive iframes using Pym.js, developed by the NPR Visuals Team. Embedded content resizes vertically to match its container’s width.

\n

AMP compatibility is provided by the official AMP plugin.

\n

Pym.js Resources from NPR

\n

You may also want to look at NPR’s Pym.js resources:

\n\n","download_link":"https://downloads.wordpress.org/plugin/pym-shortcode.1.3.2.4.zip","tags":{"embeds":"Embeds","iframe":"iframe","javascript":"javascript","responsive":"responsive","shortcode":"shortcode"},"donate_link":"https://inn.org/donate","icons":{"1x":"https://ps.w.org/pym-shortcode/assets/icon.svg?rev=1944461","svg":"https://ps.w.org/pym-shortcode/assets/icon.svg?rev=1944461"},"wporg":true},{"name":"PWA","slug":"pwa","version":"0.6.0","author":"PWA Plugin Contributors","author_profile":"https://profiles.wordpress.org/westonruter","requires":"5.5","tested":"5.8.1","requires_php":"5.6","rating":86,"ratings":{"1":3,"2":0,"3":0,"4":0,"5":13},"num_ratings":16,"support_threads":7,"support_threads_resolved":4,"active_installs":40000,"downloaded":298394,"last_updated":"2021-09-21 7:17pm GMT","added":"2018-07-12","homepage":"https://github.com/GoogleChromeLabs/pwa-wp","short_description":"WordPress feature plugin to bring Progressive Web App (PWA) capabilities to Core","description":"

\nProgressive Web Apps are user experiences that have the reach of the web, and are:

\n
    \n
  • Reliable – Load instantly and never show the downasaur, even in uncertain network conditions.
  • \n
  • Fast – Respond quickly to user interactions with silky smooth animations and no janky scrolling.
  • \n
  • Engaging – Feel like a natural app on the device, with an immersive user experience.
  • \n
\n

This new level of quality allows Progressive Web Apps to earn a place on the user’s home screen.\n

\n

Continue reading more about Progressive Web Apps (PWA) from Google.

\n

In general a PWA depends on the following technologies to be available:

\n\n

This plugin serves as a place to implement support for these in WordPress with the intention of being proposed for core merge, piece by piece.

\n

This feature plugin is not intended to obsolete the other plugins and themes which turn WordPress sites into PWAs. Rather, this plugin is intended to provide the PWA building blocks and coordination mechanism for these themes and plugins to not reinvent the wheel and also to not conflict with each other. For example, a theme that implements the app shell model should be able to extend the core service worker while a plugin that provides push notifications should be able to do the same. Themes and plugins no longer should have to each create a service worker on their own, something which is inherently problematic because only one service worker can be active at a time: only one service worker can win. If you are developing a plugin or theme that includes a service worker, consider relying on this PWA plugin, or at least only use the built-in implementation as a fallback for when the PWA plugin is not available.

\n

In versions prior to 0.6, no caching strategies were added by default. The only service worker behavior was to serve an offline template when the client’s connection is down or the site is down, and also to serve an error page when the server returns with 500 Internal Server Error. As of 0.6, there is a new “Offline browsing” toggle on the Reading Settings screen in the admin. It is disabled by default, but when enabled a network-first caching strategy is registered for navigations so that the offline page won’t be shown when accessing previously-accessed pages. The network-first strategy is also used for assets from themes, plugins, and WordPress core. In addition, uploaded images get served with a stale-while-revalidate strategy. For all the details on these changes, see the pull request.

\n

Documentation for the plugin can be found on the GitHub project Wiki.

\n

Development of this plugin is done on GitHub. Pull requests welcome. Please see issues reported there before going to the plugin forum.

\n","download_link":"https://downloads.wordpress.org/plugin/pwa.0.6.0.zip","tags":{"https":"https","progressive-web-apps":"progressive web apps","pwa":"pwa","service-workers":"service-workers.","web-app-manifest":"web app manifest"},"donate_link":"","icons":{"1x":"https://ps.w.org/pwa/assets/icon.svg?rev=1908485","2x":"https://ps.w.org/pwa/assets/icon-256x256.png?rev=1908485","svg":"https://ps.w.org/pwa/assets/icon.svg?rev=1908485"},"wporg":true},{"name":"MC4WP: Mailchimp for WordPress","slug":"mailchimp-for-wp","version":"4.8.6","author":"ibericode","author_profile":"https://profiles.wordpress.org/dvankooten","requires":"4.6","tested":"5.8.1","requires_php":"5.3","rating":96,"ratings":{"1":36,"2":10,"3":16,"4":35,"5":1283},"num_ratings":1380,"support_threads":44,"support_threads_resolved":41,"active_installs":2000000,"downloaded":35950738,"last_updated":"2021-08-04 7:14am GMT","added":"2013-06-19","homepage":"https://www.mc4wp.com/#utm_source=wp-plugin&utm_medium=mailchimp-for-wp&utm_campaign=plugins-page","short_description":"Mailchimp for WordPress, the #1 unofficial Mailchimp plugin.","description":"

Mailchimp for WordPress

\n

Allowing your visitors to subscribe to your newsletter should be easy. With this plugin, it finally is.

\n

This plugin helps you grow your Mailchimp lists and write better newsletters through various methods. You can create good looking opt-in forms or integrate with any existing form on your site, like your comment, contact or checkout form.

\n\n

Some (but not all) features

\n
    \n
  • \n

    Connect with your Mailchimp account in seconds.

    \n
  • \n
  • \n

    Sign-up forms which are good looking, user-friendly and mobile optimized. You have complete control over the form fields and can send anything you like to Mailchimp.

    \n
  • \n
  • \n

    Seamless integration with the following plugins:

    \n
      \n
    • Default WordPress Comment Form
    • \n
    • Default WordPress Registration Form
    • \n
    • Contact Form 7
    • \n
    • WooCommerce
    • \n
    • Gravity Forms
    • \n
    • Ninja Forms 3
    • \n
    • WPForms
    • \n
    • BuddyPress
    • \n
    • MemberPress
    • \n
    • Events Manager
    • \n
    • Easy Digital Downloads
    • \n
    • Give
    • \n
    • UltimateMember
    • \n
    \n
  • \n
  • \n

    A multitude of available add-on plugins and integrations:

    \n\n
  • \n
  • \n

    Well documented. Our knowledge base is updated daily.

    \n
  • \n
  • \n

    Developer friendly. For inspiration, check out our repository of example code snippets.

    \n
  • \n
\n
\n

Become a Premium user

\n

Mailchimp for WordPress has a Premium add-on which comes with several additional benefits.

\n
    \n
  • Multiple forms
  • \n
  • Advanced e-commerce integration for WooCommerce
  • \n
  • Email notifications
  • \n
  • An easy way to style your forms
  • \n
  • Detailed reports & statistics
  • \n
\n

View more Premium features

\n
\n

What is Mailchimp?

\n

Mailchimp is a newsletter service that allows you to send out email campaigns to a list of email subscribers. It is free for lists up to 2000 subscribers, which is why it is the newsletter-service of choice for thousands of businesses.

\n

This plugin allows you to tightly integrate your WordPress site with your Mailchimp account.

\n

If you are not yet using Mailchimp, creating an account is 100% free and only takes you about 30 seconds.

\n

Support

\n

Use the WordPress.org plugin forums for community support where we try to help all of our users. If you found a bug, please create an issue on Github where we can act upon them more efficiently.

\n

If you’re a premium user, please use the email address inside the plugin for support as that will guarantee a faster response time.

\n

Please take a look at the Mailchimp for WordPress knowledge base as well.

\n

Add-on plugins

\n

There are several add-on plugins available, which help you get even more out of your site.

\n

Translations

\n

You can help translate Mailchimp for WordPress into your language using your WordPress.org account.

\n

Development

\n

This plugin is being developed on GitHub. If you want to collaborate, please look at ibericode/mailchimp-for-wordpress.

\n

Customizing the plugin

\n

The plugin provides various filter & action hooks that allow you to modify or extend default behavior. We’re also maintaining a collection of sample code snippets.

\n","download_link":"https://downloads.wordpress.org/plugin/mailchimp-for-wp.4.8.6.zip","tags":{"email":"email","mailchimp":"mailchimp","marketing":"marketing","mc4wp":"mc4wp","newsletter":"newsletter"},"donate_link":"https://www.mc4wp.com/#utm_source=wp-plugin-repo&utm_medium=mailchimp-for-wp&utm_campaign=donate-link","icons":{"1x":"https://ps.w.org/mailchimp-for-wp/assets/icon-128x128.png?rev=1224577","2x":"https://ps.w.org/mailchimp-for-wp/assets/icon-256x256.png?rev=1224577"},"wporg":true},{"name":"Site Kit by Google","slug":"google-site-kit","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://sitekit.withgoogle.com/","short_description":"

Site Kit is the official WordPress plugin from Google for insights about how people find and use your site. Site Kit is the one-stop solution to deploy, manage, and get insights from critical Google tools to make the site successful on the web. It provides authoritative, up-to-date insights from multiple Google products directly on the

\n

Read More

\n","description":"\n\n\n

Site Kit is the official WordPress plugin from Google for insights about how people find and use your site. Site Kit is the one-stop solution to deploy, manage, and get insights from critical Google tools to make the site successful on the web. It provides authoritative, up-to-date insights from multiple Google products directly on the WordPress dashboard for easy access, all for free.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2019/12/site-kit-by-google-logo-285x160.png","2x":"https://amp-wp.org/wp-content/uploads/2019/12/site-kit-by-google-logo-372x209.png","svg":""},"wporg":false},{"name":"Newspack Blocks","slug":"newspack-blocks","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://github.com/Automattic/newspack-blocks","short_description":"

A collection of useful and easy to use Gutenberg based blocks, developed primarily for the Newspack project.

\n","description":"\n\n\n

A collection of useful and easy to use Gutenberg based blocks, developed primarily for the Newspack project.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2019/11/newspack_blocks-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2019/11/newspack_blocks-372x209.jpg","svg":""},"wporg":false},{"name":"Advanced Ads – Ad Manager & AdSense","slug":"advanced-ads","version":"1.29.0","author":"Thomas Maier, Advanced Ads GmbH","author_profile":"https://profiles.wordpress.org/webzunft","requires":"4.9","tested":"5.8.1","requires_php":"5.6","rating":98,"ratings":{"1":17,"2":1,"3":9,"4":21,"5":1190},"num_ratings":1238,"support_threads":67,"support_threads_resolved":65,"active_installs":100000,"downloaded":5233483,"last_updated":"2021-10-05 8:38am GMT","added":"2014-06-23","homepage":"https://wpadvancedads.com","short_description":"Manage and optimize all ad types. Support for Google AdSense Auto ads, Amazon, image banners, HTML, page builder, ad widget, ad rotations, ads.txt","description":"

Are you looking for a simple ad manager plugin? These are the top arguments to use Advanced Ads:

\n
    \n
  • approved in publishing and ad optimization since 2009
  • \n
  • works with all ad types and networks, including Google AdSense, Google Ad Manager (formerly Google DoubleClick for Publishers, DFP), Amazon ads, or media.net ads
  • \n
  • most features to test and optimize ads
  • \n
  • unlimited ad units
  • \n
  • ads.txt support
  • \n
  • dedicated ad block for the block editor
  • \n
  • Google AdSense Partner, who implements all technical changes early and in 100% compliance with the Google AdSense policies
  • \n
  • the only advertising solution with Ad Health integration and Google AdSense violation checks
  • \n
  • best rated free support
  • \n
\n

This is what our users are saying about Advanced Ads:

\n
\n

We use this plugin to deliver rotating ads on a community news site, and it’s great. Both feature-rich and reliable, your imagination is the limit when it comes to the product you want to create for your users. We’ve delivered over a million ad impressions since we launched less than a year ago, using a combination of sidebar, top, sticky and in-content placements — both HTML5 and images. Advanced Ads makes it easy for our small team to deliver a good experience to our users and our advertisers.
\n mytown304 on wp.org

\n
\n

Would you like to know if there is a certain feature, what the optimized setup would be, or how to implement your client’s demands? Just open a thread in the forum!

\n

Advanced Ads allowed us to grow from 0 to 100 MM monthly ad impressions. Benefit from our experience as a publisher and monetize your website today!

\n

Full Feature List.

\n

ad management

\n
    \n
  • create and display unlimited ad units
  • \n
  • rotate ads
  • \n
  • schedule ads and set start time and expiration date
  • \n
  • target ads by content and user groups
  • \n
  • inject ads into posts and pages automatically without coding
  • \n
\n

ad types

\n

choose between different ad types that enable you to:

\n
    \n
  • insert ads and banners from all ad and affiliate networks (e.g., Google AdSense, Amazon, BuySellAds, Google Ad Manager (formerly Google DoubleClick for Publishers, DFP), Ezoic, media.net, Booking.com, Tradedoubler, Awin, Getyourguide, The Moneytizer, Infolinks…)
  • \n
  • dedicated support for all types of Google AdSense ads, including text and display ads, native ads (In-article, In-feed, matched content), Auto ads, and Auto ads for AMP
  • \n
  • display images and image banners
  • \n
  • create content-rich ads with the WordPress TinyMCE editor
  • \n
  • insert contextual Amazon Native Shopping Ads
  • \n
  • inject HTML, CSS, Javascript or PHP code
  • \n
  • use shortcodes within ads (to also deliver advertisements from another ad plugin like Ad Inserter, AdRotate, Quick AdSense, WP Bannerize, or the Google AdSense Plugin WP QUADS)
  • \n
\n

display ads for WP

\n
    \n
  • auto-inject ads via placements
  • \n
  • use functions to display ads in template files
  • \n
  • use shortcodes to place ads manually in post content
  • \n
  • show ads in the sidebar and in widgets
  • \n
  • disable all ads on specific pages
  • \n
  • display multiple ads (ad blocks)
  • \n
  • display a customizable ad label, e.g., “Advertisements” above each banner ad
  • \n
\n

display conditions

\n

show ads based on conditions like:

\n
    \n
  • individual posts, pages, and other post types
  • \n
  • posts by category, tags, taxonomies, author, and age
  • \n
  • archive pages by category, tags, taxonomies
  • \n
  • special page types like 404, attachment and front page
  • \n
  • hide ads on secondary queries (e.g., posts in sidebars)
  • \n
  • display or hide banners within the post feed
  • \n
  • hide all ads from specific page types, e.g., 404 pages, feed
  • \n
  • hide ads from bots and web crawlers
  • \n
\n

visitor conditions

\n

serve ads by conditions based on the visitor. List of all visitor conditions

\n
    \n
  • display or hide a banner by device: mobile and tablet or desktop
  • \n
  • display or hide a banner by role and for logged-in visitors
  • \n
  • advanced visitor conditions: previously visited URL (referrer), user capability, browser language, browser and device, URL parameters included in Pro
  • \n
  • display ads by geolocation with the Geo Targeting add-on
  • \n
  • display ads by browser width with the Responsive add-on
  • \n
\n
\n

Fantastic plugin and outstanding support
\n I tried at least three other ad plugins for WordPress and ‘Advanced Ads’ is by and far the best one. Last but not least in the support. The first port of call are a number of excellent tutorials. And finally the hands on support. I don’t quite know how he does it but the speed and depth of responses are absolutely amazing.
\n djsawyer on wp.org

\n
\n

ad injection | placements

\n

Placements to insert ads in pre-defined positions in your theme and content. List of all placements

\n
    \n
  • ads after any given paragraph, headline, image, or other HTML element
  • \n
  • ads at the top or bottom of the post content
  • \n
  • ads before closing </head> tag
  • \n
  • ads in the footer
  • \n
  • create split tests and A/B testing
  • \n
  • many more ad positions with add-ons
  • \n
  • automatic insertion of any kind of code into header or footer, not only advertising
  • \n
\n

mobile devices

\n
    \n
  • display ads on mobile and tablets or desktop only
  • \n
  • display responsive image ads
  • \n
  • ads for specific browser sizes only using Responsive Ads
  • \n
  • inserting ads on AMP pages with Responsive Ads
  • \n
\n

Google AdSense

\n

Amazing features of the most powerful and easy Google AdSense plugin.

\n
    \n
  • unlimited Google AdSense ads banners
  • \n
  • pull ad units directly from your Google AdSense account
  • \n
  • show AdSense revenue in WP Admin
  • \n
  • change settings of your Google AdSense ads directly from your WordPress backend
  • \n
  • supports all Google AdSense ad types, including Google AdSense display ads, native ads like In-feed ads, In-article ads, matched content ads, Google AdSense Auto ads, and Google AdSense Auto ads for AMP
  • \n
  • change type and sizes of AdSense ads without going into your Google AdSense account
  • \n
  • hide Google AdSense advertisements on 404 pages by default (to comply with Google AdSense terms)
  • \n
  • insert Google AdSense code for verification and AdSense Auto Ads
  • \n
  • enable AdSense Auto ads on AMP
  • \n
  • easy Ad Health integration and Google AdSense violation checks
  • \n
  • option to remove the Google AdSense background color
  • \n
  • place Google AdSense In-feed ads using the also free In-feed add-on
  • \n
  • assistant for exact sizes of responsive Google AdSense ads with the Responsive add-on
  • \n
  • convert Google AdSense ads into AMP ads automatically with the Responsive add-on
  • \n
  • ads.txt generated with the correct AdSense information automatically
  • \n
  • works along with Google Site Kit or can replace it if you want to control your ad placements
  • \n
\n

\n

\n

Like j4ckson185, there are thousands of happy AdSense users:

\n
\n

Your app is awesome, congratulations! Google Adsense suggests using your app on its official website, it’s incredible!

\n
\n

ads.txt

\n
    \n
  • generates an ads.txt with custom content
  • \n
  • adds the content for AdSense to the ads.txt automatically
  • \n
\n

\n

\n

ad blocker

\n
    \n
  • basic features to prevent ads from being removed by AdBlock and other ad blockers
  • \n
  • prevent ad blockers from breaking sites where plugin scripts are running
  • \n
  • ad blocking detection: show alternative content to ad block users with Pro and improve the monetization of your website
  • \n
\n

Learn more on the plugin homepage.

\n

Thank you for motivating us with your positive review.

\n

Localizations: Arabic, Chinese, Czech, Danish, Dutch, English, French, German, Hungarian, Italian, Japanese, Norwegian, Polish, Portuguese, Russian, Slovak, Spanish, Turkish, Vietnamese

\n
\n

Add-Ons

\n
    \n
  • all add-ons include priority email support
  • \n
  • Advanced Ads Pro – powerful tools for ad optimizations: cache-busting, more placements, lazy loading, ad blocker module, click fraud protection, and many more
  • \n
  • Tracking – track ad impressions and ad clicks with local methods or Google Analytics
  • \n
  • Responsive Ads – target ads to specific browser sizes and create ads for AMP
  • \n
  • Google Ad Manager Integration – a quick and error-free way to load ad units from your Google Ad Manager (formerly Google DoubleClick for Publishers, DFP) account without touching any ad codes
  • \n
  • Geo Targeting – display ads based on the geo location of the visitor
  • \n
  • Sticky Ads – increase click rates with fixed, sticky, and anchor ads
  • \n
  • Fixed Widget for WordPress – turn sidebar widgets into performant fixed sticky ads
  • \n
  • PopUp and Layer Ads – display ads and other content in layers, popups, and interstitials
  • \n
  • Selling Ads – allows you to sell ads on your website fully automated, including payments and advertiser profiles
  • \n
  • Ad Slider – create a simple slider from your ads
  • \n
\n
\n

If you have problems with Advanced Ads, please reach out to our support or open a new topic in our forums on wordpress.org
\n.

\n

Integrations

\n

Advanced Ads integrates with plenty of other plugins:

\n\n","download_link":"https://downloads.wordpress.org/plugin/advanced-ads.1.29.0.zip","tags":{"ad-manager":"ad manager","ad-rotation":"ad rotation","ads":"ads","adsense":"adsense","banner":"banner"},"donate_link":"","icons":{"1x":"https://ps.w.org/advanced-ads/assets/icon-128x128.gif?rev=2293174","2x":"https://ps.w.org/advanced-ads/assets/icon-256x256.gif?rev=2293174"},"wporg":true},{"name":"Syntax-highlighting Code Block (with Server-side Rendering)","slug":"syntax-highlighting-code-block","version":"1.3.1","author":"Weston Ruter","author_profile":"https://profiles.wordpress.org/westonruter","requires":"5.5","tested":"5.8.1","requires_php":"5.6","rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":18},"num_ratings":18,"support_threads":2,"support_threads_resolved":1,"active_installs":1000,"downloaded":12306,"last_updated":"2021-09-21 7:11pm GMT","added":"2019-07-30","homepage":"https://github.com/westonruter/syntax-highlighting-code-block","short_description":"Extending the Code block with syntax highlighting rendered on the server, thus being AMP-compatible and…","description":"

This plugin extends the Code block in WordPress core to add syntax highlighting which is rendered on the server. Pre-existing Code blocks on a site are automatically extended to include syntax highlighting. Doing server-side syntax highlighting eliminates the need to enqueue any JavaScript on the frontend (e.g. Highlight.js or Prism.js) and this ensures there is no flash of unhighlighted code (FOUC?). Reducing script on the frontend improves frontend performance and it also allows for the syntax highlighted code to appear properly in AMP pages as rendered by the official AMP plugin (see also ampproject/amp-wp#972) or when JavaScript is turned off in the browser.

\n

In addition to not adding any JavaScript to the frontend, the stylesheets needed for styling the Code block will only be added to the page if there is a Code block present. The stylesheets are added inline when the Code block is rendered, ensuring that they do not block rendering of any content higher in the page. If stylesheets fail to load for any reason, the block simply renders without styling, with one key exception: highlighted lines are wrapped in mark elements so they’ll get highlighted regardless, including in RSS Feeds and posts syndicated in email (as long as the mark element is supported in the client).

\n

This extended Code block uses language auto-detection to add syntax highlighting, but you can override the language in the block’s settings sidebar. (There is currently no syntax highlighting of the Code block in the editor.) The plugin supports all programming languages that highlight.php supports (being a port of highlight.js). The Code block also is extended to support specifying the aforementioned highlighted lines. There is also a checkbox for whether to show line numbers on the frontend (with the numbers being non-selectable). Lastly, given inconsistencies across themes as to whether lines in a Code block should be wrapped, this plugin adds styling to force them to no-wrap by default, with a checkbox to opt-in to wrapping when desired.

\n

For advanced usage, please see the plugin wiki.

\n

This plugin is developed on GitHub. See list of current issues with the plugin. Please feel free to file any additional issues or requests that you may come across. Pull requests are welcome.

\n

Credits

\n

This is a fork of Code Syntax Block by Marcus Kazmierczak (mkaz), which is also available on WordPress.org. Copyright (c) 2018 Marcus Kazmierczak. Licensed under GPL 2.0 or later.

\n

highlight.php is released under the BSD 3-Clause License. Copyright © 2006-2013, Ivan Sagalaev (maniac@softwaremaniacs.org), highlight.js (original author). Copyright © 2013, Geert Bergman (geert@scrivo.nl), highlight.php

\n","download_link":"https://downloads.wordpress.org/plugin/syntax-highlighting-code-block.1.3.1.zip","tags":{"block":"block","code":"code","code-highlighting":"code highlighting","code-syntax":"code syntax","syntax-highlight":"syntax highlight"},"donate_link":"","icons":{"1x":"https://ps.w.org/syntax-highlighting-code-block/assets/icon.svg?rev=2131108","2x":"https://ps.w.org/syntax-highlighting-code-block/assets/icon-256x256.png?rev=2131108","svg":"https://ps.w.org/syntax-highlighting-code-block/assets/icon.svg?rev=2131108"},"wporg":true},{"name":"Contact Form by WPForms – Drag & Drop Form Builder for WordPress","slug":"wpforms-lite","version":"1.6.9","author":"WPForms","author_profile":"https://profiles.wordpress.org/jaredatch","requires":"4.9","tested":"5.8.1","requires_php":"5.5","rating":98,"ratings":{"1":214,"2":47,"3":56,"4":224,"5":9744},"num_ratings":10285,"support_threads":91,"support_threads_resolved":80,"active_installs":5000000,"downloaded":82704759,"last_updated":"2021-08-26 11:06am GMT","added":"2016-03-14","homepage":"https://wpforms.com","short_description":"The best WordPress contact form plugin. Drag & Drop online form builder that helps you create beautiful contact forms with just a few clicks.","description":"

WordPress Contact Form Builder Plugin

\n

We believe that you shouldn’t have to hire a developer to create a WordPress contact form. That’s why we built WPForms, a drag & drop WordPress form builder that’s EASY and POWERFUL.

\n

WPForms allows you to create beautiful contact forms, feedback form, subscription forms, payment forms, and other types of forms for your site in minutes, not hours!

\n

At WPForms, user experience is our #1 priority. Our pre-built form templates and workflows make WPForms the most beginner friendly contact form plugin in the market.

\n

The WPForms Challenge guides you through creating your first form in under 5 minutes. We walk you through using the form builder all the way to adding a form to a page on your site! WPForms includes integrations for popular page builders like the WordPress Block Editor (Gutenberg), Classic Editor, Elementor, and Divi making the whole process seamless.

\n

WPForms is a 100% mobile responsive contact form solution, so your contact forms will always look great on all devices (mobile, tablet, laptop, and desktop).

\n

WPForms’ contact forms are also highly optimized for web and server performance because we understand the importance of speed when it comes to SEO, marketing, and conversion. We can honestly say that WPForms is one of the fastest WordPress contact form builder plugins in the world.

\n
\n

WPForms Pro
\n This plugin is the lite version of the WPForms Pro plugin that comes with all the contact form features you will ever need including email subscription forms, multi-page contact forms, file uploads, conditional logic, payment integrations, form templates, and tons more. Click here to purchase the best premium WordPress contact form plugin now!

\n
\n

We took the pain out of creating contact forms and made it easy. Here’s why smart business owners, designers, and developers love WPForms, and you will too!

\n

\n

Drag & Drop Contact Form Builder

\n

We were tired of the bloated and buggy contact form builder plugins. That’s why we built WPForms to adapt to your workflow and allow you to create custom contact forms in minutes. By using our easy to use drag and drop online form builder, you can easily add custom form fields, rearrange them, and basically create a complete contact form in 5 minutes or less.

\n

But don’t just take our word. See what one of the WordPress experts are saying:

\n
\n

WPForms is by far the easiest form plugin to use. My clients love WPForms and it’s one of the few plugins they can use without any training. As a developer I appreciate how fast, modern, clean and extensible it is.
\n Bill Erickson – Expert WordPress Consultant

\n
\n

Pre-built Form Templates

\n

Building contact forms in WordPress can be time consuming. Why?

\n

Because every other WordPress contact form builder plugin requires you to build your contact form from scratch. The truth is it’s often not necessary to create a contact form completely from scratch unless you really want to.

\n

Whether you’re looking to create a simple contact form, marketing form, request a quote form, donation form, payment order form, registration form, or a subscription form, we have a form template for you inside our contact form builder.

\n

WPForms comes with pre-built form templates to help you save time. You can add, remove, or re-arrange fields as necessary.

\n

See 100+ Pre-Made WPForms Form Template Demo

\n

Mobile Ready, SEO Friendly and Optimized for Speed

\n

WPForms’ contact forms are 100% responsive and mobile-friendly by default. We also optimized every query on the front-end and the back-end to ensure maximum speed – Yes, WPForms is one of the fastest WordPress contact form plugin.

\n

You can embed your contact form on any page with optimized title and description. With the speed and proper formatting, WPForms is also one of the most SEO friendly contact form plugin.

\n

All the Fields & Features that You Need to Succeed

\n

From star ratings to file uploads to multi-page contact forms with progress bar, we have all the fields you need.

\n

You can easily integrate your contact forms with an email marketing service or collect payments for bookings and orders. WPForms allows you to do it all.

\n

The best part is, you can do it all without hiring a developer.

\n

See what one business owner has to say about WPForms’ contact form:

\n
\n

As a business owner, time is my most valuable asset. WPForms allow me to create smart contact forms with just a few clicks. With their pre-built form templates and the drag & drop builder, I can create a new form that works in less than 2 minutes without writing a single line of code. Well worth the investment.
\n David Henzel – Co-founder of MaxCDN

\n
\n

Surveys & Polls

\n

Along with contact form, you can also use WPForms to create surveys and polls.

\n

Our WordPress Survey plugin addon comes with smart survey fields including likert scale, star ratings, multiple choice, Net Promoter Score (NPS), and more, so you can create custom survey forms like Survey Monkey (without the high costs).

\n

WPForms offer the best-in class survey reporting. You can use our interactive reports to customize the graphs, export them for your presentations, and even display the aggregate results to your users.

\n

The best part about WPForms survey reports is that it can retroactively work on any old contact form or feedback survey contact form created with WPForms.

\n

Thousands of businesses love WPForms surveys for creating employee feedback form, customer feedback form, online petition form, and more.

\n

You can also use the surveys & polls addon to easily create a poll on your site. To save you time when creating a user poll, we have added a built-in poll forms template. Our poll feature offers real-time reports, so you can share poll results with the user immediately after they submit their vote.

\n

Just like the contact form, you can embed your surveys and polls inside any post, page, or widget area in WordPress.

\n

Membership and Default WordPress Forms

\n

Aside from building simple contact forms which every WordPress site needs, WPForms also helps you create better default WordPress forms.

\n

For example, you can use WPForms to create custom WordPress login forms and custom WordPress user registration forms which are great for membership sites.

\n

For membership sites, you can also use WPForms to create a password-protected contact form or even a members only contact form which is restricited to logged-in users only.

\n

Even if you’re not using a WordPress membership plugin, you can use WPForms to create membership registration forms, online RSVP forms, and other address book contact forms.

\n

Bloggers and publishers can use our WordPress post submission forms to accept guest posts, testimonials contact form to collect testiomnials, and partnership agreement forms to grow their business.

\n

Payment Form, Donation Form, Booking Form, and More

\n

While WPForms started out as a contact form plugin, it has evolved into a powerful custom forms solution that you can use to create a payment form, donation form, registration form, online booking form, mobile form, and basically any type of custom form you need.

\n

WPForms integrates with both PayPal and Stripe, so you can easily create a credit card payment form to accept payments on your website. If you’re using SSL, then you can use our Stripe Payment form to accept credit card payments. Alternatively you can use our PayPal payment form to make a donation form and accept payments online.

\n

Aside from simple order forms, business owners also use WPForms to create custom product purchase forms, t-shirt order forms, online booking forms, and more.

\n

We understand that sometimes you may need to create a contact form that require a signature. WPForms comes with a signature field to collect user signature on your WordPress forms or even create custom signature forms.

\n

You can do all of this while still using the same easy-to-use contact form builder that’s loved by over 4 million users.

\n
\n

I am so impressed with this plugin. I decided to give it a shot over some of the other form plugins, and I am so glad I did. It works well, is so easy to use and customize. The support is amazing on top of it all. I got the pro version because I was so pleased. Highly recommend.
\n Micky73 – WordPress user

\n
\n

Forms that are Optimized for Conversion and Results

\n

With our Form Pages addon, you can create distraction-free custom form landing pages like Google Forms and Wufoo right inside WordPress, so you can increase conversions without the high costs (See Form Pages Demo).

\n

To improve form completion rate, we created Conversational Forms® which helps you make your generic feedback form and other custom contact forms feel more human by adding an interactive form layout. Our conversational forms are similar to Typeform without the high subscription costs (See Conversational Forms Demo).

\n

WPForms also has other conversion optimization features such as our smart form logic that lets you create dynamic contact forms where fields change based on user’s answer, multi-page contact forms with progress bar, and other advanced contact forms.

\n

WPForms form analytics integration with MonsterInsights allow you to easily track your lead capture forms, newsletter signup forms, request a quote contact form, and other important forms on your site.

\n

Easy to Customize and Extend

\n

You can easily customize your contact forms with our section dividers, HTML blocks, and custom CSS.

\n

If you’re using Elementor or Divi page builders our native integrations let you easily customize the style of your forms.

\n

We also knew that our developer friends may want to extend simple contact forms further. That’s why WPForms come with tons of hooks and filters to create custom functionality.

\n

Since contact forms are essential for marketing, WPForms is a must have plugin for every website!

\n

Full WPForms Feature List

\n
    \n
  • Online Form Builder – Our powerful drag & drop contact form builder allows you to easily create WordPress contact forms and other online forms in just a few minutes without writing any code.
  • \n
  • 100% Responsive – Mobile Friendly contact forms.
  • \n
  • GDPR Friendly – Make your contact form GDPR compatible with just a few clicks.
  • \n
  • Form Templates – Use our pre-built form templates to save time. Never start from scratch again (see all form templates demos).
  • \n
  • Spam Protection – WPForms provides smart anti-spam protection out-of-the-box, plus direct integrations with hCaptcha and Google reCAPTCHA.
  • \n
  • Instant Form Notification – Quickly respond to incoming inquiries with our instant contact form notification system.
  • \n
  • Smart Form Confirmation – Show a custom success message, or redirect users to a custom thank you page.
  • \n
  • File Uploads – Collect files and media through your contact forms with File Uploads.
  • \n
  • Multi-Page Forms – Split long forms into multiple pages with progress bar to improve user experience.
  • \n
  • Smart Conditional Logic – Show or hide fields and contact form sections based on user behavior.
  • \n
  • Signature Forms – Create signature forms or add the signature field to your contact form, application form, booking form, etc.
  • \n
  • User Registration Forms – Create custom user registration form and custom login form in WordPress.
  • \n
  • Post Submissions – Collect user-submitted content in WordPress with our front-end post submission form. Great for guest posts, testimonials, business directory, listings, etc.
  • \n
  • Geolocation – Display location information about your users.
  • \n
  • Custom Captchas – Create custom captchas for your contact form.
  • \n
  • Surveys and Polls – Easily create surveys forms and analyze the data with interactive reports.
  • \n
  • Form Abandonment – Unlock more leads and grow your business with partial-form submission.
  • \n
  • Form Locker – Manage form permissions and add access control rules including password-protected forms, members only forms, limit contact form entry per person, close form after specific date / time, etc.
  • \n
  • Offline Forms – Let your visitors save their entered data offline and submit when their internet connection is restored.
  • \n
  • Form Landing Pages – Create “distraction-free” form landing pages to boost conversions. Great Google Forms and Wufoo alternative.
  • \n
  • Conversational Forms – Interactive form layout that makes your form feels more human and boost overall completion rate. Great for surveys and registration forms. Perfect Typeform alternative for WordPress without the high costs.
  • \n
  • Webhooks – Send form entry data to secondary tools and external services. No code required, and no need for a third party connector.
  • \n
  • User Journey Reporting – Discover the steps your visitors take before they submit your forms. Right in the WordPress dashboard, you can easily see the content that’s driving the most valuable form conversions.
  • \n
\n

Integrations

\n
    \n
  • PayPal Payment Forms – Create PayPal forms to easily collect payments, donations, and online orders.
  • \n
  • Stripe Forms – Easily collect credit card payments, donations, and online orders with our Stripe addon.
  • \n
  • Authorize.Net Forms – Connect your WordPress site with Authorize.Net to collect payments, donations, and online orders.
  • \n
  • Mailchimp Forms – Create Mailchimp newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • AWeber Forms – Create AWeber newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • Campaign Monitor Forms – Create Campaign Monitor newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • GetResponse Forms – Create GetResponse newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • Constant Contact Forms – Create Constant Contact newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • Drip Forms – Create Drip newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • ActiveCampaign Forms – Add contacts to your ActiveCampaign account, record events, add notes to contacts, and more.
  • \n
  • Sendinblue Forms – Create Sendinblue forms to automate your marketing and engage your subscribers.
  • \n
  • Salesforce Forms – Easily send your WordPress form contacts and leads to your Salesforce CRM account.
  • \n
  • Zapier Addon – Connect your WordPress forms with over 1000+ apps. Route your contact form data to your favorite CRM, email marketing service, etc.
  • \n
\n

After reading this feature list, you can probably imagine why WPForms is the best WordPress contact form plugin in the market.

\n

Give WPForms a try.

\n

Want to unlock more features? Upgrade to our Pro version.

\n

Credits

\n

This plugin is created by Jared Atchison and Syed Balkhi.

\n

Branding Guideline

\n

WPForms® is a registered trademark of WPForms LLC. When writing about the contact form plugin by WPForms, please make sure to uppercase the initial 3 letters.

\n
    \n
  • WPForms (correct)
  • \n
  • WP Forms (incorrect)
  • \n
  • wpforms (incorrect)
  • \n
  • wpform (incorrect)
  • \n
\n

What’s Next

\n

If you like this plugin, then consider checking out our other projects:

\n
    \n
  • OptinMonster – Get More Email Subscribers with the most popular conversion optimization plugin for WordPress.
  • \n
  • MonsterInsights – See the stats that matter and grow your business with confidence. The best Google Analytics plugin for WordPress.
  • \n
  • SeedProd – Create beautiful landing pages with our powerful drag & drop landing page builder.
  • \n
  • WP Mail SMTP – Improve email deliverability for your contact form with the most popular SMTP plugin for WordPress.
  • \n
  • RafflePress – Best WordPress giveaway and contest plugin to grow traffic and social followers.
  • \n
  • Smash Baloon – #1 social feeds plugin for WordPress – display social media content in WordPress without code.
  • \n
  • AIOSEO – The original WordPress SEO plugin to help you rank higher in search results (trusted by over 2 million sites).
  • \n
  • Push Engage – Connect with visitors after they leave your website with the leading web push notification plugin.
  • \n
  • TrustPulse – Add real-time social proof notifications to boost your store conversions by up to 15%.
  • \n
\n

Visit WPBeginner to learn from our WordPress Tutorials and find out about other best WordPress plugins.

\n

Notes

\n

WPForms is absolutely, positively the most beginner friendly WordPress contact form plugin on the market. It is both easy and powerful.

\n

We took the pain out of creating online forms and made it easy. Check out all WPForms features.

\n

Also, I’m the founder of WPBeginner, the largest WordPress resource site for beginners. It was a huge priority for me to make a WordPress contact form plugin that beginners can use without any training.

\n

I feel that we have done that here. I hope you enjoy using WPForms.

\n

Thank you

\n

Syed Balkhi

\n","download_link":"https://downloads.wordpress.org/plugin/wpforms-lite.1.6.9.zip","tags":{"contact-form":"contact form","contact-form-plugin":"contact form plugin","custom-form":"custom form","form-builder":"form builder","forms":"forms"},"donate_link":"","icons":{"1x":"https://ps.w.org/wpforms-lite/assets/icon.svg?rev=2574198","2x":"https://ps.w.org/wpforms-lite/assets/icon-256x256.png?rev=2574201","svg":"https://ps.w.org/wpforms-lite/assets/icon.svg?rev=2574198"},"wporg":true},{"name":"MonsterInsights – Google Analytics Dashboard for WordPress (Website Stats Made Easy)","slug":"google-analytics-for-wordpress","version":"8.1.0","author":"MonsterInsights","author_profile":"https://profiles.wordpress.org/chriscct7","requires":"4.8.0","tested":"5.8.1","requires_php":"5.5","rating":92,"ratings":{"1":194,"2":39,"3":35,"4":76,"5":2097},"num_ratings":2441,"support_threads":10,"support_threads_resolved":10,"active_installs":3000000,"downloaded":101455750,"last_updated":"2021-09-30 7:56am GMT","added":"2007-09-14","homepage":"https://www.monsterinsights.com/?utm_source=liteplugin&utm_medium=pluginheader&utm_campaign=pluginurl&utm_content=7%2E0%2E0","short_description":"The best free Google Analytics plugin for WordPress. See how visitors find and use your website, so you can grow your business.","description":"

Google Analytics Plugin for WordPress

\n

With over 3 million active installs, MonsterInsights is the most popular Google Analytics plugin for WordPress.

\n

We believe that it’s easy to double your traffic and sales when you know exactly how people find and use your website. MonsterInsights shows you the analytics and stats that matter, so you can grow your business with confidence.

\n

At MonsterInsights, we make it “effortless” to properly connect your WordPress site with Google Analytics, so you can start making data-driven decisions to grow your business.

\n

Unlike other Google Analytics plugins, MonsterInsights allow you to enable all advanced Google Analytics tracking features with just a few clicks (no need to hire a developer).

\n

The best part is that MonsterInsights comes with an analytics dashboard for WordPress that shows you actionable analytics reports right inside your WordPress dashboard. We have created customized reports that eliminate the fluff and only show you the stats that matter, so you can see exactly what’s working and what’s not!

\n

Simply put, MonsterInsights is the most complete Google Analytics plugin for WordPress that’s both EASY and POWERFUL.

\n

That’s why millions of small businesses and top companies like Microsoft, Bloomberg, FedEx, Yelp, Subway, etc. use MonsterInsights to setup Google Analytics on their WordPress sites.

\n
\n

MonsterInsights Pro
\n This plugin is the lite version of MonsterInsights Pro plugin that comes with all the tracking features you will ever need including events tracking, ecommerce tracking, custom dimensions tracking, page speed reports, popular post tracking, custom dimensions, affiliate link tracking, and tons more. Click here to purchase the best premium Google Analytics plugin for WordPress now!

\n
\n

We took the pain out of installing Google Analytics in WordPress and made it easy. Here’s why over 3 million smart business owners, designers, and developers love MonsterInsights, and you will too!

\n

\n

Quick & Easy Google Analytics Setup

\n

Properly setting up Google Analytics is complicated. You have to either hire a developer or learn how to add advanced code snippets to your website in many different areas. This process can take days or weeks…and can even break your website!

\n

With MonsterInsights, we made it “effortless” to properly setup Google Analytics in WordPress. Yes, you can enable all advanced Google Analytics features with just a few clicks.

\n

If you can point-and-click, then you can set up Google Analytics inside WordPress and start seeing insights in under 15 minutes (no code necessary).

\n

We keep up with all Google Analytics updates, so you can sleep well at night knowing that your website will always stay up to date with the newest features.

\n

See what one business owner is saying about MonsterInsights:

\n
\n

It just works. Really easy way to insert Google Analytics tracking code and keep it there when switching themes. No need to copy/paste code anywhere. This is the best way to handle Google Analytics in WordPress.
\n Steven Gliebe

\n
\n

Google Analytics Dashboard + Real Time Stats

\n

Our goal at MonsterInsights is to make Google Analytics easy and accessible for everyone.

\n

We understand that Google Analytics has a steep learning curve which often prevents small business owners from making informed decisions to grow their business.

\n

That’s why MonsterInsights comes with a built-in Google Analytics Dashboard for your WordPress site, so you can see all the useful information about your visitors right inside your WordPress dashboard without needing to login somewhere else.

\n

We have even created customized reports to help you filter through the noise and see the stats that really matter!

\n
    \n
  • \n

    Audience Report helps you get to know your visitors in a whole new way. It shows you detailed insights like which country your visitors are coming from, what are they most interested in, which device are they using, their age, gender, and a whole lot more. You can use this demographics report and audience clues to tweak your website design and content accordingly.

    \n
  • \n
  • \n

    **Publishers Report ** helps you understand which pages your visitors are arriving, and which pages they are leaving from. Designed specifically for blogs and other resource sites, this powerful report will show you which outbound links are getting clicked so you can easily optimize for higher conversions.

    \n
  • \n
  • \n

    Behavior Report shows you exactly how people find your website, which keywords did they search for, who referred them, what did they click on your site, and more. You can use these useful stats to identify low-hanging fruits, new partnership opportunities, and promotional areas to focus on.

    \n
  • \n
  • \n

    Content Report shows you stats on exactly which content gets the most visits, so you can stop guessing and start creating content that gets more traffic and conversion.

    \n
  • \n
  • \n

    Ecommerce Report shows you important store stats like total revenue, conversion rate, average order value, top referral sources, and more (all in one place).

    \n
  • \n
  • \n

    Forms Report shows you conversion stats for various contact forms and lead forms on your website, so you can improve the conversions to grow your business.

    \n
  • \n
  • \n

    Search Console Report shows you exactly how well your website is ranking in Google, so you can further optimize your SEO to grow your organic traffic.

    \n
  • \n
  • \n

    Custom Dimensions Report helps you dig deeper by showing you useful stats like who are your most popular authors, what are the best publication times, which are your most popular categories or tags, how well are your Yoast focus keywords and SEO score performing, and more.

    \n
  • \n
  • \n

    Site Speed Report makes it easy to track pagespeed insights and loading times for your website and get the information you need to improve user experience and your SEO rankings.

    \n
  • \n
\n

Our custom Google Analytics Dashboard reports are based on over 12+ years of online business experience. We built MonsterInsights to be the Google Analytics plugin that we wish we had.

\n

We currently use MonsterInsights on all our portfolio companies which include both media sites generating tens of millions of pageviews and eCommerce sites generating millions in sales.

\n

That’s why we can confidently say that MonsterInsights is the ultimate Google Analytics Shortcut for seeing the stats that matter and making data-driven decisions to grow your business.

\n
\n

I love being able to drill down into the analytics via the reporting feature. I have the PRO version and it makes a big difference what you can analyze. I’m glad that I can integrate with Pretty Links too!
\n Kim Beasley – MonsterInsights user

\n
\n

Google Analytics Enhanced Ecommerce Tracking Made Easy

\n

Google Analytics Enhanced Ecommerce tracking is a powerful feature that lets you track user behavior across your online store starting from product views to checkout page to thank you page and beyond.

\n

With MonsterInsights’ easy WooCommerce integration, you can setup WooCommerce analytics with literally 1-click.

\n

Once you have enabled WooCommerce tracking, MonsterInsights will show you all important WooCommerce metrics in a single dashboard including WooCommerce conversion rate, top products in your WooCommerce store, total transactions, total revenue, average order value, top referral sources, and more.

\n

Our WooCommerce analytics report also includes other detailed WooCommerce event tracking data like total add to carts, total removed from cart, time to purchase, and sessions to purchase.

\n

For those who want to go beyond our WooCommerce stats dashboard, you can easily open up the Google Analytics dashboard to combine WooCommerce data with other secondary dimensions and filters to find exactly what you’re looking for.

\n

Aside from WooCommerce Google Analytics integration, MonsterInsights’ eCommerce addon also offers seamless integration for the Easy Digital Downloads plugin.

\n

Our Easy Digital Downloads Google Analytics integration allows you to set up Enhanced Ecommerce Tracking on your store with just 1-click.

\n

Simply put, MonsterInsights’ Enhanced Ecommerce for WordPress feature is by far the easiest and most powerful in the market.

\n

Google Analytics + GDPR Compliance

\n

MonsterInsights helps make Google Analytics GDPR compliance easier for business owners.

\n

Our EU compliance addon allows you to:

\n
    \n
  • Anonymize IP in Google Analytics
  • \n
  • Disable the Demographics and Interest Reports for Remarketing and Advertising
  • \n
  • Disable UserID and author name tracking
  • \n
  • Enable the ga() compatibility mode
  • \n
  • Integrate with Cookie Notice and CookieBot plugins to collect user consent before tracking
  • \n
  • Integrate with Google AMP Consent Box before enable tracking
  • \n
  • Integrate with Google Analytics’s Chrome browser opt-out extension and built-in cookie opt-out system
  • \n
  • Offer Easy Opt Out link for Google Analytics tracking
  • \n
\n

While no single plugin can guarantee 100% GDPR compliance in WordPress, MonsterInsights goes to great length in helping business owners with GDPR compliance.

\n

For more details, see: GDPR and MonsterInsights – Everything You Need to Know.

\n

Universal Tracking + Google Analytics for AMP and Instant Articles

\n

MonsterInsights uses Google Analytics universal tracking, so you can track your users across devices and platforms.

\n

Accelerated Mobile Pages (AMP) is a project by Google that helps you speed up your website. However if you don’t set it up properly, Google AMP can cause you to lose your website analytics. Our Google Analytics AMP integration allows you to have accurate tracking on all AMP enabled pages. It works seamlessly with AMP for WordPress plugin.

\n

We also offer 1-click Google Analytics integration with Facebook Instant Articles.

\n

At MonsterInsights, we always stay ahead of the curve in helping you integrate WordPress with the latest Google Analytics tracking features.

\n
\n

Analytics for PROs! This plugin brings it all, great features and helpful info to easily see what you are doing.
\n Frank van der Sluijs

\n
\n

Google AdSense Tracking and Affiliate Link Tracking

\n

With MonsterInsights Ads tracking addon, publishers can easily track the performance of their Google AdSense Ads inside their Google Analytics dashboard.

\n

Our affiliate link tracking makes it easy for bloggers and affiliate marketers to track their affiliate links with Google Analytics.

\n

MonsterInsights uses event tracking for all WordPress outbound link tracking which is far more accurate than any built-in WordPress analytics solution.

\n

Unlike other WordPress analytics plugin, our Google Analytics affiliate link tracking does NOT slow down your website because all events are recorded via JavaScript and sent straight to your account.

\n

Most other WordPress stats plugin track data on your WordPress hosting server which slows down your website and does not scale for larger websites.

\n

Since our affiliate link tracking uses Google Analytics’ powerful servers, we can skip WordPress entirely.

\n

MonsterInsights’ affiliate link tracking feature works with all WordPress affiliate link management plugins including Pretty Links, Thirsty Affiliates, and others.

\n

Custom Dimensions Tracking, Custom Google Analytics Event Tracking, and More

\n

Our Google Analytics event tracking feature for WordPress doesn’t just stop at affiliate link tracking.

\n

You can use MonsterInsights custom Google analytics event tracking feature to easily add outbound-link tracking, file downloads tracking, call-to-action button tracking, hashmark tracking, telephone link tracking, and more.

\n

Our powerful Forms Tracking addon uses Google Analytics custom event tracking feature to enable form analytics in WordPress. With just 1-click, you can enable form conversion tracking for your contact forms, lead generation forms, registration forms, surveys, and any other type of form in WordPress.

\n

MonsterInsights’ Custom Dimensions addon allows you to push WordPress analytics even further. You can use Google Analytics custom dimensions to generate helpful WordPress stats for:

\n
    \n
  • Author Tracking – see stats for each author to find which author’s posts generate the most traffic.
  • \n
  • Post Type Tracking – see stats for WordPress post types to find out which sections are performing the best.
  • \n
  • Category Tracking – see stats for your WordPress categories to find out which sections of your sites are the most popular.
  • \n
  • Tags Tracking – see stats for your WordPress tags to find out which tags are the most popular.
  • \n
  • SEO Score Tracking – see stats for your Yoast SEO score and see how it impacts your traffic.
  • \n
  • Focus Keyword Tracking – see stats for Yoast focus keyword and see how it correlates with your traffic.
  • \n
  • Logged-in User Tracking – see WordPress stats for what percentage of your users are logged-in.
  • \n
  • User ID Tracking – see stats for each individual logged-in user’s activity through User ID custom dimension – great for Ecommerce and membership sites.
  • \n
  • Published Time Tracking – track the performance of your posts based on their published time.
  • \n
\n

Simply put, MonsterInsights allow you to take full advantage of all the powerful Google Analytics features.

\n
\n

I like how simple it is for client users and how I can turn on the advanced features for myself to get all the details right.
\n Skip Shean

\n
\n

Google Analytics Dashboard Plugin for WordPress Multisite Networks

\n

MonsterInsights is the most popular analytics plugin for adding Google Analytics to WordPress multisite.

\n

We have built-in all permissions and controls that you would need to successfully run Google Analytics on a WordPress multi-site.

\n

You can control who has access to view the Google Analytics Dashboard report in WordPress. Our permissions setting allows you to hide analytics reports for specific user roles.

\n

Similarly, we understand that some sites may want to exclude logged-in users from tracking. MonsterInsights gives you granular control to exclude admin in Analytics as well as other user roles.

\n

Our performance addon allows you to adjust sample rate and site speed sample rates for Google Analytics.

\n

By now you can probably see why MonsterInsights has become the most popular Google Analytics plugin for WordPress.

\n

We understand Google Analytics better than any other analytics plugin for WordPress.

\n

Full MonsterInsights Feature List

\n
    \n
  • Quick and Easy Setup – Easily setup Google Analytics for WordPress with just a few clicks (no coding needed)
  • \n
  • Real Time Stats – See real time stats inside your Google Analytics dashboard.
  • \n
  • Universal Tracking – Get better insights with Google Analytics’ universal tracking.
  • \n
  • Google Analytics Dashboard – See the stats that matter from right inside your WordPress dashboard with custom Publisher Report, Ecommerce report, and Search Console report.
  • \n
  • Google Analytics 4 Support – Easily set up and send proper website tracking data to Google Analytics 4
  • \n
  • eCommerce Tracking – Add Google Analytics Ecommerce tracking to WordPress.
  • \n
  • WooCommerce Google Analytics – Add Enhanced Ecommerce Tracking to your WooCommerce store.
  • \n
  • Easy Digital Downloads Google Analytics – Add Enhanced Ecommerce Tracking to your EDD store.
  • \n
  • Ads Tracking – Track your Google Adsense ads with Google Analytics.
  • \n
  • Affiliate Link Tracking – Track your affiliate links and get stats that matter.
  • \n
  • File Download Tracking – Enable file download stats with just a click.
  • \n
  • Custom Link Tracking – Track your outbound link clicks with Google Analytics.
  • \n
  • Events Tracking – Track custom button and banner clicks with Google Analytics.
  • \n
  • Custom Dimensions Tracking – Enable Google analytics custom dimensions tracking for WordPress.
  • \n
  • Author Tracking – See author stats and discover who’s the most popular author on your site.
  • \n
  • Popular Post Tracking – See which blog post and section is the most popular.
  • \n
  • Contextual Insights – Get actionable tips on how to improve engagement and get more visitors based on your site’s traffic.
  • \n
  • Headline Analyzer – Get more clicks and improve SEO following suggestions from our Headline Analyzer directly in the WordPress editor
  • \n
  • Custom Post Type Tracking – Track the performance of your custom post types.
  • \n
  • Referral Tracking – See how visitors are finding your website to better focus your marketing efforts.
  • \n
  • Performance Tracking – Control the performance rate and sample rate for your Google Analytics report.
  • \n
  • Enhanced Link Attribution – Get better analytics with enhanced link attribution.
  • \n
  • Email Summaries – Your site’s Google Analytics traffic report delivered straight to your inbox every week.
  • \n
  • Google Analytics for AMP – Add proper tracking for Google AMP.
  • \n
  • Google Analytics for Facebook Instant Articles – Add proper tracking for Facebook Analytics.
  • \n
  • Google Analytics GDPR Compliance – EU compliance addon helps you improve Google Analytics GDPR compliance by adding anonymize IP, cookie consent for opt-out tracking, and more.
  • \n
  • Form Conversion Tracking – Track conversions for your WordPress forms. Works with all popular plugins including WPForms, Contact Form 7, Gravity Forms, Formidable Forms, and more.
  • \n
  • Google Optimize Tracking – Enable Google Analytics support for Google Optimize A/B Testing.
  • \n
  • Google Analytics Tools – Helpful tools for Google Analytics such as UTM link tracking builder.
  • \n
  • Want us to add something else? Suggest a feature and we’ll get it added!
  • \n
\n

After reading this exhaustive feature list, you can probably imagine why MonsterInsights is the best Google Analytics plugin for WordPress.

\n

Give MonsterInsights a try.

\n

Want to unlock even more features? Upgrade to our Pro version.

\n
\n

Simple, yet powerful. Amazing piece of plugin, does exactly what expected and even more.
\n Matt Jaworski

\n
\n

Popular Google Analytics Tutorials

\n\n

Note for Beginners

\n

Like all WordPress plugins, Google Analytics by MonsterInsights is only available for self-hosted WordPress sites. This means you will need to switch from WordPress.com to WordPress.org if you want to use this plugin on your WordPress site.

\n

For more details, see this infographic on self hosted WordPress.org vs free WordPress.com

\n

Credits

\n

This plugin is created by Chris Christoff and Syed Balkhi with sponsorship from WPBeginner.

\n

Branding Guidelines

\n

MonsterInsights® is a registered trademark of MonsterInsights LLC. When writing about the Google Analytics for WordPress plugin by MonsterInsights, please make sure to uppercase the first letters of both word.

\n
    \n
  • MonsterInsights (correct)
  • \n
  • Monster Insights (incorrect)
  • \n
  • monsterinsights (incorrect)
  • \n
  • monsterinsight (incorrect)
  • \n
\n

What’s Next

\n

If you like this plugin, then consider checking out our other projects:

\n
    \n
  • OptinMonster – Get More Email Subscribers
  • \n
  • WPForms – Best WordPress Contact Form Plugin
  • \n
  • AIOSEO – The original WordPress SEO plugin to help you rank higher in search results (trusted by over 2 million sites)
  • \n
  • SeedProd – Most popular coming soon & maintenance mode plugin for WordPress
  • \n
  • WP Mail SMTP – Improve email deliverability for your contact form with the most popular SMTP plugin for WordPress
  • \n
  • RafflePress – Best WordPress giveaway and contest plugin to grow traffic and social followers
  • \n
  • Smash Balloon – #1 social feeds plugin for WordPress – display social media content in WordPress without code
  • \n
  • PushEngage – Connect with visitors after they leave your website with the leading web push notification plugin
  • \n
  • TrustPulse – Add real-time social proof notifications to boost your store conversions by up to 15%
  • \n
\n

This plugin would not be possible without the help and support of WPBeginner, the largest WordPress resource site. You can learn from our free WordPress Tutorials like how to install WordPress, choose the best WordPress hosting, WordPress glossary, and more.

\n

You can also learn about other best WordPress plugins.

\n","download_link":"https://downloads.wordpress.org/plugin/google-analytics-for-wordpress.8.1.0.zip","tags":{"google-analytics":"google analytics","google-analytics-dashboard":"google analytics dashboard","google-analytics-widget":"google analytics widget","woocommerce-stats":"WooCommerce stats","wordpress-analytics":"WordPress analytics"},"donate_link":"http://www.wpbeginner.com/wpbeginner-needs-your-help/","icons":{"1x":"https://ps.w.org/google-analytics-for-wordpress/assets/icon.svg?rev=1598927","2x":"https://ps.w.org/google-analytics-for-wordpress/assets/icon-256x256.png?rev=1598927","svg":"https://ps.w.org/google-analytics-for-wordpress/assets/icon.svg?rev=1598927"},"wporg":true},{"name":"Atomic Blocks – Gutenberg Blocks Collection","slug":"atomic-blocks","version":"2.9.0","author":"atomicblocks","author_profile":"https://profiles.wordpress.org/atomicblocks","requires":"5.3","tested":"5.5.6","requires_php":"5.6","rating":86,"ratings":{"1":5,"2":0,"3":1,"4":6,"5":31},"num_ratings":43,"support_threads":1,"support_threads_resolved":0,"active_installs":40000,"downloaded":996880,"last_updated":"2020-10-28 4:53pm GMT","added":"2018-03-26","homepage":"https://atomicblocks.com","short_description":"A collection of beautiful, customizable Gutenberg blocks for the new block editor.","description":"

Atomic Blocks has moved!

\n

Same powerful blocks, same beautiful designs, same innovative team. Atomic Blocks has been renamed to Genesis Blocks. Learn more about Genesis Blocks. With our migration tool built right into Genesis Blocks, the transition between plugins will be simple and seamless – plus you’ll be ready to receive the new blocks and features we’re releasing soon.

\n

Atomic Blocks is a collection of page building blocks for the new Gutenberg block editor. Building pages with the block editor and Atomic Blocks gives you more control to quickly create and launch any kind of site you want!

\n

Installing the customizable Atomic Block plugin adds a collection of beautiful, site-building blocks to help you customize page layouts, increase engagement, and get results for your business. Atomic Blocks provides everything from customizable buttons, to beautifully-designed page sections and full-page layout designs via the Section & Layout block.

\n

Along with the content blocks you’ll find in Atomic Blocks, we’re also publishing helpful articles and tutorials to help you get started with Gutenberg.

\n

New Section and Layout Block!

\n

\n

On top of the handy, time-saving blocks already found in Atomic Blocks, we’re excited to introduce the brand new Section and Layout block! This block comes with a library of pre-designed sections and layouts to help you quickly and easily build a beautiful site with the new block editor.

\n

Using the Section and Layout modal window, you can browse designs by category, search, and even add sections and layouts to a Favorites tab for quick access later. Paired with the free Atomic Blocks theme, which has support for full-width, block-based page building, you have everything you need to start building your site today!

\n

Atomic Blocks currently includes the following blocks:

\n\n

Atomic Blocks WordPress Theme

\n

We’ve created a beautiful WordPress theme to help you get started with the Atomic Blocks plugin and the new WordPress block editor. The theme integrates seamlessly with the blocks you’ll find in the plugin!

\n\n

In addition to the Atomic Block Theme, we’ve built Revolution Pro with the StudioPress team. This theme is built from the ground up with blocks—Gutenberg core and Atomic. Using this Theme and the Genesis One-Click Theme Install you can have a new block-based site up and running in minutes.

\n\n

Google AMP Support

\n

The Accelerated Mobile Pages (AMP) project is a publishing format created by Google to enhance site performance for mobile website users. AMP pages are specially designed for Google search users to quickly load website pages without using any extraneous data. Atomic Blocks has support for AMP built into each block!

\n

Atomic Blocks Help File

\n

We’ve created a handy help file that you can check out here. The help file covers how to setup the plugin and get started with the blocks.

\n

The help file is also available in the plugin once activated. Click the Atomic Blocks admin menu item to visit the Getting Started page.

\n

View the plugin help file

\n

Follow Along:

\n\n","download_link":"https://downloads.wordpress.org/plugin/atomic-blocks.2.9.0.zip","tags":{"blocks":"blocks","editor":"editor","gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","page-builder":"page builder"},"donate_link":"https://atomicblocks.com","icons":{"1x":"https://ps.w.org/atomic-blocks/assets/icon-128x128.jpg?rev=1914920","2x":"https://ps.w.org/atomic-blocks/assets/icon-256x256.jpg?rev=1914921"},"wporg":true},{"name":"Akismet Spam Protection","slug":"akismet","version":"4.2.1","author":"Automattic","author_profile":"https://profiles.wordpress.org/automattic","requires":"5.0","tested":"5.8.1","requires_php":false,"rating":94,"ratings":{"1":40,"2":10,"3":13,"4":45,"5":811},"num_ratings":919,"support_threads":12,"support_threads_resolved":8,"active_installs":5000000,"downloaded":219786579,"last_updated":"2021-10-01 6:28pm GMT","added":"2005-10-20","homepage":"https://akismet.com/","short_description":"The best anti-spam protection to block spam comments and spam in a contact form. The most trusted antispam solution for WordPress and WooCommerce.","description":"

Akismet checks your comments and contact form submissions against our global database of spam to prevent your site from publishing malicious content. You can review the comment spam it catches on your blog’s “Comments” admin screen.

\n

Major features in Akismet include:

\n
    \n
  • Automatically checks all comments and filters out the ones that look like spam.
  • \n
  • Each comment has a status history, so you can easily see which comments were caught or cleared by Akismet and which were spammed or unspammed by a moderator.
  • \n
  • URLs are shown in the comment body to reveal hidden or misleading links.
  • \n
  • Moderators can see the number of approved comments for each user.
  • \n
  • A discard feature that outright blocks the worst spam, saving you disk space and speeding up your site.
  • \n
\n

PS: You’ll be prompted to get an Akismet.com API key to use it, once activated. Keys are free for personal blogs; paid subscriptions are available for businesses and commercial sites.

\n","download_link":"https://downloads.wordpress.org/plugin/akismet.4.2.1.zip","tags":{"anti-spam":"anti-spam","antispam":"antispam","comments":"comments","contact-form":"contact form","spam":"spam"},"donate_link":"","icons":{"1x":"https://ps.w.org/akismet/assets/icon-128x128.png?rev=969272","2x":"https://ps.w.org/akismet/assets/icon-256x256.png?rev=969272"},"wporg":true},{"name":"WP GDPR Cookie Notice","slug":"wp-gdpr-cookie-notice","version":"1.0.0-rc.1","author":"Felix Arntz","author_profile":"https://profiles.wordpress.org/flixos90","requires":"4.9.6","tested":"5.7.3","requires_php":"7.0","rating":76,"ratings":{"1":4,"2":0,"3":0,"4":0,"5":9},"num_ratings":13,"support_threads":1,"support_threads_resolved":0,"active_installs":700,"downloaded":6085,"last_updated":"2021-04-02 11:51pm GMT","added":"2019-03-01","homepage":"https://wordpress.org/plugins/wp-gdpr-cookie-notice/","short_description":"Simple performant cookie consent notice that supports AMP, Web Stories, granular cookie control and live…","description":"

This plugin adds a simple performant cookie consent notice to your WordPress site that supports AMP, Web Stories, granular cookie control and live preview customization.

\n

Not only does the notice allow you to provide the regular message that your site uses cookies, you can also optionally grant your site visitors permission to granularly allow which cookie types are allowed, supporting groups of functional (always required), preferences, analytics and marketing cookies. This aims towards compliance with how the new GDPR regulations recommend implementing cookie control for your site.

\n

In addition to the Privacy Policy page setting that WordPress core provides, you also get a settings to optionally set an extra Cookie Policy page, and you can easily link to either of them from the cookie consent notice.

\n

The cookie notice content and appearance can easily be tweaked using the Customizer, with an immediate live-preview of what your changes will look like.

\n

Last but not least, another important thing that this plugin takes care of, other than most other cookie consent plugins, is that it actually ensures cookies are only placed if the respective cookie type has been allowed by the visitor. The plugin does this by implementing cookie rules for WordPress itself, and also for the following plugins:

\n\n

More plugins will be supported in the future. If you are a developer though, it’s also very easy to add cookie rules for other code, by using the flexible cookie rule component the plugin provides as an extension point.

\n

Feature Summary

\n
    \n
  • Lightweight and easy-to-use: Simply activate the plugin, and the notice will appear.
  • \n
  • Live Preview: Use the Customizer to adjust the notice to your needs, with an instant live preview.
  • \n
  • Customizable Appearance: Specify the notice position, colors, border, button size and more.
  • \n
  • Customizable Content: Adjust the notice heading, text and button label to your preferences. You can easily link to your cookie policy page or privacy policy page, and even give visitors granular control about which cookie types they allow.
  • \n
  • Cookie Policy Support: Define an optional cookie policy page if your site has one, or alternatively provide an ID attribute to the cookie section in your privacy policy.
  • \n
  • Cookie Integrations: Supported cookies are only set once the visitor has given their consent. The cookie rules implemented also respect the more granular cookie control.
  • \n
  • JavaScript-driven: The cookie notice is inserted into the page as necessary via JavaScript, but at the same time provides easy access to whether it should be displayed via its PHP API.
  • \n
  • AMP Support: The notice is fully AMP-compatible using <amp-consent>, integrating seamlessly with the AMP plugin. It integrates with Web Stories as well.
  • \n
  • Coding Best Practices: The plugin is fully object-oriented and is coded after best practices, such as using interfaces, traits, dependency injection or the single responsibility principle. It also implements modern coding features requiring PHP 7, such as scalar type hints or return type hints.
  • \n
\n

Disclaimer

\n

This plugin does not provide any legal protection. You as a site administrator are required to ensure that it meets legal standards. This plugin is a technical tool, not a lawyer.

\n","download_link":"https://downloads.wordpress.org/plugin/wp-gdpr-cookie-notice.1.0.0-rc.1.zip","tags":{"amp":"amp","cookie-consent":"cookie consent","cookie-notice":"cookie notice","gdpr":"GDPR","web-stories":"web stories"},"donate_link":"","icons":{"1x":"https://ps.w.org/wp-gdpr-cookie-notice/assets/icon-128x128.png?rev=2042024","2x":"https://ps.w.org/wp-gdpr-cookie-notice/assets/icon-256x256.png?rev=2042024"},"wporg":true},{"name":"WordPress Share Buttons Plugin – AddThis","slug":"addthis","version":"6.2.6","author":"The AddThis Team","author_profile":"https://profiles.wordpress.org/arnavarro","requires":"3.0","tested":"5.2.12","requires_php":false,"rating":84,"ratings":{"1":75,"2":25,"3":22,"4":46,"5":444},"num_ratings":612,"support_threads":1,"support_threads_resolved":0,"active_installs":100000,"downloaded":5074828,"last_updated":"2019-07-10 5:19pm GMT","added":"2008-12-23","homepage":"https://wordpress.org/plugins/addthis/","short_description":"Now compatible with the AMP Plugin! Free Share Buttons from AddThis. Share to Messenger, WhatsApp, Facebook, Twitter, Pinterest and many more.","description":"

Now compatible with the AMP Plugin! The Free WordPress Share Buttons Plugin from AddThis makes it easier than ever for your audience to spread your content around the web. Our quick-loading Share Buttons Plugin lets you connect to over 200 social channels including Messenger, WhatsApp, Facebook, Twitter, Pinterest and many more.

\n

Our clean, customizable and simple share buttons are beautiful, quick to load and recognized all over the web.

\n

AddThis is trusted by over 15,000,000 websites with over 2 billion unique users, sharing content all over the world, in more than sixty languages.

\n

Types of Share Buttons:

\n
    \n
  • \n

    Floating share buttons: Placed on the side of your page, following your reader as they scroll. A great way to promote sharing without getting too in-your-face.

    \n
  • \n
  • \n

    Expanding share buttons: Modern, clean, and best suited for sites with tons of mobile traffic. This button expands to reveal sharing options on hover or click.

    \n
  • \n
  • \n

    Inline share buttons: Integrate share buttons into your own content for a seamless sharing experience.

    \n
  • \n
  • \n

    Image sharing buttons: Seamlessly integrate sharing into your layout with adjustable image sharing buttons. Perfect for pages with tons of shareable content.

    \n
  • \n
\n

Customizable:

\n
    \n
  • \n

    Designed for desktop, tablet, and mobile

    \n
  • \n
  • \n

    Choose from over 200 social media channels to display

    \n
  • \n
  • \n

    Adjust coloring to match your brand

    \n
  • \n
\n

Analytics:

\n
    \n
  • Sign up for a free AddThis account to get analytics on how your content is performing such as your top shared content, referring social networks and more. After you register, these analytics are accessible by logging into your AddThis.com account and visiting your AddThis dashboard. Analytics include site pageviews, your top shared content, referring social networks, and more.
  • \n
\n

Support:

\n

We strive to provide best-in-class support with a response time of around two hours, and a customer satisfaction rate of over 98%. To get in touch with our team, head to http://www.addthis.com/support.

\n

Check out our other plugins to help you grow and engage your audience!

\n
    \n
  • \n

    Follow Buttons: Add followers to 65+ social networks, including Facebook, Snapchat, Instagram, and more.

    \n
  • \n
  • \n

    Related Posts: Boost your on-site engagement with our Related Posts tool, which recommends content not only by what’s popular, but also what’s most relevant.

    \n
  • \n
\n

Want more? Visit our website to learn how you can activate our Email List Building and Link Promotion Tools.

\n

AddThis Academy | Privacy Policy

\n","download_link":"https://downloads.wordpress.org/plugin/addthis.6.2.6.zip","tags":{"share-buttons":"share buttons","social":"social","social-marketing":"Social Marketing","social-share":"social share","social-sharing":"social sharing"},"donate_link":"","icons":{"1x":"https://ps.w.org/addthis/assets/icon-128x128.png?rev=1223867","2x":"https://ps.w.org/addthis/assets/icon-256x256.png?rev=1223867"},"wporg":true},{"name":"BigCommerce For WordPress","slug":"bigcommerce","version":"4.17.1","author":"BigCommerce","author_profile":"https://profiles.wordpress.org/bigcommerce","requires":"5.2","tested":"5.5.6","requires_php":"7.2.0","rating":80,"ratings":{"1":8,"2":1,"3":0,"4":3,"5":27},"num_ratings":39,"support_threads":5,"support_threads_resolved":0,"active_installs":1000,"downloaded":59728,"last_updated":"2021-09-13 10:48pm GMT","added":"2018-11-16","homepage":"","short_description":"Scale your ecommerce business with WordPress on the front-end and BigCommerce on the back end.…","description":"

BigCommerce for WordPress is a plugin that allows you to scale ecommerce further than ever before on WordPress. Scale your business with WordPress on the front-end and free up server resources from things like catalog management, processing payments, managing fulfillment logistics and more with BigCommerce on the back end.

\n

Built to integrate seamlessly with WordPress, you get access to our native ecommerce features from a single plugin, the ability to sell across multiple channels and marketplaces from a single location, and best of all, an embedded checkout experience that takes on PCI compliance and customer security on your behalf.

\n

Quick Start!

\n

Look at details from the latest release, including new features and enhancements here: https://github.com/bigcommerce/bigcommerce-for-wordpress/releases

\n

Dive into how you set up and customize your site using BC4WP using our guides here: https://developer.bigcommerce.com/bigcommerce-for-wordpress/getting-started/introduction

\n

Have a suggestion for how we can be better? Ping the team! wordpress-suggestions@bigcommerce.com

\n

DIFFERENT FROM YOUR TRADITIONAL PLUGIN

\n

We’ve taken a very different approach to ecommerce in WordPress. We set out to build our plugin the WordPress Way: deliver value to the community, build it with WordPress experts and make something developers can call their own.

\n

The BigCommerce for WordPress plugin leverages the best aspects of both platforms, allowing WordPress to manage content and BigCommerce to manage ecommerce.

\n

SCALABLE ECOMMERCE FOR WORDPRESS

\n

Continue to tap into the unrestricted customization of WordPress while pairing it with the most scalable SaaS ecommerce engine. BigCommerce lets you build complex catalogs, manage large volumes of concurrent traffic, orders and analytics.

\n

The BigCommerce plugin ports over a copy of your product catalog and stores products as custom post types in WordPress. It also creates pages for your cart, checkout, account profiles, sign in, shipping & returns, gift certificates and order history.

\n

The key difference to our approach is that you don’t need to install additional extensions to get access to common ecommerce features. Instead, you get instant access to many common (and advanced) features, such as complex catalog support, global payment gateways, currency handling, taxation, shipping calculations and centralized channel management; all out-of-the-box.

\n

OFFLOAD BACKEND RESOURCES

\n

Our philosophy is that processing orders and running your store shouldn’t affect the uptime and speed of your site — which can hurt your SEO, conversion, and brand. The BigCommerce plugin does the heavy commerce lifting, letting you scale your ecommerce without losing speed or uptime.

\n

LET US HANDLE PCI COMPLIANCE

\n

Taking on your own PCI compliance comes with a huge amount of liability and risk. BigCommerce powers the full checkout experience, assuming the burden of PCI compliance for you.

\n

EXTENSIVE PAYMENT GATEWAYS

\n

BigCommerce has over 65 payment gateway integrations available out-of-the box, serving 100+ countries and over 250 local payment methods.

\n

To help you reduce costs, we’ve pre-negotiated special credit and debit card processing rates with PayPal, our preferred payment solution. The more you grow with BigCommerce and upgrade your plan, the lower your rates can go.

\n

HIGHLY SCALABLE PRODUCT CATALOG

\n

BigCommerce is built for large, complex catalogs with up to 600 SKUs per product, and 250 product values for a single option. Our native catalog structure treats single products (including variants, details, SKUs, etc.) as a single API call, making inventory syncing with ERPs, PIMs (and WordPress) fast.

\n

MULTI-CHANNEL SELLING & MANAGEMENT

\n

With the core BigCommerce platform, you now have access within the control panel to sell across multiple marketplaces simultaneously, such as eBay, Amazon, Facebook, Instagram, Google Shopping, Square and more! Save time and eliminate errors and overselling with bulk listing, automatic inventory syncing and unified order and fulfillment management.

\n

USE YOUR FAVORITE WORDPRESS THEME

\n

BigCommerce for WordPress will work with any WordPress theme, but it may require some styling to make it fit perfectly. Are you a theme developer? We’d love to promote your BigCommerce for WordPress compatible theme. Get in touch with us here.

\n

To start, we recommend choosing a cross-browser compatible WordPress ecommerce theme, since the theme options included will better match what an online store requires.

\n

ECOMMERCE WITH GUTENBERG

\n

We’re big supporters of Gutenberg and built our plugin to support both the classic editor and Gutenberg. Whether you’re inserting shortcodes in classic mode or product blocks in Gutenberg, we will continue to enable support for both.

\n

SECURED USER ACCOUNTS & LOGINS

\n

In addition to offering you peace of mind with a secure checkout experience, we also extend this level of security to your shoppers, their accounts and logins, and payment information — all managed by BigCommerce.

\n

GLOBAL SHIPPING STREAMLINED

\n

We support all major global carriers, offer real-time carrier quotes, allow for free shipping, flat rates, dropshipping and more. With our deep ShipperHQ integration, you can even specify rates by product, category, customer group, quantity, destination, dimensions and more.

\n

FLEXIBLE SHOPPING CART

\n

We are bringing over a decade of focusing on building online stores to every WordPress website. Through this we bring our flexible shopping cart, along with it’s extensive customization options, so can offer enterprise grade promotions and discounts within a fully responsive layout, without additional extensions that other WordPress ecommerce plugins require.

\n

MULTIPLE SITES; ONE CONTROL PANEL

\n

Even if you sell across multiple WordPress sites, you shouldn’t have to manage them all in separate places. BigCommerce gives you a single control panel to manage your catalog, orders and shipping, all from one place. Streamline your admin experience and spend less time managing ecommerce on WordPress.

\n

Beyond WordPress, the endpoints we’ve opened on our platform allow you to build commerce into any sort of experience. Looking to launch a site in React? Interested in developing a mobile app? Want to integrate with an in-house POS? All of these can be built and managed from within the BigCommerce Control Panel.

\n

COMPLEX ENTERPRISE SYSTEMS INTEGRATIONS

\n

A huge benefit of having a SaaS ecommerce engine behind the scenes is that the core platform is already built for mid-market and enterprise use cases. Natively connect to your existing ERP suites, PIM software, OMS solutions, POS systems or marketing automation tools right out of the box.

\n

AMP SUPPORT

\n

Unique to most WordPress ecommerce plugins, BigCommerce for WordPress also includes support for Accelerated Mobile Pages. To activate, install the official Google plugin.

\n

SUPPORT AND SERVICES

\n

All of our BigCommerce customers have access to our 24/7 live phone, chat, and email support, run from our headquarters in Austin, Texas. For larger enterprise customers, we offer dedicated account management and implementation management services as part of your plan. We also have an ever-growing collection of help, support, and how-to guides in our help center.

\n

BUILT WITH DEVELOPERS IN MIND

\n

BigCommerce for WordPress was built by WordPress developers, with developers in mind. Our plugin is open source and available for you to fork, extend and modify as your needs require.

\n

Our plugin supports WordPress’ standard method of overriding template files so you can modify out-of-the-box designs. Customize your product cards, lists and shopping cart without risking plugin updates that will undo your changes.

\n

Additionally, there are many hooks and filters, so you can manipulate content to your heart’s content.

\n

JOIN OUR BIGCOMMERCE COMMUNITY

\n

All BigCommerce customers get access to our ever-growing online community to answer questions, discuss ecommerce strategies, learn about the latest product updates, contribute ideas and more.

\n

If you’re interested in contributing to BigCommerce for WordPress, head over to our GitHub Repository.

\n","download_link":"https://downloads.wordpress.org/plugin/bigcommerce.4.17.1.zip","tags":{"ecommerce":"ecommerce","online-store":"online store","retail":"retail","sell-online":"sell online","storefront":"storefront"},"donate_link":"","icons":{"1x":"https://ps.w.org/bigcommerce/assets/icon-256x256.png?rev=2141502","2x":"https://ps.w.org/bigcommerce/assets/icon-256x256.png?rev=2141502"},"wporg":true},{"name":"Yoast SEO","slug":"wordpress-seo","version":"17.3","author":"Team Yoast","author_profile":"https://profiles.wordpress.org/joostdevalk","requires":"5.6","tested":"5.8.1","requires_php":"5.6.20","rating":96,"ratings":{"1":722,"2":125,"3":174,"4":618,"5":25757},"num_ratings":27396,"support_threads":490,"support_threads_resolved":433,"active_installs":5000000,"downloaded":361627080,"last_updated":"2021-10-05 6:53am GMT","added":"2010-10-11","homepage":"https://yoa.st/1uj","short_description":"Improve your WordPress SEO: Write better content and have a fully optimized WordPress site using the Yoast SEO plugin.","description":"

Yoast SEO: the #1 WordPress SEO plugin

\n

Since 2008 Yoast SEO has helped millions of websites worldwide to rank higher in search engines.

\n

Yoast’s mission is SEO for Everyone. Our plugin’s users range from the bakery around the corner to some of the most popular sites on the planet.

\n

Yoast SEO Free contains everything that you need to manage your SEO, and the Yoast SEO Premium plugin and its extensions unlock even more tools and functionality.

\n

GET AHEAD OF THE COMPETITION

\n

To rank highly in search engines, you need to beat the competition. You need a better, faster, stronger website than the people who sell or do the same kinds of things as you.

\n

Yoast SEO is the most-used WordPress SEO plugin, and has helped millions of people like you to get ahead, and to stay ahead.

\n

TAKING CARE OF YOUR WORDPRESS SEO

\n

Yoast SEO is packed full of features, designed to help visitors and search engines to get the most out of your website. Some of our favourites are:

\n
    \n
  • Automated technical SEO improvements, like canonical URLs and meta tags.
  • \n
  • Advanced XML sitemaps; making it easy for Google to understand your site structure.
  • \n
  • Title and meta description templating, for better branding and consistent snippets in the search results.
  • \n
  • An in-depth Schema.org integration that will increase your chance of getting rich results, by helping search engines to understand your content.
  • \n
  • Full control over site breadcrumbs, so that users and search engines always know where they are.
  • \n
  • Faster loading times for your whole website, due to an innovative way of managing data in WordPress.
  • \n
  • [Premium] E-mail support for our Yoast SEO Premium users.
  • \n
  • [Premium] The possibility to expand Yoast SEO with the News SEO, Video SEO, Local SEO and WooCommerce SEO extensions.
  • \n
\n

WRITE KILLER CONTENT WITH YOAST SEO

\n

We know content is king, that’s why Yoast SEO is famous for its state-of-the-art content and SEO analysis. Yoast SEO gives you:

\n
    \n
  • SEO analysis: an invaluable tool while writing SEO-friendly content with the right (focus) keyphrases in mind.
  • \n
  • Readability analysis: ensures that humans and search engines can read and understand your content.
  • \n
  • Full language support for: English, German, French, Dutch, Spanish, Italian, Russian, Indonesian, Polish, Portuguese, Arabic, Swedish, Hebrew, Hungarian, Turkish, Czech, Norwegian and Slovak.
  • \n
  • A Google preview, which shows what your listings will look like in the search results. Even on mobile devices!
  • \n
  • Innovative Schema blocks for the WordPress block editor, so that your FAQ and HowTo content can be shown directly in the search results. Plus a breadcrumbs block to guide your users.
  • \n
  • [Premium] Internal linking blocks to easily improve the structure of your content. Easily add a table of contents block, a related links block, a subpages block, or siblings block! Plus, we’ll keep adding these easy-to-add blocks to improve your site structure.
  • \n
  • [Premium] Social previews to show you how your content will be shown on Twitter and Facebook. Plus: Social Appearance Templates to guarantee a consistent look.
  • \n
  • [Premium] The Insights tool that shows you what your text focuses on. This way you can keep your article in line with your keyphrases.
  • \n
  • [Premium] Optimize your content for synonyms and related keyphrases.
  • \n
  • [Premium] Optimize your article for different word forms of your keyphrases, as the singular and plural. But also different verb forms, synonyms, and related keyphrases. This makes for more natural content!
  • \n
  • [Premium] Automatic internal linking suggestions: write your article and get automatic suggested posts to link to!
  • \n
  • [Premium] An orphaned content filter to detect posts that have no links pointing towards them!
  • \n
  • [Premium] SEO workouts to make working on your site as easy as ABC. These SEO workflows will get your site into shape in no time!
  • \n
\n

KEEP YOUR SITE IN PERFECT SHAPE

\n

Whether you are an online entrepreneur, blogger or content creator, a developer, a (WordPress) SEO expert or a business owner, Yoast SEO helps you keep your website in perfect shape by:

\n
    \n
  • Tuning the engine of your website, so you can work on creating great content!
  • \n
  • Giving you cornerstone content and internal linking features to help you optimize your site structure in a breeze.
  • \n
  • Translating your content to structured data where possible, to help search engines understand your website.
  • \n
  • Helping you manage your team: with our SEO roles you can give colleagues access to specific sections of the Yoast SEO plugin.
  • \n
  • [Premium] Automatically creating redirects when URLs change or when pages are deleted, and providing tools to manage or create redirects.
  • \n
  • [Premium] Showing you social previews to manage the way your page is shared on social networks like Facebook and Twitter.
  • \n
\n

TRUST THE EXPERTS

\n

Yoast is powered by a team of expert developers, testers, software architects, and SEO consultants. They work constantly to stay at the cutting edge of WordPress SEO, and to improve the plugin with every release.

\n

Yoast SEO is the only WordPress SEO plugin made by world-renowned SEO experts.

\n

GET PREMIUM SUPPORT

\n

The Yoast team offers regular support on the WordPress.org forums. But we hope you understand that we prioritize our Premium customers. This one-on-one email support is available to people who have purchased Yoast SEO Premium.

\n

Did you know that Yoast SEO Premium contains a lot of extra features:

\n
    \n
  • A redirect manager that prevents “404: page not found” errors
  • \n
  • Optimize without worrying about over-optimization with intelligent word form recognition available in multiple languages.
  • \n
  • Internal linking blocks to structure your site easily.
  • \n
  • Internal linking suggestions while you’re writing.
  • \n
  • Preview your content to see what it will look like in the search results and when shared on social media using the Google preview and social preview.
  • \n
  • Cornerstone content checks that point search engines to your most important pages.
  • \n
  • Connect Yoast SEO to Zapier to easily create zaps that instantly share your published posts with 2000+ destinations like Twitter, Facebook, and much more.
  • \n
\n

If you are serious about your WordPress SEO, install the Yoast SEO Premium plugin! Costs a little, saves a lot of time!

\n

OUR EXTENSIONS TO FURTHER IMPROVE YOUR WORDPRESS SEO

\n

Check out these SEO add-ons by Yoast:

\n
    \n
  • Yoast Local SEO optimizes your website for a local audience.
  • \n
  • Yoast Video SEO ensures that Google understands what your video is about, increasing the chances of ranking in the video results.
  • \n
  • Yoast News SEO for news websites that want to improve their visibility and performance in Google News.
  • \n
  • WooCommerce SEO for all online shops that want to perform better in the search results and social media.
  • \n
\n

These extensions work fine with the free version of Yoast SEO. Of course, the premium extensions also include 24/7 support.

\n

Oh, don’t forget: our Yoast Academy is for all entrepreneurs, bloggers, and anyone who wants to learn more about optimizing websites, improving your WordPress SEO, and if you want to take your content to the next level!

\n

INTEGRATIONS

\n

Yoast SEO integrates seamlessly into a range of themes and plugins. We work particularly well with:

\n\n

BUG REPORTS

\n

Do you want to report a bug for Yoast SEO? Best to do so in the WordPress SEO repository on GitHub. Please note that GitHub is not a support forum and issues will be closed if they don’t meet the bug requirements.

\n

READ MORE

\n

Want more information on search engine optimization and Yoast SEO? Have a look at:

\n\n","download_link":"https://downloads.wordpress.org/plugin/wordpress-seo.17.3.zip","tags":{"content-analysis":"Content analysis","readability":"Readability","schema":"schema","seo":"seo","xml-sitemap":"xml sitemap"},"donate_link":"https://yoa.st/1up","icons":{"1x":"https://ps.w.org/wordpress-seo/assets/icon.svg?rev=2363699","2x":"https://ps.w.org/wordpress-seo/assets/icon-256x256.png?rev=2363699","svg":"https://ps.w.org/wordpress-seo/assets/icon.svg?rev=2363699"},"wporg":true},{"name":"Gutenberg","slug":"gutenberg","version":"11.6.0","author":"Gutenberg Team","author_profile":"https://profiles.wordpress.org/matveb","requires":"5.7","tested":"5.8.1","requires_php":"5.6","rating":42,"ratings":{"1":2274,"2":201,"3":127,"4":134,"5":707},"num_ratings":3443,"support_threads":64,"support_threads_resolved":18,"active_installs":300000,"downloaded":24929546,"last_updated":"2021-09-29 9:53am GMT","added":"2017-06-16","homepage":"https://github.com/WordPress/gutenberg","short_description":"The Gutenberg plugin provides editing, customization, and site building features to WordPress. This beta plugin allows you to test bleeding-edge featu …","description":"

“Gutenberg” is a codename for a whole new paradigm for creating with WordPress, that aims to revolutionize the entire publishing experience as much as Gutenberg did the printed word. The project is following a four-phase process that will touch major pieces of WordPress — Editing, Customization, Collaboration, and Multilingual.

\n

The block editor introduces a modular approach to all parts of your site: each piece of content in the editor, from a paragraph to an image gallery to a headline, is its own block. And just like physical blocks, WordPress blocks can be added, arranged, and rearranged, allowing WordPress users to create media-rich content in a visually intuitive way — and without work-arounds like shortcodes or custom HTML.

\n

The block editor first became available in December 2018. We’re always hard at work refining the experience, creating more and better blocks, and laying the groundwork for the future phases of work. Each WordPress release comes ready to go with the stable features from multiple versions of the Gutenberg plugin, so you don’t need to use the plugin to benefit from the work being done here. However, if you’re more adventurous and tech-savvy, the Gutenberg plugin gives you the latest and greatest, so you can join us in testing bleeding-edge features, start playing with blocks, and maybe get inspired to build your own.

\n

Discover More

\n
    \n
  • \n

    User Documentation: Review the WordPress Editor documentation for detailed instructions on using the editor as an author to create posts, pages, and more.

    \n
  • \n
  • \n

    Developer Documentation: Explore the Developer Documentation for extensive tutorials, documentation, and API references on how to extend the editor.

    \n
  • \n
  • \n

    Contributors: Gutenberg is an open-source project and welcomes all contributors from code to design, from documentation to triage. See the Contributor’s Handbook for all the details on how you can help.

    \n
  • \n
\n

The development hub for the Gutenberg project can be found at https://github.com/wordpress/gutenberg. Discussions for the project are on the Make Core Blog and in the #core-editor channel in Slack, including weekly meetings. If you don’t have a slack account, you can sign up here.

\n","download_link":"https://downloads.wordpress.org/plugin/gutenberg.11.6.0.zip","tags":[],"donate_link":"","icons":{"1x":"https://ps.w.org/gutenberg/assets/icon-128x128.jpg?rev=1776042","2x":"https://ps.w.org/gutenberg/assets/icon-256x256.jpg?rev=1776042"},"wporg":true},{"name":"Setka Editor","slug":"setka-editor","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://setka.io/","short_description":"

Setka Editor is the first WYSIWYG plugin with page builder functionality.

\n","description":"\n\n\n

Setka Editor is the first WYSIWYG plugin with page builder functionality.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2018/11/Setka-Banner-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2018/11/Setka-Banner-372x209.jpg","svg":""},"wporg":false}] \ No newline at end of file diff --git a/data/themes.json b/data/themes.json index 2bbb4bd189f..abad70a1134 100644 --- a/data/themes.json +++ b/data/themes.json @@ -1 +1 @@ -[{"name":"Sydney","slug":"sydney","version":"1.79","preview_url":"https://wp-themes.com/sydney/","author":{"user_nicename":"athemes","profile":"https://profiles.wordpress.org/athemes","avatar":"https://secure.gravatar.com/avatar/0fe6c4dee6e201e81783d8a0ee12d83b?s=96&d=monsterid&r=g","display_name":"athemes","author":"aThemes","author_url":"https://athemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/sydney/screenshot.png?ver=1.79","rating":98,"num_ratings":497,"homepage":"https://wordpress.org/themes/sydney/","description":"Sydney is a powerful business theme that provides a fast way for companies or freelancers to create an awesome online presence. As well as being fully compatible with Elementor, Sydney brings plenty of customization possibilities like access to all Google Fonts, full color control, layout control, logo upload, full screen slider, header image, sticky navigation and much more. Also, Sydney provides all the construction blocks you need to rapidly create an engaging front page. Looking for a quick start with Sydney? With just a few clicks, you can import one of our existing demos (https://athemes.com/sydney-demos/)","requires":false,"requires_php":"5.6","wporg":true},{"name":"Really Simple","slug":"really-simple","version":"1.0.7","preview_url":"https://wp-themes.com/really-simple/","author":{"user_nicename":"flauberthenriques","profile":"https://profiles.wordpress.org/flauberthenriques","avatar":"https://secure.gravatar.com/avatar/d524eb0811fa44be90481509b000c779?s=96&d=monsterid&r=g","display_name":"Flaubert Henriques","author":"Flaubert Henriques","author_url":"https://profiles.wordpress.org/flauberthenriques/"},"screenshot_url":"//ts.w.org/wp-content/themes/really-simple/screenshot.png?ver=1.0.7","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/really-simple/","description":"Really Simple is a theme for bloggers and writers who need a ultra light and fast theme. The theme focuses on simplicity and loading speed. Yes, Really Simple Theme is also fully AMP compatible. Check the readme.txt file and leave the sidebar perfect after WordPress 5.8 update.","requires":"5.3","requires_php":"7.0","wporg":true},{"name":"Artpop","slug":"artpop","version":"1.0.7","preview_url":"https://wp-themes.com/artpop/","author":{"user_nicename":"designlabthemes","profile":"https://profiles.wordpress.org/designlabthemes","avatar":"https://secure.gravatar.com/avatar/956873f77232371cb89d8a0d7a516354?s=96&d=monsterid&r=g","display_name":"designlabthemes","author":"Design Lab","author_url":"https://www.designlabthemes.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/artpop/screenshot.png?ver=1.0.7","rating":100,"num_ratings":1,"homepage":"https://wordpress.org/themes/artpop/","description":"Artpop is a beautiful Gutenberg-first WordPress theme, carefully designed to help you build your online brand. Unleash your creativity, Artpop takes care of the rest! Well documented and easy to use even for WordPress beginners, Artpop is perfect for a blog, personal portfolio, small business website, and WooCommerce storefront. Easily set your logo, change colors, and create awesome layouts to give your website a truly unique look.","requires":"4.7","requires_php":"5.6","wporg":true},{"name":"Michelle","slug":"michelle","version":"1.2.0","preview_url":"https://wp-themes.com/michelle/","author":{"user_nicename":"webmandesign","profile":"https://profiles.wordpress.org/webmandesign","avatar":"https://secure.gravatar.com/avatar/f4a334f9f5af61b2bd22fcaadb04dd06?s=96&d=monsterid&r=g","display_name":"WebMan Design | Oliver Juhas","author":"WebMan Design","author_url":"https://www.webmandesign.eu/"},"screenshot_url":"//ts.w.org/wp-content/themes/michelle/screenshot.png?ver=1.2.0","rating":100,"num_ratings":3,"homepage":"https://wordpress.org/themes/michelle/","description":"Michelle is accessibility ready WordPress theme for creating inclusive websites easily and with fun using block editor. Useful block patterns, block styles, templates and featured posts functionality allow you to build an eyecatching website in no time. Customize site footer and error 404 page content with block editor! The theme also works with Beaver Builder, Elementor, or any other page builder. It also supports theme builders! Michelle elevates your business, eCommerce, portfolio, or blog website. Check out the demo at https://themedemos.webmandesign.eu/michelle/ and documentation at https://webmandesign.github.io/docs/michelle/","requires":"5.5","requires_php":"7.0","wporg":true},{"name":"Miniva","slug":"miniva","version":"1.6.3","preview_url":"https://wp-themes.com/miniva/","author":{"user_nicename":"tajam","profile":"https://profiles.wordpress.org/tajam","avatar":"https://secure.gravatar.com/avatar/378d4e715829ccf6f1fbe6dfef6eb539?s=96&d=monsterid&r=g","display_name":"Tajam","author":"Tajam","author_url":"https://tajam.id/"},"screenshot_url":"//ts.w.org/wp-content/themes/miniva/screenshot.png?ver=1.6.3","rating":100,"num_ratings":6,"homepage":"https://wordpress.org/themes/miniva/","description":"A fast, lightweight, and mobile-friendly WordPress theme for bloggers. Miniva is built with simplicity, accessibility and performance in mind. The clean and minimal design helps readers focus on your content. It supports AMP and several Jetpack modules including featured content, infinite scroll, content options and social menu. See the theme demo at https://tajam.id/miniva-demo/","requires":"4.5","requires_php":"5.3","wporg":true},{"name":"Iknow","slug":"iknow","version":"1.2.6","preview_url":"https://wp-themes.com/iknow/","author":{"user_nicename":"wpcalc","profile":"https://profiles.wordpress.org/wpcalc","avatar":"https://secure.gravatar.com/avatar/64ca4933fab3d5e50383f0b514acd5f6?s=96&d=monsterid&r=g","display_name":"Wow-Company","author":"Wow-Company","author_url":"https://wow-company.com"},"screenshot_url":"//ts.w.org/wp-content/themes/iknow/screenshot.png?ver=1.2.6","rating":98,"num_ratings":9,"homepage":"https://wordpress.org/themes/iknow/","description":"Iknow WordPress Theme has a minimalistic, responsive and mobile-friendly design. Easy and fast theme. The theme is perfect for creating Knowledge Base, Helpdesk, Wiki and FAQ websites. Ability to set custom icons for each category and tag. Manage the display of categories on the main page of the site. The integrated post rating system VoteUp/VoteDown. Breadcrumbs for easy site navigation. Custom widget to display the current navigation in a category and in a separate post. You can view the appearance and features of the theme on the site https://wow-company.com/wp-theme-iknow/. Documentation https://wow-company.com/faq/category/wow-themes/iknow/","requires":false,"requires_php":"5.6","wporg":true},{"name":"Kadence","slug":"kadence","version":"1.1.3","preview_url":"https://wp-themes.com/kadence/","author":{"user_nicename":"britner","profile":"https://profiles.wordpress.org/britner","avatar":"https://secure.gravatar.com/avatar/3276133b8df529e6e1e58586ab1a309e?s=96&d=monsterid&r=g","display_name":"Ben Ritner - Kadence WP","author":"Kadence WP","author_url":"https://www.kadencewp.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/kadence/screenshot.png?ver=1.1.3","rating":98,"num_ratings":136,"homepage":"https://wordpress.org/themes/kadence/","description":"Kadence Theme is a lightweight yet full featured WordPress theme for creating beautiful fast loading and accessible websites, easier than ever. It features an easy to use drag and drop header and footer builder to build any type of header in minutes. It features a full library of gorgeous starter templates that are easy to modify with our intelligent global font and color controls. With extensive integration with the most popular 3rd party plugins, you can quickly build impressive ecommerce websites, course websites, business websites, and more.","requires":"5.0","requires_php":"7.0","wporg":true},{"name":"Izo","slug":"izo","version":"1.0.12","preview_url":"https://wp-themes.com/izo/","author":{"user_nicename":"elfwp","profile":"https://profiles.wordpress.org/elfwp","avatar":"https://secure.gravatar.com/avatar/1cfedf4555fea4d8fbba2947635586ea?s=96&d=monsterid&r=g","display_name":"elfwp","author":"elfWP","author_url":"https://elfwp.com"},"screenshot_url":"//ts.w.org/wp-content/themes/izo/screenshot.png?ver=1.0.12","rating":90,"num_ratings":2,"homepage":"https://wordpress.org/themes/izo/","description":"Izo a fast, lightweight, native AMP and fully customizable multipurpose WordPress theme. Features include compatibility with many popular plugins like Elementor and other page builders, WooCommerce, WPML, LifterLMS and more. There is also full support for the new WordPress block editor. Izo is fully responsive and our users can take advantage of the many customizer options to easily change styles. Also, if you're looking for a quick start, we're offering a bunch of free starter sites, ready to easily import.","requires":false,"requires_php":"5.6","wporg":true},{"name":"OceanWP","slug":"oceanwp","version":"3.0.7","preview_url":"https://wp-themes.com/oceanwp/","author":{"user_nicename":"oceanwp","profile":"https://profiles.wordpress.org/oceanwp","avatar":"https://secure.gravatar.com/avatar/05f8d3fe2ccb6479bac14e4d40b406dd?s=96&d=monsterid&r=g","display_name":"oceanwp","author":"Nick","author_url":"https://oceanwp.org/about-me/"},"screenshot_url":"//ts.w.org/wp-content/themes/oceanwp/screenshot.png?ver=3.0.7","rating":98,"num_ratings":4918,"homepage":"https://wordpress.org/themes/oceanwp/","description":"OceanWP is the perfect theme for your project. Lightweight and highly extendable, it will enable you to create almost any type of website such a blog, portfolio, business website and WooCommerce storefront with a beautiful & professional design. Very fast, responsive, RTL & translation ready, best SEO practices, unique WooCommerce features to increase conversion and much more. You can even edit the settings on tablet & mobile so your site looks good on every device. Work with the most popular page builders as Elementor, Beaver Builder, Brizy, Visual Composer, Divi, SiteOrigin, etc... Developers will love his extensible codebase making it a joy to customize and extend. Best friend of Elementor & WooCommerce. Looking for a Multi-Purpose theme? Look no further! Check the demos to realize that it's the only theme you will ever need: https://oceanwp.org/demos/","requires":"5.3","requires_php":"7.2","wporg":true},{"name":"Twenty Twenty-One","slug":"twentytwentyone","version":"1.4","preview_url":"https://wp-themes.com/twentytwentyone/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentytwentyone/screenshot.png?ver=1.4","rating":82,"num_ratings":33,"homepage":"https://wordpress.org/themes/twentytwentyone/","description":"Twenty Twenty-One is a blank canvas for your ideas and it makes the block editor your best brush. With new block patterns, which allow you to create a beautiful layout in a matter of seconds, this theme’s soft colors and eye-catching — yet timeless — design will let your work shine. Take it for a spin! See how Twenty Twenty-One elevates your portfolio, business website, or personal blog.","requires":"5.3","requires_php":"5.6","wporg":true},{"name":"Occasio","slug":"occasio","version":"","preview_url":"https://themezee.com/themes/occasio/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/12/occasio.jpg","rating":0,"num_ratings":0,"homepage":"https://themezee.com/themes/occasio/","description":"\n\n\n

A sleek and modern Blogging & Magazine theme, carefully designed for writers using the Gutenberg Block Editor.

\n","requires":"","requires_php":"","wporg":false},{"name":"Tortuga","slug":"tortuga","version":"2.3.4","preview_url":"https://wp-themes.com/tortuga/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/tortuga/screenshot.jpg?ver=2.3.4","rating":96,"num_ratings":19,"homepage":"https://wordpress.org/themes/tortuga/","description":"Tortuga is a highly flexible and adventurous WordPress theme for your pirate magazine or any news related website. It supports three different post layouts, two sidebar schemes and a Magazine Homepage template based on widgets. Other highlights of Tortuga are the beautiful post slider and header widgets area. Arrr!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Treville","slug":"treville","version":"2.1.4","preview_url":"https://wp-themes.com/treville/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/treville/screenshot.jpg?ver=2.1.4","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/treville/","description":"An elegant Blogging & Magazine WordPress Theme with subtle colors and great typography. Treville supports two navigation menus, advanced post settings and a post slider with fullscreen images!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Wellington","slug":"wellington","version":"2.1.4","preview_url":"https://wp-themes.com/wellington/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/wellington/screenshot.jpg?ver=2.1.4","rating":100,"num_ratings":12,"homepage":"https://wordpress.org/themes/wellington/","description":"Wellington is a clean and simple Magazine WordPress theme with beautiful typography and subtle colors. The theme includes two different post layouts, a featured post slider and thoughtful theme settings in the Customizer.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Poseidon","slug":"poseidon","version":"2.3.4","preview_url":"https://wp-themes.com/poseidon/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/poseidon/screenshot.jpg?ver=2.3.4","rating":96,"num_ratings":16,"homepage":"https://wordpress.org/themes/poseidon/","description":"Poseidon is an elegant designed WordPress theme featuring a splendid fullscreen image slideshow. The clean typography and spacious white layout makes it great to share your stories. You can use the theme as simple blog or easily create a news website with the widget-based Magazine Homepage template.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Napoli","slug":"napoli","version":"2.2.4","preview_url":"https://wp-themes.com/napoli/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/napoli/screenshot.jpg?ver=2.2.4","rating":100,"num_ratings":4,"homepage":"https://wordpress.org/themes/napoli/","description":"Napoli is a beautiful WordPress theme perfectly suited for a food magazine. It features a great featured post slider, smooth typography and a grid-layout for posts. Bon appetit!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Mercia","slug":"mercia","version":"1.9.7","preview_url":"https://wp-themes.com/mercia/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/mercia/screenshot.jpg?ver=1.9.7","rating":100,"num_ratings":1,"homepage":"https://wordpress.org/themes/mercia/","description":"Mercia is a flexible and versatile theme perfect for lifestyle, travel, or fashion magazines. It features a modern and minimalist design with great typropaphy. Of course it works on all screen sizes. With multiple blog layouts and powerful Magazine widgets, you can easily create a stunning and dynamic news website in just a few minutes.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Maxwell","slug":"maxwell","version":"2.3.4","preview_url":"https://wp-themes.com/maxwell/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/maxwell/screenshot.jpg?ver=2.3.4","rating":100,"num_ratings":6,"homepage":"https://wordpress.org/themes/maxwell/","description":"Maxwell is a minimalistic and elegant WordPress theme featuring an ultra clean magazine layout. With a beautiful typography, various post layouts and a gorgeous featured posts slideshow Maxwell truly helps you to stand out.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Harrison","slug":"harrison","version":"1.3.4","preview_url":"https://wp-themes.com/harrison/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/harrison/screenshot.jpg?ver=1.3.4","rating":80,"num_ratings":1,"homepage":"https://wordpress.org/themes/harrison/","description":"Harrison is a highly versatile WordPress Theme and was specially designed for use with the new WordPress Block Editor. The theme supports the latest Gutenberg features and provides different blog layouts and extensive post settings. The clean and elegant design is perfect to create all kinds of websites. You should really try it!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Gridbox","slug":"gridbox","version":"2.3.4","preview_url":"https://wp-themes.com/gridbox/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/gridbox/screenshot.jpg?ver=2.3.4","rating":74,"num_ratings":6,"homepage":"https://wordpress.org/themes/gridbox/","description":"Gridbox is a clean and solid WordPress theme featuring a three-column grid-layout for posts. The theme works out of the box and does not require any complicated setup. It is perfectly suited for a simple magazine, blog or portfolio website.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Chronus","slug":"chronus","version":"2.0.5","preview_url":"https://wp-themes.com/chronus/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/chronus/screenshot.jpg?ver=2.0.5","rating":80,"num_ratings":5,"homepage":"https://wordpress.org/themes/chronus/","description":"Chronus is a fast and lightweight WordPress Theme created for magazines, news websites and personal blogs. The Featured Content section and flexible Magazine Widgets give you the ability to highlight your most important posts on the home page. The minimalistic and responsive design focuses on your content and looks great on any screen size.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Donovan","slug":"donovan","version":"1.8.4","preview_url":"https://wp-themes.com/donovan/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/donovan/screenshot.jpg?ver=1.8.4","rating":96,"num_ratings":16,"homepage":"https://wordpress.org/themes/donovan/","description":"Donovan is a flexible, yet easy-to-use blogging theme with a clean and modern design. It features an elegant mobile-first design, three different blog layouts and extensive post settings. Donovan is perfect for your personal blog or for any content-focused website.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Yosemite Lite","slug":"yosemite-lite","version":"1.2.1","preview_url":"https://wp-themes.com/yosemite-lite/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/yosemite-lite/screenshot.jpg?ver=1.2.1","rating":60,"num_ratings":2,"homepage":"https://wordpress.org/themes/yosemite-lite/","description":"Yosemite is a beautiful WordPress blog theme for personal blogs. Yosemite has a modern, clean and elegant look and lots of customization for bloggers. Built on the latest technology of WordPress, Yosemite is lightweight, fast and optimized for all mobile phones.","requires":false,"requires_php":false,"wporg":true},{"name":"Justread","slug":"justread","version":"1.3.0","preview_url":"https://wp-themes.com/justread/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/justread/screenshot.jpg?ver=1.3.0","rating":100,"num_ratings":5,"homepage":"https://wordpress.org/themes/justread/","description":"Justread is a clean and modern WordPress theme that focuses on reading experience. Justread has a grid layout with single column content. The theme uses system fonts and SVG for fast loading. Enjoy reading long content with comfortability.","requires":false,"requires_php":"5.6","wporg":true},{"name":"Floral Lite","slug":"floral-lite","version":"1.4","preview_url":"https://wp-themes.com/floral-lite/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/floral-lite/screenshot.jpg?ver=1.4","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/floral-lite/","description":"Floral is a beautiful WordPress blog theme for personal blogs. Floral has a modern, clean and elegant look and lots of customization for bloggers. Built on the latest technology of WordPress, Floral is lightweight, fast and optimized for all mobile phones.","requires":"4.5","requires_php":"5.6","wporg":true},{"name":"EightyDays Lite","slug":"eightydays-lite","version":"2.2.7","preview_url":"https://wp-themes.com/eightydays-lite/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"http://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/eightydays-lite/screenshot.png?ver=2.2.7","rating":90,"num_ratings":4,"homepage":"https://wordpress.org/themes/eightydays-lite/","description":"EightyDays is a beautiful WordPress travel theme for travel blogs or magazines. EightyDays has a modern, clean and elegant look and lots of customization for bloggers. Built on the latest technology of WordPress, EightyDays is lightweight, fast and optimized for all mobile phones.","requires":false,"requires_php":false,"wporg":true},{"name":"eStar","slug":"estar","version":"1.3.4","preview_url":"https://wp-themes.com/estar/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/estar/screenshot.png?ver=1.3.4","rating":100,"num_ratings":3,"homepage":"https://wordpress.org/themes/estar/","description":"eStar is a super fast, lightweight (less than 10KB on the front end), responsive and highly customizable WordPress theme suitable for blog, personal portfolio and business websites. It works perfectly with Gutenberg and all WordPress blocks. You can also pair it with any page builder plugin like Elementor, Beaver Builder, Visual Composer, SiteOrigin, Divi, Thrive Architect, Brizy and more. eStar is written from scratch with performance, extensibility, usability and SEO in mind. The theme follows best practices, well-coded and follows the latest web standards (HTML5, SVG, JavaScript). Some of the other features: microdata integration, widget areas, sidebar layouts, custom colors, custom Google fonts, translation ready. Looking for a perfect base theme? Look no further. eStar is fast, fully customizable WordPress theme that you can use for building any kind of website like business agencies, corporate, portfolio, education, university portal, consulting, church, restaurant, medical and so on. Learn more about the theme at https://gretathemes.com/wordpress-themes/estar/","requires":false,"requires_php":"5.6","wporg":true},{"name":"Stow","slug":"stow-2","version":"","preview_url":"https://wordpress.com/theme/stow","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/stow.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/stow","description":"\n\n\n

A bold and clean theme with lots of space for large images, it’s the ideal choice for creating an online presence for your business. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Shawburn","slug":"shawburn","version":"","preview_url":"https://wordpress.com/theme/shawburn","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/shawborn.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/shawburn","description":"\n\n\n

Shawburn is the ideal choice for creating an online presence for your business. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Rivington","slug":"rivington-2","version":"","preview_url":"https://wordpress.com/theme/rivington","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/rivington.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/rivington","description":"\n\n\n

Rivington was designed as a website template for realtors. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Redhill","slug":"redhill-2","version":"","preview_url":"https://wordpress.com/theme/redhill","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/redhill.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/redhill","description":"\n\n\n

Redhill is a simple theme with clean typography, created with entrepreneurs and small business owners in mind. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Morden","slug":"morden-2","version":"","preview_url":"https://wordpress.com/theme/morden","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/morden.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/morden","description":"\n\n\n

Morden is a functional and responsive multi-purpose theme that is the perfect solution for your business’s online presence. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Maywood","slug":"maywood-2","version":"","preview_url":"https://wordpress.com/theme/maywood","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/maywood.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/maywood","description":"\n\n\n

Modern, clean, sophisticated: Make your online presence as striking and stylish as your business with Maywood. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Mayland","slug":"mayland","version":"","preview_url":"https://wordpress.com/theme/mayland","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/mmayland.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/mayland","description":"\n\n\n

Mayland is a free WordPress theme. The clean, tasteful design highlights all your writing and photography projects. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Leven","slug":"leven-2","version":"","preview_url":"https://wordpress.com/theme/leven","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/leven.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/leven","description":"\n\n\n

Leven is a colorful, typography driven theme meant to grab the attention of potential customers and market or sell products to them. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Hever","slug":"hever-2","version":"","preview_url":"https://wordpress.com/theme/hever","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/hever.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/hever","description":"\n\n\n

Hever is a fun and friendly free WordPress theme that works particularly well for creative and crafty businesses. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Exford","slug":"exford-2","version":"","preview_url":"https://wordpress.com/theme/exford","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/exford.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/exford","description":"\n\n\n

A classic typography and clean design lend a sophisticated air to your website’s content. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Brompton","slug":"brompton-2","version":"","preview_url":"https://wordpress.com/theme/brompton","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/brompton.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/brompton","description":"\n\n\n

A a simple yet powerful website theme for small-business owners and entrepreneurs. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Barnsbury","slug":"barnsbury-2","version":"","preview_url":"https://wordpress.com/theme/barnsbury","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/Barnsbury.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/barnsbury","description":"\n\n\n

Barnsbury is an earthy, friendly theme made with farming and agriculture businesses in mind — but versatile enough for a personal site, too. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Balasana","slug":"balasana-2","version":"","preview_url":"https://wordpress.com/theme/balasana","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/Balasana.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/balasana","description":"\n\n\n

Balasana is a clean and minimalist business theme designed with health and wellness-focused sites in mind. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Alves","slug":"alves-2","version":"","preview_url":"https://wordpress.com/theme/alves","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/Alves.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/alves","description":"\n\n\n

Convincing design for your charity or organization’s online presence. Highlight your actions, causes and projects, Alves is versatile enough to be your personal site too. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Varia","slug":"varia-2","version":"","preview_url":"https://wordpress.com/theme/varia","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/varia.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/varia","description":"\n\n\n

A variable-based design system for WordPress sites built with Gutenberg. Parent theme of multiple AMP compatible themes.

\n","requires":"","requires_php":"","wporg":false},{"name":"Activation","slug":"activation","version":"1.2.2","preview_url":"https://wp-themes.com/activation/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/activation/screenshot.png?ver=1.2.2","rating":100,"num_ratings":1,"homepage":"https://wordpress.org/themes/activation/","description":"Activation is a Primer child theme with a colorful, fitness-focused design.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":false,"wporg":true},{"name":"Velux","slug":"velux","version":"1.1.3","preview_url":"https://wp-themes.com/velux/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/velux/screenshot.png?ver=1.1.3","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/velux/","description":"Velux is a Primer child theme with a clean, professional, and upscale design.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":"5.6.0","wporg":true},{"name":"Scribbles","slug":"scribbles","version":"1.1.2","preview_url":"https://wp-themes.com/scribbles/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/scribbles/screenshot.png?ver=1.1.2","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/scribbles/","description":"Scribbles is a Primer child theme with a playful and fun mood.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.1","requires_php":false,"wporg":true},{"name":"Ascension","slug":"ascension","version":"1.1.5","preview_url":"https://wp-themes.com/ascension/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/ascension/screenshot.png?ver=1.1.5","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/ascension/","description":"Ascension is a Primer child theme with a business-oriented design.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":"5.6.0","wporg":true},{"name":"Uptown Style","slug":"uptown-style","version":"1.1.3","preview_url":"https://wp-themes.com/uptown-style/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/uptown-style/screenshot.png?ver=1.1.3","rating":100,"num_ratings":3,"homepage":"https://wordpress.org/themes/uptown-style/","description":"Uptown Style is a Primer child theme with elegance and class.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":"5.6.0","wporg":true},{"name":"Go","slug":"go","version":"1.4.4","preview_url":"https://wp-themes.com/go/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":"GoDaddy","author_url":"https://www.godaddy.com"},"screenshot_url":"//ts.w.org/wp-content/themes/go/screenshot.png?ver=1.4.4","rating":94,"num_ratings":14,"homepage":"https://wordpress.org/themes/go/","description":"Go is an innovative, Gutenberg-first WordPress theme, hyper-focused on empowering makers to build beautifully rich websites with WordPress.","requires":false,"requires_php":"5.6","wporg":true},{"name":"Navigation Pro","slug":"navigation-pro","version":"","preview_url":"https://my.studiopress.com/themes/navigation/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/02/navigationPro.jpg","rating":0,"num_ratings":0,"homepage":"https://my.studiopress.com/themes/navigation/","description":"\n\n\n

A Genesis framework theme that cuts through the haze with bright colors, bold images and versatile layouts to steer your site to success.

\n","requires":"","requires_php":"","wporg":false},{"name":"Memory","slug":"memory","version":"2.0.1","preview_url":"https://wp-themes.com/memory/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/memory/screenshot.png?ver=2.0.1","rating":60,"num_ratings":1,"homepage":"https://wordpress.org/themes/memory/","description":"Clean and beautiful personal blog theme.","requires":"4.5","requires_php":"5.2","wporg":true},{"name":"Sacha","slug":"sacha","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/sacha9.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","description":"\n\n\n

Sacha is a Newspack child theme. You’ll find the latest version on the Newspack release page.

\n","requires":"","requires_php":"","wporg":false},{"name":"Scott","slug":"scott-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/scott.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","description":"\n\n\n

Scott is a Newspack child theme. You’ll find the latest version on the Newspack release page.

\n","requires":"","requires_php":"","wporg":false},{"name":"Katharine","slug":"katharine-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/katharine.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","description":"\n\n\n

Katharine is a Newspack child theme. You’ll find the latest version on the Newspack release page.

\n","requires":"","requires_php":"","wporg":false},{"name":"Joseph","slug":"joseph-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/joseph-1.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","description":"\n\n\n

Joseph is a Newspack child theme. You’ll find the latest version on the Newspack release page.

\n","requires":"","requires_php":"","wporg":false},{"name":"Nelson","slug":"nelson-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/nelson.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","description":"\n\n\n

Nelson is a Newspack child theme. You’ll find the latest version on the Newspack release page.

\n","requires":"","requires_php":"","wporg":false},{"name":"Newspack","slug":"newspack","version":"","preview_url":"https://github.com/Automattic/newspack-theme","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2019/11/newspack.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme","description":"\n\n\n

The Newspack theme is a forward-looking news theme designed and developed to be highly customizable with the WordPress block editor.

\n","requires":"","requires_php":"","wporg":false},{"name":"Twenty Twenty","slug":"twentytwenty","version":"1.8","preview_url":"https://wp-themes.com/twentytwenty/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentytwenty/screenshot.png?ver=1.8","rating":88,"num_ratings":60,"homepage":"https://wordpress.org/themes/twentytwenty/","description":"Our default theme for 2020 is designed to take full advantage of the flexibility of the block editor. Organizations and businesses have the ability to create dynamic landing pages with endless layouts using the group and column blocks. The centered content column and fine-tuned typography also makes it perfect for traditional blogs. Complete editor styles give you a good idea of what your content will look like, even before you publish. You can give your site a personal touch by changing the background colors and the accent color in the Customizer. The colors of all elements on your site are automatically calculated based on the colors you pick, ensuring a high, accessible color contrast for your visitors.","requires":"4.7","requires_php":"5.2.4","wporg":true},{"name":"Primer","slug":"primer","version":"1.8.9","preview_url":"https://wp-themes.com/primer/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/primer/screenshot.png?ver=1.8.9","rating":90,"num_ratings":15,"homepage":"https://wordpress.org/themes/primer/","description":"Primer is a powerful theme that brings clarity to your content in a fresh design.","requires":false,"requires_php":false,"wporg":true},{"name":"Essence Pro","slug":"essence-pro-theme","version":"","preview_url":"https://my.studiopress.com/themes/essence/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2019/07/cropped-Essence-Pro.png","rating":0,"num_ratings":0,"homepage":"https://my.studiopress.com/themes/essence/","description":"\n\n\n

Essence Pro is a beautiful, clutter-free theme for sites in the health, wellness, and lifestyle niches.

\n","requires":"","requires_php":"","wporg":false},{"name":"Genesis Framework","slug":"genesis-theme-framework","version":"","preview_url":"https://my.studiopress.com/themes/genesis/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2019/07/cropped-Genesis.png","rating":0,"num_ratings":0,"homepage":"https://my.studiopress.com/themes/genesis/","description":"\n\n\n

The Genesis Framework empowers webmasters to quickly and easily build websites with WordPress.

\n","requires":"","requires_php":"","wporg":false},{"name":"Twenty Fourteen","slug":"twentyfourteen","version":"3.2","preview_url":"https://wp-themes.com/twentyfourteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyfourteen/screenshot.png?ver=3.2","rating":88,"num_ratings":93,"homepage":"https://wordpress.org/themes/twentyfourteen/","description":"In 2014, our default theme lets you create a responsive magazine website with a sleek, modern design. Feature your favorite homepage content in either a grid or a slider. Use the three widget areas to customize your website, and change your content's layout with a full-width page template and a contributor page to show off your authors. Creating a magazine website with WordPress has never been easier.","requires":false,"requires_php":"5.2.4","wporg":true},{"name":"Twenty Thirteen","slug":"twentythirteen","version":"3.4","preview_url":"https://wp-themes.com/twentythirteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentythirteen/screenshot.png?ver=3.4","rating":82,"num_ratings":62,"homepage":"https://wordpress.org/themes/twentythirteen/","description":"The 2013 theme for WordPress takes us back to the blog, featuring a full range of post formats, each displayed beautifully in their own unique way. Design details abound, starting with a vibrant color scheme and matching header images, beautiful typography and icons, and a flexible layout that looks great on any device, big or small.","requires":"3.6","requires_php":"5.2.4","wporg":true},{"name":"Twenty Eleven","slug":"twentyeleven","version":"3.9","preview_url":"https://wp-themes.com/twentyeleven/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyeleven/screenshot.png?ver=3.9","rating":92,"num_ratings":49,"homepage":"https://wordpress.org/themes/twentyeleven/","description":"The 2011 theme for WordPress is sophisticated, lightweight, and adaptable. Make it yours with a custom menu, header image, and background -- then go further with available theme options for light or dark color scheme, custom link colors, and three layout choices. Twenty Eleven comes equipped with a Showcase page template that transforms your front page into a showcase to show off your best content, widget support galore (sidebar, three footer areas, and a Showcase page widget area), and a custom \"Ephemera\" widget to display your Aside, Link, Quote, or Status posts. Included are styles for print and for the admin editor, support for featured images (as custom header images on posts and pages and as large images on featured \"sticky\" posts), and special styles for six different post formats.","requires":false,"requires_php":"5.2.4","wporg":true},{"name":"Twenty Ten","slug":"twentyten","version":"3.5","preview_url":"https://wp-themes.com/twentyten/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyten/screenshot.png?ver=3.5","rating":94,"num_ratings":50,"homepage":"https://wordpress.org/themes/twentyten/","description":"The 2010 theme for WordPress is stylish, customizable, simple, and readable -- make it yours with a custom menu, header image, and background. Twenty Ten supports six widgetized areas (two in the sidebar, four in the footer) and featured images (thumbnails for gallery posts and custom header images for posts and pages). It includes stylesheets for print and the admin Visual Editor, special styles for posts in the \"Asides\" and \"Gallery\" categories, and has an optional one-column page template that removes the sidebar.","requires":"3.0","requires_php":"5.2.4","wporg":true},{"name":"Zakra","slug":"zakra","version":"2.0.3","preview_url":"https://wp-themes.com/zakra/","author":{"user_nicename":"themegrill","profile":"https://profiles.wordpress.org/themegrill","avatar":"https://secure.gravatar.com/avatar/fa3cda768036cc3983458ed23394a43d?s=96&d=monsterid&r=g","display_name":"ThemeGrill","author":"ThemeGrill","author_url":"https://themegrill.com"},"screenshot_url":"//ts.w.org/wp-content/themes/zakra/screenshot.jpg?ver=2.0.3","rating":100,"num_ratings":474,"homepage":"https://wordpress.org/themes/zakra/","description":"Zakra is flexible, fast, lightweight and modern multipurpose theme that comes with many starter free sites (currently 10+ free starter sites and more will be added later) that you can use to make your site beautiful and professional. Check all the starter sites at https://zakratheme.com/demos. Suitable for personal blog, portfolio, WooCommerce stores, business websites and niche-based sites (like Cafe, Spa, Charity, Yoga, Wedding, Dentist, Education etc) as well. Works with Elementor plus other major page builders so you can create any layout you want. The theme is responsive, Gutenberg compatible, SEO friendly, translation ready and major WordPress plugins compatible.","requires":false,"requires_php":"5.6","wporg":true},{"name":"Neve","slug":"neve","version":"3.0.3","preview_url":"https://wp-themes.com/neve/","author":{"user_nicename":"themeisle","profile":"https://profiles.wordpress.org/themeisle","avatar":"https://secure.gravatar.com/avatar/a0ec097eaf5f30933eb00c1175d4bd55?s=96&d=monsterid&r=g","display_name":"Themeisle","author":"ThemeIsle","author_url":"https://themeisle.com"},"screenshot_url":"//ts.w.org/wp-content/themes/neve/screenshot.png?ver=3.0.3","rating":96,"num_ratings":807,"homepage":"https://wordpress.org/themes/neve/","description":"Neve is a super fast, easily customizable, multi-purpose theme. It’s perfect for blogs, small business, startups, agencies, firms, e-commerce shops (WooCommerce storefront) as well as personal portfolio sites and most types of projects. A fully AMP optimized and responsive theme, Neve will load in mere seconds and adapt perfectly on any viewing device. While it is lightweight and has a minimalist design, the theme is highly extendable, it has a highly SEO optimized code, resulting in top rankings in Google search results. Neve works perfectly with Gutenberg and the most popular page builders (Elementor, Brizy, Beaver Builder, Visual Composer, SiteOrigin, Divi). Neve is also WooCommerce ready, responsive, RTL & translation ready. Look no further. Neve is the perfect theme for you!","requires":false,"requires_php":"7.0","wporg":true},{"name":"Astra","slug":"astra","version":"3.6.9","preview_url":"https://wp-themes.com/astra/","author":{"user_nicename":"brainstormforce","profile":"https://profiles.wordpress.org/brainstormforce","avatar":"https://secure.gravatar.com/avatar/9f4255d653745eaa037105cd5eab2295?s=96&d=monsterid&r=g","display_name":"Brainstorm Force","author":"Brainstorm Force","author_url":"https://wpastra.com/about/"},"screenshot_url":"//ts.w.org/wp-content/themes/astra/screenshot.jpg?ver=3.6.9","rating":98,"num_ratings":4982,"homepage":"https://wordpress.org/themes/astra/","description":"Astra is fast, fully customizable & beautiful WordPress theme suitable for blog, personal portfolio, business website and WooCommerce storefront. It is very lightweight (less than 50KB on frontend) and offers unparalleled speed. Built with SEO in mind, Astra comes with Schema.org code integrated and is Native AMP ready so search engines will love your site. It offers special features and templates so it works perfectly with all page builders like Elementor, Beaver Builder, Visual Composer, SiteOrigin, Divi, etc. Some of the other features: # WooCommerce Ready # Responsive # RTL & Translation Ready # Extendible with premium addons # Regularly updated # Designed, Developed, Maintained & Supported by Brainstorm Force. Looking for a perfect base theme? Look no further. Astra is fast, fully customizable and WooCommerce ready theme that you can use for building any kind of website!","requires":"5.3","requires_php":"5.3","wporg":true},{"name":"Twenty Twelve","slug":"twentytwelve","version":"3.5","preview_url":"https://wp-themes.com/twentytwelve/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentytwelve/screenshot.png?ver=3.5","rating":92,"num_ratings":155,"homepage":"https://wordpress.org/themes/twentytwelve/","description":"The 2012 theme for WordPress is a fully responsive theme that looks great on any device. Features include a front page template with its own widgets, an optional display font, styling for post formats on both index and single views, and an optional no-sidebar page template. Make it yours with a custom menu, header image, and background.","requires":"3.5","requires_php":"5.2.4","wporg":true},{"name":"Twenty Nineteen","slug":"twentynineteen","version":"2.1","preview_url":"https://wp-themes.com/twentynineteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentynineteen/screenshot.png?ver=2.1","rating":74,"num_ratings":59,"homepage":"https://wordpress.org/themes/twentynineteen/","description":"Our 2019 default theme is designed to show off the power of the block editor. It features custom styles for all the default blocks, and is built so that what you see in the editor looks like what you'll see on your website. Twenty Nineteen is designed to be adaptable to a wide range of websites, whether you’re running a photo blog, launching a new business, or supporting a non-profit. Featuring ample whitespace and modern sans-serif headlines paired with classic serif body text, it's built to be beautiful on all screen sizes.","requires":"4.9.6","requires_php":"5.2.4","wporg":true},{"name":"Twenty Seventeen","slug":"twentyseventeen","version":"2.8","preview_url":"https://wp-themes.com/twentyseventeen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyseventeen/screenshot.png?ver=2.8","rating":88,"num_ratings":114,"homepage":"https://wordpress.org/themes/twentyseventeen/","description":"Twenty Seventeen brings your site to life with header video and immersive featured images. With a focus on business sites, it features multiple sections on the front page as well as widgets, navigation and social menus, a logo, and more. Personalize its asymmetrical grid with a custom color scheme and showcase your multimedia content with post formats. Our default theme for 2017 works great in many languages, for any abilities, and on any device.","requires":"4.7","requires_php":"5.2.4","wporg":true},{"name":"Twenty Sixteen","slug":"twentysixteen","version":"2.5","preview_url":"https://wp-themes.com/twentysixteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentysixteen/screenshot.png?ver=2.5","rating":82,"num_ratings":79,"homepage":"https://wordpress.org/themes/twentysixteen/","description":"Twenty Sixteen is a modernized take on an ever-popular WordPress layout — the horizontal masthead with an optional right sidebar that works perfectly for blogs and websites. It has custom color options with beautiful default color schemes, a harmonious fluid grid using a mobile-first approach, and impeccable polish in every detail. Twenty Sixteen will make your WordPress look beautiful everywhere.","requires":"4.4","requires_php":"5.2.4","wporg":true},{"name":"Twenty Fifteen","slug":"twentyfifteen","version":"3.0","preview_url":"https://wp-themes.com/twentyfifteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyfifteen/screenshot.png?ver=3.0","rating":88,"num_ratings":50,"homepage":"https://wordpress.org/themes/twentyfifteen/","description":"Our 2015 default theme is clean, blog-focused, and designed for clarity. Twenty Fifteen's simple, straightforward typography is readable on a wide variety of screen sizes, and suitable for multiple languages. We designed it using a mobile-first approach, meaning your content takes center-stage, regardless of whether your visitors arrive by smartphone, tablet, laptop, or desktop computer.","requires":false,"requires_php":"5.2.4","wporg":true}] \ No newline at end of file +[{"name":"ExS","slug":"exs","version":"1.7.5","preview_url":"https://wp-themes.com/exs/","author":{"user_nicename":"exstheme","profile":"https://profiles.wordpress.org/exstheme","avatar":"https://secure.gravatar.com/avatar/1823b8571e6996048b616b6602b21358?s=96&d=monsterid&r=g","display_name":"exstheme","author":"the ExS team","author_url":"https://exsthemewp.com/about/"},"screenshot_url":"//ts.w.org/wp-content/themes/exs/screenshot.png?ver=1.7.5","rating":100,"num_ratings":4,"homepage":"https://wordpress.org/themes/exs/","description":"ExS theme is a fastest and smallest multipurpose Gutenberg compatible highly customizable theme without 3rd party dependencies. It is designed to have 100% Google Page and LightHouse speed. It has an extra small size of CSS (70kB) and JS (3kB) assets, 100% SEO optimised and valid code and it is 100% mobile friendly. It also has a WooCommerce and Easy Digital Downloads (EDD) plugin support so it will be perfect solution for your online store and e-commerce business. bbPress extended support makes ExS theme perfect for your forum. BuddyPress and Ultimate member support will help to create your social network with ExS theme. WP Job manager and Simple Job Board support will help you to create your job board. The Events Calendar advanced support will help you to create your events site. LearnPress plugin advanced support will help you to create a online courses and online school site. It has unlimited color options, headers and footers layouts, 15+ blog layouts, separate layouts for each category and many more super useful features that you can set up directly in your Customizer with live preview. ExS theme has builtin multiple page templates to perfectly work with any page builder such as Elementor, Beaver Builder, WPBackery, Brizy etc. ExS uses WordPress starter content feature so you can setup your pages immediately after WordPress and theme installation by simply going to Customizer and publish your changes. Theme Demo: https://exsthemewp.com/demo/.","requires":"5.5","requires_php":"5.6","wporg":true},{"name":"Sydney","slug":"sydney","version":"1.81","preview_url":"https://wp-themes.com/sydney/","author":{"user_nicename":"athemes","profile":"https://profiles.wordpress.org/athemes","avatar":"https://secure.gravatar.com/avatar/0fe6c4dee6e201e81783d8a0ee12d83b?s=96&d=monsterid&r=g","display_name":"athemes","author":"aThemes","author_url":"https://athemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/sydney/screenshot.png?ver=1.81","rating":98,"num_ratings":506,"homepage":"https://wordpress.org/themes/sydney/","description":"Sydney is a powerful business theme that provides a fast way for companies or freelancers to create an awesome online presence. As well as being fully compatible with Elementor, Sydney brings plenty of customization possibilities like access to all Google Fonts, full color control, layout control, logo upload, full screen slider, header image, sticky navigation and much more. Also, Sydney provides all the construction blocks you need to rapidly create an engaging front page. Looking for a quick start with Sydney? With just a few clicks, you can import one of our existing demos (https://athemes.com/sydney-demos/)","requires":false,"requires_php":"5.6","wporg":true},{"name":"Really Simple","slug":"really-simple","version":"1.0.7","preview_url":"https://wp-themes.com/really-simple/","author":{"user_nicename":"flauberthenriques","profile":"https://profiles.wordpress.org/flauberthenriques","avatar":"https://secure.gravatar.com/avatar/d524eb0811fa44be90481509b000c779?s=96&d=monsterid&r=g","display_name":"Flaubert Henriques","author":"Flaubert Henriques","author_url":"https://profiles.wordpress.org/flauberthenriques/"},"screenshot_url":"//ts.w.org/wp-content/themes/really-simple/screenshot.png?ver=1.0.7","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/really-simple/","description":"Really Simple is a theme for bloggers and writers who need a ultra light and fast theme. The theme focuses on simplicity and loading speed. Yes, Really Simple Theme is also fully AMP compatible. Check the readme.txt file and leave the sidebar perfect after WordPress 5.8 update.","requires":"5.3","requires_php":"7.0","wporg":true},{"name":"Artpop","slug":"artpop","version":"1.0.8","preview_url":"https://wp-themes.com/artpop/","author":{"user_nicename":"designlabthemes","profile":"https://profiles.wordpress.org/designlabthemes","avatar":"https://secure.gravatar.com/avatar/956873f77232371cb89d8a0d7a516354?s=96&d=monsterid&r=g","display_name":"designlabthemes","author":"Design Lab","author_url":"https://www.designlabthemes.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/artpop/screenshot.png?ver=1.0.8","rating":100,"num_ratings":1,"homepage":"https://wordpress.org/themes/artpop/","description":"Artpop is a beautiful Gutenberg-first WordPress theme, carefully designed to help you build your online brand. Unleash your creativity, Artpop takes care of the rest! Well documented and easy to use even for WordPress beginners, Artpop is perfect for a blog, personal portfolio, small business website, and WooCommerce storefront. Easily set your logo, change colors, and create awesome layouts to give your website a truly unique look.","requires":"4.7","requires_php":"5.6","wporg":true},{"name":"Michelle","slug":"michelle","version":"1.2.0","preview_url":"https://wp-themes.com/michelle/","author":{"user_nicename":"webmandesign","profile":"https://profiles.wordpress.org/webmandesign","avatar":"https://secure.gravatar.com/avatar/f4a334f9f5af61b2bd22fcaadb04dd06?s=96&d=monsterid&r=g","display_name":"WebMan Design | Oliver Juhas","author":"WebMan Design","author_url":"https://www.webmandesign.eu/"},"screenshot_url":"//ts.w.org/wp-content/themes/michelle/screenshot.png?ver=1.2.0","rating":100,"num_ratings":3,"homepage":"https://wordpress.org/themes/michelle/","description":"Michelle is accessibility ready WordPress theme for creating inclusive websites easily and with fun using block editor. Useful block patterns, block styles, templates and featured posts functionality allow you to build an eyecatching website in no time. Customize site footer and error 404 page content with block editor! The theme also works with Beaver Builder, Elementor, or any other page builder. It also supports theme builders! Michelle elevates your business, eCommerce, portfolio, or blog website. Check out the demo at https://themedemos.webmandesign.eu/michelle/ and documentation at https://webmandesign.github.io/docs/michelle/","requires":"5.5","requires_php":"7.0","wporg":true},{"name":"Miniva","slug":"miniva","version":"1.6.3","preview_url":"https://wp-themes.com/miniva/","author":{"user_nicename":"tajam","profile":"https://profiles.wordpress.org/tajam","avatar":"https://secure.gravatar.com/avatar/378d4e715829ccf6f1fbe6dfef6eb539?s=96&d=monsterid&r=g","display_name":"Tajam","author":"Tajam","author_url":"https://tajam.id/"},"screenshot_url":"//ts.w.org/wp-content/themes/miniva/screenshot.png?ver=1.6.3","rating":100,"num_ratings":6,"homepage":"https://wordpress.org/themes/miniva/","description":"A fast, lightweight, and mobile-friendly WordPress theme for bloggers. Miniva is built with simplicity, accessibility and performance in mind. The clean and minimal design helps readers focus on your content. It supports AMP and several Jetpack modules including featured content, infinite scroll, content options and social menu. See the theme demo at https://tajam.id/miniva-demo/","requires":"4.5","requires_php":"5.3","wporg":true},{"name":"Iknow","slug":"iknow","version":"1.2.6","preview_url":"https://wp-themes.com/iknow/","author":{"user_nicename":"wpcalc","profile":"https://profiles.wordpress.org/wpcalc","avatar":"https://secure.gravatar.com/avatar/64ca4933fab3d5e50383f0b514acd5f6?s=96&d=monsterid&r=g","display_name":"Wow-Company","author":"Wow-Company","author_url":"https://wow-company.com"},"screenshot_url":"//ts.w.org/wp-content/themes/iknow/screenshot.png?ver=1.2.6","rating":98,"num_ratings":9,"homepage":"https://wordpress.org/themes/iknow/","description":"Iknow WordPress Theme has a minimalistic, responsive and mobile-friendly design. Easy and fast theme. The theme is perfect for creating Knowledge Base, Helpdesk, Wiki and FAQ websites. Ability to set custom icons for each category and tag. Manage the display of categories on the main page of the site. The integrated post rating system VoteUp/VoteDown. Breadcrumbs for easy site navigation. Custom widget to display the current navigation in a category and in a separate post. You can view the appearance and features of the theme on the site https://wow-company.com/wp-theme-iknow/. Documentation https://wow-company.com/faq/category/wow-themes/iknow/","requires":false,"requires_php":"5.6","wporg":true},{"name":"Kadence","slug":"kadence","version":"1.1.6","preview_url":"https://wp-themes.com/kadence/","author":{"user_nicename":"britner","profile":"https://profiles.wordpress.org/britner","avatar":"https://secure.gravatar.com/avatar/3276133b8df529e6e1e58586ab1a309e?s=96&d=monsterid&r=g","display_name":"Ben Ritner - Kadence WP","author":"Kadence WP","author_url":"https://www.kadencewp.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/kadence/screenshot.png?ver=1.1.6","rating":98,"num_ratings":142,"homepage":"https://wordpress.org/themes/kadence/","description":"Kadence Theme is a lightweight yet full featured WordPress theme for creating beautiful fast loading and accessible websites, easier than ever. It features an easy to use drag and drop header and footer builder to build any type of header in minutes. It features a full library of gorgeous starter templates that are easy to modify with our intelligent global font and color controls. With extensive integration with the most popular 3rd party plugins, you can quickly build impressive ecommerce websites, course websites, business websites, and more.","requires":"5.0","requires_php":"7.0","wporg":true},{"name":"Izo","slug":"izo","version":"1.0.12","preview_url":"https://wp-themes.com/izo/","author":{"user_nicename":"elfwp","profile":"https://profiles.wordpress.org/elfwp","avatar":"https://secure.gravatar.com/avatar/1cfedf4555fea4d8fbba2947635586ea?s=96&d=monsterid&r=g","display_name":"elfwp","author":"elfWP","author_url":"https://elfwp.com"},"screenshot_url":"//ts.w.org/wp-content/themes/izo/screenshot.png?ver=1.0.12","rating":90,"num_ratings":2,"homepage":"https://wordpress.org/themes/izo/","description":"Izo a fast, lightweight, native AMP and fully customizable multipurpose WordPress theme. Features include compatibility with many popular plugins like Elementor and other page builders, WooCommerce, WPML, LifterLMS and more. There is also full support for the new WordPress block editor. Izo is fully responsive and our users can take advantage of the many customizer options to easily change styles. Also, if you're looking for a quick start, we're offering a bunch of free starter sites, ready to easily import.","requires":false,"requires_php":"5.6","wporg":true},{"name":"OceanWP","slug":"oceanwp","version":"3.0.7","preview_url":"https://wp-themes.com/oceanwp/","author":{"user_nicename":"oceanwp","profile":"https://profiles.wordpress.org/oceanwp","avatar":"https://secure.gravatar.com/avatar/05f8d3fe2ccb6479bac14e4d40b406dd?s=96&d=monsterid&r=g","display_name":"oceanwp","author":"Nick","author_url":"https://oceanwp.org/about-me/"},"screenshot_url":"//ts.w.org/wp-content/themes/oceanwp/screenshot.png?ver=3.0.7","rating":98,"num_ratings":4966,"homepage":"https://wordpress.org/themes/oceanwp/","description":"OceanWP is the perfect theme for your project. Lightweight and highly extendable, it will enable you to create almost any type of website such a blog, portfolio, business website and WooCommerce storefront with a beautiful & professional design. Very fast, responsive, RTL & translation ready, best SEO practices, unique WooCommerce features to increase conversion and much more. You can even edit the settings on tablet & mobile so your site looks good on every device. Work with the most popular page builders as Elementor, Beaver Builder, Brizy, Visual Composer, Divi, SiteOrigin, etc... Developers will love his extensible codebase making it a joy to customize and extend. Best friend of Elementor & WooCommerce. Looking for a Multi-Purpose theme? Look no further! Check the demos to realize that it's the only theme you will ever need: https://oceanwp.org/demos/","requires":"5.3","requires_php":"7.2","wporg":true},{"name":"Twenty Twenty-One","slug":"twentytwentyone","version":"1.4","preview_url":"https://wp-themes.com/twentytwentyone/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentytwentyone/screenshot.png?ver=1.4","rating":82,"num_ratings":35,"homepage":"https://wordpress.org/themes/twentytwentyone/","description":"Twenty Twenty-One is a blank canvas for your ideas and it makes the block editor your best brush. With new block patterns, which allow you to create a beautiful layout in a matter of seconds, this theme’s soft colors and eye-catching — yet timeless — design will let your work shine. Take it for a spin! See how Twenty Twenty-One elevates your portfolio, business website, or personal blog.","requires":"5.3","requires_php":"5.6","wporg":true},{"name":"Occasio","slug":"occasio","version":"","preview_url":"https://themezee.com/themes/occasio/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/12/occasio.jpg","rating":0,"num_ratings":0,"homepage":"https://themezee.com/themes/occasio/","description":"\n\n\n

A sleek and modern Blogging & Magazine theme, carefully designed for writers using the Gutenberg Block Editor.

\n","requires":"","requires_php":"","wporg":false},{"name":"Tortuga","slug":"tortuga","version":"2.3.4","preview_url":"https://wp-themes.com/tortuga/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/tortuga/screenshot.jpg?ver=2.3.4","rating":96,"num_ratings":19,"homepage":"https://wordpress.org/themes/tortuga/","description":"Tortuga is a highly flexible and adventurous WordPress theme for your pirate magazine or any news related website. It supports three different post layouts, two sidebar schemes and a Magazine Homepage template based on widgets. Other highlights of Tortuga are the beautiful post slider and header widgets area. Arrr!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Treville","slug":"treville","version":"2.1.4","preview_url":"https://wp-themes.com/treville/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/treville/screenshot.jpg?ver=2.1.4","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/treville/","description":"An elegant Blogging & Magazine WordPress Theme with subtle colors and great typography. Treville supports two navigation menus, advanced post settings and a post slider with fullscreen images!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Wellington","slug":"wellington","version":"2.1.4","preview_url":"https://wp-themes.com/wellington/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/wellington/screenshot.jpg?ver=2.1.4","rating":100,"num_ratings":12,"homepage":"https://wordpress.org/themes/wellington/","description":"Wellington is a clean and simple Magazine WordPress theme with beautiful typography and subtle colors. The theme includes two different post layouts, a featured post slider and thoughtful theme settings in the Customizer.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Poseidon","slug":"poseidon","version":"2.3.4","preview_url":"https://wp-themes.com/poseidon/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/poseidon/screenshot.jpg?ver=2.3.4","rating":96,"num_ratings":16,"homepage":"https://wordpress.org/themes/poseidon/","description":"Poseidon is an elegant designed WordPress theme featuring a splendid fullscreen image slideshow. The clean typography and spacious white layout makes it great to share your stories. You can use the theme as simple blog or easily create a news website with the widget-based Magazine Homepage template.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Napoli","slug":"napoli","version":"2.2.4","preview_url":"https://wp-themes.com/napoli/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/napoli/screenshot.jpg?ver=2.2.4","rating":100,"num_ratings":4,"homepage":"https://wordpress.org/themes/napoli/","description":"Napoli is a beautiful WordPress theme perfectly suited for a food magazine. It features a great featured post slider, smooth typography and a grid-layout for posts. Bon appetit!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Mercia","slug":"mercia","version":"1.9.7","preview_url":"https://wp-themes.com/mercia/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/mercia/screenshot.jpg?ver=1.9.7","rating":100,"num_ratings":1,"homepage":"https://wordpress.org/themes/mercia/","description":"Mercia is a flexible and versatile theme perfect for lifestyle, travel, or fashion magazines. It features a modern and minimalist design with great typropaphy. Of course it works on all screen sizes. With multiple blog layouts and powerful Magazine widgets, you can easily create a stunning and dynamic news website in just a few minutes.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Maxwell","slug":"maxwell","version":"2.3.4","preview_url":"https://wp-themes.com/maxwell/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/maxwell/screenshot.jpg?ver=2.3.4","rating":100,"num_ratings":7,"homepage":"https://wordpress.org/themes/maxwell/","description":"Maxwell is a minimalistic and elegant WordPress theme featuring an ultra clean magazine layout. With a beautiful typography, various post layouts and a gorgeous featured posts slideshow Maxwell truly helps you to stand out.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Harrison","slug":"harrison","version":"1.3.4","preview_url":"https://wp-themes.com/harrison/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/harrison/screenshot.jpg?ver=1.3.4","rating":80,"num_ratings":1,"homepage":"https://wordpress.org/themes/harrison/","description":"Harrison is a highly versatile WordPress Theme and was specially designed for use with the new WordPress Block Editor. The theme supports the latest Gutenberg features and provides different blog layouts and extensive post settings. The clean and elegant design is perfect to create all kinds of websites. You should really try it!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Gridbox","slug":"gridbox","version":"2.3.4","preview_url":"https://wp-themes.com/gridbox/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/gridbox/screenshot.jpg?ver=2.3.4","rating":74,"num_ratings":6,"homepage":"https://wordpress.org/themes/gridbox/","description":"Gridbox is a clean and solid WordPress theme featuring a three-column grid-layout for posts. The theme works out of the box and does not require any complicated setup. It is perfectly suited for a simple magazine, blog or portfolio website.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Chronus","slug":"chronus","version":"2.0.5","preview_url":"https://wp-themes.com/chronus/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/chronus/screenshot.jpg?ver=2.0.5","rating":80,"num_ratings":5,"homepage":"https://wordpress.org/themes/chronus/","description":"Chronus is a fast and lightweight WordPress Theme created for magazines, news websites and personal blogs. The Featured Content section and flexible Magazine Widgets give you the ability to highlight your most important posts on the home page. The minimalistic and responsive design focuses on your content and looks great on any screen size.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Donovan","slug":"donovan","version":"1.8.4","preview_url":"https://wp-themes.com/donovan/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/donovan/screenshot.jpg?ver=1.8.4","rating":96,"num_ratings":16,"homepage":"https://wordpress.org/themes/donovan/","description":"Donovan is a flexible, yet easy-to-use blogging theme with a clean and modern design. It features an elegant mobile-first design, three different blog layouts and extensive post settings. Donovan is perfect for your personal blog or for any content-focused website.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Yosemite Lite","slug":"yosemite-lite","version":"1.2.1","preview_url":"https://wp-themes.com/yosemite-lite/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/yosemite-lite/screenshot.jpg?ver=1.2.1","rating":60,"num_ratings":2,"homepage":"https://wordpress.org/themes/yosemite-lite/","description":"Yosemite is a beautiful WordPress blog theme for personal blogs. Yosemite has a modern, clean and elegant look and lots of customization for bloggers. Built on the latest technology of WordPress, Yosemite is lightweight, fast and optimized for all mobile phones.","requires":false,"requires_php":false,"wporg":true},{"name":"Justread","slug":"justread","version":"1.3.0","preview_url":"https://wp-themes.com/justread/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/justread/screenshot.jpg?ver=1.3.0","rating":100,"num_ratings":5,"homepage":"https://wordpress.org/themes/justread/","description":"Justread is a clean and modern WordPress theme that focuses on reading experience. Justread has a grid layout with single column content. The theme uses system fonts and SVG for fast loading. Enjoy reading long content with comfortability.","requires":false,"requires_php":"5.6","wporg":true},{"name":"Floral Lite","slug":"floral-lite","version":"1.4","preview_url":"https://wp-themes.com/floral-lite/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/floral-lite/screenshot.jpg?ver=1.4","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/floral-lite/","description":"Floral is a beautiful WordPress blog theme for personal blogs. Floral has a modern, clean and elegant look and lots of customization for bloggers. Built on the latest technology of WordPress, Floral is lightweight, fast and optimized for all mobile phones.","requires":"4.5","requires_php":"5.6","wporg":true},{"name":"EightyDays Lite","slug":"eightydays-lite","version":"2.2.7","preview_url":"https://wp-themes.com/eightydays-lite/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"http://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/eightydays-lite/screenshot.png?ver=2.2.7","rating":90,"num_ratings":4,"homepage":"https://wordpress.org/themes/eightydays-lite/","description":"EightyDays is a beautiful WordPress travel theme for travel blogs or magazines. EightyDays has a modern, clean and elegant look and lots of customization for bloggers. Built on the latest technology of WordPress, EightyDays is lightweight, fast and optimized for all mobile phones.","requires":false,"requires_php":false,"wporg":true},{"name":"eStar","slug":"estar","version":"1.3.4","preview_url":"https://wp-themes.com/estar/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/estar/screenshot.png?ver=1.3.4","rating":100,"num_ratings":4,"homepage":"https://wordpress.org/themes/estar/","description":"eStar is a super fast, lightweight (less than 10KB on the front end), responsive and highly customizable WordPress theme suitable for blog, personal portfolio and business websites. It works perfectly with Gutenberg and all WordPress blocks. You can also pair it with any page builder plugin like Elementor, Beaver Builder, Visual Composer, SiteOrigin, Divi, Thrive Architect, Brizy and more. eStar is written from scratch with performance, extensibility, usability and SEO in mind. The theme follows best practices, well-coded and follows the latest web standards (HTML5, SVG, JavaScript). Some of the other features: microdata integration, widget areas, sidebar layouts, custom colors, custom Google fonts, translation ready. Looking for a perfect base theme? Look no further. eStar is fast, fully customizable WordPress theme that you can use for building any kind of website like business agencies, corporate, portfolio, education, university portal, consulting, church, restaurant, medical and so on. Learn more about the theme at https://gretathemes.com/wordpress-themes/estar/","requires":false,"requires_php":"5.6","wporg":true},{"name":"Stow","slug":"stow-2","version":"","preview_url":"https://wordpress.com/theme/stow","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/stow.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/stow","description":"\n\n\n

A bold and clean theme with lots of space for large images, it’s the ideal choice for creating an online presence for your business. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Shawburn","slug":"shawburn","version":"","preview_url":"https://wordpress.com/theme/shawburn","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/shawborn.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/shawburn","description":"\n\n\n

Shawburn is the ideal choice for creating an online presence for your business. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Rivington","slug":"rivington-2","version":"","preview_url":"https://wordpress.com/theme/rivington","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/rivington.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/rivington","description":"\n\n\n

Rivington was designed as a website template for realtors. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Redhill","slug":"redhill-2","version":"","preview_url":"https://wordpress.com/theme/redhill","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/redhill.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/redhill","description":"\n\n\n

Redhill is a simple theme with clean typography, created with entrepreneurs and small business owners in mind. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Morden","slug":"morden-2","version":"","preview_url":"https://wordpress.com/theme/morden","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/morden.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/morden","description":"\n\n\n

Morden is a functional and responsive multi-purpose theme that is the perfect solution for your business’s online presence. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Maywood","slug":"maywood-2","version":"","preview_url":"https://wordpress.com/theme/maywood","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/maywood.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/maywood","description":"\n\n\n

Modern, clean, sophisticated: Make your online presence as striking and stylish as your business with Maywood. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Mayland","slug":"mayland","version":"","preview_url":"https://wordpress.com/theme/mayland","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/mmayland.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/mayland","description":"\n\n\n

Mayland is a free WordPress theme. The clean, tasteful design highlights all your writing and photography projects. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Leven","slug":"leven-2","version":"","preview_url":"https://wordpress.com/theme/leven","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/leven.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/leven","description":"\n\n\n

Leven is a colorful, typography driven theme meant to grab the attention of potential customers and market or sell products to them. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Hever","slug":"hever-2","version":"","preview_url":"https://wordpress.com/theme/hever","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/hever.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/hever","description":"\n\n\n

Hever is a fun and friendly free WordPress theme that works particularly well for creative and crafty businesses. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Exford","slug":"exford-2","version":"","preview_url":"https://wordpress.com/theme/exford","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/exford.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/exford","description":"\n\n\n

A classic typography and clean design lend a sophisticated air to your website’s content. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Brompton","slug":"brompton-2","version":"","preview_url":"https://wordpress.com/theme/brompton","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/brompton.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/brompton","description":"\n\n\n

A a simple yet powerful website theme for small-business owners and entrepreneurs. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Barnsbury","slug":"barnsbury-2","version":"","preview_url":"https://wordpress.com/theme/barnsbury","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/Barnsbury.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/barnsbury","description":"\n\n\n

Barnsbury is an earthy, friendly theme made with farming and agriculture businesses in mind — but versatile enough for a personal site, too. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Balasana","slug":"balasana-2","version":"","preview_url":"https://wordpress.com/theme/balasana","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/Balasana.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/balasana","description":"\n\n\n

Balasana is a clean and minimalist business theme designed with health and wellness-focused sites in mind. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Alves","slug":"alves-2","version":"","preview_url":"https://wordpress.com/theme/alves","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/Alves.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/alves","description":"\n\n\n

Convincing design for your charity or organization’s online presence. Highlight your actions, causes and projects, Alves is versatile enough to be your personal site too. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Varia","slug":"varia-2","version":"","preview_url":"https://wordpress.com/theme/varia","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/varia.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/varia","description":"\n\n\n

A variable-based design system for WordPress sites built with Gutenberg. Parent theme of multiple AMP compatible themes.

\n","requires":"","requires_php":"","wporg":false},{"name":"Activation","slug":"activation","version":"1.2.2","preview_url":"https://wp-themes.com/activation/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/activation/screenshot.png?ver=1.2.2","rating":100,"num_ratings":1,"homepage":"https://wordpress.org/themes/activation/","description":"Activation is a Primer child theme with a colorful, fitness-focused design.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":false,"wporg":true},{"name":"Velux","slug":"velux","version":"1.1.3","preview_url":"https://wp-themes.com/velux/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/velux/screenshot.png?ver=1.1.3","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/velux/","description":"Velux is a Primer child theme with a clean, professional, and upscale design.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":"5.6.0","wporg":true},{"name":"Scribbles","slug":"scribbles","version":"1.1.2","preview_url":"https://wp-themes.com/scribbles/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/scribbles/screenshot.png?ver=1.1.2","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/scribbles/","description":"Scribbles is a Primer child theme with a playful and fun mood.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.1","requires_php":false,"wporg":true},{"name":"Ascension","slug":"ascension","version":"1.1.5","preview_url":"https://wp-themes.com/ascension/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/ascension/screenshot.png?ver=1.1.5","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/ascension/","description":"Ascension is a Primer child theme with a business-oriented design.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":"5.6.0","wporg":true},{"name":"Uptown Style","slug":"uptown-style","version":"1.1.3","preview_url":"https://wp-themes.com/uptown-style/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/uptown-style/screenshot.png?ver=1.1.3","rating":100,"num_ratings":3,"homepage":"https://wordpress.org/themes/uptown-style/","description":"Uptown Style is a Primer child theme with elegance and class.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":"5.6.0","wporg":true},{"name":"Go","slug":"go","version":"1.4.4","preview_url":"https://wp-themes.com/go/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":"GoDaddy","author_url":"https://www.godaddy.com"},"screenshot_url":"//ts.w.org/wp-content/themes/go/screenshot.png?ver=1.4.4","rating":94,"num_ratings":14,"homepage":"https://wordpress.org/themes/go/","description":"Go is an innovative, Gutenberg-first WordPress theme, hyper-focused on empowering makers to build beautifully rich websites with WordPress.","requires":false,"requires_php":"5.6","wporg":true},{"name":"Navigation Pro","slug":"navigation-pro","version":"","preview_url":"https://my.studiopress.com/themes/navigation/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/02/navigationPro.jpg","rating":0,"num_ratings":0,"homepage":"https://my.studiopress.com/themes/navigation/","description":"\n\n\n

A Genesis framework theme that cuts through the haze with bright colors, bold images and versatile layouts to steer your site to success.

\n","requires":"","requires_php":"","wporg":false},{"name":"Memory","slug":"memory","version":"2.0.1","preview_url":"https://wp-themes.com/memory/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/memory/screenshot.png?ver=2.0.1","rating":60,"num_ratings":1,"homepage":"https://wordpress.org/themes/memory/","description":"Clean and beautiful personal blog theme.","requires":"4.5","requires_php":"5.2","wporg":true},{"name":"Sacha","slug":"sacha","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/sacha9.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","description":"\n\n\n

Sacha is a Newspack child theme. You’ll find the latest version on the Newspack release page.

\n","requires":"","requires_php":"","wporg":false},{"name":"Scott","slug":"scott-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/scott.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","description":"\n\n\n

Scott is a Newspack child theme. You’ll find the latest version on the Newspack release page.

\n","requires":"","requires_php":"","wporg":false},{"name":"Katharine","slug":"katharine-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/katharine.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","description":"\n\n\n

Katharine is a Newspack child theme. You’ll find the latest version on the Newspack release page.

\n","requires":"","requires_php":"","wporg":false},{"name":"Joseph","slug":"joseph-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/joseph-1.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","description":"\n\n\n

Joseph is a Newspack child theme. You’ll find the latest version on the Newspack release page.

\n","requires":"","requires_php":"","wporg":false},{"name":"Nelson","slug":"nelson-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/nelson.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","description":"\n\n\n

Nelson is a Newspack child theme. You’ll find the latest version on the Newspack release page.

\n","requires":"","requires_php":"","wporg":false},{"name":"Newspack","slug":"newspack","version":"","preview_url":"https://github.com/Automattic/newspack-theme","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2019/11/newspack.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme","description":"\n\n\n

The Newspack theme is a forward-looking news theme designed and developed to be highly customizable with the WordPress block editor.

\n","requires":"","requires_php":"","wporg":false},{"name":"Twenty Twenty","slug":"twentytwenty","version":"1.8","preview_url":"https://wp-themes.com/twentytwenty/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentytwenty/screenshot.png?ver=1.8","rating":88,"num_ratings":60,"homepage":"https://wordpress.org/themes/twentytwenty/","description":"Our default theme for 2020 is designed to take full advantage of the flexibility of the block editor. Organizations and businesses have the ability to create dynamic landing pages with endless layouts using the group and column blocks. The centered content column and fine-tuned typography also makes it perfect for traditional blogs. Complete editor styles give you a good idea of what your content will look like, even before you publish. You can give your site a personal touch by changing the background colors and the accent color in the Customizer. The colors of all elements on your site are automatically calculated based on the colors you pick, ensuring a high, accessible color contrast for your visitors.","requires":"4.7","requires_php":"5.2.4","wporg":true},{"name":"Primer","slug":"primer","version":"1.8.9","preview_url":"https://wp-themes.com/primer/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/primer/screenshot.png?ver=1.8.9","rating":90,"num_ratings":15,"homepage":"https://wordpress.org/themes/primer/","description":"Primer is a powerful theme that brings clarity to your content in a fresh design.","requires":false,"requires_php":false,"wporg":true},{"name":"Essence Pro","slug":"essence-pro-theme","version":"","preview_url":"https://my.studiopress.com/themes/essence/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2019/07/cropped-Essence-Pro.png","rating":0,"num_ratings":0,"homepage":"https://my.studiopress.com/themes/essence/","description":"\n\n\n

Essence Pro is a beautiful, clutter-free theme for sites in the health, wellness, and lifestyle niches.

\n","requires":"","requires_php":"","wporg":false},{"name":"Genesis Framework","slug":"genesis-theme-framework","version":"","preview_url":"https://my.studiopress.com/themes/genesis/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2019/07/cropped-Genesis.png","rating":0,"num_ratings":0,"homepage":"https://my.studiopress.com/themes/genesis/","description":"\n\n\n

The Genesis Framework empowers webmasters to quickly and easily build websites with WordPress.

\n","requires":"","requires_php":"","wporg":false},{"name":"Twenty Fourteen","slug":"twentyfourteen","version":"3.2","preview_url":"https://wp-themes.com/twentyfourteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyfourteen/screenshot.png?ver=3.2","rating":88,"num_ratings":93,"homepage":"https://wordpress.org/themes/twentyfourteen/","description":"In 2014, our default theme lets you create a responsive magazine website with a sleek, modern design. Feature your favorite homepage content in either a grid or a slider. Use the three widget areas to customize your website, and change your content's layout with a full-width page template and a contributor page to show off your authors. Creating a magazine website with WordPress has never been easier.","requires":false,"requires_php":"5.2.4","wporg":true},{"name":"Twenty Thirteen","slug":"twentythirteen","version":"3.4","preview_url":"https://wp-themes.com/twentythirteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentythirteen/screenshot.png?ver=3.4","rating":82,"num_ratings":62,"homepage":"https://wordpress.org/themes/twentythirteen/","description":"The 2013 theme for WordPress takes us back to the blog, featuring a full range of post formats, each displayed beautifully in their own unique way. Design details abound, starting with a vibrant color scheme and matching header images, beautiful typography and icons, and a flexible layout that looks great on any device, big or small.","requires":"3.6","requires_php":"5.2.4","wporg":true},{"name":"Twenty Eleven","slug":"twentyeleven","version":"3.9","preview_url":"https://wp-themes.com/twentyeleven/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyeleven/screenshot.png?ver=3.9","rating":92,"num_ratings":49,"homepage":"https://wordpress.org/themes/twentyeleven/","description":"The 2011 theme for WordPress is sophisticated, lightweight, and adaptable. Make it yours with a custom menu, header image, and background -- then go further with available theme options for light or dark color scheme, custom link colors, and three layout choices. Twenty Eleven comes equipped with a Showcase page template that transforms your front page into a showcase to show off your best content, widget support galore (sidebar, three footer areas, and a Showcase page widget area), and a custom \"Ephemera\" widget to display your Aside, Link, Quote, or Status posts. Included are styles for print and for the admin editor, support for featured images (as custom header images on posts and pages and as large images on featured \"sticky\" posts), and special styles for six different post formats.","requires":false,"requires_php":"5.2.4","wporg":true},{"name":"Twenty Ten","slug":"twentyten","version":"3.5","preview_url":"https://wp-themes.com/twentyten/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyten/screenshot.png?ver=3.5","rating":94,"num_ratings":50,"homepage":"https://wordpress.org/themes/twentyten/","description":"The 2010 theme for WordPress is stylish, customizable, simple, and readable -- make it yours with a custom menu, header image, and background. Twenty Ten supports six widgetized areas (two in the sidebar, four in the footer) and featured images (thumbnails for gallery posts and custom header images for posts and pages). It includes stylesheets for print and the admin Visual Editor, special styles for posts in the \"Asides\" and \"Gallery\" categories, and has an optional one-column page template that removes the sidebar.","requires":"3.0","requires_php":"5.2.4","wporg":true},{"name":"Zakra","slug":"zakra","version":"2.0.4","preview_url":"https://wp-themes.com/zakra/","author":{"user_nicename":"themegrill","profile":"https://profiles.wordpress.org/themegrill","avatar":"https://secure.gravatar.com/avatar/fa3cda768036cc3983458ed23394a43d?s=96&d=monsterid&r=g","display_name":"ThemeGrill","author":"ThemeGrill","author_url":"https://themegrill.com"},"screenshot_url":"//ts.w.org/wp-content/themes/zakra/screenshot.jpg?ver=2.0.4","rating":100,"num_ratings":479,"homepage":"https://wordpress.org/themes/zakra/","description":"Zakra is flexible, fast, lightweight and modern multipurpose theme that comes with many starter free sites (currently 10+ free starter sites and more will be added later) that you can use to make your site beautiful and professional. Check all the starter sites at https://zakratheme.com/demos. Suitable for personal blog, portfolio, WooCommerce stores, business websites and niche-based sites (like Cafe, Spa, Charity, Yoga, Wedding, Dentist, Education etc) as well. Works with Elementor plus other major page builders so you can create any layout you want. The theme is responsive, Gutenberg compatible, SEO friendly, translation ready and major WordPress plugins compatible.","requires":false,"requires_php":"5.6","wporg":true},{"name":"Neve","slug":"neve","version":"3.0.5","preview_url":"https://wp-themes.com/neve/","author":{"user_nicename":"themeisle","profile":"https://profiles.wordpress.org/themeisle","avatar":"https://secure.gravatar.com/avatar/a0ec097eaf5f30933eb00c1175d4bd55?s=96&d=monsterid&r=g","display_name":"Themeisle","author":"ThemeIsle","author_url":"https://themeisle.com"},"screenshot_url":"//ts.w.org/wp-content/themes/neve/screenshot.png?ver=3.0.5","rating":96,"num_ratings":828,"homepage":"https://wordpress.org/themes/neve/","description":"Neve is a super fast, easily customizable, multi-purpose theme. It’s perfect for blogs, small business, startups, agencies, firms, e-commerce shops (WooCommerce storefront) as well as personal portfolio sites and most types of projects. A fully AMP optimized and responsive theme, Neve will load in mere seconds and adapt perfectly on any viewing device. While it is lightweight and has a minimalist design, the theme is highly extendable, it has a highly SEO optimized code, resulting in top rankings in Google search results. Neve works perfectly with Gutenberg and the most popular page builders (Elementor, Brizy, Beaver Builder, Visual Composer, SiteOrigin, Divi). Neve is also WooCommerce ready, responsive, RTL & translation ready. Look no further. Neve is the perfect theme for you!","requires":"5.4","requires_php":"7.0","wporg":true},{"name":"Astra","slug":"astra","version":"3.7.3","preview_url":"https://wp-themes.com/astra/","author":{"user_nicename":"brainstormforce","profile":"https://profiles.wordpress.org/brainstormforce","avatar":"https://secure.gravatar.com/avatar/9f4255d653745eaa037105cd5eab2295?s=96&d=monsterid&r=g","display_name":"Brainstorm Force","author":"Brainstorm Force","author_url":"https://wpastra.com/about/"},"screenshot_url":"//ts.w.org/wp-content/themes/astra/screenshot.jpg?ver=3.7.3","rating":98,"num_ratings":4997,"homepage":"https://wordpress.org/themes/astra/","description":"Astra is fast, fully customizable & beautiful WordPress theme suitable for blog, personal portfolio, business website and WooCommerce storefront. It is very lightweight (less than 50KB on frontend) and offers unparalleled speed. Built with SEO in mind, Astra comes with Schema.org code integrated and is Native AMP ready so search engines will love your site. It offers special features and templates so it works perfectly with all page builders like Elementor, Beaver Builder, Visual Composer, SiteOrigin, Divi, etc. Some of the other features: # WooCommerce Ready # Responsive # RTL & Translation Ready # Extendible with premium addons # Regularly updated # Designed, Developed, Maintained & Supported by Brainstorm Force. Looking for a perfect base theme? Look no further. Astra is fast, fully customizable and WooCommerce ready theme that you can use for building any kind of website!","requires":"5.3","requires_php":"5.3","wporg":true},{"name":"Twenty Twelve","slug":"twentytwelve","version":"3.5","preview_url":"https://wp-themes.com/twentytwelve/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentytwelve/screenshot.png?ver=3.5","rating":92,"num_ratings":155,"homepage":"https://wordpress.org/themes/twentytwelve/","description":"The 2012 theme for WordPress is a fully responsive theme that looks great on any device. Features include a front page template with its own widgets, an optional display font, styling for post formats on both index and single views, and an optional no-sidebar page template. Make it yours with a custom menu, header image, and background.","requires":"3.5","requires_php":"5.2.4","wporg":true},{"name":"Twenty Nineteen","slug":"twentynineteen","version":"2.1","preview_url":"https://wp-themes.com/twentynineteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentynineteen/screenshot.png?ver=2.1","rating":74,"num_ratings":59,"homepage":"https://wordpress.org/themes/twentynineteen/","description":"Our 2019 default theme is designed to show off the power of the block editor. It features custom styles for all the default blocks, and is built so that what you see in the editor looks like what you'll see on your website. Twenty Nineteen is designed to be adaptable to a wide range of websites, whether you’re running a photo blog, launching a new business, or supporting a non-profit. Featuring ample whitespace and modern sans-serif headlines paired with classic serif body text, it's built to be beautiful on all screen sizes.","requires":"4.9.6","requires_php":"5.2.4","wporg":true},{"name":"Twenty Seventeen","slug":"twentyseventeen","version":"2.8","preview_url":"https://wp-themes.com/twentyseventeen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyseventeen/screenshot.png?ver=2.8","rating":88,"num_ratings":114,"homepage":"https://wordpress.org/themes/twentyseventeen/","description":"Twenty Seventeen brings your site to life with header video and immersive featured images. With a focus on business sites, it features multiple sections on the front page as well as widgets, navigation and social menus, a logo, and more. Personalize its asymmetrical grid with a custom color scheme and showcase your multimedia content with post formats. Our default theme for 2017 works great in many languages, for any abilities, and on any device.","requires":"4.7","requires_php":"5.2.4","wporg":true},{"name":"Twenty Sixteen","slug":"twentysixteen","version":"2.5","preview_url":"https://wp-themes.com/twentysixteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentysixteen/screenshot.png?ver=2.5","rating":82,"num_ratings":79,"homepage":"https://wordpress.org/themes/twentysixteen/","description":"Twenty Sixteen is a modernized take on an ever-popular WordPress layout — the horizontal masthead with an optional right sidebar that works perfectly for blogs and websites. It has custom color options with beautiful default color schemes, a harmonious fluid grid using a mobile-first approach, and impeccable polish in every detail. Twenty Sixteen will make your WordPress look beautiful everywhere.","requires":"4.4","requires_php":"5.2.4","wporg":true},{"name":"Twenty Fifteen","slug":"twentyfifteen","version":"3.0","preview_url":"https://wp-themes.com/twentyfifteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyfifteen/screenshot.png?ver=3.0","rating":88,"num_ratings":50,"homepage":"https://wordpress.org/themes/twentyfifteen/","description":"Our 2015 default theme is clean, blog-focused, and designed for clarity. Twenty Fifteen's simple, straightforward typography is readable on a wide variety of screen sizes, and suitable for multiple languages. We designed it using a mobile-first approach, meaning your content takes center-stage, regardless of whether your visitors arrive by smartphone, tablet, laptop, or desktop computer.","requires":false,"requires_php":"5.2.4","wporg":true}] \ No newline at end of file diff --git a/includes/embeds/class-amp-twitter-embed-handler.php b/includes/embeds/class-amp-twitter-embed-handler.php index c33c71e7915..9dd030b5164 100644 --- a/includes/embeds/class-amp-twitter-embed-handler.php +++ b/includes/embeds/class-amp-twitter-embed-handler.php @@ -19,7 +19,6 @@ class AMP_Twitter_Embed_Handler extends AMP_Base_Embed_Handler { /** * Default width. * - * @phpstan-ignore-next-line * @var int|string */ protected $DEFAULT_WIDTH = 'auto'; From ceacbd76ef36f47783e3f59fefe34bf7cee0540a Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Mon, 11 Oct 2021 16:51:07 +0530 Subject: [PATCH 024/105] Use wp_filesystem instead of php function to read files --- src/Admin/AMPPlugins.php | 20 +++++++++++--- src/Admin/AMPThemes.php | 36 +++++++++++++++++++++++--- tests/php/src/Admin/AMPPluginsTest.php | 19 ++++++++------ tests/php/src/Admin/AMPThemesTest.php | 8 +++--- 4 files changed, 65 insertions(+), 18 deletions(-) diff --git a/src/Admin/AMPPlugins.php b/src/Admin/AMPPlugins.php index aeafa18c3e2..a7cd79d432e 100644 --- a/src/Admin/AMPPlugins.php +++ b/src/Admin/AMPPlugins.php @@ -61,9 +61,23 @@ public static function is_needed() { */ public static function set_plugins() { - $plugin_json = AMP__DIR__ . '/data/plugins.json'; - $json_data = file_get_contents( $plugin_json ); - self::$plugins = json_decode( $json_data, true ); + global $wp_filesystem; + + AMPThemes::init_file_system(); + + $plugin_json = AMP__DIR__ . '/data/plugins.json'; + + if ( ! file_exists( $plugin_json ) ) { + return; + } + + $json_data = $wp_filesystem->get_contents( $plugin_json ); + self::$plugins = json_decode( $json_data, true ); + $json_last_error = json_last_error(); + + if ( JSON_ERROR_NONE !== $json_last_error ) { + self::$plugins = []; + } } /** diff --git a/src/Admin/AMPThemes.php b/src/Admin/AMPThemes.php index 347b4c198f4..8e8f23d16df 100644 --- a/src/Admin/AMPThemes.php +++ b/src/Admin/AMPThemes.php @@ -9,6 +9,7 @@ use AmpProject\AmpWP\Infrastructure\Registerable; use AmpProject\AmpWP\Infrastructure\Service; +use WP_Filesystem_Base; /** * Add new tab (AMP) in theme install screen in WordPress admin. @@ -30,16 +31,45 @@ class AMPThemes implements Service, Registerable { */ public static $themes = []; + /** + * To initialize file system. + * + * @return void + */ + public static function init_file_system() { + global $wp_filesystem; + + require_once ABSPATH . 'wp-admin/includes/file.php'; + + if ( ! $wp_filesystem instanceof WP_Filesystem_Base ) { + $creds = request_filesystem_credentials( site_url() ); + wp_filesystem( $creds ); + } + } + /** * Fetch AMP themes data. * * @return void */ public static function set_themes() { + global $wp_filesystem; + + self::init_file_system(); - $file_path = AMP__DIR__ . '/data/themes.json'; - $json_data = file_get_contents( $file_path ); - self::$themes = json_decode( $json_data, true ); + $file_path = AMP__DIR__ . '/data/themes.json'; + + if ( ! file_exists( $file_path ) ) { + return; + } + + $json_data = $wp_filesystem->get_contents( $file_path ); + self::$themes = json_decode( $json_data, true ); + $json_last_error = json_last_error(); + + if ( JSON_ERROR_NONE !== $json_last_error ) { + self::$themes = []; + } } /** diff --git a/tests/php/src/Admin/AMPPluginsTest.php b/tests/php/src/Admin/AMPPluginsTest.php index f1619cd3565..403122c848a 100644 --- a/tests/php/src/Admin/AMPPluginsTest.php +++ b/tests/php/src/Admin/AMPPluginsTest.php @@ -41,7 +41,7 @@ public function setUp() { } /** - * @covers ::get_registration_action + * @covers ::get_registration_action() */ public function test_get_registration_action() { @@ -49,7 +49,7 @@ public function test_get_registration_action() { } /** - * @covers ::is_needed + * @covers ::is_needed() */ public function test_is_needed() { @@ -64,7 +64,7 @@ public function test_is_needed() { } /** - * @covers ::register + * @covers ::register() */ public function test_register() { @@ -109,7 +109,7 @@ public function test_register() { } /** - * @covers ::enqueue_scripts + * @covers ::enqueue_scripts() */ public function test_enqueue_scripts() { $this->instance->enqueue_scripts(); @@ -118,7 +118,7 @@ public function test_enqueue_scripts() { } /** - * @covers ::add_tab + * @covers ::add_tab() */ public function test_add_tab() { @@ -129,7 +129,7 @@ public function test_add_tab() { } /** - * @covers ::tab_args + * @covers ::tab_args() */ public function test_tab_args() { @@ -141,7 +141,7 @@ public function test_tab_args() { } /** - * @covers ::plugins_api + * @covers ::plugins_api() */ public function test_plugins_api() { $this->instance->register(); @@ -167,7 +167,7 @@ public function test_plugins_api() { } /** - * @covers ::action_links + * @covers ::action_links() */ public function test_action_links() { @@ -200,6 +200,9 @@ public function test_action_links() { ); } + /** + * @covers ::plugin_row_meta() + */ public function test_plugin_row_meta() { $this->instance->register(); diff --git a/tests/php/src/Admin/AMPThemesTest.php b/tests/php/src/Admin/AMPThemesTest.php index 02607915e41..7e5d1187cea 100644 --- a/tests/php/src/Admin/AMPThemesTest.php +++ b/tests/php/src/Admin/AMPThemesTest.php @@ -40,7 +40,7 @@ public function setUp() { } /** - * @covers ::register + * @covers ::register() */ public function test_register() { @@ -55,7 +55,7 @@ public function test_register() { } /** - * @covers ::register_hooks + * @covers ::register_hooks() */ public function test_register_hooks() { @@ -66,7 +66,7 @@ public function test_register_hooks() { } /** - * @covers ::enqueue_scripts + * @covers ::enqueue_scripts() */ public function test_enqueue_scripts() { $this->instance->enqueue_scripts(); @@ -75,7 +75,7 @@ public function test_enqueue_scripts() { } /** - * @covers ::themes_api + * @covers ::themes_api() */ public function test_themes_api() { $this->instance->register(); From ca47dcfbdf9eae11fc187c8f51719d0f4366be8b Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Mon, 11 Oct 2021 16:57:33 +0530 Subject: [PATCH 025/105] Add function docs --- assets/src/admin/amp-plugin-install.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/assets/src/admin/amp-plugin-install.js b/assets/src/admin/amp-plugin-install.js index dbafcf78d32..5cf55a62482 100644 --- a/assets/src/admin/amp-plugin-install.js +++ b/assets/src/admin/amp-plugin-install.js @@ -71,6 +71,9 @@ const ampPluginInstall = { } }, + /** + * Remove the additional info from plugin card if plugin is none wporg plugin. + */ removeAdditionalInfo() { // eslint-disable-next-line guard-for-in for ( const index in NONE_WPORG_PLUGINS ) { From 83421e1c5d79c0349b75f99964bf22e23aeba159 Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Mon, 11 Oct 2021 17:09:40 +0530 Subject: [PATCH 026/105] Update plugin and theme json data and remove unused functions --- bin/file-system.js | 68 ---------------------------------------------- data/plugins.json | 2 +- data/themes.json | 2 +- 3 files changed, 2 insertions(+), 70 deletions(-) diff --git a/bin/file-system.js b/bin/file-system.js index 2f23974c92e..4acd194f427 100644 --- a/bin/file-system.js +++ b/bin/file-system.js @@ -18,34 +18,6 @@ class FileSystem { return '/'; } - /** - * TO check if path is physically exists or not. - * - * @param {string} path Path to check. - * @return {boolean} True if path exists otherwise False. - */ - static isExists( path ) { - if ( _.isEmpty( path ) || ! _.isString( path ) ) { - return false; - } - - return fs.existsSync( path ); - } - - /** - * To check if given path is file path or not. - * - * @param {string} path Path to check. - * @return {boolean} True if given path is file path, Otherwise False. - */ - static isFilePath( path ) { - if ( _.isEmpty( path ) || ! _.isString( path ) ) { - return false; - } - - return ( path !== this.assureDirectoryPath( path ) ); - } - /** * Assure that given path is directory path. * If file path is provided then it will return parent directory of given path. @@ -87,20 +59,6 @@ class FileSystem { } ); } - /** - * To get content of give file. - * - * @param {string} filePath File Absolute file path. - * @return {boolean|Buffer} File content. - */ - static readFile( filePath ) { - if ( _.isEmpty( filePath ) || ! _.isString( filePath ) || ! this.isExists( filePath ) ) { - return false; - } - - return fs.readFileSync( filePath ); - } - /** * Write content to file. * @@ -126,32 +84,6 @@ class FileSystem { } ); } ); } - - /** - * To delete file. - * - * @param {string} filePath File path that need to delete. - * @return {Promise|boolean} True on success otherwise false. - */ - static deleteFile( filePath ) { - if ( _.isEmpty( filePath ) || ! _.isString( filePath ) ) { - return false; - } - - if ( ! this.isExists( filePath ) ) { - return true; - } - - return new Promise( ( done ) => { - fs.unlink( filePath, ( error ) => { - if ( error ) { - done( false ); - } else { - done( true ); - } - } ); - } ); - } } module.exports = FileSystem; diff --git a/data/plugins.json b/data/plugins.json index 48d48528732..0507c13fca1 100644 --- a/data/plugins.json +++ b/data/plugins.json @@ -1 +1 @@ -[{"name":"Podcast Player – Your Podcasting Companion","slug":"podcast-player","version":"5.2.0","author":"vedathemes","author_profile":"https://profiles.wordpress.org/vedathemes","requires":"4.9","tested":"5.8.1","requires_php":"5.6","rating":98,"ratings":{"1":0,"2":1,"3":0,"4":2,"5":44},"num_ratings":47,"support_threads":5,"support_threads_resolved":3,"active_installs":8000,"downloaded":120973,"last_updated":"2021-09-27 12:03pm GMT","added":"2019-02-06","homepage":"https://vedathemes.com/podcast-player/","short_description":"Showcase your podcast only using podcasting feed url. Use custom widget, shortcode or editor block to display podcast player anywhere on your site.","description":"

Podcast Player provides an easy way to show and play your podcast episodes using podcasting feed url. It is a must have plugin for your podcast website. Give your listeners an easy access to all your episodes from any page or even from all the pages of your website.

\n

Podcast Player Pro | Documentation

\n\n

Podcast player key features

\n
    \n
  • Give your listeners an easy access to your podcast episodes.
  • \n
  • Display responsive podcast player just by entering your podcast’s feed url.
  • \n
  • Fetch all required details from feed url.
  • \n
  • Option to modify fetched details of your podcast.
  • \n
  • Option to Show or Hide individual player elements.
  • \n
  • Give your listener an option to share your podcast episodes.
  • \n
  • Ajax live search episodes from the podcast.
  • \n
  • It is possible to have multiple instances of podcast player on single page.
  • \n
  • Self adjusting layout according to width of the podcast player.
  • \n
\n

Podcast player pro features

\n
    \n
  • Professionally showcase your podcast using our unified player, episode list and grid templates.
  • \n
  • Use powerful filter options to choose which episodes or seasons you want to display on your website.
  • \n
  • Make your entire podcast catalogue easily available using our ajax approximate search feature.
  • \n
  • Add an audio message within your podcast episode.
  • \n
  • Add audio mp3 to your WordPress posts and display as podcast episodes.
  • \n
  • Show or hide specific elements and customize color and fonts to personalize your podcast display
  • \n
\n

Setup Podcast Player Widget

\n

Display searchable podcast episodes list on any widget area of your website.

\n

Minimum Setup

\n
    \n
  1. After activating the plugin, visit Appearance > Widgets in admin dashboard.
  2. \n
  3. Look for ‘Podcast player’ widget in left ‘Available Widgets’ section.
  4. \n
  5. Drag the widget to any available sidebar/widget area.
  6. \n
  7. Enter feed url in the appropriate field.
  8. \n
  9. Click [Save] button.
  10. \n
\n

Advanced Setup

\n
    \n
  1. After activating the plugin, visit Appearance > Widgets in admin dashboard.
  2. \n
  3. Look for ‘Podcast player’ widget in left ‘Available Widgets’ section.
  4. \n
  5. Drag the widget to any available sidebar/widget area.
  6. \n
  7. Enter feed url in the appropriate field.
  8. \n
  9. Optionally, click on “Change podcast content” button to customize feed’s auto fetched details.
  10. \n
  11. Optionally, click on “Show/Hide player items” button to show or hide player elements.
  12. \n
  13. Optionally, click on “Podcast player styling” button to customize player’s accent color.
  14. \n
  15. Optionally, click on “Sort & Filter” button to sort or filter podcast episodes.
  16. \n
  17. Click [Save] button.
  18. \n
\n

Setup Podcast Player Block

\n

Display searchable podcast episodes list on any post or page. Make sure you have not disabled WordPress latest block editor.

\n

Setup

\n
    \n
  1. After activating the plugin, visit any post or page’s edit screen.
  2. \n
  3. In main content area, click on ‘+’ icon to add a new block.
  4. \n
  5. Search for ‘Podcast Player’ block.
  6. \n
  7. Enter feed url in the appropriate field. A preview of your podcast player will appear.
  8. \n
  9. Click on the podcast player preview.
  10. \n
  11. Select appropriate options from the right sidebar to customize the player.
  12. \n
  13. Save or Update the post.
  14. \n
\n

Setup Podcast Player using shortcode

\n

Minimum Setup

\n
[podcastplayer feed_url ='']\n
\n
    \n
  1. feed_url – Your podcast feed url.
  2. \n
\n

Advanced Setup

\n
[podcastplayer feed_url ='' number='' podcast_menu='' cover_image_url='' hide_cover='true' hide_description='true' hide_subscribe='true' hide_search='true' hide_loadmore='true' hide_download='true' accent_color='#65b84f']Short Description [/podcastplayer]\n
\n
    \n
  1. feed_url: Your podcast feed url.
  2. \n
  3. number: Number of podcasts episodes to be displayed at a time.
  4. \n
  5. podcast_menu: Any previously created WordPress menu’s name OR ID OR slug. (optional)
  6. \n
  7. cover_image_url: Podcast’s cover image url. The image must be from your WP media library. (optional)
  8. \n
  9. header_default: (false/true) Show player header items by default
  10. \n
  11. hide_header: Hide player header items
  12. \n
  13. hide_title: (false/true) Show / Hide podcast Title in header info section
  14. \n
  15. hide_cover: (false/true) Show / Hide podcast cover image
  16. \n
  17. hide_description: (false/true) Show / Hide podcast description
  18. \n
  19. hide_subscribe: (false/true) Show / Hide podcast subscribe button.
  20. \n
  21. hide_search: (false/true) Show / Hide podcast search field.
  22. \n
  23. hide_author: (false/true) Show / Hide author/podcaster’s name.
  24. \n
  25. hide_content: (false/true) Show / Hide podcast episode’s content.
  26. \n
  27. hide_loadmore: (false/true) Show / Hide podcast load more button.
  28. \n
  29. hide_download: (false/true) Show/ Hide podcast episode download link.
  30. \n
  31. hide_social: (false/true) Show/ Hide podcast episode social sharing links.
  32. \n
  33. accent_color: Podcast player’s accent color (Color hex-code to be entered).
  34. \n
  35. sortby: Sort podcast episodes (sort_date_desc/sort_date_asc/sort_title_desc/sort_title_asc)
  36. \n
  37. filterby: Filter by any string in episode’s title
  38. \n
  39. list_default: (false/true) Display Episodes list by default on small screen
  40. \n
  41. hide_featured: (false/true) Show / Hide podcast episode featured image
  42. \n
  43. apple_sub: Apple podcast subscription link
  44. \n
  45. google_sub: Google podcast subscription link
  46. \n
  47. Short Description: Podcast short text description. (optional)
  48. \n
\n","download_link":"https://downloads.wordpress.org/plugin/podcast-player.5.2.0.zip","tags":{"feed-to-audio":"feed to audio","podcast":"podcast","podcaster":"podcaster","podcasting":"podcasting","rss-feed":"rss feed"},"donate_link":"","icons":{"1x":"https://ps.w.org/podcast-player/assets/icon-256x256.png?rev=2025683","2x":"https://ps.w.org/podcast-player/assets/icon-256x256.png?rev=2025683"},"wporg":true},{"name":"WPSSO Schema JSON-LD Markup","slug":"wpsso-schema-json-ld","version":"5.0.0","author":"JS Morisset","author_profile":"https://profiles.wordpress.org/jsmoriss","requires":"5.0","tested":"5.8.1","requires_php":"7.0","rating":90,"ratings":{"1":5,"2":2,"3":1,"4":1,"5":55},"num_ratings":64,"support_threads":4,"support_threads_resolved":4,"active_installs":4000,"downloaded":289904,"last_updated":"2021-09-25 7:00pm GMT","added":"2016-02-14","homepage":"https://wpsso.com/extend/plugins/wpsso-schema-json-ld/","short_description":"Discontinued / deprecated add-on.","description":"

Discontinued / deprecated add-on:

\n

The [schema] shortcode was migrated to a new WPSSO Schema Shortcode add-on.

\n

All other features of the WPSSO Schema JSON-LD Markup (aka WPSSO JSON) add-on were integrated into the WPSSO Core v9.0.0 plugin.

\n

The WPSSO JSON Premium version remains available and supported:

\n
    \n
  • \n

    If you are using the Free / Standard version of WPSSO Core, you can safely update and continue using the WPSSO JSON Premium add-on.

    \n
  • \n
  • \n

    If you are using the WPSSO Core Premium version, you can deactivate and delete the WPSSO JSON Premium add-on (all of its Premium features have been integrated into the WPSSO Core Premium plugin).

    \n
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/wpsso-schema-json-ld.5.0.0.zip","tags":[],"donate_link":"","icons":{"1x":"https://ps.w.org/wpsso-schema-json-ld/assets/icon-128x128.png?rev=2480083","2x":"https://ps.w.org/wpsso-schema-json-ld/assets/icon-256x256.png?rev=2480083"},"wporg":true},{"name":"ShortPixel Image Optimizer","slug":"shortpixel-image-optimiser","version":"4.22.5","author":"ShortPixel","author_profile":"https://profiles.wordpress.org/shortpixel","requires":"4.2.0","tested":"5.8.1","requires_php":"5.6","rating":92,"ratings":{"1":53,"2":12,"3":8,"4":12,"5":545},"num_ratings":630,"support_threads":13,"support_threads_resolved":9,"active_installs":300000,"downloaded":6957952,"last_updated":"2021-08-31 5:54pm GMT","added":"2014-11-05","homepage":"https://shortpixel.com/","short_description":"Speed up your website & boost your SEO by compressing old & new images and…","description":"

A freemium, easy to use, comprehensive, stable and frequently updated image compression plugin supported by the friendly team that created it. 🙂

\n

Increase your website’s SEO ranking, number of visitors and ultimately your sales by optimising any image or PDF document on your website.
\nShortPixel is an easy to use, lightweight, install-and-forget-about-it image optimization plugin that can compress all your past images and PDF documents with a single click. New images are automatically resized/rescaled and optimized on the fly, in the background. It’s also compatible with any gallery, slider or ecommerce plugin.

\n

Ready for a quick DEMO? Test our plugin here.
\nOr you can create a staging copy of your site using WP Staging and test it there.

\n

Short Pixel uses minimal resources and works well with any shared, cloud, VPS or dedicated web hosting. It can optimize any image you have on your website even the images that aren’t listed in Media Library like those in galleries like NextGEN, Modula or added directly via FTP!

\n

Both lossy and lossless image compression are available for the most common image types (JPG, PNG, GIF, WebP and AVIF) plus PDF files.
\nWe also offer glossy JPEG compression which is a very high quality lossy optimization algorithm. Specially designed for photographers!
\nOptimized images mean better user experience, better PageSpeed Insights or GTmetrix results, better Google PageRank and more visitors.

\n

Make an instant image compression test of your site or compress some images to test our optimization algorithms.

\n

Why is ShortPixel the best choice when it comes to image optimization or PDF compression?

\n
    \n
  • popular plugin with over 300,000 active installations – according to WordPress
  • \n
  • compress JPG (and its variations JPEG, JPEG 2000, JPEG XR), PNG, GIF (still or animated) images and also PDF documents
  • \n
  • option to convert any JPEG, PNG or GIF (even animated ones!) to WebP and AVIF for more Google love. How to enable WebP?. What is AVIF and why is it good?.
  • \n
  • option to automatically convert PNG to JPG if that will result in smaller images. Ideal for large images in PNG format
  • \n
  • option to include the next generation images (WebP and AVIF) into the front-end pages by using the <picture> tag instead of <img>, independent from generating them through the plugin
  • \n
  • compatible with WP Retina 2x – all retina images are automatically compressed. How to benefit from Retina displays?
  • \n
  • optimize thumbnails as well as featured images. You can also select individual thumbnails to exclude from optimization
  • \n
  • ability to optimize any image on your site including images in NextGEN Gallery and any other image galleries or sliders
  • \n
  • option to scale images down, with 2 different options, which is very useful to automatically resize large images. This applies to the featured images and there is no need for additional plugins like Imsanity
  • \n
  • CMYK to RGB conversion
  • \n
  • skip already optimized images
  • \n
  • 24h stellar support (24/7) directly from developers.
  • \n
  • easily test lossy/glossy/lossless versions of the images with a single click in your Media Library
  • \n
  • great for photographers: keep or remove EXIF data from your images, compress photos with lossless option
  • \n
  • works well with both HTTPS and HTTP websites
  • \n
  • uses progressive JPEG for larger images in order to speed up the image display
  • \n
  • you can run ShortPixel plugin on multiple websites or on a multisite with a single API Key
  • \n
  • it is safe to test and use the plugin: all the original images are by default saved in a local backup that can be restored with a click, either one by one or in bulk
  • \n
  • ‘Bulk’ optimize all the existing images in Media Library or in any gallery with one click
  • \n
  • works great for eCommerce websites using WooCommerce or other plugins
  • \n
  • works great with NextGEN gallery, Foo Gallery and any other galleries and sliders
  • \n
  • compatible with WP Engine hosted websites and all the major hosting providers
  • \n
  • compatible with WPML and WPML Media plugins
  • \n
  • no file size limit
  • \n
  • integrates with Gravity Forms post_image field type optimizing the images upon upload
  • \n
  • compatible with watermarking plugins
  • \n
  • option to deactivate auto-optimizing images on upload
  • \n
  • no credits are used for the images that are optimised less that 5%
  • \n
  • direct integration with CloudFlare, either by using an API Key or a Token
  • \n
  • 30 days optimization report with all image details and overall statistics
  • \n
  • We are GDPR compliant! Read more.
  • \n
  • free optimization credits for non-profits, contact us for details
  • \n
\n

How much does it cost?
\nShortPixel comes with 100 free credits/month and additional credits can be bought for as little as $4.99 for 5,000 image credits.
\nCheck out our prices.

\n
\n

Testimonials:
\n ★★★★★ A Super Plugin works very well 62% reduction overall. robertvarns
\n ★★★★★ The secret sauce for a WordPress website. mark1mark
\n ★★★★★ A must have plugin, great support! ElColo13
\n ★★★★★ Excellent Plugin! Even Better Customer Service! scaliendo
\n ★★★★★ Great image compression, solid plugin, equally great support. matters1959
\n more testimonials

\n
\n\n

Help us spread the word by recommending ShortPixel to your friends and collect 100 lifetime monthly additional image credits for each referred active user. Make money by promoting a great plugin with our 30% commission affiliate program.

\n

Other plugins by ShortPixel

\n\n

Get in touch!

\n\n

Actions and Filters for Developers

\n

The ShortPixel Image Optimiser plugin calls the following actions and filters:

\n
do_action( 'shortpixel_image_optimised', $post_id );\n
\n

upon successful optimization;

\n
do_action(\"shortpixel_before_restore_image\", $post_id);\n
\n

before restoring an image from backup;

\n
do_action(\"shortpixel_after_restore_image\", $post_id);\n
\n

after succesful restore;

\n
apply_filters(\"shortpixel_backup_folder\", $backup_folder, $main_file_path, $sizes);\n
\n

just before returning the ShortPixel backup folder, usually /wp-content/uploads/ShortpixelBackups. The $sizes are the sizes array from metadata;

\n
apply_filters('shortpixel_image_exists', file_exists($path), $path, $post_id);\n
\n

post ID is not always set, only if it’s an image from Media Library;

\n
apply_filters('shortpixel_image_urls', $URLs, $post_id);\n
\n

filters the URLs that will be sent to optimisation, $URLs is a plain array;

\n
apply_filters('shortpixel/db/chunk_size', $chunk);\n
\n

the $chunk is the value ShortPixel chooses to use as number of selected records in one query (based on total table size), some hosts work better with a different value;

\n
apply_filters('shortpixel/backup/paths', $PATHs, $mainPath);\n
\n

filters the array of paths of the images sent for backup and can be used to exclude certain paths/images/thumbs from being backed up, based on the image path. $mainPath is the path of the main image, while $PATHs is an array with all files to be backed up (including thumbnails);

\n
apply_filters('shortpixel/settings/image_sizes', $sizes);\n
\n

filters the array ($sizes) of image sizes which can be excluded from processing (displayed in the plugin Advanced settings).

\n

In order to define custom thumbnails to be picked up by the optimization you have two options, both comma separated defines:

\n
define('SHORTPIXEL_CUSTOM_THUMB_SUFFIXES', '_tl,_tr');\n
\n

will handle custom thumbnails like image-100x100_tl.jpg;

\n
define('SHORTPIXEL_CUSTOM_THUMB_INFIXES', '-uae');\n
\n

will handle custom thumbnails like image-uae-100×100.jpg;

\n
define('SHORTPIXEL_USE_DOUBLE_WEBP_EXTENSION', true);\n
\n

will tell the plugin to create double extensions for the WebP image counterparts, for example image.jpg.webp for image.jpg;

\n
define(\"SHORTPIXEL_NOFLOCK\", true);\n
\n

don’t use flock queue, only activate this when you have flock() denied errors on your installation;

\n
define(\"SHORTPIXEL_EXPERIMENTAL_SECURICACHE\", true);\n
\n

adds timestamps to URLS, to prevent hitting the cache. Useful for persistent caches.

\n

Hide the Cloudflare settings by defining these constants in wp-config.php:

\n
define('SHORTPIXEL_CFTOKEN', 'the Cloudflare API token that has Purge Cache right');\ndefine('SHORTPIXEL_CFZONE', 'The Zone ID from the domain settings in Cloudflare');\n
\n

Hide the WSO banner in the settings by defining this constant in wp-config.php:

\n
define('SHORTPIXEL_NO_BANNER', true);\n
\n

Alternatively, you can use this filter in your theme’s functions.php file:

\n
add_filter('shortpixel/settings/no_banner', true);\n
\n","download_link":"https://downloads.wordpress.org/plugin/shortpixel-image-optimiser.4.22.5.zip","tags":{"compressor":"compressor","convert-webp":"convert webp","image-optimization":"image optimization","optimize-images":"optimize images","resize":"resize"},"donate_link":"","icons":{"1x":"https://ps.w.org/shortpixel-image-optimiser/assets/icon-128x128.png?rev=1038819","2x":"https://ps.w.org/shortpixel-image-optimiser/assets/icon-256x256.png?rev=1038819"},"wporg":true},{"name":"Theme Kit for Twenty Twenty-One & Twenty Twenty (Customization, Gutenberg Blocks, Templates) – Twentig","slug":"twentig","version":"1.3.6","author":"Twentig","author_profile":"https://profiles.wordpress.org/twentig","requires":"5.5","tested":"5.8.1","requires_php":"5.6","rating":100,"ratings":{"1":0,"2":0,"3":0,"4":2,"5":108},"num_ratings":110,"support_threads":34,"support_threads_resolved":29,"active_installs":10000,"downloaded":149868,"last_updated":"2021-09-15 2:23pm GMT","added":"2019-05-29","homepage":"https://twentig.com","short_description":"Supercharge your WordPress theme (Twenty Twenty-One & Twenty Twenty) with customization options, enhanced Gutenberg blocks,…","description":"

The easy way to build a beautiful website.

\n

Twentig helps you customize the default WordPress theme (Twenty Twenty-One and Twenty Twenty) the way you want with Google Fonts, colors, custom layouts, and many more options.

\n

With enhanced Gutenberg blocks, pre-designed block templates, and starter websites, you’ve got everything you need to build stunning pages that look great on any device — no coding or design skills needed.

\n
\n

“Twentig is a plugin that essentially gives superpowers to the default theme.” — Justin Tadlock, WP Tavern

\n
\n

Customize the most popular WordPress theme. Your way.

\n

Twentig offers powerful features to customize the Twenty Twenty-One and Twenty Twenty themes — making it easier than ever to create your own professional website.

\n

Advanced theme customization. From post grid to sidebar to sticky header to footer layout, our plugin provides endless ways to enhance your WordPress theme. Change the look and feel of your website by customizing the fonts (Google Fonts), colors, global styles, 404 page, and more.

\n

Custom page templates. Control the look of your entire page with our page templates. Easily remove the page title, header, footer, or set a transparent header. Now you can use Gutenberg blocks to create a custom hero, landing page, coming soon page, and more.

\n

Tailored design. Twentig brings design improvements to the default WordPress theme. Our additional block settings and pre-designed block templates are specially built for it — so it’s simple to make beautiful pages with Gutenberg blocks.

\n

Start with a pre-built website.

\n

Instead of starting from scratch, you can quickly import one of Twentig’s starter websites crafted by award-winning designers.

\n

The simple way to import starter websites. Choose from a variety of starter websites and seamlessly load them in a few seconds in the Customizer. Preview and customize your theme any way you like before publishing it to your live site.

\n

Flexible import. Twentig lets you import full websites (Customizer settings, menus, widgets, and pages built with Gutenberg blocks). You can also only import what you need, be it the styling or the pages, on a fresh install or an existing website.

\n

Check out the starter websites to see the power and flexibility of Twentig.

\n

Do more with Gutenberg blocks.

\n

Twentig enhances the existing Gutenberg blocks — taking the WordPress block editor to a new level of design and creativity.

\n

Block customization made easy. We’ve added the right amount of features to the Gutenberg core blocks. So you can easily customize your blocks to fit your needs with just a few clicks.

\n

Powerful Gutenberg block features. Twentig provides alternative styles, advanced block settings, margin controls, and CSS classes. From columns style to group shape divider to typography settings, you have the best tools to customize the Gutenberg blocks and build gorgeous pages.

\n

Build your pages with ready-to-use templates.

\n

Twentig brings hundreds of pre-designed block patterns and page templates — making it easier and faster than ever to create stunning pages.

\n

Flexible block templates. Choose from a variety of versatile block patterns and page templates that you can mix and match to fit your project. Our block template library is designed to enable a wide range of uses and endless design possibilities.

\n

Professional design. Our templates are responsive and give your pages a professional look right from the start — no coding or design skills needed.

\n

Twentig features list

\n

Check out the screenshots to see how Twentig can transform your theme and the Gutenberg blocks.

\n

ADDITIONAL THEME OPTIONS

\n

Header

\n
    \n
  • Header layouts
  • \n
  • Sticky header
  • \n
  • Header width
  • \n
  • Header decoration
  • \n
  • Additional elements: search bar, social icons, button
  • \n
  • Logo width
  • \n
  • Custom logo for transparent header
  • \n
  • Menu link style
  • \n
  • Option to display the burger menu on tablet
  • \n
\n

Footer

\n
    \n
  • Footer layouts
  • \n
  • Footer widgets layout
  • \n
  • Footer width
  • \n
  • Custom copyright and remove “Powered by WordPress”
  • \n
  • Social icons
  • \n
\n

Site Layout

\n
    \n
  • Text width
  • \n
  • Wide width (Twenty Twenty-One theme)
  • \n
  • Site width to create a boxed layout site (Twenty Twenty-One theme)
  • \n
\n

Blog Posts Page

\n
    \n
  • Option to display the page title (Twenty Twenty-One theme)
  • \n
  • Blog layouts: stack, post grid, post grid card
  • \n
  • Blog sidebar (Twenty Twenty-One theme)
  • \n
  • Number of columns for post grid layouts
  • \n
  • Featured image options
  • \n
  • Blog content options
  • \n
  • Blog meta options
  • \n
  • Pagination style (Twenty Twenty-One theme)
  • \n
\n

Single Blog Post

\n
    \n
  • Featured image and post title layouts
  • \n
  • Blog sidebar (Twenty Twenty-One theme)
  • \n
  • Option to display the manual excerpt below the title
  • \n
  • Single post meta options
  • \n
  • Post navigation layout (Twenty Twenty theme)
  • \n
  • Hide comments section
  • \n
\n

Typography & Colors

\n
    \n
  • Google Fonts options (curated collection and custom Google Fonts)
  • \n
  • Google Fonts pairings and Google Fonts presets
  • \n
  • Font settings
  • \n
  • Color options
  • \n
\n

Pages

\n
    \n
  • Custom page templates: remove the page title, header, and footer, or set a transparent header
  • \n
  • Featured image and page title layouts
  • \n
\n

Custom 404 Page

\n
    \n
  • Option to assign any page as the 404 page
  • \n
\n

Additional Settings

\n
    \n
  • Minimal style for links (Twenty Twenty-One theme)
  • \n
  • Button style
  • \n
  • Separator style
  • \n
  • Social icons style (Twenty Twenty theme)
  • \n
\n

ADDITIONAL GUTENBERG BLOCK SETTINGS

\n
    \n
  • Gutenberg core blocks: top margin and bottom margin
  • \n
  • Group: shadow, border, shape divider, full height
  • \n
  • Columns: gutter, responsive layout, columns style (card, border), text alignment, stretched link
  • \n
  • Media & Text: styles (shadow, overlap), responsive layout, reverse stack order, stretched link, full height
  • \n
  • Cover: styles (shadow, inner border), stretched link, hover effect
  • \n
  • Heading: typography options, decoration
  • \n
  • Paragraph: wide width, typography options
  • \n
  • List: styles (dash, checkmark, arrow, border, no bullet, inline), typography options, spacing
  • \n
  • Image: styles (rounded, shadow, frame, border), image filter
  • \n
  • Gallery: stack variation, styles (rounded, frame), fixed width columns, image aspect ratio, gutter, responsive layout, caption size, border, image filter
  • \n
  • YouTube, Vimeo, SoundCloud, and Video blocks: style (frame)
  • \n
  • Latest Posts: styles (card, border), image aspect ratio, heading size, stretched link, text alignment
  • \n
  • Social Icons: hover effect
  • \n
  • Quote: additional styles
  • \n
  • Pullquote: additional styles
  • \n
  • Table: styles (border, inner border), vertical alignment
  • \n
  • Separator: style (short line), responsive visibility
  • \n
  • Spacer: responsive visibility
  • \n
\n

GUTENBERG TEMPLATE LIBRARY

\n

Hundreds of Gutenberg block patterns grouped by following categories:

\n
    \n
  • Columns
  • \n
  • Text Columns
  • \n
  • Text and Image
  • \n
  • Text
  • \n
  • Hero
  • \n
  • Cover
  • \n
  • Call to Action
  • \n
  • List
  • \n
  • Numbers, Stats
  • \n
  • Gallery
  • \n
  • Video, Audio
  • \n
  • Latest Posts
  • \n
  • Contact
  • \n
  • Team
  • \n
  • Testimonials
  • \n
  • Logos, Clients
  • \n
  • Pricing
  • \n
  • FAQ
  • \n
  • Events, Schedule
  • \n
\n

Dozens of pre-designed page templates grouped by following categories:

\n
    \n
  • Homepage
  • \n
  • About
  • \n
  • Services
  • \n
  • Contact
  • \n
  • Single Page
  • \n
\n

Get more

\n\n

Enjoying Twentig?

\n\n","download_link":"https://downloads.wordpress.org/plugin/twentig.1.3.6.zip","tags":{"gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","templates":"templates","theme":"theme","twenty-twenty-one":"twenty-twenty-one"},"donate_link":"https://www.paypal.com/donate?hosted_button_id=JTBTPQAFEA94E","icons":{"1x":"https://ps.w.org/twentig/assets/icon.svg?rev=2569439","2x":"https://ps.w.org/twentig/assets/icon-256x256.png?rev=2569439","svg":"https://ps.w.org/twentig/assets/icon.svg?rev=2569439"},"wporg":true},{"name":"Custom Post Type UI","slug":"custom-post-type-ui","version":"1.10.0","author":"WebDevStudios","author_profile":"https://profiles.wordpress.org/williamsba1","requires":"5.5","tested":"5.8.1","requires_php":"5.6","rating":94,"ratings":{"1":12,"2":3,"3":6,"4":9,"5":203},"num_ratings":233,"support_threads":50,"support_threads_resolved":14,"active_installs":1000000,"downloaded":8854648,"last_updated":"2021-10-05 1:54am GMT","added":"2010-02-26","homepage":"https://github.com/WebDevStudios/custom-post-type-ui/","short_description":"Admin UI for creating custom post types and custom taxonomies for WordPress","description":"

Custom Post Type UI provides an easy to use interface for registering and managing custom post types and taxonomies for your website.

\n

While CPTUI helps solve the problem of creating custom post types, displaying the data gleaned from them can be a whole new challenge. That’s why we created Custom Post Type UI Extended. View our Layouts page to see some examples that are available with Custom Post Type UI Extended.

\n

Official development of Custom Post Type UI is on GitHub, with official stable releases published on WordPress.org. The GitHub repo can be found at https://github.com/WebDevStudios/custom-post-type-ui. Please use the Support tab for potential bugs, issues, or enhancement ideas.

\n

Pluginize was launched in 2016 by WebDevStudios to promote, support, and house all of their WordPress products. Pluginize is not only creating new products for WordPress all the time, like CPTUI Extended, but also provides ongoing support and development for WordPress community favorites like CMB2 and more.

\n","download_link":"https://downloads.wordpress.org/plugin/custom-post-type-ui.1.10.0.zip","tags":{"cms":"cms","cpt":"cpt","custom-post-types":"custom post types","post":"post","types":"types"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=3084056","icons":{"1x":"https://ps.w.org/custom-post-type-ui/assets/icon-128x128.png?rev=2549362","2x":"https://ps.w.org/custom-post-type-ui/assets/icon-256x256.png?rev=2549362"},"wporg":true},{"name":"Flex Posts – Widget and Gutenberg Block","slug":"flex-posts","version":"1.8.1","author":"Tajam","author_profile":"https://profiles.wordpress.org/tajam","requires":"5.2","tested":"5.8.1","requires_php":false,"rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":17},"num_ratings":17,"support_threads":8,"support_threads_resolved":4,"active_installs":3000,"downloaded":25248,"last_updated":"2021-07-29 10:41am GMT","added":"2018-05-10","homepage":"https://tajam.id/flex-posts/","short_description":"A widget to display posts with thumbnails in various layouts. Fits nicely in any widget…","description":"

Flex Posts is a widget to display posts in various different layouts. It is useful for a news site where you need to display a lot of posts in a page.

\n

The widget is responsive so you can place it in any widget area. The widget content will adapt based on the width of its container. In a narrow area like standard sidebar, posts will be displayed vertically, but in a wider area, posts will be displayed in 2 or 3 columns depends on the container’s width.

\n

Widget Settings

\n
    \n
  • Title: Set the widget title. Leave it empty to hide the title section.
  • \n
  • Title URL: Set the title link url. Leave it empty to disable link in the title.
  • \n
  • Layout: Select a widget layout, from layout 1 to 4.
  • \n
  • Post type: Select the post type. Options include: Post, Page, custom post types if available, and any.
  • \n
  • Category: Select a category for the posts, or choose All Categories to disable this filter.
  • \n
  • Tag(s): Set a post tag (using the tag slug). You can also use comma separated value for multiple tags. Prepending a tag with a hyphen will exclude posts matching that tag. Eg, featured, -video will show posts tagged with featured but not video.
  • \n
  • Order by: Set the order in which the posts will be displayed. Options include: Newest, Oldest, Most Commented, Alphabetical, Random, Modified Date.
  • \n
  • Number of posts to show: Set the number of posts displayed.
  • \n
  • Number of posts to skip: Set the number of posts to displace or pass over.
  • \n
  • Show image on: Select in which posts the image will be displayed. Options include: All posts, First post only, or none.
  • \n
  • Image size: Select image size from registered image sizes.
  • \n
  • Show post title: Choose to show or hide the post title.
  • \n
  • Show categories: Choose to show or hide the categories.
  • \n
  • Show author: Choose to show or hide the author.
  • \n
  • Show date: Choose to show or hide the date.
  • \n
  • Show comments number: Choose to show or hide the comments number.
  • \n
  • Show excerpt: Choose to show or hide the excerpt
  • \n
  • Excerpt length: Set the number of words for the excerpt.
  • \n
  • Show read more link: Choose to show or hide the Read More link.
  • \n
  • Read more text: Set the text for the read more link. You can leave it empty to use the default text Read More.
  • \n
  • Show pagination: Choose to show or hide the pagination links.
  • \n
  • Additional class(es): Set a custom class for the widget container. You can use spaces to separate multiple classes.
  • \n
\n

Gutenberg Block

\n

Since version 1.1.0, Flex Posts also includes a gutenberg block. You can add the widget directly into the post/page content with the WP 5.0 block editor.

\n

Demo

\n

Please visit the live demo here: Flex Posts Demo

\n

Requirements

\n

This plugin has been tested and works with at least PHP 5.3 installed in your environment. But we strongly recommend you to use the latest PHP version, as using older versions may expose you to security vulnerabilities.

\n","download_link":"https://downloads.wordpress.org/plugin/flex-posts.zip","tags":{"category-posts":"category posts","grid":"grid","magazine":"magazine","news":"news","responsive":"responsive"},"donate_link":"https://tajam.id/","icons":{"1x":"https://ps.w.org/flex-posts/assets/icon-128x128.png?rev=1871802"},"wporg":true},{"name":"YARPP – Yet Another Related Posts Plugin","slug":"yet-another-related-posts-plugin","version":"5.27.5","author":"YARPP","author_profile":"https://profiles.wordpress.org/jeffparker","requires":"3.7","tested":"5.8.1","requires_php":"5.3","rating":94,"ratings":{"1":33,"2":2,"3":14,"4":45,"5":650},"num_ratings":744,"support_threads":22,"support_threads_resolved":9,"active_installs":100000,"downloaded":6553380,"last_updated":"2021-09-15 5:54pm GMT","added":"2008-01-02","homepage":"https://yarpp.com/","short_description":"The best WordPress plugin for displaying related posts. Simple and flexible, with a powerful proven algorithm and inbuilt caching.","description":"

Related Posts Plugin for WordPress

\n

Yet Another Related Posts Plugin (YARPP) is a professionally maintained, highly customizable, performant and feature rich plugin that displays pages, posts, and custom post types related to the current entry. YARPP introduces your visitors to other relevant content on your site — boosting visitor engagement, time on site and SEO. Related Posts can increase your pageviews up to 10%. Simply install, activate and watch your sessions and pageviews increase.

\n

Key Features

\n
    \n
  • An advanced and versatile algorithm: Using a customizable algorithm considering post titles, content, tags, categories, and custom taxonomies, YARPP finds related content from across your site
  • \n
  • Caching: Inbuilt cache makes subsequent queries super efficient and fast
  • \n
  • Custom Templates and Styles: Use a pre-built list or thumbnail template, or use the YARPP custom templating system for 100% control of how results are styles and displayed
  • \n
  • Flexible with a full range of placement options, including:\n\n
  • \n
  • Works with all languages, including those with full-width (double-byte) characters and those that don’t use spaces between words
  • \n
  • Custom post type and taxonomy support
  • \n
  • WordPress Multisite support
  • \n
  • bbPress forums support
  • \n
  • WooCommerce support
  • \n
  • Professionally maintained and supported with regular updates
  • \n
\n

YARPP Algorithm Explained

\n

\n

Contribute: Translate YARPP

\n

YARPP is available for translation directly on WordPress.org. Please check out the official Translator Handbook.

\n

Wide Support

\n

YARPP is the most popular and the highest rated Related Posts Plugin for WordPress. With your support, this plugin always strives to be the best WordPress plugin for Content Discovery and Related Posts.

\n

✔ Over 10 years of development
\n✔ Over 6 million downloads
\n✔ Translated into more than a dozen languages
\n✔ Professionally maintained and actively supported with regular updates
\n✔ Works with all languages

\n

YARPP works best with PHP 5.3 or greater, MySQL 5.6 or greater OR MariaDB 10.1 or greater, and WordPress 3.7 or greater. See the FAQ for answers to common questions.

\n","download_link":"https://downloads.wordpress.org/plugin/yet-another-related-posts-plugin.5.27.5.zip","tags":{"contextual-related-posts":"contextual related posts","posts":"posts","related-posts":"related posts","seo":"seo","similar-posts":"similar posts"},"donate_link":"https://yarpp.com","icons":{"1x":"https://ps.w.org/yet-another-related-posts-plugin/assets/icon-128x128.png?rev=2549977","2x":"https://ps.w.org/yet-another-related-posts-plugin/assets/icon-256x256.png?rev=2549977"},"wporg":true},{"name":"Superb WordPress Table (SEO Optimized Tables With Schema)","slug":"superb-tables","version":"1.0.9","author":"SuPlugins","author_profile":"https://profiles.wordpress.org/suplugins","requires":"3.0.1","tested":"5.8.1","requires_php":"5.2.4","rating":86,"ratings":{"1":0,"2":1,"3":0,"4":0,"5":3},"num_ratings":4,"support_threads":1,"support_threads_resolved":1,"active_installs":4000,"downloaded":36550,"last_updated":"2021-10-01 9:37am GMT","added":"2019-03-05","homepage":"https://superbthemes.com/plugins/superb-tables/","short_description":"Responsive & SEO Optimized tables. Get your Google Featured Snippets. Different table designs, table shortcodes…","description":"

Responsive & SEO Optimized tables. Get your Google Featured Snippets. Different table designs, table shortcodes & lightweight code.

\n

Click here to view the demo!

\n

Features

\n
    \n
  • Table Shortcodes
  • \n
  • Multiple Color Schemes
  • \n
  • Use Themes Own Table Design
  • \n
  • Schema Markup (Micro Data)
  • \n
  • Create Unlimited Tables
  • \n
  • Create Unlimited Rows
  • \n
  • Create unlimited Columns
  • \n
  • SEO-friendly Tables With Schema markup
  • \n
  • Purple Color Scheme
  • \n
  • Black/White Color Scheme
  • \n
  • Swap around on columns & rows with drag n’ drop
  • \n
  • Delete Tables & Remove Them From Your Database
  • \n
  • Gives you a better chance to get Google Featured Snippets
  • \n
  • Friendly User Support)
  • \n
  • GDPR Compliant
  • \n
  • W3C Valid Code
  • \n
  • WYSIWYG Functionality Editor
  • \n
\n

Configuring the plugin

\n

Once you’ve installed the plugin, check the left sidebar, and you will notice the Superb Table section. Click on it, and you can now create your first table. Just click on the Add New Table button.

\n

Feel free to add as many columns and rows as you want—inserting rows and columns is extremely easy.

\n

You have a few options to make your table stand apart. First, choose one of the three color schemes: standard, purple, or black. Second, choose your table design: default or custom. Block, left, and inline-block are the floating modes for your table. Finally, enable or disable the full width of the table.

\n

Once you finish your table, name it and save it. All you have to do now is to copy the shortcode and paste wherever you want, you can for example embed it in the Gutenberg Shortcode Block! (It works in the classic WordPress editor too)

\n

Consider purchasing our premium version for $11 to unlock more features!

\n

Why use a HTML table

\n

Displaying data within a comparison table is beneficial for not only readers but also content creators. A table does a better job than long paragraphs of text, underlined phrases, and bulleted lists. It shows a lot of information side by side in a concise format. Bloggers and content creators should create tables and insert the data. There’s no need to search for breathtaking expressions, cool descriptions, or digestible lists of items. It’s just pure data, and everyone is happy with this situation. You can read our full guide on How to Add a Table to Your WordPress Website with Superb Tables.

\n

Responsive Tables

\n

We developed Superb Tables mobile friendly by taking responsiveness into account, and as a result, you can make a WordPress table responsive by using our plugin. The tables are fully responsive regardless of the number of rows and columns. The plugin works on all mobile devices and tablets (iPhone, Android etc.). The plugin works with AMP.

\n

SEO Friendly WordPress Tables With Schema Markup

\n

“Schema markup“ and “featured snippets“ are two interconnected terms that are being used by more and more bloggers, SEO practitioners, and developers. Have you noticed that Google now provides complex answers in the form of lists, tables, paragraphs, or videos directly on the results page? Those are featured snippets.

\n

Moz claims that 23% of all search results include a featured snippet—a descriptive box displayed on the search results page providing information for your query. It may include paragraphs, lists, videos, or tables. You have to consider featured snippets when choosing a table plugin—can it help Google generate a featured snippet from the data within your table?

\n

We developed Superb Tables with featured snippets in mind, and you can use the plugin worry-free. We used schema markup, which is the code that helps search engine bots generate snippets from your content, including tables. It’s a great way for affiliate websites and blogs to promote their content.

\n

You must use WordPress tables with schema markup to get featured snippets on search engines, and Superb Tables is a reliable solution in this respect.

\n

Add Tables everywhere & use them for Any Purpose

\n

You can insert the SEO optimised tables with microdata everywhere through the shortcode. For example in a popup, widgets, Gutenberg blocks, email newsletter sent from your WordPress website. You can also insert it on any post or page, even category pages, blog feed, search page and your 404 page! The plugin is made for affiliates marketers and affiliate websites, having a good SERP rank in Google and Bing is critical. When you’re looking to improve your ranking then all of your plugins must be SEO optimized, otherwise it’s gonna be hard to create monetization through ads programs such as AdSense and Amazon Associates Program.

\n

We know that business is important for any modern blog or affiliate marketing website that’s looking to make a revenue from it. Remember to use HTTPS (SSL) on your website, a CDN and lightweight stats tracking tools such as Google Analytics to better your SEO as well.

\n

Guide to creating your Superb Tables

\n
    \n
  1. In the wordpress admin panel, go to the sidebar and click ‘Superb Tables’.
  2. \n
  3. Click the green ‘Add new table’ in the top left corner
  4. \n
  5. Fill in your table data, click ‘Save’
  6. \n
  7. Click ‘Superb Tables’ in the left sidebar and copy paste the ‘Table Shortcode’
  8. \n
  9. Insert the Table Shortcode (For example [spbtbl_sc id=1] ) in a post, page, widget or in HTML.
  10. \n
\n

You’re done!

\n

Resources & Inspiration

\n
    \n
  • Auto-Expand: https://codepen.io/vsync/pen/frudD
  • \n
  • Data Table: https://codepen.io/alassetter/pen/cyrfB
  • \n
  • Table DnD: https://github.com/isocra/TableDnD/
  • \n
  • Table icon: https://www.iconfinder.com/icons/1608863/table_icon#size=256
  • \n
  • Custom confirm: https://codepen.io/Ana_Champion/pen/JRbZEL
  • \n
  • Table design inspiration: https://codepen.io/lukepeters/pen/bfFur
  • \n
  • Table design inspiration: https://codepen.io/alassetter/pen/cyrfB
  • \n
  • Table design inspiration: https://uicookies.com/wp-content/uploads/2018/05/table-responsive-v2-1000×750.jpg
  • \n
  • Table design inspiration: https://uicookies.com/wp-content/uploads/2018/05/table-responsive-v1.jpg
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/superb-tables.1.0.9.zip","tags":{"content-tables":"content tables","responsive-tables":"responsive tables","table":"table","tables":"tables"},"donate_link":"","icons":{"1x":"https://ps.w.org/superb-tables/assets/icon-256x256.png?rev=2044672","2x":"https://ps.w.org/superb-tables/assets/icon-256x256.png?rev=2044672"},"wporg":true},{"name":"Floating Button","slug":"floating-button","version":"5.0.1","author":"Wow-Company","author_profile":"https://profiles.wordpress.org/wpcalc","requires":"3.2","tested":"5.8.1","requires_php":"5.3","rating":80,"ratings":{"1":1,"2":1,"3":0,"4":0,"5":5},"num_ratings":7,"support_threads":1,"support_threads_resolved":0,"active_installs":2000,"downloaded":34610,"last_updated":"2021-09-24 7:38am GMT","added":"2018-09-08","homepage":"https://wordpress.org/plugins/floating-button/","short_description":"Easily create a custom sticky floating buttons. The Floating Button will be the effective solution for increasing the recognition of your web resource","description":"

The Floating Button is the free WordPress plugin for creating the original sticky floating actions buttons. It allows you to install on the site floating buttons with unique thematic icons. The extension serves for placing both traditional navigation bar and additional block with useful information for user.

\n

The Floating Button plugin will be the effective solution for increasing the recognition of your web resource. Its connection will bring originality and novelty to the used theme of the site. The extension helps to configure user-friendly navigation, place useful information or contact panel.

\n

Main features

\n
    \n
  • 2 submenu;
  • \n
  • more than 1500+ FontAwesome icons;
  • \n
  • any links insertion;
  • \n
  • using the tooltips to provide more information;
  • \n
  • round buttons shape;
  • \n
  • LogIn link;
  • \n
  • LogOut link;
  • \n
  • Lost password link
  • \n
\n

Floating Button can be used for:

\n
    \n
  • site navigation;
  • \n
  • additional menu;
  • \n
  • social panel;
  • \n
  • user menu;
  • \n
  • Skype menu and others;
  • \n
  • And more…
  • \n
\n

Pro version

\n

Connect the Pro-version of the plugin to gain access to more features:

\n

Preview of Pro version

\n
    \n
  • create an unlimited amount of buttons;
  • \n
  • use up to 4 floating button positions;
  • \n
  • change the form of the menu display: Circle, Rounded square, Ellipse, Square;
  • \n
  • set the color of the main button and submenu items;
  • \n
  • accompany the change in navigation behavior with the highlight when hovering the mouse cursor;
  • \n
  • use the built-in user menu, social panel and print function;
  • \n
  • set the display according to the user role and status;
  • \n
  • change the menu output depending on the language of the page;
  • \n
  • add restrictions for screens with large or small resolution;
  • \n
  • use the categories on the site, exceptions and ID to place the menu on individual pages;
  • \n
  • insert the shortcode of the panel in the specified location;
  • \n
  • And more…
  • \n
\n

Buy Pro version

\n

Use with other plugins to maximize your results

\n\n

Support

\n

Search for answers and ask your questions at support center

\n","download_link":"https://downloads.wordpress.org/plugin/floating-button.5.0.1.zip","tags":{"circle-menu":"circle menu","float-menu":"float menu","floating-button":"floating button","floating-menu":"floating menu","sticky-button":"sticky button"},"donate_link":"https://wow-estore.com/item/floating-button-pro/","icons":{"1x":"https://ps.w.org/floating-button/assets/icon-128x128.png?rev=2533016","2x":"https://ps.w.org/floating-button/assets/icon-256x256.png?rev=2533016"},"wporg":true},{"name":"Breadcrumb NavXT","slug":"breadcrumb-navxt","version":"6.6.0","author":"John Havlik","author_profile":"https://profiles.wordpress.org/mtekk","requires":"4.9","tested":"5.7.3","requires_php":"5.5","rating":94,"ratings":{"1":5,"2":2,"3":4,"4":7,"5":104},"num_ratings":122,"support_threads":7,"support_threads_resolved":2,"active_installs":900000,"downloaded":10169653,"last_updated":"2021-04-01 2:13am GMT","added":"2007-12-01","homepage":"http://mtekk.us/code/breadcrumb-navxt/","short_description":"Breadcrumb NavXT, the successor to the popular WordPress plugin Breadcrumb Navigation XT, was written from the ground up to be better than its ancesto …","description":"

Breadcrumb NavXT, the successor to the popular WordPress plugin Breadcrumb Navigation XT, was written from the ground up to be better than its ancestor. This plugin generates locational breadcrumb trails for your WordPress powered blog or website. These breadcrumb trails are highly customizable to suit the needs of just about any website running WordPress. The Administrative interface makes setting options easy, while a direct class access is available for theme developers and more adventurous users.

\n

PHP Requirements

\n

Breadcrumb NavXT 5.2 and newer require PHP5.3
\nBreadcrumb NavXT 5.1.1 and older require PHP5.2

\n

Features (non-exhaustive)

\n
    \n
  • RDFa format Schema.org BreadcrumbList compatible breadcrumb generation.
  • \n
  • Extensive breadcrumb customization control via a settings page with appropriate default values for most use cases.
  • \n
  • Network admin settings page for managing breadcrumb settings for all subsites with configurable global priority.
  • \n
  • Built in WordPress Widget.
  • \n
  • Extensible via OOP and provided actions and filters.
  • \n
  • WPML compatible (enhanced compatibility with WPML extensions plugin).
  • \n
  • Polylang compatible (enhanced compatibility with Polylang extensions plugin).
  • \n
  • bbPress compatible (enhanced compatibility with bbPress extensions plugin).
  • \n
  • BuddyPress compatible (enhanced compatibility with BuddyPress extensions plugin).
  • \n
\n

Translations

\n

Breadcrumb NavXT now supports WordPress.org language packs. Want to translate Breadcrumb NavXT? Visit Breadcrumb NavXT’s WordPress.org translation project.

\n","download_link":"https://downloads.wordpress.org/plugin/breadcrumb-navxt.6.6.0.zip","tags":{"breadcrumb":"breadcrumb","breadcrumbs":"breadcrumbs","menu":"menu","navigation":"navigation","trail":"trail"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=FD5XEU783BR8U&lc=US&item_name=Breadcrumb%20NavXT%20Donation¤cy_code=USD&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted","icons":{"1x":"https://ps.w.org/breadcrumb-navxt/assets/icon.svg?rev=1927103","2x":"https://ps.w.org/breadcrumb-navxt/assets/icon-256x256.png?rev=2410525","svg":"https://ps.w.org/breadcrumb-navxt/assets/icon.svg?rev=1927103"},"wporg":true},{"name":"WP Recipe Maker","slug":"wp-recipe-maker","version":"7.6.1","author":"Bootstrapped Ventures","author_profile":"https://profiles.wordpress.org/brechtvds","requires":"4.4","tested":"5.8.1","requires_php":"5.4","rating":100,"ratings":{"1":1,"2":0,"3":1,"4":4,"5":209},"num_ratings":215,"support_threads":21,"support_threads_resolved":14,"active_installs":50000,"downloaded":1585332,"last_updated":"2021-09-16 11:33am GMT","added":"2016-09-07","homepage":"http://bootstrapped.ventures/wp-recipe-maker/","short_description":"The easy and user-friendly recipe plugin for everyone. Automatic JSON-LD metadata for food AND how-to…","description":"

WP Recipe Maker is the easy recipe plugin that everyone can use. An easy workflow allows you to add recipes to any post or page with automatic JSON-LD metadata for your recipes. This metadata will improve your SEO and get you more visitors!

\n

\n

Would you like to see the plugin in action before installing it? We have a WP Recipe Maker demo website showcasing all of the features!

\n
\n

Get the most out of this plugin!
\n Join the WP Recipe Maker Email Course and we’ll help you get started and learn all the tips and trick for using WPRM.

\n
\n

Features

\n

An overview of WP Recipe Maker features:

\n
    \n
  • Compatible with both the Classic Editor and new Gutenberg editor
  • \n
  • Includes an Elementor block and shortcode can be used in other page builders
  • \n
  • Easy workflow to add recipes to any post or page
  • \n
  • Uses schema.org/Recipe JSON-LD metadata optimised for Google Recipe search
  • \n
  • Uses schema.org/How-to JSON-LD metadata optimised for non-food recipes and instructions
  • \n
  • Supports both regular and Guided Recipes for Google metadata
  • \n
  • Google AMP compatible
  • \n
  • Integrates recipe metadata with Yoast SEO schema graph
  • \n
  • Option to disable metadata per recipe if you want to publish non-food or DIY recipes
  • \n
  • Compatible with Pinterest Rich Pins and a setting to easily opt out
  • \n
  • Outputs ItemList metadata for Recipe Roundup posts
  • \n
  • Associate ingredients with instructions to have them show up exactly where needed
  • \n
  • Keyboard accessible and AMP compatible ratings for comments
  • \n
  • Interactive print recipe page with room for ads and optional credit to your website
  • \n
  • Fallback recipe shows up when the plugin is disabled
  • \n
  • Include a recipe video in the template and metadata
  • \n
  • Add photos or videos to any step of the recipe
  • \n
  • Print recipe and jump to recipe shortcodes
  • \n
  • This plugin is fully responsive, your recipes will look good on any device
  • \n
  • Easily change the look and feel to fit your website in the Template Editor
  • \n
  • Structure your ingredients and instructions in groups (e.g. icing and cake batter)
  • \n
  • Full text search for your recipes
  • \n
  • Access your recipes through the WordPress REST API
  • \n
  • Built-in SEO check for your recipe metadata
  • \n
  • Compatible with RTL languages
  • \n
  • Import your recipes from other plugins (see below)
  • \n
\n

WP Recipe Maker Premium

\n

Looking for some more advanced functionality? We also have the WP Recipe Maker Premium add-on available with the following features:

\n
    \n
  • Use ingredient links for linking to products or other recipes
  • \n
  • Adjustable servings make it easy for your visitors
  • \n
  • Display all nutrition data in a nutrition label
  • \n
  • User Ratings allow visitors to vote without commenting
  • \n
  • Add a mobile-friendly kitchen timer to your recipes
  • \n
  • More Premium templates for a unique recipe template
  • \n
  • Create custom recipe taxonomies like price level, difficulty, …
  • \n
  • Use checkboxes for your ingredients and instructions
  • \n
\n

Even more add-ons can add the following functionality:

\n
    \n
  • Integration with a Nutrition API for automatic nutrition facts
  • \n
  • Unit Conversion to reach an international audience with a different unit system
  • \n
  • Have your users send in recipes through the Recipe Submission form
  • \n
  • Give your visitors the power of Recipe Collections for favourites, meal planning and more
  • \n
\n

Import Options

\n

Currently using another recipe plugin? No problem! You can easily migrate all your existing recipes to WP Recipe Maker if you’re using any of the following plugins:

\n
    \n
  • Tasty Recipes
  • \n
  • Create by Mediavine
  • \n
  • EasyRecipe
  • \n
  • WP Ultimate Recipe
  • \n
  • Recipe Card Blocks by WPZOOM
  • \n
  • Meal Planner Pro
  • \n
  • BigOven
  • \n
  • ZipList and Zip Recipes
  • \n
  • Yummly
  • \n
  • Yumprint Recipe Card
  • \n
  • FoodiePress
  • \n
  • Cooked
  • \n
  • Cookbook
  • \n
  • Simple Recipe Pro
  • \n
  • Purr Recipe Plugin
  • \n
  • Recipes by Simmer
  • \n
  • WordPress.com shortcode
  • \n
  • JSON-LD HTML Script
  • \n
  • Multi Rating (ratings only)
  • \n
  • (Need anything else? Just ask!)
  • \n
\n

This plugin is in active development. Feel free to contact us with any feature requests or ideas.

\n","download_link":"https://downloads.wordpress.org/plugin/wp-recipe-maker.zip","tags":{"cooking":"cooking","food":"food","ingredients":"ingredients","recipe":"Recipe","recipes":"recipes"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QG7KZMGFU325Y","icons":{"1x":"https://ps.w.org/wp-recipe-maker/assets/icon-128x128.png?rev=1491788","2x":"https://ps.w.org/wp-recipe-maker/assets/icon-256x256.png?rev=1491788"},"wporg":true},{"name":"Slim SEO – Fast & Automated WordPress SEO Plugin","slug":"slim-seo","version":"3.10.2","author":"eLightUp","author_profile":"https://profiles.wordpress.org/rilwis","requires":"4.5","tested":"5.8.1","requires_php":"5.6","rating":92,"ratings":{"1":1,"2":3,"3":0,"4":0,"5":27},"num_ratings":31,"support_threads":9,"support_threads_resolved":6,"active_installs":10000,"downloaded":178149,"last_updated":"2021-09-27 6:47am GMT","added":"2018-12-31","homepage":"https://wpslimseo.com","short_description":"A full-featured SEO plugin for WordPress that's lightweight, blazing fast with minimum configuration. No bloats,…","description":"

A Fast & Automated SEO Plugin For WordPress

\n

Currently there are many SEO plugins for WordPress in the market. But these plugins often have too many options and are very complicated for ordinary users. Access to their configuration section, you will easily get lost in a maze of explanations and options that you sometimes don’t understand. Besides, there are ads!

\n

So how can an ordinary user use an SEO plugin?

\n

SEO should be an integrated part of WordPress, where users don’t need or need very little effort to configure for SEO. The main reason is that not everyone understands the terms of SEO and how to configure them optimally.

\n

So, we made Slim SEO.

\n

Slim SEO is a full-featured SEO plugin, that’s done right! It provides a complete SEO solution for WordPress where the configuration has been done automatically. Users do not need to care about their complex and semantic options.

\n

So what does Slim SEO do?

\n

Slim SEO Features

\n

Slim SEO helps you do the following jobs automatically:

\n

1. Meta Tags

\n

The following meta tags are auto-generated and optimized for the best SEO scores.

\n\n

2. XML Sitemap

\n

Slim SEO automatically generates XML sitemap (at domain.com/sitemap.xml) to submit to search engines. With XML sitemaps, your website are indexed fast and completely.

\n

3. Breadcrumbs

\n

The plugin allows you to output a breadcrumb trail on your website easily. It automatically fetches the information from the current post and output a hierarchy for you. You can also style the breadcrumbs to match your theme style.

\n

4. Schema (Structured Data)

\n

Schema is a way that describes structured data for search engines. Based on the data provided, search engines can show the content in the search results page in a more appealing way.

\n

Slim SEO automatically adds the some structured data to the website via JSON-LD which makes your website more SEO-friendly. Not only schemas are created by the plugin, there are also meaningful connections between them. For example, an article (single post) is the main entity of the current webpage. Slim SEO does that all without any configuration.

\n

5. Auto Redirection

\n
    \n
  • Auto redirect attachment page to the attachment file URL.
  • \n
  • Auto redirect author page to the homepage if the website has only one author or the author doesn’t have any posts.
  • \n
\n

6. Open Source

\n

Slim SEO has different contributors which help make Slim SEO a quality product. Join us on Github!

\n

Who should use Slim SEO?

\n

Everyone can use Slim SEO!

\n

However, Slim SEO is perfectly suitable for users who prefer simplicity or do not like the complicated options that other SEO plugins provide. It’s also a good choice for users with little SEO knowledge and just want to use SEO plugins to automate their jobs.

\n

If you like this plugin, you might also like our other products: Meta Box and GretaThemes.

\n","download_link":"https://downloads.wordpress.org/plugin/slim-seo.3.10.2.zip","tags":{"google":"google","schema":"schema","search-engine-optimization":"search engine optimization","seo":"seo","sitemap":"sitemap"},"donate_link":"https://wpslimseo.com/pro/","icons":{"1x":"https://ps.w.org/slim-seo/assets/icon.svg?rev=2005049","svg":"https://ps.w.org/slim-seo/assets/icon.svg?rev=2005049"},"wporg":true},{"name":"Schema & Structured Data for WP & AMP","slug":"schema-and-structured-data-for-wp","version":"1.9.85","author":"Magazine3","author_profile":"https://profiles.wordpress.org/magazine3","requires":"3.0","tested":"5.8.1","requires_php":false,"rating":94,"ratings":{"1":13,"2":1,"3":2,"4":10,"5":183},"num_ratings":209,"support_threads":27,"support_threads_resolved":12,"active_installs":80000,"downloaded":2410857,"last_updated":"2021-09-24 10:57am GMT","added":"2018-08-06","homepage":"","short_description":"Schema & Structured Data for WP & AMP adds Google Rich Snippets markup according to…","description":"

Schema & Structured Data for WP & AMP adds Google Rich Snippets markup according to Schema.org guidelines to structure your site for SEO. (AMP Compatible)

\n

Features

\n
    \n
  • Schema Types: Currently, We have more than 35 schema types such as Blog Posting, News article, Local Business, Web page, Article, Recipe, Product, and Video Object view all. We are going to add all the schema types in the future. You can request the one you want and we will add it for you!
  • \n
  • Conditional Display Fields: Meaning you include or exclude any posts, pages, post types, taxonomies and more!
  • \n
  • Knowlegde Base Support: Recognize the content based on the organization or a person via data type option.
  • \n
  • Full AMP Compatiblity: Supports the AMP for WP and AMP by Automattic plugins.
  • \n
  • Advanced Settings: Play with output of schema markup using these options (Defragment, Add in Footer, Pretty Print, MicroData CleanUp etc.)
  • \n
  • Migration: Import the data from other schema plugins such as (SEO Pressor, WP SEO Schema, Schema Plugin etc )
  • \n
  • Compatibility: Generate the schema markup for the plugins. We have provided schema support for them. Few of them are – kk Star Ratings, WP-PostRatings, bbPress
  • \n
  • Google Review: Display your business google reviews and its schema markup on your website.
  • \n
  • [Premium] Reviews ( Fetch reviews from 75+ platforms ).
  • \n
  • [Premium] Priority Support. Get it We get more than 100 technical queries a day but the Priority support plan will help you skip that and get the help from a dedicated team.
  • \n
  • Review Module: Create your own review rating box with pros and cons and its schema markup
  • \n
  • Schema Type Blocks in Gutenberg: Create your own content with the blocks and json schema markup will be added automatically
  • \n
  • Unlimited Custom Post Types: You can control to represent the Rich Snippets data in the google search console using unlimited custom post types.
  • \n
  • Easy to use with Minimal Settings
  • \n
  • Archive Page Listing Support
  • \n
  • JSON-LD Format
  • \n
  • Easy to use Setup Wizard
  • \n
  • Breadcrumbs Listing Support
  • \n
  • Comments Post comments Support
  • \n
  • Constant Development & New Features: We’ll be releasing the constant updates along with the more handy features as soon as we get the feedback from the users.
  • \n
\n

Supported Schema Types

\n
    \n
  • Apartment
  • \n
  • House
  • \n
  • SingleFamilyResidence
  • \n
  • Article
  • \n
  • Blogposting
  • \n
  • Book
  • \n
  • Course
  • \n
  • DiscussionForumPosting,
  • \n
  • DataFeed
  • \n
  • HowTo
  • \n
  • NewsArticle
  • \n
  • QAPage
  • \n
  • Review
  • \n
  • Recipe
  • \n
  • TVSeries
  • \n
  • SoftwareApplication
  • \n
  • MobileApplication
  • \n
  • SpecialAnnouncement (Related to Coronavirus)
  • \n
  • TechArticle
  • \n
  • WebPage
  • \n
  • Event
  • \n
  • VideoGame
  • \n
  • JobPosting
  • \n
  • Service
  • \n
  • Trip
  • \n
  • AudioObject
  • \n
  • VideoObject
  • \n
  • MedicalCondition
  • \n
  • MusicPlaylist
  • \n
  • MusicAlbum
  • \n
  • LocalBusiness with all the sub categories
  • \n
  • Product
  • \n
  • TouristAttraction
  • \n
  • TouristDestination
  • \n
  • LandmarksOrHistoricalBuildings
  • \n
  • HinduTemple
  • \n
  • Church
  • \n
  • Mosque
  • \n
  • Person
  • \n
  • View All
  • \n
\n

Extensions

\n

Some useful extensions to extend Schema & Structured Data for WP & AMP features, check Woocommerce Compatibility For Schema, Cooked Compatibility For Schema and We are going to add more.

\n

Support

\n

We try our best to provide support on WordPress.org forums. However, We have a special team support where you can ask us questions and get help. Delivering a good user experience means a lot to us and so we try our best to reply each and every question that gets asked.

\n

Bug Reports

\n

Bug reports for Schema & Structured Data for WP & AMP are welcomed on GitHub. Please note GitHub is not a support forum, and issues that aren’t properly qualified as bugs will be closed.

\n

Credits

\n
    \n
  • Select2 used https://github.com/select2/select2 – License URI: https://github.com/select2/select2/blob/develop/LICENSE.md,
  • \n
  • Merlin WP used https://github.com/richtabor/MerlinWP – License URI: https://github.com/richtabor/MerlinWP/blob/master/LICENSE,
  • \n
  • jquery-timepicker used https://github.com/jonthornton/jquery-timepicker
  • \n
  • Rate Yo! used https://github.com/prrashi/rateYo – License URI: https://github.com/prrashi/rateYo/commit/f3812fe96c38b08627d209795176053550fb1427
  • \n
  • Aqua Resizer used http://aquagraphite.com – License URI: WTFPL – http://sam.zoy.org/wtfpl/
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/schema-and-structured-data-for-wp.1.9.85.zip","tags":{"google-snippets":"google snippets","rich-snippets":"rich snippets","schema":"schema","schema-org":"schema.org","structured-data":"structured data"},"donate_link":"","icons":{"1x":"https://ps.w.org/schema-and-structured-data-for-wp/assets/icon-128x128.png?rev=1922284","2x":"https://ps.w.org/schema-and-structured-data-for-wp/assets/icon-256x256.png?rev=1922284"},"wporg":true},{"name":"GenerateBlocks","slug":"generateblocks","version":"1.3.5","author":"Tom Usborne","author_profile":"https://profiles.wordpress.org/edge22","requires":"5.4","tested":"5.8.1","requires_php":"5.6","rating":98,"ratings":{"1":0,"2":0,"3":2,"4":1,"5":72},"num_ratings":75,"support_threads":22,"support_threads_resolved":7,"active_installs":50000,"downloaded":250239,"last_updated":"2021-07-19 6:12pm GMT","added":"2020-05-19","homepage":"https://generateblocks.com","short_description":"A small collection of lightweight WordPress blocks that can accomplish nearly anything.","description":"

\n

\n

Add incredible versatility to your editor without bloating it with tons of one-dimensional Gutenberg blocks. With GenerateBlocks, you can learn a handful of blocks deeply and use them to build anything.

\n

GenerateBlocks works hand-in-hand with GeneratePress, but is built to work with any theme.

\n

Looking for more features? Check out GenerateBlocks Pro.

\n

Container

\n

Organize your content into rows and sections. The Container block is the foundation of your content, allowing you to design unique sections for your content.

\n

Grid

\n

Create advanced layouts with flexible grids. The Grid block gives you the ability to create any kind of layout you can imagine.

\n

Headline

\n

Craft text-rich content with advanced typography. Everything from headings to paragraphs – take full control of your text.

\n

Buttons

\n

Drive conversions with beautiful buttons.

\n

Performance

\n

We take performance seriously. Minimal CSS is generated only for the blocks you need, and our HTML structure is as simple as possible while allowing for maximum flexibility.

\n

Coding standards

\n

Built to the highest coding standards for security, stability and future compatibility.

\n

Fully responsive

\n

Every block comes with tablet and mobile controls, giving you total control of your responsive design.

\n

Documentation

\n

Check out our documentation for more information on the individual blocks and how to use them.

\n","download_link":"https://downloads.wordpress.org/plugin/generateblocks.1.3.5.zip","tags":{"blocks":"blocks","container":"container","grid":"grid","gutenberg":"gutenberg","headline":"headline"},"donate_link":"https://generateblocks.com","icons":{"1x":"https://ps.w.org/generateblocks/assets/icon-128x128.png?rev=2336822","2x":"https://ps.w.org/generateblocks/assets/icon-256x256.png?rev=2336822"},"wporg":true},{"name":"Blackhole for Bad Bots","slug":"blackhole-bad-bots","version":"3.2","author":"Jeff Starr","author_profile":"https://profiles.wordpress.org/specialk","requires":"4.1","tested":"5.8.1","requires_php":"5.6.20","rating":98,"ratings":{"1":2,"2":0,"3":3,"4":2,"5":108},"num_ratings":115,"support_threads":4,"support_threads_resolved":4,"active_installs":30000,"downloaded":309846,"last_updated":"2021-07-19 8:41pm GMT","added":"2016-02-18","homepage":"https://perishablepress.com/blackhole-bad-bots/","short_description":"Blackhole is a WordPress security plugin that detects and traps bad bots in a virtual black hole, where they are denied access to your entire site.","description":"
\n

Add your own virtual black hole trap for bad bots.

\n
\n

Bye bye bad bots..

\n

Bad bots are the worst. They do all sorts of nasty stuff and waste server resources. The Blackhole plugin helps to stop bad bots and save precious resources for legit visitors.

\n

How does it work?

\n

First the plugin adds a hidden trigger link to the footer of your pages. You then add a line to your robots.txt file that forbids all bots from following the hidden link. Bots that then ignore or disobey your robots rules will crawl the link and fall into the trap. Once trapped, bad bots are denied further access to your WordPress site.

\n

I call it the “one-strike” rule: bots have one chance to obey your site’s robots.txt rule. Failure to comply results in immediate banishment. The best part is that the Blackhole only affects bad bots: human users never see the hidden link, and good bots obey the robots rules in the first place. Win-win! 🙂

\n

Using a caching plugin? Check out the Installation notes for important info.

\n

Features

\n
    \n
  • Easy to set up
  • \n
  • Squeaky clean code
  • \n
  • Focused and modular
  • \n
  • Lightweight, fast and flexible
  • \n
  • Built with the WordPress API
  • \n
  • Works with other security plugins
  • \n
  • Easy to reset the list of bad bots
  • \n
  • Easy to delete any bot from the list
  • \n
  • Regularly updated and “future proof”
  • \n
  • Blackhole link includes “nofollow” attribute
  • \n
  • Plugin options configurable via settings screen
  • \n
  • Works silently behind the scenes to protect your site
  • \n
  • Whitelists all major search engines to never block
  • \n
  • Focused on flexibility, performance, and security
  • \n
  • Email alerts with WHOIS lookup for blocked bots
  • \n
  • Complete inline documentation via the Help tab
  • \n
  • Provides setting to whitelist any IP addresses
  • \n
  • Customize the message displayed to bad bots 😉
  • \n
  • One-click restore the plugin default options
  • \n
  • Does NOT use or require any .htaccess rules
  • \n
\n

Blackhole for Bad Bots protects your site against bad bots, spammers, scrapers, scanners, and other automated threats.

\n

Not using WordPress? Check out the standalone PHP version of Blackhole!

\n

Check out Blackhole Pro and level up with advanced features!

\n

Whitelist

\n

By default, this plugin does NOT block any of the major search engines (user agents):

\n
    \n
  • AOL.com
  • \n
  • Baidu
  • \n
  • Bingbot/MSN
  • \n
  • DuckDuckGo
  • \n
  • Googlebot
  • \n
  • Teoma
  • \n
  • Yahoo!
  • \n
  • Yandex
  • \n
\n

These search engines (and all of their myriad variations) are whitelisted via user agent. So are a bunch of other “useful” bots. They always are allowed full access to your site, even if they disobey your robots.txt rules. This list can be customized in the plugin settings. For a complete list of whitelisted bots, visit the Help tab in the plugin settings (under “Whitelist Settings”).

\n

Privacy

\n

User Data: This plugin automatically blocks bad bots. When bad bots fall into the trap, their IP address, user agent, and other request data are stored in the WP database. No other user data is collected by this plugin. At any time, the administrator may delete all saved data via the plugin settings.

\n

Services: This plugin does not connect to any third-party locations or services.

\n

Cookies: This plugin does not set any cookies.

\n

Header Image Courtesy NASA/JPL-Caltech.

\n

Support development of this plugin

\n

I develop and maintain this free plugin with love for the WordPress community. To show support, you can make a donation or purchase one of my books:

\n\n

And/or purchase one of my premium WordPress plugins:

\n\n

Links, tweets and likes also appreciated. Thanks! 🙂

\n","download_link":"https://downloads.wordpress.org/plugin/blackhole-bad-bots.3.2.zip","tags":{"anti-spam":"anti-spam","bad-bots":"bad bots","blackhole":"blackhole","honeypot":"honeypot","security":"security"},"donate_link":"https://monzillamedia.com/donate.html","icons":{"1x":"https://ps.w.org/blackhole-bad-bots/assets/icon-128x128.png?rev=1471215","2x":"https://ps.w.org/blackhole-bad-bots/assets/icon-256x256.png?rev=1471215"},"wporg":true},{"name":"Page View Count","slug":"page-views-count","version":"2.4.12","author":"a3rev Software","author_profile":"https://profiles.wordpress.org/a3rev","requires":"5.0","tested":"5.8.1","requires_php":false,"rating":78,"ratings":{"1":8,"2":5,"3":2,"4":3,"5":30},"num_ratings":48,"support_threads":3,"support_threads_resolved":0,"active_installs":20000,"downloaded":406620,"last_updated":"2021-07-19 10:48am GMT","added":"2012-12-21","homepage":"","short_description":"Places an icon, all time views count and views today count at the bottom of posts, pages and custom post types on any WordPress website.","description":"

A beautifully simple to set up plugin that gives site visitors and site owners the ability to quickly and easily see how many people have visited that page or post.

\n

FEATURES

\n
    \n
  • On the front end it adds an icon and page views count to the bottom or top of pages and posts on your WordPress website.
  • \n
  • Switch ON | OFF hide Page Views Count for all Posts, Pages and all custom posts types including WooCommerce custom post types.
  • \n
  • Set the Position of the counter to show at the top of the page or post or at the bottom
  • \n
  • Set alignment of the counter Left, Right or Centre
  • \n
  • Set the colour and size of the counter icon
  • \n
  • Option to use load by Ajax to prevent the count from being cached by caching plugins
  • \n
  • Option to Manually set / edit total views and views today from Page View Count meta box on any post or page editor
  • \n
  • Add Page Views counter via the PVC Gutenberg block
  • \n
  • Add Page Views counter via shortcode
  • \n
  • Add Page Views counter via widget
  • \n
  • Developers can add the Page Views Counter via php tag
  • \n
  • All options and settings are point click – absolutely no coding required
  • \n
\n

COMPATIBILTY

\n

Compatible with WordPress 5.3+ and backwards to WP 4.9.0. Compatible with Classic Editor plugin with 5.0+ (Gutenberg Deactivated)

\n

GUTENBERG BLOCK

\n

Using the Gutenberg Editor. Use the Page View Count Block to add the counter to any page or post content. Block search for ‘Page Views’ or selecting the block from the a3rev Blocks menu.

\n

Adding the Page Views block to your content automatically deactivates the Global Page View counter on the post or page.

\n

ELEMENTOR TEMPLATES

\n

Fully compatible with Elementor templates. Add counter via Shortcode or widget to any template.

\n

DEVELOPERS

\n

On the plugins dashboard in the + Page Views Count Function options box you will find the Page Views Count functions and notes on how to use them.

\n
    \n
  • Use to manually add Page views count to any content or object in the theme.
  • \n
  • Use to add page View Count to any content that is not create using WordPress custom post / taxonomy type.
  • \n
  • Use to create a custom position of the Page Views Count
  • \n
  • Functions support echo and return parameters when getting visitor stats on any variable.
  • \n
\n

TROUBLESHOOTING

\n
    \n
  • The number 1 support request we get about the plugin is that it double or triple counts page or post loads. Yes it does and if you see that it is a Red Flag that you have a misconfiguration or bug in your theme or a plugin. Page Views Count does exactly that – counts each time the page or post is loading in the browser – if its counting twice it is because the browser is double loading the page. That is a bad thing and you or your developer needs to fix that.
  • \n
\n

CONTRIBUTE

\n

When you download Page Views Count, you join our community. Regardless of if you are a WordPress beginner or experienced developer if you’?re interested in contributing to Page Views Count development head over to the Page Views Count GitHub Repository to find out how you can contribute.
\nWant to add a new language to Page Views Count? Great! You can contribute via translate.wordpress.org

\n

Usage

\n
    \n
  1. \n

    Install and activate the plugin

    \n
  2. \n
  3. \n

    Go to WordPress Settings menu > Page View Count Menu

    \n
  4. \n
  5. \n

    Activate Page Views Count and use the options box settings to make the desired configuration

    \n
  6. \n
  7. \n

    Be sure to clear any caching and browser cache to see your Page Views Count

    \n
  8. \n
\n","download_link":"https://downloads.wordpress.org/plugin/page-views-count.2.4.12.zip","tags":{"gutenberg":"gutenberg","page-view-count":"page view count","post-view-count":"post view count","post-views":"post views","wordpress-page-view":"wordpress page view"},"donate_link":"","icons":{"1x":"https://ps.w.org/page-views-count/assets/icon.svg?rev=986301","2x":"https://ps.w.org/page-views-count/assets/icon-256x256.png?rev=986301","svg":"https://ps.w.org/page-views-count/assets/icon.svg?rev=986301"},"wporg":true},{"name":"Newspack Listings","slug":"newspack-listings","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://github.com/Automattic/newspack-listings/releases","short_description":"

Create reusable content as listings and add them to lists wherever core blocks can be used

\n","description":"\n\n\n

Create reusable content as listings and add them to lists wherever core blocks can be used

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2021/02/listings2-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2021/02/listings2-372x209.jpg","svg":""},"wporg":false},{"name":"Newspack Newsletters","slug":"newspack-newsletters","version":"1.33.1","author":"Automattic","author_profile":"https://profiles.wordpress.org/automattic","requires":"5.3","tested":"5.8.0","requires_php":"5.6","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":1,"support_threads_resolved":1,"active_installs":500,"downloaded":3342,"last_updated":"2021-09-14 10:52pm GMT","added":"2021-02-15","homepage":"https://newspack.pub","short_description":"Create email newsletters with the Gutenberg editor and distribute them with your Mailchimp or Constant…","description":"

Create email newsletters with the Gutenberg editor and send them via Mailchimp or Constant Contact, all without leaving WP Admin! Newspack Newsletters lets you build eye-catching newsletters using the WordPress editing tools you’re already familiar with, and lets you save drafts, create reusable layouts, send to your existing mailing list, and also publish them to your website.

\n

Use and create newsletter layouts

\n

Newspack Newsletters comes with four default layouts to help you start building newsletters quickly. You can use an existing layout, or start fresh with a blank page. You can also create and save your own layouts, or alter the ones that come bundled with the plugin and save the settings, and use them for future campaigns.

\n

Use Gutenberg blocks and settings

\n

Newspack Newsletters supports most core Gutenberg blocks and configurations, letting you use blocks like Group, Button, Columns, and more, to create dynamic layouts. The plugin will warn you when a block will not display as expected in an email.

\n

Customize your newsletter’s appearance

\n

You can customize your newsletters further by changing the header and body fonts, or picking a background color.

\n

Newspack Blocks

\n

Newspack Newsletters comes bundled with the Newspack Post Inserter block. This block lets you insert excerpts from live posts on your site, and, once inserted, will turn those posts into static content using the Header and Paragraph blocks, linking back to your site.

\n

Need to target a post title to your newsletter audience? Not a problem! You can edit these blocks, and add others, to make sure they’ speak to your readers.

\n

Add ads!

\n

Monetize your newsletters by including advertising. The Newspack Newsletters plugin lets you create ads, which are stored as a custom post type. Ads are automatically inserted into your newsletters, and can also be toggled off on a newsletter-by-newsletter basis.

\n

Send with ease

\n

Newspack Newsletters connects to your Mailchimp or Constant Contact accounts to send emails using the mailing lists you’ve collected there, all without leaving the WordPress Admin.

\n

Before sending your campaign, you can send test emails to one or more email addresses at a time from the newsletter editor, to make sure everything is pixel perfect before sharing with the world.

\n

About Newspack

\n

The Newspack Newletters plugin is part of Newspack, a suite of tools to help small to mid-sized news organizations publish and generate revenue with WordPress. Newspack is a collaborative project by WordPress.com and the Google News Initiative. You can learn more about Newspack by visiting our website.

\n

Credits

\n

The beach photograph in the screenshot is by Life of Pix, licensed CC0.

\n","download_link":"https://downloads.wordpress.org/plugin/newspack-newsletters.zip","tags":{"constant-contact":"constant contact","mailchimp":"mailchimp","newsletters":"newsletters","newspack":"Newspack","wordpress-com":"WordPress.com"},"donate_link":"","icons":{"1x":"https://ps.w.org/newspack-newsletters/assets/icon.svg?rev=2475195","2x":"https://ps.w.org/newspack-newsletters/assets/icon-256x256.png?rev=2475195","svg":"https://ps.w.org/newspack-newsletters/assets/icon.svg?rev=2475195"},"wporg":true},{"name":"Web Stories","slug":"web-stories","version":"1.11.0","author":"Google","author_profile":"https://profiles.wordpress.org/google","requires":"5.5","tested":"5.8.1","requires_php":"7.0","rating":84,"ratings":{"1":5,"2":2,"3":2,"4":4,"5":32},"num_ratings":45,"support_threads":113,"support_threads_resolved":83,"active_installs":30000,"downloaded":350277,"last_updated":"2021-09-08 11:17pm GMT","added":"2020-09-22","homepage":"https://wp.stories.google/","short_description":"Web Stories are a visual storytelling format for the open web which immerses your readers…","description":"

Web Stories are a free, open-web, visual storytelling format for the web, enabling you to easily create visual narratives with engaging animations and tappable interactions, and immerse your readers in great and fast-loading full-screen experiences.

\n

Benefits of Web Stories

\n

The Web Stories format puts features and capabilities at your fingertips to engage with your audience via the power of storytelling on the open web. Specifically, you can:

\n
    \n
  • Create beautiful and engaging content easily: Web Stories make the production of stories as easy as possible from a technical perspective.
  • \n
  • Enjoy creative flexibility for editorial freedom and branding: The Web Stories format comes with preset but flexible layout templates, standardized UI controls, and components for sharing and adding follow-on content.
  • \n
  • Share and link your stories on the open web: Web Stories are part of the open web and can be shared and embedded across sites and apps without being confined to a single ecosystem.
  • \n
  • Track and measure your stories: Supports analytics and bookend capabilities for viral sharing and monetization.
  • \n
  • Capture the attention of your readers by offering fast loading times to your stories: Web Stories are lightning fast so that your audience stays engaged and entertained.
  • \n
  • Engage with your readers via immersive storytelling: Web Stories are a new and modern way to reach existing readers.
  • \n
  • Monetize effectively the beautiful and engaging stories you create: Web Stories enable monetization capability for publishers using affiliate links. For advertisers, Stories is a way to reach a unique audience within a new storytelling experience.
  • \n
\n

Web Stories Editor

\n

The Web Stories editor for WordPress brings together a robust set of story creation capabilities in a user-friendly, WYSIWYG creation tool. Some of the key features you can leverage out of the box are:

\n
    \n
  • A visually rich and intuitive dashboard, allowing you to easily navigate the story creation process
  • \n
  • Beautiful and expressive page templates to you get your story creation process started quickly and smoothly
  • \n
  • Easy drag-and-drop capabilities, making it easy to compose beautiful stories
  • \n
  • Convenient access to WordPress’ media library, enabling you to grab your media assets right from the plugin dashboard as you create your stories
  • \n
  • Customizable color and text style presets, making it easy to tailor the style of your stories to the needs of your content strategy
  • \n
  • And much more!
  • \n
\n

Using the Web Stories editor for WordPress, you can easily create visual narratives with tappable interactions, and share freely across the web, or embed them on your existing content strategies. The Stories you create are yours in every way, as Web Stories belong to the open web, instead of being confined to any specific closed ecosystem or platform.

\n

Audience: Everyone

\n

Web Stories are for everyone! If you are a site owner, content creator, or publisher on the web, embracing the Web Stories format would be great as a way to enhance the quality of your content strategy, the value you bring to your readers, and consequently your chances of achieving sustainable success.

\n

Terms of Service

\n

By using this plugin, you agree to Google’s Terms of Service. By using third-party imagery and video provided by Unsplash, Coverr and Tenor, you agree to adhere to the respective Terms of Service.

\n","download_link":"https://downloads.wordpress.org/plugin/web-stories.1.11.0.zip","tags":{"amp":"amp","google":"google","stories":"stories","storytelling":"storytelling","web-stories":"web stories"},"donate_link":"","icons":{"1x":"https://ps.w.org/web-stories/assets/icon.svg?rev=2386543","2x":"https://ps.w.org/web-stories/assets/icon-256x256.png?rev=2386543","svg":"https://ps.w.org/web-stories/assets/icon.svg?rev=2386543"},"wporg":true},{"name":"Jetpack – WP Security, Backup, Speed, & Growth","slug":"jetpack","version":"10.1","author":"Automattic","author_profile":"https://profiles.wordpress.org/automattic","requires":"5.7","tested":"5.8.1","requires_php":"5.6","rating":78,"ratings":{"1":321,"2":80,"3":81,"4":138,"5":1023},"num_ratings":1643,"support_threads":311,"support_threads_resolved":271,"active_installs":5000000,"downloaded":245894338,"last_updated":"2021-09-07 3:42pm GMT","added":"2011-01-20","homepage":"https://jetpack.com","short_description":"Improve your WP security with powerful one-click tools like backup and malware scan. Get essential free tools including stats, CDN and social sharing.","description":"

The most popular WordPress plugin for just about everything.

\n

WordPress security, performance, marketing, and design tools — Jetpack is made by WordPress experts to make WP sites safer and faster, and help you grow your traffic.

\n

24/7 AUTO SITE SECURITY

\n

We guard your site so you can run your site or business. Jetpack Security provides easy-to-use, comprehensive WordPress site security including auto real-time backups and easy restores, malware scans, and spam protection. Essential features like brute force protection and downtime / uptime monitoring are free.

\n
    \n
  • Back up your site automatically in real time and restore to any point with one click. Unlimited storage for your backup. Great for eCommerce stores especially Woo.
  • \n
  • Manage migration to a new host, migrate theme files and plugins to a new database, easily duplicate websites, create full database backups, clone websites, repair broken websites by restoring older backups or easily set up a test site by creating a duplicate of your existing WP website.
  • \n
  • See every site change and who made it with the activity log, great for coordination, debug, maintenance, or troubleshooting.
  • \n
  • Automatically perform malware scans and security scans for other code threats. One click fix to restore your site for malware.
  • \n
  • Block spam comments and form responses with anti spam features powered by Akismet.
  • \n
  • Brute force attack protection to protect your WordPress login page from attacks.
  • \n
  • Monitor your site uptime / downtime and get an instant alert of any change by email.
  • \n
  • Secure WordPress.com powered login used by millions of sites with optional 2FA (two factor authentication) for extra protection.
  • \n
  • Auto update individual plugins for easy site maintenance and management.
  • \n
\n

PEAK SPEED AND PERFORMANCE

\n

Get blazing fast site speed with Jetpack, the premier WP plugin built to leverage the power of AMP, a tool that helps optimize your site on mobile devices. Jetpack’s free CDN (content delivery network) auto optimizes your images. Watch your page load times decrease — we’ll optimize your images and serve them from our own powerful global network, and speed up your site on mobile devices to reduce bandwidth usage and save money!

\n
    \n
  • Jetpack has partnered with Google AMP to create the best, highest performance all-in-one toolkit for WordPress. By using Jetpack and AMP together, you get all the features you need to build a beautiful, fast, modern website with no coding required.
  • \n
  • Image CDN for images and static files, like CSS and JavaScript, served from our servers, not yours, which saves you money and bandwidth.
  • \n
  • Lazy load images for a super fast experience, even on mobile. Jetpack’s lazy loading automatically delays the loading of media on your posts and pages until your visitors scroll down to where they appear on the page.
  • \n
  • Unlimited, high speed, ad free video hosting keeps the focus on your content, not on ads or recommendations that lead people off site.
  • \n
  • Custom site search is incredibly powerful and customizable. Helps your visitors instantly find the right content so they read and buy more. Works great with WooCommerce / eCommerce sites to help filter products so customers get what they want on your site faster.
  • \n
  • Recommended to use with WP Super Cache for ultimate WordPress site speed.
  • \n
\n

POWERFUL TOOLS FOR GROWTH

\n

Create and customize your WordPress site, optimize it for visitors and revenue, and enjoy watching your stats tick up. Build it, share it, and watch it grow.

\n
    \n
  • Advanced site stats and analytics to help you understand your audience.
  • \n
  • Auto publish blog posts and products to social media by simply using our tools to connect to Facebook, Twitter, and Linkedin.
  • \n
  • Easily share Instagram posts on your pages and blog posts.
  • \n
  • Collect a payment or donation, sell a product, service, or membership with simple integrations with PayPal and Stripe.
  • \n
  • Grow traffic with SEO tools for Google, Bing, Twitter, Facebook, and WordPress.com. XML sitemap created automatically.
  • \n
  • Advertise on your site to generate revenue. The ad network automatically does the work for you to find high-quality ads that are placed on your site.
  • \n
  • Manage Jetpack features from anywhere with the official WordPress mobile app, available for Apple iOS (iPhone or iPad) and Google Android.
  • \n
  • Looking for Customer Relationship Management? Check out the Jetpack CRM plugin which works alongside Jetpack to give you a simple and practical way to build relationships with your customers and leads.
  • \n
\n

EASY DESIGN TOOLS

\n

Quickly customize your site to make it stand out — no coding needed.

\n
    \n
  • Themes — Simple themes to get started or pick a professional theme to make your site stand out.
  • \n
  • Related posts — Keep visitors on your site by automatically showing them related content they will be interested in.
  • \n
  • Gallery and Slideshow tools — Image galleries, carousel slider, and slideshows for WP sites and stores.
  • \n
  • Subscriptions — Make it easy for visitors to sign up to receive notifications of your latest posts and comments.
  • \n
  • Contact form — Easily build unlimited contact forms for free without any coding. Receive email notifications for each response. Integrate with mail solutions like Creative Mail to reach your customers and leads quickly. Connect to Jetpack Anti spam (powered by Akismet) to filter submissions.
  • \n
  • oEmbed Support — easily embed images, posts, and links from Facebook and Instagram.
  • \n
\n

INTEGRATIONS

\n

Jetpack is updated monthly to ensure seamless integration with top WordPress plugins and other tech products.

\n
    \n
  • Built for WooCommerce: Jetpack and WooCommerce are both made by Automattic. Backup, Scan, Anti-spam, integrate perfectly for Woo / eComm stores
  • \n
  • Jetpack is fully compatible with v2.0 of the official AMP plugin for WordPress.
  • \n
  • Better understand your customers and marketing with Google Analytics (GA) integration
  • \n
  • Social media platforms: Instagram, Facebook, Twitter, LinkedIn
  • \n
  • Simple Blocks to customize your site: Pinterest, Whatsapp, Podcast player, GIFs, maps, tiled gallery, slideshow
  • \n
  • Payment processors: easily collect payments or donations and sell products through Stripe and PayPal
  • \n
  • Site speed and performance plugins: Works great with WP Super Cache by Automattic and Cloudflare.
  • \n
  • Contact form: Anti-spam (Powered by Akismet) blocks spam comments for Jetpack forms, Contact Form 7, Ninja Forms, Gravity Forms, Formidable Forms, and more.
  • \n
  • Other tech integrations: Instagram, Creative Mail, Mailchimp, Calendly, Whatsapp, Pinterest, Revue, and more.
  • \n
\n

EXPERT SUPPORT

\n

We have a global team of Happiness Engineers ready to provide incredible support. Ask your questions in the support forum or contact us directly.

\n

GET STARTED

\n

Installation is free, quick, and easy. Set up Jetpack in minutes. Take advantage of more robust features like WordPress site security and design and growth tools by upgrading to a paid plan.

\n","download_link":"https://downloads.wordpress.org/plugin/jetpack.10.1.zip","tags":{"backup":"backup","malware":"malware","scan":"scan","security":"security","woo":"woo"},"donate_link":"","icons":{"1x":"https://ps.w.org/jetpack/assets/icon.svg?rev=2394525","2x":"https://ps.w.org/jetpack/assets/icon-256x256.png?rev=2394525","svg":"https://ps.w.org/jetpack/assets/icon.svg?rev=2394525"},"wporg":true},{"name":"Easy Notification Bar","slug":"easy-notification-bar","version":"1.4.3","author":"WPExplorer","author_profile":"https://profiles.wordpress.org/wpexplorer","requires":"5.2.0","tested":"5.8.1","requires_php":"5.6.2","rating":82,"ratings":{"1":0,"2":1,"3":1,"4":1,"5":4},"num_ratings":7,"support_threads":4,"support_threads_resolved":1,"active_installs":4000,"downloaded":37332,"last_updated":"2021-09-28 3:14am GMT","added":"2019-06-20","homepage":"https://wordpress.org/plugins/easy-notification-bar/","short_description":"Easily add a custom top bar notification message to on your site with live customization…","description":"

Easily add a custom top bar notification message to on your site with live customization options via the WordPress customizer. The plugin allows you to enter your notification bar text as well as an optional button to display next to your text. Perfect for notifying visitors of a current sale, hot product, warnings or other important messages.

\n

The Easy Notification Bar plugin makes use of the newer “wp_body_open” action hook introduced in WordPress 5.2.0 which allows the plugin to work better with any theme that has been updated to support the tag. Contrary to other notice bar solutions which rely on absolute positioning, this plugin inserts the notice bar right after the body tag so it should display perfectly without any conflicts on any well-coded theme.

\n

By default, the notification bar is “static” which means it displays at the top of your site so when you scroll down the page it will become “hidden”. This is generally better for usability and SEO. However, in version 1.4 we added a new sticky option which you can enable in the Customizer so that the notification bar remains visible as you scroll down the page. The sticky functionality makes use of the CSS sticky property (not javascript).

\n

Although disabled by default, you can enable a close icon for your notice. When enabled, your visitors will see an “x” icon over the top bar which they can click to hide the message for their current and future sessions. This functionality makes use of localStorage (not cookies).

\n

Live Demo: You can view a live demo for the notification bar on our More Widgets Plugin Demo

\n

Features

\n
    \n
  • Sitewide (or homepage only) top notification bar.
  • \n
  • Easy setup via the WordPress customizer.
  • \n
  • Optional close icon.
  • \n
  • Optional sticky display.
  • \n
  • Custom background, color, text alignment and font size settings.
  • \n
  • Optional callout button.
  • \n
  • Responsive design so it looks good on mobile.
  • \n
  • Minimal code.
  • \n
  • Vanilla Javascript used for close icon (jQuery not needed).
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/easy-notification-bar.zip","tags":{"notice":"notice","notice-bar":"notice bar","notification":"notification","notification-bar":"notification bar","top-bar":"top bar"},"donate_link":"","icons":{"1x":"https://ps.w.org/easy-notification-bar/assets/icon-128x128.png?rev=2515988","2x":"https://ps.w.org/easy-notification-bar/assets/icon-256x256.png?rev=2515988"},"wporg":true},{"name":"Antispam Bee","slug":"antispam-bee","version":"2.10.0","author":"pluginkollektiv","author_profile":"https://profiles.wordpress.org/pluginkollektiv","requires":"4.5","tested":"5.8.1","requires_php":"5.2","rating":96,"ratings":{"1":7,"2":1,"3":1,"4":2,"5":174},"num_ratings":185,"support_threads":6,"support_threads_resolved":6,"active_installs":700000,"downloaded":5110739,"last_updated":"2021-07-29 11:15am GMT","added":"2009-01-10","homepage":"https://antispambee.pluginkollektiv.org/","short_description":"Antispam plugin with a sophisticated tool set for effective day to day comment and trackback spam-fighting. Build with data protection and privacy in …","description":"

Say Goodbye to comment spam on your WordPress blog or website. Antispam Bee blocks spam comments and trackbacks effectively, without captchas and without sending personal information to third party services. It is free of charge, ad-free and 100% GDPR compliant.

\n

Feature/Settings Overview

\n
    \n
  • Trust approved commenters.
  • \n
  • Trust commenters with a Gravatar.
  • \n
  • Consider the comment time.
  • \n
  • Allow comments only in a certain language.
  • \n
  • Block or allow commenters from certain countries.
  • \n
  • Treat BBCode links as spam.
  • \n
  • Validate the IP address of commenters.
  • \n
  • Use regular expressions.
  • \n
  • Search local spam database for commenters previously marked as spammers.
  • \n
  • Notify admins by e-mail about incoming spam.
  • \n
  • Delete existing spam after n days.
  • \n
  • Limit approval to comments/pings (will delete other comment types).
  • \n
  • Select spam indicators to send comments to deletion directly.
  • \n
  • Optionally exclude trackbacks and pingbacks from spam detection.
  • \n
  • Optionally spam-check comment forms on archive pages.
  • \n
  • Display spam statistics on the dashboard, including daily updates of spam detection rate and a total of blocked spam comments.
  • \n
\n

Support

\n\n

Contribute

\n
    \n
  • Active development of this plugin is handled on GitHub.
  • \n
  • Pull requests for documented bugs are highly appreciated.
  • \n
  • If you think you’ve found a bug (e.g. you’re experiencing unexpected behavior), please post at the support forums first.
  • \n
  • If you want to help us translate this plugin you can do so on WordPress Translate.
  • \n
\n

Credits

\n\n","download_link":"https://downloads.wordpress.org/plugin/antispam-bee.2.10.0.zip","tags":{"anti-spam":"anti-spam","antispam":"antispam","block-spam":"block spam","comment":"comment","comments":"comments"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=TD4AMD2D8EMZW","icons":{"1x":"https://ps.w.org/antispam-bee/assets/icon-128x128.png?rev=977629","2x":"https://ps.w.org/antispam-bee/assets/icon-256x256.png?rev=977629"},"wporg":true},{"name":"SimpleTOC – Table of Contents Block","slug":"simpletoc","version":"4.8","author":"Marc Tönsing","author_profile":"https://profiles.wordpress.org/marcdk","requires":"5.0","tested":"5.8.1","requires_php":false,"rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":24},"num_ratings":24,"support_threads":4,"support_threads_resolved":3,"active_installs":2000,"downloaded":21657,"last_updated":"2021-07-29 9:07pm GMT","added":"2020-04-14","homepage":"https://marc.tv/simpletoc-wordpress-inhaltsverzeichnis-plugin-gutenberg/","short_description":"Adds a custom Table of Contents Gutenberg block.","description":"

In Gutenberg, add a block and search for “SimpleTOC” or just “TOC”. You need to save your post before you add the block. It works by parsing the post content and retrieving the heading blocks and creates a new dynamic block with a list of links to the headings.

\n

Hide the headline “Table of Contents” and set a maximum display depth in the blocks’ sidebar configuration. Add the CSS class “simpletoc-hidden” to a heading block to remove that specific heading from the generated TOC.

\n

Features

\n
    \n
  • No javascript or css added.
  • \n
  • Designed for Gutenberg.
  • \n
  • Compatible with AMP plugins.
  • \n
  • Minimal and valid HTML output.
  • \n
  • Inherits the style of your theme.
  • \n
  • Support for column block layouts.
  • \n
  • Control the maximum depth of the headings.
  • \n
  • Choose between an ordered and unordered html list.
  • \n
  • SEO friendly: Disable the h2 heading of the TOC block and add your own.
  • \n
  • Comes with English, French, Spanish, German, and Brazilian Portuguese translations.
  • \n
  • Works with non-latin texts. Tested with Japanese and Arabic.
  • \n
  • Finds headlines in groups and reusable blocks. And in groups within reusable blocks.
  • \n
  • Rank Math support.
  • \n
\n

Credits

\n

This plugin is forked from https://github.com/pdewouters/gutentoc by pdewouters and uses code from https://github.com/shazahm1/Easy-Table-of-Contents by shazahm1

\n

Many thanks to Tom J Nowell https://tomjn.com and and Sally CJ who both helped me a lot with my questions over at wordpress.stackexchange.com

\n","download_link":"https://downloads.wordpress.org/plugin/simpletoc.4.8.zip","tags":{"amp":"amp","block":"block","gutenberg":"gutenberg","table-of-contents":"table of contents","toc":"toc"},"donate_link":"https://marc.tv/out/donate","icons":{"1x":"https://ps.w.org/simpletoc/assets/icon.svg?rev=2451408","2x":"https://ps.w.org/simpletoc/assets/icon-256x256.png?rev=2451408","svg":"https://ps.w.org/simpletoc/assets/icon.svg?rev=2451408"},"wporg":true},{"name":"Log in with Google","slug":"login-with-google","version":"1.2.1","author":"rtCamp","author_profile":"https://profiles.wordpress.org/rtcamp","requires":"5.4.2","tested":"5.7.3","requires_php":"7.3","rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":6},"num_ratings":6,"support_threads":1,"support_threads_resolved":0,"active_installs":400,"downloaded":3285,"last_updated":"2021-07-23 10:00pm GMT","added":"2020-10-01","homepage":"","short_description":"Minimal plugin that allows WordPress users to log in using Google.","description":"

Ultra minimal plugin to let your users login to WordPress applications using their Google accounts. No more remembering hefty passwords!

\n

Initial Setup

\n
    \n
  1. \n

    Create a project from Google Developers Console if none exists.

    \n
  2. \n
  3. \n

    Go to Credentials tab, then create credential for OAuth client.

    \n
      \n
    • Application type will be Web Application
    • \n
    • Add YOUR_DOMAIN/wp-login.php in Authorized redirect URIs
    • \n
    \n
  4. \n
  5. \n

    This will give you Client ID and Secret key.

    \n
  6. \n
  7. \n

    Input these values either in WP Admin > Settings > WP Google Login, or in wp-config.php using the following code snippet:

    \n

    `
    \ndefine( ‘WP_GOOGLE_LOGIN_CLIENT_ID’, ‘YOUR_GOOGLE_CLIENT_ID’ );
    \ndefine( ‘WP_GOOGLE_LOGIN_SECRET’, ‘YOUR_SECRET_KEY’ );
    \n“

    \n
  8. \n
\n

Browser support

\n

These browsers are supported. Note, for example, that One Tap Login is not supported in Safari.

\n

How to enable automatic user registration

\n

You can enable user registration either by
\n– Enabling Settings > WP Google Login > Enable Google Login Registration

\n

OR

\n
    \n
  • Adding
    \ndefine( 'WP_GOOGLE_LOGIN_USER_REGISTRATION', 'true' );
    \nin wp-config.php file.
  • \n
\n

Note: If the checkbox is ON then, it will register valid Google users even when WordPress default setting, under

\n

Settings > General Settings > Membership > Anyone can register checkbox

\n

is OFF.

\n

Restrict user registration to one or more domain(s)

\n

By default, when you enable user registration via constant WP_GOOGLE_LOGIN_USER_REGISTRATION or enable Settings > WP Google Login > Enable Google Login Registration, it will create a user for any Google login (including gmail.com users). If you are planning to use this plugin on a private, internal site, then you may like to restrict user registration to users under a single Google Suite organization. This configuration variable does that.

\n

Add your domain name, without any schema prefix and www, as the value of WP_GOOGLE_LOGIN_WHITELIST_DOMAINS constant or in the settings Settings > WP Google Login > Whitelisted Domains. You can whitelist multiple domains. Please separate domains with commas. See the below example to know how to do it via constants:

\n
`\n
\n

define( ‘WP_GOOGLE_LOGIN_WHITELIST_DOMAINS’, ‘example.com,sample.com’ );
\n `

\n

Note: If a user already exists, they will be allowed to login with Google regardless of whether their domain is whitelisted or not. Whitelisting will only prevent users from registering with email addresses from non-whitelisted domains.

\n

Hooks

\n

Filter wp_google_login_scopes
\nThis filter can be used to filter existing scope used in Google Sign in.
\nYou can ask for additional permission while user logs in.
\nThis filter will provide 1 parameter scopes in callback, which contains array of scopes.

\n

wp-config.php parameters list

\n
    \n
  • \n

    WP_GOOGLE_LOGIN_CLIENT_ID (string): Google client ID of your application.

    \n
  • \n
  • \n

    WP_GOOGLE_LOGIN_SECRET (string): Secret key of your application

    \n
  • \n
  • \n

    WP_GOOGLE_LOGIN_USER_REGISTRATION (boolean) (optional): Set true If you want to enable new user registration. By default, user registration defers to Settings > General Settings > Membership if constant is not set.

    \n
  • \n
  • \n

    WP_GOOGLE_LOGIN_WHITELIST_DOMAINS (string) (optional): Domain names, if you want to restrict login with your custom domain. By default, it will allow all domains. You can whitelist multiple domains.

    \n
  • \n
\n

BTW, We’re Hiring!

\n

\n","download_link":"https://downloads.wordpress.org/plugin/login-with-google.1.2.1.zip","tags":{"authentication":"authentication","google-login":"Google Login","oauth":"oauth","sign-in":"sign in","sso":"sso"},"donate_link":"https://rtcamp.com/","icons":{"1x":"https://ps.w.org/login-with-google/assets/icon-128x128.png?rev=2402713","2x":"https://ps.w.org/login-with-google/assets/icon-256x256.png?rev=2402713"},"wporg":true},{"name":"Search with Google","slug":"search-with-google","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://wordpress.org/plugins/search-with-google/","short_description":"

This plugin replaces the WordPress default search query with server-side results from Custom Search Site Restricted JSON API. 

\n","description":"\n\n\n

This plugin replaces the WordPress default search query with server-side results from Custom Search Site Restricted JSON API

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2020/11/searchWithGoogle-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2020/11/searchWithGoogle-372x209.jpg","svg":""},"wporg":false},{"name":"Page Builder Gutenberg Blocks – CoBlocks","slug":"coblocks","version":"2.16.0","author":"GoDaddy","author_profile":"https://profiles.wordpress.org/godaddy","requires":"5.0","tested":"5.8.1","requires_php":"5.6","rating":88,"ratings":{"1":7,"2":3,"3":4,"4":5,"5":63},"num_ratings":82,"support_threads":17,"support_threads_resolved":2,"active_installs":500000,"downloaded":5466671,"last_updated":"2021-08-12 8:29pm GMT","added":"2018-04-19","homepage":"","short_description":"CoBlocks is a suite of page builder WordPress blocks for Gutenberg, with 10+ new blocks and a true page builder experience with rows and columns.","description":"

CoBlocks is the most innovative collection of page building WordPress blocks for the new Gutenberg WordPress block editor.

\n

With additional blocks and true row and column building, CoBlocks gives you a true page builder experience for Gutenberg.

\n

CoBlocks is powerful but lightweight: it adds functionality to the WordPress editor without bloat. This is the plugin you’ve been waiting for, and it will make you rethink what WordPress is capable of.

\n

Make Beautiful Web Pages With Gutenberg & CoBlocks

\n

CoBlocks is the last page builder you’ll ever need: you get a winning mix of additional WordPress blocks, and page builder functionality. With CoBlocks you have everything you need to make beautiful web pages with the new block editor:

\n
    \n
  • Accordion Block
  • \n
  • Alert Block
  • \n
  • Author Profile Block
  • \n
  • Buttons Block
  • \n
  • Carousel Gallery Block
  • \n
  • Click to Tweet Block
  • \n
  • Collage Gallery Block
  • \n
  • Dynamic Separator Block
  • \n
  • Events Block (New!)
  • \n
  • Features Block
  • \n
  • Food & Drinks Block
  • \n
  • Form Block
  • \n
  • Gif Block
  • \n
  • GitHub Gist Block
  • \n
  • Hero Block
  • \n
  • Highlight Block
  • \n
  • Icon Block
  • \n
  • Logos & Badges Block
  • \n
  • Map Block
  • \n
  • Masonry Gallery Block
  • \n
  • Media Card Block
  • \n
  • Offset Gallery Block
  • \n
  • Post Carousel Block
  • \n
  • Posts Block
  • \n
  • Pricing Table Block
  • \n
  • Resizable Row/Columns Blocks
  • \n
  • Services Block
  • \n
  • Shape Divider Block
  • \n
  • Social Profiles Block
  • \n
  • Social Sharing Block
  • \n
  • Stacked Gallery Block
  • \n
\n

Breakthrough Page Builder System

\n

CoBlocks features an innovative block system that allows you to create stunning web pages, and even entire websites, with the new WordPress editor.

\n

You get the extra blocks you need and the layout and design functionality for a true page builder experience.

\n

Use the exceptional Row and Columns blocks to add dynamically generated content areas with specific responsive margin and padding settings that only CoBlocks provides.

\n

Style these with innovative new blocks such as the Shape Divider, which lets you split up your content with beautiful dividers.

\n

Each of the WordPress blocks within CoBlocks have been precisely fined tuned to offer a familiar, yet powerful, customization experience. Tailor each block to your taste using our custom controls and settings. Change fonts, set margin and padding, pick colors and more.

\n

Custom Typography Controls

\n

The breakthrough Typography Control Panel within CoBlocks lets you design web pages with alluring typographic elements. Set fonts, sizes, weights, transformations and more, in our CoBlocks blocks, and in core WordPress blocks.

\n

Free Companion Theme

\n

CoBlocks is built to show off the best of Gutenberg, but it requires a Gutenberg-first theme to unlock its full potential. We also created the free Go theme in the WordPress theme repository as the perfect companion for CoBlocks.

\n

Going Beyond Gutenberg Blocks

\n

The vision for CoBlocks is to create a suite of Gutenberg blocks to help folks make beautiful websites easily. These newest releases of CoBlocks is the ultimate expression of that vision.

\n

Built With Developers in Mind

\n

Extensible, adaptable, and open source — CoBlocks is created with theme and plugin developers in mind. If you’re interested to jump in the project, there are opportunities for developers at all levels to get involved. Contribute to CoBlocks on GitHub and join the party. 🎉

\n","download_link":"https://downloads.wordpress.org/plugin/coblocks.2.16.0.zip","tags":{"blocks":"blocks","gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","page-builder":"page builder","wordpress-blocks":"wordpress blocks"},"donate_link":"","icons":{"1x":"https://ps.w.org/coblocks/assets/icon-128x128.jpg?rev=2243972","2x":"https://ps.w.org/coblocks/assets/icon-256x256.jpg?rev=2243972"},"wporg":true},{"name":"Simple Author Box","slug":"simple-author-box","version":"2.42","author":"WebFactory Ltd","author_profile":"https://profiles.wordpress.org/webfactory","requires":"4.6","tested":"5.8.1","requires_php":"5.6","rating":88,"ratings":{"1":9,"2":0,"3":5,"4":8,"5":75},"num_ratings":97,"support_threads":8,"support_threads_resolved":8,"active_installs":50000,"downloaded":906578,"last_updated":"2021-08-13 8:08am GMT","added":"2014-08-08","homepage":"https://wpauthorbox.com/","short_description":"Add a responsive author box with social icons to any post. Great author box for…","description":"

Simple Author Box adds a responsive author box at the end of your posts, showing the author name, author gravatar and author description – author bio. It also adds over 30 social profile fields on WordPress user profile screen, allowing to display the author social icons in the author box.

\n

Main Features

\n
    \n
  • Shows author gravatar, name, website, description (author bio) and social icons
  • \n
  • Fully customizable to match your theme design (style, color, size and text options)
  • \n
  • Nice looking on desktop, laptop, tablet or mobile phones
  • \n
  • Automatically insert the author box at the end of your post
  • \n
  • Option to manually insert the author box on your template file (single.php or author.php)
  • \n
  • Simple Author Box has RTL support
  • \n
  • Simple Author Box has AMP support
  • \n
  • Great for guest posts, and guest authors
  • \n
\n

Simple Author Box Pro Features

\n
\n

Premium features only available in Simple Author Box Pro

\n
    \n
  • Change author box position to before/after content
  • \n
  • Choose whether the author’s name should link to its website/page/none
  • \n
  • Select where to show author box on
  • \n
  • Add rotate effect on author avatar hover
  • \n
  • Option to open author website link in a new tab
  • \n
  • Option to add “nofollow” attribute on author website link
  • \n
  • Choose the author website’s position: right/left
  • \n
  • Social icons type, style, rotate effect, shadow effect, thin border
  • \n
  • Option to change the color palette
  • \n
  • Choose the font and font sizes for the author’s job title, website, name, and description
  • \n
  • Enable guest authors and co-authors
  • \n
  • Option to use guest authors as co-authors
  • \n
  • Top authors widget – displays the most popular authors based of comments
  • \n
  • Simple author box widget – displays the users selected
  • \n
\n
\n

Read more about the Simple Author Box advanced features.

\n","download_link":"https://downloads.wordpress.org/plugin/simple-author-box.2.42.zip","tags":{"author-bio":"author bio","author-box":"author box","author-profile-fields":"author profile fields","author-social-icons":"author social icons","responsive-author-box":"responsive author box"},"donate_link":"","icons":{"1x":"https://ps.w.org/simple-author-box/assets/icon-128x128.jpg?rev=1821054"},"wporg":true},{"name":"Genesis Blocks","slug":"genesis-blocks","version":"1.3.0","author":"StudioPress","author_profile":"https://profiles.wordpress.org/studiopress","requires":"5.3","tested":"5.8.1","requires_php":"7.1","rating":90,"ratings":{"1":1,"2":0,"3":1,"4":0,"5":10},"num_ratings":12,"support_threads":10,"support_threads_resolved":3,"active_installs":40000,"downloaded":229071,"last_updated":"2021-09-23 6:49pm GMT","added":"2020-08-25","homepage":"https://studiopress.com/genesis-pro/","short_description":"A collection of content blocks, sections, & full-page layouts for the block editor.","description":"

Genesis Blocks is a collection of page building blocks for the Gutenberg block editor. Building pages with the block editor and Genesis Blocks gives you more control to quickly create and launch any kind of site you want!

\n

Installing the customizable Genesis Blocks plugin adds a collection of beautiful, site-building blocks to help you customize page layouts, increase engagement, and get results for your business. Genesis Blocks provides everything from customizable buttons, to beautifully-designed page sections and full-page layout designs via the Section & Layout block.

\n

Along with the blocks themselves, Genesis Blocks extends the content creation experience by providing a library of page sections and full-page layouts, all available from within the block editor.

\n

Create compelling content faster.

\n

Create and use content quickly with prebuilt and custom content sections and full-page layouts.

\n

Enhance the Gutenberg editor.

\n

Additional content blocks and the layout selector make it easy to get the most value out of the block-based editor.

\n

Genesis Blocks currently includes the following blocks to help you build content and pages quickly and effortlessly:

\n
    \n
  • Section & Layout Block
  • \n
  • Advanced Columns Block
  • \n
  • Newsletter Block
  • \n
  • Pricing Block
  • \n
  • Post Grid Block
  • \n
  • Container Block
  • \n
  • Testimonial Block
  • \n
  • Inline Notice Block
  • \n
  • Accordion Block
  • \n
  • Share Icons Block
  • \n
  • Call-To-Action Block
  • \n
  • Customizable Button Block
  • \n
  • Spacer & Divider Block
  • \n
  • Author Profile Block
  • \n
  • Drop Cap Block
  • \n
\n

Do more with Genesis Pro

\n

For those wanting to level-up with Genesis Blocks, a Genesis Pro subscription brings even richer tooling and a bigger library of sections and layouts.

\n
    \n
  • 2 new blocks (more coming soon)
  • \n
  • 26 pre-built full-page layouts
  • \n
  • 56 pre-built sections
  • \n
  • Save & reuse your own sections & layouts
  • \n
  • Advanced block-level user permissions
  • \n
  • Access to and support for Genesis Framework & all of our 35 StudioPress-made premium child themes.
  • \n
  • Additional advanced features for the rest of the Genesis Product Suite
  • \n
\n

Genesis Pro includes even more value for modern WordPress content creators, marketers, and developers. Learn more about Genesis Pro here.

\n

Google AMP Support

\n

The Accelerated Mobile Pages (AMP) project is a publishing format created by Google to enhance site performance for mobile website users. AMP pages are specially designed for Google search users to quickly load website pages without using any extraneous data. Genesis Blocks has support for AMP built into each block!

\n

Help & Docs

\n

User and developer docs for Genesis Blocks can be found here.

\n","download_link":"https://downloads.wordpress.org/plugin/genesis-blocks.1.3.0.zip","tags":{"blocks":"blocks","editor":"editor","gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","page-builder":"page builder"},"donate_link":"https://studiopress.com","icons":{"1x":"https://ps.w.org/genesis-blocks/assets/icon-128x128.png?rev=2368839","2x":"https://ps.w.org/genesis-blocks/assets/icon-256x256.png?rev=2368840"},"wporg":true},{"name":"MathML Block","slug":"mathml-block","version":"1.2.1","author":"adamsilverstein","author_profile":"https://profiles.wordpress.org/adamsilverstein","requires":"5.0","tested":"5.8.1","requires_php":"5.6","rating":90,"ratings":{"1":0,"2":0,"3":0,"4":1,"5":1},"num_ratings":2,"support_threads":1,"support_threads_resolved":0,"active_installs":500,"downloaded":7969,"last_updated":"2021-09-11 2:30pm GMT","added":"2018-12-28","homepage":"","short_description":"A MathML block for the WordPress block editor (Gutenberg).","description":"

A MathML block for the WordPress block editor (Gutenberg).
\nRequires PHP 5.4+ and WordPress 5.0+.

\n

Development takes place on the GitHub repository: https://github.com/adamsilverstein/mathml-block.

\n

Screencast: https://cl.ly/c0f6bbfbc3b1

\n

What is MathML?

\n

Mathematical Markup Language is a mathematical markup language, an application of XML for describing mathematical notations and capturing both its structure and content. It aims at integrating mathematical formulae into World Wide Web pages and other documents.

\n

The MathML block uses MathJax to render MathML formulas in the editor and on the front end of a website. MathJax (https://www.mathjax.org/) is A JavaScript display engine for mathematics that works in all browsers.

\n

To test a MathML block and enter a formula, for example: \\[x = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}\\].

\n

To test using math formulas inline, type an formula into a block of text, select it and hit the ‘M’ icon in the control bar. For example: \\( \\cos(θ+φ)=\\cos(θ)\\cos(φ)−\\sin(θ)\\sin(φ) \\). Note: if you are copying and pasting formulas into the rich text editor, switching to HTML/code editor mode is less likely to reformat your pasted formula.

\n

This plugin is compatible with the official AMP plugin by rendering amp-mathml on AMP pages.

\n

Technical Notes

\n
    \n
  • Requires PHP 5.6+.
  • \n
  • Requires WordPress 5.0+.
  • \n
  • Issues and Pull requests welcome on the GitHub repository: https://github.com/adamsilverstein/mathml-block.
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/mathml-block.zip","tags":{"block":"block","block-editor":"block-editor","gutenberg":"gutenberg","math":"math","mathml":"mathml"},"donate_link":"","icons":{"1x":"https://ps.w.org/mathml-block/assets/icon-128x128.png?rev=2002452","2x":"https://ps.w.org/mathml-block/assets/icon-256x256.png?rev=2002452"},"wporg":true},{"name":"Calculated Fields Form","slug":"calculated-fields-form","version":"1.1.24","author":"CodePeople","author_profile":"https://profiles.wordpress.org/codepeople","requires":"3.0.5","tested":"5.8.1","requires_php":false,"rating":96,"ratings":{"1":20,"2":2,"3":4,"4":27,"5":682},"num_ratings":735,"support_threads":108,"support_threads_resolved":107,"active_installs":60000,"downloaded":3585182,"last_updated":"2021-10-02 2:59pm GMT","added":"2013-03-12","homepage":"https://cff.dwbooster.com","short_description":"Calculated Fields Form allows you to create both simple and rich forms, quickly like a…","description":"

The “Calculated Fields Form” plugin allows you to create web forms with calculated fields, whose values are dynamically calculated based on other fields’ values in the web form.

\n

The possibilities are unlimited. For example, you can create forms with financial calculations, date operations to create reservation forms, and calculate the product prices. The plugin includes text operations for editing, translation, or advertising services. There are more advanced operations available such as determining the distance between addresses or generating graphs. The resulting forms are 100% mobile responsive.

\n

The most impressive thing is that you don’t need to hire a programmer to create the forms. With basic knowledge, you will have a professional form in just five minutes.

\n

Creating a form is all visual. The “Calculated Fields Form” plugin includes a form editor with multiple controls. Such as text fields, numeric fields, currency fields, slider controls, email fields, radio buttons, checkboxes, container fields, page breaks to create multipage forms, and most importantly, calculated fields.

\n

The form editor includes a list of controls, a property bar to easily edit field properties, a dashboard where you can design your forms, and the attributes for form configuration. Also, the plugin comes with multiple predefined layouts to change the forms’ appearance. If there are not enough predefined layouts for your project, there is a style editor to customize the form’s design.

\n

The “Calculated Fields Form” plugin includes integration with popular page builders:

\n
    \n
  • Classic WordPress Editor
  • \n
  • Gutenberg Editor
  • \n
  • Elementor
  • \n
  • Page Builder by SiteOrigin
  • \n
  • Beaver Builder
  • \n
  • WPBakery Page Builder
  • \n
  • DIVI Builder
  • \n
\n

For other editors, it is possible to insert the form into the pages via its shortcode. Each web form has an associated shortcode that allows you to insert it wherever you want.

\n

Features

\n

Main features:

\n
    \n
  • Visual form builder with an intuitive and interactive interface.
  • \n
  • Includes general-purpose controls such as radio buttons, checkboxes, menu lists, date fields, slider controls, numeric fields, text currency fields, etc.
  • \n
  • Includes calculated fields whose values result from operations involving other form fields.
    \nInsert as many calculated fields in the form as you need.
  • \n
  • Contains an advanced formula editor associated with the calculated fields with syntax highlighting and error detection.
  • \n
  • Features many operations modules: mathematical operations, operations with dates, financial operations, distance operations, text management, operations for calling remote services, etc. The calculated fields can identify numbers and prices within the values of the fields.
  • \n
  • Distributed with several predefined forms that you can use as a starting point for your projects.
  • \n
  • Includes several design templates.
  • \n
  • Supports multi-pages forms by inserting page break controls between fields belonging to different pages.
  • \n
  • Allows the grouping of fields inside container controls (Div and Fieldset).
  • \n
  • Possible to define dependency rules between fields in the form, which is very useful in the design of wizards.
  • \n
\n

Other features:

\n
    \n
  • From the plugin configuration page, it is possible to duplicate a form by pressing the “Clone” button associated with it. By cloning a form, you can reuse the work already done.
  • \n
  • Includes a troubleshooting and optimization area.
  • \n
  • Allows you to disable forms in the indexing process to improve the speed of the website.
  • \n
  • Includes a version control in the forms to recover previous versions.
  • \n
\n

Predefined forms:

\n

“Calculated Fields Form” is distributed with five predefined sample forms.

\n
    \n
  1. Simple Calculator Operations
  2. \n
  3. Calculation with Dates (bookings with check-in and check-out dates)
  4. \n
  5. Ideal Weight Calculator
  6. \n
  7. Pregnancy Calculator
  8. \n
  9. Lease Calculator
  10. \n
\n

You can clone a sample form to implement your project, or create a new form from scratch.

\n
\n

Calculated Fields Form Commercial
\n The free version of the “Calculated Fields Form” plugin includes only basic functionality. Other distributions (Professional, Developer, and Platinum) are available with advanced functionalities, such as sending notification emails, integration with payment gateways and external services, controls for database’s connection (and connection to other data sources), complex operations, and many other features.

\n
\n

Features of the Profesional version:

\n
    \n
  • Includes all the features of the free version of the plugin.
  • \n
  • Submit the data collected by the forms and store it on the website for review.
  • \n
  • Send notification emails with the data collected by the form, as well as confirmation emails to the users.
  • \n
  • Integrate the form with PayPal and calculate the amount to be charged through a calculated field.
    \nPayments allow SCA (strong customer authentication), compatible with the new payment services (PSD 2) – Directive (EU).
  • \n
  • Export and import forms between different WordPress sites.
  • \n
  • Different mechanisms to protect forms, such as captcha, WordPress nonces, and honeypot fields.
  • \n
  • Associate “Thank You” page with the form, where you can show a summary of the form’s submission.
  • \n
  • Dashboard widget to show the last week’s submissions.
  • \n
  • Cache the forms to increase the rendering speed.
  • \n
  • Export the information submitted by the forms to a CSV file and use it with third-party tools such as Excel, OpenOffice, LibreOffice, or any other spreadsheet editor.
  • \n
\n

Features of the Developer version:

\n\n

Includes add-ons to extend the form features and make use of third-party plugins and external services

\n
    \n
  • Server-Side Equations add-on: define server-side equations.
  • \n
  • Verification Code add-on: verifies the user’s email by sending him a verification code and blocking the form’s submission until the verification code is entered.
  • \n
  • WooCommerce add-on: integrate forms with WooCommerce products and calculate their prices, dimensions, and weight at the runtime.
  • \n
  • SalesForce add-on: integrate the form with the SalesForce service.
  • \n
  • WebHooks add-on: send the information collected by the form to a WebHook URL to open countless possibilities. By connecting your form to services such as Zapier, Microsoft Flow, IFTTT, Workato, and others, you can connect to hundreds of third-party services (e.g. Zoho CRM, Dropbox, Mailchimp, Google Drive, Facebook, Twitter, etc.).
  • \n
  • User Permissions add-on: control the forms’ access, as well as allowing users to access and edit their data.
  • \n
  • User Registration Form add-on: build a user registration form that captures the user’s basic information and metadata.
  • \n
  • reCAPTCHA add-on: replace the basic captcha with Google reCAPTCHA to protect the forms.
  • \n
\n

Features of the Platinum version:

\n
    \n
  • Includes all the features of free, Professional, and Developer versions of the plugin.
  • \n
  • Unique Fields Values add-on: verifies that the values entered by users have not been used in previous submissions.
  • \n
  • Easy Digital Downloads add-on: integrate the forms into Easy Digital Downloads products and calculate their prices at the runtime.
  • \n
  • Google Analytics add-on: generate usage reports in “Google Analytics” for the users’ actions.
  • \n
  • PayPal Pro add-on: enable the payer’s credit card details to be entered directly through the website without any redirection to the PayPal website.
  • \n
  • Upload Files add-on: add uploaded files to the media library and extend the file types accepted by WordPress.
  • \n
  • DropBox Integration add-on: copy or move the uploaded files to a DropBox account.
  • \n
  • ip2location add-on: identify the users’ data using the ip2location databases.
  • \n
  • Google Places add-on: transform form fields into autocomplete address fields.
  • \n
  • Autocomplete Places add-on: transform form fields into autocomplete address fields by using the Photon API.
  • \n
  • Signature add-on: convert form fields into “Signature” fields, allowing the users to sign the form with a mouse or touchscreen.
  • \n
  • iCal add-on: send iCal file in the notification emails to import the events into most popular calendars like Outlook and Google Calendar.
  • \n
  • CSV Generator add-on: export the information collected by the form to CSV files and attach these to the notification emails.
  • \n
  • PDF Generator add-on: generate PDF files with the information collected by the forms and attach them to the notification emails.
  • \n
  • WebMerge add-on: integrate the forms with FormStack documents (formerly WebMerge) to generate PDF and Office documents at runtime with the information collected by the web forms.
  • \n
  • PrintFriendly add-on: generate PDF files with the PrintFriendly API and attach the resulting files to the notification emails.
  • \n
  • Mailchimp add-on: add new members to the MailChimp account.
  • \n
  • Mautic add-on: add new contacts (or update existing ones) into the Mautic Service.
  • \n
  • HubSpot add-on: add/update contacts in HubSpot, using the information collected by the form.
  • \n
  • Emma add-on: add new members to the Emma service.
  • \n
  • Twilio add-on: send notification messages (SMS) in the forms’ submissions.
  • \n
  • MailPoet add-on: add new subscribers to MailPoet’s Mailing Lists (MailPoet versions 2 and 3).
  • \n
  • AffiliateWP add-on: integrate the forms with the AffiliateWP plugin.
  • \n
  • Authorize.Net add-on: accept payments via Authorize.Net from the form.
  • \n
  • Stripe add-on: accept payments via the Stripe payment gateway from the form.
  • \n
  • Skrill Payments Integration add-on: integrate with the Skrill Moneybookers payment gateway.
  • \n
  • TargetPay (iDeal) add-on add-on: integrate with iDeal, the popular Dutch payment method.
  • \n
  • Mollie (iDeal) add-on: accept payments via iDeal.
  • \n
  • RedSys / Servired / Sermepa add-on provides: a secure interface for accepting credit card payments from most banks in Spain.
  • \n
  • PayTM add-on: a secure interface for accepting payments with credit cards, debit cards, net banking, wallets, and EMI.
  • \n
  • SagePay add-on: a secure interface for accepting payments via SagePay.
  • \n
  • Sage Payment add-on: a secure interface for accepting payments through a secure SSL checkout system for both bankcard and virtual check transactions.
  • \n
\n

Please keep the plugin updated. Updates contain bug fixes as well as new features. The WordPress directory distributes the updates for the free version of the plugin. But for commercial versions, it would be necessary to register your copy of the plugin. The following link describes the registration process: CLICK HEREThis section mainly contains notes on features of the form builder that are too detailed to include in the main description.

\n

Conditional rules

\n

It is possible to show or hide form fields (dependent fields) based on the options selected in checkbox fields, radio buttons, the options selected in dropdown menus, or the result of calculated fields.

\n

The value of a dependent field is zero when it is hidden/disabled. The plugin excludes the disabled form fields from the submission.

\n

Additional details about the use of dependencies

\n

Predefined values

\n

The predefined values in the fields have two possible uses:

\n

1- To fill the field by default. This makes it easier for the end-user to enter values.

\n

2- Hint of the values to be entered in the field (like “Enter your name”). To use the predefined value as a placeholder, you must tick the “Hide predefined value on click” checkbox. The value will disappear once the user starts filling in the field. The calculated fields’ equations ignore placeholders.

\n

The “User Instructions” attribute

\n

The “User instructions” attribute in the field settings allows you to instruct the user on how to fill in the field. By default, the instructions appear as smaller text on the public website. But they can be configured as tooltips.

\n

Adding CSS layout keywords

\n

The “Add CSS layout keywords” attribute in the fields settings allows you to apply CSS styles to fields. You must only enter the name of the CSS class names, and not their definitions.

\n

You can define the CSS classes via the “Customize Form Design” attribute in the “Form Settings” tab. This attribute contains a CSS editor with syntax highlighting and error checking.

\n

If you want to assign several class names to the field, separate them by space characters.

\n

The plugin includes multiple predefined classes that you can assign to the form fields.

\n

More information about the form’s design can be found by reading the following post in the plugin’s blog:

\n

Customizing the form’s design

\n

The classes listed below allow you to align two, three, or four fields on the same line:

\n
column2\ncolumn3\ncolumn4\n
\n

For example, if you want to put two fields on the same line, give both fields the class name “column2”.

\n

There are other variants for displaying several fields on the same line, such as container fields (Div or Fieldset). Container fields allow you to select the number of columns in your configuration. The following post describes all the alternatives for positioning the fields in the form:

\n

Formatting the form (distributing the fields in columns)

\n

Multi-page form

\n

To create multi-page forms, you must insert “Page break” controls between fields belonging to different pages.

\n

When the user presses the “Next Page” button, the plugin validates the fields in the current form. If there is any validation error (such as an unfilled required field), the plugin stops the “Next page” action.

\n

Hidden calculated fields

\n

Calculated fields include a checkbox in the configuration that allows them to be hidden from the public website. This feature is essential in those fields that are used to calculate intermediate values or when we want to show the results only in emails or thank you pages.

\n

Equation / Formula format for calculated fields

\n

Below, some possible formulas are included as examples, but the possibilities are endless.

\n
    \n
  • \n

    With simple mathematical operations:

    \n
    fieldname1 + fieldname2\n\nfieldname1 * fieldname2\n\nfieldname1 / fieldname2\n\nfieldname1 - fieldname2\n\nfieldname1 - fieldname2\n
    \n
  • \n
  • \n

    With mathematical operations involving multiple fields and grouped fields:

    \n
    fieldname1 * (fieldname2 + fieldname3)\n
    \n
  • \n
  • \n

    With rounding operations. Round the result to two decimal places:

    \n
    PREC(fieldname2 / fieldname3, 2)\n
    \n
  • \n
  • \n

    There are infinite number of formulas that can be created using complex structures. For example, the following formula includes conditional statements:

    \n
    (function () {\nif (100 < fieldname3) return fieldname1 + fieldname2;\nif (fieldname3 <= 100) return fieldname1 * fieldname2;\n})();\n
    \n
  • \n
  • \n

    For complex formulas/equations you must use the function format with return statement to return the result to the calculated field:

    \n
     (function () {\n    var result = 0;\n    /* Your code here */\n    return result;\n}) ();\n
    \n
  • \n
\n

Operations and operators to use in equations/formulas

\n

One of the “Calculated Fields Form” strengths is the ability to use any valid JavaScript code to implement the equations/formulas.

\n

However, the plugin includes a wide variety of operations and operators to simplify the development process.

\n

Mathematical Operations and Operators

\n

Conditional Operations

\n

Field Handling Operations

\n

Operations for interacting with external services

\n

Operations for handling URLs and query strings

\n

In addition to the operation modules listed above, the Developer and Platinum versions of the plugin include additional modules:

\n

Date Time Operations

\n

Financial Operations

\n

Distance and Travel Time Operations

\n

Operations to generate charts

\n

Controls available in the form generator of the “Calculated Fields Form”

\n

The complete list of controls is available from this link: CLICK HERE

\n

Create JavaScript variables from parameters received by “GET” or “POST”, “SESSION” variables, or “COOKIES” to use in the equations

\n

The plugin includes the shortcode [CP_CALCULATED_FIELDS_VAR] to generate JavaScript variables from parameters received by “GET” or “POST”, “SESSION” variables, or “COOKIES”:

\n
[CP_CALCULATED_FIELDS_VAR name=\"...\"]\n
\n

In the shortcode, you must replace the “…” symbols with the name of the parameter or variable. It will be the same name for the JavaScript variable.

\n

For example:

\n
[CP_CALCULATED_FIELDS_VAR name=\"varname\"]\n
\n

You can use the variables generated through the shortcode [CP_CALCULATED_FIELDS_VAR] in the formulas of the calculated fields: fieldname1*varname

\n

The complete list of parameters accepted by the variables shortcode is available at the following link: CLICK HERE

\n

Tips for calculating prices

\n

One of the most frequent uses of our plugin is for price calculation. When displaying the price of a product, you may want to split the form into two pages. The first page would request the information needed to calculate the price, and the second page would include the calculated field with the final price. Also, you could use the “Instruct. Text” fields to indicate the terms, conditions, and validity period of the offer.

\n

Note that you can make the “Instruct. Text” fields dependent on the calculated value. This allows you to vary the text displayed to the user depending on the calculated price, as the terms, conditions, or offers often depend on the transaction amount.

\n

Add-ons

\n

The add-ons are only distributed with the Developer and Platinum versions of the plugin.

\n

The plugin lists the add ons in the “Add-ons area” of the settings page. To enable the add-ons, you must tick their corresponding checkbox and press the “Activate/Deactivate Add-ons” button.

\n

Server-Side Equations add-on – included in the Developer and Platinum versions of the plugin

\n

Define equations with PHP code on the server-side. The calculated fields call the server-side equations via AJAX.

\n

CLICK HERE for additional information

\n

Verification Code add-on – included in the Developer and Platinum versions of the plugin

\n

The “Verification Code” add-on allows verifying the users’ emails by sending a verification code and blocking the form’s submission until a valid code is entered.

\n

CLICK HERE for additional information

\n

Unique Fields Values add-on – included in the Platinum version of the plugin

\n

The “Unique Fields Values” add-on verifies that the values entered by users have not been used in previous submissions. It allows to enter simple and complex verification rules (one or multiple fields separated by comma symbols).

\n

CLICK HERE for additional information

\n

WooCommerce add-on – included in the Developer and Platinum versions of the plugin

\n

Integrate the forms created by the “Calculated Fields Form” with WooCommerce products and calculate their prices, weights, dimensions, and more at the runtime.

\n

CLICK HERE for additional information

\n

Easy Digital Downloads add-on – included in the Platinum version of the plugin

\n

Integrate forms created by the “Calculated Fields Form” with the Easy Digital Downloads products, and calculate their price dynamically at the runtime.

\n

CLICK HERE for additional information

\n

SalesForce add-on – included in the Developer and Platinum versions of the plugin

\n

Add new leads to a SalesForce account using the data collected by the forms.

\n

CLICK HERE for additional information

\n

WebHook add-on – included in the Developer and Platinum versions of the plugin

\n

Post the information collected by the forms to WebHook URLs.

\n

Through connecting the forms created by the plugin with services like Zapier, Microsoft Flow, Workato, or IFTTT (and many others), you will have access to hundreds of third-party services, like Zoho CRM, Dropbox, Mailchimp, Evernote, Google Drive, Facebook, Twitter, and more than 300 services https://zapier.com/zapbook/apps/, https://flow.microsoft.com/, https://ifttt.com/discover

\n

CLICK HERE for additional information

\n

User Permissions add-on – included in the Developer and Platinum versions of the plugin

\n

Control access to forms. Access can be restricted to registered users, users with certain roles, or to specific users.

\n

The add-on adds a new shortcode to the plugin to list the data submitted by the logged-in user (it is possible to insert the new shortcode into the user’s profile) and assign user permissions to edit their information or delete an entry.

\n

Limit the number of submissions (e.g. one submission per form/user).

\n

CLICK HERE for additional information

\n

User Registration Form add-on – included in the Developer and Platinum versions of the plugin

\n

Build user registration forms. The form can collect basic user information and metadata required by other plugins.

\n

CLICK HERE for additional information

\n

reCAPTCHA add-on – included in the Developer and Platinum versions of the plugin

\n

Protect forms using Google reCAPTCHA instead of the basic captcha distributed with the plugin, as reCAPTCHA is more visual and intuitive than traditional captchas.

\n

CLICK HERE for additional information

\n

Google Analytics add-on – included in the Platinum version of the plugin

\n

Generate usage reports in “Google Analytics” for the users’ actions.

\n

CLICK HERE for additional information

\n

PayPal Pro add-on – included in the Platinum version of the plugin

\n

Allow the user to enter their credit card details directly on your website without redirecting them to the PayPal website. Once the user has filled the form fields and clicked the submit button, the payment is processed and the posted data (excluding the credit card information) is stored in the WordPress database.

\n

CLICK HERE for additional information

\n

Upload Files add-on – included in the Platinum version of the plugin

\n

Every commercial version of the plugin includes the “Upload File” control to upload files from the form. However, the “Upload Files” add-on allows the uploaded files to be added to the Media Library and be accessed from the pages and posts of the website.

\n

WordPress restricts the file types that can be uploaded. The “Uploads Files” add-on allows the list of accepted files to be extended.

\n

CLICK HERE for additional information

\n

DropBox Integration add-on – included in the Platinum version of the plugin

\n

Copy or move files uploaded through the forms to a DropBox account.

\n

CLICK HERE for additional information

\n

ip2location add-on – included in the Platinum version of the plugin

\n

Use the ip2location databases to identify additional user information based on their IP. Address such as country, city, coordinates, weather station, time zone, ZIP code, etc.

\n

CLICK HERE for additional information

\n

Google Places add-on – included in the Platinum version of the plugin

\n

Transform fields into autocomplete address fields calling the Google Places API.

\n

CLICK HERE for additional information

\n

Autocomplete Places add-on – included in the Platinum version of the plugin

\n

Transform fields into autocomplete address fields by calling the Photon API.

\n

CLICK HERE for additional information

\n

Signature add-on – included in the Platinum version of the plugin

\n

Transform fields into “Signature” fields to allow the users to sign the form with their mouse or touchscreens.

\n

CLICK HERE for additional information

\n

iCal add-on – included in the Platinum version of the plugin

\n

Send the users iCal files attached to the confirmation emails to import events into the most popular calendars like Outlook and Google Calendar.

\n

CLICK HERE for additional information

\n

CSV Generator add-on – included in the Platinum version of the plugin

\n

Export the information collected by the form to CSV files and attach them to the notification emails.

\n

CLICK HERE for additional information

\n

PDF Generator add-on – included in the Platinum version of the plugin

\n

An experimental add-on that generates PDF files with the information collected by the forms and attaches them to the notification emails.

\n

CLICK HERE for additional information

\n

WebMerge add-on – included in the Platinum version of the plugin

\n

Integrate the forms with the FormStack Documents service (formerly WebMerge) to generate PDF and Office documents with the information collected from the form.

\n

CLICK HERE for additional information

\n

Integrate the form with the Silverpop service (now: IBM Watson Campaign Automation) CLICK HERE for additional information

\n

PrintFriendly add-on – included in the Platinum version of the plugin

\n

Send the information collected by the forms to PrintFriendly and attach the resulting PDF files to the notification emails.

\n

CLICK HERE for additional information

\n

Mailchimp add-on – included in the Platinum version of the plugin

\n

Add new members to the MailChimp lists with the information collected by the form.

\n

CLICK HERE for additional information

\n

Mautic add-on – included in the Platinum version of the plugin

\n

Add/update contacts in the Mautic service with information collected by the forms.

\n

CLICK HERE for additional information

\n

HubSpot add-on – included in the Platinum version of the plugin

\n

Add/update HubSpot contacts with information collected by the forms.

\n

CLICK HERE for additional information

\n

Emma add-on – included in the Platinum version of the plugin

\n

Connect the forms to the Emma service to add new members to Emma groups.

\n

CLICK HERE for additional information

\n

Twilio add-on – included in the Platinum version of the plugin

\n

Send notification messages (SMS) through Twilio in the form’s submissions.

\n

CLICK HERE for additional information

\n

MailPoet add-on – included in the Platinum version of the plugin

\n

Adds subscribers to MailPoet Mailing Lists (MailPoet versions 2 and 3).

\n

CLICK HERE for additional information

\n

AffiliateWP add-on – included in the Platinum version of the plugin

\n

Integrate the forms with the “AffiliateWP” plugin.

\n

CLICK HERE for additional information

\n

Authorize.Net add-on – included in the Platinum version of the plugin

\n

The Authorize.net Server Integration Method (Authorize.net SIM) is a hosted payment processing solution that handles all of the steps in processing a transaction.

\n

CLICK HERE for additional information

\n

Stripe add-on – included in the Platinum version of the plugin

\n

The Stripe Payments add-on (www.stripe.com) provides a way to accept all major cards from customers around the world.

\n

CLICK HERE for additional information

\n

Skrill Payments Integration add-on – included in the Platinum version of the plugin

\n

An interface for accepting payments through secure pages.

\n

You can accept cards, more than 20 local payment methods, and over 80 direct bank transfer connections with a single integration.

\n

CLICK HERE for additional information

\n

TargetPay (iDeal) add-on – included in the Platinum version of the plugin

\n

Integrate with iDeal, the most popular Dutch payment method. The integration is made via TargetPay: https://www.targetpay.com/info/ideal?setlang=en

\n

CLICK HERE for additional information

\n

Mollie (iDeal) add-on – included in the Platinum version of the plugin

\n

Integrate with iDeal, the popular Dutch payment method.

\n

CLICK HERE for additional information

\n

RedSys / Servired / Sermepa add-on – included in the Platinum version of the plugin

\n

A secure interface for accepting credit card payments through most banks in Spain (Sabadell, Banco Popular, BBVA, Santander, Bankia-Caixa, Bankinter, etc.)

\n

CLICK HERE for additional information

\n

PayTM add-on – included in the Platinum version of the plugin

\n

A secure interface for accepting payments through credit cards, debit cards, net banking, wallets, and EMI. With over 100 million PayTM users in India, your customers will appreciate the option to pay with their trusted PayTM Wallet.

\n

CLICK HERE for additional information

\n

SagePay add-on – included in the Platinum version of the plugin

\n

A secure interface for accepting payments through SagePay.

\n

CLICK HERE for additional information

\n

Sage Payment add-on – included in the Platinum version of the plugin

\n

An interface for accepting payments through a secure SSL-checkout system for both bank cards and virtual check transactions. All authorized and approved transactions will be delivered to your current bank card and/or virtual check batches, viewable within the Virtual Terminal for order processing and settlement.

\n

CLICK HERE for additional information

\n","download_link":"https://downloads.wordpress.org/plugin/calculated-fields-form.zip","tags":{"calculator":"calculator","contact-form":"contact form","form":"form","form-builder":"form builder","quote-form":"quote form"},"donate_link":"http://cff.dwbooster.com","icons":{"1x":"https://ps.w.org/calculated-fields-form/assets/icon-128x128.jpg?rev=1734377","2x":"https://ps.w.org/calculated-fields-form/assets/icon-256x256.jpg?rev=1734377"},"wporg":true},{"name":"All in One SEO – Best WordPress SEO Plugin – Easily Improve SEO Rankings & Increase Traffic","slug":"all-in-one-seo-pack","version":"4.1.4.4","author":"All in One SEO Team","author_profile":"https://profiles.wordpress.org/smub","requires":"4.9","tested":"5.8.1","requires_php":"5.4","rating":90,"ratings":{"1":165,"2":22,"3":15,"4":60,"5":1543},"num_ratings":1805,"support_threads":136,"support_threads_resolved":131,"active_installs":2000000,"downloaded":85806647,"last_updated":"2021-09-22 3:46pm GMT","added":"2007-03-30","homepage":"https://aioseo.com/","short_description":"The original WordPress SEO plugin. Improve your WordPress SEO rankings and traffic with our comprehensive SEO tools and smart SEO optimizations.","description":"

AIOSEO – The Best WordPress SEO Plugin & Toolkit

\n

All in One SEO for WordPress is the original WordPress SEO plugin started in 2007. Over 2 million smart website owners use AIOSEO to properly setup WordPress SEO, so their websites can rank higher in search engines.

\n

We believe you shouldn’t have to hire an SEO expert or developer to properly setup WordPress SEO. That’s why we built AIOSEO as the most comprehensive WordPress SEO plugin and marketing toolkit, so you can improve your website’s SEO rankings and uncover new SEO growth opportunities in less than 10 minutes.

\n

At All in One SEO (AIOSEO), user experience is our #1 priority. From website SEO setup to ongoing SEO optimization, our team of SEO experts have created easy to follow SEO workflows that will help you outrank your competitors in search results. This is why many industry leaders award AIOSEO as the most beginner friendly WordPress SEO plugin that’s both EASY and POWERFUL!

\n

AIOSEO’s WordPress SEO plugin features are highly optimized for Google and other popular search engine algorithm because we follow the most up to date SEO standards and SEO best practices. We can honestly say that AIOSEO is the best WordPress SEO plugin in the world.

\n
\n

AIOSEO Pro
\n This plugin is the lite version of the All in One WordPress SEO Pro plugin that comes with all the SEO features you will ever need to rank higher in search engines including smart SEO schema markup, advanced SEO modules, powerful SEO sitemap suite, local SEO module, Google AMP SEO, WooCommerce SEO, and tons more. Click here to purchase the best premium WordPress SEO plugin now!

\n
\n

We took the pain out of optimizing WordPress SEO and made it easy. Here’s why smart business owners, SEO experts, marketers, and developers love AIOSEO, and you will too!

\n

\n

Properly Setup WordPress SEO (without Hiring an Expert)

\n

AIOSEO makes it easy to setup WordPress SEO, the RIGHT WAY. Our smart WordPress SEO setup wizard helps you optimize your website’s SEO settings based on your unique industry needs.

\n

In less than 10 minutes, you will be able to setup all the advanced WordPress SEO features like XML sitemaps, optimized search appearance, SEO meta title, SEO meta description, SEO keywords, Open Graph SEO Knowledge Panel information, social media integration, SEO search console / webmaster tool connections, local SEO, schema markup for SEO, and more.

\n

But don’t just take our word. See what another website owner like yourself is saying:

\n
\n

Swift, honest, full control. After all these years and having used almost every WP SEO plugin I’m amazed by AIOSEO’s depth, simplicity and fast workflow ❤️
\n @aaronbol

\n
\n

Optimize Your Pages for Higher SEO Rankings with TruSEO Analysis

\n

Creating SEO optimized content used to be hard. Why?

\n

Because most business owners aren’t SEO experts.

\n

That’s why we created the TruSEO score. This gives you a more in-depth SEO optimization analysis and an actionable SEO checklist, so you can easily optimize your website pages for any keyword to get higher SEO rankings and maximum traffic.

\n

Our SEO content analysis tool is enabled by default in both the Gutenberg block editor and Classic Editor, so you can quickly optimize your blog posts and pages for your SEO keywords to get higher SEO rankings.

\n

Our SEO readability analysis gives you further insights on how to improve your content for maximum SEO benefits.

\n

The best part about TruSEO analysis is that you can use it to optimize your posts / pages for unlimited SEO keywords.

\n

Seamless SEO Integrations with Webmaster Tools & Social Media

\n

All in One SEO for WordPress offers seamless integration with popular social media platforms like Facebook, Twitter, Pinterest, YouTube, LinkedIn, Instagram, and more.

\n

This ensures that your website preview is optimized for both search engines (SEO), and social media networks.

\n

AIOSEO also makes it easy to connect your website with Google Search Console, Bing webmaster tools, Yandex webmaster tools, Baidu webmaster tools, Google Analytics, and all other SEO webmaster tools.

\n

This helps you easily measure your SEO results and progress.

\n
\n

I’m a professional SEO and used many tools and extensions. Regarding simplicity, individuality and configurability All in One SEO Pro is by far the best SEO plugin out there for WordPress.
\n Joel Steinmann

\n
\n

Smart XML Sitemaps and Rich Snippets (SEO Schema Markup)

\n

Proper website SEO markup plays an important role in improving SEO rankings. That’s why smart SEO experts use AIOSEO for on-page SEO optimization.

\n

Aside from the comprehensive WordPress XML sitemap feature, we also offer News SEO sitemap and Video SEO sitemap to help you improve your website’s SEO ranking and get more traffic.

\n

AIOSEO comes with built-in smart SEO schema markup feature to help you get more traffic through SEO rich snippets, Google featured snippets, breadcrumb site links in SEO, and image SEO search results.

\n
\n

The best SEO plugin. All in One SEO is the best SEO Plugin. I personally find it better than Yoast. This plugin offers so much freedom in configuration.
\n hanapupu

\n
\n

Local SEO, WooCommerce SEO, Google AMP, and More

\n

All in One SEO is the most comprehensive WordPress SEO plugin / marketing toolkit in the world.

\n

We offer complete support for Google Knowledge Graph and Schema.org markup for local businesses. You can add multiple business locations, opening hours, contact info (business email, business phone, business address, etc) and more with our Local SEO module.

\n

AIOSEO also makes WooCommerce SEO easy. With our SEO plugin, you can optimize your product pages and product categories for better SEO rankings (with just a few clicks).

\n

Since AIOSEO is the original WordPress SEO plugin, we have SEO integrations with all popular WordPress plugins such as membership plugin SEO, landing page plugin SEO, Semrush SEO integration, etc. AIOSEO also offers Google AMP integration and works seamlessly with all popular speed & caching plugins.

\n
\n

Best SEO Plugin for WordPress. We continue to use All in One SEO on all our WordPress sites and Clients sites, and we recommend it too all other clients.
\n MySEOGuy

\n
\n

Since SEO is an essential feature, AIOSEO is a must have plugin for every website!

\n

SEO Redirection Manager and 404 Monitoring

\n

AIOSEO Redirection manager helps you set up proper 301 redirects to improve your SEO rankings.

\n

We also support other advanced SEO redirects including 302 redirects, 307 redirects, 410 redirection, 404 redirects, REGEX redirects for advanced SEO needs, and more.

\n

We have an automatic 404 error monitor that helps you track and redirect 404 errors, so you can prevent losing SEO rankings.

\n

Since redirect speed is important for SEO, we built in both Apache / NGINX server level redirects to help you get maximum SEO benefit.

\n

Full All in One SEO Feature List

\n
    \n
  • WordPress SEO Setup Wizard – Properly setup WordPress SEO in less than 10 minutes.
  • \n
  • On-page SEO Optimization – optimize SEO code markup (without hiring a developer)
  • \n
  • TruSEO score – detailed content & readability analysis to help you optimize your pages for higher SEO rankings.
  • \n
  • Smart Meta Title & Description – Automatic SEO generation, dynamic SEO smart tags, and more.
  • \n
  • Unlimited SEO Keywords – our SEO content analyzer helps you optimize your pages for unlimited SEO keywords.
  • \n
  • XML Sitemap – Advanced XML sitemaps to boost your SEO rankings.
  • \n
  • Video SEO Sitemap – Improve your SEO rankings with video sitemap.
  • \n
  • News SEO Sitemap – Increase your SEO traffic with Google News sitemap.
  • \n
  • RSS SEO Sitemap – Improve SEO crawl frequency with RSS sitemap.
  • \n
  • Automatic Image SEO – Our image SEO module helps your images rank higher.
  • \n
  • Local Business SEO – Improve your local business SEO presence with our local SEO module.
  • \n
  • Multiple location SEO – Great for SEO optimization for businesses with multiple local store locations.
  • \n
  • Rich Snippets Schema – Get better click through rate (CTR) and increase SEO rankings with rich snippets schema.
  • \n
  • SEO Knowledge Graph Support – Improve your website’s search appearance with SEO Knowledge panel.
  • \n
  • Advanced SEO Schema – Easily add advanced SEO schema markups like FAQ schema, product schema, recipe schema (food blogger SEO), software application schema markup (SaaS SEO), online course schema (for course SEO), and more.
  • \n
  • Sitelinks Search Box – Helps you get a search box in Google SEO rankings.
  • \n
  • Google Site Links – Our SEO markup can help you get sitelinks for your brand.
  • \n
  • Robots.txt Editor – Control what SEO robots can see with our easy SEO robots.txt editor.
  • \n
  • SEO Audit Checklist – Improve your website’s SEO ranking with our SEO audit checklist.
  • \n
  • Google Search Console – Connect your WordPress site with Google webmaster tools to see additional SEO insights.
  • \n
  • Search Engine Verification Tools – Easily integrate with other popular SEO webmaster tools to improve search visibility.
  • \n
  • Google AMP SEO – Improve your mobile SEO rankings with Google AMP SEO.
  • \n
  • Advanced SEO Canonical URLs – Prevent duplicate content in SEO with automatic canonical URLs and boost your SEO rankings.
  • \n
  • Advanced Robots Meta SEO Settings – granular controls for no index, no follow, no archive, no snippet, max snippet, max video, and more.
  • \n
  • RSS Content for SEO – Stop content theft from hurting your SEO rankings with our RSS Content tool.
  • \n
  • User Access Control – Control who can manage your SEO settings with our advanced SEO access control.
  • \n
  • Competitor Site SEO Analysis – Use our competitor SEO analysis to outrank them by improving your website’s SEO optimization.
  • \n
  • Smart Breadcrumbs – Add Breadcrumb navigation to improve user experience and boost your SEO rankings. Comes with full SEO JSON+LD support.
  • \n
  • Smart SEO Redirects – Setup proper 301 redirects to improve your SEO rankings.
  • \n
  • 404 Error Monitor for SEO – Monitor website 404 errors and set up proper SEO redirects to prevent losing SEO rankings.
  • \n
  • Title and Nofollow for SEO – We make it easy for you to add title and nofollow to external links to improve SEO rankings.
  • \n
\n

WordPress SEO Integrations

\n
    \n
  • WooCommerce SEO – optimize your WooCommerce product pages and improve your WooCommerce store’s SEO rankings.
  • \n
  • MemberPress SEO – optimize your MemberPress course pages and improve your membership site’s SEO rankings.
  • \n
  • Elementor SEO – add SEO optimization for your Elementor landing pages.
  • \n
  • LearnDash SEO – SEO optimization for LearnDash courses.
  • \n
  • Facebook SEO – SEO optimize your website preview on Facebook.
  • \n
  • Twitter SEO – SEO optimize your website preview on Twitter.
  • \n
  • Pinterest SEO – SEO optimize your website preview on Pinterest.
  • \n
  • Open Graph Support – improve your SEO with open graph meta data.
  • \n
  • Knowledge Panel SEO – improve website SEO apperance by adding social media profile links for Facebook, Twitter, Wikpedia, Instagram, LinkedIn, Yelp, YouTube, and more.
  • \n
  • SEO Webmaster Tool Content – Connect your WordPress site with various webmaster tools to improve SEO rankings.
  • \n
  • Semrush SEO integration – See additional SEO keywords and relevant SEO keyphrases with our Semrush SEO integration.
  • \n
\n

WordPress SEO Plugin Importer

\n
    \n
  • Yoast SEO Importer – easily switch from Yoast SEO to AIOSEO with our full SEO migration wizard that includes SEO keywords, SEO title, meta description, XML sitemaps and more.
  • \n
  • Yoast SEO Premium Importer – easily import Yoast SEO premium settings including SEO redirects to AIOSEO with our full SEO migration wizard.
  • \n
  • RankMath SEO Importer – easily switch from RankMath SEO to AIOSEO with our SEO migration wizard.
  • \n
  • SEO Settings Backup – create a backup of your AIOSEO settings.
  • \n
  • Advanced SEO Import / Export – easily import / export AIOSEO settings from one site to another.
  • \n
  • Redirection Importer – import your SEO redirects from the Redirection plugin with our SEO migration wizard.
  • \n
  • Simple 301 Redirects Importer – import your SEO redirects from Simple 301 redirets with our SEO migration wizard.
  • \n
  • Safe Redirection Manager – easily import SEO redirects from safe redirect manager with our SEO migration wizard.
  • \n
\n

After reading this feature list, you can probably imagine why AIOSEO is the best WordPress SEO plugin in the market.

\n

Give AIOSEO a try.

\n

Want to unlock more SEO features? Upgrade to AIOSEO Pro.

\n

Credits

\n

This plugin is created by Benjamin Rojas and Syed Balkhi.

\n

Branding Guideline

\n

AIOSEO® is a registered trademark of Semper Plugins LLC. When writing about the WordPress SEO plugin by AIOSEO, please use the following format.

\n
    \n
  • AIOSEO (correct)
  • \n
  • All in One SEO (correct)
  • \n
  • AIO SEO (incorrect)
  • \n
  • All in 1 SEO (incorrect)
  • \n
  • AISEO (incorrect)
  • \n
\n

What’s Next

\n

If you like our WordPress SEO plugin, then consider checking out our other projects:

\n
    \n
  • OptinMonster – Get More Email Subscribers with the most popular conversion optimization plugin for WordPress.
  • \n
  • WPForms – #1 drag & drop online form builder for WordPress.
  • \n
  • MonsterInsights – See the Stats that Matter and Grow Your Business with Confidence. Best Google Analytics Plugin for WordPress.
  • \n
  • SeedProd – Create beautiful landing pages with our powerful drag & drop landing page builder.
  • \n
  • WP Mail SMTP – Improve email deliverability for your contact form with the most popular SMTP plugin for WordPress.
  • \n
  • RafflePress – Best WordPress giveaway and contest plugin.
  • \n
  • Smash Balloon – #1 social feeds plugin for WordPress.
  • \n
  • SearchWP – advanced WordPress search plugin.
  • \n
  • PushEngage – best web push notification plugin.
  • \n
\n

Visit WPBeginner to learn from our WordPress Tutorials and find out about other best WordPress plugins.

\n","download_link":"https://downloads.wordpress.org/plugin/all-in-one-seo-pack.4.1.4.4.zip","tags":{"google-search-console":"google search console","meta-description":"meta description","schema":"schema","seo":"seo","xml-sitemap":"xml sitemap"},"donate_link":"","icons":{"1x":"https://ps.w.org/all-in-one-seo-pack/assets/icon.svg?rev=2443290","2x":"https://ps.w.org/all-in-one-seo-pack/assets/icon-256x256.png?rev=2443290","svg":"https://ps.w.org/all-in-one-seo-pack/assets/icon.svg?rev=2443290"},"wporg":true},{"name":"Weglot Translate – Translate your WordPress website and go multilingual","slug":"weglot","version":"3.4","author":"Weglot Translate team","author_profile":"https://profiles.wordpress.org/remyb92","requires":"4.5","tested":"5.8.1","requires_php":"5.6","rating":96,"ratings":{"1":40,"2":7,"3":6,"4":27,"5":1219},"num_ratings":1299,"support_threads":6,"support_threads_resolved":6,"active_installs":40000,"downloaded":1233052,"last_updated":"2021-09-24 3:41pm GMT","added":"2015-09-27","homepage":"http://wordpress.org/plugins/weglot/","short_description":"Translate your WordPress website in 110+ languages within minutes with Weglot Translate, without any coding.","description":"

Weglot Translate is the leading WordPress translation plugin, trusted by 60,000+ users worldwide. Translate your WordPress website into 110+ languages and go multilingual within minutes, no coding required.

\n

Increase visibility and boost conversions with ease by adding multilingual functionality. Weglot Translate is fully optimized for multilingual SEO, with every translated page automatically indexed by Google. Say hello in multiple languages to millions of new visitors.

\n

Make your website multilingual in minutes with a free trial. Visit https://weglot.com/ to learn more!

\n

How Weglot Translate works

\n\n

Why Weglot Translate

\n

It’s easy to install: Weglot Translate is quick to set up to have a multilingual WordPress website ready, instantly. Reach out to millions of new visitors worldwide with a few clicks, without any coding.

\n

It’s built for maximum compatibility: Weglot Translate is fully compatible with all platforms, WordPress themes, and plugins. From WooCommerce product descriptions to Elementor order forms, everything is built with the creation of a successful multilingual website in mind: easily translate all your content into the languages of your choice. This way you can focus on your content, not the technical details.

\n

It’s optimized for SEO: Weglot Translate follows Google’s best practices for multilingual website translation, serving all translated web pages with clean source code. Google will automatically index every translated page with dedicated URLs.

\n

It’s easy to set and forget: Weglot Translate automatically detects all your website content for easy translation. No more time-consuming manual duplication of every single line of content to get a multilingual website. All translations are updated in real-time, so you don’t need to worry about maintenance and any newly added content is automatically translated.

\n

It takes translation seriously: Weglot Translate gives you an edge on your translation tasks with the first layer of automatic multilingual translation provided by the best machine learning providers on the market (DeepL, Google, Microsoft, and Yandex). You can also edit the translations and collaborate with your team to work on multilingual translations together, directly within Weglot.

\n

It partners with the pros: Weglot Translate lets you order from vetted professional translators directly inside your Weglot dashboard. Set translation quality the way you want it to be, with Weglot Translate.

\n

“Within a week of translating our site to English with Weglot, international sales doubled, by the following month – they had quadrupled.”
\nClara Champion – Director of Digital and E-Commerce, Jimmy Fairly
\nRead the case study

\n

Multilingual functionality like no other

\n

Increase visibility: All translated pages are automatically indexed following Google’s best practices with dedicated URLs. Get new traffic with your multilingual website.

\n

Reduce bounce rate: Redirect visitors automatically to serve them in the language of their choice, based on their browser settings.

\n

Enhance user experience: From the landing page to the email confirmation, get all your key conversion steps translated in your customers’ language. You can even add different images and videos for various languages. Useful for images with text, Weglot Translate makes it easy to display “translated” images in your translated versions. Media localization is an essential aspect of any multilingual project and Weglot Translate makes it simple to do so.

\n

“We really loved the localization features provided by Weglot, such as the ability to translate images and other types of media depending on the language the visitor is viewing the site in.”
\nKim Martin – Senior Communications and Marketing Officer, The Challenge Initiative
\nRead the case study

\n

An all-in-one language translation platform

\n
    \n
  • Manage and edit all of your translations through a user-friendly interface.
  • \n
  • Collaborate with team members and trusted translators to translate together, directly inside Weglot.
  • \n
  • Is it a title? Is it a link? No more guessing the context of the text. Weglot Translate’s in-context editor lets you translate directly within the webpage.
  • \n
  • Make it your own. The multilingual language switcher is fully customizable with multiple design choices.
  • \n
  • Weglot Translate makes it easy to migrate from other WordPress multilingual plugins like Polylang or WPML. Simply deactivate your existing translation plugin and install Weglot Translate.
  • \n
\n

“Weglot removed the pain of having to manage multiple stores for multiple locales. The integration was easy, and the support is incredibly helpful. I highly recommend Weglot to anyone looking for a simple and cost-effective solution to translate their stores!”
\nMike Robertson – Director of Sales Operations, Nikon

\n

With an increase in site visitors and session duration thanks to your multilingual website, you can expect a massive boost to your conversions. See why thousands of e-commerce platforms, SaaS firms, marketplaces, corporate websites, and blogs worldwide love Weglot Translate for its multilingual powers. Try it today for free

\n

Why should you have a multilingual website?

\n

It’s easy to forget all about other languages when setting up your online business! With the resources needed to put together a new website, multilingual capabilities are very commonly ignored, as the process to get multiple translations can get complicated and expensive. But ignoring the importance of being multilingual can be a costly mistake: unlocking the possibility for visitors to read and interact in their own language means you’ll be significantly widening your reach, increasing your chances of business success!

\n

This is why it’s important to think of ways to cater for more languages: multilingual websites naturally rank in more countries and attract more potential customers. Your visitors will also feel like you are significantly more localized by speaking to them in a language they easily understand!

\n

But how about the cost and headache to set up a proper multilingual website? This is where Weglot can make it easy: with a simple way to unlock multilingual capabilities swiftly, your website can go from targeted towards a single language to multilingual in an easy, affordable manner!

\n

Please note that Weglot is using Cloudfront CDN to display flags images to speed up performance around the world.
\nThe use of this CDN and of Weglot service is subject to Weglot terms of service

\n","download_link":"https://downloads.wordpress.org/plugin/weglot.3.4.zip","tags":{"language":"language","localization":"localization","multilingual":"multilingual","translate":"translate","translation":"translation"},"donate_link":"","icons":{"1x":"https://ps.w.org/weglot/assets/icon-128x128.png?rev=2186774","2x":"https://ps.w.org/weglot/assets/icon-256x256.png?rev=2186774"},"wporg":true},{"name":"Rank Math SEO – Best SEO Plugin For WordPress To Increase Your SEO Traffic","slug":"seo-by-rank-math","version":"1.0.73","author":"Rank Math","author_profile":"https://profiles.wordpress.org/rankmath","requires":"5.6","tested":"5.8.1","requires_php":"7.2","rating":98,"ratings":{"1":71,"2":17,"3":20,"4":51,"5":3500},"num_ratings":3659,"support_threads":117,"support_threads_resolved":116,"active_installs":900000,"downloaded":21001578,"last_updated":"2021-09-29 8:57am GMT","added":"2018-11-19","homepage":"https://s.rankmath.com/home","short_description":"Rank Math SEO is the Best WordPress SEO plugin combines the features of many SEO tools in a single package & helps you multiply your SEO traffic.","description":"

Rank Math SEO – Best SEO Plugin for WordPress
\n★★★★★

\n

SEO is the most consistent source of traffic for any website. We created Rank Math SEO, a WordPress SEO plugin, to help every website owner get access to the SEO tools they need to improve their SEO and attract more traffic to their website.

\n

Try The FREE Demo of Rank Math SEO

\n\n

Features | Why Choose Rank Math SEO? | Compare | Screenshots | Benefits

\n

SEO might be the best and most consistent source of traffic for one’s website, but it’s not without its quirks. The constant process of optimizing your posts can sometimes take more time than actually writing the content. If you always feel that you can do more on the SEO front for your website but don’t have the time, then Rank Math SEO is what you’re looking for.

\n

Its host of intelligent features brings top SEO capabilities in your hands that were previously out of reach. The smart automation features give you the power of an entire SEO team with just a few clicks. A well thought out design, powerful features, and years of development by the MyThemeShop squad make Rank Math SEO a game-changing SEO plugin that will level the SEO playing field in your favor to help increase traffic.

\n

Rank Math SEO beats all of its competitors, hands down.

\n

See the features which are exclusive to the Rank Math SEO plugin and understand why Rank Math SEO is possibly the Best SEO Plugin for WordPress.

\n
    \n
  • \n

    Setup Wizard (Easy to follow)
    \nRank Math SEO practically configures itself. Rank Math SEO features a step-by-step installation and configuration wizard that sets up SEO for WordPress perfectly.

    \n
  • \n
  • \n

    Google Schema Markup aka Rich Snippets Integrated
    \nConfiguring Google Schema Markup, aka Rich Snippets, is now easy, thanks to Rank Math SEO. With support for 16+ types of Schema Markups, aka Rich Snippets, including the Rating Schema, you’ll be able to optimize your posts in just a few clicks. It also includes the FAQ Schema aka FAQPage Schema Block & the HowTo aka How To Schema Block in the plugin.

    \n
  • \n
  • \n

    Optimize Unlimited Keywords
    \nUnlike other plugins, Rank Math SEO lets you optimize your posts for unlimited focus keywords per post. 5 by default. Increase by adding this filter.

    \n
  • \n
  • \n

    Google Search Console Integration
    \nRank Math SEO saves you a ton of time by integrating with Google Search Console and displaying important information about your website right inside WordPress.

    \n
  • \n
  • \n

    Google Keyword Ranking
    \nWith Rank Math SEO Plugin, you can track your keyword rankings in Google.

    \n
  • \n
  • \n

    Google Analytics Integration
    \nRank Math SEO offers a one-click solution to install Google Analytics script without pasting anything manually anywhere. You can also exclude the Logged-in users.

    \n
  • \n
  • \n

    Optimal Settings Pre-Selected
    \nConfiguring an SEO plugin takes time, and can be confusing. Rank Math SEO saves you the trouble with its optimal default settings, which are ideal for most websites, and if needed, can be changed.

    \n
  • \n
  • \n

    LSI Keyword Tool Integrated
    \nRank Math SEO’s integrated LSI keyword tool gives you multiple keyword variations of your focus keyword, which helps you attract more traffic to your posts. Free account needed.

    \n
  • \n
  • \n

    Add Overlay Icons On Social Images
    \nRank Math SEO makes social thumbnails click magnets by giving you the option of overlaying a GIF or a video icon on the thumbnail.

    \n
  • \n
  • \n

    Advanced SEO Analysis Tool
    \nWith just a single click, Rank Math SEO can perform an SEO audit of your website.

    \n
  • \n
  • \n

    30 Detailed SEO Tests
    \nRank Math SEO is designed to completely supercharge your website’s SEO with its 30 detailed SEO tests. Free account needed.

    \n
  • \n
  • \n

    Module Based System
    \nRank Math SEO has been designed with a module-based system, each of which can be enabled or disabled as per your needs, giving you extra speed and control.

    \n
  • \n
  • \n

    Smart Redirection Manager
    \nRank Math SEO’s built-in smart redirection manager will help you create, manage, delete, enable, or disable redirects at scale.

    \n
  • \n
  • \n

    Local Business SEO
    \nRank Math SEO is designed to be used by Global websites and local websites alike. With its local SEO features, local sites can stand out in the search engine results like Google’s and attract more traffic.

    \n
  • \n
  • \n

    SEO Optimized Breadcrumbs
    \nRank Math SEO can display SEO optimized Breadcrumbs on all websites, even if the theme doesn’t support Schema.org coding.

    \n
  • \n
  • \n

    404 Monitor
    \nRank Math SEO has a built-in 404 error monitor that helps you find and resolve 404 errors for a better user experience.

    \n
  • \n
  • \n

    Deep Content Analysis Tests
    \nOn-Page SEO is no longer a mystery with Rank Math SEO’s deep content analysis and precise SEO recommendations.

    \n
  • \n
  • \n

    Internal Linking Suggestions
    \nRank Math SEO intelligently suggests other posts from your website for internal linking from your current posts, improving the chances of ranking higher in the SERPs.

    \n
  • \n
  • \n

    Role Manager
    \nEven if you have multiple employees manage your website, you can precisely control what each of them has to access to in Rank Math SEO with its role manager.

    \n
  • \n
  • \n

    Multisite Ready
    \nWhether you run a single WordPress website or an entire network of sites – we are ready for you. Rank Math SEO fully supports the WordPress Multiuser project (WPMU).

    \n
  • \n
  • \n

    and has lightweight Code compared to slow-loading in other SEO plugins.
    \nEven with significantly more features than other plugins, Rank Math SEO loads amazingly fast and keeps your website fast always.

    \n
  • \n
\n

Why is Rank Math SEO such a game-changer?

\n
    \n
  • \n

    Auto Configuration — All you have to do is set a few options, and Rank Math SEO will configure itself perfectly for your website.

    \n
  • \n
  • \n

    Super Fast SEO Plugin — Even after packing so many features, Rank Math SEO has a negligible load on your server, thus making it one of the fastest SEO plugins for WordPress.

    \n
  • \n
  • \n

    Automatic Keyword Suggestions from Google — Get keyword suggestions from Google as you start typing letters in the focus keyword field of Rank Math SEO.

    \n
  • \n
  • \n

    New SEO Analyzer — Rank Math SEO’s built-in SEO analysis will give you SEO recommendations that you’d normally spend hundreds of dollars to get.

    \n
  • \n
  • \n

    Elementor SEO – Deep integration with the Elementor Page builder. Now, you don’t need to go back and forth between tabs to configure your page’s SEO. Everything related to SEO for Elementor can be configured in the visual editor.

    \n
  • \n
  • \n

    Divi SEO – One of its kind integration with the Divi Page Builder and theme. Handle everything related to SEO from the page editor screen without jumping back to the default editor. This helps you optimize your website in real-time for SEO.

    \n
  • \n
  • \n

    Page Builder SEO – The Rank Math SEO plugin’s content analysis works perfectly with popular page builders and themes like Oxygen Builder, WPBakery, Avada, Astra, Kadence, Themify, Beaver Builder, Page Builder Framework, Schema theme, Flothemes, OceanWP, etc.

    \n
  • \n
  • \n

    Optimize UNLIMITED Keywords At Once — You can optimize your post for up to 5 different keywords by default with the Rank Math SEO plugin and can use a filter to optimize for unlimited keywords.

    \n
  • \n
  • \n

    Image SEO – With Rank Math SEO’s perfect solution to add ALT & Title tags on the fly, to optimize images, showing inside the content, and that too for FREE, there is no reason to choose any other SEO solution that does not provide all the essential SEO features.

    \n
  • \n
  • \n

    Web Stories SEO – Make any Story created with the Google’s Web Stories plugin SEO-Ready. Automatically adds AMP-friendly Schema markup and Meta tags.

    \n
  • \n
  • \n

    WooCommerce SEO – Optimizing your store products is easier with Rank Math. SEO Meta tags and Schema are automatically added but can be customized with total control as well. Rank Math SEO has the most advanced SEO for WooCommerce.

    \n
  • \n
  • \n

    Google AMP SEO – Accelerated Mobile Pages need to be prepared for search engines. What better way to do that than letting Rank Math SEO use your regular SEO details and optimizing AMPs based on that data?

    \n
  • \n
  • \n

    bbPress SEO – User-generated content in bbPress is properly optimized with Rank Math handling all the important SEO aspects. Q&A Schema is added to bbPress topics along with other essential meta tags.

    \n
  • \n
  • \n

    BuddyPress SEO – As with bbPress, SEO for BuddyPress content is done automatically done using Rank Math. You get all the options you need to get higher rankings with your user-generated content.

    \n
  • \n
  • \n

    Quick Edit SEO Details – Go through a lot of posts/pages quickly by ensuring they are optimized for search engines. Quickly edit multiple SEO fields at once using Rank Math SEO.

    \n
  • \n
  • \n

    Instant Indexing for Bing – Get your content instantly indexed by Bing. Enter a few key details and you are all set and ready to go.

    \n
  • \n
  • \n

    Instant Indexing for Google – Instantly getting indexed by Google used to be reserved to huge brands and large websites. Not anymore. Just about anyone can take advantage of Google’s Instant Indexing feature using Rank Math SEO.

    \n
  • \n
  • \n

    Version Control – Rollback or try beta versions. Updating and downgrading your plugins is now a matter of few clicks. Automatically update to the latest versions or try out the latest beta builds.

    \n
  • \n
  • \n

    Translation Plugins Support — Rank Math SEO works flawlessly with the top translations plugins like WPML, TranslatePress, Weglot, Polylang (not entirely compatible yet), etc., making it a perfect companion.

    \n
  • \n
  • \n

    XML Sitemap – The Rank Math SEO plugin comes with a fast-loading Sitemap feature that works with different post types, including the custom ones, and provides deep controlling. One can also generate a Locations KML file via filter for Local Sitemap, & a WooCommerce Sitemap.

    \n
  • \n
  • \n

    1-Click Import From Yoast — With a single click of your mouse, Rank Math SEO can import all your settings from Yoast SEO & Yoast SEO Premium to itself. The transfer is instant, and you don’t lose any SERP rankings as a result.

    \n
  • \n
  • \n

    1-Click Import From AIO SEO — Rank Math SEO can also import all your settings from AIO SEO & All in One SEO Pack Pro in a single click. The transfer is instant, and you don’t lose any SERP rankings as a result.

    \n
  • \n
  • \n

    1-Click Import From All In One Schema Rich Snippets — Rank Math SEO can also import all of AIO’s Rich Snippet & Schema Pro settings in a few clicks, which help preserve your rich rankings when moving to Rank Math SEO.

    \n
  • \n
  • \n

    1-Click Import From SEOPress SEO — With a single click of your mouse, Rank Math SEO can import all your settings from SEOPress & SEOPress Pro SEO plugin to itself. The transfer is instant, and you don’t lose any SERP rankings as a result.

    \n
  • \n
  • \n

    1-Click Import From Redirection — Moving all your redirects shouldn’t be a hassle. That’s why we have made importing redirections from the popular Redirection plugin as simple as clicking a button.

    \n
  • \n
  • \n

    Google Keyword Suggestion — When deciding on focus keywords, Rank Math SEO can help you discover more keywords by pulling in automatic keyword suggestions from Google.

    \n
  • \n
\n

Who Can Benefit From Rank Math SEO?

\n

Rank Math SEO Plugin is perfect for:

\n

✔ Bloggers
\n✔ eCommerce Store Owners
\n✔ Niche Sites
\n✔ Businesses
\n✔ Local Businesses
\n✔ Startups
\n✔ The Real Estate
\n✔ Artists & Photographers
\n✔ The Solution Offerer
\n✔ Directories
\n✔ Vloggers (Video Bloggers)
\n✔ Or any WordPress Website

\n

Take a sneak peek into Rank Math SEO’s features

\n

Detailed Setup Tutorial

\n\n

List of Best Rank Math SEO Features

\n
    \n
  • Clean, & Simple User Interface
  • \n
  • Optimal Settings Pre-Selected
  • \n
  • Simple Setup Wizard\n
      \n
    • Compatibility Check
    • \n
    \n
  • \n
  • Auto Canonical URLs
  • \n
  • LSI Keyword Tool Integrated
  • \n
  • Google Search Console Integration
  • \n
  • Google Keyword Ranking
  • \n
  • Import Other Plugin Settings\n
      \n
    • 1 Click Import From Yoast SEO Plugin
    • \n
    • 1 Click Import From AIO SEO
    • \n
    • 1 Click Import From SEOPress & SEOPress Pro
    • \n
    • 1 Click Import From All In One Schema Rich Snippets & Schema Pro
    • \n
    • 1 Click Import From Redirection Plugin
    • \n
    \n
  • \n
  • Role Manager
  • \n
  • ACF Support
  • \n
  • AMP Ready
  • \n
  • bbPress & BuddyPress Modules
  • \n
  • Google Schema Markup Integrated\n
      \n
    • Article Rich Snippet
    • \n
    • Review Rich Snippet
    • \n
    • Book Rich Snippet
    • \n
    • Course Rich Snippet
    • \n
    • Event Rich Snippet
    • \n
    • Job Posting Rich Snippet
    • \n
    • Local Business Rich Snippet
    • \n
    • 193 Local Business Types
    • \n
    • Music Rich Snippet
    • \n
    • Person Rich Snippet
    • \n
    • Product Rich Snippet
    • \n
    • Recipe Rich Snippet
    • \n
    • Restaurant Rich Snippet
    • \n
    • Service Rich Snippet
    • \n
    • Software Application Rich Snippet
    • \n
    • Video Rich Snippet
    • \n
    • Author Stay Rating
    • \n
    \n
  • \n
  • Social Media Optimization\n
      \n
    • Add Overlay Icons On Social Images
    • \n
    • Default OpenGraph Thumbnail
    • \n
    • Auto Facebook Open Graph
    • \n
    • Facebook Authorship
    • \n
    • Facebook Open Graph for Homepage
    • \n
    • Automatic Twitter Meta Cards
    • \n
    • Twitter Card for Homepage
    • \n
    • Default Twitter Card Type
    • \n
    • Social Previews
    • \n
    \n
  • \n
  • Add Knowledge Graph\n
      \n
    • Represent site as a Person
    • \n
    • Represent site as a Company
    • \n
    • Set a Site Logo
    • \n
    \n
  • \n
  • Advanced SEO Analysis Tool\n
      \n
    • 30 Detailed SEO Tests
    • \n
    • SEO Analysis Score
    • \n
    \n
  • \n
  • Automated Image SEO
  • \n
  • Powerful Post Optimization\n
      \n
    • Add SEO Meta Box to all post types
    • \n
    • Bulk Edit Titles & Descriptions
    • \n
    • Post Preview on Google
    • \n
    • Content Analysis
    • \n
    • Control SEO For Single Pages
    • \n
    • Control The Title
    • \n
    • Control Meta Description
    • \n
    • Auto Add Additional Meta Data
    • \n
    • Control ROBOTS Meta
    • \n
    • Choose a Primary Category
    • \n
    \n
  • \n
  • Single Post/page Optimization\n
      \n
    • Focus Keyword
    • \n
    • Google Keyword Suggestion
    • \n
    • Optimize UNLIMITED Keywords (5 by default)
    • \n
    • Choose Pillar Posts & Pages
    • \n
    • Internal Linking Suggestions
    • \n
    • Capitalize Titles
    • \n
    • SEO Failed Tests
    • \n
    • SEO Warnings
    • \n
    \n
  • \n
  • XML Sitemap (New!)
  • \n
  • Module Based System
  • \n
  • Choose Any Separator Character
  • \n
  • Modify Global Meta
  • \n
  • Search Engine Verification Tools\n
      \n
    • Bing Site Verification
    • \n
    • Baidu Site Verification
    • \n
    • Alexa Site Verification
    • \n
    • Yandex Site Verification
    • \n
    • Google Site Verification
    • \n
    • Pinterest Site Verification
    • \n
    • Norton Safe Web Site Verification
    • \n
    \n
  • \n
  • Advanced Redirection Manager\n
      \n
    • Smart & Automatic Post Redirects
    • \n
    • 301 Redirection Type
    • \n
    • 302 Redirection Type
    • \n
    • 307 Redirection Type
    • \n
    • 410 Redirection Type
    • \n
    • 451 Redirection Type
    • \n
    • Support for REGEX
    • \n
    • Debug Redirections
    • \n
    \n
  • \n
  • Simple 404 Monitor\n
      \n
    • Advanced 404 Monitor
    • \n
    \n
  • \n
  • Advanced SEO Breadcrumbs\n
      \n
    • Auto Show SEO Breadcrumbs
    • \n
    \n
  • \n
  • Advanced Link Options\n
      \n
    • Nofollow All External Image Links
    • \n
    • Nofollow All External Links
    • \n
    • Open External Links in New Tab/Window
    • \n
    • Redirect Attachments to Parent
    • \n
    • Strip Category Base
    • \n
    \n
  • \n
  • Remove Stopwords from Permalinks
  • \n
  • Ping Search Engines
  • \n
  • Local SEO Optimization\n
      \n
    • Contact Info Shortcode
    • \n
    \n
  • \n
  • Deep Support For WooCommerce SEO
  • \n
  • Compatible for EDD SEO (Easy Digital Downloads SEO)
  • \n
  • Only 30k Lines of Code\n
      \n
    • PSR-4 Coding Standards (wherever possible)
    • \n
    \n
  • \n
  • Optimize Different Archives\n
      \n
    • Optimize Author Archive Pages
    • \n
    • Optimize Date Archive Pages
    • \n
    • Optimize Archive Pages
    • \n
    \n
  • \n
  • .htaccess Editor
  • \n
  • Robots.txt Editor
  • \n
  • Import/Export Settings
  • \n
  • Import/Export Redirections
  • \n
  • Add Content Before the RSS Feed
  • \n
  • Add Content After the RSS Feed
  • \n
  • Detailed Documentation\n
      \n
    • Contextual Help
    • \n
    \n
  • \n
\n

BIG Publications are Raving About Rank Math SEO

\n

Rank Math SEO Reviews

\n\n\n

Rank Math SEO Review – Why I Ditched Yoast For Rank Math SEO

\n

Rank Math SEO on Product Hunt

\n

Rank Math SEO Plugin Review from an SEO Consultant

\n

and many more

\n

Check RANK MATH PRO WHICH MAKES SEO EASIER & FASTER

\n\n

Rank Math SEO FREE VS PRO COMPARISON

\n

UNIQUE FEATURES OF RANK MATH SEO PRO

\n

Google Analytics & Search Console Integration (The only SEO plugin that provides it)
\n✔ Integrated Google Analytics, AdSense & Search Console Data
\n✔ Analyze SEO Performance of Each Post & Page
\n✔ See Top Winning/Losing Posts & Keywords
\n✔ Keep Track of Position History
\n✔ Rank Tracker for Important Keywords

\n

Schema aka Structured Data aka Rich Snippets. The BEST Schema Generator Available Online
\n✔ 20+ Pre-defined Schema types (more than any other plugin) –
\n✔ Import Schema from Other Websites
\n✔ Advanced Schema Builder [Advanced SEOs can use this to create any complex Schema Markup)
\n✔ Schema Templates for Automation
\n✔ Conditional Schema Markup
\n✔ Inbuilt Schema Code Preview and Validation
\n✔ Multiple Location Schema On Any Page (using the Shortcode)

\n

Automation At Its BEST
\n✔ Automated Image SEO
\n✔ Advanced Filtering for Images [https://i.rankmath.com/zAUHHP]
\n✔ Watermark Your images
\n✔ Advanced Post filtering
\n✔ Bulk Actions [index, noindex, redirect, etc.]
\n✔ Quick Edit SEO Details
\n✔ Bulk Import SEO Meta Details Using CSV file
\n✔ Auto Detect Videos and Generate Schema Markup for Them
\n✔ Auto Fetch Thumbnail, Duration of YouTube & Vimeo Videos
\n✔ Automatically Flush Facebook Thumbnails
\n✔ Open External Links in New Tabs
\n✔ Nofollow External Links
\n✔ Noindex Paginated, Archive, Search Result Pages
\n✔ Instant Indexing for Bing [Also Google using our Instant Indexing Plugin]

\n

WooCommerce SEO
\n✔ Automatic Schema for WooCommerce Products
\n✔ Advanced Open Graph Tags for WooCommerce Products
\n✔ Automatic NoIndex Hidden Products
\n✔ Remove WooCommerce Product and Category Base
\n✔ Add Custom Brands to Products
\n✔ Add Global Identifier Like GTIN/MPN – Even to Variations

\n

Workflow Improvements
\n✔ Internal Role Manager
\n✔ Inbuilt Google Trends Insights
\n✔ Site Audit with 29 Unique Tests
\n✔ Import Redirections Using CSV File
\n✔ Categorize Redirections for Grouping
\n✔ One-Click Redirection for 404s
\n✔ Monitor Search Performance of Entire Portfolio
\n✔ Easy and Advanced Mode

\n

Miscellaneous
\n✔ Supports bbPress SEO and BuddyPress SEO
\n✔ Version Control – Rollback or Try Beta Versions

\n

MANY MORE FEATURES
\n✔ PREMIUM 24x7x365 Dedicated Support Managers
\n✔ MOST COMPETITIVE PRICING EVER!

\n

CHEK ALL THE PREMIUM FEATURES AND PRICING HERE

\n

CONNECT WITH THE TEAM AND SEO EXPERTS

\n

JOIN FACEBOOK GROUP COMMUNITY: The purpose of this Facebook group is to have a collective place where the community can help each other, and we can get some feedback to improve Rank Math SEO as well. Joining the group is also a great way to connect with like-minded people and share your SEO experience.

\n

Branding Guideline

\n

Rank Math® SEO is a registered trademark. Please use the following format when mentioning the Rank Math SEO plugin anywhere.
\n* Rank Math SEO [correct]
\n* RankMath [incorrect]
\n* Rankmath [incorrect]
\n* rankmath [incorrect]
\n* rankMath [incorrect]

\n

Getting Started:

\n

1. How to Setup Rank Math SEO: Once you install Rank Math SEO for the first time, you will be greeted with the Setup Wizard, which is discussed in detail here.

\n

2. Facebook Group: In this group, you will find the team of Rank Math SEO plugin fairly active and ready to answer your SEO related queries.

\n

3. User Documentation: Although Rank Math SEO is already easy to set up, we’ve put together tutorials, guides, and some knowledge bases to help you set up and get started with Rank Math SEO.

\n

4. Contribute (Sharing is caring): If you are one of those caring hearts that want to help, go to our Rank Math SEO’s GitHub Repository and see how you can contribute to the SEO community. You can also add a new language via translate.wordpress.org.

\n

5. Fixing Common Errors: Sometimes, avoidable or common issues can get you stuck. We’ve created a common guide where we discuss all the common issues and how to fix them.

\n

6. Support Ticket Forum: Our dedicated forum is where you can get support for any issues that you face with Rank Math SEO. In the forum, we’ll also try to answer some SEO queries. User experience is important to us, and our aim is to answer all the queries on the forum in a timely manner.

\n

7. Frequently Asked Questions: Here, we’ve answered the most commonly asked questions about Rank Math SEO. The questions are related to features, pricing, and others.

\n","download_link":"https://downloads.wordpress.org/plugin/seo-by-rank-math.1.0.73.zip","tags":{"google-search-console":"google search console","redirection":"redirection","schema":"schema","seo":"seo","sitemap":"sitemap"},"donate_link":"","icons":{"1x":"https://ps.w.org/seo-by-rank-math/assets/icon.svg?rev=2348086","2x":"https://ps.w.org/seo-by-rank-math/assets/icon-256x256.png?rev=2348086","svg":"https://ps.w.org/seo-by-rank-math/assets/icon.svg?rev=2348086"},"wporg":true},{"name":"Head, Footer and Post Injections","slug":"header-footer","version":"3.2.2","author":"Stefano Lissa","author_profile":"https://profiles.wordpress.org/satollo","requires":"4.0","tested":"5.7.3","requires_php":"5.6","rating":98,"ratings":{"1":3,"2":2,"3":4,"4":13,"5":624},"num_ratings":646,"support_threads":1,"support_threads_resolved":0,"active_installs":300000,"downloaded":2797325,"last_updated":"2021-03-17 1:26pm GMT","added":"2008-04-07","homepage":"https://www.satollo.net/plugins/header-footer","short_description":"Header and Footer plugin let you to add html code to the head and footer sections of your blog... and more!","description":"

About WordPress SEO and Facebook Open Graph: I was very unpleased by Yoast invitation to
\nremove my plugin, and it’s not the case.
\nRead more here.

\n

Head and Footer Codes

\n

Why you have to install 10 plugins to add Google Analytics, Facebook Pixel, custom
\ntracking code, Google DFP code, Google Webmaster/Alexa/Bing/Tradedoubler verification code and so on…

\n

With Header and Footer plugin you can just copy the code those services give you
\nin a centralized point to manage them all. And theme independent: you can change your theme
\nwithout loosing the code injected!

\n

Injection points and features

\n
    \n
  • in the page section where most if the codes are usually added
  • \n
  • just after the tag as required by some JavaScript SDK (like Facebook)
  • \n
  • in the page footer (just before the tag)
  • \n
  • recognize and execute PHP code to add logic to your injections
  • \n
  • distinct desktop and mobile injections
  • \n
\n

AMP

\n

A new AMP dedicated section compatible with AMP plugin lets you to inject specific codes in
\nAMP pages. Should be ok even with other AMP plugins.

\n

Post Top and Bottom Codes

\n

Do you need to inject a banner over the post content or after it? No problem. With Header and
\nFooter you can:

\n
    \n
  • Add codes on top, bottom and in the middle of posts and pages
  • \n
  • Differentiate between mobile and desktop (you don’t display the same ad format on both, true?)
  • \n
  • Separate post and page configuration
  • \n
  • Native PHP code enabled
  • \n
  • Shortcodes enabled
  • \n
\n

Special Injections

\n
    \n
  • Just after the opening BODY tag
  • \n
  • In the middle of post content (using configurable rules)
  • \n
  • Everywhere on template (using placeholders)
  • \n
\n

bbPress

\n

The specific bbPress injections are going to be removed. Switch to my
\nAds for bbPress, which is more flexible and complete.

\n

Limits

\n

This plugin cannot change the menu or the footer layout, those features must be covered by your theme!

\n

Official page: Header and Footer.

\n

Other plugins by Stefano Lissa:

\n\n

Translation

\n

You can contribute to translate this plugin in your language on WordPress Translate

\n

Privacy and GDPR

\n

This plugin does not collect or process any personal user data.

\n","download_link":"https://downloads.wordpress.org/plugin/header-footer.3.2.2.zip","tags":{"blog":"blog","footer":"footer","header":"header","page":"page","single":"single"},"donate_link":"http://www.satollo.net/donations","icons":{"1x":"https://ps.w.org/header-footer/assets/icon-256x256.png?rev=1064219","2x":"https://ps.w.org/header-footer/assets/icon-256x256.png?rev=1064219"},"wporg":true},{"name":"WP Rocket","slug":"wp-rocket","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://wp-rocket.me/","short_description":"

Powerful caching to speed up your WordPress website in a few clicks. No coding required.

\n","description":"\n\n\n

Powerful caching to speed up your WordPress website in a few clicks. No coding required.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2020/06/WP-Rocket-285x160.png","2x":"https://amp-wp.org/wp-content/uploads/2020/06/WP-Rocket-372x209.png","svg":""},"wporg":false},{"name":"Statify","slug":"statify","version":"1.8.3","author":"pluginkollektiv","author_profile":"https://profiles.wordpress.org/pluginkollektiv","requires":"4.7","tested":"5.8.1","requires_php":"5.2","rating":94,"ratings":{"1":2,"2":0,"3":0,"4":3,"5":33},"num_ratings":38,"support_threads":1,"support_threads_resolved":0,"active_installs":200000,"downloaded":1516187,"last_updated":"2021-07-17 8:46am GMT","added":"2011-03-16","homepage":"https://statify.pluginkollektiv.org/","short_description":"Visitor statistics for WordPress with focus on data protection, transparency and clarity. Perfect as a widget in your WordPress Dashboard.","description":"

Statify provides a straightforward and compact access to the number of site views. It is privacy-friendly as it uses neither cookies nor a third party.

\n

An interactive chart is followed by lists of the most common reference sources and target pages. The period of statistics and length of lists can be set directly in the dashboard widget.

\n

Data Privacy

\n

In direct comparison to statistics services such as Google Analytics, WordPress.com Stats and Matomo (Piwik) Statify doesn’t process and store personal data as e.g. IP addresses – Statify counts site views, not visitors.

\n

Absolute privacy compliance coupled with transparent procedures: A locally in WordPress created database table consists of only four fields (ID, date, source, target) and can be viewed at any time, cleaned up and cleared by the administrator.

\n

Due to this tracking approach, Statify is 100% compliant with GDPR and serves as an lightweight alternative to other tracking services.

\n

Display of the widget

\n

The plugin configuration can be changed directly in the Statify Widget on the dashboard by clicking the Configure link.

\n

The amount of links shown in the Statify Widget can be set as well as the option to only count views from today. Of course, older entries are not deleted when changing this setting.

\n

The statistics for the dashboard widget are cached for four minutes.

\n

Period of data saving

\n

Statify stores the data only for a limited period (default: two weeks), longer intervals can be selected as option in the widget. Data which is older than the selected period is deleted by a daily cron job.

\n

An increase in the database volume can be expected because all statistic values are collected and managed in the local WordPress database (especially if you increase the period of data saving).

\n

JavaScript tracking for caching compatibility

\n

For compatibility with caching plugins like Cachify Statify offers an optional switchable tracking via JavaScript. This function allows reliable count of cached blog pages.

\n

For this to work correctly, the active theme has to call wp_footer(), typically in a file named footer.php.

\n

Skip tracking for spam referrers

\n

The comment blacklist can be enabled to skip tracking for views with a referrer URL listed in comment blacklist, i. e. which considered as spam.

\n

Support

\n

If you’ve problems or think you’ve found a bug (e.g. you’re experiencing unexpected behavior), please post at the support forums.

\n

Contribute

\n
    \n
  • Active development of this plugin is handled on GitHub.
  • \n
  • Pull requests for documented bugs are highly appreciated.
  • \n
  • If you want to help us translate this plugin you can do so on WordPress Translate.
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/statify.1.8.3.zip","tags":{"analytics":"analytics","dashboard":"dashboard","pageviews":"pageviews","privacy":"privacy","statistics":"statistics"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=TD4AMD2D8EMZW","icons":{"1x":"https://ps.w.org/statify/assets/icon-128x128.png?rev=2355063","2x":"https://ps.w.org/statify/assets/icon-256x256.png?rev=2355063"},"wporg":true},{"name":"LIQUID BLOCKS GALLERY 37+ Free Designs","slug":"liquid-blocks","version":"1.1.1","author":"LIQUID DESIGN Ltd.","author_profile":"https://profiles.wordpress.org/lqd","requires":"5.2","tested":"5.8.1","requires_php":false,"rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"num_ratings":1,"support_threads":1,"support_threads_resolved":0,"active_installs":4000,"downloaded":20745,"last_updated":"2021-07-22 6:55am GMT","added":"2019-10-18","homepage":"https://lqd.jp/wp/plugin.html","short_description":"If you’re looking to create block page sections that look great give LIQUID BLOCKS a…","description":"

If you’re looking to create block page sections that look great give LIQUID BLOCKS a try.

\n

In Gutenberg Block Template & Design Gallery, Just select your favorite design. Instantly create page section elements. Like a very simple page builder.

\n

You can manage Block Pattern. (WordPress 5.5+)
\nFully compatible with Gutenberg and themes and AMP.
\nlatest information on LIQUID PRESS.

\n

\n

Design Gallery

\n

Carefully selected 37+ Free Designs.
\n* Headlines
\n* Layouts (Q&A, Ranking, Column, Step, Fluid Shape.)
\n* Price list
\n* CTA
\n* Landing pages
\n* Block Patterns (You can register.)

\n

Toolbar

\n

Add to RichText Toolbar.
\n* Mark
\n* Underline
\n* Big
\n* Small

\n","download_link":"https://downloads.wordpress.org/plugin/liquid-blocks.zip","tags":{"block":"block","block-editor":"block-editor","blocks":"blocks","editor":"editor","gutenberg":"gutenberg"},"donate_link":"https://lqd.jp/wp/plugin.html","icons":{"1x":"https://ps.w.org/liquid-blocks/assets/icon-128x128.png?rev=2175390"},"wporg":true},{"name":"Schema","slug":"schema","version":"1.7.9.2","author":"Hesham","author_profile":"https://profiles.wordpress.org/hishaman","requires":"4.0","tested":"5.7.3","requires_php":"5.4","rating":90,"ratings":{"1":15,"2":6,"3":4,"4":8,"5":163},"num_ratings":196,"support_threads":4,"support_threads_resolved":0,"active_installs":60000,"downloaded":1088364,"last_updated":"2021-05-19 2:51pm GMT","added":"2016-05-11","homepage":"https://schema.press","short_description":"Get the next generation of Schema Structured Data to enhance your WordPress site presentation in…","description":"

Like Schema plugin? Consider leaving a 5 star review.

\n

Super fast, light-weight plugin for adding schema.org structured data markup in recommended JSON-LD format automatically to WordPress sites.

\n

Enhanced Presentation in Search Results By including structured data appropriate to your content, your site can enhance its search results and presentation.

\n

Check out the Plugin Homepage for more info and documentation.

\n

What is Schema markup?

\n

Schema markup is code (semantic vocabulary) that you put on your website to help the search engines return more informative results for users. So, Schema is not just for SEO reasons, it’s also for the benefit of the searcher.

\n

Schema.org Structured Data Demo & Examples

\n\n

Schema Key Features

\n
    \n
  • Easy to use, set it and forget it, with minimal settings.
  • \n
  • [Premium] Support for different schema.org types.
  • \n
  • Enable Schema types at once per post type or post category.
  • \n
  • [Premium] Enable Schema types anywhere you want on your site content.
  • \n
  • [Premium] Customize source data of schema.org properties.
  • \n
  • Valid markup, test it in Google Structured Data Testing Tool.
  • \n
  • Output JSON-LD format, the most recommended by Google.
  • \n
  • Reuse data saved in post meta, which is created by other plugins.
  • \n
  • Extensible, means you can extend its functionality via other plugins, extensions or within your Theme’s functions.php file.
  • \n
\n
\n

Note: some features are Premium. Which means you need Schema Premium to have those features. Get Schema Premium here!

\n
\n

Free vs Premium

\n
\n

See: a Free vs Premium comparison.

\n
\n

Free Plugin Extensions

\n
    \n
  • Schema Review: Extend Schema functionality by adding review and rating Structured Data functionality for Editors and Authors.
  • \n
  • Schema Default Image: Add ability to set a default WordPress Featured image for schema.org markup.
  • \n
\n

Premium Plugin Extensions

\n\n

Supported Google/Schema Markups

\n\n

Supported Schema.org Types

\n\n

Premium Supported Schema.org Types

\n
\n

Schema Premium has additional support for schema.org types, including:

\n
\n\n

Schema.org Markup Examples

\n

View our Live Structured Data Demo examples.

\n

Supported Plugins

\n

Schema plugin integrates and/or play nicely with (not necessarily a full integration):

\n
    \n
  • Yoast SEO
  • \n
  • AMP plugin (Automattic’s Accelerated Mobile Pages)
  • \n
  • Accelerated Mobile Pages – AMP for WP
  • \n
  • WPRichSnippets
  • \n
  • The SEO Framework
  • \n
  • WPBakery Page Builder
  • \n
  • ThirstyAffiliates
  • \n
  • [Premium] WooCommerce: Schema for WooCommerce extension.
  • \n
  • Easy Digital Downloads (EDD)
  • \n
\n

Supported Themes

\n

The plugin should work fine with any well coded WordPress theme, however these themes were tested and works properly with the plugin.

\n
    \n
  • Genesis 2.x
  • \n
  • Thesis 2.x
  • \n
  • Divi
  • \n
\n

Premium support

\n

schema.press team does not always provide active support for the Schema plugin on the WordPress.org forums, as we prioritize our email support. One-on-one email support is available to people who bought Schema Premium only.

\n

Note that the premium Schema Plugin also has several extra features too, including the option to enable more schema.org types, set content location target for markup, and map schema.org properties, so it is well worth your investment!

\n

Developers?

\n

Feel free to fork the project on GitHub and submit your contributions via pull request.

\n","download_link":"https://downloads.wordpress.org/plugin/schema.zip","tags":{"json-ld":"JSON-LD","rich-snippets":"rich snippets","schema":"schema","schema-org":"schema.org","structured-data":"structured data"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=NGVUBT2QXN7YL","icons":{"1x":"https://ps.w.org/schema/assets/icon-128x128.png?rev=1750172","2x":"https://ps.w.org/schema/assets/icon-256x256.png?rev=1750173"},"wporg":true},{"name":"Iframely – rich media embeds for 2000+ publishers","slug":"iframely","version":"0.7.2","author":"Itteco Corp.","author_profile":"https://profiles.wordpress.org/ivanp","requires":"3.5.1","tested":"5.4.7","requires_php":false,"rating":80,"ratings":{"1":2,"2":0,"3":1,"4":0,"5":7},"num_ratings":10,"support_threads":2,"support_threads_resolved":1,"active_installs":3000,"downloaded":97418,"last_updated":"2020-05-22 5:21pm GMT","added":"2013-10-03","homepage":"http://wordpress.org/plugins/iframely/","short_description":"Iframely extends WordPress default rich media embeds and adds support of over 2000 more providers…","description":"

Iframely extends WordPress default embeds and adds over 2000 more providers and cards as URL previews for the rest of the Web. Provides responsive embed codes, works with AMP.

\n

Just like default WordPress embeds, Iframely will detect URLs in your posts and replace it with responsive embed codes. Supports all usual suspects such as YouTube, Vimeo, Instagram, Facebook, Giphy, GfyCat, Imgur, Google +, GitHub Gists, Storify, SlideShare, Streamable, Vidme, Reddit, Dailymotion, Spotify, Tableau, Prezi, Apester, QZZR, Tidal, MLB. Well over two thousand of providers and keeps growing.

\n

Test your URL here to check if we support it.

\n

Iframely also generates and hosts summary cards as URL previews for general articles. It includes your own site, and Iframely can replace the default embed cards that your publish via WordPress for other sites to use.

\n

API key and paid/free

\n

Powered by Iframely cloud service and requires an account with us. Grab an API key for extended trial at iframely.com, or test the plugin out without an API key.

\n

Before you push the plugin to production, a service subscription is required to avoid any possible disruptions.

\n

We maintain an overwhelming number of integrations and widgets in the background for you, and make sure your sites remains fast and keeps your users happy. This requires a substantial effort on our part, and we won’t be able to provide it without requiring a service subscription.

\n

How to use:

\n

The plugin works the same way the standard oEmbed is supported by WordPress: URL on a separate line.

\n

For example,

\n
Check out this cool video:\n\nhttp://your.url/here\n\nThat was a cool video.\n
\n

Iframely also has its own shortcode [iframely]http://your.url/here[/iframely].

\n

Heads-up:

\n

Iframely does not simply wrap URLs with <iframe src=...> code. That’s not what Iframely is for. We can only match URLs to the known embed codes if publisher offers them for manual copy-paste, or generate a summary card for URL preview if a publisher provides at least a thumnnail image.

\n

To keep default embed providers

\n

By default, Iframely will inject itself to be the first embeds provider in the list, thus intercepting all URLs. It means that the default providers that are later in the list won’t get called and will thus be disabled.

\n

It means Iframely replaces default YouTube, Vimeo, Twitter, other oEmbed plugins that you might have(like JetPack), etc.

\n

Although we should support the same providers and output the same code, just make it responsive and add extra features, you can still disable such behavior and tell Iframely to only process links that otherwise don’t have an embed provider.

\n

Just choose this option in your settings. It will essentially put Iframely to be the last in the list, be “a catcher”, rather then “an interceptor”.

\n

URL editor options

\n

You can fine-tune many aspects of Iframely on your dashboard at iframely.com. This would include some most common settings for popular rich media publishers. Our support team can also fine-tune many other publishers, just for you.

\n

However, you might need a per-post editor for the widgets options. And, Iframely does provide this too. It’s done via URL options editor, and available for higher-tier plans, or during your initial trial period. Make sure to check it out.

\n

AMP support

\n

Yes, Iframely works nicely with AMP WP plugin. It catches all missing embeds and follow your Iframely settings. But you can also opt to have Iframely for all embeds, including default AMP embeds too. For example, Facebook video will be indeed a nice video without user’s text message.

\n","download_link":"https://downloads.wordpress.org/plugin/iframely.zip","tags":{"embed":"embed","embed-code":"embed code","iframely":"iframely","oembed":"oembed","responsive":"responsive"},"donate_link":"","icons":{"default":"https://s.w.org/plugins/geopattern-icon/iframely.svg"},"wporg":true},{"name":"Pym.js Embeds","slug":"pym-shortcode","version":"1.3.2.4","author":"INN Labs","author_profile":"https://profiles.wordpress.org/automattic","requires":"3.0.1","tested":"5.4.7","requires_php":"5.3","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":1,"support_threads_resolved":0,"active_installs":100,"downloaded":2331,"last_updated":"2020-03-26 6:09pm GMT","added":"2016-06-17","homepage":"https://github.com/INN/pym-shortcode","short_description":"A WordPress block and shortcode for embedding iframes that are responsive horizontally and vertically, using…","description":"

Pym.js Embeds provides shortcode and Gutenberg block wrappers for embedding responsive iframes using Pym.js, developed by the NPR Visuals Team. Embedded content resizes vertically to match its container’s width.

\n

AMP compatibility is provided by the official AMP plugin.

\n

Pym.js Resources from NPR

\n

You may also want to look at NPR’s Pym.js resources:

\n\n","download_link":"https://downloads.wordpress.org/plugin/pym-shortcode.1.3.2.4.zip","tags":{"embeds":"Embeds","iframe":"iframe","javascript":"javascript","responsive":"responsive","shortcode":"shortcode"},"donate_link":"https://inn.org/donate","icons":{"1x":"https://ps.w.org/pym-shortcode/assets/icon.svg?rev=1944461","svg":"https://ps.w.org/pym-shortcode/assets/icon.svg?rev=1944461"},"wporg":true},{"name":"PWA","slug":"pwa","version":"0.6.0","author":"PWA Plugin Contributors","author_profile":"https://profiles.wordpress.org/westonruter","requires":"5.5","tested":"5.8.1","requires_php":"5.6","rating":86,"ratings":{"1":3,"2":0,"3":0,"4":0,"5":13},"num_ratings":16,"support_threads":7,"support_threads_resolved":4,"active_installs":40000,"downloaded":298394,"last_updated":"2021-09-21 7:17pm GMT","added":"2018-07-12","homepage":"https://github.com/GoogleChromeLabs/pwa-wp","short_description":"WordPress feature plugin to bring Progressive Web App (PWA) capabilities to Core","description":"

\nProgressive Web Apps are user experiences that have the reach of the web, and are:

\n
    \n
  • Reliable – Load instantly and never show the downasaur, even in uncertain network conditions.
  • \n
  • Fast – Respond quickly to user interactions with silky smooth animations and no janky scrolling.
  • \n
  • Engaging – Feel like a natural app on the device, with an immersive user experience.
  • \n
\n

This new level of quality allows Progressive Web Apps to earn a place on the user’s home screen.\n

\n

Continue reading more about Progressive Web Apps (PWA) from Google.

\n

In general a PWA depends on the following technologies to be available:

\n\n

This plugin serves as a place to implement support for these in WordPress with the intention of being proposed for core merge, piece by piece.

\n

This feature plugin is not intended to obsolete the other plugins and themes which turn WordPress sites into PWAs. Rather, this plugin is intended to provide the PWA building blocks and coordination mechanism for these themes and plugins to not reinvent the wheel and also to not conflict with each other. For example, a theme that implements the app shell model should be able to extend the core service worker while a plugin that provides push notifications should be able to do the same. Themes and plugins no longer should have to each create a service worker on their own, something which is inherently problematic because only one service worker can be active at a time: only one service worker can win. If you are developing a plugin or theme that includes a service worker, consider relying on this PWA plugin, or at least only use the built-in implementation as a fallback for when the PWA plugin is not available.

\n

In versions prior to 0.6, no caching strategies were added by default. The only service worker behavior was to serve an offline template when the client’s connection is down or the site is down, and also to serve an error page when the server returns with 500 Internal Server Error. As of 0.6, there is a new “Offline browsing” toggle on the Reading Settings screen in the admin. It is disabled by default, but when enabled a network-first caching strategy is registered for navigations so that the offline page won’t be shown when accessing previously-accessed pages. The network-first strategy is also used for assets from themes, plugins, and WordPress core. In addition, uploaded images get served with a stale-while-revalidate strategy. For all the details on these changes, see the pull request.

\n

Documentation for the plugin can be found on the GitHub project Wiki.

\n

Development of this plugin is done on GitHub. Pull requests welcome. Please see issues reported there before going to the plugin forum.

\n","download_link":"https://downloads.wordpress.org/plugin/pwa.0.6.0.zip","tags":{"https":"https","progressive-web-apps":"progressive web apps","pwa":"pwa","service-workers":"service-workers.","web-app-manifest":"web app manifest"},"donate_link":"","icons":{"1x":"https://ps.w.org/pwa/assets/icon.svg?rev=1908485","2x":"https://ps.w.org/pwa/assets/icon-256x256.png?rev=1908485","svg":"https://ps.w.org/pwa/assets/icon.svg?rev=1908485"},"wporg":true},{"name":"MC4WP: Mailchimp for WordPress","slug":"mailchimp-for-wp","version":"4.8.6","author":"ibericode","author_profile":"https://profiles.wordpress.org/dvankooten","requires":"4.6","tested":"5.8.1","requires_php":"5.3","rating":96,"ratings":{"1":36,"2":10,"3":16,"4":35,"5":1283},"num_ratings":1380,"support_threads":44,"support_threads_resolved":41,"active_installs":2000000,"downloaded":35950738,"last_updated":"2021-08-04 7:14am GMT","added":"2013-06-19","homepage":"https://www.mc4wp.com/#utm_source=wp-plugin&utm_medium=mailchimp-for-wp&utm_campaign=plugins-page","short_description":"Mailchimp for WordPress, the #1 unofficial Mailchimp plugin.","description":"

Mailchimp for WordPress

\n

Allowing your visitors to subscribe to your newsletter should be easy. With this plugin, it finally is.

\n

This plugin helps you grow your Mailchimp lists and write better newsletters through various methods. You can create good looking opt-in forms or integrate with any existing form on your site, like your comment, contact or checkout form.

\n\n

Some (but not all) features

\n
    \n
  • \n

    Connect with your Mailchimp account in seconds.

    \n
  • \n
  • \n

    Sign-up forms which are good looking, user-friendly and mobile optimized. You have complete control over the form fields and can send anything you like to Mailchimp.

    \n
  • \n
  • \n

    Seamless integration with the following plugins:

    \n
      \n
    • Default WordPress Comment Form
    • \n
    • Default WordPress Registration Form
    • \n
    • Contact Form 7
    • \n
    • WooCommerce
    • \n
    • Gravity Forms
    • \n
    • Ninja Forms 3
    • \n
    • WPForms
    • \n
    • BuddyPress
    • \n
    • MemberPress
    • \n
    • Events Manager
    • \n
    • Easy Digital Downloads
    • \n
    • Give
    • \n
    • UltimateMember
    • \n
    \n
  • \n
  • \n

    A multitude of available add-on plugins and integrations:

    \n\n
  • \n
  • \n

    Well documented. Our knowledge base is updated daily.

    \n
  • \n
  • \n

    Developer friendly. For inspiration, check out our repository of example code snippets.

    \n
  • \n
\n
\n

Become a Premium user

\n

Mailchimp for WordPress has a Premium add-on which comes with several additional benefits.

\n
    \n
  • Multiple forms
  • \n
  • Advanced e-commerce integration for WooCommerce
  • \n
  • Email notifications
  • \n
  • An easy way to style your forms
  • \n
  • Detailed reports & statistics
  • \n
\n

View more Premium features

\n
\n

What is Mailchimp?

\n

Mailchimp is a newsletter service that allows you to send out email campaigns to a list of email subscribers. It is free for lists up to 2000 subscribers, which is why it is the newsletter-service of choice for thousands of businesses.

\n

This plugin allows you to tightly integrate your WordPress site with your Mailchimp account.

\n

If you are not yet using Mailchimp, creating an account is 100% free and only takes you about 30 seconds.

\n

Support

\n

Use the WordPress.org plugin forums for community support where we try to help all of our users. If you found a bug, please create an issue on Github where we can act upon them more efficiently.

\n

If you’re a premium user, please use the email address inside the plugin for support as that will guarantee a faster response time.

\n

Please take a look at the Mailchimp for WordPress knowledge base as well.

\n

Add-on plugins

\n

There are several add-on plugins available, which help you get even more out of your site.

\n

Translations

\n

You can help translate Mailchimp for WordPress into your language using your WordPress.org account.

\n

Development

\n

This plugin is being developed on GitHub. If you want to collaborate, please look at ibericode/mailchimp-for-wordpress.

\n

Customizing the plugin

\n

The plugin provides various filter & action hooks that allow you to modify or extend default behavior. We’re also maintaining a collection of sample code snippets.

\n","download_link":"https://downloads.wordpress.org/plugin/mailchimp-for-wp.4.8.6.zip","tags":{"email":"email","mailchimp":"mailchimp","marketing":"marketing","mc4wp":"mc4wp","newsletter":"newsletter"},"donate_link":"https://www.mc4wp.com/#utm_source=wp-plugin-repo&utm_medium=mailchimp-for-wp&utm_campaign=donate-link","icons":{"1x":"https://ps.w.org/mailchimp-for-wp/assets/icon-128x128.png?rev=1224577","2x":"https://ps.w.org/mailchimp-for-wp/assets/icon-256x256.png?rev=1224577"},"wporg":true},{"name":"Site Kit by Google","slug":"google-site-kit","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://sitekit.withgoogle.com/","short_description":"

Site Kit is the official WordPress plugin from Google for insights about how people find and use your site. Site Kit is the one-stop solution to deploy, manage, and get insights from critical Google tools to make the site successful on the web. It provides authoritative, up-to-date insights from multiple Google products directly on the

\n

Read More

\n","description":"\n\n\n

Site Kit is the official WordPress plugin from Google for insights about how people find and use your site. Site Kit is the one-stop solution to deploy, manage, and get insights from critical Google tools to make the site successful on the web. It provides authoritative, up-to-date insights from multiple Google products directly on the WordPress dashboard for easy access, all for free.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2019/12/site-kit-by-google-logo-285x160.png","2x":"https://amp-wp.org/wp-content/uploads/2019/12/site-kit-by-google-logo-372x209.png","svg":""},"wporg":false},{"name":"Newspack Blocks","slug":"newspack-blocks","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://github.com/Automattic/newspack-blocks","short_description":"

A collection of useful and easy to use Gutenberg based blocks, developed primarily for the Newspack project.

\n","description":"\n\n\n

A collection of useful and easy to use Gutenberg based blocks, developed primarily for the Newspack project.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2019/11/newspack_blocks-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2019/11/newspack_blocks-372x209.jpg","svg":""},"wporg":false},{"name":"Advanced Ads – Ad Manager & AdSense","slug":"advanced-ads","version":"1.29.0","author":"Thomas Maier, Advanced Ads GmbH","author_profile":"https://profiles.wordpress.org/webzunft","requires":"4.9","tested":"5.8.1","requires_php":"5.6","rating":98,"ratings":{"1":17,"2":1,"3":9,"4":21,"5":1190},"num_ratings":1238,"support_threads":67,"support_threads_resolved":65,"active_installs":100000,"downloaded":5233483,"last_updated":"2021-10-05 8:38am GMT","added":"2014-06-23","homepage":"https://wpadvancedads.com","short_description":"Manage and optimize all ad types. Support for Google AdSense Auto ads, Amazon, image banners, HTML, page builder, ad widget, ad rotations, ads.txt","description":"

Are you looking for a simple ad manager plugin? These are the top arguments to use Advanced Ads:

\n
    \n
  • approved in publishing and ad optimization since 2009
  • \n
  • works with all ad types and networks, including Google AdSense, Google Ad Manager (formerly Google DoubleClick for Publishers, DFP), Amazon ads, or media.net ads
  • \n
  • most features to test and optimize ads
  • \n
  • unlimited ad units
  • \n
  • ads.txt support
  • \n
  • dedicated ad block for the block editor
  • \n
  • Google AdSense Partner, who implements all technical changes early and in 100% compliance with the Google AdSense policies
  • \n
  • the only advertising solution with Ad Health integration and Google AdSense violation checks
  • \n
  • best rated free support
  • \n
\n

This is what our users are saying about Advanced Ads:

\n
\n

We use this plugin to deliver rotating ads on a community news site, and it’s great. Both feature-rich and reliable, your imagination is the limit when it comes to the product you want to create for your users. We’ve delivered over a million ad impressions since we launched less than a year ago, using a combination of sidebar, top, sticky and in-content placements — both HTML5 and images. Advanced Ads makes it easy for our small team to deliver a good experience to our users and our advertisers.
\n mytown304 on wp.org

\n
\n

Would you like to know if there is a certain feature, what the optimized setup would be, or how to implement your client’s demands? Just open a thread in the forum!

\n

Advanced Ads allowed us to grow from 0 to 100 MM monthly ad impressions. Benefit from our experience as a publisher and monetize your website today!

\n

Full Feature List.

\n

ad management

\n
    \n
  • create and display unlimited ad units
  • \n
  • rotate ads
  • \n
  • schedule ads and set start time and expiration date
  • \n
  • target ads by content and user groups
  • \n
  • inject ads into posts and pages automatically without coding
  • \n
\n

ad types

\n

choose between different ad types that enable you to:

\n
    \n
  • insert ads and banners from all ad and affiliate networks (e.g., Google AdSense, Amazon, BuySellAds, Google Ad Manager (formerly Google DoubleClick for Publishers, DFP), Ezoic, media.net, Booking.com, Tradedoubler, Awin, Getyourguide, The Moneytizer, Infolinks…)
  • \n
  • dedicated support for all types of Google AdSense ads, including text and display ads, native ads (In-article, In-feed, matched content), Auto ads, and Auto ads for AMP
  • \n
  • display images and image banners
  • \n
  • create content-rich ads with the WordPress TinyMCE editor
  • \n
  • insert contextual Amazon Native Shopping Ads
  • \n
  • inject HTML, CSS, Javascript or PHP code
  • \n
  • use shortcodes within ads (to also deliver advertisements from another ad plugin like Ad Inserter, AdRotate, Quick AdSense, WP Bannerize, or the Google AdSense Plugin WP QUADS)
  • \n
\n

display ads for WP

\n
    \n
  • auto-inject ads via placements
  • \n
  • use functions to display ads in template files
  • \n
  • use shortcodes to place ads manually in post content
  • \n
  • show ads in the sidebar and in widgets
  • \n
  • disable all ads on specific pages
  • \n
  • display multiple ads (ad blocks)
  • \n
  • display a customizable ad label, e.g., “Advertisements” above each banner ad
  • \n
\n

display conditions

\n

show ads based on conditions like:

\n
    \n
  • individual posts, pages, and other post types
  • \n
  • posts by category, tags, taxonomies, author, and age
  • \n
  • archive pages by category, tags, taxonomies
  • \n
  • special page types like 404, attachment and front page
  • \n
  • hide ads on secondary queries (e.g., posts in sidebars)
  • \n
  • display or hide banners within the post feed
  • \n
  • hide all ads from specific page types, e.g., 404 pages, feed
  • \n
  • hide ads from bots and web crawlers
  • \n
\n

visitor conditions

\n

serve ads by conditions based on the visitor. List of all visitor conditions

\n
    \n
  • display or hide a banner by device: mobile and tablet or desktop
  • \n
  • display or hide a banner by role and for logged-in visitors
  • \n
  • advanced visitor conditions: previously visited URL (referrer), user capability, browser language, browser and device, URL parameters included in Pro
  • \n
  • display ads by geolocation with the Geo Targeting add-on
  • \n
  • display ads by browser width with the Responsive add-on
  • \n
\n
\n

Fantastic plugin and outstanding support
\n I tried at least three other ad plugins for WordPress and ‘Advanced Ads’ is by and far the best one. Last but not least in the support. The first port of call are a number of excellent tutorials. And finally the hands on support. I don’t quite know how he does it but the speed and depth of responses are absolutely amazing.
\n djsawyer on wp.org

\n
\n

ad injection | placements

\n

Placements to insert ads in pre-defined positions in your theme and content. List of all placements

\n
    \n
  • ads after any given paragraph, headline, image, or other HTML element
  • \n
  • ads at the top or bottom of the post content
  • \n
  • ads before closing </head> tag
  • \n
  • ads in the footer
  • \n
  • create split tests and A/B testing
  • \n
  • many more ad positions with add-ons
  • \n
  • automatic insertion of any kind of code into header or footer, not only advertising
  • \n
\n

mobile devices

\n
    \n
  • display ads on mobile and tablets or desktop only
  • \n
  • display responsive image ads
  • \n
  • ads for specific browser sizes only using Responsive Ads
  • \n
  • inserting ads on AMP pages with Responsive Ads
  • \n
\n

Google AdSense

\n

Amazing features of the most powerful and easy Google AdSense plugin.

\n
    \n
  • unlimited Google AdSense ads banners
  • \n
  • pull ad units directly from your Google AdSense account
  • \n
  • show AdSense revenue in WP Admin
  • \n
  • change settings of your Google AdSense ads directly from your WordPress backend
  • \n
  • supports all Google AdSense ad types, including Google AdSense display ads, native ads like In-feed ads, In-article ads, matched content ads, Google AdSense Auto ads, and Google AdSense Auto ads for AMP
  • \n
  • change type and sizes of AdSense ads without going into your Google AdSense account
  • \n
  • hide Google AdSense advertisements on 404 pages by default (to comply with Google AdSense terms)
  • \n
  • insert Google AdSense code for verification and AdSense Auto Ads
  • \n
  • enable AdSense Auto ads on AMP
  • \n
  • easy Ad Health integration and Google AdSense violation checks
  • \n
  • option to remove the Google AdSense background color
  • \n
  • place Google AdSense In-feed ads using the also free In-feed add-on
  • \n
  • assistant for exact sizes of responsive Google AdSense ads with the Responsive add-on
  • \n
  • convert Google AdSense ads into AMP ads automatically with the Responsive add-on
  • \n
  • ads.txt generated with the correct AdSense information automatically
  • \n
  • works along with Google Site Kit or can replace it if you want to control your ad placements
  • \n
\n

\n

\n

Like j4ckson185, there are thousands of happy AdSense users:

\n
\n

Your app is awesome, congratulations! Google Adsense suggests using your app on its official website, it’s incredible!

\n
\n

ads.txt

\n
    \n
  • generates an ads.txt with custom content
  • \n
  • adds the content for AdSense to the ads.txt automatically
  • \n
\n

\n

\n

ad blocker

\n
    \n
  • basic features to prevent ads from being removed by AdBlock and other ad blockers
  • \n
  • prevent ad blockers from breaking sites where plugin scripts are running
  • \n
  • ad blocking detection: show alternative content to ad block users with Pro and improve the monetization of your website
  • \n
\n

Learn more on the plugin homepage.

\n

Thank you for motivating us with your positive review.

\n

Localizations: Arabic, Chinese, Czech, Danish, Dutch, English, French, German, Hungarian, Italian, Japanese, Norwegian, Polish, Portuguese, Russian, Slovak, Spanish, Turkish, Vietnamese

\n
\n

Add-Ons

\n
    \n
  • all add-ons include priority email support
  • \n
  • Advanced Ads Pro – powerful tools for ad optimizations: cache-busting, more placements, lazy loading, ad blocker module, click fraud protection, and many more
  • \n
  • Tracking – track ad impressions and ad clicks with local methods or Google Analytics
  • \n
  • Responsive Ads – target ads to specific browser sizes and create ads for AMP
  • \n
  • Google Ad Manager Integration – a quick and error-free way to load ad units from your Google Ad Manager (formerly Google DoubleClick for Publishers, DFP) account without touching any ad codes
  • \n
  • Geo Targeting – display ads based on the geo location of the visitor
  • \n
  • Sticky Ads – increase click rates with fixed, sticky, and anchor ads
  • \n
  • Fixed Widget for WordPress – turn sidebar widgets into performant fixed sticky ads
  • \n
  • PopUp and Layer Ads – display ads and other content in layers, popups, and interstitials
  • \n
  • Selling Ads – allows you to sell ads on your website fully automated, including payments and advertiser profiles
  • \n
  • Ad Slider – create a simple slider from your ads
  • \n
\n
\n

If you have problems with Advanced Ads, please reach out to our support or open a new topic in our forums on wordpress.org
\n.

\n

Integrations

\n

Advanced Ads integrates with plenty of other plugins:

\n\n","download_link":"https://downloads.wordpress.org/plugin/advanced-ads.1.29.0.zip","tags":{"ad-manager":"ad manager","ad-rotation":"ad rotation","ads":"ads","adsense":"adsense","banner":"banner"},"donate_link":"","icons":{"1x":"https://ps.w.org/advanced-ads/assets/icon-128x128.gif?rev=2293174","2x":"https://ps.w.org/advanced-ads/assets/icon-256x256.gif?rev=2293174"},"wporg":true},{"name":"Syntax-highlighting Code Block (with Server-side Rendering)","slug":"syntax-highlighting-code-block","version":"1.3.1","author":"Weston Ruter","author_profile":"https://profiles.wordpress.org/westonruter","requires":"5.5","tested":"5.8.1","requires_php":"5.6","rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":18},"num_ratings":18,"support_threads":2,"support_threads_resolved":1,"active_installs":1000,"downloaded":12306,"last_updated":"2021-09-21 7:11pm GMT","added":"2019-07-30","homepage":"https://github.com/westonruter/syntax-highlighting-code-block","short_description":"Extending the Code block with syntax highlighting rendered on the server, thus being AMP-compatible and…","description":"

This plugin extends the Code block in WordPress core to add syntax highlighting which is rendered on the server. Pre-existing Code blocks on a site are automatically extended to include syntax highlighting. Doing server-side syntax highlighting eliminates the need to enqueue any JavaScript on the frontend (e.g. Highlight.js or Prism.js) and this ensures there is no flash of unhighlighted code (FOUC?). Reducing script on the frontend improves frontend performance and it also allows for the syntax highlighted code to appear properly in AMP pages as rendered by the official AMP plugin (see also ampproject/amp-wp#972) or when JavaScript is turned off in the browser.

\n

In addition to not adding any JavaScript to the frontend, the stylesheets needed for styling the Code block will only be added to the page if there is a Code block present. The stylesheets are added inline when the Code block is rendered, ensuring that they do not block rendering of any content higher in the page. If stylesheets fail to load for any reason, the block simply renders without styling, with one key exception: highlighted lines are wrapped in mark elements so they’ll get highlighted regardless, including in RSS Feeds and posts syndicated in email (as long as the mark element is supported in the client).

\n

This extended Code block uses language auto-detection to add syntax highlighting, but you can override the language in the block’s settings sidebar. (There is currently no syntax highlighting of the Code block in the editor.) The plugin supports all programming languages that highlight.php supports (being a port of highlight.js). The Code block also is extended to support specifying the aforementioned highlighted lines. There is also a checkbox for whether to show line numbers on the frontend (with the numbers being non-selectable). Lastly, given inconsistencies across themes as to whether lines in a Code block should be wrapped, this plugin adds styling to force them to no-wrap by default, with a checkbox to opt-in to wrapping when desired.

\n

For advanced usage, please see the plugin wiki.

\n

This plugin is developed on GitHub. See list of current issues with the plugin. Please feel free to file any additional issues or requests that you may come across. Pull requests are welcome.

\n

Credits

\n

This is a fork of Code Syntax Block by Marcus Kazmierczak (mkaz), which is also available on WordPress.org. Copyright (c) 2018 Marcus Kazmierczak. Licensed under GPL 2.0 or later.

\n

highlight.php is released under the BSD 3-Clause License. Copyright © 2006-2013, Ivan Sagalaev (maniac@softwaremaniacs.org), highlight.js (original author). Copyright © 2013, Geert Bergman (geert@scrivo.nl), highlight.php

\n","download_link":"https://downloads.wordpress.org/plugin/syntax-highlighting-code-block.1.3.1.zip","tags":{"block":"block","code":"code","code-highlighting":"code highlighting","code-syntax":"code syntax","syntax-highlight":"syntax highlight"},"donate_link":"","icons":{"1x":"https://ps.w.org/syntax-highlighting-code-block/assets/icon.svg?rev=2131108","2x":"https://ps.w.org/syntax-highlighting-code-block/assets/icon-256x256.png?rev=2131108","svg":"https://ps.w.org/syntax-highlighting-code-block/assets/icon.svg?rev=2131108"},"wporg":true},{"name":"Contact Form by WPForms – Drag & Drop Form Builder for WordPress","slug":"wpforms-lite","version":"1.6.9","author":"WPForms","author_profile":"https://profiles.wordpress.org/jaredatch","requires":"4.9","tested":"5.8.1","requires_php":"5.5","rating":98,"ratings":{"1":214,"2":47,"3":56,"4":224,"5":9744},"num_ratings":10285,"support_threads":91,"support_threads_resolved":80,"active_installs":5000000,"downloaded":82704759,"last_updated":"2021-08-26 11:06am GMT","added":"2016-03-14","homepage":"https://wpforms.com","short_description":"The best WordPress contact form plugin. Drag & Drop online form builder that helps you create beautiful contact forms with just a few clicks.","description":"

WordPress Contact Form Builder Plugin

\n

We believe that you shouldn’t have to hire a developer to create a WordPress contact form. That’s why we built WPForms, a drag & drop WordPress form builder that’s EASY and POWERFUL.

\n

WPForms allows you to create beautiful contact forms, feedback form, subscription forms, payment forms, and other types of forms for your site in minutes, not hours!

\n

At WPForms, user experience is our #1 priority. Our pre-built form templates and workflows make WPForms the most beginner friendly contact form plugin in the market.

\n

The WPForms Challenge guides you through creating your first form in under 5 minutes. We walk you through using the form builder all the way to adding a form to a page on your site! WPForms includes integrations for popular page builders like the WordPress Block Editor (Gutenberg), Classic Editor, Elementor, and Divi making the whole process seamless.

\n

WPForms is a 100% mobile responsive contact form solution, so your contact forms will always look great on all devices (mobile, tablet, laptop, and desktop).

\n

WPForms’ contact forms are also highly optimized for web and server performance because we understand the importance of speed when it comes to SEO, marketing, and conversion. We can honestly say that WPForms is one of the fastest WordPress contact form builder plugins in the world.

\n
\n

WPForms Pro
\n This plugin is the lite version of the WPForms Pro plugin that comes with all the contact form features you will ever need including email subscription forms, multi-page contact forms, file uploads, conditional logic, payment integrations, form templates, and tons more. Click here to purchase the best premium WordPress contact form plugin now!

\n
\n

We took the pain out of creating contact forms and made it easy. Here’s why smart business owners, designers, and developers love WPForms, and you will too!

\n

\n

Drag & Drop Contact Form Builder

\n

We were tired of the bloated and buggy contact form builder plugins. That’s why we built WPForms to adapt to your workflow and allow you to create custom contact forms in minutes. By using our easy to use drag and drop online form builder, you can easily add custom form fields, rearrange them, and basically create a complete contact form in 5 minutes or less.

\n

But don’t just take our word. See what one of the WordPress experts are saying:

\n
\n

WPForms is by far the easiest form plugin to use. My clients love WPForms and it’s one of the few plugins they can use without any training. As a developer I appreciate how fast, modern, clean and extensible it is.
\n Bill Erickson – Expert WordPress Consultant

\n
\n

Pre-built Form Templates

\n

Building contact forms in WordPress can be time consuming. Why?

\n

Because every other WordPress contact form builder plugin requires you to build your contact form from scratch. The truth is it’s often not necessary to create a contact form completely from scratch unless you really want to.

\n

Whether you’re looking to create a simple contact form, marketing form, request a quote form, donation form, payment order form, registration form, or a subscription form, we have a form template for you inside our contact form builder.

\n

WPForms comes with pre-built form templates to help you save time. You can add, remove, or re-arrange fields as necessary.

\n

See 100+ Pre-Made WPForms Form Template Demo

\n

Mobile Ready, SEO Friendly and Optimized for Speed

\n

WPForms’ contact forms are 100% responsive and mobile-friendly by default. We also optimized every query on the front-end and the back-end to ensure maximum speed – Yes, WPForms is one of the fastest WordPress contact form plugin.

\n

You can embed your contact form on any page with optimized title and description. With the speed and proper formatting, WPForms is also one of the most SEO friendly contact form plugin.

\n

All the Fields & Features that You Need to Succeed

\n

From star ratings to file uploads to multi-page contact forms with progress bar, we have all the fields you need.

\n

You can easily integrate your contact forms with an email marketing service or collect payments for bookings and orders. WPForms allows you to do it all.

\n

The best part is, you can do it all without hiring a developer.

\n

See what one business owner has to say about WPForms’ contact form:

\n
\n

As a business owner, time is my most valuable asset. WPForms allow me to create smart contact forms with just a few clicks. With their pre-built form templates and the drag & drop builder, I can create a new form that works in less than 2 minutes without writing a single line of code. Well worth the investment.
\n David Henzel – Co-founder of MaxCDN

\n
\n

Surveys & Polls

\n

Along with contact form, you can also use WPForms to create surveys and polls.

\n

Our WordPress Survey plugin addon comes with smart survey fields including likert scale, star ratings, multiple choice, Net Promoter Score (NPS), and more, so you can create custom survey forms like Survey Monkey (without the high costs).

\n

WPForms offer the best-in class survey reporting. You can use our interactive reports to customize the graphs, export them for your presentations, and even display the aggregate results to your users.

\n

The best part about WPForms survey reports is that it can retroactively work on any old contact form or feedback survey contact form created with WPForms.

\n

Thousands of businesses love WPForms surveys for creating employee feedback form, customer feedback form, online petition form, and more.

\n

You can also use the surveys & polls addon to easily create a poll on your site. To save you time when creating a user poll, we have added a built-in poll forms template. Our poll feature offers real-time reports, so you can share poll results with the user immediately after they submit their vote.

\n

Just like the contact form, you can embed your surveys and polls inside any post, page, or widget area in WordPress.

\n

Membership and Default WordPress Forms

\n

Aside from building simple contact forms which every WordPress site needs, WPForms also helps you create better default WordPress forms.

\n

For example, you can use WPForms to create custom WordPress login forms and custom WordPress user registration forms which are great for membership sites.

\n

For membership sites, you can also use WPForms to create a password-protected contact form or even a members only contact form which is restricited to logged-in users only.

\n

Even if you’re not using a WordPress membership plugin, you can use WPForms to create membership registration forms, online RSVP forms, and other address book contact forms.

\n

Bloggers and publishers can use our WordPress post submission forms to accept guest posts, testimonials contact form to collect testiomnials, and partnership agreement forms to grow their business.

\n

Payment Form, Donation Form, Booking Form, and More

\n

While WPForms started out as a contact form plugin, it has evolved into a powerful custom forms solution that you can use to create a payment form, donation form, registration form, online booking form, mobile form, and basically any type of custom form you need.

\n

WPForms integrates with both PayPal and Stripe, so you can easily create a credit card payment form to accept payments on your website. If you’re using SSL, then you can use our Stripe Payment form to accept credit card payments. Alternatively you can use our PayPal payment form to make a donation form and accept payments online.

\n

Aside from simple order forms, business owners also use WPForms to create custom product purchase forms, t-shirt order forms, online booking forms, and more.

\n

We understand that sometimes you may need to create a contact form that require a signature. WPForms comes with a signature field to collect user signature on your WordPress forms or even create custom signature forms.

\n

You can do all of this while still using the same easy-to-use contact form builder that’s loved by over 4 million users.

\n
\n

I am so impressed with this plugin. I decided to give it a shot over some of the other form plugins, and I am so glad I did. It works well, is so easy to use and customize. The support is amazing on top of it all. I got the pro version because I was so pleased. Highly recommend.
\n Micky73 – WordPress user

\n
\n

Forms that are Optimized for Conversion and Results

\n

With our Form Pages addon, you can create distraction-free custom form landing pages like Google Forms and Wufoo right inside WordPress, so you can increase conversions without the high costs (See Form Pages Demo).

\n

To improve form completion rate, we created Conversational Forms® which helps you make your generic feedback form and other custom contact forms feel more human by adding an interactive form layout. Our conversational forms are similar to Typeform without the high subscription costs (See Conversational Forms Demo).

\n

WPForms also has other conversion optimization features such as our smart form logic that lets you create dynamic contact forms where fields change based on user’s answer, multi-page contact forms with progress bar, and other advanced contact forms.

\n

WPForms form analytics integration with MonsterInsights allow you to easily track your lead capture forms, newsletter signup forms, request a quote contact form, and other important forms on your site.

\n

Easy to Customize and Extend

\n

You can easily customize your contact forms with our section dividers, HTML blocks, and custom CSS.

\n

If you’re using Elementor or Divi page builders our native integrations let you easily customize the style of your forms.

\n

We also knew that our developer friends may want to extend simple contact forms further. That’s why WPForms come with tons of hooks and filters to create custom functionality.

\n

Since contact forms are essential for marketing, WPForms is a must have plugin for every website!

\n

Full WPForms Feature List

\n
    \n
  • Online Form Builder – Our powerful drag & drop contact form builder allows you to easily create WordPress contact forms and other online forms in just a few minutes without writing any code.
  • \n
  • 100% Responsive – Mobile Friendly contact forms.
  • \n
  • GDPR Friendly – Make your contact form GDPR compatible with just a few clicks.
  • \n
  • Form Templates – Use our pre-built form templates to save time. Never start from scratch again (see all form templates demos).
  • \n
  • Spam Protection – WPForms provides smart anti-spam protection out-of-the-box, plus direct integrations with hCaptcha and Google reCAPTCHA.
  • \n
  • Instant Form Notification – Quickly respond to incoming inquiries with our instant contact form notification system.
  • \n
  • Smart Form Confirmation – Show a custom success message, or redirect users to a custom thank you page.
  • \n
  • File Uploads – Collect files and media through your contact forms with File Uploads.
  • \n
  • Multi-Page Forms – Split long forms into multiple pages with progress bar to improve user experience.
  • \n
  • Smart Conditional Logic – Show or hide fields and contact form sections based on user behavior.
  • \n
  • Signature Forms – Create signature forms or add the signature field to your contact form, application form, booking form, etc.
  • \n
  • User Registration Forms – Create custom user registration form and custom login form in WordPress.
  • \n
  • Post Submissions – Collect user-submitted content in WordPress with our front-end post submission form. Great for guest posts, testimonials, business directory, listings, etc.
  • \n
  • Geolocation – Display location information about your users.
  • \n
  • Custom Captchas – Create custom captchas for your contact form.
  • \n
  • Surveys and Polls – Easily create surveys forms and analyze the data with interactive reports.
  • \n
  • Form Abandonment – Unlock more leads and grow your business with partial-form submission.
  • \n
  • Form Locker – Manage form permissions and add access control rules including password-protected forms, members only forms, limit contact form entry per person, close form after specific date / time, etc.
  • \n
  • Offline Forms – Let your visitors save their entered data offline and submit when their internet connection is restored.
  • \n
  • Form Landing Pages – Create “distraction-free” form landing pages to boost conversions. Great Google Forms and Wufoo alternative.
  • \n
  • Conversational Forms – Interactive form layout that makes your form feels more human and boost overall completion rate. Great for surveys and registration forms. Perfect Typeform alternative for WordPress without the high costs.
  • \n
  • Webhooks – Send form entry data to secondary tools and external services. No code required, and no need for a third party connector.
  • \n
  • User Journey Reporting – Discover the steps your visitors take before they submit your forms. Right in the WordPress dashboard, you can easily see the content that’s driving the most valuable form conversions.
  • \n
\n

Integrations

\n
    \n
  • PayPal Payment Forms – Create PayPal forms to easily collect payments, donations, and online orders.
  • \n
  • Stripe Forms – Easily collect credit card payments, donations, and online orders with our Stripe addon.
  • \n
  • Authorize.Net Forms – Connect your WordPress site with Authorize.Net to collect payments, donations, and online orders.
  • \n
  • Mailchimp Forms – Create Mailchimp newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • AWeber Forms – Create AWeber newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • Campaign Monitor Forms – Create Campaign Monitor newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • GetResponse Forms – Create GetResponse newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • Constant Contact Forms – Create Constant Contact newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • Drip Forms – Create Drip newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • ActiveCampaign Forms – Add contacts to your ActiveCampaign account, record events, add notes to contacts, and more.
  • \n
  • Sendinblue Forms – Create Sendinblue forms to automate your marketing and engage your subscribers.
  • \n
  • Salesforce Forms – Easily send your WordPress form contacts and leads to your Salesforce CRM account.
  • \n
  • Zapier Addon – Connect your WordPress forms with over 1000+ apps. Route your contact form data to your favorite CRM, email marketing service, etc.
  • \n
\n

After reading this feature list, you can probably imagine why WPForms is the best WordPress contact form plugin in the market.

\n

Give WPForms a try.

\n

Want to unlock more features? Upgrade to our Pro version.

\n

Credits

\n

This plugin is created by Jared Atchison and Syed Balkhi.

\n

Branding Guideline

\n

WPForms® is a registered trademark of WPForms LLC. When writing about the contact form plugin by WPForms, please make sure to uppercase the initial 3 letters.

\n
    \n
  • WPForms (correct)
  • \n
  • WP Forms (incorrect)
  • \n
  • wpforms (incorrect)
  • \n
  • wpform (incorrect)
  • \n
\n

What’s Next

\n

If you like this plugin, then consider checking out our other projects:

\n
    \n
  • OptinMonster – Get More Email Subscribers with the most popular conversion optimization plugin for WordPress.
  • \n
  • MonsterInsights – See the stats that matter and grow your business with confidence. The best Google Analytics plugin for WordPress.
  • \n
  • SeedProd – Create beautiful landing pages with our powerful drag & drop landing page builder.
  • \n
  • WP Mail SMTP – Improve email deliverability for your contact form with the most popular SMTP plugin for WordPress.
  • \n
  • RafflePress – Best WordPress giveaway and contest plugin to grow traffic and social followers.
  • \n
  • Smash Baloon – #1 social feeds plugin for WordPress – display social media content in WordPress without code.
  • \n
  • AIOSEO – The original WordPress SEO plugin to help you rank higher in search results (trusted by over 2 million sites).
  • \n
  • Push Engage – Connect with visitors after they leave your website with the leading web push notification plugin.
  • \n
  • TrustPulse – Add real-time social proof notifications to boost your store conversions by up to 15%.
  • \n
\n

Visit WPBeginner to learn from our WordPress Tutorials and find out about other best WordPress plugins.

\n

Notes

\n

WPForms is absolutely, positively the most beginner friendly WordPress contact form plugin on the market. It is both easy and powerful.

\n

We took the pain out of creating online forms and made it easy. Check out all WPForms features.

\n

Also, I’m the founder of WPBeginner, the largest WordPress resource site for beginners. It was a huge priority for me to make a WordPress contact form plugin that beginners can use without any training.

\n

I feel that we have done that here. I hope you enjoy using WPForms.

\n

Thank you

\n

Syed Balkhi

\n","download_link":"https://downloads.wordpress.org/plugin/wpforms-lite.1.6.9.zip","tags":{"contact-form":"contact form","contact-form-plugin":"contact form plugin","custom-form":"custom form","form-builder":"form builder","forms":"forms"},"donate_link":"","icons":{"1x":"https://ps.w.org/wpforms-lite/assets/icon.svg?rev=2574198","2x":"https://ps.w.org/wpforms-lite/assets/icon-256x256.png?rev=2574201","svg":"https://ps.w.org/wpforms-lite/assets/icon.svg?rev=2574198"},"wporg":true},{"name":"MonsterInsights – Google Analytics Dashboard for WordPress (Website Stats Made Easy)","slug":"google-analytics-for-wordpress","version":"8.1.0","author":"MonsterInsights","author_profile":"https://profiles.wordpress.org/chriscct7","requires":"4.8.0","tested":"5.8.1","requires_php":"5.5","rating":92,"ratings":{"1":194,"2":39,"3":35,"4":76,"5":2097},"num_ratings":2441,"support_threads":10,"support_threads_resolved":10,"active_installs":3000000,"downloaded":101455750,"last_updated":"2021-09-30 7:56am GMT","added":"2007-09-14","homepage":"https://www.monsterinsights.com/?utm_source=liteplugin&utm_medium=pluginheader&utm_campaign=pluginurl&utm_content=7%2E0%2E0","short_description":"The best free Google Analytics plugin for WordPress. See how visitors find and use your website, so you can grow your business.","description":"

Google Analytics Plugin for WordPress

\n

With over 3 million active installs, MonsterInsights is the most popular Google Analytics plugin for WordPress.

\n

We believe that it’s easy to double your traffic and sales when you know exactly how people find and use your website. MonsterInsights shows you the analytics and stats that matter, so you can grow your business with confidence.

\n

At MonsterInsights, we make it “effortless” to properly connect your WordPress site with Google Analytics, so you can start making data-driven decisions to grow your business.

\n

Unlike other Google Analytics plugins, MonsterInsights allow you to enable all advanced Google Analytics tracking features with just a few clicks (no need to hire a developer).

\n

The best part is that MonsterInsights comes with an analytics dashboard for WordPress that shows you actionable analytics reports right inside your WordPress dashboard. We have created customized reports that eliminate the fluff and only show you the stats that matter, so you can see exactly what’s working and what’s not!

\n

Simply put, MonsterInsights is the most complete Google Analytics plugin for WordPress that’s both EASY and POWERFUL.

\n

That’s why millions of small businesses and top companies like Microsoft, Bloomberg, FedEx, Yelp, Subway, etc. use MonsterInsights to setup Google Analytics on their WordPress sites.

\n
\n

MonsterInsights Pro
\n This plugin is the lite version of MonsterInsights Pro plugin that comes with all the tracking features you will ever need including events tracking, ecommerce tracking, custom dimensions tracking, page speed reports, popular post tracking, custom dimensions, affiliate link tracking, and tons more. Click here to purchase the best premium Google Analytics plugin for WordPress now!

\n
\n

We took the pain out of installing Google Analytics in WordPress and made it easy. Here’s why over 3 million smart business owners, designers, and developers love MonsterInsights, and you will too!

\n

\n

Quick & Easy Google Analytics Setup

\n

Properly setting up Google Analytics is complicated. You have to either hire a developer or learn how to add advanced code snippets to your website in many different areas. This process can take days or weeks…and can even break your website!

\n

With MonsterInsights, we made it “effortless” to properly setup Google Analytics in WordPress. Yes, you can enable all advanced Google Analytics features with just a few clicks.

\n

If you can point-and-click, then you can set up Google Analytics inside WordPress and start seeing insights in under 15 minutes (no code necessary).

\n

We keep up with all Google Analytics updates, so you can sleep well at night knowing that your website will always stay up to date with the newest features.

\n

See what one business owner is saying about MonsterInsights:

\n
\n

It just works. Really easy way to insert Google Analytics tracking code and keep it there when switching themes. No need to copy/paste code anywhere. This is the best way to handle Google Analytics in WordPress.
\n Steven Gliebe

\n
\n

Google Analytics Dashboard + Real Time Stats

\n

Our goal at MonsterInsights is to make Google Analytics easy and accessible for everyone.

\n

We understand that Google Analytics has a steep learning curve which often prevents small business owners from making informed decisions to grow their business.

\n

That’s why MonsterInsights comes with a built-in Google Analytics Dashboard for your WordPress site, so you can see all the useful information about your visitors right inside your WordPress dashboard without needing to login somewhere else.

\n

We have even created customized reports to help you filter through the noise and see the stats that really matter!

\n
    \n
  • \n

    Audience Report helps you get to know your visitors in a whole new way. It shows you detailed insights like which country your visitors are coming from, what are they most interested in, which device are they using, their age, gender, and a whole lot more. You can use this demographics report and audience clues to tweak your website design and content accordingly.

    \n
  • \n
  • \n

    **Publishers Report ** helps you understand which pages your visitors are arriving, and which pages they are leaving from. Designed specifically for blogs and other resource sites, this powerful report will show you which outbound links are getting clicked so you can easily optimize for higher conversions.

    \n
  • \n
  • \n

    Behavior Report shows you exactly how people find your website, which keywords did they search for, who referred them, what did they click on your site, and more. You can use these useful stats to identify low-hanging fruits, new partnership opportunities, and promotional areas to focus on.

    \n
  • \n
  • \n

    Content Report shows you stats on exactly which content gets the most visits, so you can stop guessing and start creating content that gets more traffic and conversion.

    \n
  • \n
  • \n

    Ecommerce Report shows you important store stats like total revenue, conversion rate, average order value, top referral sources, and more (all in one place).

    \n
  • \n
  • \n

    Forms Report shows you conversion stats for various contact forms and lead forms on your website, so you can improve the conversions to grow your business.

    \n
  • \n
  • \n

    Search Console Report shows you exactly how well your website is ranking in Google, so you can further optimize your SEO to grow your organic traffic.

    \n
  • \n
  • \n

    Custom Dimensions Report helps you dig deeper by showing you useful stats like who are your most popular authors, what are the best publication times, which are your most popular categories or tags, how well are your Yoast focus keywords and SEO score performing, and more.

    \n
  • \n
  • \n

    Site Speed Report makes it easy to track pagespeed insights and loading times for your website and get the information you need to improve user experience and your SEO rankings.

    \n
  • \n
\n

Our custom Google Analytics Dashboard reports are based on over 12+ years of online business experience. We built MonsterInsights to be the Google Analytics plugin that we wish we had.

\n

We currently use MonsterInsights on all our portfolio companies which include both media sites generating tens of millions of pageviews and eCommerce sites generating millions in sales.

\n

That’s why we can confidently say that MonsterInsights is the ultimate Google Analytics Shortcut for seeing the stats that matter and making data-driven decisions to grow your business.

\n
\n

I love being able to drill down into the analytics via the reporting feature. I have the PRO version and it makes a big difference what you can analyze. I’m glad that I can integrate with Pretty Links too!
\n Kim Beasley – MonsterInsights user

\n
\n

Google Analytics Enhanced Ecommerce Tracking Made Easy

\n

Google Analytics Enhanced Ecommerce tracking is a powerful feature that lets you track user behavior across your online store starting from product views to checkout page to thank you page and beyond.

\n

With MonsterInsights’ easy WooCommerce integration, you can setup WooCommerce analytics with literally 1-click.

\n

Once you have enabled WooCommerce tracking, MonsterInsights will show you all important WooCommerce metrics in a single dashboard including WooCommerce conversion rate, top products in your WooCommerce store, total transactions, total revenue, average order value, top referral sources, and more.

\n

Our WooCommerce analytics report also includes other detailed WooCommerce event tracking data like total add to carts, total removed from cart, time to purchase, and sessions to purchase.

\n

For those who want to go beyond our WooCommerce stats dashboard, you can easily open up the Google Analytics dashboard to combine WooCommerce data with other secondary dimensions and filters to find exactly what you’re looking for.

\n

Aside from WooCommerce Google Analytics integration, MonsterInsights’ eCommerce addon also offers seamless integration for the Easy Digital Downloads plugin.

\n

Our Easy Digital Downloads Google Analytics integration allows you to set up Enhanced Ecommerce Tracking on your store with just 1-click.

\n

Simply put, MonsterInsights’ Enhanced Ecommerce for WordPress feature is by far the easiest and most powerful in the market.

\n

Google Analytics + GDPR Compliance

\n

MonsterInsights helps make Google Analytics GDPR compliance easier for business owners.

\n

Our EU compliance addon allows you to:

\n
    \n
  • Anonymize IP in Google Analytics
  • \n
  • Disable the Demographics and Interest Reports for Remarketing and Advertising
  • \n
  • Disable UserID and author name tracking
  • \n
  • Enable the ga() compatibility mode
  • \n
  • Integrate with Cookie Notice and CookieBot plugins to collect user consent before tracking
  • \n
  • Integrate with Google AMP Consent Box before enable tracking
  • \n
  • Integrate with Google Analytics’s Chrome browser opt-out extension and built-in cookie opt-out system
  • \n
  • Offer Easy Opt Out link for Google Analytics tracking
  • \n
\n

While no single plugin can guarantee 100% GDPR compliance in WordPress, MonsterInsights goes to great length in helping business owners with GDPR compliance.

\n

For more details, see: GDPR and MonsterInsights – Everything You Need to Know.

\n

Universal Tracking + Google Analytics for AMP and Instant Articles

\n

MonsterInsights uses Google Analytics universal tracking, so you can track your users across devices and platforms.

\n

Accelerated Mobile Pages (AMP) is a project by Google that helps you speed up your website. However if you don’t set it up properly, Google AMP can cause you to lose your website analytics. Our Google Analytics AMP integration allows you to have accurate tracking on all AMP enabled pages. It works seamlessly with AMP for WordPress plugin.

\n

We also offer 1-click Google Analytics integration with Facebook Instant Articles.

\n

At MonsterInsights, we always stay ahead of the curve in helping you integrate WordPress with the latest Google Analytics tracking features.

\n
\n

Analytics for PROs! This plugin brings it all, great features and helpful info to easily see what you are doing.
\n Frank van der Sluijs

\n
\n

Google AdSense Tracking and Affiliate Link Tracking

\n

With MonsterInsights Ads tracking addon, publishers can easily track the performance of their Google AdSense Ads inside their Google Analytics dashboard.

\n

Our affiliate link tracking makes it easy for bloggers and affiliate marketers to track their affiliate links with Google Analytics.

\n

MonsterInsights uses event tracking for all WordPress outbound link tracking which is far more accurate than any built-in WordPress analytics solution.

\n

Unlike other WordPress analytics plugin, our Google Analytics affiliate link tracking does NOT slow down your website because all events are recorded via JavaScript and sent straight to your account.

\n

Most other WordPress stats plugin track data on your WordPress hosting server which slows down your website and does not scale for larger websites.

\n

Since our affiliate link tracking uses Google Analytics’ powerful servers, we can skip WordPress entirely.

\n

MonsterInsights’ affiliate link tracking feature works with all WordPress affiliate link management plugins including Pretty Links, Thirsty Affiliates, and others.

\n

Custom Dimensions Tracking, Custom Google Analytics Event Tracking, and More

\n

Our Google Analytics event tracking feature for WordPress doesn’t just stop at affiliate link tracking.

\n

You can use MonsterInsights custom Google analytics event tracking feature to easily add outbound-link tracking, file downloads tracking, call-to-action button tracking, hashmark tracking, telephone link tracking, and more.

\n

Our powerful Forms Tracking addon uses Google Analytics custom event tracking feature to enable form analytics in WordPress. With just 1-click, you can enable form conversion tracking for your contact forms, lead generation forms, registration forms, surveys, and any other type of form in WordPress.

\n

MonsterInsights’ Custom Dimensions addon allows you to push WordPress analytics even further. You can use Google Analytics custom dimensions to generate helpful WordPress stats for:

\n
    \n
  • Author Tracking – see stats for each author to find which author’s posts generate the most traffic.
  • \n
  • Post Type Tracking – see stats for WordPress post types to find out which sections are performing the best.
  • \n
  • Category Tracking – see stats for your WordPress categories to find out which sections of your sites are the most popular.
  • \n
  • Tags Tracking – see stats for your WordPress tags to find out which tags are the most popular.
  • \n
  • SEO Score Tracking – see stats for your Yoast SEO score and see how it impacts your traffic.
  • \n
  • Focus Keyword Tracking – see stats for Yoast focus keyword and see how it correlates with your traffic.
  • \n
  • Logged-in User Tracking – see WordPress stats for what percentage of your users are logged-in.
  • \n
  • User ID Tracking – see stats for each individual logged-in user’s activity through User ID custom dimension – great for Ecommerce and membership sites.
  • \n
  • Published Time Tracking – track the performance of your posts based on their published time.
  • \n
\n

Simply put, MonsterInsights allow you to take full advantage of all the powerful Google Analytics features.

\n
\n

I like how simple it is for client users and how I can turn on the advanced features for myself to get all the details right.
\n Skip Shean

\n
\n

Google Analytics Dashboard Plugin for WordPress Multisite Networks

\n

MonsterInsights is the most popular analytics plugin for adding Google Analytics to WordPress multisite.

\n

We have built-in all permissions and controls that you would need to successfully run Google Analytics on a WordPress multi-site.

\n

You can control who has access to view the Google Analytics Dashboard report in WordPress. Our permissions setting allows you to hide analytics reports for specific user roles.

\n

Similarly, we understand that some sites may want to exclude logged-in users from tracking. MonsterInsights gives you granular control to exclude admin in Analytics as well as other user roles.

\n

Our performance addon allows you to adjust sample rate and site speed sample rates for Google Analytics.

\n

By now you can probably see why MonsterInsights has become the most popular Google Analytics plugin for WordPress.

\n

We understand Google Analytics better than any other analytics plugin for WordPress.

\n

Full MonsterInsights Feature List

\n
    \n
  • Quick and Easy Setup – Easily setup Google Analytics for WordPress with just a few clicks (no coding needed)
  • \n
  • Real Time Stats – See real time stats inside your Google Analytics dashboard.
  • \n
  • Universal Tracking – Get better insights with Google Analytics’ universal tracking.
  • \n
  • Google Analytics Dashboard – See the stats that matter from right inside your WordPress dashboard with custom Publisher Report, Ecommerce report, and Search Console report.
  • \n
  • Google Analytics 4 Support – Easily set up and send proper website tracking data to Google Analytics 4
  • \n
  • eCommerce Tracking – Add Google Analytics Ecommerce tracking to WordPress.
  • \n
  • WooCommerce Google Analytics – Add Enhanced Ecommerce Tracking to your WooCommerce store.
  • \n
  • Easy Digital Downloads Google Analytics – Add Enhanced Ecommerce Tracking to your EDD store.
  • \n
  • Ads Tracking – Track your Google Adsense ads with Google Analytics.
  • \n
  • Affiliate Link Tracking – Track your affiliate links and get stats that matter.
  • \n
  • File Download Tracking – Enable file download stats with just a click.
  • \n
  • Custom Link Tracking – Track your outbound link clicks with Google Analytics.
  • \n
  • Events Tracking – Track custom button and banner clicks with Google Analytics.
  • \n
  • Custom Dimensions Tracking – Enable Google analytics custom dimensions tracking for WordPress.
  • \n
  • Author Tracking – See author stats and discover who’s the most popular author on your site.
  • \n
  • Popular Post Tracking – See which blog post and section is the most popular.
  • \n
  • Contextual Insights – Get actionable tips on how to improve engagement and get more visitors based on your site’s traffic.
  • \n
  • Headline Analyzer – Get more clicks and improve SEO following suggestions from our Headline Analyzer directly in the WordPress editor
  • \n
  • Custom Post Type Tracking – Track the performance of your custom post types.
  • \n
  • Referral Tracking – See how visitors are finding your website to better focus your marketing efforts.
  • \n
  • Performance Tracking – Control the performance rate and sample rate for your Google Analytics report.
  • \n
  • Enhanced Link Attribution – Get better analytics with enhanced link attribution.
  • \n
  • Email Summaries – Your site’s Google Analytics traffic report delivered straight to your inbox every week.
  • \n
  • Google Analytics for AMP – Add proper tracking for Google AMP.
  • \n
  • Google Analytics for Facebook Instant Articles – Add proper tracking for Facebook Analytics.
  • \n
  • Google Analytics GDPR Compliance – EU compliance addon helps you improve Google Analytics GDPR compliance by adding anonymize IP, cookie consent for opt-out tracking, and more.
  • \n
  • Form Conversion Tracking – Track conversions for your WordPress forms. Works with all popular plugins including WPForms, Contact Form 7, Gravity Forms, Formidable Forms, and more.
  • \n
  • Google Optimize Tracking – Enable Google Analytics support for Google Optimize A/B Testing.
  • \n
  • Google Analytics Tools – Helpful tools for Google Analytics such as UTM link tracking builder.
  • \n
  • Want us to add something else? Suggest a feature and we’ll get it added!
  • \n
\n

After reading this exhaustive feature list, you can probably imagine why MonsterInsights is the best Google Analytics plugin for WordPress.

\n

Give MonsterInsights a try.

\n

Want to unlock even more features? Upgrade to our Pro version.

\n
\n

Simple, yet powerful. Amazing piece of plugin, does exactly what expected and even more.
\n Matt Jaworski

\n
\n

Popular Google Analytics Tutorials

\n\n

Note for Beginners

\n

Like all WordPress plugins, Google Analytics by MonsterInsights is only available for self-hosted WordPress sites. This means you will need to switch from WordPress.com to WordPress.org if you want to use this plugin on your WordPress site.

\n

For more details, see this infographic on self hosted WordPress.org vs free WordPress.com

\n

Credits

\n

This plugin is created by Chris Christoff and Syed Balkhi with sponsorship from WPBeginner.

\n

Branding Guidelines

\n

MonsterInsights® is a registered trademark of MonsterInsights LLC. When writing about the Google Analytics for WordPress plugin by MonsterInsights, please make sure to uppercase the first letters of both word.

\n
    \n
  • MonsterInsights (correct)
  • \n
  • Monster Insights (incorrect)
  • \n
  • monsterinsights (incorrect)
  • \n
  • monsterinsight (incorrect)
  • \n
\n

What’s Next

\n

If you like this plugin, then consider checking out our other projects:

\n
    \n
  • OptinMonster – Get More Email Subscribers
  • \n
  • WPForms – Best WordPress Contact Form Plugin
  • \n
  • AIOSEO – The original WordPress SEO plugin to help you rank higher in search results (trusted by over 2 million sites)
  • \n
  • SeedProd – Most popular coming soon & maintenance mode plugin for WordPress
  • \n
  • WP Mail SMTP – Improve email deliverability for your contact form with the most popular SMTP plugin for WordPress
  • \n
  • RafflePress – Best WordPress giveaway and contest plugin to grow traffic and social followers
  • \n
  • Smash Balloon – #1 social feeds plugin for WordPress – display social media content in WordPress without code
  • \n
  • PushEngage – Connect with visitors after they leave your website with the leading web push notification plugin
  • \n
  • TrustPulse – Add real-time social proof notifications to boost your store conversions by up to 15%
  • \n
\n

This plugin would not be possible without the help and support of WPBeginner, the largest WordPress resource site. You can learn from our free WordPress Tutorials like how to install WordPress, choose the best WordPress hosting, WordPress glossary, and more.

\n

You can also learn about other best WordPress plugins.

\n","download_link":"https://downloads.wordpress.org/plugin/google-analytics-for-wordpress.8.1.0.zip","tags":{"google-analytics":"google analytics","google-analytics-dashboard":"google analytics dashboard","google-analytics-widget":"google analytics widget","woocommerce-stats":"WooCommerce stats","wordpress-analytics":"WordPress analytics"},"donate_link":"http://www.wpbeginner.com/wpbeginner-needs-your-help/","icons":{"1x":"https://ps.w.org/google-analytics-for-wordpress/assets/icon.svg?rev=1598927","2x":"https://ps.w.org/google-analytics-for-wordpress/assets/icon-256x256.png?rev=1598927","svg":"https://ps.w.org/google-analytics-for-wordpress/assets/icon.svg?rev=1598927"},"wporg":true},{"name":"Atomic Blocks – Gutenberg Blocks Collection","slug":"atomic-blocks","version":"2.9.0","author":"atomicblocks","author_profile":"https://profiles.wordpress.org/atomicblocks","requires":"5.3","tested":"5.5.6","requires_php":"5.6","rating":86,"ratings":{"1":5,"2":0,"3":1,"4":6,"5":31},"num_ratings":43,"support_threads":1,"support_threads_resolved":0,"active_installs":40000,"downloaded":996880,"last_updated":"2020-10-28 4:53pm GMT","added":"2018-03-26","homepage":"https://atomicblocks.com","short_description":"A collection of beautiful, customizable Gutenberg blocks for the new block editor.","description":"

Atomic Blocks has moved!

\n

Same powerful blocks, same beautiful designs, same innovative team. Atomic Blocks has been renamed to Genesis Blocks. Learn more about Genesis Blocks. With our migration tool built right into Genesis Blocks, the transition between plugins will be simple and seamless – plus you’ll be ready to receive the new blocks and features we’re releasing soon.

\n

Atomic Blocks is a collection of page building blocks for the new Gutenberg block editor. Building pages with the block editor and Atomic Blocks gives you more control to quickly create and launch any kind of site you want!

\n

Installing the customizable Atomic Block plugin adds a collection of beautiful, site-building blocks to help you customize page layouts, increase engagement, and get results for your business. Atomic Blocks provides everything from customizable buttons, to beautifully-designed page sections and full-page layout designs via the Section & Layout block.

\n

Along with the content blocks you’ll find in Atomic Blocks, we’re also publishing helpful articles and tutorials to help you get started with Gutenberg.

\n

New Section and Layout Block!

\n

\n

On top of the handy, time-saving blocks already found in Atomic Blocks, we’re excited to introduce the brand new Section and Layout block! This block comes with a library of pre-designed sections and layouts to help you quickly and easily build a beautiful site with the new block editor.

\n

Using the Section and Layout modal window, you can browse designs by category, search, and even add sections and layouts to a Favorites tab for quick access later. Paired with the free Atomic Blocks theme, which has support for full-width, block-based page building, you have everything you need to start building your site today!

\n

Atomic Blocks currently includes the following blocks:

\n\n

Atomic Blocks WordPress Theme

\n

We’ve created a beautiful WordPress theme to help you get started with the Atomic Blocks plugin and the new WordPress block editor. The theme integrates seamlessly with the blocks you’ll find in the plugin!

\n\n

In addition to the Atomic Block Theme, we’ve built Revolution Pro with the StudioPress team. This theme is built from the ground up with blocks—Gutenberg core and Atomic. Using this Theme and the Genesis One-Click Theme Install you can have a new block-based site up and running in minutes.

\n\n

Google AMP Support

\n

The Accelerated Mobile Pages (AMP) project is a publishing format created by Google to enhance site performance for mobile website users. AMP pages are specially designed for Google search users to quickly load website pages without using any extraneous data. Atomic Blocks has support for AMP built into each block!

\n

Atomic Blocks Help File

\n

We’ve created a handy help file that you can check out here. The help file covers how to setup the plugin and get started with the blocks.

\n

The help file is also available in the plugin once activated. Click the Atomic Blocks admin menu item to visit the Getting Started page.

\n

View the plugin help file

\n

Follow Along:

\n\n","download_link":"https://downloads.wordpress.org/plugin/atomic-blocks.2.9.0.zip","tags":{"blocks":"blocks","editor":"editor","gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","page-builder":"page builder"},"donate_link":"https://atomicblocks.com","icons":{"1x":"https://ps.w.org/atomic-blocks/assets/icon-128x128.jpg?rev=1914920","2x":"https://ps.w.org/atomic-blocks/assets/icon-256x256.jpg?rev=1914921"},"wporg":true},{"name":"Akismet Spam Protection","slug":"akismet","version":"4.2.1","author":"Automattic","author_profile":"https://profiles.wordpress.org/automattic","requires":"5.0","tested":"5.8.1","requires_php":false,"rating":94,"ratings":{"1":40,"2":10,"3":13,"4":45,"5":811},"num_ratings":919,"support_threads":12,"support_threads_resolved":8,"active_installs":5000000,"downloaded":219786579,"last_updated":"2021-10-01 6:28pm GMT","added":"2005-10-20","homepage":"https://akismet.com/","short_description":"The best anti-spam protection to block spam comments and spam in a contact form. The most trusted antispam solution for WordPress and WooCommerce.","description":"

Akismet checks your comments and contact form submissions against our global database of spam to prevent your site from publishing malicious content. You can review the comment spam it catches on your blog’s “Comments” admin screen.

\n

Major features in Akismet include:

\n
    \n
  • Automatically checks all comments and filters out the ones that look like spam.
  • \n
  • Each comment has a status history, so you can easily see which comments were caught or cleared by Akismet and which were spammed or unspammed by a moderator.
  • \n
  • URLs are shown in the comment body to reveal hidden or misleading links.
  • \n
  • Moderators can see the number of approved comments for each user.
  • \n
  • A discard feature that outright blocks the worst spam, saving you disk space and speeding up your site.
  • \n
\n

PS: You’ll be prompted to get an Akismet.com API key to use it, once activated. Keys are free for personal blogs; paid subscriptions are available for businesses and commercial sites.

\n","download_link":"https://downloads.wordpress.org/plugin/akismet.4.2.1.zip","tags":{"anti-spam":"anti-spam","antispam":"antispam","comments":"comments","contact-form":"contact form","spam":"spam"},"donate_link":"","icons":{"1x":"https://ps.w.org/akismet/assets/icon-128x128.png?rev=969272","2x":"https://ps.w.org/akismet/assets/icon-256x256.png?rev=969272"},"wporg":true},{"name":"WP GDPR Cookie Notice","slug":"wp-gdpr-cookie-notice","version":"1.0.0-rc.1","author":"Felix Arntz","author_profile":"https://profiles.wordpress.org/flixos90","requires":"4.9.6","tested":"5.7.3","requires_php":"7.0","rating":76,"ratings":{"1":4,"2":0,"3":0,"4":0,"5":9},"num_ratings":13,"support_threads":1,"support_threads_resolved":0,"active_installs":700,"downloaded":6085,"last_updated":"2021-04-02 11:51pm GMT","added":"2019-03-01","homepage":"https://wordpress.org/plugins/wp-gdpr-cookie-notice/","short_description":"Simple performant cookie consent notice that supports AMP, Web Stories, granular cookie control and live…","description":"

This plugin adds a simple performant cookie consent notice to your WordPress site that supports AMP, Web Stories, granular cookie control and live preview customization.

\n

Not only does the notice allow you to provide the regular message that your site uses cookies, you can also optionally grant your site visitors permission to granularly allow which cookie types are allowed, supporting groups of functional (always required), preferences, analytics and marketing cookies. This aims towards compliance with how the new GDPR regulations recommend implementing cookie control for your site.

\n

In addition to the Privacy Policy page setting that WordPress core provides, you also get a settings to optionally set an extra Cookie Policy page, and you can easily link to either of them from the cookie consent notice.

\n

The cookie notice content and appearance can easily be tweaked using the Customizer, with an immediate live-preview of what your changes will look like.

\n

Last but not least, another important thing that this plugin takes care of, other than most other cookie consent plugins, is that it actually ensures cookies are only placed if the respective cookie type has been allowed by the visitor. The plugin does this by implementing cookie rules for WordPress itself, and also for the following plugins:

\n\n

More plugins will be supported in the future. If you are a developer though, it’s also very easy to add cookie rules for other code, by using the flexible cookie rule component the plugin provides as an extension point.

\n

Feature Summary

\n
    \n
  • Lightweight and easy-to-use: Simply activate the plugin, and the notice will appear.
  • \n
  • Live Preview: Use the Customizer to adjust the notice to your needs, with an instant live preview.
  • \n
  • Customizable Appearance: Specify the notice position, colors, border, button size and more.
  • \n
  • Customizable Content: Adjust the notice heading, text and button label to your preferences. You can easily link to your cookie policy page or privacy policy page, and even give visitors granular control about which cookie types they allow.
  • \n
  • Cookie Policy Support: Define an optional cookie policy page if your site has one, or alternatively provide an ID attribute to the cookie section in your privacy policy.
  • \n
  • Cookie Integrations: Supported cookies are only set once the visitor has given their consent. The cookie rules implemented also respect the more granular cookie control.
  • \n
  • JavaScript-driven: The cookie notice is inserted into the page as necessary via JavaScript, but at the same time provides easy access to whether it should be displayed via its PHP API.
  • \n
  • AMP Support: The notice is fully AMP-compatible using <amp-consent>, integrating seamlessly with the AMP plugin. It integrates with Web Stories as well.
  • \n
  • Coding Best Practices: The plugin is fully object-oriented and is coded after best practices, such as using interfaces, traits, dependency injection or the single responsibility principle. It also implements modern coding features requiring PHP 7, such as scalar type hints or return type hints.
  • \n
\n

Disclaimer

\n

This plugin does not provide any legal protection. You as a site administrator are required to ensure that it meets legal standards. This plugin is a technical tool, not a lawyer.

\n","download_link":"https://downloads.wordpress.org/plugin/wp-gdpr-cookie-notice.1.0.0-rc.1.zip","tags":{"amp":"amp","cookie-consent":"cookie consent","cookie-notice":"cookie notice","gdpr":"GDPR","web-stories":"web stories"},"donate_link":"","icons":{"1x":"https://ps.w.org/wp-gdpr-cookie-notice/assets/icon-128x128.png?rev=2042024","2x":"https://ps.w.org/wp-gdpr-cookie-notice/assets/icon-256x256.png?rev=2042024"},"wporg":true},{"name":"WordPress Share Buttons Plugin – AddThis","slug":"addthis","version":"6.2.6","author":"The AddThis Team","author_profile":"https://profiles.wordpress.org/arnavarro","requires":"3.0","tested":"5.2.12","requires_php":false,"rating":84,"ratings":{"1":75,"2":25,"3":22,"4":46,"5":444},"num_ratings":612,"support_threads":1,"support_threads_resolved":0,"active_installs":100000,"downloaded":5074828,"last_updated":"2019-07-10 5:19pm GMT","added":"2008-12-23","homepage":"https://wordpress.org/plugins/addthis/","short_description":"Now compatible with the AMP Plugin! Free Share Buttons from AddThis. Share to Messenger, WhatsApp, Facebook, Twitter, Pinterest and many more.","description":"

Now compatible with the AMP Plugin! The Free WordPress Share Buttons Plugin from AddThis makes it easier than ever for your audience to spread your content around the web. Our quick-loading Share Buttons Plugin lets you connect to over 200 social channels including Messenger, WhatsApp, Facebook, Twitter, Pinterest and many more.

\n

Our clean, customizable and simple share buttons are beautiful, quick to load and recognized all over the web.

\n

AddThis is trusted by over 15,000,000 websites with over 2 billion unique users, sharing content all over the world, in more than sixty languages.

\n

Types of Share Buttons:

\n
    \n
  • \n

    Floating share buttons: Placed on the side of your page, following your reader as they scroll. A great way to promote sharing without getting too in-your-face.

    \n
  • \n
  • \n

    Expanding share buttons: Modern, clean, and best suited for sites with tons of mobile traffic. This button expands to reveal sharing options on hover or click.

    \n
  • \n
  • \n

    Inline share buttons: Integrate share buttons into your own content for a seamless sharing experience.

    \n
  • \n
  • \n

    Image sharing buttons: Seamlessly integrate sharing into your layout with adjustable image sharing buttons. Perfect for pages with tons of shareable content.

    \n
  • \n
\n

Customizable:

\n
    \n
  • \n

    Designed for desktop, tablet, and mobile

    \n
  • \n
  • \n

    Choose from over 200 social media channels to display

    \n
  • \n
  • \n

    Adjust coloring to match your brand

    \n
  • \n
\n

Analytics:

\n
    \n
  • Sign up for a free AddThis account to get analytics on how your content is performing such as your top shared content, referring social networks and more. After you register, these analytics are accessible by logging into your AddThis.com account and visiting your AddThis dashboard. Analytics include site pageviews, your top shared content, referring social networks, and more.
  • \n
\n

Support:

\n

We strive to provide best-in-class support with a response time of around two hours, and a customer satisfaction rate of over 98%. To get in touch with our team, head to http://www.addthis.com/support.

\n

Check out our other plugins to help you grow and engage your audience!

\n
    \n
  • \n

    Follow Buttons: Add followers to 65+ social networks, including Facebook, Snapchat, Instagram, and more.

    \n
  • \n
  • \n

    Related Posts: Boost your on-site engagement with our Related Posts tool, which recommends content not only by what’s popular, but also what’s most relevant.

    \n
  • \n
\n

Want more? Visit our website to learn how you can activate our Email List Building and Link Promotion Tools.

\n

AddThis Academy | Privacy Policy

\n","download_link":"https://downloads.wordpress.org/plugin/addthis.6.2.6.zip","tags":{"share-buttons":"share buttons","social":"social","social-marketing":"Social Marketing","social-share":"social share","social-sharing":"social sharing"},"donate_link":"","icons":{"1x":"https://ps.w.org/addthis/assets/icon-128x128.png?rev=1223867","2x":"https://ps.w.org/addthis/assets/icon-256x256.png?rev=1223867"},"wporg":true},{"name":"BigCommerce For WordPress","slug":"bigcommerce","version":"4.17.1","author":"BigCommerce","author_profile":"https://profiles.wordpress.org/bigcommerce","requires":"5.2","tested":"5.5.6","requires_php":"7.2.0","rating":80,"ratings":{"1":8,"2":1,"3":0,"4":3,"5":27},"num_ratings":39,"support_threads":5,"support_threads_resolved":0,"active_installs":1000,"downloaded":59728,"last_updated":"2021-09-13 10:48pm GMT","added":"2018-11-16","homepage":"","short_description":"Scale your ecommerce business with WordPress on the front-end and BigCommerce on the back end.…","description":"

BigCommerce for WordPress is a plugin that allows you to scale ecommerce further than ever before on WordPress. Scale your business with WordPress on the front-end and free up server resources from things like catalog management, processing payments, managing fulfillment logistics and more with BigCommerce on the back end.

\n

Built to integrate seamlessly with WordPress, you get access to our native ecommerce features from a single plugin, the ability to sell across multiple channels and marketplaces from a single location, and best of all, an embedded checkout experience that takes on PCI compliance and customer security on your behalf.

\n

Quick Start!

\n

Look at details from the latest release, including new features and enhancements here: https://github.com/bigcommerce/bigcommerce-for-wordpress/releases

\n

Dive into how you set up and customize your site using BC4WP using our guides here: https://developer.bigcommerce.com/bigcommerce-for-wordpress/getting-started/introduction

\n

Have a suggestion for how we can be better? Ping the team! wordpress-suggestions@bigcommerce.com

\n

DIFFERENT FROM YOUR TRADITIONAL PLUGIN

\n

We’ve taken a very different approach to ecommerce in WordPress. We set out to build our plugin the WordPress Way: deliver value to the community, build it with WordPress experts and make something developers can call their own.

\n

The BigCommerce for WordPress plugin leverages the best aspects of both platforms, allowing WordPress to manage content and BigCommerce to manage ecommerce.

\n

SCALABLE ECOMMERCE FOR WORDPRESS

\n

Continue to tap into the unrestricted customization of WordPress while pairing it with the most scalable SaaS ecommerce engine. BigCommerce lets you build complex catalogs, manage large volumes of concurrent traffic, orders and analytics.

\n

The BigCommerce plugin ports over a copy of your product catalog and stores products as custom post types in WordPress. It also creates pages for your cart, checkout, account profiles, sign in, shipping & returns, gift certificates and order history.

\n

The key difference to our approach is that you don’t need to install additional extensions to get access to common ecommerce features. Instead, you get instant access to many common (and advanced) features, such as complex catalog support, global payment gateways, currency handling, taxation, shipping calculations and centralized channel management; all out-of-the-box.

\n

OFFLOAD BACKEND RESOURCES

\n

Our philosophy is that processing orders and running your store shouldn’t affect the uptime and speed of your site — which can hurt your SEO, conversion, and brand. The BigCommerce plugin does the heavy commerce lifting, letting you scale your ecommerce without losing speed or uptime.

\n

LET US HANDLE PCI COMPLIANCE

\n

Taking on your own PCI compliance comes with a huge amount of liability and risk. BigCommerce powers the full checkout experience, assuming the burden of PCI compliance for you.

\n

EXTENSIVE PAYMENT GATEWAYS

\n

BigCommerce has over 65 payment gateway integrations available out-of-the box, serving 100+ countries and over 250 local payment methods.

\n

To help you reduce costs, we’ve pre-negotiated special credit and debit card processing rates with PayPal, our preferred payment solution. The more you grow with BigCommerce and upgrade your plan, the lower your rates can go.

\n

HIGHLY SCALABLE PRODUCT CATALOG

\n

BigCommerce is built for large, complex catalogs with up to 600 SKUs per product, and 250 product values for a single option. Our native catalog structure treats single products (including variants, details, SKUs, etc.) as a single API call, making inventory syncing with ERPs, PIMs (and WordPress) fast.

\n

MULTI-CHANNEL SELLING & MANAGEMENT

\n

With the core BigCommerce platform, you now have access within the control panel to sell across multiple marketplaces simultaneously, such as eBay, Amazon, Facebook, Instagram, Google Shopping, Square and more! Save time and eliminate errors and overselling with bulk listing, automatic inventory syncing and unified order and fulfillment management.

\n

USE YOUR FAVORITE WORDPRESS THEME

\n

BigCommerce for WordPress will work with any WordPress theme, but it may require some styling to make it fit perfectly. Are you a theme developer? We’d love to promote your BigCommerce for WordPress compatible theme. Get in touch with us here.

\n

To start, we recommend choosing a cross-browser compatible WordPress ecommerce theme, since the theme options included will better match what an online store requires.

\n

ECOMMERCE WITH GUTENBERG

\n

We’re big supporters of Gutenberg and built our plugin to support both the classic editor and Gutenberg. Whether you’re inserting shortcodes in classic mode or product blocks in Gutenberg, we will continue to enable support for both.

\n

SECURED USER ACCOUNTS & LOGINS

\n

In addition to offering you peace of mind with a secure checkout experience, we also extend this level of security to your shoppers, their accounts and logins, and payment information — all managed by BigCommerce.

\n

GLOBAL SHIPPING STREAMLINED

\n

We support all major global carriers, offer real-time carrier quotes, allow for free shipping, flat rates, dropshipping and more. With our deep ShipperHQ integration, you can even specify rates by product, category, customer group, quantity, destination, dimensions and more.

\n

FLEXIBLE SHOPPING CART

\n

We are bringing over a decade of focusing on building online stores to every WordPress website. Through this we bring our flexible shopping cart, along with it’s extensive customization options, so can offer enterprise grade promotions and discounts within a fully responsive layout, without additional extensions that other WordPress ecommerce plugins require.

\n

MULTIPLE SITES; ONE CONTROL PANEL

\n

Even if you sell across multiple WordPress sites, you shouldn’t have to manage them all in separate places. BigCommerce gives you a single control panel to manage your catalog, orders and shipping, all from one place. Streamline your admin experience and spend less time managing ecommerce on WordPress.

\n

Beyond WordPress, the endpoints we’ve opened on our platform allow you to build commerce into any sort of experience. Looking to launch a site in React? Interested in developing a mobile app? Want to integrate with an in-house POS? All of these can be built and managed from within the BigCommerce Control Panel.

\n

COMPLEX ENTERPRISE SYSTEMS INTEGRATIONS

\n

A huge benefit of having a SaaS ecommerce engine behind the scenes is that the core platform is already built for mid-market and enterprise use cases. Natively connect to your existing ERP suites, PIM software, OMS solutions, POS systems or marketing automation tools right out of the box.

\n

AMP SUPPORT

\n

Unique to most WordPress ecommerce plugins, BigCommerce for WordPress also includes support for Accelerated Mobile Pages. To activate, install the official Google plugin.

\n

SUPPORT AND SERVICES

\n

All of our BigCommerce customers have access to our 24/7 live phone, chat, and email support, run from our headquarters in Austin, Texas. For larger enterprise customers, we offer dedicated account management and implementation management services as part of your plan. We also have an ever-growing collection of help, support, and how-to guides in our help center.

\n

BUILT WITH DEVELOPERS IN MIND

\n

BigCommerce for WordPress was built by WordPress developers, with developers in mind. Our plugin is open source and available for you to fork, extend and modify as your needs require.

\n

Our plugin supports WordPress’ standard method of overriding template files so you can modify out-of-the-box designs. Customize your product cards, lists and shopping cart without risking plugin updates that will undo your changes.

\n

Additionally, there are many hooks and filters, so you can manipulate content to your heart’s content.

\n

JOIN OUR BIGCOMMERCE COMMUNITY

\n

All BigCommerce customers get access to our ever-growing online community to answer questions, discuss ecommerce strategies, learn about the latest product updates, contribute ideas and more.

\n

If you’re interested in contributing to BigCommerce for WordPress, head over to our GitHub Repository.

\n","download_link":"https://downloads.wordpress.org/plugin/bigcommerce.4.17.1.zip","tags":{"ecommerce":"ecommerce","online-store":"online store","retail":"retail","sell-online":"sell online","storefront":"storefront"},"donate_link":"","icons":{"1x":"https://ps.w.org/bigcommerce/assets/icon-256x256.png?rev=2141502","2x":"https://ps.w.org/bigcommerce/assets/icon-256x256.png?rev=2141502"},"wporg":true},{"name":"Yoast SEO","slug":"wordpress-seo","version":"17.3","author":"Team Yoast","author_profile":"https://profiles.wordpress.org/joostdevalk","requires":"5.6","tested":"5.8.1","requires_php":"5.6.20","rating":96,"ratings":{"1":722,"2":125,"3":174,"4":618,"5":25757},"num_ratings":27396,"support_threads":490,"support_threads_resolved":433,"active_installs":5000000,"downloaded":361627080,"last_updated":"2021-10-05 6:53am GMT","added":"2010-10-11","homepage":"https://yoa.st/1uj","short_description":"Improve your WordPress SEO: Write better content and have a fully optimized WordPress site using the Yoast SEO plugin.","description":"

Yoast SEO: the #1 WordPress SEO plugin

\n

Since 2008 Yoast SEO has helped millions of websites worldwide to rank higher in search engines.

\n

Yoast’s mission is SEO for Everyone. Our plugin’s users range from the bakery around the corner to some of the most popular sites on the planet.

\n

Yoast SEO Free contains everything that you need to manage your SEO, and the Yoast SEO Premium plugin and its extensions unlock even more tools and functionality.

\n

GET AHEAD OF THE COMPETITION

\n

To rank highly in search engines, you need to beat the competition. You need a better, faster, stronger website than the people who sell or do the same kinds of things as you.

\n

Yoast SEO is the most-used WordPress SEO plugin, and has helped millions of people like you to get ahead, and to stay ahead.

\n

TAKING CARE OF YOUR WORDPRESS SEO

\n

Yoast SEO is packed full of features, designed to help visitors and search engines to get the most out of your website. Some of our favourites are:

\n
    \n
  • Automated technical SEO improvements, like canonical URLs and meta tags.
  • \n
  • Advanced XML sitemaps; making it easy for Google to understand your site structure.
  • \n
  • Title and meta description templating, for better branding and consistent snippets in the search results.
  • \n
  • An in-depth Schema.org integration that will increase your chance of getting rich results, by helping search engines to understand your content.
  • \n
  • Full control over site breadcrumbs, so that users and search engines always know where they are.
  • \n
  • Faster loading times for your whole website, due to an innovative way of managing data in WordPress.
  • \n
  • [Premium] E-mail support for our Yoast SEO Premium users.
  • \n
  • [Premium] The possibility to expand Yoast SEO with the News SEO, Video SEO, Local SEO and WooCommerce SEO extensions.
  • \n
\n

WRITE KILLER CONTENT WITH YOAST SEO

\n

We know content is king, that’s why Yoast SEO is famous for its state-of-the-art content and SEO analysis. Yoast SEO gives you:

\n
    \n
  • SEO analysis: an invaluable tool while writing SEO-friendly content with the right (focus) keyphrases in mind.
  • \n
  • Readability analysis: ensures that humans and search engines can read and understand your content.
  • \n
  • Full language support for: English, German, French, Dutch, Spanish, Italian, Russian, Indonesian, Polish, Portuguese, Arabic, Swedish, Hebrew, Hungarian, Turkish, Czech, Norwegian and Slovak.
  • \n
  • A Google preview, which shows what your listings will look like in the search results. Even on mobile devices!
  • \n
  • Innovative Schema blocks for the WordPress block editor, so that your FAQ and HowTo content can be shown directly in the search results. Plus a breadcrumbs block to guide your users.
  • \n
  • [Premium] Internal linking blocks to easily improve the structure of your content. Easily add a table of contents block, a related links block, a subpages block, or siblings block! Plus, we’ll keep adding these easy-to-add blocks to improve your site structure.
  • \n
  • [Premium] Social previews to show you how your content will be shown on Twitter and Facebook. Plus: Social Appearance Templates to guarantee a consistent look.
  • \n
  • [Premium] The Insights tool that shows you what your text focuses on. This way you can keep your article in line with your keyphrases.
  • \n
  • [Premium] Optimize your content for synonyms and related keyphrases.
  • \n
  • [Premium] Optimize your article for different word forms of your keyphrases, as the singular and plural. But also different verb forms, synonyms, and related keyphrases. This makes for more natural content!
  • \n
  • [Premium] Automatic internal linking suggestions: write your article and get automatic suggested posts to link to!
  • \n
  • [Premium] An orphaned content filter to detect posts that have no links pointing towards them!
  • \n
  • [Premium] SEO workouts to make working on your site as easy as ABC. These SEO workflows will get your site into shape in no time!
  • \n
\n

KEEP YOUR SITE IN PERFECT SHAPE

\n

Whether you are an online entrepreneur, blogger or content creator, a developer, a (WordPress) SEO expert or a business owner, Yoast SEO helps you keep your website in perfect shape by:

\n
    \n
  • Tuning the engine of your website, so you can work on creating great content!
  • \n
  • Giving you cornerstone content and internal linking features to help you optimize your site structure in a breeze.
  • \n
  • Translating your content to structured data where possible, to help search engines understand your website.
  • \n
  • Helping you manage your team: with our SEO roles you can give colleagues access to specific sections of the Yoast SEO plugin.
  • \n
  • [Premium] Automatically creating redirects when URLs change or when pages are deleted, and providing tools to manage or create redirects.
  • \n
  • [Premium] Showing you social previews to manage the way your page is shared on social networks like Facebook and Twitter.
  • \n
\n

TRUST THE EXPERTS

\n

Yoast is powered by a team of expert developers, testers, software architects, and SEO consultants. They work constantly to stay at the cutting edge of WordPress SEO, and to improve the plugin with every release.

\n

Yoast SEO is the only WordPress SEO plugin made by world-renowned SEO experts.

\n

GET PREMIUM SUPPORT

\n

The Yoast team offers regular support on the WordPress.org forums. But we hope you understand that we prioritize our Premium customers. This one-on-one email support is available to people who have purchased Yoast SEO Premium.

\n

Did you know that Yoast SEO Premium contains a lot of extra features:

\n
    \n
  • A redirect manager that prevents “404: page not found” errors
  • \n
  • Optimize without worrying about over-optimization with intelligent word form recognition available in multiple languages.
  • \n
  • Internal linking blocks to structure your site easily.
  • \n
  • Internal linking suggestions while you’re writing.
  • \n
  • Preview your content to see what it will look like in the search results and when shared on social media using the Google preview and social preview.
  • \n
  • Cornerstone content checks that point search engines to your most important pages.
  • \n
  • Connect Yoast SEO to Zapier to easily create zaps that instantly share your published posts with 2000+ destinations like Twitter, Facebook, and much more.
  • \n
\n

If you are serious about your WordPress SEO, install the Yoast SEO Premium plugin! Costs a little, saves a lot of time!

\n

OUR EXTENSIONS TO FURTHER IMPROVE YOUR WORDPRESS SEO

\n

Check out these SEO add-ons by Yoast:

\n
    \n
  • Yoast Local SEO optimizes your website for a local audience.
  • \n
  • Yoast Video SEO ensures that Google understands what your video is about, increasing the chances of ranking in the video results.
  • \n
  • Yoast News SEO for news websites that want to improve their visibility and performance in Google News.
  • \n
  • WooCommerce SEO for all online shops that want to perform better in the search results and social media.
  • \n
\n

These extensions work fine with the free version of Yoast SEO. Of course, the premium extensions also include 24/7 support.

\n

Oh, don’t forget: our Yoast Academy is for all entrepreneurs, bloggers, and anyone who wants to learn more about optimizing websites, improving your WordPress SEO, and if you want to take your content to the next level!

\n

INTEGRATIONS

\n

Yoast SEO integrates seamlessly into a range of themes and plugins. We work particularly well with:

\n\n

BUG REPORTS

\n

Do you want to report a bug for Yoast SEO? Best to do so in the WordPress SEO repository on GitHub. Please note that GitHub is not a support forum and issues will be closed if they don’t meet the bug requirements.

\n

READ MORE

\n

Want more information on search engine optimization and Yoast SEO? Have a look at:

\n\n","download_link":"https://downloads.wordpress.org/plugin/wordpress-seo.17.3.zip","tags":{"content-analysis":"Content analysis","readability":"Readability","schema":"schema","seo":"seo","xml-sitemap":"xml sitemap"},"donate_link":"https://yoa.st/1up","icons":{"1x":"https://ps.w.org/wordpress-seo/assets/icon.svg?rev=2363699","2x":"https://ps.w.org/wordpress-seo/assets/icon-256x256.png?rev=2363699","svg":"https://ps.w.org/wordpress-seo/assets/icon.svg?rev=2363699"},"wporg":true},{"name":"Gutenberg","slug":"gutenberg","version":"11.6.0","author":"Gutenberg Team","author_profile":"https://profiles.wordpress.org/matveb","requires":"5.7","tested":"5.8.1","requires_php":"5.6","rating":42,"ratings":{"1":2274,"2":201,"3":127,"4":134,"5":707},"num_ratings":3443,"support_threads":64,"support_threads_resolved":18,"active_installs":300000,"downloaded":24929546,"last_updated":"2021-09-29 9:53am GMT","added":"2017-06-16","homepage":"https://github.com/WordPress/gutenberg","short_description":"The Gutenberg plugin provides editing, customization, and site building features to WordPress. This beta plugin allows you to test bleeding-edge featu …","description":"

“Gutenberg” is a codename for a whole new paradigm for creating with WordPress, that aims to revolutionize the entire publishing experience as much as Gutenberg did the printed word. The project is following a four-phase process that will touch major pieces of WordPress — Editing, Customization, Collaboration, and Multilingual.

\n

The block editor introduces a modular approach to all parts of your site: each piece of content in the editor, from a paragraph to an image gallery to a headline, is its own block. And just like physical blocks, WordPress blocks can be added, arranged, and rearranged, allowing WordPress users to create media-rich content in a visually intuitive way — and without work-arounds like shortcodes or custom HTML.

\n

The block editor first became available in December 2018. We’re always hard at work refining the experience, creating more and better blocks, and laying the groundwork for the future phases of work. Each WordPress release comes ready to go with the stable features from multiple versions of the Gutenberg plugin, so you don’t need to use the plugin to benefit from the work being done here. However, if you’re more adventurous and tech-savvy, the Gutenberg plugin gives you the latest and greatest, so you can join us in testing bleeding-edge features, start playing with blocks, and maybe get inspired to build your own.

\n

Discover More

\n
    \n
  • \n

    User Documentation: Review the WordPress Editor documentation for detailed instructions on using the editor as an author to create posts, pages, and more.

    \n
  • \n
  • \n

    Developer Documentation: Explore the Developer Documentation for extensive tutorials, documentation, and API references on how to extend the editor.

    \n
  • \n
  • \n

    Contributors: Gutenberg is an open-source project and welcomes all contributors from code to design, from documentation to triage. See the Contributor’s Handbook for all the details on how you can help.

    \n
  • \n
\n

The development hub for the Gutenberg project can be found at https://github.com/wordpress/gutenberg. Discussions for the project are on the Make Core Blog and in the #core-editor channel in Slack, including weekly meetings. If you don’t have a slack account, you can sign up here.

\n","download_link":"https://downloads.wordpress.org/plugin/gutenberg.11.6.0.zip","tags":[],"donate_link":"","icons":{"1x":"https://ps.w.org/gutenberg/assets/icon-128x128.jpg?rev=1776042","2x":"https://ps.w.org/gutenberg/assets/icon-256x256.jpg?rev=1776042"},"wporg":true},{"name":"Setka Editor","slug":"setka-editor","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://setka.io/","short_description":"

Setka Editor is the first WYSIWYG plugin with page builder functionality.

\n","description":"\n\n\n

Setka Editor is the first WYSIWYG plugin with page builder functionality.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2018/11/Setka-Banner-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2018/11/Setka-Banner-372x209.jpg","svg":""},"wporg":false}] \ No newline at end of file +[{"name":"Podcast Player – Your Podcasting Companion","slug":"podcast-player","version":"5.2.1","author":"vedathemes","author_profile":"https://profiles.wordpress.org/vedathemes","requires":"4.9","tested":"5.8.1","requires_php":"5.6","rating":98,"ratings":{"1":0,"2":1,"3":0,"4":2,"5":45},"num_ratings":48,"support_threads":6,"support_threads_resolved":4,"active_installs":8000,"downloaded":124555,"last_updated":"2021-10-05 7:37pm GMT","added":"2019-02-06","homepage":"https://vedathemes.com/podcast-player/","short_description":"Showcase your podcast only using podcasting feed url. Use custom widget, shortcode or editor block to display podcast player anywhere on your site.","description":"

Podcast Player provides an easy way to show and play your podcast episodes using podcasting feed url. It is a must have plugin for your podcast website. Give your listeners an easy access to all your episodes from any page or even from all the pages of your website.

\n

Podcast Player Pro | Documentation

\n\n

Podcast player key features

\n
    \n
  • Give your listeners an easy access to your podcast episodes.
  • \n
  • Display responsive podcast player just by entering your podcast’s feed url.
  • \n
  • Fetch all required details from feed url.
  • \n
  • Option to modify fetched details of your podcast.
  • \n
  • Option to Show or Hide individual player elements.
  • \n
  • Give your listener an option to share your podcast episodes.
  • \n
  • Ajax live search episodes from the podcast.
  • \n
  • It is possible to have multiple instances of podcast player on single page.
  • \n
  • Self adjusting layout according to width of the podcast player.
  • \n
\n

Podcast player pro features

\n
    \n
  • Professionally showcase your podcast using our unified player, episode list and grid templates.
  • \n
  • Use powerful filter options to choose which episodes or seasons you want to display on your website.
  • \n
  • Make your entire podcast catalogue easily available using our ajax approximate search feature.
  • \n
  • Add an audio message within your podcast episode.
  • \n
  • Add audio mp3 to your WordPress posts and display as podcast episodes.
  • \n
  • Show or hide specific elements and customize color and fonts to personalize your podcast display
  • \n
\n

Setup Podcast Player Widget

\n

Display searchable podcast episodes list on any widget area of your website.

\n

Minimum Setup

\n
    \n
  1. After activating the plugin, visit Appearance > Widgets in admin dashboard.
  2. \n
  3. Look for ‘Podcast player’ widget in left ‘Available Widgets’ section.
  4. \n
  5. Drag the widget to any available sidebar/widget area.
  6. \n
  7. Enter feed url in the appropriate field.
  8. \n
  9. Click [Save] button.
  10. \n
\n

Advanced Setup

\n
    \n
  1. After activating the plugin, visit Appearance > Widgets in admin dashboard.
  2. \n
  3. Look for ‘Podcast player’ widget in left ‘Available Widgets’ section.
  4. \n
  5. Drag the widget to any available sidebar/widget area.
  6. \n
  7. Enter feed url in the appropriate field.
  8. \n
  9. Optionally, click on “Change podcast content” button to customize feed’s auto fetched details.
  10. \n
  11. Optionally, click on “Show/Hide player items” button to show or hide player elements.
  12. \n
  13. Optionally, click on “Podcast player styling” button to customize player’s accent color.
  14. \n
  15. Optionally, click on “Sort & Filter” button to sort or filter podcast episodes.
  16. \n
  17. Click [Save] button.
  18. \n
\n

Setup Podcast Player Block

\n

Display searchable podcast episodes list on any post or page. Make sure you have not disabled WordPress latest block editor.

\n

Setup

\n
    \n
  1. After activating the plugin, visit any post or page’s edit screen.
  2. \n
  3. In main content area, click on ‘+’ icon to add a new block.
  4. \n
  5. Search for ‘Podcast Player’ block.
  6. \n
  7. Enter feed url in the appropriate field. A preview of your podcast player will appear.
  8. \n
  9. Click on the podcast player preview.
  10. \n
  11. Select appropriate options from the right sidebar to customize the player.
  12. \n
  13. Save or Update the post.
  14. \n
\n

Setup Podcast Player using shortcode

\n

Minimum Setup

\n
[podcastplayer feed_url ='']\n
\n
    \n
  1. feed_url – Your podcast feed url.
  2. \n
\n

Advanced Setup

\n
[podcastplayer feed_url ='' number='' podcast_menu='' cover_image_url='' hide_cover='true' hide_description='true' hide_subscribe='true' hide_search='true' hide_loadmore='true' hide_download='true' accent_color='#65b84f']Short Description [/podcastplayer]\n
\n
    \n
  1. feed_url: Your podcast feed url.
  2. \n
  3. number: Number of podcasts episodes to be displayed at a time.
  4. \n
  5. podcast_menu: Any previously created WordPress menu’s name OR ID OR slug. (optional)
  6. \n
  7. cover_image_url: Podcast’s cover image url. The image must be from your WP media library. (optional)
  8. \n
  9. header_default: (false/true) Show player header items by default
  10. \n
  11. hide_header: Hide player header items
  12. \n
  13. hide_title: (false/true) Show / Hide podcast Title in header info section
  14. \n
  15. hide_cover: (false/true) Show / Hide podcast cover image
  16. \n
  17. hide_description: (false/true) Show / Hide podcast description
  18. \n
  19. hide_subscribe: (false/true) Show / Hide podcast subscribe button.
  20. \n
  21. hide_search: (false/true) Show / Hide podcast search field.
  22. \n
  23. hide_author: (false/true) Show / Hide author/podcaster’s name.
  24. \n
  25. hide_content: (false/true) Show / Hide podcast episode’s content.
  26. \n
  27. hide_loadmore: (false/true) Show / Hide podcast load more button.
  28. \n
  29. hide_download: (false/true) Show/ Hide podcast episode download link.
  30. \n
  31. hide_social: (false/true) Show/ Hide podcast episode social sharing links.
  32. \n
  33. accent_color: Podcast player’s accent color (Color hex-code to be entered).
  34. \n
  35. sortby: Sort podcast episodes (sort_date_desc/sort_date_asc/sort_title_desc/sort_title_asc)
  36. \n
  37. filterby: Filter by any string in episode’s title
  38. \n
  39. list_default: (false/true) Display Episodes list by default on small screen
  40. \n
  41. hide_featured: (false/true) Show / Hide podcast episode featured image
  42. \n
  43. apple_sub: Apple podcast subscription link
  44. \n
  45. google_sub: Google podcast subscription link
  46. \n
  47. Short Description: Podcast short text description. (optional)
  48. \n
\n","download_link":"https://downloads.wordpress.org/plugin/podcast-player.5.2.1.zip","tags":{"feed-to-audio":"feed to audio","podcast":"podcast","podcaster":"podcaster","podcasting":"podcasting","rss-feed":"rss feed"},"donate_link":"","icons":{"1x":"https://ps.w.org/podcast-player/assets/icon-256x256.png?rev=2025683","2x":"https://ps.w.org/podcast-player/assets/icon-256x256.png?rev=2025683"},"wporg":true},{"name":"WPSSO Schema JSON-LD Markup","slug":"wpsso-schema-json-ld","version":"5.0.0","author":"JS Morisset","author_profile":"https://profiles.wordpress.org/jsmoriss","requires":"5.0","tested":"5.8.1","requires_php":"7.0","rating":90,"ratings":{"1":5,"2":2,"3":1,"4":1,"5":55},"num_ratings":64,"support_threads":4,"support_threads_resolved":4,"active_installs":4000,"downloaded":290170,"last_updated":"2021-10-08 7:23pm GMT","added":"2016-02-14","homepage":"https://wpsso.com/extend/plugins/wpsso-schema-json-ld/","short_description":"Discontinued / deprecated add-on.","description":"

This add-on has been discontinued / deprecated:

\n

The [schema] shortcode was migrated to a new WPSSO Schema Shortcode add-on.

\n

All other features of the WPSSO Schema JSON-LD Markup (aka WPSSO JSON) add-on were integrated in the WPSSO Core v9.0.0 plugin.

\n

The WPSSO JSON Premium version remains available and supported:

\n
    \n
  • \n

    If you are using the Free / Standard version of WPSSO Core, you can safely update and continue using the WPSSO JSON Premium add-on.

    \n
  • \n
  • \n

    If you are using the WPSSO Core Premium version, you can deactivate and delete the WPSSO JSON Premium add-on (as all of its features are now available in the WPSSO Core Premium plugin).

    \n
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/wpsso-schema-json-ld.5.0.0.zip","tags":[],"donate_link":"","icons":{"default":"https://s.w.org/plugins/geopattern-icon/wpsso-schema-json-ld.svg"},"wporg":true},{"name":"ShortPixel Image Optimizer","slug":"shortpixel-image-optimiser","version":"4.22.5","author":"ShortPixel","author_profile":"https://profiles.wordpress.org/shortpixel","requires":"4.2.0","tested":"5.8.1","requires_php":"5.6","rating":92,"ratings":{"1":53,"2":12,"3":8,"4":12,"5":545},"num_ratings":630,"support_threads":12,"support_threads_resolved":8,"active_installs":300000,"downloaded":6967862,"last_updated":"2021-08-31 5:54pm GMT","added":"2014-11-05","homepage":"https://shortpixel.com/","short_description":"Speed up your website & boost your SEO by compressing old & new images and…","description":"

A freemium, easy to use, comprehensive, stable and frequently updated image compression plugin supported by the friendly team that created it. 🙂

\n

Increase your website’s SEO ranking, number of visitors and ultimately your sales by optimising any image or PDF document on your website.
\nShortPixel is an easy to use, lightweight, install-and-forget-about-it image optimization plugin that can compress all your past images and PDF documents with a single click. New images are automatically resized/rescaled and optimized on the fly, in the background. It’s also compatible with any gallery, slider or ecommerce plugin.

\n

Ready for a quick DEMO? Test our plugin here.
\nOr you can create a staging copy of your site using WP Staging and test it there.

\n

Short Pixel uses minimal resources and works well with any shared, cloud, VPS or dedicated web hosting. It can optimize any image you have on your website even the images that aren’t listed in Media Library like those in galleries like NextGEN, Modula or added directly via FTP!

\n

Both lossy and lossless image compression are available for the most common image types (JPG, PNG, GIF, WebP and AVIF) plus PDF files.
\nWe also offer glossy JPEG compression which is a very high quality lossy optimization algorithm. Specially designed for photographers!
\nOptimized images mean better user experience, better PageSpeed Insights or GTmetrix results, better Google PageRank and more visitors.

\n

Make an instant image compression test of your site or compress some images to test our optimization algorithms.

\n

Why is ShortPixel the best choice when it comes to image optimization or PDF compression?

\n
    \n
  • popular plugin with over 300,000 active installations – according to WordPress
  • \n
  • compress JPG (and its variations JPEG, JPEG 2000, JPEG XR), PNG, GIF (still or animated) images and also PDF documents
  • \n
  • option to convert any JPEG, PNG or GIF (even animated ones!) to WebP and AVIF for more Google love. How to enable WebP?. What is AVIF and why is it good?.
  • \n
  • option to automatically convert PNG to JPG if that will result in smaller images. Ideal for large images in PNG format
  • \n
  • option to include the next generation images (WebP and AVIF) into the front-end pages by using the <picture> tag instead of <img>, independent from generating them through the plugin
  • \n
  • compatible with WP Retina 2x – all retina images are automatically compressed. How to benefit from Retina displays?
  • \n
  • optimize thumbnails as well as featured images. You can also select individual thumbnails to exclude from optimization
  • \n
  • ability to optimize any image on your site including images in NextGEN Gallery and any other image galleries or sliders
  • \n
  • option to scale images down, with 2 different options, which is very useful to automatically resize large images. This applies to the featured images and there is no need for additional plugins like Imsanity
  • \n
  • CMYK to RGB conversion
  • \n
  • skip already optimized images
  • \n
  • 24h stellar support (24/7) directly from developers.
  • \n
  • easily test lossy/glossy/lossless versions of the images with a single click in your Media Library
  • \n
  • great for photographers: keep or remove EXIF data from your images, compress photos with lossless option
  • \n
  • works well with both HTTPS and HTTP websites
  • \n
  • uses progressive JPEG for larger images in order to speed up the image display
  • \n
  • you can run ShortPixel plugin on multiple websites or on a multisite with a single API Key
  • \n
  • it is safe to test and use the plugin: all the original images are by default saved in a local backup that can be restored with a click, either one by one or in bulk
  • \n
  • ‘Bulk’ optimize all the existing images in Media Library or in any gallery with one click
  • \n
  • works great for eCommerce websites using WooCommerce or other plugins
  • \n
  • works great with NextGEN gallery, Foo Gallery and any other galleries and sliders
  • \n
  • compatible with WP Engine hosted websites and all the major hosting providers
  • \n
  • compatible with WPML and WPML Media plugins
  • \n
  • no file size limit
  • \n
  • integrates with Gravity Forms post_image field type optimizing the images upon upload
  • \n
  • compatible with watermarking plugins
  • \n
  • option to deactivate auto-optimizing images on upload
  • \n
  • no credits are used for the images that are optimised less that 5%
  • \n
  • direct integration with CloudFlare, either by using an API Key or a Token
  • \n
  • 30 days optimization report with all image details and overall statistics
  • \n
  • We are GDPR compliant! Read more.
  • \n
  • free optimization credits for non-profits, contact us for details
  • \n
\n

How much does it cost?
\nShortPixel comes with 100 free credits/month and additional credits can be bought for as little as $4.99 for 5,000 image credits.
\nCheck out our prices.

\n
\n

Testimonials:
\n ★★★★★ A Super Plugin works very well 62% reduction overall. robertvarns
\n ★★★★★ The secret sauce for a WordPress website. mark1mark
\n ★★★★★ A must have plugin, great support! ElColo13
\n ★★★★★ Excellent Plugin! Even Better Customer Service! scaliendo
\n ★★★★★ Great image compression, solid plugin, equally great support. matters1959
\n more testimonials

\n
\n\n

Help us spread the word by recommending ShortPixel to your friends and collect 100 lifetime monthly additional image credits for each referred active user. Make money by promoting a great plugin with our 30% commission affiliate program.

\n

Other plugins by ShortPixel

\n\n

Get in touch!

\n\n

Actions and Filters for Developers

\n

The ShortPixel Image Optimiser plugin calls the following actions and filters:

\n
do_action( 'shortpixel_image_optimised', $post_id );\n
\n

upon successful optimization;

\n
do_action(\"shortpixel_before_restore_image\", $post_id);\n
\n

before restoring an image from backup;

\n
do_action(\"shortpixel_after_restore_image\", $post_id);\n
\n

after succesful restore;

\n
apply_filters(\"shortpixel_backup_folder\", $backup_folder, $main_file_path, $sizes);\n
\n

just before returning the ShortPixel backup folder, usually /wp-content/uploads/ShortpixelBackups. The $sizes are the sizes array from metadata;

\n
apply_filters('shortpixel_image_exists', file_exists($path), $path, $post_id);\n
\n

post ID is not always set, only if it’s an image from Media Library;

\n
apply_filters('shortpixel_image_urls', $URLs, $post_id);\n
\n

filters the URLs that will be sent to optimisation, $URLs is a plain array;

\n
apply_filters('shortpixel/db/chunk_size', $chunk);\n
\n

the $chunk is the value ShortPixel chooses to use as number of selected records in one query (based on total table size), some hosts work better with a different value;

\n
apply_filters('shortpixel/backup/paths', $PATHs, $mainPath);\n
\n

filters the array of paths of the images sent for backup and can be used to exclude certain paths/images/thumbs from being backed up, based on the image path. $mainPath is the path of the main image, while $PATHs is an array with all files to be backed up (including thumbnails);

\n
apply_filters('shortpixel/settings/image_sizes', $sizes);\n
\n

filters the array ($sizes) of image sizes which can be excluded from processing (displayed in the plugin Advanced settings).

\n

In order to define custom thumbnails to be picked up by the optimization you have two options, both comma separated defines:

\n
define('SHORTPIXEL_CUSTOM_THUMB_SUFFIXES', '_tl,_tr');\n
\n

will handle custom thumbnails like image-100x100_tl.jpg;

\n
define('SHORTPIXEL_CUSTOM_THUMB_INFIXES', '-uae');\n
\n

will handle custom thumbnails like image-uae-100×100.jpg;

\n
define('SHORTPIXEL_USE_DOUBLE_WEBP_EXTENSION', true);\n
\n

will tell the plugin to create double extensions for the WebP image counterparts, for example image.jpg.webp for image.jpg;

\n
define(\"SHORTPIXEL_NOFLOCK\", true);\n
\n

don’t use flock queue, only activate this when you have flock() denied errors on your installation;

\n
define(\"SHORTPIXEL_EXPERIMENTAL_SECURICACHE\", true);\n
\n

adds timestamps to URLS, to prevent hitting the cache. Useful for persistent caches.

\n

Hide the Cloudflare settings by defining these constants in wp-config.php:

\n
define('SHORTPIXEL_CFTOKEN', 'the Cloudflare API token that has Purge Cache right');\ndefine('SHORTPIXEL_CFZONE', 'The Zone ID from the domain settings in Cloudflare');\n
\n

Hide the WSO banner in the settings by defining this constant in wp-config.php:

\n
define('SHORTPIXEL_NO_BANNER', true);\n
\n

Alternatively, you can use this filter in your theme’s functions.php file:

\n
add_filter('shortpixel/settings/no_banner', true);\n
\n","download_link":"https://downloads.wordpress.org/plugin/shortpixel-image-optimiser.4.22.5.zip","tags":{"compressor":"compressor","convert-webp":"convert webp","image-optimization":"image optimization","optimize-images":"optimize images","resize":"resize"},"donate_link":"","icons":{"1x":"https://ps.w.org/shortpixel-image-optimiser/assets/icon-128x128.png?rev=1038819","2x":"https://ps.w.org/shortpixel-image-optimiser/assets/icon-256x256.png?rev=1038819"},"wporg":true},{"name":"Theme Kit for Twenty Twenty-One & Twenty Twenty (Customization, Gutenberg Blocks, Templates) – Twentig","slug":"twentig","version":"1.3.6","author":"Twentig","author_profile":"https://profiles.wordpress.org/twentig","requires":"5.5","tested":"5.8.1","requires_php":"5.6","rating":100,"ratings":{"1":0,"2":0,"3":0,"4":2,"5":109},"num_ratings":111,"support_threads":38,"support_threads_resolved":34,"active_installs":10000,"downloaded":150718,"last_updated":"2021-09-15 2:23pm GMT","added":"2019-05-29","homepage":"https://twentig.com","short_description":"Supercharge your WordPress theme (Twenty Twenty-One & Twenty Twenty) with customization options, enhanced Gutenberg blocks,…","description":"

The easy way to build a beautiful website.

\n

Twentig helps you customize the default WordPress theme (Twenty Twenty-One and Twenty Twenty) the way you want with Google Fonts, colors, custom layouts, and many more options.

\n

With enhanced Gutenberg blocks, pre-designed block templates, and starter websites, you’ve got everything you need to build stunning pages that look great on any device — no coding or design skills needed.

\n
\n

“Twentig is a plugin that essentially gives superpowers to the default theme.” — Justin Tadlock, WP Tavern

\n
\n

Customize the most popular WordPress theme. Your way.

\n

Twentig offers powerful features to customize the Twenty Twenty-One and Twenty Twenty themes — making it easier than ever to create your own professional website.

\n

Advanced theme customization. From post grid to sidebar to sticky header to footer layout, our plugin provides endless ways to enhance your WordPress theme. Change the look and feel of your website by customizing the fonts (Google Fonts), colors, global styles, 404 page, and more.

\n

Custom page templates. Control the look of your entire page with our page templates. Easily remove the page title, header, footer, or set a transparent header. Now you can use Gutenberg blocks to create a custom hero, landing page, coming soon page, and more.

\n

Tailored design. Twentig brings design improvements to the default WordPress theme. Our additional block settings and pre-designed block templates are specially built for it — so it’s simple to make beautiful pages with Gutenberg blocks.

\n

Start with a pre-built website.

\n

Instead of starting from scratch, you can quickly import one of Twentig’s starter websites crafted by award-winning designers.

\n

The simple way to import starter websites. Choose from a variety of starter websites and seamlessly load them in a few seconds in the Customizer. Preview and customize your theme any way you like before publishing it to your live site.

\n

Flexible import. Twentig lets you import full websites (Customizer settings, menus, widgets, and pages built with Gutenberg blocks). You can also only import what you need, be it the styling or the pages, on a fresh install or an existing website.

\n

Check out the starter websites to see the power and flexibility of Twentig.

\n

Do more with Gutenberg blocks.

\n

Twentig enhances the existing Gutenberg blocks — taking the WordPress block editor to a new level of design and creativity.

\n

Block customization made easy. We’ve added the right amount of features to the Gutenberg core blocks. So you can easily customize your blocks to fit your needs with just a few clicks.

\n

Powerful Gutenberg block features. Twentig provides alternative styles, advanced block settings, margin controls, and CSS classes. From columns style to group shape divider to typography settings, you have the best tools to customize the Gutenberg blocks and build gorgeous pages.

\n

Build your pages with ready-to-use templates.

\n

Twentig brings hundreds of pre-designed block patterns and page templates — making it easier and faster than ever to create stunning pages.

\n

Flexible block templates. Choose from a variety of versatile block patterns and page templates that you can mix and match to fit your project. Our block template library is designed to enable a wide range of uses and endless design possibilities.

\n

Professional design. Our templates are responsive and give your pages a professional look right from the start — no coding or design skills needed.

\n

Twentig features list

\n

Check out the screenshots to see how Twentig can transform your theme and the Gutenberg blocks.

\n

ADDITIONAL THEME OPTIONS

\n

Header

\n
    \n
  • Header layouts
  • \n
  • Sticky header
  • \n
  • Header width
  • \n
  • Header decoration
  • \n
  • Additional elements: search bar, social icons, button
  • \n
  • Logo width
  • \n
  • Custom logo for transparent header
  • \n
  • Menu link style
  • \n
  • Option to display the burger menu on tablet
  • \n
\n

Footer

\n
    \n
  • Footer layouts
  • \n
  • Footer widgets layout
  • \n
  • Footer width
  • \n
  • Custom copyright and remove “Powered by WordPress”
  • \n
  • Social icons
  • \n
\n

Site Layout

\n
    \n
  • Text width
  • \n
  • Wide width (Twenty Twenty-One theme)
  • \n
  • Site width to create a boxed layout site (Twenty Twenty-One theme)
  • \n
\n

Blog Posts Page

\n
    \n
  • Option to display the page title (Twenty Twenty-One theme)
  • \n
  • Blog layouts: stack, post grid, post grid card
  • \n
  • Blog sidebar (Twenty Twenty-One theme)
  • \n
  • Number of columns for post grid layouts
  • \n
  • Featured image options
  • \n
  • Blog content options
  • \n
  • Blog meta options
  • \n
  • Pagination style (Twenty Twenty-One theme)
  • \n
\n

Single Blog Post

\n
    \n
  • Featured image and post title layouts
  • \n
  • Blog sidebar (Twenty Twenty-One theme)
  • \n
  • Option to display the manual excerpt below the title
  • \n
  • Single post meta options
  • \n
  • Post navigation layout (Twenty Twenty theme)
  • \n
  • Hide comments section
  • \n
\n

Typography & Colors

\n
    \n
  • Google Fonts options (curated collection and custom Google Fonts)
  • \n
  • Google Fonts pairings and Google Fonts presets
  • \n
  • Font settings
  • \n
  • Color options
  • \n
\n

Pages

\n
    \n
  • Custom page templates: remove the page title, header, and footer, or set a transparent header
  • \n
  • Featured image and page title layouts
  • \n
\n

Custom 404 Page

\n
    \n
  • Option to assign any page as the 404 page
  • \n
\n

Additional Settings

\n
    \n
  • Minimal style for links (Twenty Twenty-One theme)
  • \n
  • Button style
  • \n
  • Separator style
  • \n
  • Social icons style (Twenty Twenty theme)
  • \n
\n

ADDITIONAL GUTENBERG BLOCK SETTINGS

\n
    \n
  • Gutenberg core blocks: top margin and bottom margin
  • \n
  • Group: shadow, border, shape divider, full height
  • \n
  • Columns: gutter, responsive layout, columns style (card, border), text alignment, stretched link
  • \n
  • Media & Text: styles (shadow, overlap), responsive layout, reverse stack order, stretched link, full height
  • \n
  • Cover: styles (shadow, inner border), stretched link, hover effect
  • \n
  • Heading: typography options, decoration
  • \n
  • Paragraph: wide width, typography options
  • \n
  • List: styles (dash, checkmark, arrow, border, no bullet, inline), typography options, spacing
  • \n
  • Image: styles (rounded, shadow, frame, border), image filter
  • \n
  • Gallery: stack variation, styles (rounded, frame), fixed width columns, image aspect ratio, gutter, responsive layout, caption size, border, image filter
  • \n
  • YouTube, Vimeo, SoundCloud, and Video blocks: style (frame)
  • \n
  • Latest Posts: styles (card, border), image aspect ratio, heading size, stretched link, text alignment
  • \n
  • Social Icons: hover effect
  • \n
  • Quote: additional styles
  • \n
  • Pullquote: additional styles
  • \n
  • Table: styles (border, inner border), vertical alignment
  • \n
  • Separator: style (short line), responsive visibility
  • \n
  • Spacer: responsive visibility
  • \n
\n

GUTENBERG TEMPLATE LIBRARY

\n

Hundreds of Gutenberg block patterns grouped by following categories:

\n
    \n
  • Columns
  • \n
  • Text Columns
  • \n
  • Text and Image
  • \n
  • Text
  • \n
  • Hero
  • \n
  • Cover
  • \n
  • Call to Action
  • \n
  • List
  • \n
  • Numbers, Stats
  • \n
  • Gallery
  • \n
  • Video, Audio
  • \n
  • Latest Posts
  • \n
  • Contact
  • \n
  • Team
  • \n
  • Testimonials
  • \n
  • Logos, Clients
  • \n
  • Pricing
  • \n
  • FAQ
  • \n
  • Events, Schedule
  • \n
\n

Dozens of pre-designed page templates grouped by following categories:

\n
    \n
  • Homepage
  • \n
  • About
  • \n
  • Services
  • \n
  • Contact
  • \n
  • Single Page
  • \n
\n

Get more

\n\n

Enjoying Twentig?

\n\n","download_link":"https://downloads.wordpress.org/plugin/twentig.1.3.6.zip","tags":{"gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","templates":"templates","theme":"theme","twenty-twenty-one":"twenty-twenty-one"},"donate_link":"https://www.paypal.com/donate?hosted_button_id=JTBTPQAFEA94E","icons":{"1x":"https://ps.w.org/twentig/assets/icon.svg?rev=2569439","2x":"https://ps.w.org/twentig/assets/icon-256x256.png?rev=2569439","svg":"https://ps.w.org/twentig/assets/icon.svg?rev=2569439"},"wporg":true},{"name":"Custom Post Type UI","slug":"custom-post-type-ui","version":"1.10.0","author":"WebDevStudios","author_profile":"https://profiles.wordpress.org/williamsba1","requires":"5.5","tested":"5.8.1","requires_php":"5.6","rating":94,"ratings":{"1":12,"2":3,"3":6,"4":9,"5":204},"num_ratings":234,"support_threads":54,"support_threads_resolved":36,"active_installs":1000000,"downloaded":8989005,"last_updated":"2021-10-05 1:54am GMT","added":"2010-02-26","homepage":"https://github.com/WebDevStudios/custom-post-type-ui/","short_description":"Admin UI for creating custom post types and custom taxonomies for WordPress","description":"

Custom Post Type UI provides an easy to use interface for registering and managing custom post types and taxonomies for your website.

\n

While CPTUI helps solve the problem of creating custom post types, displaying the data gleaned from them can be a whole new challenge. That’s why we created Custom Post Type UI Extended. View our Layouts page to see some examples that are available with Custom Post Type UI Extended.

\n

Official development of Custom Post Type UI is on GitHub, with official stable releases published on WordPress.org. The GitHub repo can be found at https://github.com/WebDevStudios/custom-post-type-ui. Please use the Support tab for potential bugs, issues, or enhancement ideas.

\n

Pluginize was launched in 2016 by WebDevStudios to promote, support, and house all of their WordPress products. Pluginize is not only creating new products for WordPress all the time, like CPTUI Extended, but also provides ongoing support and development for WordPress community favorites like CMB2 and more.

\n","download_link":"https://downloads.wordpress.org/plugin/custom-post-type-ui.1.10.0.zip","tags":{"cms":"cms","cpt":"cpt","custom-post-types":"custom post types","post":"post","types":"types"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=3084056","icons":{"1x":"https://ps.w.org/custom-post-type-ui/assets/icon-128x128.png?rev=2549362","2x":"https://ps.w.org/custom-post-type-ui/assets/icon-256x256.png?rev=2549362"},"wporg":true},{"name":"Flex Posts – Widget and Gutenberg Block","slug":"flex-posts","version":"1.8.1","author":"Tajam","author_profile":"https://profiles.wordpress.org/tajam","requires":"5.2","tested":"5.8.1","requires_php":false,"rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":17},"num_ratings":17,"support_threads":7,"support_threads_resolved":3,"active_installs":3000,"downloaded":25372,"last_updated":"2021-07-29 10:41am GMT","added":"2018-05-10","homepage":"https://tajam.id/flex-posts/","short_description":"A widget to display posts with thumbnails in various layouts. Fits nicely in any widget…","description":"

Flex Posts is a widget to display posts in various different layouts. It is useful for a news site where you need to display a lot of posts in a page.

\n

The widget is responsive so you can place it in any widget area. The widget content will adapt based on the width of its container. In a narrow area like standard sidebar, posts will be displayed vertically, but in a wider area, posts will be displayed in 2 or 3 columns depends on the container’s width.

\n

Widget Settings

\n
    \n
  • Title: Set the widget title. Leave it empty to hide the title section.
  • \n
  • Title URL: Set the title link url. Leave it empty to disable link in the title.
  • \n
  • Layout: Select a widget layout, from layout 1 to 4.
  • \n
  • Post type: Select the post type. Options include: Post, Page, custom post types if available, and any.
  • \n
  • Category: Select a category for the posts, or choose All Categories to disable this filter.
  • \n
  • Tag(s): Set a post tag (using the tag slug). You can also use comma separated value for multiple tags. Prepending a tag with a hyphen will exclude posts matching that tag. Eg, featured, -video will show posts tagged with featured but not video.
  • \n
  • Order by: Set the order in which the posts will be displayed. Options include: Newest, Oldest, Most Commented, Alphabetical, Random, Modified Date.
  • \n
  • Number of posts to show: Set the number of posts displayed.
  • \n
  • Number of posts to skip: Set the number of posts to displace or pass over.
  • \n
  • Show image on: Select in which posts the image will be displayed. Options include: All posts, First post only, or none.
  • \n
  • Image size: Select image size from registered image sizes.
  • \n
  • Show post title: Choose to show or hide the post title.
  • \n
  • Show categories: Choose to show or hide the categories.
  • \n
  • Show author: Choose to show or hide the author.
  • \n
  • Show date: Choose to show or hide the date.
  • \n
  • Show comments number: Choose to show or hide the comments number.
  • \n
  • Show excerpt: Choose to show or hide the excerpt
  • \n
  • Excerpt length: Set the number of words for the excerpt.
  • \n
  • Show read more link: Choose to show or hide the Read More link.
  • \n
  • Read more text: Set the text for the read more link. You can leave it empty to use the default text Read More.
  • \n
  • Show pagination: Choose to show or hide the pagination links.
  • \n
  • Additional class(es): Set a custom class for the widget container. You can use spaces to separate multiple classes.
  • \n
\n

Gutenberg Block

\n

Since version 1.1.0, Flex Posts also includes a gutenberg block. You can add the widget directly into the post/page content with the WP 5.0 block editor.

\n

Demo

\n

Please visit the live demo here: Flex Posts Demo

\n

Requirements

\n

This plugin has been tested and works with at least PHP 5.3 installed in your environment. But we strongly recommend you to use the latest PHP version, as using older versions may expose you to security vulnerabilities.

\n","download_link":"https://downloads.wordpress.org/plugin/flex-posts.zip","tags":{"category-posts":"category posts","grid":"grid","magazine":"magazine","news":"news","responsive":"responsive"},"donate_link":"https://tajam.id/","icons":{"1x":"https://ps.w.org/flex-posts/assets/icon-128x128.png?rev=1871802"},"wporg":true},{"name":"YARPP – Yet Another Related Posts Plugin","slug":"yet-another-related-posts-plugin","version":"5.27.5","author":"YARPP","author_profile":"https://profiles.wordpress.org/jeffparker","requires":"3.7","tested":"5.8.1","requires_php":"5.3","rating":94,"ratings":{"1":33,"2":2,"3":14,"4":45,"5":651},"num_ratings":745,"support_threads":25,"support_threads_resolved":9,"active_installs":100000,"downloaded":6558008,"last_updated":"2021-09-15 5:54pm GMT","added":"2008-01-02","homepage":"https://yarpp.com/","short_description":"The best WordPress plugin for displaying related posts. Simple and flexible, with a powerful proven…","description":"

Related Posts Plugin for WordPress

\n

Yet Another Related Posts Plugin (YARPP) is a professionally maintained, highly customizable, performant and feature rich plugin that displays pages, posts, and custom post types related to the current entry. YARPP introduces your visitors to other relevant content on your site — boosting visitor engagement, time on site and SEO. Related Posts can increase your pageviews up to 10%. Simply install, activate and watch your sessions and pageviews increase.

\n

Key Features

\n
    \n
  • An advanced and versatile algorithm: Using a customizable algorithm considering post titles, content, tags, categories, and custom taxonomies, YARPP finds related content from across your site
  • \n
  • Caching: Inbuilt cache makes subsequent queries super efficient and fast
  • \n
  • Custom Templates and Styles: Use a pre-built list or thumbnail template, or use the YARPP custom templating system for 100% control of how results are styles and displayed
  • \n
  • Flexible with a full range of placement options, including:\n\n
  • \n
  • Works with all languages, including those with full-width (double-byte) characters and those that don’t use spaces between words
  • \n
  • Custom post type and taxonomy support
  • \n
  • WordPress Multisite support
  • \n
  • bbPress forums support
  • \n
  • WooCommerce support
  • \n
  • Professionally maintained and supported with regular updates
  • \n
\n

YARPP Algorithm Explained

\n

\n

Contribute: Translate YARPP

\n

YARPP is available for translation directly on WordPress.org. Please check out the official Translator Handbook.

\n

Wide Support

\n

YARPP is the most popular and the highest rated Related Posts Plugin for WordPress. With your support, this plugin always strives to be the best WordPress plugin for Content Discovery and Related Posts.

\n

✔ Over 10 years of development
\n✔ Over 6 million downloads
\n✔ Translated into more than a dozen languages
\n✔ Professionally maintained and actively supported with regular updates
\n✔ Works with all languages

\n

YARPP works best with PHP 5.3 or greater, MySQL 5.6 or greater OR MariaDB 10.1 or greater, and WordPress 3.7 or greater. See the FAQ for answers to common questions.

\n","download_link":"https://downloads.wordpress.org/plugin/yet-another-related-posts-plugin.5.27.5.zip","tags":{"contextual-related-posts":"contextual related posts","posts":"posts","related-posts":"related posts","seo":"seo","similar-posts":"similar posts"},"donate_link":"https://yarpp.com","icons":{"1x":"https://ps.w.org/yet-another-related-posts-plugin/assets/icon-128x128.png?rev=2549977","2x":"https://ps.w.org/yet-another-related-posts-plugin/assets/icon-256x256.png?rev=2549977"},"wporg":true},{"name":"Superb WordPress Table (SEO Optimized Tables With Schema)","slug":"superb-tables","version":"1.0.9","author":"SuPlugins","author_profile":"https://profiles.wordpress.org/suplugins","requires":"3.0.1","tested":"5.8.1","requires_php":"5.2.4","rating":86,"ratings":{"1":0,"2":1,"3":0,"4":0,"5":3},"num_ratings":4,"support_threads":1,"support_threads_resolved":1,"active_installs":4000,"downloaded":36915,"last_updated":"2021-10-01 9:37am GMT","added":"2019-03-05","homepage":"https://superbthemes.com/plugins/superb-tables/","short_description":"Responsive & SEO Optimized tables. Get your Google Featured Snippets. Different table designs, table shortcodes…","description":"

Responsive & SEO Optimized tables. Get your Google Featured Snippets. Different table designs, table shortcodes & lightweight code.

\n

Click here to view the demo!

\n

Features

\n
    \n
  • Table Shortcodes
  • \n
  • Multiple Color Schemes
  • \n
  • Use Themes Own Table Design
  • \n
  • Schema Markup (Micro Data)
  • \n
  • Create Unlimited Tables
  • \n
  • Create Unlimited Rows
  • \n
  • Create unlimited Columns
  • \n
  • SEO-friendly Tables With Schema markup
  • \n
  • Purple Color Scheme
  • \n
  • Black/White Color Scheme
  • \n
  • Swap around on columns & rows with drag n’ drop
  • \n
  • Delete Tables & Remove Them From Your Database
  • \n
  • Gives you a better chance to get Google Featured Snippets
  • \n
  • Friendly User Support)
  • \n
  • GDPR Compliant
  • \n
  • W3C Valid Code
  • \n
  • WYSIWYG Functionality Editor
  • \n
\n

Configuring the plugin

\n

Once you’ve installed the plugin, check the left sidebar, and you will notice the Superb Table section. Click on it, and you can now create your first table. Just click on the Add New Table button.

\n

Feel free to add as many columns and rows as you want—inserting rows and columns is extremely easy.

\n

You have a few options to make your table stand apart. First, choose one of the three color schemes: standard, purple, or black. Second, choose your table design: default or custom. Block, left, and inline-block are the floating modes for your table. Finally, enable or disable the full width of the table.

\n

Once you finish your table, name it and save it. All you have to do now is to copy the shortcode and paste wherever you want, you can for example embed it in the Gutenberg Shortcode Block! (It works in the classic WordPress editor too)

\n

Consider purchasing our premium version for $11 to unlock more features!

\n

Why use a HTML table

\n

Displaying data within a comparison table is beneficial for not only readers but also content creators. A table does a better job than long paragraphs of text, underlined phrases, and bulleted lists. It shows a lot of information side by side in a concise format. Bloggers and content creators should create tables and insert the data. There’s no need to search for breathtaking expressions, cool descriptions, or digestible lists of items. It’s just pure data, and everyone is happy with this situation. You can read our full guide on How to Add a Table to Your WordPress Website with Superb Tables.

\n

Responsive Tables

\n

We developed Superb Tables mobile friendly by taking responsiveness into account, and as a result, you can make a WordPress table responsive by using our plugin. The tables are fully responsive regardless of the number of rows and columns. The plugin works on all mobile devices and tablets (iPhone, Android etc.). The plugin works with AMP.

\n

SEO Friendly WordPress Tables With Schema Markup

\n

“Schema markup“ and “featured snippets“ are two interconnected terms that are being used by more and more bloggers, SEO practitioners, and developers. Have you noticed that Google now provides complex answers in the form of lists, tables, paragraphs, or videos directly on the results page? Those are featured snippets.

\n

Moz claims that 23% of all search results include a featured snippet—a descriptive box displayed on the search results page providing information for your query. It may include paragraphs, lists, videos, or tables. You have to consider featured snippets when choosing a table plugin—can it help Google generate a featured snippet from the data within your table?

\n

We developed Superb Tables with featured snippets in mind, and you can use the plugin worry-free. We used schema markup, which is the code that helps search engine bots generate snippets from your content, including tables. It’s a great way for affiliate websites and blogs to promote their content.

\n

You must use WordPress tables with schema markup to get featured snippets on search engines, and Superb Tables is a reliable solution in this respect.

\n

Add Tables everywhere & use them for Any Purpose

\n

You can insert the SEO optimised tables with microdata everywhere through the shortcode. For example in a popup, widgets, Gutenberg blocks, email newsletter sent from your WordPress website. You can also insert it on any post or page, even category pages, blog feed, search page and your 404 page! The plugin is made for affiliates marketers and affiliate websites, having a good SERP rank in Google and Bing is critical. When you’re looking to improve your ranking then all of your plugins must be SEO optimized, otherwise it’s gonna be hard to create monetization through ads programs such as AdSense and Amazon Associates Program.

\n

We know that business is important for any modern blog or affiliate marketing website that’s looking to make a revenue from it. Remember to use HTTPS (SSL) on your website, a CDN and lightweight stats tracking tools such as Google Analytics to better your SEO as well.

\n

Guide to creating your Superb Tables

\n
    \n
  1. In the wordpress admin panel, go to the sidebar and click ‘Superb Tables’.
  2. \n
  3. Click the green ‘Add new table’ in the top left corner
  4. \n
  5. Fill in your table data, click ‘Save’
  6. \n
  7. Click ‘Superb Tables’ in the left sidebar and copy paste the ‘Table Shortcode’
  8. \n
  9. Insert the Table Shortcode (For example [spbtbl_sc id=1] ) in a post, page, widget or in HTML.
  10. \n
\n

You’re done!

\n

Resources & Inspiration

\n
    \n
  • Auto-Expand: https://codepen.io/vsync/pen/frudD
  • \n
  • Data Table: https://codepen.io/alassetter/pen/cyrfB
  • \n
  • Table DnD: https://github.com/isocra/TableDnD/
  • \n
  • Table icon: https://www.iconfinder.com/icons/1608863/table_icon#size=256
  • \n
  • Custom confirm: https://codepen.io/Ana_Champion/pen/JRbZEL
  • \n
  • Table design inspiration: https://codepen.io/lukepeters/pen/bfFur
  • \n
  • Table design inspiration: https://codepen.io/alassetter/pen/cyrfB
  • \n
  • Table design inspiration: https://uicookies.com/wp-content/uploads/2018/05/table-responsive-v2-1000×750.jpg
  • \n
  • Table design inspiration: https://uicookies.com/wp-content/uploads/2018/05/table-responsive-v1.jpg
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/superb-tables.1.0.9.zip","tags":{"content-tables":"content tables","responsive-tables":"responsive tables","table":"table","tables":"tables"},"donate_link":"","icons":{"1x":"https://ps.w.org/superb-tables/assets/icon-256x256.png?rev=2044672","2x":"https://ps.w.org/superb-tables/assets/icon-256x256.png?rev=2044672"},"wporg":true},{"name":"Floating Button","slug":"floating-button","version":"5.0.1","author":"Wow-Company","author_profile":"https://profiles.wordpress.org/wpcalc","requires":"3.2","tested":"5.8.1","requires_php":"5.3","rating":80,"ratings":{"1":1,"2":1,"3":0,"4":0,"5":5},"num_ratings":7,"support_threads":1,"support_threads_resolved":0,"active_installs":2000,"downloaded":34863,"last_updated":"2021-09-24 7:38am GMT","added":"2018-09-08","homepage":"https://wordpress.org/plugins/floating-button/","short_description":"Easily create a custom sticky floating buttons. The Floating Button will be the effective solution for increasing the recognition of your web resource","description":"

The Floating Button is the free WordPress plugin for creating the original sticky floating actions buttons. It allows you to install on the site floating buttons with unique thematic icons. The extension serves for placing both traditional navigation bar and additional block with useful information for user.

\n

The Floating Button plugin will be the effective solution for increasing the recognition of your web resource. Its connection will bring originality and novelty to the used theme of the site. The extension helps to configure user-friendly navigation, place useful information or contact panel.

\n

Main features

\n
    \n
  • 2 submenu;
  • \n
  • more than 1500+ FontAwesome icons;
  • \n
  • any links insertion;
  • \n
  • using the tooltips to provide more information;
  • \n
  • round buttons shape;
  • \n
  • LogIn link;
  • \n
  • LogOut link;
  • \n
  • Lost password link
  • \n
\n

Floating Button can be used for:

\n
    \n
  • site navigation;
  • \n
  • additional menu;
  • \n
  • social panel;
  • \n
  • user menu;
  • \n
  • Skype menu and others;
  • \n
  • And more…
  • \n
\n

Pro version

\n

Connect the Pro-version of the plugin to gain access to more features:

\n

Preview of Pro version

\n
    \n
  • create an unlimited amount of buttons;
  • \n
  • use up to 4 floating button positions;
  • \n
  • change the form of the menu display: Circle, Rounded square, Ellipse, Square;
  • \n
  • set the color of the main button and submenu items;
  • \n
  • accompany the change in navigation behavior with the highlight when hovering the mouse cursor;
  • \n
  • use the built-in user menu, social panel and print function;
  • \n
  • set the display according to the user role and status;
  • \n
  • change the menu output depending on the language of the page;
  • \n
  • add restrictions for screens with large or small resolution;
  • \n
  • use the categories on the site, exceptions and ID to place the menu on individual pages;
  • \n
  • insert the shortcode of the panel in the specified location;
  • \n
  • And more…
  • \n
\n

Buy Pro version

\n

Use with other plugins to maximize your results

\n\n

Support

\n

Search for answers and ask your questions at support center

\n","download_link":"https://downloads.wordpress.org/plugin/floating-button.5.0.1.zip","tags":{"circle-menu":"circle menu","float-menu":"float menu","floating-button":"floating button","floating-menu":"floating menu","sticky-button":"sticky button"},"donate_link":"https://wow-estore.com/item/floating-button-pro/","icons":{"1x":"https://ps.w.org/floating-button/assets/icon-128x128.png?rev=2533016","2x":"https://ps.w.org/floating-button/assets/icon-256x256.png?rev=2533016"},"wporg":true},{"name":"Breadcrumb NavXT","slug":"breadcrumb-navxt","version":"6.6.0","author":"John Havlik","author_profile":"https://profiles.wordpress.org/mtekk","requires":"4.9","tested":"5.7.3","requires_php":"5.5","rating":94,"ratings":{"1":5,"2":2,"3":4,"4":7,"5":104},"num_ratings":122,"support_threads":9,"support_threads_resolved":2,"active_installs":900000,"downloaded":10181836,"last_updated":"2021-04-01 2:13am GMT","added":"2007-12-01","homepage":"http://mtekk.us/code/breadcrumb-navxt/","short_description":"Breadcrumb NavXT, the successor to the popular WordPress plugin Breadcrumb Navigation XT, was written from the ground up to be better than its ancesto …","description":"

Breadcrumb NavXT, the successor to the popular WordPress plugin Breadcrumb Navigation XT, was written from the ground up to be better than its ancestor. This plugin generates locational breadcrumb trails for your WordPress powered blog or website. These breadcrumb trails are highly customizable to suit the needs of just about any website running WordPress. The Administrative interface makes setting options easy, while a direct class access is available for theme developers and more adventurous users.

\n

PHP Requirements

\n

Breadcrumb NavXT 5.2 and newer require PHP5.3
\nBreadcrumb NavXT 5.1.1 and older require PHP5.2

\n

Features (non-exhaustive)

\n
    \n
  • RDFa format Schema.org BreadcrumbList compatible breadcrumb generation.
  • \n
  • Extensive breadcrumb customization control via a settings page with appropriate default values for most use cases.
  • \n
  • Network admin settings page for managing breadcrumb settings for all subsites with configurable global priority.
  • \n
  • Built in WordPress Widget.
  • \n
  • Extensible via OOP and provided actions and filters.
  • \n
  • WPML compatible (enhanced compatibility with WPML extensions plugin).
  • \n
  • Polylang compatible (enhanced compatibility with Polylang extensions plugin).
  • \n
  • bbPress compatible (enhanced compatibility with bbPress extensions plugin).
  • \n
  • BuddyPress compatible (enhanced compatibility with BuddyPress extensions plugin).
  • \n
\n

Translations

\n

Breadcrumb NavXT now supports WordPress.org language packs. Want to translate Breadcrumb NavXT? Visit Breadcrumb NavXT’s WordPress.org translation project.

\n","download_link":"https://downloads.wordpress.org/plugin/breadcrumb-navxt.6.6.0.zip","tags":{"breadcrumb":"breadcrumb","breadcrumbs":"breadcrumbs","menu":"menu","navigation":"navigation","trail":"trail"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=FD5XEU783BR8U&lc=US&item_name=Breadcrumb%20NavXT%20Donation¤cy_code=USD&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted","icons":{"1x":"https://ps.w.org/breadcrumb-navxt/assets/icon.svg?rev=1927103","2x":"https://ps.w.org/breadcrumb-navxt/assets/icon-256x256.png?rev=2410525","svg":"https://ps.w.org/breadcrumb-navxt/assets/icon.svg?rev=1927103"},"wporg":true},{"name":"WP Recipe Maker","slug":"wp-recipe-maker","version":"7.6.1","author":"Bootstrapped Ventures","author_profile":"https://profiles.wordpress.org/brechtvds","requires":"4.4","tested":"5.8.1","requires_php":"5.4","rating":100,"ratings":{"1":1,"2":0,"3":1,"4":4,"5":209},"num_ratings":215,"support_threads":23,"support_threads_resolved":16,"active_installs":50000,"downloaded":1587108,"last_updated":"2021-09-16 11:33am GMT","added":"2016-09-07","homepage":"http://bootstrapped.ventures/wp-recipe-maker/","short_description":"The easy and user-friendly recipe plugin for everyone. Automatic JSON-LD metadata for food AND how-to recipes will improve your SEO!","description":"

WP Recipe Maker is the easy recipe plugin that everyone can use. An easy workflow allows you to add recipes to any post or page with automatic JSON-LD metadata for your recipes. This metadata will improve your SEO and get you more visitors!

\n

\n

Would you like to see the plugin in action before installing it? We have a WP Recipe Maker demo website showcasing all of the features!

\n
\n

Get the most out of this plugin!
\n Join the WP Recipe Maker Email Course and we’ll help you get started and learn all the tips and trick for using WPRM.

\n
\n

Features

\n

An overview of WP Recipe Maker features:

\n
    \n
  • Compatible with both the Classic Editor and new Gutenberg editor
  • \n
  • Includes an Elementor block and shortcode can be used in other page builders
  • \n
  • Easy workflow to add recipes to any post or page
  • \n
  • Uses schema.org/Recipe JSON-LD metadata optimised for Google Recipe search
  • \n
  • Uses schema.org/How-to JSON-LD metadata optimised for non-food recipes and instructions
  • \n
  • Supports both regular and Guided Recipes for Google metadata
  • \n
  • Google AMP compatible
  • \n
  • Integrates recipe metadata with Yoast SEO schema graph
  • \n
  • Option to disable metadata per recipe if you want to publish non-food or DIY recipes
  • \n
  • Compatible with Pinterest Rich Pins and a setting to easily opt out
  • \n
  • Outputs ItemList metadata for Recipe Roundup posts
  • \n
  • Associate ingredients with instructions to have them show up exactly where needed
  • \n
  • Keyboard accessible and AMP compatible ratings for comments
  • \n
  • Interactive print recipe page with room for ads and optional credit to your website
  • \n
  • Fallback recipe shows up when the plugin is disabled
  • \n
  • Include a recipe video in the template and metadata
  • \n
  • Add photos or videos to any step of the recipe
  • \n
  • Print recipe and jump to recipe shortcodes
  • \n
  • This plugin is fully responsive, your recipes will look good on any device
  • \n
  • Easily change the look and feel to fit your website in the Template Editor
  • \n
  • Structure your ingredients and instructions in groups (e.g. icing and cake batter)
  • \n
  • Full text search for your recipes
  • \n
  • Access your recipes through the WordPress REST API
  • \n
  • Built-in SEO check for your recipe metadata
  • \n
  • Compatible with RTL languages
  • \n
  • Import your recipes from other plugins (see below)
  • \n
\n

WP Recipe Maker Premium

\n

Looking for some more advanced functionality? We also have the WP Recipe Maker Premium add-on available with the following features:

\n
    \n
  • Use ingredient links for linking to products or other recipes
  • \n
  • Adjustable servings make it easy for your visitors
  • \n
  • Display all nutrition data in a nutrition label
  • \n
  • User Ratings allow visitors to vote without commenting
  • \n
  • Add a mobile-friendly kitchen timer to your recipes
  • \n
  • More Premium templates for a unique recipe template
  • \n
  • Create custom recipe taxonomies like price level, difficulty, …
  • \n
  • Use checkboxes for your ingredients and instructions
  • \n
\n

Even more add-ons can add the following functionality:

\n
    \n
  • Integration with a Nutrition API for automatic nutrition facts
  • \n
  • Unit Conversion to reach an international audience with a different unit system
  • \n
  • Have your users send in recipes through the Recipe Submission form
  • \n
  • Give your visitors the power of Recipe Collections for favourites, meal planning and more
  • \n
\n

Import Options

\n

Currently using another recipe plugin? No problem! You can easily migrate all your existing recipes to WP Recipe Maker if you’re using any of the following plugins:

\n
    \n
  • Tasty Recipes
  • \n
  • Create by Mediavine
  • \n
  • EasyRecipe
  • \n
  • WP Ultimate Recipe
  • \n
  • Recipe Card Blocks by WPZOOM
  • \n
  • Meal Planner Pro
  • \n
  • BigOven
  • \n
  • ZipList and Zip Recipes
  • \n
  • Yummly
  • \n
  • Yumprint Recipe Card
  • \n
  • FoodiePress
  • \n
  • Cooked
  • \n
  • Cookbook
  • \n
  • Simple Recipe Pro
  • \n
  • Purr Recipe Plugin
  • \n
  • Recipes by Simmer
  • \n
  • WordPress.com shortcode
  • \n
  • JSON-LD HTML Script
  • \n
  • Multi Rating (ratings only)
  • \n
  • (Need anything else? Just ask!)
  • \n
\n

This plugin is in active development. Feel free to contact us with any feature requests or ideas.

\n","download_link":"https://downloads.wordpress.org/plugin/wp-recipe-maker.zip","tags":{"cooking":"cooking","food":"food","ingredients":"ingredients","recipe":"Recipe","recipes":"recipes"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QG7KZMGFU325Y","icons":{"1x":"https://ps.w.org/wp-recipe-maker/assets/icon-128x128.png?rev=1491788","2x":"https://ps.w.org/wp-recipe-maker/assets/icon-256x256.png?rev=1491788"},"wporg":true},{"name":"Slim SEO – Fast & Automated WordPress SEO Plugin","slug":"slim-seo","version":"3.10.2","author":"eLightUp","author_profile":"https://profiles.wordpress.org/rilwis","requires":"4.5","tested":"5.8.1","requires_php":"5.6","rating":92,"ratings":{"1":1,"2":3,"3":0,"4":0,"5":27},"num_ratings":31,"support_threads":10,"support_threads_resolved":6,"active_installs":10000,"downloaded":179104,"last_updated":"2021-09-27 6:47am GMT","added":"2018-12-31","homepage":"https://wpslimseo.com","short_description":"A full-featured SEO plugin for WordPress that's lightweight, blazing fast with minimum configuration. No bloats,…","description":"

A Fast & Automated SEO Plugin For WordPress

\n

Currently there are many SEO plugins for WordPress in the market. But these plugins often have too many options and are very complicated for ordinary users. Access to their configuration section, you will easily get lost in a maze of explanations and options that you sometimes don’t understand. Besides, there are ads!

\n

So how can an ordinary user use an SEO plugin?

\n

SEO should be an integrated part of WordPress, where users don’t need or need very little effort to configure for SEO. The main reason is that not everyone understands the terms of SEO and how to configure them optimally.

\n

So, we made Slim SEO.

\n

Slim SEO is a full-featured SEO plugin, that’s done right! It provides a complete SEO solution for WordPress where the configuration has been done automatically. Users do not need to care about their complex and semantic options.

\n

So what does Slim SEO do?

\n

Slim SEO Features

\n

Slim SEO helps you do the following jobs automatically:

\n

1. Meta Tags

\n

The following meta tags are auto-generated and optimized for the best SEO scores.

\n\n

2. XML Sitemap

\n

Slim SEO automatically generates XML sitemap (at domain.com/sitemap.xml) to submit to search engines. With XML sitemaps, your website are indexed fast and completely.

\n

3. Breadcrumbs

\n

The plugin allows you to output a breadcrumb trail on your website easily. It automatically fetches the information from the current post and output a hierarchy for you. You can also style the breadcrumbs to match your theme style.

\n

4. Schema (Structured Data)

\n

Schema is a way that describes structured data for search engines. Based on the data provided, search engines can show the content in the search results page in a more appealing way.

\n

Slim SEO automatically adds the some structured data to the website via JSON-LD which makes your website more SEO-friendly. Not only schemas are created by the plugin, there are also meaningful connections between them. For example, an article (single post) is the main entity of the current webpage. Slim SEO does that all without any configuration.

\n

5. Auto Redirection

\n
    \n
  • Auto redirect attachment page to the attachment file URL.
  • \n
  • Auto redirect author page to the homepage if the website has only one author or the author doesn’t have any posts.
  • \n
\n

6. Open Source

\n

Slim SEO has different contributors which help make Slim SEO a quality product. Join us on Github!

\n

Who should use Slim SEO?

\n

Everyone can use Slim SEO!

\n

However, Slim SEO is perfectly suitable for users who prefer simplicity or do not like the complicated options that other SEO plugins provide. It’s also a good choice for users with little SEO knowledge and just want to use SEO plugins to automate their jobs.

\n

If you like this plugin, you might also like our other products: Meta Box and GretaThemes.

\n","download_link":"https://downloads.wordpress.org/plugin/slim-seo.3.10.2.zip","tags":{"google":"google","schema":"schema","search-engine-optimization":"search engine optimization","seo":"seo","sitemap":"sitemap"},"donate_link":"https://wpslimseo.com/pro/","icons":{"1x":"https://ps.w.org/slim-seo/assets/icon.svg?rev=2005049","svg":"https://ps.w.org/slim-seo/assets/icon.svg?rev=2005049"},"wporg":true},{"name":"Schema & Structured Data for WP & AMP","slug":"schema-and-structured-data-for-wp","version":"1.9.85","author":"Magazine3","author_profile":"https://profiles.wordpress.org/magazine3","requires":"3.0","tested":"5.8.1","requires_php":false,"rating":94,"ratings":{"1":13,"2":1,"3":2,"4":10,"5":183},"num_ratings":209,"support_threads":29,"support_threads_resolved":13,"active_installs":80000,"downloaded":2416083,"last_updated":"2021-09-24 10:57am GMT","added":"2018-08-06","homepage":"","short_description":"Schema & Structured Data for WP & AMP adds Google Rich Snippets markup according to…","description":"

Schema & Structured Data for WP & AMP adds Google Rich Snippets markup according to Schema.org guidelines to structure your site for SEO. (AMP Compatible)

\n

Features

\n
    \n
  • Schema Types: Currently, We have more than 35 schema types such as Blog Posting, News article, Local Business, Web page, Article, Recipe, Product, and Video Object view all. We are going to add all the schema types in the future. You can request the one you want and we will add it for you!
  • \n
  • Conditional Display Fields: Meaning you include or exclude any posts, pages, post types, taxonomies and more!
  • \n
  • Knowlegde Base Support: Recognize the content based on the organization or a person via data type option.
  • \n
  • Full AMP Compatiblity: Supports the AMP for WP and AMP by Automattic plugins.
  • \n
  • Advanced Settings: Play with output of schema markup using these options (Defragment, Add in Footer, Pretty Print, MicroData CleanUp etc.)
  • \n
  • Migration: Import the data from other schema plugins such as (SEO Pressor, WP SEO Schema, Schema Plugin etc )
  • \n
  • Compatibility: Generate the schema markup for the plugins. We have provided schema support for them. Few of them are – kk Star Ratings, WP-PostRatings, bbPress
  • \n
  • Google Review: Display your business google reviews and its schema markup on your website.
  • \n
  • [Premium] Reviews ( Fetch reviews from 75+ platforms ).
  • \n
  • [Premium] Priority Support. Get it We get more than 100 technical queries a day but the Priority support plan will help you skip that and get the help from a dedicated team.
  • \n
  • Review Module: Create your own review rating box with pros and cons and its schema markup
  • \n
  • Schema Type Blocks in Gutenberg: Create your own content with the blocks and json schema markup will be added automatically
  • \n
  • Unlimited Custom Post Types: You can control to represent the Rich Snippets data in the google search console using unlimited custom post types.
  • \n
  • Easy to use with Minimal Settings
  • \n
  • Archive Page Listing Support
  • \n
  • JSON-LD Format
  • \n
  • Easy to use Setup Wizard
  • \n
  • Breadcrumbs Listing Support
  • \n
  • Comments Post comments Support
  • \n
  • Constant Development & New Features: We’ll be releasing the constant updates along with the more handy features as soon as we get the feedback from the users.
  • \n
\n

Supported Schema Types

\n
    \n
  • Apartment
  • \n
  • House
  • \n
  • SingleFamilyResidence
  • \n
  • Article
  • \n
  • Blogposting
  • \n
  • Book
  • \n
  • Course
  • \n
  • DiscussionForumPosting,
  • \n
  • DataFeed
  • \n
  • HowTo
  • \n
  • NewsArticle
  • \n
  • QAPage
  • \n
  • Review
  • \n
  • Recipe
  • \n
  • TVSeries
  • \n
  • SoftwareApplication
  • \n
  • MobileApplication
  • \n
  • SpecialAnnouncement (Related to Coronavirus)
  • \n
  • TechArticle
  • \n
  • WebPage
  • \n
  • Event
  • \n
  • VideoGame
  • \n
  • JobPosting
  • \n
  • Service
  • \n
  • Trip
  • \n
  • AudioObject
  • \n
  • VideoObject
  • \n
  • MedicalCondition
  • \n
  • MusicPlaylist
  • \n
  • MusicAlbum
  • \n
  • LocalBusiness with all the sub categories
  • \n
  • Product
  • \n
  • TouristAttraction
  • \n
  • TouristDestination
  • \n
  • LandmarksOrHistoricalBuildings
  • \n
  • HinduTemple
  • \n
  • Church
  • \n
  • Mosque
  • \n
  • Person
  • \n
  • View All
  • \n
\n

Extensions

\n

Some useful extensions to extend Schema & Structured Data for WP & AMP features, check Woocommerce Compatibility For Schema, Cooked Compatibility For Schema and We are going to add more.

\n

Support

\n

We try our best to provide support on WordPress.org forums. However, We have a special team support where you can ask us questions and get help. Delivering a good user experience means a lot to us and so we try our best to reply each and every question that gets asked.

\n

Bug Reports

\n

Bug reports for Schema & Structured Data for WP & AMP are welcomed on GitHub. Please note GitHub is not a support forum, and issues that aren’t properly qualified as bugs will be closed.

\n

Credits

\n
    \n
  • Select2 used https://github.com/select2/select2 – License URI: https://github.com/select2/select2/blob/develop/LICENSE.md,
  • \n
  • Merlin WP used https://github.com/richtabor/MerlinWP – License URI: https://github.com/richtabor/MerlinWP/blob/master/LICENSE,
  • \n
  • jquery-timepicker used https://github.com/jonthornton/jquery-timepicker
  • \n
  • Rate Yo! used https://github.com/prrashi/rateYo – License URI: https://github.com/prrashi/rateYo/commit/f3812fe96c38b08627d209795176053550fb1427
  • \n
  • Aqua Resizer used http://aquagraphite.com – License URI: WTFPL – http://sam.zoy.org/wtfpl/
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/schema-and-structured-data-for-wp.1.9.85.zip","tags":{"google-snippets":"google snippets","rich-snippets":"rich snippets","schema":"schema","schema-org":"schema.org","structured-data":"structured data"},"donate_link":"","icons":{"1x":"https://ps.w.org/schema-and-structured-data-for-wp/assets/icon-128x128.png?rev=1922284","2x":"https://ps.w.org/schema-and-structured-data-for-wp/assets/icon-256x256.png?rev=1922284"},"wporg":true},{"name":"GenerateBlocks","slug":"generateblocks","version":"1.3.5","author":"Tom Usborne","author_profile":"https://profiles.wordpress.org/edge22","requires":"5.4","tested":"5.8.1","requires_php":"5.6","rating":98,"ratings":{"1":0,"2":0,"3":2,"4":1,"5":72},"num_ratings":75,"support_threads":21,"support_threads_resolved":6,"active_installs":50000,"downloaded":252265,"last_updated":"2021-07-19 6:12pm GMT","added":"2020-05-19","homepage":"https://generateblocks.com","short_description":"A small collection of lightweight WordPress blocks that can accomplish nearly anything.","description":"

\n

\n

Add incredible versatility to your editor without bloating it with tons of one-dimensional Gutenberg blocks. With GenerateBlocks, you can learn a handful of blocks deeply and use them to build anything.

\n

GenerateBlocks works hand-in-hand with GeneratePress, but is built to work with any theme.

\n

Looking for more features? Check out GenerateBlocks Pro.

\n

Container

\n

Organize your content into rows and sections. The Container block is the foundation of your content, allowing you to design unique sections for your content.

\n

Grid

\n

Create advanced layouts with flexible grids. The Grid block gives you the ability to create any kind of layout you can imagine.

\n

Headline

\n

Craft text-rich content with advanced typography. Everything from headings to paragraphs – take full control of your text.

\n

Buttons

\n

Drive conversions with beautiful buttons.

\n

Performance

\n

We take performance seriously. Minimal CSS is generated only for the blocks you need, and our HTML structure is as simple as possible while allowing for maximum flexibility.

\n

Coding standards

\n

Built to the highest coding standards for security, stability and future compatibility.

\n

Fully responsive

\n

Every block comes with tablet and mobile controls, giving you total control of your responsive design.

\n

Documentation

\n

Check out our documentation for more information on the individual blocks and how to use them.

\n","download_link":"https://downloads.wordpress.org/plugin/generateblocks.1.3.5.zip","tags":{"blocks":"blocks","container":"container","grid":"grid","gutenberg":"gutenberg","headline":"headline"},"donate_link":"https://generateblocks.com","icons":{"1x":"https://ps.w.org/generateblocks/assets/icon-128x128.png?rev=2336822","2x":"https://ps.w.org/generateblocks/assets/icon-256x256.png?rev=2336822"},"wporg":true},{"name":"Blackhole for Bad Bots","slug":"blackhole-bad-bots","version":"3.2","author":"Jeff Starr","author_profile":"https://profiles.wordpress.org/specialk","requires":"4.1","tested":"5.8.1","requires_php":"5.6.20","rating":98,"ratings":{"1":2,"2":0,"3":3,"4":2,"5":108},"num_ratings":115,"support_threads":4,"support_threads_resolved":4,"active_installs":30000,"downloaded":310531,"last_updated":"2021-07-19 8:41pm GMT","added":"2016-02-18","homepage":"https://perishablepress.com/blackhole-bad-bots/","short_description":"Blackhole is a WordPress security plugin that detects and traps bad bots in a virtual…","description":"
\n

Add your own virtual black hole trap for bad bots.

\n
\n

Bye bye bad bots..

\n

Bad bots are the worst. They do all sorts of nasty stuff and waste server resources. The Blackhole plugin helps to stop bad bots and save precious resources for legit visitors.

\n

How does it work?

\n

First the plugin adds a hidden trigger link to the footer of your pages. You then add a line to your robots.txt file that forbids all bots from following the hidden link. Bots that then ignore or disobey your robots rules will crawl the link and fall into the trap. Once trapped, bad bots are denied further access to your WordPress site.

\n

I call it the “one-strike” rule: bots have one chance to obey your site’s robots.txt rule. Failure to comply results in immediate banishment. The best part is that the Blackhole only affects bad bots: human users never see the hidden link, and good bots obey the robots rules in the first place. Win-win! 🙂

\n

Using a caching plugin? Check out the Installation notes for important info.

\n

Features

\n
    \n
  • Easy to set up
  • \n
  • Squeaky clean code
  • \n
  • Focused and modular
  • \n
  • Lightweight, fast and flexible
  • \n
  • Built with the WordPress API
  • \n
  • Works with other security plugins
  • \n
  • Easy to reset the list of bad bots
  • \n
  • Easy to delete any bot from the list
  • \n
  • Regularly updated and “future proof”
  • \n
  • Blackhole link includes “nofollow” attribute
  • \n
  • Plugin options configurable via settings screen
  • \n
  • Works silently behind the scenes to protect your site
  • \n
  • Whitelists all major search engines to never block
  • \n
  • Focused on flexibility, performance, and security
  • \n
  • Email alerts with WHOIS lookup for blocked bots
  • \n
  • Complete inline documentation via the Help tab
  • \n
  • Provides setting to whitelist any IP addresses
  • \n
  • Customize the message displayed to bad bots 😉
  • \n
  • One-click restore the plugin default options
  • \n
  • Does NOT use or require any .htaccess rules
  • \n
\n

Blackhole for Bad Bots protects your site against bad bots, spammers, scrapers, scanners, and other automated threats.

\n

Not using WordPress? Check out the standalone PHP version of Blackhole!

\n

Check out Blackhole Pro and level up with advanced features!

\n

Whitelist

\n

By default, this plugin does NOT block any of the major search engines (user agents):

\n
    \n
  • AOL.com
  • \n
  • Baidu
  • \n
  • Bingbot/MSN
  • \n
  • DuckDuckGo
  • \n
  • Googlebot
  • \n
  • Teoma
  • \n
  • Yahoo!
  • \n
  • Yandex
  • \n
\n

These search engines (and all of their myriad variations) are whitelisted via user agent. So are a bunch of other “useful” bots. They always are allowed full access to your site, even if they disobey your robots.txt rules. This list can be customized in the plugin settings. For a complete list of whitelisted bots, visit the Help tab in the plugin settings (under “Whitelist Settings”).

\n

Privacy

\n

User Data: This plugin automatically blocks bad bots. When bad bots fall into the trap, their IP address, user agent, and other request data are stored in the WP database. No other user data is collected by this plugin. At any time, the administrator may delete all saved data via the plugin settings.

\n

Services: This plugin does not connect to any third-party locations or services.

\n

Cookies: This plugin does not set any cookies.

\n

Header Image Courtesy NASA/JPL-Caltech.

\n

Support development of this plugin

\n

I develop and maintain this free plugin with love for the WordPress community. To show support, you can make a donation or purchase one of my books:

\n\n

And/or purchase one of my premium WordPress plugins:

\n\n

Links, tweets and likes also appreciated. Thanks! 🙂

\n","download_link":"https://downloads.wordpress.org/plugin/blackhole-bad-bots.3.2.zip","tags":{"anti-spam":"anti-spam","bad-bots":"bad bots","blackhole":"blackhole","honeypot":"honeypot","security":"security"},"donate_link":"https://monzillamedia.com/donate.html","icons":{"1x":"https://ps.w.org/blackhole-bad-bots/assets/icon-128x128.png?rev=1471215","2x":"https://ps.w.org/blackhole-bad-bots/assets/icon-256x256.png?rev=1471215"},"wporg":true},{"name":"Page View Count","slug":"page-views-count","version":"2.4.12","author":"a3rev Software","author_profile":"https://profiles.wordpress.org/a3rev","requires":"5.0","tested":"5.8.1","requires_php":false,"rating":78,"ratings":{"1":8,"2":5,"3":2,"4":3,"5":30},"num_ratings":48,"support_threads":3,"support_threads_resolved":0,"active_installs":20000,"downloaded":407119,"last_updated":"2021-07-19 10:48am GMT","added":"2012-12-21","homepage":"","short_description":"Places an icon, all time views count and views today count at the bottom of posts, pages and custom post types on any WordPress website.","description":"

A beautifully simple to set up plugin that gives site visitors and site owners the ability to quickly and easily see how many people have visited that page or post.

\n

FEATURES

\n
    \n
  • On the front end it adds an icon and page views count to the bottom or top of pages and posts on your WordPress website.
  • \n
  • Switch ON | OFF hide Page Views Count for all Posts, Pages and all custom posts types including WooCommerce custom post types.
  • \n
  • Set the Position of the counter to show at the top of the page or post or at the bottom
  • \n
  • Set alignment of the counter Left, Right or Centre
  • \n
  • Set the colour and size of the counter icon
  • \n
  • Option to use load by Ajax to prevent the count from being cached by caching plugins
  • \n
  • Option to Manually set / edit total views and views today from Page View Count meta box on any post or page editor
  • \n
  • Add Page Views counter via the PVC Gutenberg block
  • \n
  • Add Page Views counter via shortcode
  • \n
  • Add Page Views counter via widget
  • \n
  • Developers can add the Page Views Counter via php tag
  • \n
  • All options and settings are point click – absolutely no coding required
  • \n
\n

COMPATIBILTY

\n

Compatible with WordPress 5.3+ and backwards to WP 4.9.0. Compatible with Classic Editor plugin with 5.0+ (Gutenberg Deactivated)

\n

GUTENBERG BLOCK

\n

Using the Gutenberg Editor. Use the Page View Count Block to add the counter to any page or post content. Block search for ‘Page Views’ or selecting the block from the a3rev Blocks menu.

\n

Adding the Page Views block to your content automatically deactivates the Global Page View counter on the post or page.

\n

ELEMENTOR TEMPLATES

\n

Fully compatible with Elementor templates. Add counter via Shortcode or widget to any template.

\n

DEVELOPERS

\n

On the plugins dashboard in the + Page Views Count Function options box you will find the Page Views Count functions and notes on how to use them.

\n
    \n
  • Use to manually add Page views count to any content or object in the theme.
  • \n
  • Use to add page View Count to any content that is not create using WordPress custom post / taxonomy type.
  • \n
  • Use to create a custom position of the Page Views Count
  • \n
  • Functions support echo and return parameters when getting visitor stats on any variable.
  • \n
\n

TROUBLESHOOTING

\n
    \n
  • The number 1 support request we get about the plugin is that it double or triple counts page or post loads. Yes it does and if you see that it is a Red Flag that you have a misconfiguration or bug in your theme or a plugin. Page Views Count does exactly that – counts each time the page or post is loading in the browser – if its counting twice it is because the browser is double loading the page. That is a bad thing and you or your developer needs to fix that.
  • \n
\n

CONTRIBUTE

\n

When you download Page Views Count, you join our community. Regardless of if you are a WordPress beginner or experienced developer if you’?re interested in contributing to Page Views Count development head over to the Page Views Count GitHub Repository to find out how you can contribute.
\nWant to add a new language to Page Views Count? Great! You can contribute via translate.wordpress.org

\n

Usage

\n
    \n
  1. \n

    Install and activate the plugin

    \n
  2. \n
  3. \n

    Go to WordPress Settings menu > Page View Count Menu

    \n
  4. \n
  5. \n

    Activate Page Views Count and use the options box settings to make the desired configuration

    \n
  6. \n
  7. \n

    Be sure to clear any caching and browser cache to see your Page Views Count

    \n
  8. \n
\n","download_link":"https://downloads.wordpress.org/plugin/page-views-count.2.4.12.zip","tags":{"gutenberg":"gutenberg","page-view-count":"page view count","post-view-count":"post view count","post-views":"post views","wordpress-page-view":"wordpress page view"},"donate_link":"","icons":{"1x":"https://ps.w.org/page-views-count/assets/icon.svg?rev=986301","2x":"https://ps.w.org/page-views-count/assets/icon-256x256.png?rev=986301","svg":"https://ps.w.org/page-views-count/assets/icon.svg?rev=986301"},"wporg":true},{"name":"Newspack Listings","slug":"newspack-listings","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://github.com/Automattic/newspack-listings/releases","short_description":"

Create reusable content as listings and add them to lists wherever core blocks can be used

\n","description":"\n\n\n

Create reusable content as listings and add them to lists wherever core blocks can be used

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2021/02/listings2-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2021/02/listings2-372x209.jpg","svg":""},"wporg":false},{"name":"Newspack Newsletters","slug":"newspack-newsletters","version":"1.33.1","author":"Automattic","author_profile":"https://profiles.wordpress.org/automattic","requires":"5.3","tested":"5.8.0","requires_php":"5.6","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":1,"support_threads_resolved":1,"active_installs":600,"downloaded":3353,"last_updated":"2021-09-14 10:52pm GMT","added":"2021-02-15","homepage":"https://newspack.pub","short_description":"Create email newsletters with the Gutenberg editor and distribute them with your Mailchimp or Constant Contact mailing lists.","description":"

Create email newsletters with the Gutenberg editor and send them via Mailchimp or Constant Contact, all without leaving WP Admin! Newspack Newsletters lets you build eye-catching newsletters using the WordPress editing tools you’re already familiar with, and lets you save drafts, create reusable layouts, send to your existing mailing list, and also publish them to your website.

\n

Use and create newsletter layouts

\n

Newspack Newsletters comes with four default layouts to help you start building newsletters quickly. You can use an existing layout, or start fresh with a blank page. You can also create and save your own layouts, or alter the ones that come bundled with the plugin and save the settings, and use them for future campaigns.

\n

Use Gutenberg blocks and settings

\n

Newspack Newsletters supports most core Gutenberg blocks and configurations, letting you use blocks like Group, Button, Columns, and more, to create dynamic layouts. The plugin will warn you when a block will not display as expected in an email.

\n

Customize your newsletter’s appearance

\n

You can customize your newsletters further by changing the header and body fonts, or picking a background color.

\n

Newspack Blocks

\n

Newspack Newsletters comes bundled with the Newspack Post Inserter block. This block lets you insert excerpts from live posts on your site, and, once inserted, will turn those posts into static content using the Header and Paragraph blocks, linking back to your site.

\n

Need to target a post title to your newsletter audience? Not a problem! You can edit these blocks, and add others, to make sure they’ speak to your readers.

\n

Add ads!

\n

Monetize your newsletters by including advertising. The Newspack Newsletters plugin lets you create ads, which are stored as a custom post type. Ads are automatically inserted into your newsletters, and can also be toggled off on a newsletter-by-newsletter basis.

\n

Send with ease

\n

Newspack Newsletters connects to your Mailchimp or Constant Contact accounts to send emails using the mailing lists you’ve collected there, all without leaving the WordPress Admin.

\n

Before sending your campaign, you can send test emails to one or more email addresses at a time from the newsletter editor, to make sure everything is pixel perfect before sharing with the world.

\n

About Newspack

\n

The Newspack Newletters plugin is part of Newspack, a suite of tools to help small to mid-sized news organizations publish and generate revenue with WordPress. Newspack is a collaborative project by WordPress.com and the Google News Initiative. You can learn more about Newspack by visiting our website.

\n

Credits

\n

The beach photograph in the screenshot is by Life of Pix, licensed CC0.

\n","download_link":"https://downloads.wordpress.org/plugin/newspack-newsletters.zip","tags":{"constant-contact":"constant contact","mailchimp":"mailchimp","newsletters":"newsletters","newspack":"Newspack","wordpress-com":"WordPress.com"},"donate_link":"","icons":{"1x":"https://ps.w.org/newspack-newsletters/assets/icon.svg?rev=2475195","2x":"https://ps.w.org/newspack-newsletters/assets/icon-256x256.png?rev=2475195","svg":"https://ps.w.org/newspack-newsletters/assets/icon.svg?rev=2475195"},"wporg":true},{"name":"Web Stories","slug":"web-stories","version":"1.12.0","author":"Google","author_profile":"https://profiles.wordpress.org/google","requires":"5.5","tested":"5.8.1","requires_php":"7.0","rating":84,"ratings":{"1":5,"2":2,"3":2,"4":4,"5":32},"num_ratings":45,"support_threads":130,"support_threads_resolved":95,"active_installs":30000,"downloaded":365112,"last_updated":"2021-10-05 10:37pm GMT","added":"2020-09-22","homepage":"https://wp.stories.google/","short_description":"Web Stories are a visual storytelling format for the open web which immerses your readers in fast-loading, full-screen, and visually rich experiences.","description":"

Web Stories are a free, open-web, visual storytelling format for the web, enabling you to easily create visual narratives with engaging animations and tappable interactions, and immerse your readers in great and fast-loading full-screen experiences.

\n

Benefits of Web Stories

\n

The Web Stories format puts features and capabilities at your fingertips to engage with your audience via the power of storytelling on the open web. Specifically, you can:

\n
    \n
  • Create beautiful and engaging content easily: Web Stories make the production of stories as easy as possible from a technical perspective.
  • \n
  • Enjoy creative flexibility for editorial freedom and branding: The Web Stories format comes with preset but flexible layout templates, standardized UI controls, and components for sharing and adding follow-on content.
  • \n
  • Share and link your stories on the open web: Web Stories are part of the open web and can be shared and embedded across sites and apps without being confined to a single ecosystem.
  • \n
  • Track and measure your stories: Supports analytics and bookend capabilities for viral sharing and monetization.
  • \n
  • Capture the attention of your readers by offering fast loading times to your stories: Web Stories are lightning fast so that your audience stays engaged and entertained.
  • \n
  • Engage with your readers via immersive storytelling: Web Stories are a new and modern way to reach existing readers.
  • \n
  • Monetize effectively the beautiful and engaging stories you create: Web Stories enable monetization capability for publishers using affiliate links. For advertisers, Stories is a way to reach a unique audience within a new storytelling experience.
  • \n
\n

Web Stories Editor

\n

The Web Stories editor for WordPress brings together a robust set of story creation capabilities in a user-friendly, WYSIWYG creation tool. Some of the key features you can leverage out of the box are:

\n
    \n
  • A visually rich and intuitive dashboard, allowing you to easily navigate the story creation process
  • \n
  • Beautiful and expressive page templates to you get your story creation process started quickly and smoothly
  • \n
  • Easy drag-and-drop capabilities, making it easy to compose beautiful stories
  • \n
  • Convenient access to WordPress’ media library, enabling you to grab your media assets right from the plugin dashboard as you create your stories
  • \n
  • Customizable color and text style presets, making it easy to tailor the style of your stories to the needs of your content strategy
  • \n
  • And much more!
  • \n
\n

Using the Web Stories editor for WordPress, you can easily create visual narratives with tappable interactions, and share freely across the web, or embed them on your existing content strategies. The Stories you create are yours in every way, as Web Stories belong to the open web, instead of being confined to any specific closed ecosystem or platform.

\n

Audience: Everyone

\n

Web Stories are for everyone! If you are a site owner, content creator, or publisher on the web, embracing the Web Stories format would be great as a way to enhance the quality of your content strategy, the value you bring to your readers, and consequently your chances of achieving sustainable success.

\n

Terms of Service

\n

By using this plugin, you agree to Google’s Terms of Service. By using third-party imagery and video provided by Unsplash, Coverr and Tenor, you agree to adhere to the respective Terms of Service.

\n","download_link":"https://downloads.wordpress.org/plugin/web-stories.1.12.0.zip","tags":{"amp":"amp","google":"google","stories":"stories","storytelling":"storytelling","web-stories":"web stories"},"donate_link":"","icons":{"1x":"https://ps.w.org/web-stories/assets/icon.svg?rev=2386543","2x":"https://ps.w.org/web-stories/assets/icon-256x256.png?rev=2386543","svg":"https://ps.w.org/web-stories/assets/icon.svg?rev=2386543"},"wporg":true},{"name":"Jetpack – WP Security, Backup, Speed, & Growth","slug":"jetpack","version":"10.2","author":"Automattic","author_profile":"https://profiles.wordpress.org/automattic","requires":"5.7","tested":"5.8.1","requires_php":"5.6","rating":78,"ratings":{"1":321,"2":80,"3":82,"4":138,"5":1024},"num_ratings":1645,"support_threads":303,"support_threads_resolved":261,"active_installs":5000000,"downloaded":247940612,"last_updated":"2021-10-05 4:54pm GMT","added":"2011-01-20","homepage":"https://jetpack.com","short_description":"Improve your WP security with powerful one-click tools like backup and malware scan. Get essential…","description":"

The most popular WordPress plugin for just about everything.

\n

WordPress security, performance, marketing, and design tools — Jetpack is made by WordPress experts to make WP sites safer and faster, and help you grow your traffic.

\n

24/7 AUTO SITE SECURITY

\n

We guard your site so you can run your site or business. Jetpack Security provides easy-to-use, comprehensive WordPress site security including auto real-time backups and easy restores, malware scans, and spam protection. Essential features like brute force protection and downtime / uptime monitoring are free.

\n
    \n
  • Back up your site automatically in real time and restore to any point with one click. Unlimited storage for your backup. Great for eCommerce stores especially Woo.
  • \n
  • Manage migration to a new host, migrate theme files and plugins to a new database, easily duplicate websites, create full database backups, clone websites, repair broken websites by restoring older backups or easily set up a test site by creating a duplicate of your existing WP website.
  • \n
  • See every site change and who made it with the activity log, great for coordination, debug, maintenance, or troubleshooting.
  • \n
  • Automatically perform malware scans and security scans for other code threats. One click fix to restore your site for malware.
  • \n
  • Block spam comments and form responses with anti spam features powered by Akismet.
  • \n
  • Brute force attack protection to protect your WordPress login page from attacks.
  • \n
  • Monitor your site uptime / downtime and get an instant alert of any change by email.
  • \n
  • Secure WordPress.com powered login used by millions of sites with optional 2FA (two factor authentication) for extra protection.
  • \n
  • Auto update individual plugins for easy site maintenance and management.
  • \n
\n

PEAK SPEED AND PERFORMANCE

\n

Get blazing fast site speed with Jetpack, the premier WP plugin built to leverage the power of AMP, a tool that helps optimize your site on mobile devices. Jetpack’s free CDN (content delivery network) auto optimizes your images. Watch your page load times decrease — we’ll optimize your images and serve them from our own powerful global network, and speed up your site on mobile devices to reduce bandwidth usage and save money!

\n
    \n
  • Jetpack has partnered with Google AMP to create the best, highest performance all-in-one toolkit for WordPress. By using Jetpack and AMP together, you get all the features you need to build a beautiful, fast, modern website with no coding required.
  • \n
  • Image CDN for images and static files, like CSS and JavaScript, served from our servers, not yours, which saves you money and bandwidth.
  • \n
  • Lazy load images for a super fast experience, even on mobile. Jetpack’s lazy loading automatically delays the loading of media on your posts and pages until your visitors scroll down to where they appear on the page.
  • \n
  • Unlimited, high speed, ad free video hosting keeps the focus on your content, not on ads or recommendations that lead people off site.
  • \n
  • Custom site search is incredibly powerful and customizable. Helps your visitors instantly find the right content so they read and buy more. Works great with WooCommerce / eCommerce sites to help filter products so customers get what they want on your site faster.
  • \n
  • Recommended to use with WP Super Cache for ultimate WordPress site speed.
  • \n
\n

POWERFUL TOOLS FOR GROWTH

\n

Create and customize your WordPress site, optimize it for visitors and revenue, and enjoy watching your stats tick up. Build it, share it, and watch it grow.

\n
    \n
  • Advanced site stats and analytics to help you understand your audience.
  • \n
  • Auto publish blog posts and products to social media by simply using our tools to connect to Facebook, Twitter, and Linkedin.
  • \n
  • Easily share Instagram posts on your pages and blog posts.
  • \n
  • Collect a payment or donation, sell a product, service, or membership with simple integrations with PayPal and Stripe.
  • \n
  • Grow traffic with SEO tools for Google, Bing, Twitter, Facebook, and WordPress.com. XML sitemap created automatically.
  • \n
  • Advertise on your site to generate revenue. The ad network automatically does the work for you to find high-quality ads that are placed on your site.
  • \n
  • Manage Jetpack features from anywhere with the official WordPress mobile app, available for Apple iOS (iPhone or iPad) and Google Android.
  • \n
  • Looking for Customer Relationship Management? Check out the Jetpack CRM plugin which works alongside Jetpack to give you a simple and practical way to build relationships with your customers and leads.
  • \n
\n

EASY DESIGN TOOLS

\n

Quickly customize your site to make it stand out — no coding needed.

\n
    \n
  • Themes — Simple themes to get started or pick a professional theme to make your site stand out.
  • \n
  • Related posts — Keep visitors on your site by automatically showing them related content they will be interested in.
  • \n
  • Gallery and Slideshow tools — Image galleries, carousel slider, and slideshows for WP sites and stores.
  • \n
  • Subscriptions — Make it easy for visitors to sign up to receive notifications of your latest posts and comments.
  • \n
  • Contact form — Easily build unlimited contact forms for free without any coding. Receive email notifications for each response. Integrate with mail solutions like Creative Mail to reach your customers and leads quickly. Connect to Jetpack Anti spam (powered by Akismet) to filter submissions.
  • \n
  • oEmbed Support — easily embed images, posts, and links from Facebook and Instagram.
  • \n
\n

INTEGRATIONS

\n

Jetpack is updated monthly to ensure seamless integration with top WordPress plugins and other tech products.

\n
    \n
  • Built for WooCommerce: Jetpack and WooCommerce are both made by Automattic. Backup, Scan, Anti-spam, integrate perfectly for Woo / eComm stores
  • \n
  • Jetpack is fully compatible with v2.0 of the official AMP plugin for WordPress.
  • \n
  • Better understand your customers and marketing with Google Analytics (GA) integration
  • \n
  • Social media platforms: Instagram, Facebook, Twitter, LinkedIn
  • \n
  • Simple Blocks to customize your site: Pinterest, Whatsapp, Podcast player, GIFs, maps, tiled gallery, slideshow
  • \n
  • Payment processors: easily collect payments or donations and sell products through Stripe and PayPal
  • \n
  • Site speed and performance plugins: Works great with WP Super Cache by Automattic and Cloudflare.
  • \n
  • Contact form: Anti-spam (Powered by Akismet) blocks spam comments for Jetpack forms, Contact Form 7, Ninja Forms, Gravity Forms, Formidable Forms, and more.
  • \n
  • Other tech integrations: Instagram, Creative Mail, Mailchimp, Calendly, Whatsapp, Pinterest, Revue, and more.
  • \n
\n

EXPERT SUPPORT

\n

We have a global team of Happiness Engineers ready to provide incredible support. Ask your questions in the support forum or contact us directly.

\n

GET STARTED

\n

Installation is free, quick, and easy. Set up Jetpack in minutes. Take advantage of more robust features like WordPress site security and design and growth tools by upgrading to a paid plan.

\n","download_link":"https://downloads.wordpress.org/plugin/jetpack.10.2.zip","tags":{"backup":"backup","malware":"malware","scan":"scan","security":"security","woo":"woo"},"donate_link":"","icons":{"1x":"https://ps.w.org/jetpack/assets/icon.svg?rev=2394525","2x":"https://ps.w.org/jetpack/assets/icon-256x256.png?rev=2394525","svg":"https://ps.w.org/jetpack/assets/icon.svg?rev=2394525"},"wporg":true},{"name":"Easy Notification Bar","slug":"easy-notification-bar","version":"1.4.3","author":"WPExplorer","author_profile":"https://profiles.wordpress.org/wpexplorer","requires":"5.2.0","tested":"5.8.1","requires_php":"5.6.2","rating":82,"ratings":{"1":0,"2":1,"3":1,"4":1,"5":4},"num_ratings":7,"support_threads":4,"support_threads_resolved":1,"active_installs":4000,"downloaded":37750,"last_updated":"2021-09-28 3:14am GMT","added":"2019-06-20","homepage":"https://wordpress.org/plugins/easy-notification-bar/","short_description":"Easily add a custom top bar notification message to on your site with live customization options via the WordPress customizer.","description":"

Easily add a custom top bar notification message to on your site with live customization options via the WordPress customizer. The plugin allows you to enter your notification bar text as well as an optional button to display next to your text. Perfect for notifying visitors of a current sale, hot product, warnings or other important messages.

\n

The Easy Notification Bar plugin makes use of the newer “wp_body_open” action hook introduced in WordPress 5.2.0 which allows the plugin to work better with any theme that has been updated to support the tag. Contrary to other notice bar solutions which rely on absolute positioning, this plugin inserts the notice bar right after the body tag so it should display perfectly without any conflicts on any well-coded theme.

\n

By default, the notification bar is “static” which means it displays at the top of your site so when you scroll down the page it will become “hidden”. This is generally better for usability and SEO. However, in version 1.4 we added a new sticky option which you can enable in the Customizer so that the notification bar remains visible as you scroll down the page. The sticky functionality makes use of the CSS sticky property (not javascript).

\n

Although disabled by default, you can enable a close icon for your notice. When enabled, your visitors will see an “x” icon over the top bar which they can click to hide the message for their current and future sessions. This functionality makes use of localStorage (not cookies).

\n

Live Demo: You can view a live demo for the notification bar on our More Widgets Plugin Demo

\n

Features

\n
    \n
  • Sitewide (or homepage only) top notification bar.
  • \n
  • Easy setup via the WordPress customizer.
  • \n
  • Optional close icon.
  • \n
  • Optional sticky display.
  • \n
  • Custom background, color, text alignment and font size settings.
  • \n
  • Optional callout button.
  • \n
  • Responsive design so it looks good on mobile.
  • \n
  • Minimal code.
  • \n
  • Vanilla Javascript used for close icon (jQuery not needed).
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/easy-notification-bar.zip","tags":{"notice":"notice","notice-bar":"notice bar","notification":"notification","notification-bar":"notification bar","top-bar":"top bar"},"donate_link":"","icons":{"1x":"https://ps.w.org/easy-notification-bar/assets/icon-128x128.png?rev=2515988","2x":"https://ps.w.org/easy-notification-bar/assets/icon-256x256.png?rev=2515988"},"wporg":true},{"name":"Antispam Bee","slug":"antispam-bee","version":"2.10.0","author":"pluginkollektiv","author_profile":"https://profiles.wordpress.org/pluginkollektiv","requires":"4.5","tested":"5.8.1","requires_php":"5.2","rating":96,"ratings":{"1":7,"2":1,"3":1,"4":2,"5":174},"num_ratings":185,"support_threads":6,"support_threads_resolved":6,"active_installs":700000,"downloaded":5121769,"last_updated":"2021-07-29 11:15am GMT","added":"2009-01-10","homepage":"https://antispambee.pluginkollektiv.org/","short_description":"Antispam plugin with a sophisticated tool set for effective day to day comment and trackback spam-fighting. Build with data protection and privacy in …","description":"

Say Goodbye to comment spam on your WordPress blog or website. Antispam Bee blocks spam comments and trackbacks effectively, without captchas and without sending personal information to third party services. It is free of charge, ad-free and 100% GDPR compliant.

\n

Feature/Settings Overview

\n
    \n
  • Trust approved commenters.
  • \n
  • Trust commenters with a Gravatar.
  • \n
  • Consider the comment time.
  • \n
  • Allow comments only in a certain language.
  • \n
  • Block or allow commenters from certain countries.
  • \n
  • Treat BBCode links as spam.
  • \n
  • Validate the IP address of commenters.
  • \n
  • Use regular expressions.
  • \n
  • Search local spam database for commenters previously marked as spammers.
  • \n
  • Notify admins by e-mail about incoming spam.
  • \n
  • Delete existing spam after n days.
  • \n
  • Limit approval to comments/pings (will delete other comment types).
  • \n
  • Select spam indicators to send comments to deletion directly.
  • \n
  • Optionally exclude trackbacks and pingbacks from spam detection.
  • \n
  • Optionally spam-check comment forms on archive pages.
  • \n
  • Display spam statistics on the dashboard, including daily updates of spam detection rate and a total of blocked spam comments.
  • \n
\n

Support

\n\n

Contribute

\n
    \n
  • Active development of this plugin is handled on GitHub.
  • \n
  • Pull requests for documented bugs are highly appreciated.
  • \n
  • If you think you’ve found a bug (e.g. you’re experiencing unexpected behavior), please post at the support forums first.
  • \n
  • If you want to help us translate this plugin you can do so on WordPress Translate.
  • \n
\n

Credits

\n\n","download_link":"https://downloads.wordpress.org/plugin/antispam-bee.2.10.0.zip","tags":{"anti-spam":"anti-spam","antispam":"antispam","block-spam":"block spam","comment":"comment","comments":"comments"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=TD4AMD2D8EMZW","icons":{"1x":"https://ps.w.org/antispam-bee/assets/icon-128x128.png?rev=977629","2x":"https://ps.w.org/antispam-bee/assets/icon-256x256.png?rev=977629"},"wporg":true},{"name":"SimpleTOC – Table of Contents Block","slug":"simpletoc","version":"4.8","author":"Marc Tönsing","author_profile":"https://profiles.wordpress.org/marcdk","requires":"5.0","tested":"5.8.1","requires_php":false,"rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":24},"num_ratings":24,"support_threads":4,"support_threads_resolved":3,"active_installs":2000,"downloaded":21859,"last_updated":"2021-07-29 9:07pm GMT","added":"2020-04-14","homepage":"https://marc.tv/simpletoc-wordpress-inhaltsverzeichnis-plugin-gutenberg/","short_description":"Adds a custom Table of Contents Gutenberg block.","description":"

In Gutenberg, add a block and search for “SimpleTOC” or just “TOC”. You need to save your post before you add the block. It works by parsing the post content and retrieving the heading blocks and creates a new dynamic block with a list of links to the headings.

\n

Hide the headline “Table of Contents” and set a maximum display depth in the blocks’ sidebar configuration. Add the CSS class “simpletoc-hidden” to a heading block to remove that specific heading from the generated TOC.

\n

Features

\n
    \n
  • No javascript or css added.
  • \n
  • Designed for Gutenberg.
  • \n
  • Compatible with AMP plugins.
  • \n
  • Minimal and valid HTML output.
  • \n
  • Inherits the style of your theme.
  • \n
  • Support for column block layouts.
  • \n
  • Control the maximum depth of the headings.
  • \n
  • Choose between an ordered and unordered html list.
  • \n
  • SEO friendly: Disable the h2 heading of the TOC block and add your own.
  • \n
  • Comes with English, French, Spanish, German, and Brazilian Portuguese translations.
  • \n
  • Works with non-latin texts. Tested with Japanese and Arabic.
  • \n
  • Finds headlines in groups and reusable blocks. And in groups within reusable blocks.
  • \n
  • Rank Math support.
  • \n
\n

Credits

\n

This plugin is forked from https://github.com/pdewouters/gutentoc by pdewouters and uses code from https://github.com/shazahm1/Easy-Table-of-Contents by shazahm1

\n

Many thanks to Tom J Nowell https://tomjn.com and and Sally CJ who both helped me a lot with my questions over at wordpress.stackexchange.com

\n","download_link":"https://downloads.wordpress.org/plugin/simpletoc.4.8.zip","tags":{"amp":"amp","block":"block","gutenberg":"gutenberg","table-of-contents":"table of contents","toc":"toc"},"donate_link":"https://marc.tv/out/donate","icons":{"1x":"https://ps.w.org/simpletoc/assets/icon.svg?rev=2451408","2x":"https://ps.w.org/simpletoc/assets/icon-256x256.png?rev=2451408","svg":"https://ps.w.org/simpletoc/assets/icon.svg?rev=2451408"},"wporg":true},{"name":"Log in with Google","slug":"login-with-google","version":"1.2.1","author":"rtCamp","author_profile":"https://profiles.wordpress.org/rtcamp","requires":"5.4.2","tested":"5.7.3","requires_php":"7.3","rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":6},"num_ratings":6,"support_threads":1,"support_threads_resolved":0,"active_installs":400,"downloaded":3340,"last_updated":"2021-07-23 10:00pm GMT","added":"2020-10-01","homepage":"","short_description":"Minimal plugin that allows WordPress users to log in using Google.","description":"

Ultra minimal plugin to let your users login to WordPress applications using their Google accounts. No more remembering hefty passwords!

\n

Initial Setup

\n
    \n
  1. \n

    Create a project from Google Developers Console if none exists.

    \n
  2. \n
  3. \n

    Go to Credentials tab, then create credential for OAuth client.

    \n
      \n
    • Application type will be Web Application
    • \n
    • Add YOUR_DOMAIN/wp-login.php in Authorized redirect URIs
    • \n
    \n
  4. \n
  5. \n

    This will give you Client ID and Secret key.

    \n
  6. \n
  7. \n

    Input these values either in WP Admin > Settings > WP Google Login, or in wp-config.php using the following code snippet:

    \n

    `
    \ndefine( ‘WP_GOOGLE_LOGIN_CLIENT_ID’, ‘YOUR_GOOGLE_CLIENT_ID’ );
    \ndefine( ‘WP_GOOGLE_LOGIN_SECRET’, ‘YOUR_SECRET_KEY’ );
    \n“

    \n
  8. \n
\n

Browser support

\n

These browsers are supported. Note, for example, that One Tap Login is not supported in Safari.

\n

How to enable automatic user registration

\n

You can enable user registration either by
\n– Enabling Settings > WP Google Login > Enable Google Login Registration

\n

OR

\n
    \n
  • Adding
    \ndefine( 'WP_GOOGLE_LOGIN_USER_REGISTRATION', 'true' );
    \nin wp-config.php file.
  • \n
\n

Note: If the checkbox is ON then, it will register valid Google users even when WordPress default setting, under

\n

Settings > General Settings > Membership > Anyone can register checkbox

\n

is OFF.

\n

Restrict user registration to one or more domain(s)

\n

By default, when you enable user registration via constant WP_GOOGLE_LOGIN_USER_REGISTRATION or enable Settings > WP Google Login > Enable Google Login Registration, it will create a user for any Google login (including gmail.com users). If you are planning to use this plugin on a private, internal site, then you may like to restrict user registration to users under a single Google Suite organization. This configuration variable does that.

\n

Add your domain name, without any schema prefix and www, as the value of WP_GOOGLE_LOGIN_WHITELIST_DOMAINS constant or in the settings Settings > WP Google Login > Whitelisted Domains. You can whitelist multiple domains. Please separate domains with commas. See the below example to know how to do it via constants:

\n
`\n
\n

define( ‘WP_GOOGLE_LOGIN_WHITELIST_DOMAINS’, ‘example.com,sample.com’ );
\n `

\n

Note: If a user already exists, they will be allowed to login with Google regardless of whether their domain is whitelisted or not. Whitelisting will only prevent users from registering with email addresses from non-whitelisted domains.

\n

Hooks

\n

Filter wp_google_login_scopes
\nThis filter can be used to filter existing scope used in Google Sign in.
\nYou can ask for additional permission while user logs in.
\nThis filter will provide 1 parameter scopes in callback, which contains array of scopes.

\n

wp-config.php parameters list

\n
    \n
  • \n

    WP_GOOGLE_LOGIN_CLIENT_ID (string): Google client ID of your application.

    \n
  • \n
  • \n

    WP_GOOGLE_LOGIN_SECRET (string): Secret key of your application

    \n
  • \n
  • \n

    WP_GOOGLE_LOGIN_USER_REGISTRATION (boolean) (optional): Set true If you want to enable new user registration. By default, user registration defers to Settings > General Settings > Membership if constant is not set.

    \n
  • \n
  • \n

    WP_GOOGLE_LOGIN_WHITELIST_DOMAINS (string) (optional): Domain names, if you want to restrict login with your custom domain. By default, it will allow all domains. You can whitelist multiple domains.

    \n
  • \n
\n

BTW, We’re Hiring!

\n

\n","download_link":"https://downloads.wordpress.org/plugin/login-with-google.1.2.1.zip","tags":{"authentication":"authentication","google-login":"Google Login","oauth":"oauth","sign-in":"sign in","sso":"sso"},"donate_link":"https://rtcamp.com/","icons":{"1x":"https://ps.w.org/login-with-google/assets/icon-128x128.png?rev=2402713","2x":"https://ps.w.org/login-with-google/assets/icon-256x256.png?rev=2402713"},"wporg":true},{"name":"Search with Google","slug":"search-with-google","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://wordpress.org/plugins/search-with-google/","short_description":"

This plugin replaces the WordPress default search query with server-side results from Custom Search Site Restricted JSON API. 

\n","description":"\n\n\n

This plugin replaces the WordPress default search query with server-side results from Custom Search Site Restricted JSON API

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2020/11/searchWithGoogle-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2020/11/searchWithGoogle-372x209.jpg","svg":""},"wporg":false},{"name":"Page Builder Gutenberg Blocks – CoBlocks","slug":"coblocks","version":"2.17.0","author":"GoDaddy","author_profile":"https://profiles.wordpress.org/godaddy","requires":"5.0","tested":"5.8.1","requires_php":"5.6","rating":88,"ratings":{"1":7,"2":3,"3":4,"4":5,"5":63},"num_ratings":82,"support_threads":15,"support_threads_resolved":2,"active_installs":500000,"downloaded":5687024,"last_updated":"2021-10-05 4:45pm GMT","added":"2018-04-19","homepage":"","short_description":"CoBlocks is a suite of page builder WordPress blocks for Gutenberg, with 10+ new blocks and a true page builder experience with rows and columns.","description":"

CoBlocks is the most innovative collection of page building WordPress blocks for the new Gutenberg WordPress block editor.

\n

With additional blocks and true row and column building, CoBlocks gives you a true page builder experience for Gutenberg.

\n

CoBlocks is powerful but lightweight: it adds functionality to the WordPress editor without bloat. This is the plugin you’ve been waiting for, and it will make you rethink what WordPress is capable of.

\n

Make Beautiful Web Pages With Gutenberg & CoBlocks

\n

CoBlocks is the last page builder you’ll ever need: you get a winning mix of additional WordPress blocks, and page builder functionality. With CoBlocks you have everything you need to make beautiful web pages with the new block editor:

\n
    \n
  • Accordion Block
  • \n
  • Alert Block
  • \n
  • Author Profile Block
  • \n
  • Buttons Block
  • \n
  • Carousel Gallery Block
  • \n
  • Click to Tweet Block
  • \n
  • Collage Gallery Block
  • \n
  • Dynamic Separator Block
  • \n
  • Events Block (New!)
  • \n
  • Features Block
  • \n
  • Food & Drinks Block
  • \n
  • Form Block
  • \n
  • Gif Block
  • \n
  • GitHub Gist Block
  • \n
  • Hero Block
  • \n
  • Highlight Block
  • \n
  • Icon Block
  • \n
  • Logos & Badges Block
  • \n
  • Map Block
  • \n
  • Masonry Gallery Block
  • \n
  • Media Card Block
  • \n
  • Offset Gallery Block
  • \n
  • OpenTable Reservations Block
  • \n
  • Post Carousel Block
  • \n
  • Posts Block
  • \n
  • Pricing Table Block
  • \n
  • Resizable Row/Columns Blocks
  • \n
  • Services Block
  • \n
  • Shape Divider Block
  • \n
  • Social Profiles Block
  • \n
  • Social Sharing Block
  • \n
  • Stacked Gallery Block
  • \n
\n

Breakthrough Page Builder System

\n

CoBlocks features an innovative block system that allows you to create stunning web pages, and even entire websites, with the new WordPress editor.

\n

You get the extra blocks you need and the layout and design functionality for a true page builder experience.

\n

Use the exceptional Row and Columns blocks to add dynamically generated content areas with specific responsive margin and padding settings that only CoBlocks provides.

\n

Style these with innovative new blocks such as the Shape Divider, which lets you split up your content with beautiful dividers.

\n

Each of the WordPress blocks within CoBlocks have been precisely fined tuned to offer a familiar, yet powerful, customization experience. Tailor each block to your taste using our custom controls and settings. Change fonts, set margin and padding, pick colors and more.

\n

Custom Typography Controls

\n

The breakthrough Typography Control Panel within CoBlocks lets you design web pages with alluring typographic elements. Set fonts, sizes, weights, transformations and more, in our CoBlocks blocks, and in core WordPress blocks.

\n

Free Companion Theme

\n

CoBlocks is built to show off the best of Gutenberg, but it requires a Gutenberg-first theme to unlock its full potential. We also created the free Go theme in the WordPress theme repository as the perfect companion for CoBlocks.

\n

Going Beyond Gutenberg Blocks

\n

The vision for CoBlocks is to create a suite of Gutenberg blocks to help folks make beautiful websites easily. These newest releases of CoBlocks is the ultimate expression of that vision.

\n

Built With Developers in Mind

\n

Extensible, adaptable, and open source — CoBlocks is created with theme and plugin developers in mind. If you’re interested to jump in the project, there are opportunities for developers at all levels to get involved. Contribute to CoBlocks on GitHub and join the party. 🎉

\n

\n

Enhancements

\n
    \n
  • Enhance editor performance by removing superfluous slow selectors #2056
  • \n
  • Enhance Services block with Toolbar media replacement controls #2030
  • \n
  • Enhance Services block by adding image overlay media replacement button #2012
  • \n
  • Enhance accessibility of Food and Drinks block #2021
  • \n
  • Enhance Social Profiles block UX #2050
  • \n
  • Enhance Social block UX #2045
  • \n
  • Enhance Gif block previews #2047
  • \n
  • Enhance Services block previews #2053
  • \n
  • Enhance Accordion block previews #2048
  • \n
\n

Bug Fixes

\n
    \n
  • Fix custom colors use with the Alert block #2051
  • \n
  • Fix superfluous margin with no gutter on Stacked Gallery #2052
  • \n
  • Fix overlapping resizable block handles for the Logos and Badges block #2044
  • \n
  • Fix reverting gutter value in Carousel Gallery #2017
  • \n
  • Fix crash when adding invalid category for Posts and Post Carousel blocks #2018
  • \n
  • Fix inner block alignment attribute persistence #2008
  • \n
  • Fix crash when transforming from Core gallery block #1990
  • \n
  • Fix deprecated styles for the Dynamic Separator block #1995
  • \n
\n

Misc

\n
    \n
  • Introduce editor performance metric tests #2031
  • \n
  • Introduce automated performance metric comparisons #2039
  • \n
  • Update icons to utilize @godaddy-wordpress/coblocks-icons package #1967
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/coblocks.2.17.0.zip","tags":{"blocks":"blocks","gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","page-builder":"page builder","wordpress-blocks":"wordpress blocks"},"donate_link":"","icons":{"1x":"https://ps.w.org/coblocks/assets/icon-128x128.jpg?rev=2243972","2x":"https://ps.w.org/coblocks/assets/icon-256x256.jpg?rev=2243972"},"wporg":true},{"name":"Simple Author Box","slug":"simple-author-box","version":"2.42","author":"WebFactory Ltd","author_profile":"https://profiles.wordpress.org/webfactory","requires":"4.6","tested":"5.8.1","requires_php":"5.6","rating":88,"ratings":{"1":9,"2":0,"3":5,"4":8,"5":75},"num_ratings":97,"support_threads":7,"support_threads_resolved":7,"active_installs":50000,"downloaded":908088,"last_updated":"2021-08-13 8:08am GMT","added":"2014-08-08","homepage":"https://wpauthorbox.com/","short_description":"Add a responsive author box with social icons to any post. Great author box for any site!","description":"

Simple Author Box adds a responsive author box at the end of your posts, showing the author name, author gravatar and author description – author bio. It also adds over 30 social profile fields on WordPress user profile screen, allowing to display the author social icons in the author box.

\n

Main Features

\n
    \n
  • Shows author gravatar, name, website, description (author bio) and social icons
  • \n
  • Fully customizable to match your theme design (style, color, size and text options)
  • \n
  • Nice looking on desktop, laptop, tablet or mobile phones
  • \n
  • Automatically insert the author box at the end of your post
  • \n
  • Option to manually insert the author box on your template file (single.php or author.php)
  • \n
  • Simple Author Box has RTL support
  • \n
  • Simple Author Box has AMP support
  • \n
  • Great for guest posts, and guest authors
  • \n
\n

Simple Author Box Pro Features

\n
\n

Premium features only available in Simple Author Box Pro

\n
    \n
  • Change author box position to before/after content
  • \n
  • Choose whether the author’s name should link to its website/page/none
  • \n
  • Select where to show author box on
  • \n
  • Add rotate effect on author avatar hover
  • \n
  • Option to open author website link in a new tab
  • \n
  • Option to add “nofollow” attribute on author website link
  • \n
  • Choose the author website’s position: right/left
  • \n
  • Social icons type, style, rotate effect, shadow effect, thin border
  • \n
  • Option to change the color palette
  • \n
  • Choose the font and font sizes for the author’s job title, website, name, and description
  • \n
  • Enable guest authors and co-authors
  • \n
  • Option to use guest authors as co-authors
  • \n
  • Top authors widget – displays the most popular authors based of comments
  • \n
  • Simple author box widget – displays the users selected
  • \n
\n
\n

Read more about the Simple Author Box advanced features.

\n","download_link":"https://downloads.wordpress.org/plugin/simple-author-box.2.42.zip","tags":{"author-bio":"author bio","author-box":"author box","author-profile-fields":"author profile fields","author-social-icons":"author social icons","responsive-author-box":"responsive author box"},"donate_link":"","icons":{"1x":"https://ps.w.org/simple-author-box/assets/icon-128x128.jpg?rev=1821054"},"wporg":true},{"name":"Genesis Blocks","slug":"genesis-blocks","version":"1.3.0","author":"StudioPress","author_profile":"https://profiles.wordpress.org/studiopress","requires":"5.3","tested":"5.8.1","requires_php":"7.1","rating":90,"ratings":{"1":1,"2":0,"3":1,"4":0,"5":10},"num_ratings":12,"support_threads":9,"support_threads_resolved":2,"active_installs":40000,"downloaded":233177,"last_updated":"2021-09-23 6:49pm GMT","added":"2020-08-25","homepage":"https://studiopress.com/genesis-pro/","short_description":"A collection of content blocks, sections, & full-page layouts for the block editor.","description":"

Genesis Blocks is a collection of page building blocks for the Gutenberg block editor. Building pages with the block editor and Genesis Blocks gives you more control to quickly create and launch any kind of site you want!

\n

Installing the customizable Genesis Blocks plugin adds a collection of beautiful, site-building blocks to help you customize page layouts, increase engagement, and get results for your business. Genesis Blocks provides everything from customizable buttons, to beautifully-designed page sections and full-page layout designs via the Section & Layout block.

\n

Along with the blocks themselves, Genesis Blocks extends the content creation experience by providing a library of page sections and full-page layouts, all available from within the block editor.

\n

Create compelling content faster.

\n

Create and use content quickly with prebuilt and custom content sections and full-page layouts.

\n

Enhance the Gutenberg editor.

\n

Additional content blocks and the layout selector make it easy to get the most value out of the block-based editor.

\n

Genesis Blocks currently includes the following blocks to help you build content and pages quickly and effortlessly:

\n
    \n
  • Section & Layout Block
  • \n
  • Advanced Columns Block
  • \n
  • Newsletter Block
  • \n
  • Pricing Block
  • \n
  • Post Grid Block
  • \n
  • Container Block
  • \n
  • Testimonial Block
  • \n
  • Inline Notice Block
  • \n
  • Accordion Block
  • \n
  • Share Icons Block
  • \n
  • Call-To-Action Block
  • \n
  • Customizable Button Block
  • \n
  • Spacer & Divider Block
  • \n
  • Author Profile Block
  • \n
  • Drop Cap Block
  • \n
\n

Do more with Genesis Pro

\n

For those wanting to level-up with Genesis Blocks, a Genesis Pro subscription brings even richer tooling and a bigger library of sections and layouts.

\n
    \n
  • 2 new blocks (more coming soon)
  • \n
  • 26 pre-built full-page layouts
  • \n
  • 56 pre-built sections
  • \n
  • Save & reuse your own sections & layouts
  • \n
  • Advanced block-level user permissions
  • \n
  • Access to and support for Genesis Framework & all of our 35 StudioPress-made premium child themes.
  • \n
  • Additional advanced features for the rest of the Genesis Product Suite
  • \n
\n

Genesis Pro includes even more value for modern WordPress content creators, marketers, and developers. Learn more about Genesis Pro here.

\n

Google AMP Support

\n

The Accelerated Mobile Pages (AMP) project is a publishing format created by Google to enhance site performance for mobile website users. AMP pages are specially designed for Google search users to quickly load website pages without using any extraneous data. Genesis Blocks has support for AMP built into each block!

\n

Help & Docs

\n

User and developer docs for Genesis Blocks can be found here.

\n","download_link":"https://downloads.wordpress.org/plugin/genesis-blocks.1.3.0.zip","tags":{"blocks":"blocks","editor":"editor","gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","page-builder":"page builder"},"donate_link":"https://studiopress.com","icons":{"1x":"https://ps.w.org/genesis-blocks/assets/icon-128x128.png?rev=2368839","2x":"https://ps.w.org/genesis-blocks/assets/icon-256x256.png?rev=2368840"},"wporg":true},{"name":"MathML Block","slug":"mathml-block","version":"1.2.1","author":"adamsilverstein","author_profile":"https://profiles.wordpress.org/adamsilverstein","requires":"5.0","tested":"5.8.1","requires_php":"5.6","rating":90,"ratings":{"1":0,"2":0,"3":0,"4":1,"5":1},"num_ratings":2,"support_threads":1,"support_threads_resolved":0,"active_installs":500,"downloaded":8052,"last_updated":"2021-09-11 2:30pm GMT","added":"2018-12-28","homepage":"","short_description":"A MathML block for the WordPress block editor (Gutenberg).","description":"

A MathML block for the WordPress block editor (Gutenberg).
\nRequires PHP 5.4+ and WordPress 5.0+.

\n

Development takes place on the GitHub repository: https://github.com/adamsilverstein/mathml-block.

\n

Screencast: https://cl.ly/c0f6bbfbc3b1

\n

What is MathML?

\n

Mathematical Markup Language is a mathematical markup language, an application of XML for describing mathematical notations and capturing both its structure and content. It aims at integrating mathematical formulae into World Wide Web pages and other documents.

\n

The MathML block uses MathJax to render MathML formulas in the editor and on the front end of a website. MathJax (https://www.mathjax.org/) is A JavaScript display engine for mathematics that works in all browsers.

\n

To test a MathML block and enter a formula, for example: \\[x = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}\\].

\n

To test using math formulas inline, type an formula into a block of text, select it and hit the ‘M’ icon in the control bar. For example: \\( \\cos(θ+φ)=\\cos(θ)\\cos(φ)−\\sin(θ)\\sin(φ) \\). Note: if you are copying and pasting formulas into the rich text editor, switching to HTML/code editor mode is less likely to reformat your pasted formula.

\n

This plugin is compatible with the official AMP plugin by rendering amp-mathml on AMP pages.

\n

Technical Notes

\n
    \n
  • Requires PHP 5.6+.
  • \n
  • Requires WordPress 5.0+.
  • \n
  • Issues and Pull requests welcome on the GitHub repository: https://github.com/adamsilverstein/mathml-block.
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/mathml-block.zip","tags":{"block":"block","block-editor":"block-editor","gutenberg":"gutenberg","math":"math","mathml":"mathml"},"donate_link":"","icons":{"1x":"https://ps.w.org/mathml-block/assets/icon-128x128.png?rev=2002452","2x":"https://ps.w.org/mathml-block/assets/icon-256x256.png?rev=2002452"},"wporg":true},{"name":"Calculated Fields Form","slug":"calculated-fields-form","version":"1.1.27","author":"CodePeople","author_profile":"https://profiles.wordpress.org/codepeople","requires":"3.0.5","tested":"5.8.1","requires_php":false,"rating":96,"ratings":{"1":20,"2":2,"3":4,"4":27,"5":683},"num_ratings":736,"support_threads":108,"support_threads_resolved":108,"active_installs":60000,"downloaded":3616036,"last_updated":"2021-10-09 10:12am GMT","added":"2013-03-12","homepage":"https://cff.dwbooster.com","short_description":"Calculated Fields Form allows you to create both simple and rich forms, quickly like a…","description":"

The “Calculated Fields Form” plugin allows you to create web forms with calculated fields, whose values are dynamically calculated based on other fields’ values in the web form.

\n

The possibilities are unlimited. For example, you can create forms with financial calculations, date operations to create reservation forms, and calculate the product prices. The plugin includes text operations for editing, translation, or advertising services. There are more advanced operations available such as determining the distance between addresses or generating graphs. The resulting forms are 100% mobile responsive.

\n

The most impressive thing is that you don’t need to hire a programmer to create the forms. With basic knowledge, you will have a professional form in just five minutes.

\n

Creating a form is all visual. The “Calculated Fields Form” plugin includes a form editor with multiple controls. Such as text fields, numeric fields, currency fields, slider controls, email fields, radio buttons, checkboxes, container fields, page breaks to create multipage forms, and most importantly, calculated fields.

\n

The form editor includes a list of controls, a property bar to easily edit field properties, a dashboard where you can design your forms, and the attributes for form configuration. Also, the plugin comes with multiple predefined layouts to change the forms’ appearance. If there are not enough predefined layouts for your project, there is a style editor to customize the form’s design.

\n

The “Calculated Fields Form” plugin includes integration with popular page builders:

\n
    \n
  • Classic WordPress Editor
  • \n
  • Gutenberg Editor
  • \n
  • Elementor
  • \n
  • Page Builder by SiteOrigin
  • \n
  • Beaver Builder
  • \n
  • WPBakery Page Builder
  • \n
  • DIVI Builder
  • \n
\n

For other editors, it is possible to insert the form into the pages via its shortcode. Each web form has an associated shortcode that allows you to insert it wherever you want.

\n

Features

\n

Main features:

\n
    \n
  • Visual form builder with an intuitive and interactive interface.
  • \n
  • Includes general-purpose controls such as radio buttons, checkboxes, menu lists, date fields, slider controls, numeric fields, text currency fields, etc.
  • \n
  • Includes calculated fields whose values result from operations involving other form fields.
    \nInsert as many calculated fields in the form as you need.
  • \n
  • Contains an advanced formula editor associated with the calculated fields with syntax highlighting and error detection.
  • \n
  • Features many operations modules: mathematical operations, operations with dates, financial operations, distance operations, text management, operations for calling remote services, etc. The calculated fields can identify numbers and prices within the values of the fields.
  • \n
  • Distributed with several predefined forms that you can use as a starting point for your projects.
  • \n
  • Includes several design templates.
  • \n
  • Supports multi-pages forms by inserting page break controls between fields belonging to different pages.
  • \n
  • Allows the grouping of fields inside container controls (Div and Fieldset).
  • \n
  • Possible to define dependency rules between fields in the form, which is very useful in the design of wizards.
  • \n
\n

Other features:

\n
    \n
  • From the plugin configuration page, it is possible to duplicate a form by pressing the “Clone” button associated with it. By cloning a form, you can reuse the work already done.
  • \n
  • Includes a troubleshooting and optimization area.
  • \n
  • Allows you to disable forms in the indexing process to improve the speed of the website.
  • \n
  • Includes a version control in the forms to recover previous versions.
  • \n
\n

Predefined forms:

\n

“Calculated Fields Form” is distributed with five predefined sample forms.

\n
    \n
  1. Simple Calculator Operations
  2. \n
  3. Calculation with Dates (bookings with check-in and check-out dates)
  4. \n
  5. Ideal Weight Calculator
  6. \n
  7. Pregnancy Calculator
  8. \n
  9. Lease Calculator
  10. \n
\n

You can clone a sample form to implement your project, or create a new form from scratch.

\n
\n

Calculated Fields Form Commercial
\n The free version of the “Calculated Fields Form” plugin includes only basic functionality. Other distributions (Professional, Developer, and Platinum) are available with advanced functionalities, such as sending notification emails, integration with payment gateways and external services, controls for database’s connection (and connection to other data sources), complex operations, and many other features.

\n
\n

Features of the Profesional version:

\n
    \n
  • Includes all the features of the free version of the plugin.
  • \n
  • Submit the data collected by the forms and store it on the website for review.
  • \n
  • Send notification emails with the data collected by the form, as well as confirmation emails to the users.
  • \n
  • Integrate the form with PayPal and calculate the amount to be charged through a calculated field.
    \nPayments allow SCA (strong customer authentication), compatible with the new payment services (PSD 2) – Directive (EU).
  • \n
  • Export and import forms between different WordPress sites.
  • \n
  • Different mechanisms to protect forms, such as captcha, WordPress nonces, and honeypot fields.
  • \n
  • Associate “Thank You” page with the form, where you can show a summary of the form’s submission.
  • \n
  • Dashboard widget to show the last week’s submissions.
  • \n
  • Cache the forms to increase the rendering speed.
  • \n
  • Export the information submitted by the forms to a CSV file and use it with third-party tools such as Excel, OpenOffice, LibreOffice, or any other spreadsheet editor.
  • \n
\n

Features of the Developer version:

\n\n

Includes add-ons to extend the form features and make use of third-party plugins and external services

\n
    \n
  • Server-Side Equations add-on: define server-side equations.
  • \n
  • Verification Code add-on: verifies the user’s email by sending him a verification code and blocking the form’s submission until the verification code is entered.
  • \n
  • WooCommerce add-on: integrate forms with WooCommerce products and calculate their prices, dimensions, and weight at the runtime.
  • \n
  • SalesForce add-on: integrate the form with the SalesForce service.
  • \n
  • WebHooks add-on: send the information collected by the form to a WebHook URL to open countless possibilities. By connecting your form to services such as Zapier, Microsoft Flow, IFTTT, Workato, and others, you can connect to hundreds of third-party services (e.g. Zoho CRM, Dropbox, Mailchimp, Google Drive, Facebook, Twitter, etc.).
  • \n
  • User Permissions add-on: control the forms’ access, as well as allowing users to access and edit their data.
  • \n
  • User Registration Form add-on: build a user registration form that captures the user’s basic information and metadata.
  • \n
  • reCAPTCHA add-on: replace the basic captcha with Google reCAPTCHA to protect the forms.
  • \n
\n

Features of the Platinum version:

\n
    \n
  • Includes all the features of free, Professional, and Developer versions of the plugin.
  • \n
  • Unique Fields Values add-on: verifies that the values entered by users have not been used in previous submissions.
  • \n
  • Easy Digital Downloads add-on: integrate the forms into Easy Digital Downloads products and calculate their prices at the runtime.
  • \n
  • Google Analytics add-on: generate usage reports in “Google Analytics” for the users’ actions.
  • \n
  • PayPal Pro add-on: enable the payer’s credit card details to be entered directly through the website without any redirection to the PayPal website.
  • \n
  • Upload Files add-on: add uploaded files to the media library and extend the file types accepted by WordPress.
  • \n
  • DropBox Integration add-on: copy or move the uploaded files to a DropBox account.
  • \n
  • ip2location add-on: identify the users’ data using the ip2location databases.
  • \n
  • Google Places add-on: transform form fields into autocomplete address fields.
  • \n
  • Autocomplete Places add-on: transform form fields into autocomplete address fields by using the Photon API.
  • \n
  • Signature add-on: convert form fields into “Signature” fields, allowing the users to sign the form with a mouse or touchscreen.
  • \n
  • iCal add-on: send iCal file in the notification emails to import the events into most popular calendars like Outlook and Google Calendar.
  • \n
  • CSV Generator add-on: export the information collected by the form to CSV files and attach these to the notification emails.
  • \n
  • PDF Generator add-on: generate PDF files with the information collected by the forms and attach them to the notification emails.
  • \n
  • WebMerge add-on: integrate the forms with FormStack documents (formerly WebMerge) to generate PDF and Office documents at runtime with the information collected by the web forms.
  • \n
  • PrintFriendly add-on: generate PDF files with the PrintFriendly API and attach the resulting files to the notification emails.
  • \n
  • Mailchimp add-on: add new members to the MailChimp account.
  • \n
  • Mautic add-on: add new contacts (or update existing ones) into the Mautic Service.
  • \n
  • HubSpot add-on: add/update contacts in HubSpot, using the information collected by the form.
  • \n
  • Emma add-on: add new members to the Emma service.
  • \n
  • Twilio add-on: send notification messages (SMS) in the forms’ submissions.
  • \n
  • MailPoet add-on: add new subscribers to MailPoet’s Mailing Lists (MailPoet versions 2 and 3).
  • \n
  • AffiliateWP add-on: integrate the forms with the AffiliateWP plugin.
  • \n
  • Authorize.Net add-on: accept payments via Authorize.Net from the form.
  • \n
  • Stripe add-on: accept payments via the Stripe payment gateway from the form.
  • \n
  • Skrill Payments Integration add-on: integrate with the Skrill Moneybookers payment gateway.
  • \n
  • TargetPay (iDeal) add-on add-on: integrate with iDeal, the popular Dutch payment method.
  • \n
  • Mollie (iDeal) add-on: accept payments via iDeal.
  • \n
  • RedSys / Servired / Sermepa add-on provides: a secure interface for accepting credit card payments from most banks in Spain.
  • \n
  • PayTM add-on: a secure interface for accepting payments with credit cards, debit cards, net banking, wallets, and EMI.
  • \n
  • SagePay add-on: a secure interface for accepting payments via SagePay.
  • \n
  • Sage Payment add-on: a secure interface for accepting payments through a secure SSL checkout system for both bankcard and virtual check transactions.
  • \n
\n

Please keep the plugin updated. Updates contain bug fixes as well as new features. The WordPress directory distributes the updates for the free version of the plugin. But for commercial versions, it would be necessary to register your copy of the plugin. The following link describes the registration process: CLICK HEREThis section mainly contains notes on features of the form builder that are too detailed to include in the main description.

\n

Conditional rules

\n

It is possible to show or hide form fields (dependent fields) based on the options selected in checkbox fields, radio buttons, the options selected in dropdown menus, or the result of calculated fields.

\n

The value of a dependent field is zero when it is hidden/disabled. The plugin excludes the disabled form fields from the submission.

\n

Additional details about the use of dependencies

\n

Predefined values

\n

The predefined values in the fields have two possible uses:

\n

1- To fill the field by default. This makes it easier for the end-user to enter values.

\n

2- Hint of the values to be entered in the field (like “Enter your name”). To use the predefined value as a placeholder, you must tick the “Hide predefined value on click” checkbox. The value will disappear once the user starts filling in the field. The calculated fields’ equations ignore placeholders.

\n

The “User Instructions” attribute

\n

The “User instructions” attribute in the field settings allows you to instruct the user on how to fill in the field. By default, the instructions appear as smaller text on the public website. But they can be configured as tooltips.

\n

Adding CSS layout keywords

\n

The “Add CSS layout keywords” attribute in the fields settings allows you to apply CSS styles to fields. You must only enter the name of the CSS class names, and not their definitions.

\n

You can define the CSS classes via the “Customize Form Design” attribute in the “Form Settings” tab. This attribute contains a CSS editor with syntax highlighting and error checking.

\n

If you want to assign several class names to the field, separate them by space characters.

\n

The plugin includes multiple predefined classes that you can assign to the form fields.

\n

More information about the form’s design can be found by reading the following post in the plugin’s blog:

\n

Customizing the form’s design

\n

The classes listed below allow you to align two, three, or four fields on the same line:

\n
column2\ncolumn3\ncolumn4\n
\n

For example, if you want to put two fields on the same line, give both fields the class name “column2”.

\n

There are other variants for displaying several fields on the same line, such as container fields (Div or Fieldset). Container fields allow you to select the number of columns in your configuration. The following post describes all the alternatives for positioning the fields in the form:

\n

Formatting the form (distributing the fields in columns)

\n

Multi-page form

\n

To create multi-page forms, you must insert “Page break” controls between fields belonging to different pages.

\n

When the user presses the “Next Page” button, the plugin validates the fields in the current form. If there is any validation error (such as an unfilled required field), the plugin stops the “Next page” action.

\n

Hidden calculated fields

\n

Calculated fields include a checkbox in the configuration that allows them to be hidden from the public website. This feature is essential in those fields that are used to calculate intermediate values or when we want to show the results only in emails or thank you pages.

\n

Equation / Formula format for calculated fields

\n

Below, some possible formulas are included as examples, but the possibilities are endless.

\n
    \n
  • \n

    With simple mathematical operations:

    \n
    fieldname1 + fieldname2\n\nfieldname1 * fieldname2\n\nfieldname1 / fieldname2\n\nfieldname1 - fieldname2\n\nfieldname1 - fieldname2\n
    \n
  • \n
  • \n

    With mathematical operations involving multiple fields and grouped fields:

    \n
    fieldname1 * (fieldname2 + fieldname3)\n
    \n
  • \n
  • \n

    With rounding operations. Round the result to two decimal places:

    \n
    PREC(fieldname2 / fieldname3, 2)\n
    \n
  • \n
  • \n

    There are infinite number of formulas that can be created using complex structures. For example, the following formula includes conditional statements:

    \n
    (function () {\nif (100 < fieldname3) return fieldname1 + fieldname2;\nif (fieldname3 <= 100) return fieldname1 * fieldname2;\n})();\n
    \n
  • \n
  • \n

    For complex formulas/equations you must use the function format with return statement to return the result to the calculated field:

    \n
     (function () {\n    var result = 0;\n    /* Your code here */\n    return result;\n}) ();\n
    \n
  • \n
\n

Operations and operators to use in equations/formulas

\n

One of the “Calculated Fields Form” strengths is the ability to use any valid JavaScript code to implement the equations/formulas.

\n

However, the plugin includes a wide variety of operations and operators to simplify the development process.

\n

Mathematical Operations and Operators

\n

Conditional Operations

\n

Field Handling Operations

\n

Operations for interacting with external services

\n

Operations for handling URLs and query strings

\n

In addition to the operation modules listed above, the Developer and Platinum versions of the plugin include additional modules:

\n

Date Time Operations

\n

Financial Operations

\n

Distance and Travel Time Operations

\n

Operations to generate charts

\n

Controls available in the form generator of the “Calculated Fields Form”

\n

The complete list of controls is available from this link: CLICK HERE

\n

Create JavaScript variables from parameters received by “GET” or “POST”, “SESSION” variables, or “COOKIES” to use in the equations

\n

The plugin includes the shortcode [CP_CALCULATED_FIELDS_VAR] to generate JavaScript variables from parameters received by “GET” or “POST”, “SESSION” variables, or “COOKIES”:

\n
[CP_CALCULATED_FIELDS_VAR name=\"...\"]\n
\n

In the shortcode, you must replace the “…” symbols with the name of the parameter or variable. It will be the same name for the JavaScript variable.

\n

For example:

\n
[CP_CALCULATED_FIELDS_VAR name=\"varname\"]\n
\n

You can use the variables generated through the shortcode [CP_CALCULATED_FIELDS_VAR] in the formulas of the calculated fields: fieldname1*varname

\n

The complete list of parameters accepted by the variables shortcode is available at the following link: CLICK HERE

\n

Tips for calculating prices

\n

One of the most frequent uses of our plugin is for price calculation. When displaying the price of a product, you may want to split the form into two pages. The first page would request the information needed to calculate the price, and the second page would include the calculated field with the final price. Also, you could use the “Instruct. Text” fields to indicate the terms, conditions, and validity period of the offer.

\n

Note that you can make the “Instruct. Text” fields dependent on the calculated value. This allows you to vary the text displayed to the user depending on the calculated price, as the terms, conditions, or offers often depend on the transaction amount.

\n

Add-ons

\n

The add-ons are only distributed with the Developer and Platinum versions of the plugin.

\n

The plugin lists the add ons in the “Add-ons area” of the settings page. To enable the add-ons, you must tick their corresponding checkbox and press the “Activate/Deactivate Add-ons” button.

\n

Server-Side Equations add-on – included in the Developer and Platinum versions of the plugin

\n

Define equations with PHP code on the server-side. The calculated fields call the server-side equations via AJAX.

\n

CLICK HERE for additional information

\n

Verification Code add-on – included in the Developer and Platinum versions of the plugin

\n

The “Verification Code” add-on allows verifying the users’ emails by sending a verification code and blocking the form’s submission until a valid code is entered.

\n

CLICK HERE for additional information

\n

Unique Fields Values add-on – included in the Platinum version of the plugin

\n

The “Unique Fields Values” add-on verifies that the values entered by users have not been used in previous submissions. It allows to enter simple and complex verification rules (one or multiple fields separated by comma symbols).

\n

CLICK HERE for additional information

\n

WooCommerce add-on – included in the Developer and Platinum versions of the plugin

\n

Integrate the forms created by the “Calculated Fields Form” with WooCommerce products and calculate their prices, weights, dimensions, and more at the runtime.

\n

CLICK HERE for additional information

\n

Easy Digital Downloads add-on – included in the Platinum version of the plugin

\n

Integrate forms created by the “Calculated Fields Form” with the Easy Digital Downloads products, and calculate their price dynamically at the runtime.

\n

CLICK HERE for additional information

\n

SalesForce add-on – included in the Developer and Platinum versions of the plugin

\n

Add new leads to a SalesForce account using the data collected by the forms.

\n

CLICK HERE for additional information

\n

WebHook add-on – included in the Developer and Platinum versions of the plugin

\n

Post the information collected by the forms to WebHook URLs.

\n

Through connecting the forms created by the plugin with services like Zapier, Microsoft Flow, Workato, or IFTTT (and many others), you will have access to hundreds of third-party services, like Zoho CRM, Dropbox, Mailchimp, Evernote, Google Drive, Facebook, Twitter, and more than 300 services https://zapier.com/zapbook/apps/, https://flow.microsoft.com/, https://ifttt.com/discover

\n

CLICK HERE for additional information

\n

User Permissions add-on – included in the Developer and Platinum versions of the plugin

\n

Control access to forms. Access can be restricted to registered users, users with certain roles, or to specific users.

\n

The add-on adds a new shortcode to the plugin to list the data submitted by the logged-in user (it is possible to insert the new shortcode into the user’s profile) and assign user permissions to edit their information or delete an entry.

\n

Limit the number of submissions (e.g. one submission per form/user).

\n

CLICK HERE for additional information

\n

User Registration Form add-on – included in the Developer and Platinum versions of the plugin

\n

Build user registration forms. The form can collect basic user information and metadata required by other plugins.

\n

CLICK HERE for additional information

\n

reCAPTCHA add-on – included in the Developer and Platinum versions of the plugin

\n

Protect forms using Google reCAPTCHA instead of the basic captcha distributed with the plugin, as reCAPTCHA is more visual and intuitive than traditional captchas.

\n

CLICK HERE for additional information

\n

Google Analytics add-on – included in the Platinum version of the plugin

\n

Generate usage reports in “Google Analytics” for the users’ actions.

\n

CLICK HERE for additional information

\n

PayPal Pro add-on – included in the Platinum version of the plugin

\n

Allow the user to enter their credit card details directly on your website without redirecting them to the PayPal website. Once the user has filled the form fields and clicked the submit button, the payment is processed and the posted data (excluding the credit card information) is stored in the WordPress database.

\n

CLICK HERE for additional information

\n

Upload Files add-on – included in the Platinum version of the plugin

\n

Every commercial version of the plugin includes the “Upload File” control to upload files from the form. However, the “Upload Files” add-on allows the uploaded files to be added to the Media Library and be accessed from the pages and posts of the website.

\n

WordPress restricts the file types that can be uploaded. The “Uploads Files” add-on allows the list of accepted files to be extended.

\n

CLICK HERE for additional information

\n

DropBox Integration add-on – included in the Platinum version of the plugin

\n

Copy or move files uploaded through the forms to a DropBox account.

\n

CLICK HERE for additional information

\n

ip2location add-on – included in the Platinum version of the plugin

\n

Use the ip2location databases to identify additional user information based on their IP. Address such as country, city, coordinates, weather station, time zone, ZIP code, etc.

\n

CLICK HERE for additional information

\n

Google Places add-on – included in the Platinum version of the plugin

\n

Transform fields into autocomplete address fields calling the Google Places API.

\n

CLICK HERE for additional information

\n

Autocomplete Places add-on – included in the Platinum version of the plugin

\n

Transform fields into autocomplete address fields by calling the Photon API.

\n

CLICK HERE for additional information

\n

Signature add-on – included in the Platinum version of the plugin

\n

Transform fields into “Signature” fields to allow the users to sign the form with their mouse or touchscreens.

\n

CLICK HERE for additional information

\n

iCal add-on – included in the Platinum version of the plugin

\n

Send the users iCal files attached to the confirmation emails to import events into the most popular calendars like Outlook and Google Calendar.

\n

CLICK HERE for additional information

\n

CSV Generator add-on – included in the Platinum version of the plugin

\n

Export the information collected by the form to CSV files and attach them to the notification emails.

\n

CLICK HERE for additional information

\n

PDF Generator add-on – included in the Platinum version of the plugin

\n

An experimental add-on that generates PDF files with the information collected by the forms and attaches them to the notification emails.

\n

CLICK HERE for additional information

\n

WebMerge add-on – included in the Platinum version of the plugin

\n

Integrate the forms with the FormStack Documents service (formerly WebMerge) to generate PDF and Office documents with the information collected from the form.

\n

CLICK HERE for additional information

\n

Integrate the form with the Silverpop service (now: IBM Watson Campaign Automation) CLICK HERE for additional information

\n

PrintFriendly add-on – included in the Platinum version of the plugin

\n

Send the information collected by the forms to PrintFriendly and attach the resulting PDF files to the notification emails.

\n

CLICK HERE for additional information

\n

Mailchimp add-on – included in the Platinum version of the plugin

\n

Add new members to the MailChimp lists with the information collected by the form.

\n

CLICK HERE for additional information

\n

Mautic add-on – included in the Platinum version of the plugin

\n

Add/update contacts in the Mautic service with information collected by the forms.

\n

CLICK HERE for additional information

\n

HubSpot add-on – included in the Platinum version of the plugin

\n

Add/update HubSpot contacts with information collected by the forms.

\n

CLICK HERE for additional information

\n

Emma add-on – included in the Platinum version of the plugin

\n

Connect the forms to the Emma service to add new members to Emma groups.

\n

CLICK HERE for additional information

\n

Twilio add-on – included in the Platinum version of the plugin

\n

Send notification messages (SMS) through Twilio in the form’s submissions.

\n

CLICK HERE for additional information

\n

MailPoet add-on – included in the Platinum version of the plugin

\n

Adds subscribers to MailPoet Mailing Lists (MailPoet versions 2 and 3).

\n

CLICK HERE for additional information

\n

AffiliateWP add-on – included in the Platinum version of the plugin

\n

Integrate the forms with the “AffiliateWP” plugin.

\n

CLICK HERE for additional information

\n

Authorize.Net add-on – included in the Platinum version of the plugin

\n

The Authorize.net Server Integration Method (Authorize.net SIM) is a hosted payment processing solution that handles all of the steps in processing a transaction.

\n

CLICK HERE for additional information

\n

Stripe add-on – included in the Platinum version of the plugin

\n

The Stripe Payments add-on (www.stripe.com) provides a way to accept all major cards from customers around the world.

\n

CLICK HERE for additional information

\n

Skrill Payments Integration add-on – included in the Platinum version of the plugin

\n

An interface for accepting payments through secure pages.

\n

You can accept cards, more than 20 local payment methods, and over 80 direct bank transfer connections with a single integration.

\n

CLICK HERE for additional information

\n

TargetPay (iDeal) add-on – included in the Platinum version of the plugin

\n

Integrate with iDeal, the most popular Dutch payment method. The integration is made via TargetPay: https://www.targetpay.com/info/ideal?setlang=en

\n

CLICK HERE for additional information

\n

Mollie (iDeal) add-on – included in the Platinum version of the plugin

\n

Integrate with iDeal, the popular Dutch payment method.

\n

CLICK HERE for additional information

\n

RedSys / Servired / Sermepa add-on – included in the Platinum version of the plugin

\n

A secure interface for accepting credit card payments through most banks in Spain (Sabadell, Banco Popular, BBVA, Santander, Bankia-Caixa, Bankinter, etc.)

\n

CLICK HERE for additional information

\n

PayTM add-on – included in the Platinum version of the plugin

\n

A secure interface for accepting payments through credit cards, debit cards, net banking, wallets, and EMI. With over 100 million PayTM users in India, your customers will appreciate the option to pay with their trusted PayTM Wallet.

\n

CLICK HERE for additional information

\n

SagePay add-on – included in the Platinum version of the plugin

\n

A secure interface for accepting payments through SagePay.

\n

CLICK HERE for additional information

\n

Sage Payment add-on – included in the Platinum version of the plugin

\n

An interface for accepting payments through a secure SSL-checkout system for both bank cards and virtual check transactions. All authorized and approved transactions will be delivered to your current bank card and/or virtual check batches, viewable within the Virtual Terminal for order processing and settlement.

\n

CLICK HERE for additional information

\n","download_link":"https://downloads.wordpress.org/plugin/calculated-fields-form.zip","tags":{"calculator":"calculator","contact-form":"contact form","form":"form","form-builder":"form builder","quote-form":"quote form"},"donate_link":"http://cff.dwbooster.com","icons":{"1x":"https://ps.w.org/calculated-fields-form/assets/icon-128x128.jpg?rev=1734377","2x":"https://ps.w.org/calculated-fields-form/assets/icon-256x256.jpg?rev=1734377"},"wporg":true},{"name":"All in One SEO – Best WordPress SEO Plugin – Easily Improve SEO Rankings & Increase Traffic","slug":"all-in-one-seo-pack","version":"4.1.4.4","author":"All in One SEO Team","author_profile":"https://profiles.wordpress.org/smub","requires":"4.9","tested":"5.8.1","requires_php":"5.4","rating":90,"ratings":{"1":166,"2":22,"3":15,"4":60,"5":1552},"num_ratings":1815,"support_threads":128,"support_threads_resolved":125,"active_installs":2000000,"downloaded":85914099,"last_updated":"2021-09-22 3:46pm GMT","added":"2007-03-30","homepage":"https://aioseo.com/","short_description":"The original WordPress SEO plugin. Improve your WordPress SEO rankings and traffic with our comprehensive SEO tools and smart SEO optimizations.","description":"

AIOSEO – The Best WordPress SEO Plugin & Toolkit

\n

All in One SEO for WordPress is the original WordPress SEO plugin started in 2007. Over 2 million smart website owners use AIOSEO to properly setup WordPress SEO, so their websites can rank higher in search engines.

\n

We believe you shouldn’t have to hire an SEO expert or developer to properly setup WordPress SEO. That’s why we built AIOSEO as the most comprehensive WordPress SEO plugin and marketing toolkit, so you can improve your website’s SEO rankings and uncover new SEO growth opportunities in less than 10 minutes.

\n

At All in One SEO (AIOSEO), user experience is our #1 priority. From website SEO setup to ongoing SEO optimization, our team of SEO experts have created easy to follow SEO workflows that will help you outrank your competitors in search results. This is why many industry leaders award AIOSEO as the most beginner friendly WordPress SEO plugin that’s both EASY and POWERFUL!

\n

AIOSEO’s WordPress SEO plugin features are highly optimized for Google and other popular search engine algorithm because we follow the most up to date SEO standards and SEO best practices. We can honestly say that AIOSEO is the best WordPress SEO plugin in the world.

\n
\n

AIOSEO Pro
\n This plugin is the lite version of the All in One WordPress SEO Pro plugin that comes with all the SEO features you will ever need to rank higher in search engines including smart SEO schema markup, advanced SEO modules, powerful SEO sitemap suite, local SEO module, Google AMP SEO, WooCommerce SEO, and tons more. Click here to purchase the best premium WordPress SEO plugin now!

\n
\n

We took the pain out of optimizing WordPress SEO and made it easy. Here’s why smart business owners, SEO experts, marketers, and developers love AIOSEO, and you will too!

\n

\n

Properly Setup WordPress SEO (without Hiring an Expert)

\n

AIOSEO makes it easy to setup WordPress SEO, the RIGHT WAY. Our smart WordPress SEO setup wizard helps you optimize your website’s SEO settings based on your unique industry needs.

\n

In less than 10 minutes, you will be able to setup all the advanced WordPress SEO features like XML sitemaps, optimized search appearance, SEO meta title, SEO meta description, SEO keywords, Open Graph SEO Knowledge Panel information, social media integration, SEO search console / webmaster tool connections, local SEO, schema markup for SEO, and more.

\n

But don’t just take our word. See what another website owner like yourself is saying:

\n
\n

Swift, honest, full control. After all these years and having used almost every WP SEO plugin I’m amazed by AIOSEO’s depth, simplicity and fast workflow ❤️
\n @aaronbol

\n
\n

Optimize Your Pages for Higher SEO Rankings with TruSEO Analysis

\n

Creating SEO optimized content used to be hard. Why?

\n

Because most business owners aren’t SEO experts.

\n

That’s why we created the TruSEO score. This gives you a more in-depth SEO optimization analysis and an actionable SEO checklist, so you can easily optimize your website pages for any keyword to get higher SEO rankings and maximum traffic.

\n

Our SEO content analysis tool is enabled by default in both the Gutenberg block editor and Classic Editor, so you can quickly optimize your blog posts and pages for your SEO keywords to get higher SEO rankings.

\n

Our SEO readability analysis gives you further insights on how to improve your content for maximum SEO benefits.

\n

The best part about TruSEO analysis is that you can use it to optimize your posts / pages for unlimited SEO keywords.

\n

Seamless SEO Integrations with Webmaster Tools & Social Media

\n

All in One SEO for WordPress offers seamless integration with popular social media platforms like Facebook, Twitter, Pinterest, YouTube, LinkedIn, Instagram, and more.

\n

This ensures that your website preview is optimized for both search engines (SEO), and social media networks.

\n

AIOSEO also makes it easy to connect your website with Google Search Console, Bing webmaster tools, Yandex webmaster tools, Baidu webmaster tools, Google Analytics, and all other SEO webmaster tools.

\n

This helps you easily measure your SEO results and progress.

\n
\n

I’m a professional SEO and used many tools and extensions. Regarding simplicity, individuality and configurability All in One SEO Pro is by far the best SEO plugin out there for WordPress.
\n Joel Steinmann

\n
\n

Smart XML Sitemaps and Rich Snippets (SEO Schema Markup)

\n

Proper website SEO markup plays an important role in improving SEO rankings. That’s why smart SEO experts use AIOSEO for on-page SEO optimization.

\n

Aside from the comprehensive WordPress XML sitemap feature, we also offer News SEO sitemap and Video SEO sitemap to help you improve your website’s SEO ranking and get more traffic.

\n

AIOSEO comes with built-in smart SEO schema markup feature to help you get more traffic through SEO rich snippets, Google featured snippets, breadcrumb site links in SEO, and image SEO search results.

\n
\n

The best SEO plugin. All in One SEO is the best SEO Plugin. I personally find it better than Yoast. This plugin offers so much freedom in configuration.
\n hanapupu

\n
\n

Local SEO, WooCommerce SEO, Google AMP, and More

\n

All in One SEO is the most comprehensive WordPress SEO plugin / marketing toolkit in the world.

\n

We offer complete support for Google Knowledge Graph and Schema.org markup for local businesses. You can add multiple business locations, opening hours, contact info (business email, business phone, business address, etc) and more with our Local SEO module.

\n

AIOSEO also makes WooCommerce SEO easy. With our SEO plugin, you can optimize your product pages and product categories for better SEO rankings (with just a few clicks).

\n

Since AIOSEO is the original WordPress SEO plugin, we have SEO integrations with all popular WordPress plugins such as membership plugin SEO, landing page plugin SEO, Semrush SEO integration, etc. AIOSEO also offers Google AMP integration and works seamlessly with all popular speed & caching plugins.

\n
\n

Best SEO Plugin for WordPress. We continue to use All in One SEO on all our WordPress sites and Clients sites, and we recommend it too all other clients.
\n MySEOGuy

\n
\n

Since SEO is an essential feature, AIOSEO is a must have plugin for every website!

\n

SEO Redirection Manager and 404 Monitoring

\n

AIOSEO Redirection manager helps you set up proper 301 redirects to improve your SEO rankings.

\n

We also support other advanced SEO redirects including 302 redirects, 307 redirects, 410 redirection, 404 redirects, REGEX redirects for advanced SEO needs, and more.

\n

We have an automatic 404 error monitor that helps you track and redirect 404 errors, so you can prevent losing SEO rankings.

\n

Since redirect speed is important for SEO, we built in both Apache / NGINX server level redirects to help you get maximum SEO benefit.

\n

Full All in One SEO Feature List

\n
    \n
  • WordPress SEO Setup Wizard – Properly setup WordPress SEO in less than 10 minutes.
  • \n
  • On-page SEO Optimization – optimize SEO code markup (without hiring a developer)
  • \n
  • TruSEO score – detailed content & readability analysis to help you optimize your pages for higher SEO rankings.
  • \n
  • Smart Meta Title & Description – Automatic SEO generation, dynamic SEO smart tags, and more.
  • \n
  • Unlimited SEO Keywords – our SEO content analyzer helps you optimize your pages for unlimited SEO keywords.
  • \n
  • XML Sitemap – Advanced XML sitemaps to boost your SEO rankings.
  • \n
  • Video SEO Sitemap – Improve your SEO rankings with video sitemap.
  • \n
  • News SEO Sitemap – Increase your SEO traffic with Google News sitemap.
  • \n
  • RSS SEO Sitemap – Improve SEO crawl frequency with RSS sitemap.
  • \n
  • Automatic Image SEO – Our image SEO module helps your images rank higher.
  • \n
  • Local Business SEO – Improve your local business SEO presence with our local SEO module.
  • \n
  • Multiple location SEO – Great for SEO optimization for businesses with multiple local store locations.
  • \n
  • Rich Snippets Schema – Get better click through rate (CTR) and increase SEO rankings with rich snippets schema.
  • \n
  • SEO Knowledge Graph Support – Improve your website’s search appearance with SEO Knowledge panel.
  • \n
  • Advanced SEO Schema – Easily add advanced SEO schema markups like FAQ schema, product schema, recipe schema (food blogger SEO), software application schema markup (SaaS SEO), online course schema (for course SEO), and more.
  • \n
  • Sitelinks Search Box – Helps you get a search box in Google SEO rankings.
  • \n
  • Google Site Links – Our SEO markup can help you get sitelinks for your brand.
  • \n
  • Robots.txt Editor – Control what SEO robots can see with our easy SEO robots.txt editor.
  • \n
  • SEO Audit Checklist – Improve your website’s SEO ranking with our SEO audit checklist.
  • \n
  • Google Search Console – Connect your WordPress site with Google webmaster tools to see additional SEO insights.
  • \n
  • Search Engine Verification Tools – Easily integrate with other popular SEO webmaster tools to improve search visibility.
  • \n
  • Google AMP SEO – Improve your mobile SEO rankings with Google AMP SEO.
  • \n
  • Advanced SEO Canonical URLs – Prevent duplicate content in SEO with automatic canonical URLs and boost your SEO rankings.
  • \n
  • Advanced Robots Meta SEO Settings – granular controls for no index, no follow, no archive, no snippet, max snippet, max video, and more.
  • \n
  • RSS Content for SEO – Stop content theft from hurting your SEO rankings with our RSS Content tool.
  • \n
  • User Access Control – Control who can manage your SEO settings with our advanced SEO access control.
  • \n
  • Competitor Site SEO Analysis – Use our competitor SEO analysis to outrank them by improving your website’s SEO optimization.
  • \n
  • Smart Breadcrumbs – Add Breadcrumb navigation to improve user experience and boost your SEO rankings. Comes with full SEO JSON+LD support.
  • \n
  • Smart SEO Redirects – Setup proper 301 redirects to improve your SEO rankings.
  • \n
  • 404 Error Monitor for SEO – Monitor website 404 errors and set up proper SEO redirects to prevent losing SEO rankings.
  • \n
  • Title and Nofollow for SEO – We make it easy for you to add title and nofollow to external links to improve SEO rankings.
  • \n
\n

WordPress SEO Integrations

\n
    \n
  • WooCommerce SEO – optimize your WooCommerce product pages and improve your WooCommerce store’s SEO rankings.
  • \n
  • MemberPress SEO – optimize your MemberPress course pages and improve your membership site’s SEO rankings.
  • \n
  • Elementor SEO – add SEO optimization for your Elementor landing pages.
  • \n
  • LearnDash SEO – SEO optimization for LearnDash courses.
  • \n
  • Facebook SEO – SEO optimize your website preview on Facebook.
  • \n
  • Twitter SEO – SEO optimize your website preview on Twitter.
  • \n
  • Pinterest SEO – SEO optimize your website preview on Pinterest.
  • \n
  • Open Graph Support – improve your SEO with open graph meta data.
  • \n
  • Knowledge Panel SEO – improve website SEO apperance by adding social media profile links for Facebook, Twitter, Wikpedia, Instagram, LinkedIn, Yelp, YouTube, and more.
  • \n
  • SEO Webmaster Tool Content – Connect your WordPress site with various webmaster tools to improve SEO rankings.
  • \n
  • Semrush SEO integration – See additional SEO keywords and relevant SEO keyphrases with our Semrush SEO integration.
  • \n
\n

WordPress SEO Plugin Importer

\n
    \n
  • Yoast SEO Importer – easily switch from Yoast SEO to AIOSEO with our full SEO migration wizard that includes SEO keywords, SEO title, meta description, XML sitemaps and more.
  • \n
  • Yoast SEO Premium Importer – easily import Yoast SEO premium settings including SEO redirects to AIOSEO with our full SEO migration wizard.
  • \n
  • RankMath SEO Importer – easily switch from RankMath SEO to AIOSEO with our SEO migration wizard.
  • \n
  • SEO Settings Backup – create a backup of your AIOSEO settings.
  • \n
  • Advanced SEO Import / Export – easily import / export AIOSEO settings from one site to another.
  • \n
  • Redirection Importer – import your SEO redirects from the Redirection plugin with our SEO migration wizard.
  • \n
  • Simple 301 Redirects Importer – import your SEO redirects from Simple 301 redirets with our SEO migration wizard.
  • \n
  • Safe Redirection Manager – easily import SEO redirects from safe redirect manager with our SEO migration wizard.
  • \n
\n

After reading this feature list, you can probably imagine why AIOSEO is the best WordPress SEO plugin in the market.

\n

Give AIOSEO a try.

\n

Want to unlock more SEO features? Upgrade to AIOSEO Pro.

\n

Credits

\n

This plugin is created by Benjamin Rojas and Syed Balkhi.

\n

Branding Guideline

\n

AIOSEO® is a registered trademark of Semper Plugins LLC. When writing about the WordPress SEO plugin by AIOSEO, please use the following format.

\n
    \n
  • AIOSEO (correct)
  • \n
  • All in One SEO (correct)
  • \n
  • AIO SEO (incorrect)
  • \n
  • All in 1 SEO (incorrect)
  • \n
  • AISEO (incorrect)
  • \n
\n

What’s Next

\n

If you like our WordPress SEO plugin, then consider checking out our other projects:

\n
    \n
  • OptinMonster – Get More Email Subscribers with the most popular conversion optimization plugin for WordPress.
  • \n
  • WPForms – #1 drag & drop online form builder for WordPress.
  • \n
  • MonsterInsights – See the Stats that Matter and Grow Your Business with Confidence. Best Google Analytics Plugin for WordPress.
  • \n
  • SeedProd – Create beautiful landing pages with our powerful drag & drop landing page builder.
  • \n
  • WP Mail SMTP – Improve email deliverability for your contact form with the most popular SMTP plugin for WordPress.
  • \n
  • RafflePress – Best WordPress giveaway and contest plugin.
  • \n
  • Smash Balloon – #1 social feeds plugin for WordPress.
  • \n
  • SearchWP – advanced WordPress search plugin.
  • \n
  • PushEngage – best web push notification plugin.
  • \n
\n

Visit WPBeginner to learn from our WordPress Tutorials and find out about other best WordPress plugins.

\n","download_link":"https://downloads.wordpress.org/plugin/all-in-one-seo-pack.4.1.4.4.zip","tags":{"google-search-console":"google search console","meta-description":"meta description","schema":"schema","seo":"seo","xml-sitemap":"xml sitemap"},"donate_link":"","icons":{"1x":"https://ps.w.org/all-in-one-seo-pack/assets/icon.svg?rev=2443290","2x":"https://ps.w.org/all-in-one-seo-pack/assets/icon-256x256.png?rev=2443290","svg":"https://ps.w.org/all-in-one-seo-pack/assets/icon.svg?rev=2443290"},"wporg":true},{"name":"Weglot Translate – Translate your WordPress website and go multilingual","slug":"weglot","version":"3.4","author":"Weglot Translate team","author_profile":"https://profiles.wordpress.org/remyb92","requires":"4.5","tested":"5.8.1","requires_php":"5.6","rating":96,"ratings":{"1":40,"2":7,"3":6,"4":27,"5":1222},"num_ratings":1302,"support_threads":6,"support_threads_resolved":6,"active_installs":40000,"downloaded":1236506,"last_updated":"2021-09-24 3:41pm GMT","added":"2015-09-27","homepage":"http://wordpress.org/plugins/weglot/","short_description":"Translate your WordPress website in 110+ languages within minutes with Weglot Translate, without any coding.","description":"

Weglot Translate is the leading WordPress translation plugin, trusted by 60,000+ users worldwide. Translate your WordPress website into 110+ languages and go multilingual within minutes, no coding required.

\n

Increase visibility and boost conversions with ease by adding multilingual functionality. Weglot Translate is fully optimized for multilingual SEO, with every translated page automatically indexed by Google. Say hello in multiple languages to millions of new visitors.

\n

Make your website multilingual in minutes with a free trial. Visit https://weglot.com/ to learn more!

\n

How Weglot Translate works

\n\n

Why Weglot Translate

\n

It’s easy to install: Weglot Translate is quick to set up to have a multilingual WordPress website ready, instantly. Reach out to millions of new visitors worldwide with a few clicks, without any coding.

\n

It’s built for maximum compatibility: Weglot Translate is fully compatible with all platforms, WordPress themes, and plugins. From WooCommerce product descriptions to Elementor order forms, everything is built with the creation of a successful multilingual website in mind: easily translate all your content into the languages of your choice. This way you can focus on your content, not the technical details.

\n

It’s optimized for SEO: Weglot Translate follows Google’s best practices for multilingual website translation, serving all translated web pages with clean source code. Google will automatically index every translated page with dedicated URLs.

\n

It’s easy to set and forget: Weglot Translate automatically detects all your website content for easy translation. No more time-consuming manual duplication of every single line of content to get a multilingual website. All translations are updated in real-time, so you don’t need to worry about maintenance and any newly added content is automatically translated.

\n

It takes translation seriously: Weglot Translate gives you an edge on your translation tasks with the first layer of automatic multilingual translation provided by the best machine learning providers on the market (DeepL, Google, Microsoft, and Yandex). You can also edit the translations and collaborate with your team to work on multilingual translations together, directly within Weglot.

\n

It partners with the pros: Weglot Translate lets you order from vetted professional translators directly inside your Weglot dashboard. Set translation quality the way you want it to be, with Weglot Translate.

\n

“Within a week of translating our site to English with Weglot, international sales doubled, by the following month – they had quadrupled.”
\nClara Champion – Director of Digital and E-Commerce, Jimmy Fairly
\nRead the case study

\n

Multilingual functionality like no other

\n

Increase visibility: All translated pages are automatically indexed following Google’s best practices with dedicated URLs. Get new traffic with your multilingual website.

\n

Reduce bounce rate: Redirect visitors automatically to serve them in the language of their choice, based on their browser settings.

\n

Enhance user experience: From the landing page to the email confirmation, get all your key conversion steps translated in your customers’ language. You can even add different images and videos for various languages. Useful for images with text, Weglot Translate makes it easy to display “translated” images in your translated versions. Media localization is an essential aspect of any multilingual project and Weglot Translate makes it simple to do so.

\n

“We really loved the localization features provided by Weglot, such as the ability to translate images and other types of media depending on the language the visitor is viewing the site in.”
\nKim Martin – Senior Communications and Marketing Officer, The Challenge Initiative
\nRead the case study

\n

An all-in-one language translation platform

\n
    \n
  • Manage and edit all of your translations through a user-friendly interface.
  • \n
  • Collaborate with team members and trusted translators to translate together, directly inside Weglot.
  • \n
  • Is it a title? Is it a link? No more guessing the context of the text. Weglot Translate’s in-context editor lets you translate directly within the webpage.
  • \n
  • Make it your own. The multilingual language switcher is fully customizable with multiple design choices.
  • \n
  • Weglot Translate makes it easy to migrate from other WordPress multilingual plugins like Polylang or WPML. Simply deactivate your existing translation plugin and install Weglot Translate.
  • \n
\n

“Weglot removed the pain of having to manage multiple stores for multiple locales. The integration was easy, and the support is incredibly helpful. I highly recommend Weglot to anyone looking for a simple and cost-effective solution to translate their stores!”
\nMike Robertson – Director of Sales Operations, Nikon

\n

With an increase in site visitors and session duration thanks to your multilingual website, you can expect a massive boost to your conversions. See why thousands of e-commerce platforms, SaaS firms, marketplaces, corporate websites, and blogs worldwide love Weglot Translate for its multilingual powers. Try it today for free

\n

Why should you have a multilingual website?

\n

It’s easy to forget all about other languages when setting up your online business! With the resources needed to put together a new website, multilingual capabilities are very commonly ignored, as the process to get multiple translations can get complicated and expensive. But ignoring the importance of being multilingual can be a costly mistake: unlocking the possibility for visitors to read and interact in their own language means you’ll be significantly widening your reach, increasing your chances of business success!

\n

This is why it’s important to think of ways to cater for more languages: multilingual websites naturally rank in more countries and attract more potential customers. Your visitors will also feel like you are significantly more localized by speaking to them in a language they easily understand!

\n

But how about the cost and headache to set up a proper multilingual website? This is where Weglot can make it easy: with a simple way to unlock multilingual capabilities swiftly, your website can go from targeted towards a single language to multilingual in an easy, affordable manner!

\n

Please note that Weglot is using Cloudfront CDN to display flags images to speed up performance around the world.
\nThe use of this CDN and of Weglot service is subject to Weglot terms of service

\n","download_link":"https://downloads.wordpress.org/plugin/weglot.3.4.zip","tags":{"language":"language","localization":"localization","multilingual":"multilingual","translate":"translate","translation":"translation"},"donate_link":"","icons":{"1x":"https://ps.w.org/weglot/assets/icon-128x128.png?rev=2186774","2x":"https://ps.w.org/weglot/assets/icon-256x256.png?rev=2186774"},"wporg":true},{"name":"Rank Math SEO – Best SEO Plugin For WordPress To Increase Your SEO Traffic","slug":"seo-by-rank-math","version":"1.0.73","author":"Rank Math","author_profile":"https://profiles.wordpress.org/rankmath","requires":"5.6","tested":"5.8.1","requires_php":"7.2","rating":98,"ratings":{"1":72,"2":17,"3":20,"4":52,"5":3521},"num_ratings":3682,"support_threads":121,"support_threads_resolved":114,"active_installs":900000,"downloaded":21069673,"last_updated":"2021-09-29 8:57am GMT","added":"2018-11-19","homepage":"https://s.rankmath.com/home","short_description":"Rank Math SEO is the Best WordPress SEO plugin combines the features of many SEO tools in a single package & helps you multiply your SEO traffic.","description":"

Rank Math SEO – Best SEO Plugin for WordPress
\n★★★★★

\n

SEO is the most consistent source of traffic for any website. We created Rank Math SEO, a WordPress SEO plugin, to help every website owner get access to the SEO tools they need to improve their SEO and attract more traffic to their website.

\n

Try The FREE Demo of Rank Math SEO

\n\n

Features | Why Choose Rank Math SEO? | Compare | Screenshots | Benefits

\n

SEO might be the best and most consistent source of traffic for one’s website, but it’s not without its quirks. The constant process of optimizing your posts can sometimes take more time than actually writing the content. If you always feel that you can do more on the SEO front for your website but don’t have the time, then Rank Math SEO is what you’re looking for.

\n

Its host of intelligent features brings top SEO capabilities in your hands that were previously out of reach. The smart automation features give you the power of an entire SEO team with just a few clicks. A well thought out design, powerful features, and years of development by the MyThemeShop squad make Rank Math SEO a game-changing SEO plugin that will level the SEO playing field in your favor to help increase traffic.

\n

Rank Math SEO beats all of its competitors, hands down.

\n

See the features which are exclusive to the Rank Math SEO plugin and understand why Rank Math SEO is possibly the Best SEO Plugin for WordPress.

\n
    \n
  • \n

    Setup Wizard (Easy to follow)
    \nRank Math SEO practically configures itself. Rank Math SEO features a step-by-step installation and configuration wizard that sets up SEO for WordPress perfectly.

    \n
  • \n
  • \n

    Google Schema Markup aka Rich Snippets Integrated
    \nConfiguring Google Schema Markup, aka Rich Snippets, is now easy, thanks to Rank Math SEO. With support for 16+ types of Schema Markups, aka Rich Snippets, including the Rating Schema, you’ll be able to optimize your posts in just a few clicks. It also includes the FAQ Schema aka FAQPage Schema Block & the HowTo aka How To Schema Block in the plugin.

    \n
  • \n
  • \n

    Optimize Unlimited Keywords
    \nUnlike other plugins, Rank Math SEO lets you optimize your posts for unlimited focus keywords per post. 5 by default. Increase by adding this filter.

    \n
  • \n
  • \n

    Google Search Console Integration
    \nRank Math SEO saves you a ton of time by integrating with Google Search Console and displaying important information about your website right inside WordPress.

    \n
  • \n
  • \n

    Google Keyword Ranking
    \nWith Rank Math SEO Plugin, you can track your keyword rankings in Google.

    \n
  • \n
  • \n

    Google Analytics Integration
    \nRank Math SEO offers a one-click solution to install Google Analytics script without pasting anything manually anywhere. You can also exclude the Logged-in users.

    \n
  • \n
  • \n

    Optimal Settings Pre-Selected
    \nConfiguring an SEO plugin takes time, and can be confusing. Rank Math SEO saves you the trouble with its optimal default settings, which are ideal for most websites, and if needed, can be changed.

    \n
  • \n
  • \n

    LSI Keyword Tool Integrated
    \nRank Math SEO’s integrated LSI keyword tool gives you multiple keyword variations of your focus keyword, which helps you attract more traffic to your posts. Free account needed.

    \n
  • \n
  • \n

    Add Overlay Icons On Social Images
    \nRank Math SEO makes social thumbnails click magnets by giving you the option of overlaying a GIF or a video icon on the thumbnail.

    \n
  • \n
  • \n

    Advanced SEO Analysis Tool
    \nWith just a single click, Rank Math SEO can perform an SEO audit of your website.

    \n
  • \n
  • \n

    30 Detailed SEO Tests
    \nRank Math SEO is designed to completely supercharge your website’s SEO with its 30 detailed SEO tests. Free account needed.

    \n
  • \n
  • \n

    Module Based System
    \nRank Math SEO has been designed with a module-based system, each of which can be enabled or disabled as per your needs, giving you extra speed and control.

    \n
  • \n
  • \n

    Smart Redirection Manager
    \nRank Math SEO’s built-in smart redirection manager will help you create, manage, delete, enable, or disable redirects at scale.

    \n
  • \n
  • \n

    Local Business SEO
    \nRank Math SEO is designed to be used by Global websites and local websites alike. With its local SEO features, local sites can stand out in the search engine results like Google’s and attract more traffic.

    \n
  • \n
  • \n

    SEO Optimized Breadcrumbs
    \nRank Math SEO can display SEO optimized Breadcrumbs on all websites, even if the theme doesn’t support Schema.org coding.

    \n
  • \n
  • \n

    404 Monitor
    \nRank Math SEO has a built-in 404 error monitor that helps you find and resolve 404 errors for a better user experience.

    \n
  • \n
  • \n

    Deep Content Analysis Tests
    \nOn-Page SEO is no longer a mystery with Rank Math SEO’s deep content analysis and precise SEO recommendations.

    \n
  • \n
  • \n

    Internal Linking Suggestions
    \nRank Math SEO intelligently suggests other posts from your website for internal linking from your current posts, improving the chances of ranking higher in the SERPs.

    \n
  • \n
  • \n

    Role Manager
    \nEven if you have multiple employees manage your website, you can precisely control what each of them has to access to in Rank Math SEO with its role manager.

    \n
  • \n
  • \n

    Multisite Ready
    \nWhether you run a single WordPress website or an entire network of sites – we are ready for you. Rank Math SEO fully supports the WordPress Multiuser project (WPMU).

    \n
  • \n
  • \n

    and has lightweight Code compared to slow-loading in other SEO plugins.
    \nEven with significantly more features than other plugins, Rank Math SEO loads amazingly fast and keeps your website fast always.

    \n
  • \n
\n

Why is Rank Math SEO such a game-changer?

\n
    \n
  • \n

    Auto Configuration — All you have to do is set a few options, and Rank Math SEO will configure itself perfectly for your website.

    \n
  • \n
  • \n

    Super Fast SEO Plugin — Even after packing so many features, Rank Math SEO has a negligible load on your server, thus making it one of the fastest SEO plugins for WordPress.

    \n
  • \n
  • \n

    Automatic Keyword Suggestions from Google — Get keyword suggestions from Google as you start typing letters in the focus keyword field of Rank Math SEO.

    \n
  • \n
  • \n

    New SEO Analyzer — Rank Math SEO’s built-in SEO analysis will give you SEO recommendations that you’d normally spend hundreds of dollars to get.

    \n
  • \n
  • \n

    Elementor SEO – Deep integration with the Elementor Page builder. Now, you don’t need to go back and forth between tabs to configure your page’s SEO. Everything related to SEO for Elementor can be configured in the visual editor.

    \n
  • \n
  • \n

    Divi SEO – One of its kind integration with the Divi Page Builder and theme. Handle everything related to SEO from the page editor screen without jumping back to the default editor. This helps you optimize your website in real-time for SEO.

    \n
  • \n
  • \n

    Page Builder SEO – The Rank Math SEO plugin’s content analysis works perfectly with popular page builders and themes like Oxygen Builder, WPBakery, Avada, Astra, Kadence, Themify, Beaver Builder, Page Builder Framework, Schema theme, Flothemes, OceanWP, etc.

    \n
  • \n
  • \n

    Optimize UNLIMITED Keywords At Once — You can optimize your post for up to 5 different keywords by default with the Rank Math SEO plugin and can use a filter to optimize for unlimited keywords.

    \n
  • \n
  • \n

    Image SEO – With Rank Math SEO’s perfect solution to add ALT & Title tags on the fly, to optimize images, showing inside the content, and that too for FREE, there is no reason to choose any other SEO solution that does not provide all the essential SEO features.

    \n
  • \n
  • \n

    Web Stories SEO – Make any Story created with the Google’s Web Stories plugin SEO-Ready. Automatically adds AMP-friendly Schema markup and Meta tags.

    \n
  • \n
  • \n

    WooCommerce SEO – Optimizing your store products is easier with Rank Math. SEO Meta tags and Schema are automatically added but can be customized with total control as well. Rank Math SEO has the most advanced SEO for WooCommerce.

    \n
  • \n
  • \n

    Google AMP SEO – Accelerated Mobile Pages need to be prepared for search engines. What better way to do that than letting Rank Math SEO use your regular SEO details and optimizing AMPs based on that data?

    \n
  • \n
  • \n

    bbPress SEO – User-generated content in bbPress is properly optimized with Rank Math handling all the important SEO aspects. Q&A Schema is added to bbPress topics along with other essential meta tags.

    \n
  • \n
  • \n

    BuddyPress SEO – As with bbPress, SEO for BuddyPress content is done automatically done using Rank Math. You get all the options you need to get higher rankings with your user-generated content.

    \n
  • \n
  • \n

    Quick Edit SEO Details – Go through a lot of posts/pages quickly by ensuring they are optimized for search engines. Quickly edit multiple SEO fields at once using Rank Math SEO.

    \n
  • \n
  • \n

    Instant Indexing for Bing – Get your content instantly indexed by Bing. Enter a few key details and you are all set and ready to go.

    \n
  • \n
  • \n

    Instant Indexing for Google – Instantly getting indexed by Google used to be reserved to huge brands and large websites. Not anymore. Just about anyone can take advantage of Google’s Instant Indexing feature using Rank Math SEO.

    \n
  • \n
  • \n

    Version Control – Rollback or try beta versions. Updating and downgrading your plugins is now a matter of few clicks. Automatically update to the latest versions or try out the latest beta builds.

    \n
  • \n
  • \n

    Translation Plugins Support — Rank Math SEO works flawlessly with the top translations plugins like WPML, TranslatePress, Weglot, Polylang (not entirely compatible yet), etc., making it a perfect companion.

    \n
  • \n
  • \n

    XML Sitemap – The Rank Math SEO plugin comes with a fast-loading Sitemap feature that works with different post types, including the custom ones, and provides deep controlling. One can also generate a Locations KML file via filter for Local Sitemap, & a WooCommerce Sitemap.

    \n
  • \n
  • \n

    1-Click Import From Yoast — With a single click of your mouse, Rank Math SEO can import all your settings from Yoast SEO & Yoast SEO Premium to itself. The transfer is instant, and you don’t lose any SERP rankings as a result.

    \n
  • \n
  • \n

    1-Click Import From AIO SEO — Rank Math SEO can also import all your settings from AIO SEO & All in One SEO Pack Pro in a single click. The transfer is instant, and you don’t lose any SERP rankings as a result.

    \n
  • \n
  • \n

    1-Click Import From All In One Schema Rich Snippets — Rank Math SEO can also import all of AIO’s Rich Snippet & Schema Pro settings in a few clicks, which help preserve your rich rankings when moving to Rank Math SEO.

    \n
  • \n
  • \n

    1-Click Import From SEOPress SEO — With a single click of your mouse, Rank Math SEO can import all your settings from SEOPress & SEOPress Pro SEO plugin to itself. The transfer is instant, and you don’t lose any SERP rankings as a result.

    \n
  • \n
  • \n

    1-Click Import From Redirection — Moving all your redirects shouldn’t be a hassle. That’s why we have made importing redirections from the popular Redirection plugin as simple as clicking a button.

    \n
  • \n
  • \n

    Google Keyword Suggestion — When deciding on focus keywords, Rank Math SEO can help you discover more keywords by pulling in automatic keyword suggestions from Google.

    \n
  • \n
\n

Who Can Benefit From Rank Math SEO?

\n

Rank Math SEO Plugin is perfect for:

\n

✔ Bloggers
\n✔ eCommerce Store Owners
\n✔ Niche Sites
\n✔ Businesses
\n✔ Local Businesses
\n✔ Startups
\n✔ The Real Estate
\n✔ Artists & Photographers
\n✔ The Solution Offerer
\n✔ Directories
\n✔ Vloggers (Video Bloggers)
\n✔ Or any WordPress Website

\n

Take a sneak peek into Rank Math SEO’s features

\n

Detailed Setup Tutorial

\n\n

List of Best Rank Math SEO Features

\n
    \n
  • Clean, & Simple User Interface
  • \n
  • Optimal Settings Pre-Selected
  • \n
  • Simple Setup Wizard\n
      \n
    • Compatibility Check
    • \n
    \n
  • \n
  • Auto Canonical URLs
  • \n
  • LSI Keyword Tool Integrated
  • \n
  • Google Search Console Integration
  • \n
  • Google Keyword Ranking
  • \n
  • Import Other Plugin Settings\n
      \n
    • 1 Click Import From Yoast SEO Plugin
    • \n
    • 1 Click Import From AIO SEO
    • \n
    • 1 Click Import From SEOPress & SEOPress Pro
    • \n
    • 1 Click Import From All In One Schema Rich Snippets & Schema Pro
    • \n
    • 1 Click Import From Redirection Plugin
    • \n
    \n
  • \n
  • Role Manager
  • \n
  • ACF Support
  • \n
  • AMP Ready
  • \n
  • bbPress & BuddyPress Modules
  • \n
  • Google Schema Markup Integrated\n
      \n
    • Article Rich Snippet
    • \n
    • Review Rich Snippet
    • \n
    • Book Rich Snippet
    • \n
    • Course Rich Snippet
    • \n
    • Event Rich Snippet
    • \n
    • Job Posting Rich Snippet
    • \n
    • Local Business Rich Snippet
    • \n
    • 193 Local Business Types
    • \n
    • Music Rich Snippet
    • \n
    • Person Rich Snippet
    • \n
    • Product Rich Snippet
    • \n
    • Recipe Rich Snippet
    • \n
    • Restaurant Rich Snippet
    • \n
    • Service Rich Snippet
    • \n
    • Software Application Rich Snippet
    • \n
    • Video Rich Snippet
    • \n
    • Author Stay Rating
    • \n
    \n
  • \n
  • Social Media Optimization\n
      \n
    • Add Overlay Icons On Social Images
    • \n
    • Default OpenGraph Thumbnail
    • \n
    • Auto Facebook Open Graph
    • \n
    • Facebook Authorship
    • \n
    • Facebook Open Graph for Homepage
    • \n
    • Automatic Twitter Meta Cards
    • \n
    • Twitter Card for Homepage
    • \n
    • Default Twitter Card Type
    • \n
    • Social Previews
    • \n
    \n
  • \n
  • Add Knowledge Graph\n
      \n
    • Represent site as a Person
    • \n
    • Represent site as a Company
    • \n
    • Set a Site Logo
    • \n
    \n
  • \n
  • Advanced SEO Analysis Tool\n
      \n
    • 30 Detailed SEO Tests
    • \n
    • SEO Analysis Score
    • \n
    \n
  • \n
  • Automated Image SEO
  • \n
  • Powerful Post Optimization\n
      \n
    • Add SEO Meta Box to all post types
    • \n
    • Bulk Edit Titles & Descriptions
    • \n
    • Post Preview on Google
    • \n
    • Content Analysis
    • \n
    • Control SEO For Single Pages
    • \n
    • Control The Title
    • \n
    • Control Meta Description
    • \n
    • Auto Add Additional Meta Data
    • \n
    • Control ROBOTS Meta
    • \n
    • Choose a Primary Category
    • \n
    \n
  • \n
  • Single Post/page Optimization\n
      \n
    • Focus Keyword
    • \n
    • Google Keyword Suggestion
    • \n
    • Optimize UNLIMITED Keywords (5 by default)
    • \n
    • Choose Pillar Posts & Pages
    • \n
    • Internal Linking Suggestions
    • \n
    • Capitalize Titles
    • \n
    • SEO Failed Tests
    • \n
    • SEO Warnings
    • \n
    \n
  • \n
  • XML Sitemap (New!)
  • \n
  • Module Based System
  • \n
  • Choose Any Separator Character
  • \n
  • Modify Global Meta
  • \n
  • Search Engine Verification Tools\n
      \n
    • Bing Site Verification
    • \n
    • Baidu Site Verification
    • \n
    • Alexa Site Verification
    • \n
    • Yandex Site Verification
    • \n
    • Google Site Verification
    • \n
    • Pinterest Site Verification
    • \n
    • Norton Safe Web Site Verification
    • \n
    \n
  • \n
  • Advanced Redirection Manager\n
      \n
    • Smart & Automatic Post Redirects
    • \n
    • 301 Redirection Type
    • \n
    • 302 Redirection Type
    • \n
    • 307 Redirection Type
    • \n
    • 410 Redirection Type
    • \n
    • 451 Redirection Type
    • \n
    • Support for REGEX
    • \n
    • Debug Redirections
    • \n
    \n
  • \n
  • Simple 404 Monitor\n
      \n
    • Advanced 404 Monitor
    • \n
    \n
  • \n
  • Advanced SEO Breadcrumbs\n
      \n
    • Auto Show SEO Breadcrumbs
    • \n
    \n
  • \n
  • Advanced Link Options\n
      \n
    • Nofollow All External Image Links
    • \n
    • Nofollow All External Links
    • \n
    • Open External Links in New Tab/Window
    • \n
    • Redirect Attachments to Parent
    • \n
    • Strip Category Base
    • \n
    \n
  • \n
  • Remove Stopwords from Permalinks
  • \n
  • Ping Search Engines
  • \n
  • Local SEO Optimization\n
      \n
    • Contact Info Shortcode
    • \n
    \n
  • \n
  • Deep Support For WooCommerce SEO
  • \n
  • Compatible for EDD SEO (Easy Digital Downloads SEO)
  • \n
  • Only 30k Lines of Code\n
      \n
    • PSR-4 Coding Standards (wherever possible)
    • \n
    \n
  • \n
  • Optimize Different Archives\n
      \n
    • Optimize Author Archive Pages
    • \n
    • Optimize Date Archive Pages
    • \n
    • Optimize Archive Pages
    • \n
    \n
  • \n
  • .htaccess Editor
  • \n
  • Robots.txt Editor
  • \n
  • Import/Export Settings
  • \n
  • Import/Export Redirections
  • \n
  • Add Content Before the RSS Feed
  • \n
  • Add Content After the RSS Feed
  • \n
  • Detailed Documentation\n
      \n
    • Contextual Help
    • \n
    \n
  • \n
\n

BIG Publications are Raving About Rank Math SEO

\n

Rank Math SEO Reviews

\n\n\n

Rank Math SEO Review – Why I Ditched Yoast For Rank Math SEO

\n

Rank Math SEO on Product Hunt

\n

Rank Math SEO Plugin Review from an SEO Consultant

\n

and many more

\n

Check RANK MATH PRO WHICH MAKES SEO EASIER & FASTER

\n\n

Rank Math SEO FREE VS PRO COMPARISON

\n

UNIQUE FEATURES OF RANK MATH SEO PRO

\n

Google Analytics & Search Console Integration (The only SEO plugin that provides it)
\n✔ Integrated Google Analytics, AdSense & Search Console Data
\n✔ Analyze SEO Performance of Each Post & Page
\n✔ See Top Winning/Losing Posts & Keywords
\n✔ Keep Track of Position History
\n✔ Rank Tracker for Important Keywords

\n

Schema aka Structured Data aka Rich Snippets. The BEST Schema Generator Available Online
\n✔ 20+ Pre-defined Schema types (more than any other plugin) –
\n✔ Import Schema from Other Websites
\n✔ Advanced Schema Builder [Advanced SEOs can use this to create any complex Schema Markup)
\n✔ Schema Templates for Automation
\n✔ Conditional Schema Markup
\n✔ Inbuilt Schema Code Preview and Validation
\n✔ Multiple Location Schema On Any Page (using the Shortcode)

\n

Automation At Its BEST
\n✔ Automated Image SEO
\n✔ Advanced Filtering for Images [https://i.rankmath.com/zAUHHP]
\n✔ Watermark Your images
\n✔ Advanced Post filtering
\n✔ Bulk Actions [index, noindex, redirect, etc.]
\n✔ Quick Edit SEO Details
\n✔ Bulk Import SEO Meta Details Using CSV file
\n✔ Auto Detect Videos and Generate Schema Markup for Them
\n✔ Auto Fetch Thumbnail, Duration of YouTube & Vimeo Videos
\n✔ Automatically Flush Facebook Thumbnails
\n✔ Open External Links in New Tabs
\n✔ Nofollow External Links
\n✔ Noindex Paginated, Archive, Search Result Pages
\n✔ Instant Indexing for Bing [Also Google using our Instant Indexing Plugin]

\n

WooCommerce SEO
\n✔ Automatic Schema for WooCommerce Products
\n✔ Advanced Open Graph Tags for WooCommerce Products
\n✔ Automatic NoIndex Hidden Products
\n✔ Remove WooCommerce Product and Category Base
\n✔ Add Custom Brands to Products
\n✔ Add Global Identifier Like GTIN/MPN – Even to Variations

\n

Workflow Improvements
\n✔ Internal Role Manager
\n✔ Inbuilt Google Trends Insights
\n✔ Site Audit with 29 Unique Tests
\n✔ Import Redirections Using CSV File
\n✔ Categorize Redirections for Grouping
\n✔ One-Click Redirection for 404s
\n✔ Monitor Search Performance of Entire Portfolio
\n✔ Easy and Advanced Mode

\n

Miscellaneous
\n✔ Supports bbPress SEO and BuddyPress SEO
\n✔ Version Control – Rollback or Try Beta Versions

\n

MANY MORE FEATURES
\n✔ PREMIUM 24x7x365 Dedicated Support Managers
\n✔ MOST COMPETITIVE PRICING EVER!

\n

CHEK ALL THE PREMIUM FEATURES AND PRICING HERE

\n

CONNECT WITH THE TEAM AND SEO EXPERTS

\n

JOIN FACEBOOK GROUP COMMUNITY: The purpose of this Facebook group is to have a collective place where the community can help each other, and we can get some feedback to improve Rank Math SEO as well. Joining the group is also a great way to connect with like-minded people and share your SEO experience.

\n

Branding Guideline

\n

Rank Math® SEO is a registered trademark. Please use the following format when mentioning the Rank Math SEO plugin anywhere.
\n* Rank Math SEO [correct]
\n* RankMath [incorrect]
\n* Rankmath [incorrect]
\n* rankmath [incorrect]
\n* rankMath [incorrect]

\n

Getting Started:

\n

1. How to Setup Rank Math SEO: Once you install Rank Math SEO for the first time, you will be greeted with the Setup Wizard, which is discussed in detail here.

\n

2. Facebook Group: In this group, you will find the team of Rank Math SEO plugin fairly active and ready to answer your SEO related queries.

\n

3. User Documentation: Although Rank Math SEO is already easy to set up, we’ve put together tutorials, guides, and some knowledge bases to help you set up and get started with Rank Math SEO.

\n

4. Contribute (Sharing is caring): If you are one of those caring hearts that want to help, go to our Rank Math SEO’s GitHub Repository and see how you can contribute to the SEO community. You can also add a new language via translate.wordpress.org.

\n

5. Fixing Common Errors: Sometimes, avoidable or common issues can get you stuck. We’ve created a common guide where we discuss all the common issues and how to fix them.

\n

6. Support Ticket Forum: Our dedicated forum is where you can get support for any issues that you face with Rank Math SEO. In the forum, we’ll also try to answer some SEO queries. User experience is important to us, and our aim is to answer all the queries on the forum in a timely manner.

\n

7. Frequently Asked Questions: Here, we’ve answered the most commonly asked questions about Rank Math SEO. The questions are related to features, pricing, and others.

\n","download_link":"https://downloads.wordpress.org/plugin/seo-by-rank-math.1.0.73.zip","tags":{"google-search-console":"google search console","redirection":"redirection","schema":"schema","seo":"seo","sitemap":"sitemap"},"donate_link":"","icons":{"1x":"https://ps.w.org/seo-by-rank-math/assets/icon.svg?rev=2348086","2x":"https://ps.w.org/seo-by-rank-math/assets/icon-256x256.png?rev=2348086","svg":"https://ps.w.org/seo-by-rank-math/assets/icon.svg?rev=2348086"},"wporg":true},{"name":"Head, Footer and Post Injections","slug":"header-footer","version":"3.2.2","author":"Stefano Lissa","author_profile":"https://profiles.wordpress.org/satollo","requires":"4.0","tested":"5.7.3","requires_php":"5.6","rating":98,"ratings":{"1":3,"2":2,"3":4,"4":13,"5":624},"num_ratings":646,"support_threads":1,"support_threads_resolved":0,"active_installs":300000,"downloaded":2801425,"last_updated":"2021-03-17 1:26pm GMT","added":"2008-04-07","homepage":"https://www.satollo.net/plugins/header-footer","short_description":"Header and Footer plugin let you to add html code to the head and footer…","description":"

About WordPress SEO and Facebook Open Graph: I was very unpleased by Yoast invitation to
\nremove my plugin, and it’s not the case.
\nRead more here.

\n

Head and Footer Codes

\n

Why you have to install 10 plugins to add Google Analytics, Facebook Pixel, custom
\ntracking code, Google DFP code, Google Webmaster/Alexa/Bing/Tradedoubler verification code and so on…

\n

With Header and Footer plugin you can just copy the code those services give you
\nin a centralized point to manage them all. And theme independent: you can change your theme
\nwithout loosing the code injected!

\n

Injection points and features

\n
    \n
  • in the page section where most if the codes are usually added
  • \n
  • just after the tag as required by some JavaScript SDK (like Facebook)
  • \n
  • in the page footer (just before the tag)
  • \n
  • recognize and execute PHP code to add logic to your injections
  • \n
  • distinct desktop and mobile injections
  • \n
\n

AMP

\n

A new AMP dedicated section compatible with AMP plugin lets you to inject specific codes in
\nAMP pages. Should be ok even with other AMP plugins.

\n

Post Top and Bottom Codes

\n

Do you need to inject a banner over the post content or after it? No problem. With Header and
\nFooter you can:

\n
    \n
  • Add codes on top, bottom and in the middle of posts and pages
  • \n
  • Differentiate between mobile and desktop (you don’t display the same ad format on both, true?)
  • \n
  • Separate post and page configuration
  • \n
  • Native PHP code enabled
  • \n
  • Shortcodes enabled
  • \n
\n

Special Injections

\n
    \n
  • Just after the opening BODY tag
  • \n
  • In the middle of post content (using configurable rules)
  • \n
  • Everywhere on template (using placeholders)
  • \n
\n

bbPress

\n

The specific bbPress injections are going to be removed. Switch to my
\nAds for bbPress, which is more flexible and complete.

\n

Limits

\n

This plugin cannot change the menu or the footer layout, those features must be covered by your theme!

\n

Official page: Header and Footer.

\n

Other plugins by Stefano Lissa:

\n\n

Translation

\n

You can contribute to translate this plugin in your language on WordPress Translate

\n

Privacy and GDPR

\n

This plugin does not collect or process any personal user data.

\n","download_link":"https://downloads.wordpress.org/plugin/header-footer.3.2.2.zip","tags":{"blog":"blog","footer":"footer","header":"header","page":"page","single":"single"},"donate_link":"http://www.satollo.net/donations","icons":{"1x":"https://ps.w.org/header-footer/assets/icon-256x256.png?rev=1064219","2x":"https://ps.w.org/header-footer/assets/icon-256x256.png?rev=1064219"},"wporg":true},{"name":"WP Rocket","slug":"wp-rocket","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://wp-rocket.me/","short_description":"

Powerful caching to speed up your WordPress website in a few clicks. No coding required.

\n","description":"\n\n\n

Powerful caching to speed up your WordPress website in a few clicks. No coding required.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2020/06/WP-Rocket-285x160.png","2x":"https://amp-wp.org/wp-content/uploads/2020/06/WP-Rocket-372x209.png","svg":""},"wporg":false},{"name":"Statify","slug":"statify","version":"1.8.3","author":"pluginkollektiv","author_profile":"https://profiles.wordpress.org/pluginkollektiv","requires":"4.7","tested":"5.8.1","requires_php":"5.2","rating":94,"ratings":{"1":2,"2":0,"3":0,"4":3,"5":33},"num_ratings":38,"support_threads":2,"support_threads_resolved":1,"active_installs":200000,"downloaded":1519650,"last_updated":"2021-07-17 8:46am GMT","added":"2011-03-16","homepage":"https://statify.pluginkollektiv.org/","short_description":"Visitor statistics for WordPress with focus on data protection, transparency and clarity. Perfect as a widget in your WordPress Dashboard.","description":"

Statify provides a straightforward and compact access to the number of site views. It is privacy-friendly as it uses neither cookies nor a third party.

\n

An interactive chart is followed by lists of the most common reference sources and target pages. The period of statistics and length of lists can be set directly in the dashboard widget.

\n

Data Privacy

\n

In direct comparison to statistics services such as Google Analytics, WordPress.com Stats and Matomo (Piwik) Statify doesn’t process and store personal data as e.g. IP addresses – Statify counts site views, not visitors.

\n

Absolute privacy compliance coupled with transparent procedures: A locally in WordPress created database table consists of only four fields (ID, date, source, target) and can be viewed at any time, cleaned up and cleared by the administrator.

\n

Due to this tracking approach, Statify is 100% compliant with GDPR and serves as an lightweight alternative to other tracking services.

\n

Display of the widget

\n

The plugin configuration can be changed directly in the Statify Widget on the dashboard by clicking the Configure link.

\n

The amount of links shown in the Statify Widget can be set as well as the option to only count views from today. Of course, older entries are not deleted when changing this setting.

\n

The statistics for the dashboard widget are cached for four minutes.

\n

Period of data saving

\n

Statify stores the data only for a limited period (default: two weeks), longer intervals can be selected as option in the widget. Data which is older than the selected period is deleted by a daily cron job.

\n

An increase in the database volume can be expected because all statistic values are collected and managed in the local WordPress database (especially if you increase the period of data saving).

\n

JavaScript tracking for caching compatibility

\n

For compatibility with caching plugins like Cachify Statify offers an optional switchable tracking via JavaScript. This function allows reliable count of cached blog pages.

\n

For this to work correctly, the active theme has to call wp_footer(), typically in a file named footer.php.

\n

Skip tracking for spam referrers

\n

The comment blacklist can be enabled to skip tracking for views with a referrer URL listed in comment blacklist, i. e. which considered as spam.

\n

Support

\n

If you’ve problems or think you’ve found a bug (e.g. you’re experiencing unexpected behavior), please post at the support forums.

\n

Contribute

\n
    \n
  • Active development of this plugin is handled on GitHub.
  • \n
  • Pull requests for documented bugs are highly appreciated.
  • \n
  • If you want to help us translate this plugin you can do so on WordPress Translate.
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/statify.1.8.3.zip","tags":{"analytics":"analytics","dashboard":"dashboard","pageviews":"pageviews","privacy":"privacy","statistics":"statistics"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=TD4AMD2D8EMZW","icons":{"1x":"https://ps.w.org/statify/assets/icon-128x128.png?rev=2355063","2x":"https://ps.w.org/statify/assets/icon-256x256.png?rev=2355063"},"wporg":true},{"name":"LIQUID BLOCKS GALLERY 37+ Free Designs","slug":"liquid-blocks","version":"1.1.1","author":"LIQUID DESIGN Ltd.","author_profile":"https://profiles.wordpress.org/lqd","requires":"5.2","tested":"5.8.1","requires_php":false,"rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"num_ratings":1,"support_threads":1,"support_threads_resolved":0,"active_installs":4000,"downloaded":20891,"last_updated":"2021-07-22 6:55am GMT","added":"2019-10-18","homepage":"https://lqd.jp/wp/plugin.html","short_description":"If you’re looking to create block page sections that look great give LIQUID BLOCKS a…","description":"

If you’re looking to create block page sections that look great give LIQUID BLOCKS a try.

\n

In Gutenberg Block Template & Design Gallery, Just select your favorite design. Instantly create page section elements. Like a very simple page builder.

\n

You can manage Block Pattern. (WordPress 5.5+)
\nFully compatible with Gutenberg and themes and AMP.
\nlatest information on LIQUID PRESS.

\n

\n

Design Gallery

\n

Carefully selected 37+ Free Designs.
\n* Headlines
\n* Layouts (Q&A, Ranking, Column, Step, Fluid Shape.)
\n* Price list
\n* CTA
\n* Landing pages
\n* Block Patterns (You can register.)

\n

Toolbar

\n

Add to RichText Toolbar.
\n* Mark
\n* Underline
\n* Big
\n* Small

\n","download_link":"https://downloads.wordpress.org/plugin/liquid-blocks.zip","tags":{"block":"block","block-editor":"block-editor","blocks":"blocks","editor":"editor","gutenberg":"gutenberg"},"donate_link":"https://lqd.jp/wp/plugin.html","icons":{"1x":"https://ps.w.org/liquid-blocks/assets/icon-128x128.png?rev=2175390"},"wporg":true},{"name":"Schema","slug":"schema","version":"1.7.9.2","author":"Hesham","author_profile":"https://profiles.wordpress.org/hishaman","requires":"4.0","tested":"5.7.3","requires_php":"5.4","rating":90,"ratings":{"1":15,"2":6,"3":4,"4":8,"5":163},"num_ratings":196,"support_threads":6,"support_threads_resolved":0,"active_installs":60000,"downloaded":1089391,"last_updated":"2021-05-19 2:51pm GMT","added":"2016-05-11","homepage":"https://schema.press","short_description":"Get the next generation of Schema Structured Data to enhance your WordPress site presentation in…","description":"

Like Schema plugin? Consider leaving a 5 star review.

\n

Super fast, light-weight plugin for adding schema.org structured data markup in recommended JSON-LD format automatically to WordPress sites.

\n

Enhanced Presentation in Search Results By including structured data appropriate to your content, your site can enhance its search results and presentation.

\n

Check out the Plugin Homepage for more info and documentation.

\n

What is Schema markup?

\n

Schema markup is code (semantic vocabulary) that you put on your website to help the search engines return more informative results for users. So, Schema is not just for SEO reasons, it’s also for the benefit of the searcher.

\n

Schema.org Structured Data Demo & Examples

\n\n

Schema Key Features

\n
    \n
  • Easy to use, set it and forget it, with minimal settings.
  • \n
  • [Premium] Support for different schema.org types.
  • \n
  • Enable Schema types at once per post type or post category.
  • \n
  • [Premium] Enable Schema types anywhere you want on your site content.
  • \n
  • [Premium] Customize source data of schema.org properties.
  • \n
  • Valid markup, test it in Google Structured Data Testing Tool.
  • \n
  • Output JSON-LD format, the most recommended by Google.
  • \n
  • Reuse data saved in post meta, which is created by other plugins.
  • \n
  • Extensible, means you can extend its functionality via other plugins, extensions or within your Theme’s functions.php file.
  • \n
\n
\n

Note: some features are Premium. Which means you need Schema Premium to have those features. Get Schema Premium here!

\n
\n

Free vs Premium

\n
\n

See: a Free vs Premium comparison.

\n
\n

Free Plugin Extensions

\n
    \n
  • Schema Review: Extend Schema functionality by adding review and rating Structured Data functionality for Editors and Authors.
  • \n
  • Schema Default Image: Add ability to set a default WordPress Featured image for schema.org markup.
  • \n
\n

Premium Plugin Extensions

\n\n

Supported Google/Schema Markups

\n\n

Supported Schema.org Types

\n\n

Premium Supported Schema.org Types

\n
\n

Schema Premium has additional support for schema.org types, including:

\n
\n\n

Schema.org Markup Examples

\n

View our Live Structured Data Demo examples.

\n

Supported Plugins

\n

Schema plugin integrates and/or play nicely with (not necessarily a full integration):

\n
    \n
  • Yoast SEO
  • \n
  • AMP plugin (Automattic’s Accelerated Mobile Pages)
  • \n
  • Accelerated Mobile Pages – AMP for WP
  • \n
  • WPRichSnippets
  • \n
  • The SEO Framework
  • \n
  • WPBakery Page Builder
  • \n
  • ThirstyAffiliates
  • \n
  • [Premium] WooCommerce: Schema for WooCommerce extension.
  • \n
  • Easy Digital Downloads (EDD)
  • \n
\n

Supported Themes

\n

The plugin should work fine with any well coded WordPress theme, however these themes were tested and works properly with the plugin.

\n
    \n
  • Genesis 2.x
  • \n
  • Thesis 2.x
  • \n
  • Divi
  • \n
\n

Premium support

\n

schema.press team does not always provide active support for the Schema plugin on the WordPress.org forums, as we prioritize our email support. One-on-one email support is available to people who bought Schema Premium only.

\n

Note that the premium Schema Plugin also has several extra features too, including the option to enable more schema.org types, set content location target for markup, and map schema.org properties, so it is well worth your investment!

\n

Developers?

\n

Feel free to fork the project on GitHub and submit your contributions via pull request.

\n","download_link":"https://downloads.wordpress.org/plugin/schema.zip","tags":{"json-ld":"JSON-LD","rich-snippets":"rich snippets","schema":"schema","schema-org":"schema.org","structured-data":"structured data"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=NGVUBT2QXN7YL","icons":{"1x":"https://ps.w.org/schema/assets/icon-128x128.png?rev=1750172","2x":"https://ps.w.org/schema/assets/icon-256x256.png?rev=1750173"},"wporg":true},{"name":"Iframely – rich media embeds for 2000+ publishers","slug":"iframely","version":"0.7.2","author":"Itteco Corp.","author_profile":"https://profiles.wordpress.org/ivanp","requires":"3.5.1","tested":"5.4.7","requires_php":false,"rating":80,"ratings":{"1":2,"2":0,"3":1,"4":0,"5":7},"num_ratings":10,"support_threads":2,"support_threads_resolved":1,"active_installs":3000,"downloaded":97486,"last_updated":"2020-05-22 5:21pm GMT","added":"2013-10-03","homepage":"http://wordpress.org/plugins/iframely/","short_description":"Iframely extends WordPress default rich media embeds and adds support of over 2000 more providers…","description":"

Iframely extends WordPress default embeds and adds over 2000 more providers and cards as URL previews for the rest of the Web. Provides responsive embed codes, works with AMP.

\n

Just like default WordPress embeds, Iframely will detect URLs in your posts and replace it with responsive embed codes. Supports all usual suspects such as YouTube, Vimeo, Instagram, Facebook, Giphy, GfyCat, Imgur, Google +, GitHub Gists, Storify, SlideShare, Streamable, Vidme, Reddit, Dailymotion, Spotify, Tableau, Prezi, Apester, QZZR, Tidal, MLB. Well over two thousand of providers and keeps growing.

\n

Test your URL here to check if we support it.

\n

Iframely also generates and hosts summary cards as URL previews for general articles. It includes your own site, and Iframely can replace the default embed cards that your publish via WordPress for other sites to use.

\n

API key and paid/free

\n

Powered by Iframely cloud service and requires an account with us. Grab an API key for extended trial at iframely.com, or test the plugin out without an API key.

\n

Before you push the plugin to production, a service subscription is required to avoid any possible disruptions.

\n

We maintain an overwhelming number of integrations and widgets in the background for you, and make sure your sites remains fast and keeps your users happy. This requires a substantial effort on our part, and we won’t be able to provide it without requiring a service subscription.

\n

How to use:

\n

The plugin works the same way the standard oEmbed is supported by WordPress: URL on a separate line.

\n

For example,

\n
Check out this cool video:\n\nhttp://your.url/here\n\nThat was a cool video.\n
\n

Iframely also has its own shortcode [iframely]http://your.url/here[/iframely].

\n

Heads-up:

\n

Iframely does not simply wrap URLs with <iframe src=...> code. That’s not what Iframely is for. We can only match URLs to the known embed codes if publisher offers them for manual copy-paste, or generate a summary card for URL preview if a publisher provides at least a thumnnail image.

\n

To keep default embed providers

\n

By default, Iframely will inject itself to be the first embeds provider in the list, thus intercepting all URLs. It means that the default providers that are later in the list won’t get called and will thus be disabled.

\n

It means Iframely replaces default YouTube, Vimeo, Twitter, other oEmbed plugins that you might have(like JetPack), etc.

\n

Although we should support the same providers and output the same code, just make it responsive and add extra features, you can still disable such behavior and tell Iframely to only process links that otherwise don’t have an embed provider.

\n

Just choose this option in your settings. It will essentially put Iframely to be the last in the list, be “a catcher”, rather then “an interceptor”.

\n

URL editor options

\n

You can fine-tune many aspects of Iframely on your dashboard at iframely.com. This would include some most common settings for popular rich media publishers. Our support team can also fine-tune many other publishers, just for you.

\n

However, you might need a per-post editor for the widgets options. And, Iframely does provide this too. It’s done via URL options editor, and available for higher-tier plans, or during your initial trial period. Make sure to check it out.

\n

AMP support

\n

Yes, Iframely works nicely with AMP WP plugin. It catches all missing embeds and follow your Iframely settings. But you can also opt to have Iframely for all embeds, including default AMP embeds too. For example, Facebook video will be indeed a nice video without user’s text message.

\n","download_link":"https://downloads.wordpress.org/plugin/iframely.zip","tags":{"embed":"embed","embed-code":"embed code","iframely":"iframely","oembed":"oembed","responsive":"responsive"},"donate_link":"","icons":{"default":"https://s.w.org/plugins/geopattern-icon/iframely.svg"},"wporg":true},{"name":"Pym.js Embeds","slug":"pym-shortcode","version":"1.3.2.4","author":"INN Labs","author_profile":"https://profiles.wordpress.org/automattic","requires":"3.0.1","tested":"5.4.7","requires_php":"5.3","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":1,"support_threads_resolved":0,"active_installs":100,"downloaded":2331,"last_updated":"2020-03-26 6:09pm GMT","added":"2016-06-17","homepage":"https://github.com/INN/pym-shortcode","short_description":"A WordPress block and shortcode for embedding iframes that are responsive horizontally and vertically, using…","description":"

Pym.js Embeds provides shortcode and Gutenberg block wrappers for embedding responsive iframes using Pym.js, developed by the NPR Visuals Team. Embedded content resizes vertically to match its container’s width.

\n

AMP compatibility is provided by the official AMP plugin.

\n

Pym.js Resources from NPR

\n

You may also want to look at NPR’s Pym.js resources:

\n\n","download_link":"https://downloads.wordpress.org/plugin/pym-shortcode.1.3.2.4.zip","tags":{"embeds":"Embeds","iframe":"iframe","javascript":"javascript","responsive":"responsive","shortcode":"shortcode"},"donate_link":"https://inn.org/donate","icons":{"1x":"https://ps.w.org/pym-shortcode/assets/icon.svg?rev=1944461","svg":"https://ps.w.org/pym-shortcode/assets/icon.svg?rev=1944461"},"wporg":true},{"name":"PWA","slug":"pwa","version":"0.6.0","author":"PWA Plugin Contributors","author_profile":"https://profiles.wordpress.org/westonruter","requires":"5.5","tested":"5.8.1","requires_php":"5.6","rating":86,"ratings":{"1":3,"2":0,"3":0,"4":0,"5":13},"num_ratings":16,"support_threads":6,"support_threads_resolved":3,"active_installs":40000,"downloaded":299537,"last_updated":"2021-09-21 7:17pm GMT","added":"2018-07-12","homepage":"https://github.com/GoogleChromeLabs/pwa-wp","short_description":"WordPress feature plugin to bring Progressive Web App (PWA) capabilities to Core","description":"

\nProgressive Web Apps are user experiences that have the reach of the web, and are:

\n
    \n
  • Reliable – Load instantly and never show the downasaur, even in uncertain network conditions.
  • \n
  • Fast – Respond quickly to user interactions with silky smooth animations and no janky scrolling.
  • \n
  • Engaging – Feel like a natural app on the device, with an immersive user experience.
  • \n
\n

This new level of quality allows Progressive Web Apps to earn a place on the user’s home screen.\n

\n

Continue reading more about Progressive Web Apps (PWA) from Google.

\n

In general a PWA depends on the following technologies to be available:

\n\n

This plugin serves as a place to implement support for these in WordPress with the intention of being proposed for core merge, piece by piece.

\n

This feature plugin is not intended to obsolete the other plugins and themes which turn WordPress sites into PWAs. Rather, this plugin is intended to provide the PWA building blocks and coordination mechanism for these themes and plugins to not reinvent the wheel and also to not conflict with each other. For example, a theme that implements the app shell model should be able to extend the core service worker while a plugin that provides push notifications should be able to do the same. Themes and plugins no longer should have to each create a service worker on their own, something which is inherently problematic because only one service worker can be active at a time: only one service worker can win. If you are developing a plugin or theme that includes a service worker, consider relying on this PWA plugin, or at least only use the built-in implementation as a fallback for when the PWA plugin is not available.

\n

In versions prior to 0.6, no caching strategies were added by default. The only service worker behavior was to serve an offline template when the client’s connection is down or the site is down, and also to serve an error page when the server returns with 500 Internal Server Error. As of 0.6, there is a new “Offline browsing” toggle on the Reading Settings screen in the admin. It is disabled by default, but when enabled a network-first caching strategy is registered for navigations so that the offline page won’t be shown when accessing previously-accessed pages. The network-first strategy is also used for assets from themes, plugins, and WordPress core. In addition, uploaded images get served with a stale-while-revalidate strategy. For all the details on these changes, see the pull request.

\n

Documentation for the plugin can be found on the GitHub project Wiki.

\n

Development of this plugin is done on GitHub. Pull requests welcome. Please see issues reported there before going to the plugin forum.

\n","download_link":"https://downloads.wordpress.org/plugin/pwa.0.6.0.zip","tags":{"https":"https","progressive-web-apps":"progressive web apps","pwa":"pwa","service-workers":"service-workers.","web-app-manifest":"web app manifest"},"donate_link":"","icons":{"1x":"https://ps.w.org/pwa/assets/icon.svg?rev=1908485","2x":"https://ps.w.org/pwa/assets/icon-256x256.png?rev=1908485","svg":"https://ps.w.org/pwa/assets/icon.svg?rev=1908485"},"wporg":true},{"name":"MC4WP: Mailchimp for WordPress","slug":"mailchimp-for-wp","version":"4.8.6","author":"ibericode","author_profile":"https://profiles.wordpress.org/dvankooten","requires":"4.6","tested":"5.8.1","requires_php":"5.3","rating":96,"ratings":{"1":36,"2":10,"3":16,"4":35,"5":1284},"num_ratings":1381,"support_threads":37,"support_threads_resolved":33,"active_installs":2000000,"downloaded":35999675,"last_updated":"2021-08-04 7:14am GMT","added":"2013-06-19","homepage":"https://www.mc4wp.com/#utm_source=wp-plugin&utm_medium=mailchimp-for-wp&utm_campaign=plugins-page","short_description":"Mailchimp for WordPress, the #1 unofficial Mailchimp plugin.","description":"

Mailchimp for WordPress

\n

Allowing your visitors to subscribe to your newsletter should be easy. With this plugin, it finally is.

\n

This plugin helps you grow your Mailchimp lists and write better newsletters through various methods. You can create good looking opt-in forms or integrate with any existing form on your site, like your comment, contact or checkout form.

\n\n

Some (but not all) features

\n
    \n
  • \n

    Connect with your Mailchimp account in seconds.

    \n
  • \n
  • \n

    Sign-up forms which are good looking, user-friendly and mobile optimized. You have complete control over the form fields and can send anything you like to Mailchimp.

    \n
  • \n
  • \n

    Seamless integration with the following plugins:

    \n
      \n
    • Default WordPress Comment Form
    • \n
    • Default WordPress Registration Form
    • \n
    • Contact Form 7
    • \n
    • WooCommerce
    • \n
    • Gravity Forms
    • \n
    • Ninja Forms 3
    • \n
    • WPForms
    • \n
    • BuddyPress
    • \n
    • MemberPress
    • \n
    • Events Manager
    • \n
    • Easy Digital Downloads
    • \n
    • Give
    • \n
    • UltimateMember
    • \n
    \n
  • \n
  • \n

    A multitude of available add-on plugins and integrations:

    \n\n
  • \n
  • \n

    Well documented. Our knowledge base is updated daily.

    \n
  • \n
  • \n

    Developer friendly. For inspiration, check out our repository of example code snippets.

    \n
  • \n
\n
\n

Become a Premium user

\n

Mailchimp for WordPress has a Premium add-on which comes with several additional benefits.

\n
    \n
  • Multiple forms
  • \n
  • Advanced e-commerce integration for WooCommerce
  • \n
  • Email notifications
  • \n
  • An easy way to style your forms
  • \n
  • Detailed reports & statistics
  • \n
\n

View more Premium features

\n
\n

What is Mailchimp?

\n

Mailchimp is a newsletter service that allows you to send out email campaigns to a list of email subscribers. It is free for lists up to 2000 subscribers, which is why it is the newsletter-service of choice for thousands of businesses.

\n

This plugin allows you to tightly integrate your WordPress site with your Mailchimp account.

\n

If you are not yet using Mailchimp, creating an account is 100% free and only takes you about 30 seconds.

\n

Support

\n

Use the WordPress.org plugin forums for community support where we try to help all of our users. If you found a bug, please create an issue on Github where we can act upon them more efficiently.

\n

If you’re a premium user, please use the email address inside the plugin for support as that will guarantee a faster response time.

\n

Please take a look at the Mailchimp for WordPress knowledge base as well.

\n

Add-on plugins

\n

There are several add-on plugins available, which help you get even more out of your site.

\n

Translations

\n

You can help translate Mailchimp for WordPress into your language using your WordPress.org account.

\n

Development

\n

This plugin is being developed on GitHub. If you want to collaborate, please look at ibericode/mailchimp-for-wordpress.

\n

Customizing the plugin

\n

The plugin provides various filter & action hooks that allow you to modify or extend default behavior. We’re also maintaining a collection of sample code snippets.

\n","download_link":"https://downloads.wordpress.org/plugin/mailchimp-for-wp.4.8.6.zip","tags":{"email":"email","mailchimp":"mailchimp","marketing":"marketing","mc4wp":"mc4wp","newsletter":"newsletter"},"donate_link":"https://www.mc4wp.com/#utm_source=wp-plugin-repo&utm_medium=mailchimp-for-wp&utm_campaign=donate-link","icons":{"1x":"https://ps.w.org/mailchimp-for-wp/assets/icon-128x128.png?rev=1224577","2x":"https://ps.w.org/mailchimp-for-wp/assets/icon-256x256.png?rev=1224577"},"wporg":true},{"name":"Site Kit by Google","slug":"google-site-kit","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://sitekit.withgoogle.com/","short_description":"

Site Kit is the official WordPress plugin from Google for insights about how people find and use your site. Site Kit is the one-stop solution to deploy, manage, and get insights from critical Google tools to make the site successful on the web. It provides authoritative, up-to-date insights from multiple Google products directly on the

\n

Read More

\n","description":"\n\n\n

Site Kit is the official WordPress plugin from Google for insights about how people find and use your site. Site Kit is the one-stop solution to deploy, manage, and get insights from critical Google tools to make the site successful on the web. It provides authoritative, up-to-date insights from multiple Google products directly on the WordPress dashboard for easy access, all for free.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2019/12/site-kit-by-google-logo-285x160.png","2x":"https://amp-wp.org/wp-content/uploads/2019/12/site-kit-by-google-logo-372x209.png","svg":""},"wporg":false},{"name":"Newspack Blocks","slug":"newspack-blocks","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://github.com/Automattic/newspack-blocks","short_description":"

A collection of useful and easy to use Gutenberg based blocks, developed primarily for the Newspack project.

\n","description":"\n\n\n

A collection of useful and easy to use Gutenberg based blocks, developed primarily for the Newspack project.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2019/11/newspack_blocks-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2019/11/newspack_blocks-372x209.jpg","svg":""},"wporg":false},{"name":"Advanced Ads – Ad Manager & AdSense","slug":"advanced-ads","version":"1.29.0","author":"Thomas Maier, Advanced Ads GmbH","author_profile":"https://profiles.wordpress.org/webzunft","requires":"4.9","tested":"5.8.1","requires_php":"5.6","rating":98,"ratings":{"1":17,"2":1,"3":9,"4":21,"5":1192},"num_ratings":1240,"support_threads":64,"support_threads_resolved":56,"active_installs":100000,"downloaded":5286061,"last_updated":"2021-10-05 8:38am GMT","added":"2014-06-23","homepage":"https://wpadvancedads.com","short_description":"Manage and optimize all ad types. Support for Google AdSense Auto ads, Amazon, image banners, HTML, page builder, ad widget, ad rotations, ads.txt","description":"

Are you looking for a simple ad manager plugin? These are the top arguments to use Advanced Ads:

\n
    \n
  • approved in publishing and ad optimization since 2009
  • \n
  • works with all ad types and networks, including Google AdSense, Google Ad Manager (formerly Google DoubleClick for Publishers, DFP), Amazon ads, or media.net ads
  • \n
  • most features to test and optimize ads
  • \n
  • unlimited ad units
  • \n
  • ads.txt support
  • \n
  • dedicated ad block for the block editor
  • \n
  • Google AdSense Partner, who implements all technical changes early and in 100% compliance with the Google AdSense policies
  • \n
  • the only advertising solution with Ad Health integration and Google AdSense violation checks
  • \n
  • best rated free support
  • \n
\n

This is what our users are saying about Advanced Ads:

\n
\n

We use this plugin to deliver rotating ads on a community news site, and it’s great. Both feature-rich and reliable, your imagination is the limit when it comes to the product you want to create for your users. We’ve delivered over a million ad impressions since we launched less than a year ago, using a combination of sidebar, top, sticky and in-content placements — both HTML5 and images. Advanced Ads makes it easy for our small team to deliver a good experience to our users and our advertisers.
\n mytown304 on wp.org

\n
\n

Would you like to know if there is a certain feature, what the optimized setup would be, or how to implement your client’s demands? Just open a thread in the forum!

\n

Advanced Ads allowed us to grow from 0 to 100 MM monthly ad impressions. Benefit from our experience as a publisher and monetize your website today!

\n

Full Feature List.

\n

ad management

\n
    \n
  • create and display unlimited ad units
  • \n
  • rotate ads
  • \n
  • schedule ads and set start time and expiration date
  • \n
  • target ads by content and user groups
  • \n
  • inject ads into posts and pages automatically without coding
  • \n
\n

ad types

\n

choose between different ad types that enable you to:

\n
    \n
  • insert ads and banners from all ad and affiliate networks (e.g., Google AdSense, Amazon, BuySellAds, Google Ad Manager (formerly Google DoubleClick for Publishers, DFP), Ezoic, media.net, Booking.com, Tradedoubler, Awin, Getyourguide, The Moneytizer, Infolinks…)
  • \n
  • dedicated support for all types of Google AdSense ads, including text and display ads, native ads (In-article, In-feed, matched content), Auto ads, and Auto ads for AMP
  • \n
  • display images and image banners
  • \n
  • create content-rich ads with the WordPress TinyMCE editor
  • \n
  • insert contextual Amazon Native Shopping Ads
  • \n
  • inject HTML, CSS, Javascript or PHP code
  • \n
  • use shortcodes within ads (to also deliver advertisements from another ad plugin like Ad Inserter, AdRotate, Quick AdSense, WP Bannerize, or the Google AdSense Plugin WP QUADS)
  • \n
\n

display ads for WP

\n
    \n
  • auto-inject ads via placements
  • \n
  • use functions to display ads in template files
  • \n
  • use shortcodes to place ads manually in post content
  • \n
  • show ads in the sidebar and in widgets
  • \n
  • disable all ads on specific pages
  • \n
  • display multiple ads (ad blocks)
  • \n
  • display a customizable ad label, e.g., “Advertisements” above each banner ad
  • \n
\n

display conditions

\n

show ads based on conditions like:

\n
    \n
  • individual posts, pages, and other post types
  • \n
  • posts by category, tags, taxonomies, author, and age
  • \n
  • archive pages by category, tags, taxonomies
  • \n
  • special page types like 404, attachment and front page
  • \n
  • hide ads on secondary queries (e.g., posts in sidebars)
  • \n
  • display or hide banners within the post feed
  • \n
  • hide all ads from specific page types, e.g., 404 pages, feed
  • \n
  • hide ads from bots and web crawlers
  • \n
\n

visitor conditions

\n

serve ads by conditions based on the visitor. List of all visitor conditions

\n
    \n
  • display or hide a banner by device: mobile and tablet or desktop
  • \n
  • display or hide a banner by role and for logged-in visitors
  • \n
  • advanced visitor conditions: previously visited URL (referrer), user capability, browser language, browser and device, URL parameters included in Pro
  • \n
  • display ads by geolocation with the Geo Targeting add-on
  • \n
  • display ads by browser width with the Responsive add-on
  • \n
\n
\n

Fantastic plugin and outstanding support
\n I tried at least three other ad plugins for WordPress and ‘Advanced Ads’ is by and far the best one. Last but not least in the support. The first port of call are a number of excellent tutorials. And finally the hands on support. I don’t quite know how he does it but the speed and depth of responses are absolutely amazing.
\n djsawyer on wp.org

\n
\n

ad injection | placements

\n

Placements to insert ads in pre-defined positions in your theme and content. List of all placements

\n
    \n
  • ads after any given paragraph, headline, image, or other HTML element
  • \n
  • ads at the top or bottom of the post content
  • \n
  • ads before closing </head> tag
  • \n
  • ads in the footer
  • \n
  • create split tests and A/B testing
  • \n
  • many more ad positions with add-ons
  • \n
  • automatic insertion of any kind of code into header or footer, not only advertising
  • \n
\n

mobile devices

\n
    \n
  • display ads on mobile and tablets or desktop only
  • \n
  • display responsive image ads
  • \n
  • ads for specific browser sizes only using Responsive Ads
  • \n
  • inserting ads on AMP pages with Responsive Ads
  • \n
\n

Google AdSense

\n

Amazing features of the most powerful and easy Google AdSense plugin.

\n
    \n
  • unlimited Google AdSense ads banners
  • \n
  • pull ad units directly from your Google AdSense account
  • \n
  • show AdSense revenue in WP Admin
  • \n
  • change settings of your Google AdSense ads directly from your WordPress backend
  • \n
  • supports all Google AdSense ad types, including Google AdSense display ads, native ads like In-feed ads, In-article ads, matched content ads, Google AdSense Auto ads, and Google AdSense Auto ads for AMP
  • \n
  • change type and sizes of AdSense ads without going into your Google AdSense account
  • \n
  • hide Google AdSense advertisements on 404 pages by default (to comply with Google AdSense terms)
  • \n
  • insert Google AdSense code for verification and AdSense Auto Ads
  • \n
  • enable AdSense Auto ads on AMP
  • \n
  • easy Ad Health integration and Google AdSense violation checks
  • \n
  • option to remove the Google AdSense background color
  • \n
  • place Google AdSense In-feed ads using the also free In-feed add-on
  • \n
  • assistant for exact sizes of responsive Google AdSense ads with the Responsive add-on
  • \n
  • convert Google AdSense ads into AMP ads automatically with the Responsive add-on
  • \n
  • ads.txt generated with the correct AdSense information automatically
  • \n
  • works along with Google Site Kit or can replace it if you want to control your ad placements
  • \n
\n

\n

\n

Like j4ckson185, there are thousands of happy AdSense users:

\n
\n

Your app is awesome, congratulations! Google Adsense suggests using your app on its official website, it’s incredible!

\n
\n

ads.txt

\n
    \n
  • generates an ads.txt with custom content
  • \n
  • adds the content for AdSense to the ads.txt automatically
  • \n
\n

\n

\n

ad blocker

\n
    \n
  • basic features to prevent ads from being removed by AdBlock and other ad blockers
  • \n
  • prevent ad blockers from breaking sites where plugin scripts are running
  • \n
  • ad blocking detection: show alternative content to ad block users with Pro and improve the monetization of your website
  • \n
\n

Learn more on the plugin homepage.

\n

Thank you for motivating us with your positive review.

\n

Localizations: Arabic, Chinese, Czech, Danish, Dutch, English, French, German, Hungarian, Italian, Japanese, Norwegian, Polish, Portuguese, Russian, Slovak, Spanish, Turkish, Vietnamese

\n
\n

Add-Ons

\n
    \n
  • all add-ons include priority email support
  • \n
  • Advanced Ads Pro – powerful tools for ad optimizations: cache-busting, more placements, lazy loading, ad blocker module, click fraud protection, and many more
  • \n
  • Tracking – track ad impressions and ad clicks with local methods or Google Analytics
  • \n
  • Responsive Ads – target ads to specific browser sizes and create ads for AMP
  • \n
  • Google Ad Manager Integration – a quick and error-free way to load ad units from your Google Ad Manager (formerly Google DoubleClick for Publishers, DFP) account without touching any ad codes
  • \n
  • Geo Targeting – display ads based on the geo location of the visitor
  • \n
  • Sticky Ads – increase click rates with fixed, sticky, and anchor ads
  • \n
  • Fixed Widget for WordPress – turn sidebar widgets into performant fixed sticky ads
  • \n
  • PopUp and Layer Ads – display ads and other content in layers, popups, and interstitials
  • \n
  • Selling Ads – allows you to sell ads on your website fully automated, including payments and advertiser profiles
  • \n
  • Ad Slider – create a simple slider from your ads
  • \n
\n
\n

If you have problems with Advanced Ads, please reach out to our support or open a new topic in our forums on wordpress.org
\n.

\n

Integrations

\n

Advanced Ads integrates with plenty of other plugins:

\n\n","download_link":"https://downloads.wordpress.org/plugin/advanced-ads.1.29.0.zip","tags":{"ad-manager":"ad manager","ad-rotation":"ad rotation","ads":"ads","adsense":"adsense","banner":"banner"},"donate_link":"","icons":{"1x":"https://ps.w.org/advanced-ads/assets/icon-128x128.gif?rev=2293174","2x":"https://ps.w.org/advanced-ads/assets/icon-256x256.gif?rev=2293174"},"wporg":true},{"name":"Syntax-highlighting Code Block (with Server-side Rendering)","slug":"syntax-highlighting-code-block","version":"1.3.1","author":"Weston Ruter","author_profile":"https://profiles.wordpress.org/westonruter","requires":"5.5","tested":"5.8.1","requires_php":"5.6","rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":18},"num_ratings":18,"support_threads":2,"support_threads_resolved":2,"active_installs":1000,"downloaded":12383,"last_updated":"2021-09-21 7:11pm GMT","added":"2019-07-30","homepage":"https://github.com/westonruter/syntax-highlighting-code-block","short_description":"Extending the Code block with syntax highlighting rendered on the server, thus being AMP-compatible and…","description":"

This plugin extends the Code block in WordPress core to add syntax highlighting which is rendered on the server. Pre-existing Code blocks on a site are automatically extended to include syntax highlighting. Doing server-side syntax highlighting eliminates the need to enqueue any JavaScript on the frontend (e.g. Highlight.js or Prism.js) and this ensures there is no flash of unhighlighted code (FOUC?). Reducing script on the frontend improves frontend performance and it also allows for the syntax highlighted code to appear properly in AMP pages as rendered by the official AMP plugin (see also ampproject/amp-wp#972) or when JavaScript is turned off in the browser.

\n

In addition to not adding any JavaScript to the frontend, the stylesheets needed for styling the Code block will only be added to the page if there is a Code block present. The stylesheets are added inline when the Code block is rendered, ensuring that they do not block rendering of any content higher in the page. If stylesheets fail to load for any reason, the block simply renders without styling, with one key exception: highlighted lines are wrapped in mark elements so they’ll get highlighted regardless, including in RSS Feeds and posts syndicated in email (as long as the mark element is supported in the client).

\n

This extended Code block uses language auto-detection to add syntax highlighting, but you can override the language in the block’s settings sidebar. (There is currently no syntax highlighting of the Code block in the editor.) The plugin supports all programming languages that highlight.php supports (being a port of highlight.js). The Code block also is extended to support specifying the aforementioned highlighted lines. There is also a checkbox for whether to show line numbers on the frontend (with the numbers being non-selectable). Lastly, given inconsistencies across themes as to whether lines in a Code block should be wrapped, this plugin adds styling to force them to no-wrap by default, with a checkbox to opt-in to wrapping when desired.

\n

For advanced usage, please see the plugin wiki.

\n

This plugin is developed on GitHub. See list of current issues with the plugin. Please feel free to file any additional issues or requests that you may come across. Pull requests are welcome.

\n

Credits

\n

This is a fork of Code Syntax Block by Marcus Kazmierczak (mkaz), which is also available on WordPress.org. Copyright (c) 2018 Marcus Kazmierczak. Licensed under GPL 2.0 or later.

\n

highlight.php is released under the BSD 3-Clause License. Copyright © 2006-2013, Ivan Sagalaev (maniac@softwaremaniacs.org), highlight.js (original author). Copyright © 2013, Geert Bergman (geert@scrivo.nl), highlight.php

\n","download_link":"https://downloads.wordpress.org/plugin/syntax-highlighting-code-block.1.3.1.zip","tags":{"block":"block","code":"code","code-highlighting":"code highlighting","code-syntax":"code syntax","syntax-highlight":"syntax highlight"},"donate_link":"","icons":{"1x":"https://ps.w.org/syntax-highlighting-code-block/assets/icon.svg?rev=2131108","2x":"https://ps.w.org/syntax-highlighting-code-block/assets/icon-256x256.png?rev=2131108","svg":"https://ps.w.org/syntax-highlighting-code-block/assets/icon.svg?rev=2131108"},"wporg":true},{"name":"Contact Form by WPForms – Drag & Drop Form Builder for WordPress","slug":"wpforms-lite","version":"1.7.0","author":"WPForms","author_profile":"https://profiles.wordpress.org/jaredatch","requires":"4.9","tested":"5.8.1","requires_php":"5.5","rating":98,"ratings":{"1":215,"2":47,"3":56,"4":225,"5":9773},"num_ratings":10316,"support_threads":92,"support_threads_resolved":77,"active_installs":5000000,"downloaded":84332252,"last_updated":"2021-10-07 11:02am GMT","added":"2016-03-14","homepage":"https://wpforms.com","short_description":"The best WordPress contact form plugin. Drag & Drop online form builder that helps you create beautiful contact forms with just a few clicks.","description":"

WordPress Contact Form Builder Plugin

\n

We believe that you shouldn’t have to hire a developer to create a WordPress contact form. That’s why we built WPForms, a drag & drop WordPress form builder that’s EASY and POWERFUL.

\n

WPForms allows you to create beautiful contact forms, feedback form, subscription forms, payment forms, and other types of forms for your site in minutes, not hours!

\n

At WPForms, user experience is our #1 priority. Our pre-built form templates and workflows make WPForms the most beginner friendly contact form plugin in the market.

\n

The WPForms Challenge guides you through creating your first form in under 5 minutes. We walk you through using the form builder all the way to adding a form to a page on your site! WPForms includes integrations for popular page builders like the WordPress Block Editor (Gutenberg), Classic Editor, Elementor, and Divi making the whole process seamless.

\n

WPForms is a 100% mobile responsive contact form solution, so your contact forms will always look great on all devices (mobile, tablet, laptop, and desktop).

\n

WPForms’ contact forms are also highly optimized for web and server performance because we understand the importance of speed when it comes to SEO, marketing, and conversion. We can honestly say that WPForms is one of the fastest WordPress contact form builder plugins in the world.

\n
\n

WPForms Pro
\n This plugin is the lite version of the WPForms Pro plugin that comes with all the contact form features you will ever need including email subscription forms, multi-page contact forms, file uploads, conditional logic, payment integrations, form templates, and tons more. Click here to purchase the best premium WordPress contact form plugin now!

\n
\n

We took the pain out of creating contact forms and made it easy. Here’s why smart business owners, designers, and developers love WPForms, and you will too!

\n

\n

Drag & Drop Contact Form Builder

\n

We were tired of the bloated and buggy contact form builder plugins. That’s why we built WPForms to adapt to your workflow and allow you to create custom contact forms in minutes. By using our easy to use drag and drop online form builder, you can easily add custom form fields, rearrange them, and basically create a complete contact form in 5 minutes or less.

\n

But don’t just take our word. See what one of the WordPress experts are saying:

\n
\n

WPForms is by far the easiest form plugin to use. My clients love WPForms and it’s one of the few plugins they can use without any training. As a developer I appreciate how fast, modern, clean and extensible it is.
\n Bill Erickson – Expert WordPress Consultant

\n
\n

Pre-built Form Templates

\n

Building contact forms in WordPress can be time consuming. Why?

\n

Because every other WordPress contact form builder plugin requires you to build your contact form from scratch. The truth is it’s often not necessary to create a contact form completely from scratch unless you really want to.

\n

Whether you’re looking to create a simple contact form, marketing form, request a quote form, donation form, payment order form, registration form, or a subscription form, we have a form template for you inside our contact form builder.

\n

WPForms comes with pre-built form templates to help you save time. You can add, remove, or re-arrange fields as necessary.

\n

See 300+ Pre-Made WPForms Form Template Demo

\n

Mobile Ready, SEO Friendly and Optimized for Speed

\n

WPForms’ contact forms are 100% responsive and mobile-friendly by default. We also optimized every query on the front-end and the back-end to ensure maximum speed – Yes, WPForms is one of the fastest WordPress contact form plugin.

\n

You can embed your contact form on any page with optimized title and description. With the speed and proper formatting, WPForms is also one of the most SEO friendly contact form plugin.

\n

All the Fields & Features that You Need to Succeed

\n

From star ratings to file uploads to multi-page contact forms with progress bar, we have all the fields you need.

\n

You can easily integrate your contact forms with an email marketing service or collect payments for bookings and orders. WPForms allows you to do it all.

\n

The best part is, you can do it all without hiring a developer.

\n

See what one business owner has to say about WPForms’ contact form:

\n
\n

As a business owner, time is my most valuable asset. WPForms allow me to create smart contact forms with just a few clicks. With their pre-built form templates and the drag & drop builder, I can create a new form that works in less than 2 minutes without writing a single line of code. Well worth the investment.
\n David Henzel – Co-founder of MaxCDN

\n
\n

Surveys & Polls

\n

Along with contact form, you can also use WPForms to create surveys and polls.

\n

Our WordPress Survey plugin addon comes with smart survey fields including likert scale, star ratings, multiple choice, Net Promoter Score (NPS), and more, so you can create custom survey forms like Survey Monkey (without the high costs).

\n

WPForms offer the best-in class survey reporting. You can use our interactive reports to customize the graphs, export them for your presentations, and even display the aggregate results to your users.

\n

The best part about WPForms survey reports is that it can retroactively work on any old contact form or feedback survey contact form created with WPForms.

\n

Thousands of businesses love WPForms surveys for creating employee feedback form, customer feedback form, online petition form, and more.

\n

You can also use the surveys & polls addon to easily create a poll on your site. To save you time when creating a user poll, we have added a built-in poll forms template. Our poll feature offers real-time reports, so you can share poll results with the user immediately after they submit their vote.

\n

Just like the contact form, you can embed your surveys and polls inside any post, page, or widget area in WordPress.

\n

Membership and Default WordPress Forms

\n

Aside from building simple contact forms which every WordPress site needs, WPForms also helps you create better default WordPress forms.

\n

For example, you can use WPForms to create custom WordPress login forms and custom WordPress user registration forms which are great for membership sites.

\n

For membership sites, you can also use WPForms to create a password-protected contact form or even a members only contact form which is restricited to logged-in users only.

\n

Even if you’re not using a WordPress membership plugin, you can use WPForms to create membership registration forms, online RSVP forms, and other address book contact forms.

\n

Bloggers and publishers can use our WordPress post submission forms to accept guest posts, testimonials contact form to collect testiomnials, and partnership agreement forms to grow their business.

\n

Payment Form, Donation Form, Booking Form, and More

\n

While WPForms started out as a contact form plugin, it has evolved into a powerful custom forms solution that you can use to create a payment form, donation form, registration form, online booking form, mobile form, and basically any type of custom form you need.

\n

WPForms integrates with both PayPal, Stripe, Square, and Authorize.Net so you can easily create a credit card payment form to accept payments on your website. If you’re using SSL, then you can use our Stripe, Square, or Authorize.Net Payment forms to accept credit card payments directly on your website. Alternatively you can use our PayPal payment form to make a donation form and accept payments online.

\n

Aside from simple order forms, business owners also use WPForms to create custom product purchase forms, t-shirt order forms, online booking forms, and more.

\n

We understand that sometimes you may need to create a contact form that require a signature. WPForms comes with a signature field to collect user signature on your WordPress forms or even create custom signature forms.

\n

You can do all of this while still using the same easy-to-use contact form builder that’s loved by over 5 million users.

\n
\n

I am so impressed with this plugin. I decided to give it a shot over some of the other form plugins, and I am so glad I did. It works well, is so easy to use and customize. The support is amazing on top of it all. I got the pro version because I was so pleased. Highly recommend.
\n Micky73 – WordPress user

\n
\n

Forms that are Optimized for Conversion and Results

\n

With our Form Pages addon, you can create distraction-free custom form landing pages like Google Forms and Wufoo right inside WordPress, so you can increase conversions without the high costs (See Form Pages Demo).

\n

To improve form completion rate, we created Conversational Forms® which helps you make your generic feedback form and other custom contact forms feel more human by adding an interactive form layout. Our conversational forms are similar to Typeform without the high subscription costs (See Conversational Forms Demo).

\n

WPForms also has other conversion optimization features such as our smart form logic that lets you create dynamic contact forms where fields change based on user’s answer, multi-page contact forms with progress bar, and other advanced contact forms.

\n

WPForms form analytics integration with MonsterInsights allow you to easily track your lead capture forms, newsletter signup forms, request a quote contact form, and other important forms on your site.

\n

Easy to Customize and Extend

\n

You can easily customize your contact forms with our section dividers, HTML blocks, and custom CSS.

\n

If you’re using Elementor or Divi page builders our native integrations let you quickly customize the style of your forms. Embedding forms in Elementor and Divi has never been easier.

\n

We also knew that our developer friends may want to extend simple contact forms further. That’s why WPForms come with tons of hooks and filters to create custom functionality.

\n

Since contact forms are essential for marketing, WPForms is a must have plugin for every website!

\n

Full WPForms Feature List

\n
    \n
  • Online Form Builder – Our powerful drag & drop contact form builder allows you to easily create WordPress contact forms and other online forms in just a few minutes without writing any code.
  • \n
  • 100% Responsive – Mobile Friendly contact forms.
  • \n
  • GDPR Friendly – Make your contact form GDPR compatible with just a few clicks.
  • \n
  • Form Templates – Use our pre-built form templates to save time. Never start from scratch again (see all form templates demos).
  • \n
  • Spam Protection – WPForms provides smart anti-spam protection out-of-the-box, plus direct integrations with hCaptcha and Google reCAPTCHA.
  • \n
  • Instant Form Notification – Quickly respond to incoming inquiries with our instant contact form notification system.
  • \n
  • Smart Form Confirmation – Show a custom success message, or redirect users to a custom thank you page.
  • \n
  • File Uploads – Collect files and media through your contact forms with File Uploads.
  • \n
  • Multi-Page Forms – Split long forms into multiple pages with progress bar to improve user experience.
  • \n
  • Smart Conditional Logic – Show or hide fields and contact form sections based on user behavior.
  • \n
  • Signature Forms – Create signature forms or add the signature field to your contact form, application form, booking form, etc.
  • \n
  • User Registration Forms – Create custom user registration form and custom login form in WordPress.
  • \n
  • Post Submissions – Collect user-submitted content in WordPress with our front-end post submission form. Great for guest posts, testimonials, business directory, listings, etc.
  • \n
  • Geolocation – Display location information about your users.
  • \n
  • Custom Captchas – Create custom captchas for your contact form.
  • \n
  • Surveys and Polls – Easily create surveys forms and analyze the data with interactive reports.
  • \n
  • Form Abandonment – Unlock more leads and grow your business with partial-form submission.
  • \n
  • Form Locker – Manage form permissions and add access control rules including password-protected forms, members only forms, limit contact form entry per person, close form after specific date / time, etc.
  • \n
  • Offline Forms – Let your visitors save their entered data offline and submit when their internet connection is restored.
  • \n
  • Form Landing Pages – Create “distraction-free” form landing pages to boost conversions. Great Google Forms and Wufoo alternative.
  • \n
  • Conversational Forms – Interactive form layout that makes your form feels more human and boost overall completion rate. Great for surveys and registration forms. Perfect Typeform alternative for WordPress without the high costs.
  • \n
  • Webhooks – Send form entry data to secondary tools and external services. No code required, and no need for a third party connector.
  • \n
  • User Journey Reporting – Discover the steps your visitors take before they submit your forms. Right in the WordPress dashboard, you can easily see the content that’s driving the most valuable form conversions.
  • \n
\n

Integrations

\n
    \n
  • PayPal Payment Forms – Create PayPal forms to easily collect payments, donations, and online orders.
  • \n
  • Stripe Forms – Easily collect credit card payments, donations, and online orders with our Stripe addon.
  • \n
  • Square Forms – Accept payments faster, from anywhere with Square’s secure payment processing with the Square addon.
  • \n
  • Authorize.Net Forms – Connect your WordPress site with Authorize.Net to collect payments, donations, and online orders.
  • \n
  • Mailchimp Forms – Create Mailchimp newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • AWeber Forms – Create AWeber newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • Campaign Monitor Forms – Create Campaign Monitor newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • GetResponse Forms – Create GetResponse newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • Constant Contact Forms – Create Constant Contact newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • Drip Forms – Create Drip newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • ActiveCampaign Forms – Add contacts to your ActiveCampaign account, record events, add notes to contacts, and more.
  • \n
  • Sendinblue Forms – Create Sendinblue forms to automate your marketing and engage your subscribers.
  • \n
  • Salesforce Forms – Easily send your WordPress form contacts and leads to your Salesforce CRM account.
  • \n
  • Zapier Addon – Connect your WordPress forms with over 1000+ apps. Route your contact form data to your favorite CRM, email marketing service, etc.
  • \n
\n

After reading this feature list, you can probably imagine why WPForms is the best WordPress contact form plugin in the market.

\n

Give WPForms a try.

\n

Want to unlock more features? Upgrade to our Pro version.

\n

Credits

\n

This plugin is created by Jared Atchison and Syed Balkhi.

\n

Branding Guideline

\n

WPForms® is a registered trademark of WPForms LLC. When writing about the contact form plugin by WPForms, please make sure to uppercase the initial 3 letters.

\n
    \n
  • WPForms (correct)
  • \n
  • WP Forms (incorrect)
  • \n
  • wpforms (incorrect)
  • \n
  • wpform (incorrect)
  • \n
\n

What’s Next

\n

If you like this plugin, then consider checking out our other projects:

\n
    \n
  • OptinMonster – Get More Email Subscribers with the most popular conversion optimization plugin for WordPress.
  • \n
  • MonsterInsights – See the stats that matter and grow your business with confidence. The best Google Analytics plugin for WordPress.
  • \n
  • SeedProd – Create beautiful landing pages with our powerful drag & drop landing page builder.
  • \n
  • WP Mail SMTP – Improve email deliverability for your contact form with the most popular SMTP plugin for WordPress.
  • \n
  • RafflePress – Best WordPress giveaway and contest plugin to grow traffic and social followers.
  • \n
  • Smash Baloon – #1 social feeds plugin for WordPress – display social media content in WordPress without code.
  • \n
  • AIOSEO – The original WordPress SEO plugin to help you rank higher in search results (trusted by over 2 million sites).
  • \n
  • Push Engage – Connect with visitors after they leave your website with the leading web push notification plugin.
  • \n
  • TrustPulse – Add real-time social proof notifications to boost your store conversions by up to 15%.
  • \n
\n

Visit WPBeginner to learn from our WordPress Tutorials and find out about other best WordPress plugins.

\n

Notes

\n

WPForms is absolutely, positively the most beginner friendly WordPress contact form plugin on the market. It is both easy and powerful.

\n

We took the pain out of creating online forms and made it easy. Check out all WPForms features.

\n

Also, I’m the founder of WPBeginner, the largest WordPress resource site for beginners. It was a huge priority for me to make a WordPress contact form plugin that beginners can use without any training.

\n

I feel that we have done that here. I hope you enjoy using WPForms.

\n

Thank you

\n

Syed Balkhi

\n","download_link":"https://downloads.wordpress.org/plugin/wpforms-lite.1.7.0.zip","tags":{"contact-form":"contact form","contact-form-plugin":"contact form plugin","custom-form":"custom form","form-builder":"form builder","forms":"forms"},"donate_link":"","icons":{"1x":"https://ps.w.org/wpforms-lite/assets/icon.svg?rev=2574198","2x":"https://ps.w.org/wpforms-lite/assets/icon-256x256.png?rev=2574201","svg":"https://ps.w.org/wpforms-lite/assets/icon.svg?rev=2574198"},"wporg":true},{"name":"MonsterInsights – Google Analytics Dashboard for WordPress (Website Stats Made Easy)","slug":"google-analytics-for-wordpress","version":"8.1.0","author":"MonsterInsights","author_profile":"https://profiles.wordpress.org/chriscct7","requires":"4.8.0","tested":"5.8.1","requires_php":"5.5","rating":92,"ratings":{"1":194,"2":39,"3":35,"4":76,"5":2100},"num_ratings":2444,"support_threads":11,"support_threads_resolved":10,"active_installs":3000000,"downloaded":101631670,"last_updated":"2021-09-30 7:56am GMT","added":"2007-09-14","homepage":"https://www.monsterinsights.com/?utm_source=liteplugin&utm_medium=pluginheader&utm_campaign=pluginurl&utm_content=7%2E0%2E0","short_description":"The best free Google Analytics plugin for WordPress. See how visitors find and use your website, so you can grow your business.","description":"

Google Analytics Plugin for WordPress

\n

With over 3 million active installs, MonsterInsights is the most popular Google Analytics plugin for WordPress.

\n

We believe that it’s easy to double your traffic and sales when you know exactly how people find and use your website. MonsterInsights shows you the analytics and stats that matter, so you can grow your business with confidence.

\n

At MonsterInsights, we make it “effortless” to properly connect your WordPress site with Google Analytics, so you can start making data-driven decisions to grow your business.

\n

Unlike other Google Analytics plugins, MonsterInsights allow you to enable all advanced Google Analytics tracking features with just a few clicks (no need to hire a developer).

\n

The best part is that MonsterInsights comes with an analytics dashboard for WordPress that shows you actionable analytics reports right inside your WordPress dashboard. We have created customized reports that eliminate the fluff and only show you the stats that matter, so you can see exactly what’s working and what’s not!

\n

Simply put, MonsterInsights is the most complete Google Analytics plugin for WordPress that’s both EASY and POWERFUL.

\n

That’s why millions of small businesses and top companies like Microsoft, Bloomberg, FedEx, Yelp, Subway, etc. use MonsterInsights to setup Google Analytics on their WordPress sites.

\n
\n

MonsterInsights Pro
\n This plugin is the lite version of MonsterInsights Pro plugin that comes with all the tracking features you will ever need including events tracking, ecommerce tracking, custom dimensions tracking, page speed reports, popular post tracking, custom dimensions, affiliate link tracking, and tons more. Click here to purchase the best premium Google Analytics plugin for WordPress now!

\n
\n

We took the pain out of installing Google Analytics in WordPress and made it easy. Here’s why over 3 million smart business owners, designers, and developers love MonsterInsights, and you will too!

\n

\n

Quick & Easy Google Analytics Setup

\n

Properly setting up Google Analytics is complicated. You have to either hire a developer or learn how to add advanced code snippets to your website in many different areas. This process can take days or weeks…and can even break your website!

\n

With MonsterInsights, we made it “effortless” to properly setup Google Analytics in WordPress. Yes, you can enable all advanced Google Analytics features with just a few clicks.

\n

If you can point-and-click, then you can set up Google Analytics inside WordPress and start seeing insights in under 15 minutes (no code necessary).

\n

We keep up with all Google Analytics updates, so you can sleep well at night knowing that your website will always stay up to date with the newest features.

\n

See what one business owner is saying about MonsterInsights:

\n
\n

It just works. Really easy way to insert Google Analytics tracking code and keep it there when switching themes. No need to copy/paste code anywhere. This is the best way to handle Google Analytics in WordPress.
\n Steven Gliebe

\n
\n

Google Analytics Dashboard + Real Time Stats

\n

Our goal at MonsterInsights is to make Google Analytics easy and accessible for everyone.

\n

We understand that Google Analytics has a steep learning curve which often prevents small business owners from making informed decisions to grow their business.

\n

That’s why MonsterInsights comes with a built-in Google Analytics Dashboard for your WordPress site, so you can see all the useful information about your visitors right inside your WordPress dashboard without needing to login somewhere else.

\n

We have even created customized reports to help you filter through the noise and see the stats that really matter!

\n
    \n
  • \n

    Audience Report helps you get to know your visitors in a whole new way. It shows you detailed insights like which country your visitors are coming from, what are they most interested in, which device are they using, their age, gender, and a whole lot more. You can use this demographics report and audience clues to tweak your website design and content accordingly.

    \n
  • \n
  • \n

    **Publishers Report ** helps you understand which pages your visitors are arriving, and which pages they are leaving from. Designed specifically for blogs and other resource sites, this powerful report will show you which outbound links are getting clicked so you can easily optimize for higher conversions.

    \n
  • \n
  • \n

    Behavior Report shows you exactly how people find your website, which keywords did they search for, who referred them, what did they click on your site, and more. You can use these useful stats to identify low-hanging fruits, new partnership opportunities, and promotional areas to focus on.

    \n
  • \n
  • \n

    Content Report shows you stats on exactly which content gets the most visits, so you can stop guessing and start creating content that gets more traffic and conversion.

    \n
  • \n
  • \n

    Ecommerce Report shows you important store stats like total revenue, conversion rate, average order value, top referral sources, and more (all in one place).

    \n
  • \n
  • \n

    Forms Report shows you conversion stats for various contact forms and lead forms on your website, so you can improve the conversions to grow your business.

    \n
  • \n
  • \n

    Search Console Report shows you exactly how well your website is ranking in Google, so you can further optimize your SEO to grow your organic traffic.

    \n
  • \n
  • \n

    Custom Dimensions Report helps you dig deeper by showing you useful stats like who are your most popular authors, what are the best publication times, which are your most popular categories or tags, how well are your Yoast focus keywords and SEO score performing, and more.

    \n
  • \n
  • \n

    Site Speed Report makes it easy to track pagespeed insights and loading times for your website and get the information you need to improve user experience and your SEO rankings.

    \n
  • \n
\n

Our custom Google Analytics Dashboard reports are based on over 12+ years of online business experience. We built MonsterInsights to be the Google Analytics plugin that we wish we had.

\n

We currently use MonsterInsights on all our portfolio companies which include both media sites generating tens of millions of pageviews and eCommerce sites generating millions in sales.

\n

That’s why we can confidently say that MonsterInsights is the ultimate Google Analytics Shortcut for seeing the stats that matter and making data-driven decisions to grow your business.

\n
\n

I love being able to drill down into the analytics via the reporting feature. I have the PRO version and it makes a big difference what you can analyze. I’m glad that I can integrate with Pretty Links too!
\n Kim Beasley – MonsterInsights user

\n
\n

Google Analytics Enhanced Ecommerce Tracking Made Easy

\n

Google Analytics Enhanced Ecommerce tracking is a powerful feature that lets you track user behavior across your online store starting from product views to checkout page to thank you page and beyond.

\n

With MonsterInsights’ easy WooCommerce integration, you can setup WooCommerce analytics with literally 1-click.

\n

Once you have enabled WooCommerce tracking, MonsterInsights will show you all important WooCommerce metrics in a single dashboard including WooCommerce conversion rate, top products in your WooCommerce store, total transactions, total revenue, average order value, top referral sources, and more.

\n

Our WooCommerce analytics report also includes other detailed WooCommerce event tracking data like total add to carts, total removed from cart, time to purchase, and sessions to purchase.

\n

For those who want to go beyond our WooCommerce stats dashboard, you can easily open up the Google Analytics dashboard to combine WooCommerce data with other secondary dimensions and filters to find exactly what you’re looking for.

\n

Aside from WooCommerce Google Analytics integration, MonsterInsights’ eCommerce addon also offers seamless integration for the Easy Digital Downloads plugin.

\n

Our Easy Digital Downloads Google Analytics integration allows you to set up Enhanced Ecommerce Tracking on your store with just 1-click.

\n

Simply put, MonsterInsights’ Enhanced Ecommerce for WordPress feature is by far the easiest and most powerful in the market.

\n

Google Analytics + GDPR Compliance

\n

MonsterInsights helps make Google Analytics GDPR compliance easier for business owners.

\n

Our EU compliance addon allows you to:

\n
    \n
  • Anonymize IP in Google Analytics
  • \n
  • Disable the Demographics and Interest Reports for Remarketing and Advertising
  • \n
  • Disable UserID and author name tracking
  • \n
  • Enable the ga() compatibility mode
  • \n
  • Integrate with Cookie Notice and CookieBot plugins to collect user consent before tracking
  • \n
  • Integrate with Google AMP Consent Box before enable tracking
  • \n
  • Integrate with Google Analytics’s Chrome browser opt-out extension and built-in cookie opt-out system
  • \n
  • Offer Easy Opt Out link for Google Analytics tracking
  • \n
\n

While no single plugin can guarantee 100% GDPR compliance in WordPress, MonsterInsights goes to great length in helping business owners with GDPR compliance.

\n

For more details, see: GDPR and MonsterInsights – Everything You Need to Know.

\n

Universal Tracking + Google Analytics for AMP and Instant Articles

\n

MonsterInsights uses Google Analytics universal tracking, so you can track your users across devices and platforms.

\n

Accelerated Mobile Pages (AMP) is a project by Google that helps you speed up your website. However if you don’t set it up properly, Google AMP can cause you to lose your website analytics. Our Google Analytics AMP integration allows you to have accurate tracking on all AMP enabled pages. It works seamlessly with AMP for WordPress plugin.

\n

We also offer 1-click Google Analytics integration with Facebook Instant Articles.

\n

At MonsterInsights, we always stay ahead of the curve in helping you integrate WordPress with the latest Google Analytics tracking features.

\n
\n

Analytics for PROs! This plugin brings it all, great features and helpful info to easily see what you are doing.
\n Frank van der Sluijs

\n
\n

Google AdSense Tracking and Affiliate Link Tracking

\n

With MonsterInsights Ads tracking addon, publishers can easily track the performance of their Google AdSense Ads inside their Google Analytics dashboard.

\n

Our affiliate link tracking makes it easy for bloggers and affiliate marketers to track their affiliate links with Google Analytics.

\n

MonsterInsights uses event tracking for all WordPress outbound link tracking which is far more accurate than any built-in WordPress analytics solution.

\n

Unlike other WordPress analytics plugin, our Google Analytics affiliate link tracking does NOT slow down your website because all events are recorded via JavaScript and sent straight to your account.

\n

Most other WordPress stats plugin track data on your WordPress hosting server which slows down your website and does not scale for larger websites.

\n

Since our affiliate link tracking uses Google Analytics’ powerful servers, we can skip WordPress entirely.

\n

MonsterInsights’ affiliate link tracking feature works with all WordPress affiliate link management plugins including Pretty Links, Thirsty Affiliates, and others.

\n

Custom Dimensions Tracking, Custom Google Analytics Event Tracking, and More

\n

Our Google Analytics event tracking feature for WordPress doesn’t just stop at affiliate link tracking.

\n

You can use MonsterInsights custom Google analytics event tracking feature to easily add outbound-link tracking, file downloads tracking, call-to-action button tracking, hashmark tracking, telephone link tracking, and more.

\n

Our powerful Forms Tracking addon uses Google Analytics custom event tracking feature to enable form analytics in WordPress. With just 1-click, you can enable form conversion tracking for your contact forms, lead generation forms, registration forms, surveys, and any other type of form in WordPress.

\n

MonsterInsights’ Custom Dimensions addon allows you to push WordPress analytics even further. You can use Google Analytics custom dimensions to generate helpful WordPress stats for:

\n
    \n
  • Author Tracking – see stats for each author to find which author’s posts generate the most traffic.
  • \n
  • Post Type Tracking – see stats for WordPress post types to find out which sections are performing the best.
  • \n
  • Category Tracking – see stats for your WordPress categories to find out which sections of your sites are the most popular.
  • \n
  • Tags Tracking – see stats for your WordPress tags to find out which tags are the most popular.
  • \n
  • SEO Score Tracking – see stats for your Yoast SEO score and see how it impacts your traffic.
  • \n
  • Focus Keyword Tracking – see stats for Yoast focus keyword and see how it correlates with your traffic.
  • \n
  • Logged-in User Tracking – see WordPress stats for what percentage of your users are logged-in.
  • \n
  • User ID Tracking – see stats for each individual logged-in user’s activity through User ID custom dimension – great for Ecommerce and membership sites.
  • \n
  • Published Time Tracking – track the performance of your posts based on their published time.
  • \n
\n

Simply put, MonsterInsights allow you to take full advantage of all the powerful Google Analytics features.

\n
\n

I like how simple it is for client users and how I can turn on the advanced features for myself to get all the details right.
\n Skip Shean

\n
\n

Google Analytics Dashboard Plugin for WordPress Multisite Networks

\n

MonsterInsights is the most popular analytics plugin for adding Google Analytics to WordPress multisite.

\n

We have built-in all permissions and controls that you would need to successfully run Google Analytics on a WordPress multi-site.

\n

You can control who has access to view the Google Analytics Dashboard report in WordPress. Our permissions setting allows you to hide analytics reports for specific user roles.

\n

Similarly, we understand that some sites may want to exclude logged-in users from tracking. MonsterInsights gives you granular control to exclude admin in Analytics as well as other user roles.

\n

Our performance addon allows you to adjust sample rate and site speed sample rates for Google Analytics.

\n

By now you can probably see why MonsterInsights has become the most popular Google Analytics plugin for WordPress.

\n

We understand Google Analytics better than any other analytics plugin for WordPress.

\n

Full MonsterInsights Feature List

\n
    \n
  • Quick and Easy Setup – Easily setup Google Analytics for WordPress with just a few clicks (no coding needed)
  • \n
  • Real Time Stats – See real time stats inside your Google Analytics dashboard.
  • \n
  • Universal Tracking – Get better insights with Google Analytics’ universal tracking.
  • \n
  • Google Analytics Dashboard – See the stats that matter from right inside your WordPress dashboard with custom Publisher Report, Ecommerce report, and Search Console report.
  • \n
  • Google Analytics 4 Support – Easily set up and send proper website tracking data to Google Analytics 4
  • \n
  • eCommerce Tracking – Add Google Analytics Ecommerce tracking to WordPress.
  • \n
  • WooCommerce Google Analytics – Add Enhanced Ecommerce Tracking to your WooCommerce store.
  • \n
  • Easy Digital Downloads Google Analytics – Add Enhanced Ecommerce Tracking to your EDD store.
  • \n
  • Ads Tracking – Track your Google Adsense ads with Google Analytics.
  • \n
  • Affiliate Link Tracking – Track your affiliate links and get stats that matter.
  • \n
  • File Download Tracking – Enable file download stats with just a click.
  • \n
  • Custom Link Tracking – Track your outbound link clicks with Google Analytics.
  • \n
  • Events Tracking – Track custom button and banner clicks with Google Analytics.
  • \n
  • Custom Dimensions Tracking – Enable Google analytics custom dimensions tracking for WordPress.
  • \n
  • Author Tracking – See author stats and discover who’s the most popular author on your site.
  • \n
  • Popular Post Tracking – See which blog post and section is the most popular.
  • \n
  • Contextual Insights – Get actionable tips on how to improve engagement and get more visitors based on your site’s traffic.
  • \n
  • Headline Analyzer – Get more clicks and improve SEO following suggestions from our Headline Analyzer directly in the WordPress editor
  • \n
  • Custom Post Type Tracking – Track the performance of your custom post types.
  • \n
  • Referral Tracking – See how visitors are finding your website to better focus your marketing efforts.
  • \n
  • Performance Tracking – Control the performance rate and sample rate for your Google Analytics report.
  • \n
  • Enhanced Link Attribution – Get better analytics with enhanced link attribution.
  • \n
  • Email Summaries – Your site’s Google Analytics traffic report delivered straight to your inbox every week.
  • \n
  • Google Analytics for AMP – Add proper tracking for Google AMP.
  • \n
  • Google Analytics for Facebook Instant Articles – Add proper tracking for Facebook Analytics.
  • \n
  • Google Analytics GDPR Compliance – EU compliance addon helps you improve Google Analytics GDPR compliance by adding anonymize IP, cookie consent for opt-out tracking, and more.
  • \n
  • Form Conversion Tracking – Track conversions for your WordPress forms. Works with all popular plugins including WPForms, Contact Form 7, Gravity Forms, Formidable Forms, and more.
  • \n
  • Google Optimize Tracking – Enable Google Analytics support for Google Optimize A/B Testing.
  • \n
  • Google Analytics Tools – Helpful tools for Google Analytics such as UTM link tracking builder.
  • \n
  • Want us to add something else? Suggest a feature and we’ll get it added!
  • \n
\n

After reading this exhaustive feature list, you can probably imagine why MonsterInsights is the best Google Analytics plugin for WordPress.

\n

Give MonsterInsights a try.

\n

Want to unlock even more features? Upgrade to our Pro version.

\n
\n

Simple, yet powerful. Amazing piece of plugin, does exactly what expected and even more.
\n Matt Jaworski

\n
\n

Popular Google Analytics Tutorials

\n\n

Note for Beginners

\n

Like all WordPress plugins, Google Analytics by MonsterInsights is only available for self-hosted WordPress sites. This means you will need to switch from WordPress.com to WordPress.org if you want to use this plugin on your WordPress site.

\n

For more details, see this infographic on self hosted WordPress.org vs free WordPress.com

\n

Credits

\n

This plugin is created by Chris Christoff and Syed Balkhi with sponsorship from WPBeginner.

\n

Branding Guidelines

\n

MonsterInsights® is a registered trademark of MonsterInsights LLC. When writing about the Google Analytics for WordPress plugin by MonsterInsights, please make sure to uppercase the first letters of both word.

\n
    \n
  • MonsterInsights (correct)
  • \n
  • Monster Insights (incorrect)
  • \n
  • monsterinsights (incorrect)
  • \n
  • monsterinsight (incorrect)
  • \n
\n

What’s Next

\n

If you like this plugin, then consider checking out our other projects:

\n
    \n
  • OptinMonster – Get More Email Subscribers
  • \n
  • WPForms – Best WordPress Contact Form Plugin
  • \n
  • AIOSEO – The original WordPress SEO plugin to help you rank higher in search results (trusted by over 2 million sites)
  • \n
  • SeedProd – Most popular coming soon & maintenance mode plugin for WordPress
  • \n
  • WP Mail SMTP – Improve email deliverability for your contact form with the most popular SMTP plugin for WordPress
  • \n
  • RafflePress – Best WordPress giveaway and contest plugin to grow traffic and social followers
  • \n
  • Smash Balloon – #1 social feeds plugin for WordPress – display social media content in WordPress without code
  • \n
  • PushEngage – Connect with visitors after they leave your website with the leading web push notification plugin
  • \n
  • TrustPulse – Add real-time social proof notifications to boost your store conversions by up to 15%
  • \n
\n

This plugin would not be possible without the help and support of WPBeginner, the largest WordPress resource site. You can learn from our free WordPress Tutorials like how to install WordPress, choose the best WordPress hosting, WordPress glossary, and more.

\n

You can also learn about other best WordPress plugins.

\n","download_link":"https://downloads.wordpress.org/plugin/google-analytics-for-wordpress.8.1.0.zip","tags":{"google-analytics":"google analytics","google-analytics-dashboard":"google analytics dashboard","google-analytics-widget":"google analytics widget","woocommerce-stats":"WooCommerce stats","wordpress-analytics":"WordPress analytics"},"donate_link":"http://www.wpbeginner.com/wpbeginner-needs-your-help/","icons":{"1x":"https://ps.w.org/google-analytics-for-wordpress/assets/icon.svg?rev=1598927","2x":"https://ps.w.org/google-analytics-for-wordpress/assets/icon-256x256.png?rev=1598927","svg":"https://ps.w.org/google-analytics-for-wordpress/assets/icon.svg?rev=1598927"},"wporg":true},{"name":"Atomic Blocks – Gutenberg Blocks Collection","slug":"atomic-blocks","version":"2.9.0","author":"atomicblocks","author_profile":"https://profiles.wordpress.org/atomicblocks","requires":"5.3","tested":"5.5.6","requires_php":"5.6","rating":86,"ratings":{"1":5,"2":0,"3":1,"4":6,"5":31},"num_ratings":43,"support_threads":1,"support_threads_resolved":0,"active_installs":40000,"downloaded":997842,"last_updated":"2020-10-28 4:53pm GMT","added":"2018-03-26","homepage":"https://atomicblocks.com","short_description":"A collection of beautiful, customizable Gutenberg blocks for the new block editor.","description":"

Atomic Blocks has moved!

\n

Same powerful blocks, same beautiful designs, same innovative team. Atomic Blocks has been renamed to Genesis Blocks. Learn more about Genesis Blocks. With our migration tool built right into Genesis Blocks, the transition between plugins will be simple and seamless – plus you’ll be ready to receive the new blocks and features we’re releasing soon.

\n

Atomic Blocks is a collection of page building blocks for the new Gutenberg block editor. Building pages with the block editor and Atomic Blocks gives you more control to quickly create and launch any kind of site you want!

\n

Installing the customizable Atomic Block plugin adds a collection of beautiful, site-building blocks to help you customize page layouts, increase engagement, and get results for your business. Atomic Blocks provides everything from customizable buttons, to beautifully-designed page sections and full-page layout designs via the Section & Layout block.

\n

Along with the content blocks you’ll find in Atomic Blocks, we’re also publishing helpful articles and tutorials to help you get started with Gutenberg.

\n

New Section and Layout Block!

\n

\n

On top of the handy, time-saving blocks already found in Atomic Blocks, we’re excited to introduce the brand new Section and Layout block! This block comes with a library of pre-designed sections and layouts to help you quickly and easily build a beautiful site with the new block editor.

\n

Using the Section and Layout modal window, you can browse designs by category, search, and even add sections and layouts to a Favorites tab for quick access later. Paired with the free Atomic Blocks theme, which has support for full-width, block-based page building, you have everything you need to start building your site today!

\n

Atomic Blocks currently includes the following blocks:

\n\n

Atomic Blocks WordPress Theme

\n

We’ve created a beautiful WordPress theme to help you get started with the Atomic Blocks plugin and the new WordPress block editor. The theme integrates seamlessly with the blocks you’ll find in the plugin!

\n\n

In addition to the Atomic Block Theme, we’ve built Revolution Pro with the StudioPress team. This theme is built from the ground up with blocks—Gutenberg core and Atomic. Using this Theme and the Genesis One-Click Theme Install you can have a new block-based site up and running in minutes.

\n\n

Google AMP Support

\n

The Accelerated Mobile Pages (AMP) project is a publishing format created by Google to enhance site performance for mobile website users. AMP pages are specially designed for Google search users to quickly load website pages without using any extraneous data. Atomic Blocks has support for AMP built into each block!

\n

Atomic Blocks Help File

\n

We’ve created a handy help file that you can check out here. The help file covers how to setup the plugin and get started with the blocks.

\n

The help file is also available in the plugin once activated. Click the Atomic Blocks admin menu item to visit the Getting Started page.

\n

View the plugin help file

\n

Follow Along:

\n\n","download_link":"https://downloads.wordpress.org/plugin/atomic-blocks.2.9.0.zip","tags":{"blocks":"blocks","editor":"editor","gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","page-builder":"page builder"},"donate_link":"https://atomicblocks.com","icons":{"1x":"https://ps.w.org/atomic-blocks/assets/icon-128x128.jpg?rev=1914920","2x":"https://ps.w.org/atomic-blocks/assets/icon-256x256.jpg?rev=1914921"},"wporg":true},{"name":"Akismet Spam Protection","slug":"akismet","version":"4.2.1","author":"Automattic","author_profile":"https://profiles.wordpress.org/automattic","requires":"5.0","tested":"5.8.1","requires_php":false,"rating":94,"ratings":{"1":40,"2":10,"3":13,"4":45,"5":813},"num_ratings":921,"support_threads":14,"support_threads_resolved":9,"active_installs":5000000,"downloaded":220531442,"last_updated":"2021-10-01 6:28pm GMT","added":"2005-10-20","homepage":"https://akismet.com/","short_description":"The best anti-spam protection to block spam comments and spam in a contact form. The most trusted antispam solution for WordPress and WooCommerce.","description":"

Akismet checks your comments and contact form submissions against our global database of spam to prevent your site from publishing malicious content. You can review the comment spam it catches on your blog’s “Comments” admin screen.

\n

Major features in Akismet include:

\n
    \n
  • Automatically checks all comments and filters out the ones that look like spam.
  • \n
  • Each comment has a status history, so you can easily see which comments were caught or cleared by Akismet and which were spammed or unspammed by a moderator.
  • \n
  • URLs are shown in the comment body to reveal hidden or misleading links.
  • \n
  • Moderators can see the number of approved comments for each user.
  • \n
  • A discard feature that outright blocks the worst spam, saving you disk space and speeding up your site.
  • \n
\n

PS: You’ll be prompted to get an Akismet.com API key to use it, once activated. Keys are free for personal blogs; paid subscriptions are available for businesses and commercial sites.

\n","download_link":"https://downloads.wordpress.org/plugin/akismet.4.2.1.zip","tags":{"anti-spam":"anti-spam","antispam":"antispam","comments":"comments","contact-form":"contact form","spam":"spam"},"donate_link":"","icons":{"1x":"https://ps.w.org/akismet/assets/icon-128x128.png?rev=969272","2x":"https://ps.w.org/akismet/assets/icon-256x256.png?rev=969272"},"wporg":true},{"name":"WP GDPR Cookie Notice","slug":"wp-gdpr-cookie-notice","version":"1.0.0-rc.1","author":"Felix Arntz","author_profile":"https://profiles.wordpress.org/flixos90","requires":"4.9.6","tested":"5.7.3","requires_php":"7.0","rating":76,"ratings":{"1":4,"2":0,"3":0,"4":0,"5":9},"num_ratings":13,"support_threads":1,"support_threads_resolved":0,"active_installs":700,"downloaded":6130,"last_updated":"2021-04-02 11:51pm GMT","added":"2019-03-01","homepage":"https://wordpress.org/plugins/wp-gdpr-cookie-notice/","short_description":"Simple performant cookie consent notice that supports AMP, Web Stories, granular cookie control and live…","description":"

This plugin adds a simple performant cookie consent notice to your WordPress site that supports AMP, Web Stories, granular cookie control and live preview customization.

\n

Not only does the notice allow you to provide the regular message that your site uses cookies, you can also optionally grant your site visitors permission to granularly allow which cookie types are allowed, supporting groups of functional (always required), preferences, analytics and marketing cookies. This aims towards compliance with how the new GDPR regulations recommend implementing cookie control for your site.

\n

In addition to the Privacy Policy page setting that WordPress core provides, you also get a settings to optionally set an extra Cookie Policy page, and you can easily link to either of them from the cookie consent notice.

\n

The cookie notice content and appearance can easily be tweaked using the Customizer, with an immediate live-preview of what your changes will look like.

\n

Last but not least, another important thing that this plugin takes care of, other than most other cookie consent plugins, is that it actually ensures cookies are only placed if the respective cookie type has been allowed by the visitor. The plugin does this by implementing cookie rules for WordPress itself, and also for the following plugins:

\n\n

More plugins will be supported in the future. If you are a developer though, it’s also very easy to add cookie rules for other code, by using the flexible cookie rule component the plugin provides as an extension point.

\n

Feature Summary

\n
    \n
  • Lightweight and easy-to-use: Simply activate the plugin, and the notice will appear.
  • \n
  • Live Preview: Use the Customizer to adjust the notice to your needs, with an instant live preview.
  • \n
  • Customizable Appearance: Specify the notice position, colors, border, button size and more.
  • \n
  • Customizable Content: Adjust the notice heading, text and button label to your preferences. You can easily link to your cookie policy page or privacy policy page, and even give visitors granular control about which cookie types they allow.
  • \n
  • Cookie Policy Support: Define an optional cookie policy page if your site has one, or alternatively provide an ID attribute to the cookie section in your privacy policy.
  • \n
  • Cookie Integrations: Supported cookies are only set once the visitor has given their consent. The cookie rules implemented also respect the more granular cookie control.
  • \n
  • JavaScript-driven: The cookie notice is inserted into the page as necessary via JavaScript, but at the same time provides easy access to whether it should be displayed via its PHP API.
  • \n
  • AMP Support: The notice is fully AMP-compatible using <amp-consent>, integrating seamlessly with the AMP plugin. It integrates with Web Stories as well.
  • \n
  • Coding Best Practices: The plugin is fully object-oriented and is coded after best practices, such as using interfaces, traits, dependency injection or the single responsibility principle. It also implements modern coding features requiring PHP 7, such as scalar type hints or return type hints.
  • \n
\n

Disclaimer

\n

This plugin does not provide any legal protection. You as a site administrator are required to ensure that it meets legal standards. This plugin is a technical tool, not a lawyer.

\n","download_link":"https://downloads.wordpress.org/plugin/wp-gdpr-cookie-notice.1.0.0-rc.1.zip","tags":{"amp":"amp","cookie-consent":"cookie consent","cookie-notice":"cookie notice","gdpr":"GDPR","web-stories":"web stories"},"donate_link":"","icons":{"1x":"https://ps.w.org/wp-gdpr-cookie-notice/assets/icon-128x128.png?rev=2042024","2x":"https://ps.w.org/wp-gdpr-cookie-notice/assets/icon-256x256.png?rev=2042024"},"wporg":true},{"name":"WordPress Share Buttons Plugin – AddThis","slug":"addthis","version":"6.2.6","author":"The AddThis Team","author_profile":"https://profiles.wordpress.org/arnavarro","requires":"3.0","tested":"5.2.12","requires_php":false,"rating":84,"ratings":{"1":75,"2":25,"3":22,"4":46,"5":444},"num_ratings":612,"support_threads":1,"support_threads_resolved":0,"active_installs":100000,"downloaded":5075866,"last_updated":"2019-07-10 5:19pm GMT","added":"2008-12-23","homepage":"https://wordpress.org/plugins/addthis/","short_description":"Now compatible with the AMP Plugin! Free Share Buttons from AddThis. Share to Messenger, WhatsApp, Facebook, Twitter, Pinterest and many more.","description":"

Now compatible with the AMP Plugin! The Free WordPress Share Buttons Plugin from AddThis makes it easier than ever for your audience to spread your content around the web. Our quick-loading Share Buttons Plugin lets you connect to over 200 social channels including Messenger, WhatsApp, Facebook, Twitter, Pinterest and many more.

\n

Our clean, customizable and simple share buttons are beautiful, quick to load and recognized all over the web.

\n

AddThis is trusted by over 15,000,000 websites with over 2 billion unique users, sharing content all over the world, in more than sixty languages.

\n

Types of Share Buttons:

\n
    \n
  • \n

    Floating share buttons: Placed on the side of your page, following your reader as they scroll. A great way to promote sharing without getting too in-your-face.

    \n
  • \n
  • \n

    Expanding share buttons: Modern, clean, and best suited for sites with tons of mobile traffic. This button expands to reveal sharing options on hover or click.

    \n
  • \n
  • \n

    Inline share buttons: Integrate share buttons into your own content for a seamless sharing experience.

    \n
  • \n
  • \n

    Image sharing buttons: Seamlessly integrate sharing into your layout with adjustable image sharing buttons. Perfect for pages with tons of shareable content.

    \n
  • \n
\n

Customizable:

\n
    \n
  • \n

    Designed for desktop, tablet, and mobile

    \n
  • \n
  • \n

    Choose from over 200 social media channels to display

    \n
  • \n
  • \n

    Adjust coloring to match your brand

    \n
  • \n
\n

Analytics:

\n
    \n
  • Sign up for a free AddThis account to get analytics on how your content is performing such as your top shared content, referring social networks and more. After you register, these analytics are accessible by logging into your AddThis.com account and visiting your AddThis dashboard. Analytics include site pageviews, your top shared content, referring social networks, and more.
  • \n
\n

Support:

\n

We strive to provide best-in-class support with a response time of around two hours, and a customer satisfaction rate of over 98%. To get in touch with our team, head to http://www.addthis.com/support.

\n

Check out our other plugins to help you grow and engage your audience!

\n
    \n
  • \n

    Follow Buttons: Add followers to 65+ social networks, including Facebook, Snapchat, Instagram, and more.

    \n
  • \n
  • \n

    Related Posts: Boost your on-site engagement with our Related Posts tool, which recommends content not only by what’s popular, but also what’s most relevant.

    \n
  • \n
\n

Want more? Visit our website to learn how you can activate our Email List Building and Link Promotion Tools.

\n

AddThis Academy | Privacy Policy

\n","download_link":"https://downloads.wordpress.org/plugin/addthis.6.2.6.zip","tags":{"share-buttons":"share buttons","social":"social","social-marketing":"Social Marketing","social-share":"social share","social-sharing":"social sharing"},"donate_link":"","icons":{"1x":"https://ps.w.org/addthis/assets/icon-128x128.png?rev=1223867","2x":"https://ps.w.org/addthis/assets/icon-256x256.png?rev=1223867"},"wporg":true},{"name":"BigCommerce For WordPress","slug":"bigcommerce","version":"4.18.0","author":"BigCommerce","author_profile":"https://profiles.wordpress.org/bigcommerce","requires":"5.2","tested":"5.8.1","requires_php":"7.4.0","rating":80,"ratings":{"1":8,"2":1,"3":0,"4":3,"5":27},"num_ratings":39,"support_threads":7,"support_threads_resolved":0,"active_installs":1000,"downloaded":60330,"last_updated":"2021-10-07 1:18am GMT","added":"2018-11-16","homepage":"","short_description":"Scale your ecommerce business with WordPress on the front-end and BigCommerce on the back end.…","description":"

BigCommerce for WordPress is a plugin that allows you to scale ecommerce further than ever before on WordPress. Scale your business with WordPress on the front-end and free up server resources from things like catalog management, processing payments, managing fulfillment logistics and more with BigCommerce on the back end.

\n

Built to integrate seamlessly with WordPress, you get access to our native ecommerce features from a single plugin, the ability to sell across multiple channels and marketplaces from a single location, and best of all, an embedded checkout experience that takes on PCI compliance and customer security on your behalf.

\n

Quick Start!

\n

Look at details from the latest release, including new features and enhancements here: https://github.com/bigcommerce/bigcommerce-for-wordpress/releases

\n

Dive into how you set up and customize your site using BC4WP using our guides here: https://developer.bigcommerce.com/bigcommerce-for-wordpress/getting-started/introduction

\n

Have a suggestion for how we can be better? Ping the team! wordpress-suggestions@bigcommerce.com

\n

DIFFERENT FROM YOUR TRADITIONAL PLUGIN

\n

We’ve taken a very different approach to ecommerce in WordPress. We set out to build our plugin the WordPress Way: deliver value to the community, build it with WordPress experts and make something developers can call their own.

\n

The BigCommerce for WordPress plugin leverages the best aspects of both platforms, allowing WordPress to manage content and BigCommerce to manage ecommerce.

\n

SCALABLE ECOMMERCE FOR WORDPRESS

\n

Continue to tap into the unrestricted customization of WordPress while pairing it with the most scalable SaaS ecommerce engine. BigCommerce lets you build complex catalogs, manage large volumes of concurrent traffic, orders and analytics.

\n

The BigCommerce plugin ports over a copy of your product catalog and stores products as custom post types in WordPress. It also creates pages for your cart, checkout, account profiles, sign in, shipping & returns, gift certificates and order history.

\n

The key difference to our approach is that you don’t need to install additional extensions to get access to common ecommerce features. Instead, you get instant access to many common (and advanced) features, such as complex catalog support, global payment gateways, currency handling, taxation, shipping calculations and centralized channel management; all out-of-the-box.

\n

OFFLOAD BACKEND RESOURCES

\n

Our philosophy is that processing orders and running your store shouldn’t affect the uptime and speed of your site — which can hurt your SEO, conversion, and brand. The BigCommerce plugin does the heavy commerce lifting, letting you scale your ecommerce without losing speed or uptime.

\n

LET US HANDLE PCI COMPLIANCE

\n

Taking on your own PCI compliance comes with a huge amount of liability and risk. BigCommerce powers the full checkout experience, assuming the burden of PCI compliance for you.

\n

EXTENSIVE PAYMENT GATEWAYS

\n

BigCommerce has over 65 payment gateway integrations available out-of-the box, serving 100+ countries and over 250 local payment methods.

\n

To help you reduce costs, we’ve pre-negotiated special credit and debit card processing rates with PayPal, our preferred payment solution. The more you grow with BigCommerce and upgrade your plan, the lower your rates can go.

\n

HIGHLY SCALABLE PRODUCT CATALOG

\n

BigCommerce is built for large, complex catalogs with up to 600 SKUs per product, and 250 product values for a single option. Our native catalog structure treats single products (including variants, details, SKUs, etc.) as a single API call, making inventory syncing with ERPs, PIMs (and WordPress) fast.

\n

MULTI-CHANNEL SELLING & MANAGEMENT

\n

With the core BigCommerce platform, you now have access within the control panel to sell across multiple marketplaces simultaneously, such as eBay, Amazon, Facebook, Instagram, Google Shopping, Square and more! Save time and eliminate errors and overselling with bulk listing, automatic inventory syncing and unified order and fulfillment management.

\n

USE YOUR FAVORITE WORDPRESS THEME

\n

BigCommerce for WordPress will work with any WordPress theme, but it may require some styling to make it fit perfectly. Are you a theme developer? We’d love to promote your BigCommerce for WordPress compatible theme. Get in touch with us here.

\n

To start, we recommend choosing a cross-browser compatible WordPress ecommerce theme, since the theme options included will better match what an online store requires.

\n

ECOMMERCE WITH GUTENBERG

\n

We’re big supporters of Gutenberg and built our plugin to support both the classic editor and Gutenberg. Whether you’re inserting shortcodes in classic mode or product blocks in Gutenberg, we will continue to enable support for both.

\n

SECURED USER ACCOUNTS & LOGINS

\n

In addition to offering you peace of mind with a secure checkout experience, we also extend this level of security to your shoppers, their accounts and logins, and payment information — all managed by BigCommerce.

\n

GLOBAL SHIPPING STREAMLINED

\n

We support all major global carriers, offer real-time carrier quotes, allow for free shipping, flat rates, dropshipping and more. With our deep ShipperHQ integration, you can even specify rates by product, category, customer group, quantity, destination, dimensions and more.

\n

FLEXIBLE SHOPPING CART

\n

We are bringing over a decade of focusing on building online stores to every WordPress website. Through this we bring our flexible shopping cart, along with it’s extensive customization options, so can offer enterprise grade promotions and discounts within a fully responsive layout, without additional extensions that other WordPress ecommerce plugins require.

\n

MULTIPLE SITES; ONE CONTROL PANEL

\n

Even if you sell across multiple WordPress sites, you shouldn’t have to manage them all in separate places. BigCommerce gives you a single control panel to manage your catalog, orders and shipping, all from one place. Streamline your admin experience and spend less time managing ecommerce on WordPress.

\n

Beyond WordPress, the endpoints we’ve opened on our platform allow you to build commerce into any sort of experience. Looking to launch a site in React? Interested in developing a mobile app? Want to integrate with an in-house POS? All of these can be built and managed from within the BigCommerce Control Panel.

\n

COMPLEX ENTERPRISE SYSTEMS INTEGRATIONS

\n

A huge benefit of having a SaaS ecommerce engine behind the scenes is that the core platform is already built for mid-market and enterprise use cases. Natively connect to your existing ERP suites, PIM software, OMS solutions, POS systems or marketing automation tools right out of the box.

\n

AMP SUPPORT

\n

Unique to most WordPress ecommerce plugins, BigCommerce for WordPress also includes support for Accelerated Mobile Pages. To activate, install the official Google plugin.

\n

SUPPORT AND SERVICES

\n

All of our BigCommerce customers have access to our 24/7 live phone, chat, and email support, run from our headquarters in Austin, Texas. For larger enterprise customers, we offer dedicated account management and implementation management services as part of your plan. We also have an ever-growing collection of help, support, and how-to guides in our help center.

\n

BUILT WITH DEVELOPERS IN MIND

\n

BigCommerce for WordPress was built by WordPress developers, with developers in mind. Our plugin is open source and available for you to fork, extend and modify as your needs require.

\n

Our plugin supports WordPress’ standard method of overriding template files so you can modify out-of-the-box designs. Customize your product cards, lists and shopping cart without risking plugin updates that will undo your changes.

\n

Additionally, there are many hooks and filters, so you can manipulate content to your heart’s content.

\n

JOIN OUR BIGCOMMERCE COMMUNITY

\n

All BigCommerce customers get access to our ever-growing online community to answer questions, discuss ecommerce strategies, learn about the latest product updates, contribute ideas and more.

\n

If you’re interested in contributing to BigCommerce for WordPress, head over to our GitHub Repository.

\n","download_link":"https://downloads.wordpress.org/plugin/bigcommerce.4.18.0.zip","tags":{"ecommerce":"ecommerce","online-store":"online store","retail":"retail","sell-online":"sell online","storefront":"storefront"},"donate_link":"","icons":{"1x":"https://ps.w.org/bigcommerce/assets/icon-256x256.png?rev=2141502","2x":"https://ps.w.org/bigcommerce/assets/icon-256x256.png?rev=2141502"},"wporg":true},{"name":"Yoast SEO","slug":"wordpress-seo","version":"17.3","author":"Team Yoast","author_profile":"https://profiles.wordpress.org/joostdevalk","requires":"5.6","tested":"5.8.1","requires_php":"5.6.20","rating":96,"ratings":{"1":722,"2":125,"3":174,"4":618,"5":25760},"num_ratings":27399,"support_threads":514,"support_threads_resolved":436,"active_installs":5000000,"downloaded":364182943,"last_updated":"2021-10-05 6:53am GMT","added":"2010-10-11","homepage":"https://yoa.st/1uj","short_description":"Improve your WordPress SEO: Write better content and have a fully optimized WordPress site using the Yoast SEO plugin.","description":"

Yoast SEO: the #1 WordPress SEO plugin

\n

Since 2008 Yoast SEO has helped millions of websites worldwide to rank higher in search engines.

\n

Yoast’s mission is SEO for Everyone. Our plugin’s users range from the bakery around the corner to some of the most popular sites on the planet.

\n

Yoast SEO Free contains everything that you need to manage your SEO, and the Yoast SEO Premium plugin and its extensions unlock even more tools and functionality.

\n

GET AHEAD OF THE COMPETITION

\n

To rank highly in search engines, you need to beat the competition. You need a better, faster, stronger website than the people who sell or do the same kinds of things as you.

\n

Yoast SEO is the most-used WordPress SEO plugin, and has helped millions of people like you to get ahead, and to stay ahead.

\n

TAKING CARE OF YOUR WORDPRESS SEO

\n

Yoast SEO is packed full of features, designed to help visitors and search engines to get the most out of your website. Some of our favourites are:

\n
    \n
  • Automated technical SEO improvements, like canonical URLs and meta tags.
  • \n
  • Advanced XML sitemaps; making it easy for Google to understand your site structure.
  • \n
  • Title and meta description templating, for better branding and consistent snippets in the search results.
  • \n
  • An in-depth Schema.org integration that will increase your chance of getting rich results, by helping search engines to understand your content.
  • \n
  • Full control over site breadcrumbs, so that users and search engines always know where they are.
  • \n
  • Faster loading times for your whole website, due to an innovative way of managing data in WordPress.
  • \n
  • [Premium] E-mail support for our Yoast SEO Premium users.
  • \n
  • [Premium] The possibility to expand Yoast SEO with the News SEO, Video SEO, Local SEO and WooCommerce SEO extensions.
  • \n
\n

WRITE KILLER CONTENT WITH YOAST SEO

\n

We know content is king, that’s why Yoast SEO is famous for its state-of-the-art content and SEO analysis. Yoast SEO gives you:

\n
    \n
  • SEO analysis: an invaluable tool while writing SEO-friendly content with the right (focus) keyphrases in mind.
  • \n
  • Readability analysis: ensures that humans and search engines can read and understand your content.
  • \n
  • Full language support for: English, German, French, Dutch, Spanish, Italian, Russian, Indonesian, Polish, Portuguese, Arabic, Swedish, Hebrew, Hungarian, Turkish, Czech, Norwegian and Slovak.
  • \n
  • A Google preview, which shows what your listings will look like in the search results. Even on mobile devices!
  • \n
  • Innovative Schema blocks for the WordPress block editor, so that your FAQ and HowTo content can be shown directly in the search results. Plus a breadcrumbs block to guide your users.
  • \n
  • [Premium] Internal linking blocks to easily improve the structure of your content. Easily add a table of contents block, a related links block, a subpages block, or siblings block! Plus, we’ll keep adding these easy-to-add blocks to improve your site structure.
  • \n
  • [Premium] Social previews to show you how your content will be shown on Twitter and Facebook. Plus: Social Appearance Templates to guarantee a consistent look.
  • \n
  • [Premium] The Insights tool that shows you what your text focuses on. This way you can keep your article in line with your keyphrases.
  • \n
  • [Premium] Optimize your content for synonyms and related keyphrases.
  • \n
  • [Premium] Optimize your article for different word forms of your keyphrases, as the singular and plural. But also different verb forms, synonyms, and related keyphrases. This makes for more natural content!
  • \n
  • [Premium] Automatic internal linking suggestions: write your article and get automatic suggested posts to link to!
  • \n
  • [Premium] An orphaned content filter to detect posts that have no links pointing towards them!
  • \n
  • [Premium] SEO workouts to make working on your site as easy as ABC. These SEO workflows will get your site into shape in no time!
  • \n
\n

KEEP YOUR SITE IN PERFECT SHAPE

\n

Whether you are an online entrepreneur, blogger or content creator, a developer, a (WordPress) SEO expert or a business owner, Yoast SEO helps you keep your website in perfect shape by:

\n
    \n
  • Tuning the engine of your website, so you can work on creating great content!
  • \n
  • Giving you cornerstone content and internal linking features to help you optimize your site structure in a breeze.
  • \n
  • Translating your content to structured data where possible, to help search engines understand your website.
  • \n
  • Helping you manage your team: with our SEO roles you can give colleagues access to specific sections of the Yoast SEO plugin.
  • \n
  • [Premium] Automatically creating redirects when URLs change or when pages are deleted, and providing tools to manage or create redirects.
  • \n
  • [Premium] Showing you social previews to manage the way your page is shared on social networks like Facebook and Twitter.
  • \n
\n

TRUST THE EXPERTS

\n

Yoast is powered by a team of expert developers, testers, software architects, and SEO consultants. They work constantly to stay at the cutting edge of WordPress SEO, and to improve the plugin with every release.

\n

Yoast SEO is the only WordPress SEO plugin made by world-renowned SEO experts.

\n

GET PREMIUM SUPPORT

\n

The Yoast team offers regular support on the WordPress.org forums. But we hope you understand that we prioritize our Premium customers. This one-on-one email support is available to people who have purchased Yoast SEO Premium.

\n

Did you know that Yoast SEO Premium contains a lot of extra features:

\n
    \n
  • A redirect manager that prevents “404: page not found” errors
  • \n
  • Optimize without worrying about over-optimization with intelligent word form recognition available in multiple languages.
  • \n
  • Internal linking blocks to structure your site easily.
  • \n
  • Internal linking suggestions while you’re writing.
  • \n
  • Preview your content to see what it will look like in the search results and when shared on social media using the Google preview and social preview.
  • \n
  • Cornerstone content checks that point search engines to your most important pages.
  • \n
  • Connect Yoast SEO to Zapier to easily create zaps that instantly share your published posts with 2000+ destinations like Twitter, Facebook, and much more.
  • \n
\n

If you are serious about your WordPress SEO, install the Yoast SEO Premium plugin! Costs a little, saves a lot of time!

\n

OUR EXTENSIONS TO FURTHER IMPROVE YOUR WORDPRESS SEO

\n

Check out these SEO add-ons by Yoast:

\n
    \n
  • Yoast Local SEO optimizes your website for a local audience.
  • \n
  • Yoast Video SEO ensures that Google understands what your video is about, increasing the chances of ranking in the video results.
  • \n
  • Yoast News SEO for news websites that want to improve their visibility and performance in Google News.
  • \n
  • WooCommerce SEO for all online shops that want to perform better in the search results and social media.
  • \n
\n

These extensions work fine with the free version of Yoast SEO. Of course, the premium extensions also include 24/7 support.

\n

Oh, don’t forget: our Yoast Academy is for all entrepreneurs, bloggers, and anyone who wants to learn more about optimizing websites, improving your WordPress SEO, and if you want to take your content to the next level!

\n

INTEGRATIONS

\n

Yoast SEO integrates seamlessly into a range of themes and plugins. We work particularly well with:

\n\n

BUG REPORTS

\n

Do you want to report a bug for Yoast SEO? Best to do so in the WordPress SEO repository on GitHub. Please note that GitHub is not a support forum and issues will be closed if they don’t meet the bug requirements.

\n

READ MORE

\n

Want more information on search engine optimization and Yoast SEO? Have a look at:

\n\n","download_link":"https://downloads.wordpress.org/plugin/wordpress-seo.17.3.zip","tags":{"content-analysis":"Content analysis","readability":"Readability","schema":"schema","seo":"seo","xml-sitemap":"xml sitemap"},"donate_link":"https://yoa.st/1up","icons":{"1x":"https://ps.w.org/wordpress-seo/assets/icon.svg?rev=2363699","2x":"https://ps.w.org/wordpress-seo/assets/icon-256x256.png?rev=2363699","svg":"https://ps.w.org/wordpress-seo/assets/icon.svg?rev=2363699"},"wporg":true},{"name":"Gutenberg","slug":"gutenberg","version":"11.6.0","author":"Gutenberg Team","author_profile":"https://profiles.wordpress.org/matveb","requires":"5.7","tested":"5.8.1","requires_php":"5.6","rating":42,"ratings":{"1":2276,"2":201,"3":128,"4":134,"5":708},"num_ratings":3447,"support_threads":64,"support_threads_resolved":29,"active_installs":300000,"downloaded":24959511,"last_updated":"2021-09-29 9:53am GMT","added":"2017-06-16","homepage":"https://github.com/WordPress/gutenberg","short_description":"The Gutenberg plugin provides editing, customization, and site building features to WordPress. This beta plugin allows you to test bleeding-edge featu …","description":"

“Gutenberg” is a codename for a whole new paradigm for creating with WordPress, that aims to revolutionize the entire publishing experience as much as Gutenberg did the printed word. The project is following a four-phase process that will touch major pieces of WordPress — Editing, Customization, Collaboration, and Multilingual.

\n

The block editor introduces a modular approach to all parts of your site: each piece of content in the editor, from a paragraph to an image gallery to a headline, is its own block. And just like physical blocks, WordPress blocks can be added, arranged, and rearranged, allowing WordPress users to create media-rich content in a visually intuitive way — and without work-arounds like shortcodes or custom HTML.

\n

The block editor first became available in December 2018. We’re always hard at work refining the experience, creating more and better blocks, and laying the groundwork for the future phases of work. Each WordPress release comes ready to go with the stable features from multiple versions of the Gutenberg plugin, so you don’t need to use the plugin to benefit from the work being done here. However, if you’re more adventurous and tech-savvy, the Gutenberg plugin gives you the latest and greatest, so you can join us in testing bleeding-edge features, start playing with blocks, and maybe get inspired to build your own.

\n

Discover More

\n
    \n
  • \n

    User Documentation: Review the WordPress Editor documentation for detailed instructions on using the editor as an author to create posts, pages, and more.

    \n
  • \n
  • \n

    Developer Documentation: Explore the Developer Documentation for extensive tutorials, documentation, and API references on how to extend the editor.

    \n
  • \n
  • \n

    Contributors: Gutenberg is an open-source project and welcomes all contributors from code to design, from documentation to triage. See the Contributor’s Handbook for all the details on how you can help.

    \n
  • \n
\n

The development hub for the Gutenberg project can be found at https://github.com/wordpress/gutenberg. Discussions for the project are on the Make Core Blog and in the #core-editor channel in Slack, including weekly meetings. If you don’t have a slack account, you can sign up here.

\n","download_link":"https://downloads.wordpress.org/plugin/gutenberg.11.6.0.zip","tags":[],"donate_link":"","icons":{"1x":"https://ps.w.org/gutenberg/assets/icon-128x128.jpg?rev=1776042","2x":"https://ps.w.org/gutenberg/assets/icon-256x256.jpg?rev=1776042"},"wporg":true},{"name":"Setka Editor","slug":"setka-editor","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://setka.io/","short_description":"

Setka Editor is the first WYSIWYG plugin with page builder functionality.

\n","description":"\n\n\n

Setka Editor is the first WYSIWYG plugin with page builder functionality.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2018/11/Setka-Banner-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2018/11/Setka-Banner-372x209.jpg","svg":""},"wporg":false}] \ No newline at end of file diff --git a/data/themes.json b/data/themes.json index abad70a1134..d8c8ec0815b 100644 --- a/data/themes.json +++ b/data/themes.json @@ -1 +1 @@ -[{"name":"ExS","slug":"exs","version":"1.7.5","preview_url":"https://wp-themes.com/exs/","author":{"user_nicename":"exstheme","profile":"https://profiles.wordpress.org/exstheme","avatar":"https://secure.gravatar.com/avatar/1823b8571e6996048b616b6602b21358?s=96&d=monsterid&r=g","display_name":"exstheme","author":"the ExS team","author_url":"https://exsthemewp.com/about/"},"screenshot_url":"//ts.w.org/wp-content/themes/exs/screenshot.png?ver=1.7.5","rating":100,"num_ratings":4,"homepage":"https://wordpress.org/themes/exs/","description":"ExS theme is a fastest and smallest multipurpose Gutenberg compatible highly customizable theme without 3rd party dependencies. It is designed to have 100% Google Page and LightHouse speed. It has an extra small size of CSS (70kB) and JS (3kB) assets, 100% SEO optimised and valid code and it is 100% mobile friendly. It also has a WooCommerce and Easy Digital Downloads (EDD) plugin support so it will be perfect solution for your online store and e-commerce business. bbPress extended support makes ExS theme perfect for your forum. BuddyPress and Ultimate member support will help to create your social network with ExS theme. WP Job manager and Simple Job Board support will help you to create your job board. The Events Calendar advanced support will help you to create your events site. LearnPress plugin advanced support will help you to create a online courses and online school site. It has unlimited color options, headers and footers layouts, 15+ blog layouts, separate layouts for each category and many more super useful features that you can set up directly in your Customizer with live preview. ExS theme has builtin multiple page templates to perfectly work with any page builder such as Elementor, Beaver Builder, WPBackery, Brizy etc. ExS uses WordPress starter content feature so you can setup your pages immediately after WordPress and theme installation by simply going to Customizer and publish your changes. Theme Demo: https://exsthemewp.com/demo/.","requires":"5.5","requires_php":"5.6","wporg":true},{"name":"Sydney","slug":"sydney","version":"1.81","preview_url":"https://wp-themes.com/sydney/","author":{"user_nicename":"athemes","profile":"https://profiles.wordpress.org/athemes","avatar":"https://secure.gravatar.com/avatar/0fe6c4dee6e201e81783d8a0ee12d83b?s=96&d=monsterid&r=g","display_name":"athemes","author":"aThemes","author_url":"https://athemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/sydney/screenshot.png?ver=1.81","rating":98,"num_ratings":506,"homepage":"https://wordpress.org/themes/sydney/","description":"Sydney is a powerful business theme that provides a fast way for companies or freelancers to create an awesome online presence. As well as being fully compatible with Elementor, Sydney brings plenty of customization possibilities like access to all Google Fonts, full color control, layout control, logo upload, full screen slider, header image, sticky navigation and much more. Also, Sydney provides all the construction blocks you need to rapidly create an engaging front page. Looking for a quick start with Sydney? With just a few clicks, you can import one of our existing demos (https://athemes.com/sydney-demos/)","requires":false,"requires_php":"5.6","wporg":true},{"name":"Really Simple","slug":"really-simple","version":"1.0.7","preview_url":"https://wp-themes.com/really-simple/","author":{"user_nicename":"flauberthenriques","profile":"https://profiles.wordpress.org/flauberthenriques","avatar":"https://secure.gravatar.com/avatar/d524eb0811fa44be90481509b000c779?s=96&d=monsterid&r=g","display_name":"Flaubert Henriques","author":"Flaubert Henriques","author_url":"https://profiles.wordpress.org/flauberthenriques/"},"screenshot_url":"//ts.w.org/wp-content/themes/really-simple/screenshot.png?ver=1.0.7","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/really-simple/","description":"Really Simple is a theme for bloggers and writers who need a ultra light and fast theme. The theme focuses on simplicity and loading speed. Yes, Really Simple Theme is also fully AMP compatible. Check the readme.txt file and leave the sidebar perfect after WordPress 5.8 update.","requires":"5.3","requires_php":"7.0","wporg":true},{"name":"Artpop","slug":"artpop","version":"1.0.8","preview_url":"https://wp-themes.com/artpop/","author":{"user_nicename":"designlabthemes","profile":"https://profiles.wordpress.org/designlabthemes","avatar":"https://secure.gravatar.com/avatar/956873f77232371cb89d8a0d7a516354?s=96&d=monsterid&r=g","display_name":"designlabthemes","author":"Design Lab","author_url":"https://www.designlabthemes.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/artpop/screenshot.png?ver=1.0.8","rating":100,"num_ratings":1,"homepage":"https://wordpress.org/themes/artpop/","description":"Artpop is a beautiful Gutenberg-first WordPress theme, carefully designed to help you build your online brand. Unleash your creativity, Artpop takes care of the rest! Well documented and easy to use even for WordPress beginners, Artpop is perfect for a blog, personal portfolio, small business website, and WooCommerce storefront. Easily set your logo, change colors, and create awesome layouts to give your website a truly unique look.","requires":"4.7","requires_php":"5.6","wporg":true},{"name":"Michelle","slug":"michelle","version":"1.2.0","preview_url":"https://wp-themes.com/michelle/","author":{"user_nicename":"webmandesign","profile":"https://profiles.wordpress.org/webmandesign","avatar":"https://secure.gravatar.com/avatar/f4a334f9f5af61b2bd22fcaadb04dd06?s=96&d=monsterid&r=g","display_name":"WebMan Design | Oliver Juhas","author":"WebMan Design","author_url":"https://www.webmandesign.eu/"},"screenshot_url":"//ts.w.org/wp-content/themes/michelle/screenshot.png?ver=1.2.0","rating":100,"num_ratings":3,"homepage":"https://wordpress.org/themes/michelle/","description":"Michelle is accessibility ready WordPress theme for creating inclusive websites easily and with fun using block editor. Useful block patterns, block styles, templates and featured posts functionality allow you to build an eyecatching website in no time. Customize site footer and error 404 page content with block editor! The theme also works with Beaver Builder, Elementor, or any other page builder. It also supports theme builders! Michelle elevates your business, eCommerce, portfolio, or blog website. Check out the demo at https://themedemos.webmandesign.eu/michelle/ and documentation at https://webmandesign.github.io/docs/michelle/","requires":"5.5","requires_php":"7.0","wporg":true},{"name":"Miniva","slug":"miniva","version":"1.6.3","preview_url":"https://wp-themes.com/miniva/","author":{"user_nicename":"tajam","profile":"https://profiles.wordpress.org/tajam","avatar":"https://secure.gravatar.com/avatar/378d4e715829ccf6f1fbe6dfef6eb539?s=96&d=monsterid&r=g","display_name":"Tajam","author":"Tajam","author_url":"https://tajam.id/"},"screenshot_url":"//ts.w.org/wp-content/themes/miniva/screenshot.png?ver=1.6.3","rating":100,"num_ratings":6,"homepage":"https://wordpress.org/themes/miniva/","description":"A fast, lightweight, and mobile-friendly WordPress theme for bloggers. Miniva is built with simplicity, accessibility and performance in mind. The clean and minimal design helps readers focus on your content. It supports AMP and several Jetpack modules including featured content, infinite scroll, content options and social menu. See the theme demo at https://tajam.id/miniva-demo/","requires":"4.5","requires_php":"5.3","wporg":true},{"name":"Iknow","slug":"iknow","version":"1.2.6","preview_url":"https://wp-themes.com/iknow/","author":{"user_nicename":"wpcalc","profile":"https://profiles.wordpress.org/wpcalc","avatar":"https://secure.gravatar.com/avatar/64ca4933fab3d5e50383f0b514acd5f6?s=96&d=monsterid&r=g","display_name":"Wow-Company","author":"Wow-Company","author_url":"https://wow-company.com"},"screenshot_url":"//ts.w.org/wp-content/themes/iknow/screenshot.png?ver=1.2.6","rating":98,"num_ratings":9,"homepage":"https://wordpress.org/themes/iknow/","description":"Iknow WordPress Theme has a minimalistic, responsive and mobile-friendly design. Easy and fast theme. The theme is perfect for creating Knowledge Base, Helpdesk, Wiki and FAQ websites. Ability to set custom icons for each category and tag. Manage the display of categories on the main page of the site. The integrated post rating system VoteUp/VoteDown. Breadcrumbs for easy site navigation. Custom widget to display the current navigation in a category and in a separate post. You can view the appearance and features of the theme on the site https://wow-company.com/wp-theme-iknow/. Documentation https://wow-company.com/faq/category/wow-themes/iknow/","requires":false,"requires_php":"5.6","wporg":true},{"name":"Kadence","slug":"kadence","version":"1.1.6","preview_url":"https://wp-themes.com/kadence/","author":{"user_nicename":"britner","profile":"https://profiles.wordpress.org/britner","avatar":"https://secure.gravatar.com/avatar/3276133b8df529e6e1e58586ab1a309e?s=96&d=monsterid&r=g","display_name":"Ben Ritner - Kadence WP","author":"Kadence WP","author_url":"https://www.kadencewp.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/kadence/screenshot.png?ver=1.1.6","rating":98,"num_ratings":142,"homepage":"https://wordpress.org/themes/kadence/","description":"Kadence Theme is a lightweight yet full featured WordPress theme for creating beautiful fast loading and accessible websites, easier than ever. It features an easy to use drag and drop header and footer builder to build any type of header in minutes. It features a full library of gorgeous starter templates that are easy to modify with our intelligent global font and color controls. With extensive integration with the most popular 3rd party plugins, you can quickly build impressive ecommerce websites, course websites, business websites, and more.","requires":"5.0","requires_php":"7.0","wporg":true},{"name":"Izo","slug":"izo","version":"1.0.12","preview_url":"https://wp-themes.com/izo/","author":{"user_nicename":"elfwp","profile":"https://profiles.wordpress.org/elfwp","avatar":"https://secure.gravatar.com/avatar/1cfedf4555fea4d8fbba2947635586ea?s=96&d=monsterid&r=g","display_name":"elfwp","author":"elfWP","author_url":"https://elfwp.com"},"screenshot_url":"//ts.w.org/wp-content/themes/izo/screenshot.png?ver=1.0.12","rating":90,"num_ratings":2,"homepage":"https://wordpress.org/themes/izo/","description":"Izo a fast, lightweight, native AMP and fully customizable multipurpose WordPress theme. Features include compatibility with many popular plugins like Elementor and other page builders, WooCommerce, WPML, LifterLMS and more. There is also full support for the new WordPress block editor. Izo is fully responsive and our users can take advantage of the many customizer options to easily change styles. Also, if you're looking for a quick start, we're offering a bunch of free starter sites, ready to easily import.","requires":false,"requires_php":"5.6","wporg":true},{"name":"OceanWP","slug":"oceanwp","version":"3.0.7","preview_url":"https://wp-themes.com/oceanwp/","author":{"user_nicename":"oceanwp","profile":"https://profiles.wordpress.org/oceanwp","avatar":"https://secure.gravatar.com/avatar/05f8d3fe2ccb6479bac14e4d40b406dd?s=96&d=monsterid&r=g","display_name":"oceanwp","author":"Nick","author_url":"https://oceanwp.org/about-me/"},"screenshot_url":"//ts.w.org/wp-content/themes/oceanwp/screenshot.png?ver=3.0.7","rating":98,"num_ratings":4966,"homepage":"https://wordpress.org/themes/oceanwp/","description":"OceanWP is the perfect theme for your project. Lightweight and highly extendable, it will enable you to create almost any type of website such a blog, portfolio, business website and WooCommerce storefront with a beautiful & professional design. Very fast, responsive, RTL & translation ready, best SEO practices, unique WooCommerce features to increase conversion and much more. You can even edit the settings on tablet & mobile so your site looks good on every device. Work with the most popular page builders as Elementor, Beaver Builder, Brizy, Visual Composer, Divi, SiteOrigin, etc... Developers will love his extensible codebase making it a joy to customize and extend. Best friend of Elementor & WooCommerce. Looking for a Multi-Purpose theme? Look no further! Check the demos to realize that it's the only theme you will ever need: https://oceanwp.org/demos/","requires":"5.3","requires_php":"7.2","wporg":true},{"name":"Twenty Twenty-One","slug":"twentytwentyone","version":"1.4","preview_url":"https://wp-themes.com/twentytwentyone/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentytwentyone/screenshot.png?ver=1.4","rating":82,"num_ratings":35,"homepage":"https://wordpress.org/themes/twentytwentyone/","description":"Twenty Twenty-One is a blank canvas for your ideas and it makes the block editor your best brush. With new block patterns, which allow you to create a beautiful layout in a matter of seconds, this theme’s soft colors and eye-catching — yet timeless — design will let your work shine. Take it for a spin! See how Twenty Twenty-One elevates your portfolio, business website, or personal blog.","requires":"5.3","requires_php":"5.6","wporg":true},{"name":"Occasio","slug":"occasio","version":"","preview_url":"https://themezee.com/themes/occasio/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/12/occasio.jpg","rating":0,"num_ratings":0,"homepage":"https://themezee.com/themes/occasio/","description":"\n\n\n

A sleek and modern Blogging & Magazine theme, carefully designed for writers using the Gutenberg Block Editor.

\n","requires":"","requires_php":"","wporg":false},{"name":"Tortuga","slug":"tortuga","version":"2.3.4","preview_url":"https://wp-themes.com/tortuga/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/tortuga/screenshot.jpg?ver=2.3.4","rating":96,"num_ratings":19,"homepage":"https://wordpress.org/themes/tortuga/","description":"Tortuga is a highly flexible and adventurous WordPress theme for your pirate magazine or any news related website. It supports three different post layouts, two sidebar schemes and a Magazine Homepage template based on widgets. Other highlights of Tortuga are the beautiful post slider and header widgets area. Arrr!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Treville","slug":"treville","version":"2.1.4","preview_url":"https://wp-themes.com/treville/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/treville/screenshot.jpg?ver=2.1.4","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/treville/","description":"An elegant Blogging & Magazine WordPress Theme with subtle colors and great typography. Treville supports two navigation menus, advanced post settings and a post slider with fullscreen images!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Wellington","slug":"wellington","version":"2.1.4","preview_url":"https://wp-themes.com/wellington/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/wellington/screenshot.jpg?ver=2.1.4","rating":100,"num_ratings":12,"homepage":"https://wordpress.org/themes/wellington/","description":"Wellington is a clean and simple Magazine WordPress theme with beautiful typography and subtle colors. The theme includes two different post layouts, a featured post slider and thoughtful theme settings in the Customizer.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Poseidon","slug":"poseidon","version":"2.3.4","preview_url":"https://wp-themes.com/poseidon/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/poseidon/screenshot.jpg?ver=2.3.4","rating":96,"num_ratings":16,"homepage":"https://wordpress.org/themes/poseidon/","description":"Poseidon is an elegant designed WordPress theme featuring a splendid fullscreen image slideshow. The clean typography and spacious white layout makes it great to share your stories. You can use the theme as simple blog or easily create a news website with the widget-based Magazine Homepage template.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Napoli","slug":"napoli","version":"2.2.4","preview_url":"https://wp-themes.com/napoli/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/napoli/screenshot.jpg?ver=2.2.4","rating":100,"num_ratings":4,"homepage":"https://wordpress.org/themes/napoli/","description":"Napoli is a beautiful WordPress theme perfectly suited for a food magazine. It features a great featured post slider, smooth typography and a grid-layout for posts. Bon appetit!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Mercia","slug":"mercia","version":"1.9.7","preview_url":"https://wp-themes.com/mercia/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/mercia/screenshot.jpg?ver=1.9.7","rating":100,"num_ratings":1,"homepage":"https://wordpress.org/themes/mercia/","description":"Mercia is a flexible and versatile theme perfect for lifestyle, travel, or fashion magazines. It features a modern and minimalist design with great typropaphy. Of course it works on all screen sizes. With multiple blog layouts and powerful Magazine widgets, you can easily create a stunning and dynamic news website in just a few minutes.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Maxwell","slug":"maxwell","version":"2.3.4","preview_url":"https://wp-themes.com/maxwell/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/maxwell/screenshot.jpg?ver=2.3.4","rating":100,"num_ratings":7,"homepage":"https://wordpress.org/themes/maxwell/","description":"Maxwell is a minimalistic and elegant WordPress theme featuring an ultra clean magazine layout. With a beautiful typography, various post layouts and a gorgeous featured posts slideshow Maxwell truly helps you to stand out.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Harrison","slug":"harrison","version":"1.3.4","preview_url":"https://wp-themes.com/harrison/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/harrison/screenshot.jpg?ver=1.3.4","rating":80,"num_ratings":1,"homepage":"https://wordpress.org/themes/harrison/","description":"Harrison is a highly versatile WordPress Theme and was specially designed for use with the new WordPress Block Editor. The theme supports the latest Gutenberg features and provides different blog layouts and extensive post settings. The clean and elegant design is perfect to create all kinds of websites. You should really try it!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Gridbox","slug":"gridbox","version":"2.3.4","preview_url":"https://wp-themes.com/gridbox/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/gridbox/screenshot.jpg?ver=2.3.4","rating":74,"num_ratings":6,"homepage":"https://wordpress.org/themes/gridbox/","description":"Gridbox is a clean and solid WordPress theme featuring a three-column grid-layout for posts. The theme works out of the box and does not require any complicated setup. It is perfectly suited for a simple magazine, blog or portfolio website.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Chronus","slug":"chronus","version":"2.0.5","preview_url":"https://wp-themes.com/chronus/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/chronus/screenshot.jpg?ver=2.0.5","rating":80,"num_ratings":5,"homepage":"https://wordpress.org/themes/chronus/","description":"Chronus is a fast and lightweight WordPress Theme created for magazines, news websites and personal blogs. The Featured Content section and flexible Magazine Widgets give you the ability to highlight your most important posts on the home page. The minimalistic and responsive design focuses on your content and looks great on any screen size.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Donovan","slug":"donovan","version":"1.8.4","preview_url":"https://wp-themes.com/donovan/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/donovan/screenshot.jpg?ver=1.8.4","rating":96,"num_ratings":16,"homepage":"https://wordpress.org/themes/donovan/","description":"Donovan is a flexible, yet easy-to-use blogging theme with a clean and modern design. It features an elegant mobile-first design, three different blog layouts and extensive post settings. Donovan is perfect for your personal blog or for any content-focused website.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Yosemite Lite","slug":"yosemite-lite","version":"1.2.1","preview_url":"https://wp-themes.com/yosemite-lite/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/yosemite-lite/screenshot.jpg?ver=1.2.1","rating":60,"num_ratings":2,"homepage":"https://wordpress.org/themes/yosemite-lite/","description":"Yosemite is a beautiful WordPress blog theme for personal blogs. Yosemite has a modern, clean and elegant look and lots of customization for bloggers. Built on the latest technology of WordPress, Yosemite is lightweight, fast and optimized for all mobile phones.","requires":false,"requires_php":false,"wporg":true},{"name":"Justread","slug":"justread","version":"1.3.0","preview_url":"https://wp-themes.com/justread/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/justread/screenshot.jpg?ver=1.3.0","rating":100,"num_ratings":5,"homepage":"https://wordpress.org/themes/justread/","description":"Justread is a clean and modern WordPress theme that focuses on reading experience. Justread has a grid layout with single column content. The theme uses system fonts and SVG for fast loading. Enjoy reading long content with comfortability.","requires":false,"requires_php":"5.6","wporg":true},{"name":"Floral Lite","slug":"floral-lite","version":"1.4","preview_url":"https://wp-themes.com/floral-lite/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/floral-lite/screenshot.jpg?ver=1.4","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/floral-lite/","description":"Floral is a beautiful WordPress blog theme for personal blogs. Floral has a modern, clean and elegant look and lots of customization for bloggers. Built on the latest technology of WordPress, Floral is lightweight, fast and optimized for all mobile phones.","requires":"4.5","requires_php":"5.6","wporg":true},{"name":"EightyDays Lite","slug":"eightydays-lite","version":"2.2.7","preview_url":"https://wp-themes.com/eightydays-lite/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"http://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/eightydays-lite/screenshot.png?ver=2.2.7","rating":90,"num_ratings":4,"homepage":"https://wordpress.org/themes/eightydays-lite/","description":"EightyDays is a beautiful WordPress travel theme for travel blogs or magazines. EightyDays has a modern, clean and elegant look and lots of customization for bloggers. Built on the latest technology of WordPress, EightyDays is lightweight, fast and optimized for all mobile phones.","requires":false,"requires_php":false,"wporg":true},{"name":"eStar","slug":"estar","version":"1.3.4","preview_url":"https://wp-themes.com/estar/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/estar/screenshot.png?ver=1.3.4","rating":100,"num_ratings":4,"homepage":"https://wordpress.org/themes/estar/","description":"eStar is a super fast, lightweight (less than 10KB on the front end), responsive and highly customizable WordPress theme suitable for blog, personal portfolio and business websites. It works perfectly with Gutenberg and all WordPress blocks. You can also pair it with any page builder plugin like Elementor, Beaver Builder, Visual Composer, SiteOrigin, Divi, Thrive Architect, Brizy and more. eStar is written from scratch with performance, extensibility, usability and SEO in mind. The theme follows best practices, well-coded and follows the latest web standards (HTML5, SVG, JavaScript). Some of the other features: microdata integration, widget areas, sidebar layouts, custom colors, custom Google fonts, translation ready. Looking for a perfect base theme? Look no further. eStar is fast, fully customizable WordPress theme that you can use for building any kind of website like business agencies, corporate, portfolio, education, university portal, consulting, church, restaurant, medical and so on. Learn more about the theme at https://gretathemes.com/wordpress-themes/estar/","requires":false,"requires_php":"5.6","wporg":true},{"name":"Stow","slug":"stow-2","version":"","preview_url":"https://wordpress.com/theme/stow","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/stow.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/stow","description":"\n\n\n

A bold and clean theme with lots of space for large images, it’s the ideal choice for creating an online presence for your business. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Shawburn","slug":"shawburn","version":"","preview_url":"https://wordpress.com/theme/shawburn","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/shawborn.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/shawburn","description":"\n\n\n

Shawburn is the ideal choice for creating an online presence for your business. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Rivington","slug":"rivington-2","version":"","preview_url":"https://wordpress.com/theme/rivington","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/rivington.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/rivington","description":"\n\n\n

Rivington was designed as a website template for realtors. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Redhill","slug":"redhill-2","version":"","preview_url":"https://wordpress.com/theme/redhill","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/redhill.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/redhill","description":"\n\n\n

Redhill is a simple theme with clean typography, created with entrepreneurs and small business owners in mind. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Morden","slug":"morden-2","version":"","preview_url":"https://wordpress.com/theme/morden","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/morden.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/morden","description":"\n\n\n

Morden is a functional and responsive multi-purpose theme that is the perfect solution for your business’s online presence. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Maywood","slug":"maywood-2","version":"","preview_url":"https://wordpress.com/theme/maywood","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/maywood.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/maywood","description":"\n\n\n

Modern, clean, sophisticated: Make your online presence as striking and stylish as your business with Maywood. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Mayland","slug":"mayland","version":"","preview_url":"https://wordpress.com/theme/mayland","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/mmayland.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/mayland","description":"\n\n\n

Mayland is a free WordPress theme. The clean, tasteful design highlights all your writing and photography projects. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Leven","slug":"leven-2","version":"","preview_url":"https://wordpress.com/theme/leven","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/leven.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/leven","description":"\n\n\n

Leven is a colorful, typography driven theme meant to grab the attention of potential customers and market or sell products to them. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Hever","slug":"hever-2","version":"","preview_url":"https://wordpress.com/theme/hever","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/hever.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/hever","description":"\n\n\n

Hever is a fun and friendly free WordPress theme that works particularly well for creative and crafty businesses. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Exford","slug":"exford-2","version":"","preview_url":"https://wordpress.com/theme/exford","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/exford.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/exford","description":"\n\n\n

A classic typography and clean design lend a sophisticated air to your website’s content. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Brompton","slug":"brompton-2","version":"","preview_url":"https://wordpress.com/theme/brompton","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/brompton.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/brompton","description":"\n\n\n

A a simple yet powerful website theme for small-business owners and entrepreneurs. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Barnsbury","slug":"barnsbury-2","version":"","preview_url":"https://wordpress.com/theme/barnsbury","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/Barnsbury.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/barnsbury","description":"\n\n\n

Barnsbury is an earthy, friendly theme made with farming and agriculture businesses in mind — but versatile enough for a personal site, too. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Balasana","slug":"balasana-2","version":"","preview_url":"https://wordpress.com/theme/balasana","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/Balasana.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/balasana","description":"\n\n\n

Balasana is a clean and minimalist business theme designed with health and wellness-focused sites in mind. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Alves","slug":"alves-2","version":"","preview_url":"https://wordpress.com/theme/alves","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/Alves.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/alves","description":"\n\n\n

Convincing design for your charity or organization’s online presence. Highlight your actions, causes and projects, Alves is versatile enough to be your personal site too. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Varia","slug":"varia-2","version":"","preview_url":"https://wordpress.com/theme/varia","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/varia.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/varia","description":"\n\n\n

A variable-based design system for WordPress sites built with Gutenberg. Parent theme of multiple AMP compatible themes.

\n","requires":"","requires_php":"","wporg":false},{"name":"Activation","slug":"activation","version":"1.2.2","preview_url":"https://wp-themes.com/activation/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/activation/screenshot.png?ver=1.2.2","rating":100,"num_ratings":1,"homepage":"https://wordpress.org/themes/activation/","description":"Activation is a Primer child theme with a colorful, fitness-focused design.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":false,"wporg":true},{"name":"Velux","slug":"velux","version":"1.1.3","preview_url":"https://wp-themes.com/velux/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/velux/screenshot.png?ver=1.1.3","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/velux/","description":"Velux is a Primer child theme with a clean, professional, and upscale design.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":"5.6.0","wporg":true},{"name":"Scribbles","slug":"scribbles","version":"1.1.2","preview_url":"https://wp-themes.com/scribbles/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/scribbles/screenshot.png?ver=1.1.2","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/scribbles/","description":"Scribbles is a Primer child theme with a playful and fun mood.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.1","requires_php":false,"wporg":true},{"name":"Ascension","slug":"ascension","version":"1.1.5","preview_url":"https://wp-themes.com/ascension/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/ascension/screenshot.png?ver=1.1.5","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/ascension/","description":"Ascension is a Primer child theme with a business-oriented design.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":"5.6.0","wporg":true},{"name":"Uptown Style","slug":"uptown-style","version":"1.1.3","preview_url":"https://wp-themes.com/uptown-style/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/uptown-style/screenshot.png?ver=1.1.3","rating":100,"num_ratings":3,"homepage":"https://wordpress.org/themes/uptown-style/","description":"Uptown Style is a Primer child theme with elegance and class.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":"5.6.0","wporg":true},{"name":"Go","slug":"go","version":"1.4.4","preview_url":"https://wp-themes.com/go/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":"GoDaddy","author_url":"https://www.godaddy.com"},"screenshot_url":"//ts.w.org/wp-content/themes/go/screenshot.png?ver=1.4.4","rating":94,"num_ratings":14,"homepage":"https://wordpress.org/themes/go/","description":"Go is an innovative, Gutenberg-first WordPress theme, hyper-focused on empowering makers to build beautifully rich websites with WordPress.","requires":false,"requires_php":"5.6","wporg":true},{"name":"Navigation Pro","slug":"navigation-pro","version":"","preview_url":"https://my.studiopress.com/themes/navigation/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/02/navigationPro.jpg","rating":0,"num_ratings":0,"homepage":"https://my.studiopress.com/themes/navigation/","description":"\n\n\n

A Genesis framework theme that cuts through the haze with bright colors, bold images and versatile layouts to steer your site to success.

\n","requires":"","requires_php":"","wporg":false},{"name":"Memory","slug":"memory","version":"2.0.1","preview_url":"https://wp-themes.com/memory/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/memory/screenshot.png?ver=2.0.1","rating":60,"num_ratings":1,"homepage":"https://wordpress.org/themes/memory/","description":"Clean and beautiful personal blog theme.","requires":"4.5","requires_php":"5.2","wporg":true},{"name":"Sacha","slug":"sacha","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/sacha9.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","description":"\n\n\n

Sacha is a Newspack child theme. You’ll find the latest version on the Newspack release page.

\n","requires":"","requires_php":"","wporg":false},{"name":"Scott","slug":"scott-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/scott.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","description":"\n\n\n

Scott is a Newspack child theme. You’ll find the latest version on the Newspack release page.

\n","requires":"","requires_php":"","wporg":false},{"name":"Katharine","slug":"katharine-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/katharine.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","description":"\n\n\n

Katharine is a Newspack child theme. You’ll find the latest version on the Newspack release page.

\n","requires":"","requires_php":"","wporg":false},{"name":"Joseph","slug":"joseph-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/joseph-1.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","description":"\n\n\n

Joseph is a Newspack child theme. You’ll find the latest version on the Newspack release page.

\n","requires":"","requires_php":"","wporg":false},{"name":"Nelson","slug":"nelson-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/nelson.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","description":"\n\n\n

Nelson is a Newspack child theme. You’ll find the latest version on the Newspack release page.

\n","requires":"","requires_php":"","wporg":false},{"name":"Newspack","slug":"newspack","version":"","preview_url":"https://github.com/Automattic/newspack-theme","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2019/11/newspack.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme","description":"\n\n\n

The Newspack theme is a forward-looking news theme designed and developed to be highly customizable with the WordPress block editor.

\n","requires":"","requires_php":"","wporg":false},{"name":"Twenty Twenty","slug":"twentytwenty","version":"1.8","preview_url":"https://wp-themes.com/twentytwenty/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentytwenty/screenshot.png?ver=1.8","rating":88,"num_ratings":60,"homepage":"https://wordpress.org/themes/twentytwenty/","description":"Our default theme for 2020 is designed to take full advantage of the flexibility of the block editor. Organizations and businesses have the ability to create dynamic landing pages with endless layouts using the group and column blocks. The centered content column and fine-tuned typography also makes it perfect for traditional blogs. Complete editor styles give you a good idea of what your content will look like, even before you publish. You can give your site a personal touch by changing the background colors and the accent color in the Customizer. The colors of all elements on your site are automatically calculated based on the colors you pick, ensuring a high, accessible color contrast for your visitors.","requires":"4.7","requires_php":"5.2.4","wporg":true},{"name":"Primer","slug":"primer","version":"1.8.9","preview_url":"https://wp-themes.com/primer/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/primer/screenshot.png?ver=1.8.9","rating":90,"num_ratings":15,"homepage":"https://wordpress.org/themes/primer/","description":"Primer is a powerful theme that brings clarity to your content in a fresh design.","requires":false,"requires_php":false,"wporg":true},{"name":"Essence Pro","slug":"essence-pro-theme","version":"","preview_url":"https://my.studiopress.com/themes/essence/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2019/07/cropped-Essence-Pro.png","rating":0,"num_ratings":0,"homepage":"https://my.studiopress.com/themes/essence/","description":"\n\n\n

Essence Pro is a beautiful, clutter-free theme for sites in the health, wellness, and lifestyle niches.

\n","requires":"","requires_php":"","wporg":false},{"name":"Genesis Framework","slug":"genesis-theme-framework","version":"","preview_url":"https://my.studiopress.com/themes/genesis/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2019/07/cropped-Genesis.png","rating":0,"num_ratings":0,"homepage":"https://my.studiopress.com/themes/genesis/","description":"\n\n\n

The Genesis Framework empowers webmasters to quickly and easily build websites with WordPress.

\n","requires":"","requires_php":"","wporg":false},{"name":"Twenty Fourteen","slug":"twentyfourteen","version":"3.2","preview_url":"https://wp-themes.com/twentyfourteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyfourteen/screenshot.png?ver=3.2","rating":88,"num_ratings":93,"homepage":"https://wordpress.org/themes/twentyfourteen/","description":"In 2014, our default theme lets you create a responsive magazine website with a sleek, modern design. Feature your favorite homepage content in either a grid or a slider. Use the three widget areas to customize your website, and change your content's layout with a full-width page template and a contributor page to show off your authors. Creating a magazine website with WordPress has never been easier.","requires":false,"requires_php":"5.2.4","wporg":true},{"name":"Twenty Thirteen","slug":"twentythirteen","version":"3.4","preview_url":"https://wp-themes.com/twentythirteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentythirteen/screenshot.png?ver=3.4","rating":82,"num_ratings":62,"homepage":"https://wordpress.org/themes/twentythirteen/","description":"The 2013 theme for WordPress takes us back to the blog, featuring a full range of post formats, each displayed beautifully in their own unique way. Design details abound, starting with a vibrant color scheme and matching header images, beautiful typography and icons, and a flexible layout that looks great on any device, big or small.","requires":"3.6","requires_php":"5.2.4","wporg":true},{"name":"Twenty Eleven","slug":"twentyeleven","version":"3.9","preview_url":"https://wp-themes.com/twentyeleven/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyeleven/screenshot.png?ver=3.9","rating":92,"num_ratings":49,"homepage":"https://wordpress.org/themes/twentyeleven/","description":"The 2011 theme for WordPress is sophisticated, lightweight, and adaptable. Make it yours with a custom menu, header image, and background -- then go further with available theme options for light or dark color scheme, custom link colors, and three layout choices. Twenty Eleven comes equipped with a Showcase page template that transforms your front page into a showcase to show off your best content, widget support galore (sidebar, three footer areas, and a Showcase page widget area), and a custom \"Ephemera\" widget to display your Aside, Link, Quote, or Status posts. Included are styles for print and for the admin editor, support for featured images (as custom header images on posts and pages and as large images on featured \"sticky\" posts), and special styles for six different post formats.","requires":false,"requires_php":"5.2.4","wporg":true},{"name":"Twenty Ten","slug":"twentyten","version":"3.5","preview_url":"https://wp-themes.com/twentyten/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyten/screenshot.png?ver=3.5","rating":94,"num_ratings":50,"homepage":"https://wordpress.org/themes/twentyten/","description":"The 2010 theme for WordPress is stylish, customizable, simple, and readable -- make it yours with a custom menu, header image, and background. Twenty Ten supports six widgetized areas (two in the sidebar, four in the footer) and featured images (thumbnails for gallery posts and custom header images for posts and pages). It includes stylesheets for print and the admin Visual Editor, special styles for posts in the \"Asides\" and \"Gallery\" categories, and has an optional one-column page template that removes the sidebar.","requires":"3.0","requires_php":"5.2.4","wporg":true},{"name":"Zakra","slug":"zakra","version":"2.0.4","preview_url":"https://wp-themes.com/zakra/","author":{"user_nicename":"themegrill","profile":"https://profiles.wordpress.org/themegrill","avatar":"https://secure.gravatar.com/avatar/fa3cda768036cc3983458ed23394a43d?s=96&d=monsterid&r=g","display_name":"ThemeGrill","author":"ThemeGrill","author_url":"https://themegrill.com"},"screenshot_url":"//ts.w.org/wp-content/themes/zakra/screenshot.jpg?ver=2.0.4","rating":100,"num_ratings":479,"homepage":"https://wordpress.org/themes/zakra/","description":"Zakra is flexible, fast, lightweight and modern multipurpose theme that comes with many starter free sites (currently 10+ free starter sites and more will be added later) that you can use to make your site beautiful and professional. Check all the starter sites at https://zakratheme.com/demos. Suitable for personal blog, portfolio, WooCommerce stores, business websites and niche-based sites (like Cafe, Spa, Charity, Yoga, Wedding, Dentist, Education etc) as well. Works with Elementor plus other major page builders so you can create any layout you want. The theme is responsive, Gutenberg compatible, SEO friendly, translation ready and major WordPress plugins compatible.","requires":false,"requires_php":"5.6","wporg":true},{"name":"Neve","slug":"neve","version":"3.0.5","preview_url":"https://wp-themes.com/neve/","author":{"user_nicename":"themeisle","profile":"https://profiles.wordpress.org/themeisle","avatar":"https://secure.gravatar.com/avatar/a0ec097eaf5f30933eb00c1175d4bd55?s=96&d=monsterid&r=g","display_name":"Themeisle","author":"ThemeIsle","author_url":"https://themeisle.com"},"screenshot_url":"//ts.w.org/wp-content/themes/neve/screenshot.png?ver=3.0.5","rating":96,"num_ratings":828,"homepage":"https://wordpress.org/themes/neve/","description":"Neve is a super fast, easily customizable, multi-purpose theme. It’s perfect for blogs, small business, startups, agencies, firms, e-commerce shops (WooCommerce storefront) as well as personal portfolio sites and most types of projects. A fully AMP optimized and responsive theme, Neve will load in mere seconds and adapt perfectly on any viewing device. While it is lightweight and has a minimalist design, the theme is highly extendable, it has a highly SEO optimized code, resulting in top rankings in Google search results. Neve works perfectly with Gutenberg and the most popular page builders (Elementor, Brizy, Beaver Builder, Visual Composer, SiteOrigin, Divi). Neve is also WooCommerce ready, responsive, RTL & translation ready. Look no further. Neve is the perfect theme for you!","requires":"5.4","requires_php":"7.0","wporg":true},{"name":"Astra","slug":"astra","version":"3.7.3","preview_url":"https://wp-themes.com/astra/","author":{"user_nicename":"brainstormforce","profile":"https://profiles.wordpress.org/brainstormforce","avatar":"https://secure.gravatar.com/avatar/9f4255d653745eaa037105cd5eab2295?s=96&d=monsterid&r=g","display_name":"Brainstorm Force","author":"Brainstorm Force","author_url":"https://wpastra.com/about/"},"screenshot_url":"//ts.w.org/wp-content/themes/astra/screenshot.jpg?ver=3.7.3","rating":98,"num_ratings":4997,"homepage":"https://wordpress.org/themes/astra/","description":"Astra is fast, fully customizable & beautiful WordPress theme suitable for blog, personal portfolio, business website and WooCommerce storefront. It is very lightweight (less than 50KB on frontend) and offers unparalleled speed. Built with SEO in mind, Astra comes with Schema.org code integrated and is Native AMP ready so search engines will love your site. It offers special features and templates so it works perfectly with all page builders like Elementor, Beaver Builder, Visual Composer, SiteOrigin, Divi, etc. Some of the other features: # WooCommerce Ready # Responsive # RTL & Translation Ready # Extendible with premium addons # Regularly updated # Designed, Developed, Maintained & Supported by Brainstorm Force. Looking for a perfect base theme? Look no further. Astra is fast, fully customizable and WooCommerce ready theme that you can use for building any kind of website!","requires":"5.3","requires_php":"5.3","wporg":true},{"name":"Twenty Twelve","slug":"twentytwelve","version":"3.5","preview_url":"https://wp-themes.com/twentytwelve/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentytwelve/screenshot.png?ver=3.5","rating":92,"num_ratings":155,"homepage":"https://wordpress.org/themes/twentytwelve/","description":"The 2012 theme for WordPress is a fully responsive theme that looks great on any device. Features include a front page template with its own widgets, an optional display font, styling for post formats on both index and single views, and an optional no-sidebar page template. Make it yours with a custom menu, header image, and background.","requires":"3.5","requires_php":"5.2.4","wporg":true},{"name":"Twenty Nineteen","slug":"twentynineteen","version":"2.1","preview_url":"https://wp-themes.com/twentynineteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentynineteen/screenshot.png?ver=2.1","rating":74,"num_ratings":59,"homepage":"https://wordpress.org/themes/twentynineteen/","description":"Our 2019 default theme is designed to show off the power of the block editor. It features custom styles for all the default blocks, and is built so that what you see in the editor looks like what you'll see on your website. Twenty Nineteen is designed to be adaptable to a wide range of websites, whether you’re running a photo blog, launching a new business, or supporting a non-profit. Featuring ample whitespace and modern sans-serif headlines paired with classic serif body text, it's built to be beautiful on all screen sizes.","requires":"4.9.6","requires_php":"5.2.4","wporg":true},{"name":"Twenty Seventeen","slug":"twentyseventeen","version":"2.8","preview_url":"https://wp-themes.com/twentyseventeen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyseventeen/screenshot.png?ver=2.8","rating":88,"num_ratings":114,"homepage":"https://wordpress.org/themes/twentyseventeen/","description":"Twenty Seventeen brings your site to life with header video and immersive featured images. With a focus on business sites, it features multiple sections on the front page as well as widgets, navigation and social menus, a logo, and more. Personalize its asymmetrical grid with a custom color scheme and showcase your multimedia content with post formats. Our default theme for 2017 works great in many languages, for any abilities, and on any device.","requires":"4.7","requires_php":"5.2.4","wporg":true},{"name":"Twenty Sixteen","slug":"twentysixteen","version":"2.5","preview_url":"https://wp-themes.com/twentysixteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentysixteen/screenshot.png?ver=2.5","rating":82,"num_ratings":79,"homepage":"https://wordpress.org/themes/twentysixteen/","description":"Twenty Sixteen is a modernized take on an ever-popular WordPress layout — the horizontal masthead with an optional right sidebar that works perfectly for blogs and websites. It has custom color options with beautiful default color schemes, a harmonious fluid grid using a mobile-first approach, and impeccable polish in every detail. Twenty Sixteen will make your WordPress look beautiful everywhere.","requires":"4.4","requires_php":"5.2.4","wporg":true},{"name":"Twenty Fifteen","slug":"twentyfifteen","version":"3.0","preview_url":"https://wp-themes.com/twentyfifteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyfifteen/screenshot.png?ver=3.0","rating":88,"num_ratings":50,"homepage":"https://wordpress.org/themes/twentyfifteen/","description":"Our 2015 default theme is clean, blog-focused, and designed for clarity. Twenty Fifteen's simple, straightforward typography is readable on a wide variety of screen sizes, and suitable for multiple languages. We designed it using a mobile-first approach, meaning your content takes center-stage, regardless of whether your visitors arrive by smartphone, tablet, laptop, or desktop computer.","requires":false,"requires_php":"5.2.4","wporg":true}] \ No newline at end of file +[{"name":"ExS","slug":"exs","version":"1.7.5","preview_url":"https://wp-themes.com/exs/","author":{"user_nicename":"exstheme","profile":"https://profiles.wordpress.org/exstheme","avatar":"https://secure.gravatar.com/avatar/1823b8571e6996048b616b6602b21358?s=96&d=monsterid&r=g","display_name":"exstheme","author":"the ExS team","author_url":"https://exsthemewp.com/about/"},"screenshot_url":"//ts.w.org/wp-content/themes/exs/screenshot.png?ver=1.7.5","rating":100,"num_ratings":4,"homepage":"https://wordpress.org/themes/exs/","description":"ExS theme is a fastest and smallest multipurpose Gutenberg compatible highly customizable theme without 3rd party dependencies. It is designed to have 100% Google Page and LightHouse speed. It has an extra small size of CSS (70kB) and JS (3kB) assets, 100% SEO optimised and valid code and it is 100% mobile friendly. It also has a WooCommerce and Easy Digital Downloads (EDD) plugin support so it will be perfect solution for your online store and e-commerce business. bbPress extended support makes ExS theme perfect for your forum. BuddyPress and Ultimate member support will help to create your social network with ExS theme. WP Job manager and Simple Job Board support will help you to create your job board. The Events Calendar advanced support will help you to create your events site. LearnPress plugin advanced support will help you to create a online courses and online school site. It has unlimited color options, headers and footers layouts, 15+ blog layouts, separate layouts for each category and many more super useful features that you can set up directly in your Customizer with live preview. ExS theme has builtin multiple page templates to perfectly work with any page builder such as Elementor, Beaver Builder, WPBackery, Brizy etc. ExS uses WordPress starter content feature so you can setup your pages immediately after WordPress and theme installation by simply going to Customizer and publish your changes. Theme Demo: https://exsthemewp.com/demo/.","requires":"5.5","requires_php":"5.6","wporg":true},{"name":"Sydney","slug":"sydney","version":"1.82","preview_url":"https://wp-themes.com/sydney/","author":{"user_nicename":"athemes","profile":"https://profiles.wordpress.org/athemes","avatar":"https://secure.gravatar.com/avatar/0fe6c4dee6e201e81783d8a0ee12d83b?s=96&d=monsterid&r=g","display_name":"athemes","author":"aThemes","author_url":"https://athemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/sydney/screenshot.png?ver=1.82","rating":98,"num_ratings":507,"homepage":"https://wordpress.org/themes/sydney/","description":"Sydney is a powerful business theme that provides a fast way for companies or freelancers to create an awesome online presence. As well as being fully compatible with Elementor, Sydney brings plenty of customization possibilities like access to all Google Fonts, full color control, layout control, logo upload, full screen slider, header image, sticky navigation and much more. Also, Sydney provides all the construction blocks you need to rapidly create an engaging front page. Looking for a quick start with Sydney? With just a few clicks, you can import one of our existing demos (https://athemes.com/sydney-demos/)","requires":false,"requires_php":"5.6","wporg":true},{"name":"Really Simple","slug":"really-simple","version":"1.0.7","preview_url":"https://wp-themes.com/really-simple/","author":{"user_nicename":"flauberthenriques","profile":"https://profiles.wordpress.org/flauberthenriques","avatar":"https://secure.gravatar.com/avatar/d524eb0811fa44be90481509b000c779?s=96&d=monsterid&r=g","display_name":"Flaubert Henriques","author":"Flaubert Henriques","author_url":"https://profiles.wordpress.org/flauberthenriques/"},"screenshot_url":"//ts.w.org/wp-content/themes/really-simple/screenshot.png?ver=1.0.7","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/really-simple/","description":"Really Simple is a theme for bloggers and writers who need a ultra light and fast theme. The theme focuses on simplicity and loading speed. Yes, Really Simple Theme is also fully AMP compatible. Check the readme.txt file and leave the sidebar perfect after WordPress 5.8 update.","requires":"5.3","requires_php":"7.0","wporg":true},{"name":"Artpop","slug":"artpop","version":"1.0.8","preview_url":"https://wp-themes.com/artpop/","author":{"user_nicename":"designlabthemes","profile":"https://profiles.wordpress.org/designlabthemes","avatar":"https://secure.gravatar.com/avatar/956873f77232371cb89d8a0d7a516354?s=96&d=monsterid&r=g","display_name":"designlabthemes","author":"Design Lab","author_url":"https://www.designlabthemes.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/artpop/screenshot.png?ver=1.0.8","rating":100,"num_ratings":1,"homepage":"https://wordpress.org/themes/artpop/","description":"Artpop is a beautiful Gutenberg-first WordPress theme, carefully designed to help you build your online brand. Unleash your creativity, Artpop takes care of the rest! Well documented and easy to use even for WordPress beginners, Artpop is perfect for a blog, personal portfolio, small business website, and WooCommerce storefront. Easily set your logo, change colors, and create awesome layouts to give your website a truly unique look.","requires":"4.7","requires_php":"5.6","wporg":true},{"name":"Michelle","slug":"michelle","version":"1.2.0","preview_url":"https://wp-themes.com/michelle/","author":{"user_nicename":"webmandesign","profile":"https://profiles.wordpress.org/webmandesign","avatar":"https://secure.gravatar.com/avatar/f4a334f9f5af61b2bd22fcaadb04dd06?s=96&d=monsterid&r=g","display_name":"WebMan Design | Oliver Juhas","author":"WebMan Design","author_url":"https://www.webmandesign.eu/"},"screenshot_url":"//ts.w.org/wp-content/themes/michelle/screenshot.png?ver=1.2.0","rating":100,"num_ratings":3,"homepage":"https://wordpress.org/themes/michelle/","description":"Michelle is accessibility ready WordPress theme for creating inclusive websites easily and with fun using block editor. Useful block patterns, block styles, templates and featured posts functionality allow you to build an eyecatching website in no time. Customize site footer and error 404 page content with block editor! The theme also works with Beaver Builder, Elementor, or any other page builder. It also supports theme builders! Michelle elevates your business, eCommerce, portfolio, or blog website. Check out the demo at https://themedemos.webmandesign.eu/michelle/ and documentation at https://webmandesign.github.io/docs/michelle/","requires":"5.5","requires_php":"7.0","wporg":true},{"name":"Miniva","slug":"miniva","version":"1.6.3","preview_url":"https://wp-themes.com/miniva/","author":{"user_nicename":"tajam","profile":"https://profiles.wordpress.org/tajam","avatar":"https://secure.gravatar.com/avatar/378d4e715829ccf6f1fbe6dfef6eb539?s=96&d=monsterid&r=g","display_name":"Tajam","author":"Tajam","author_url":"https://tajam.id/"},"screenshot_url":"//ts.w.org/wp-content/themes/miniva/screenshot.png?ver=1.6.3","rating":100,"num_ratings":6,"homepage":"https://wordpress.org/themes/miniva/","description":"A fast, lightweight, and mobile-friendly WordPress theme for bloggers. Miniva is built with simplicity, accessibility and performance in mind. The clean and minimal design helps readers focus on your content. It supports AMP and several Jetpack modules including featured content, infinite scroll, content options and social menu. See the theme demo at https://tajam.id/miniva-demo/","requires":"4.5","requires_php":"5.3","wporg":true},{"name":"Iknow","slug":"iknow","version":"1.2.6","preview_url":"https://wp-themes.com/iknow/","author":{"user_nicename":"wpcalc","profile":"https://profiles.wordpress.org/wpcalc","avatar":"https://secure.gravatar.com/avatar/64ca4933fab3d5e50383f0b514acd5f6?s=96&d=monsterid&r=g","display_name":"Wow-Company","author":"Wow-Company","author_url":"https://wow-company.com"},"screenshot_url":"//ts.w.org/wp-content/themes/iknow/screenshot.png?ver=1.2.6","rating":98,"num_ratings":9,"homepage":"https://wordpress.org/themes/iknow/","description":"Iknow WordPress Theme has a minimalistic, responsive and mobile-friendly design. Easy and fast theme. The theme is perfect for creating Knowledge Base, Helpdesk, Wiki and FAQ websites. Ability to set custom icons for each category and tag. Manage the display of categories on the main page of the site. The integrated post rating system VoteUp/VoteDown. Breadcrumbs for easy site navigation. Custom widget to display the current navigation in a category and in a separate post. You can view the appearance and features of the theme on the site https://wow-company.com/wp-theme-iknow/. Documentation https://wow-company.com/faq/category/wow-themes/iknow/","requires":false,"requires_php":"5.6","wporg":true},{"name":"Kadence","slug":"kadence","version":"1.1.6","preview_url":"https://wp-themes.com/kadence/","author":{"user_nicename":"britner","profile":"https://profiles.wordpress.org/britner","avatar":"https://secure.gravatar.com/avatar/3276133b8df529e6e1e58586ab1a309e?s=96&d=monsterid&r=g","display_name":"Ben Ritner - Kadence WP","author":"Kadence WP","author_url":"https://www.kadencewp.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/kadence/screenshot.png?ver=1.1.6","rating":98,"num_ratings":142,"homepage":"https://wordpress.org/themes/kadence/","description":"Kadence Theme is a lightweight yet full featured WordPress theme for creating beautiful fast loading and accessible websites, easier than ever. It features an easy to use drag and drop header and footer builder to build any type of header in minutes. It features a full library of gorgeous starter templates that are easy to modify with our intelligent global font and color controls. With extensive integration with the most popular 3rd party plugins, you can quickly build impressive ecommerce websites, course websites, business websites, and more.","requires":"5.0","requires_php":"7.0","wporg":true},{"name":"Izo","slug":"izo","version":"1.0.12","preview_url":"https://wp-themes.com/izo/","author":{"user_nicename":"elfwp","profile":"https://profiles.wordpress.org/elfwp","avatar":"https://secure.gravatar.com/avatar/1cfedf4555fea4d8fbba2947635586ea?s=96&d=monsterid&r=g","display_name":"elfwp","author":"elfWP","author_url":"https://elfwp.com"},"screenshot_url":"//ts.w.org/wp-content/themes/izo/screenshot.png?ver=1.0.12","rating":90,"num_ratings":2,"homepage":"https://wordpress.org/themes/izo/","description":"Izo a fast, lightweight, native AMP and fully customizable multipurpose WordPress theme. Features include compatibility with many popular plugins like Elementor and other page builders, WooCommerce, WPML, LifterLMS and more. There is also full support for the new WordPress block editor. Izo is fully responsive and our users can take advantage of the many customizer options to easily change styles. Also, if you're looking for a quick start, we're offering a bunch of free starter sites, ready to easily import.","requires":false,"requires_php":"5.6","wporg":true},{"name":"OceanWP","slug":"oceanwp","version":"3.0.7","preview_url":"https://wp-themes.com/oceanwp/","author":{"user_nicename":"oceanwp","profile":"https://profiles.wordpress.org/oceanwp","avatar":"https://secure.gravatar.com/avatar/05f8d3fe2ccb6479bac14e4d40b406dd?s=96&d=monsterid&r=g","display_name":"oceanwp","author":"Nick","author_url":"https://oceanwp.org/about-me/"},"screenshot_url":"//ts.w.org/wp-content/themes/oceanwp/screenshot.png?ver=3.0.7","rating":98,"num_ratings":4970,"homepage":"https://wordpress.org/themes/oceanwp/","description":"OceanWP is the perfect theme for your project. Lightweight and highly extendable, it will enable you to create almost any type of website such a blog, portfolio, business website and WooCommerce storefront with a beautiful & professional design. Very fast, responsive, RTL & translation ready, best SEO practices, unique WooCommerce features to increase conversion and much more. You can even edit the settings on tablet & mobile so your site looks good on every device. Work with the most popular page builders as Elementor, Beaver Builder, Brizy, Visual Composer, Divi, SiteOrigin, etc... Developers will love his extensible codebase making it a joy to customize and extend. Best friend of Elementor & WooCommerce. Looking for a Multi-Purpose theme? Look no further! Check the demos to realize that it's the only theme you will ever need: https://oceanwp.org/demos/","requires":"5.3","requires_php":"7.2","wporg":true},{"name":"Twenty Twenty-One","slug":"twentytwentyone","version":"1.4","preview_url":"https://wp-themes.com/twentytwentyone/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentytwentyone/screenshot.png?ver=1.4","rating":82,"num_ratings":35,"homepage":"https://wordpress.org/themes/twentytwentyone/","description":"Twenty Twenty-One is a blank canvas for your ideas and it makes the block editor your best brush. With new block patterns, which allow you to create a beautiful layout in a matter of seconds, this theme’s soft colors and eye-catching — yet timeless — design will let your work shine. Take it for a spin! See how Twenty Twenty-One elevates your portfolio, business website, or personal blog.","requires":"5.3","requires_php":"5.6","wporg":true},{"name":"Occasio","slug":"occasio","version":"","preview_url":"https://themezee.com/themes/occasio/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/12/occasio.jpg","rating":0,"num_ratings":0,"homepage":"https://themezee.com/themes/occasio/","description":"\n\n\n

A sleek and modern Blogging & Magazine theme, carefully designed for writers using the Gutenberg Block Editor.

\n","requires":"","requires_php":"","wporg":false},{"name":"Tortuga","slug":"tortuga","version":"2.3.4","preview_url":"https://wp-themes.com/tortuga/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/tortuga/screenshot.jpg?ver=2.3.4","rating":96,"num_ratings":19,"homepage":"https://wordpress.org/themes/tortuga/","description":"Tortuga is a highly flexible and adventurous WordPress theme for your pirate magazine or any news related website. It supports three different post layouts, two sidebar schemes and a Magazine Homepage template based on widgets. Other highlights of Tortuga are the beautiful post slider and header widgets area. Arrr!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Treville","slug":"treville","version":"2.1.4","preview_url":"https://wp-themes.com/treville/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/treville/screenshot.jpg?ver=2.1.4","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/treville/","description":"An elegant Blogging & Magazine WordPress Theme with subtle colors and great typography. Treville supports two navigation menus, advanced post settings and a post slider with fullscreen images!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Wellington","slug":"wellington","version":"2.1.4","preview_url":"https://wp-themes.com/wellington/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/wellington/screenshot.jpg?ver=2.1.4","rating":100,"num_ratings":12,"homepage":"https://wordpress.org/themes/wellington/","description":"Wellington is a clean and simple Magazine WordPress theme with beautiful typography and subtle colors. The theme includes two different post layouts, a featured post slider and thoughtful theme settings in the Customizer.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Poseidon","slug":"poseidon","version":"2.3.4","preview_url":"https://wp-themes.com/poseidon/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/poseidon/screenshot.jpg?ver=2.3.4","rating":96,"num_ratings":16,"homepage":"https://wordpress.org/themes/poseidon/","description":"Poseidon is an elegant designed WordPress theme featuring a splendid fullscreen image slideshow. The clean typography and spacious white layout makes it great to share your stories. You can use the theme as simple blog or easily create a news website with the widget-based Magazine Homepage template.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Napoli","slug":"napoli","version":"2.2.4","preview_url":"https://wp-themes.com/napoli/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/napoli/screenshot.jpg?ver=2.2.4","rating":100,"num_ratings":4,"homepage":"https://wordpress.org/themes/napoli/","description":"Napoli is a beautiful WordPress theme perfectly suited for a food magazine. It features a great featured post slider, smooth typography and a grid-layout for posts. Bon appetit!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Mercia","slug":"mercia","version":"1.9.7","preview_url":"https://wp-themes.com/mercia/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/mercia/screenshot.jpg?ver=1.9.7","rating":100,"num_ratings":1,"homepage":"https://wordpress.org/themes/mercia/","description":"Mercia is a flexible and versatile theme perfect for lifestyle, travel, or fashion magazines. It features a modern and minimalist design with great typropaphy. Of course it works on all screen sizes. With multiple blog layouts and powerful Magazine widgets, you can easily create a stunning and dynamic news website in just a few minutes.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Maxwell","slug":"maxwell","version":"2.3.4","preview_url":"https://wp-themes.com/maxwell/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/maxwell/screenshot.jpg?ver=2.3.4","rating":100,"num_ratings":7,"homepage":"https://wordpress.org/themes/maxwell/","description":"Maxwell is a minimalistic and elegant WordPress theme featuring an ultra clean magazine layout. With a beautiful typography, various post layouts and a gorgeous featured posts slideshow Maxwell truly helps you to stand out.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Harrison","slug":"harrison","version":"1.3.4","preview_url":"https://wp-themes.com/harrison/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/harrison/screenshot.jpg?ver=1.3.4","rating":80,"num_ratings":1,"homepage":"https://wordpress.org/themes/harrison/","description":"Harrison is a highly versatile WordPress Theme and was specially designed for use with the new WordPress Block Editor. The theme supports the latest Gutenberg features and provides different blog layouts and extensive post settings. The clean and elegant design is perfect to create all kinds of websites. You should really try it!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Gridbox","slug":"gridbox","version":"2.3.4","preview_url":"https://wp-themes.com/gridbox/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/gridbox/screenshot.jpg?ver=2.3.4","rating":74,"num_ratings":6,"homepage":"https://wordpress.org/themes/gridbox/","description":"Gridbox is a clean and solid WordPress theme featuring a three-column grid-layout for posts. The theme works out of the box and does not require any complicated setup. It is perfectly suited for a simple magazine, blog or portfolio website.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Chronus","slug":"chronus","version":"2.0.5","preview_url":"https://wp-themes.com/chronus/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/chronus/screenshot.jpg?ver=2.0.5","rating":80,"num_ratings":5,"homepage":"https://wordpress.org/themes/chronus/","description":"Chronus is a fast and lightweight WordPress Theme created for magazines, news websites and personal blogs. The Featured Content section and flexible Magazine Widgets give you the ability to highlight your most important posts on the home page. The minimalistic and responsive design focuses on your content and looks great on any screen size.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Donovan","slug":"donovan","version":"1.8.4","preview_url":"https://wp-themes.com/donovan/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/donovan/screenshot.jpg?ver=1.8.4","rating":96,"num_ratings":16,"homepage":"https://wordpress.org/themes/donovan/","description":"Donovan is a flexible, yet easy-to-use blogging theme with a clean and modern design. It features an elegant mobile-first design, three different blog layouts and extensive post settings. Donovan is perfect for your personal blog or for any content-focused website.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Yosemite Lite","slug":"yosemite-lite","version":"1.2.1","preview_url":"https://wp-themes.com/yosemite-lite/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/yosemite-lite/screenshot.jpg?ver=1.2.1","rating":60,"num_ratings":2,"homepage":"https://wordpress.org/themes/yosemite-lite/","description":"Yosemite is a beautiful WordPress blog theme for personal blogs. Yosemite has a modern, clean and elegant look and lots of customization for bloggers. Built on the latest technology of WordPress, Yosemite is lightweight, fast and optimized for all mobile phones.","requires":false,"requires_php":false,"wporg":true},{"name":"Justread","slug":"justread","version":"1.3.0","preview_url":"https://wp-themes.com/justread/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/justread/screenshot.jpg?ver=1.3.0","rating":100,"num_ratings":5,"homepage":"https://wordpress.org/themes/justread/","description":"Justread is a clean and modern WordPress theme that focuses on reading experience. Justread has a grid layout with single column content. The theme uses system fonts and SVG for fast loading. Enjoy reading long content with comfortability.","requires":false,"requires_php":"5.6","wporg":true},{"name":"Floral Lite","slug":"floral-lite","version":"1.4","preview_url":"https://wp-themes.com/floral-lite/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/floral-lite/screenshot.jpg?ver=1.4","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/floral-lite/","description":"Floral is a beautiful WordPress blog theme for personal blogs. Floral has a modern, clean and elegant look and lots of customization for bloggers. Built on the latest technology of WordPress, Floral is lightweight, fast and optimized for all mobile phones.","requires":"4.5","requires_php":"5.6","wporg":true},{"name":"EightyDays Lite","slug":"eightydays-lite","version":"2.2.7","preview_url":"https://wp-themes.com/eightydays-lite/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"http://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/eightydays-lite/screenshot.png?ver=2.2.7","rating":90,"num_ratings":4,"homepage":"https://wordpress.org/themes/eightydays-lite/","description":"EightyDays is a beautiful WordPress travel theme for travel blogs or magazines. EightyDays has a modern, clean and elegant look and lots of customization for bloggers. Built on the latest technology of WordPress, EightyDays is lightweight, fast and optimized for all mobile phones.","requires":false,"requires_php":false,"wporg":true},{"name":"eStar","slug":"estar","version":"1.3.4","preview_url":"https://wp-themes.com/estar/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/estar/screenshot.png?ver=1.3.4","rating":100,"num_ratings":4,"homepage":"https://wordpress.org/themes/estar/","description":"eStar is a super fast, lightweight (less than 10KB on the front end), responsive and highly customizable WordPress theme suitable for blog, personal portfolio and business websites. It works perfectly with Gutenberg and all WordPress blocks. You can also pair it with any page builder plugin like Elementor, Beaver Builder, Visual Composer, SiteOrigin, Divi, Thrive Architect, Brizy and more. eStar is written from scratch with performance, extensibility, usability and SEO in mind. The theme follows best practices, well-coded and follows the latest web standards (HTML5, SVG, JavaScript). Some of the other features: microdata integration, widget areas, sidebar layouts, custom colors, custom Google fonts, translation ready. Looking for a perfect base theme? Look no further. eStar is fast, fully customizable WordPress theme that you can use for building any kind of website like business agencies, corporate, portfolio, education, university portal, consulting, church, restaurant, medical and so on. Learn more about the theme at https://gretathemes.com/wordpress-themes/estar/","requires":false,"requires_php":"5.6","wporg":true},{"name":"Stow","slug":"stow-2","version":"","preview_url":"https://wordpress.com/theme/stow","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/stow.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/stow","description":"\n\n\n

A bold and clean theme with lots of space for large images, it’s the ideal choice for creating an online presence for your business. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Shawburn","slug":"shawburn","version":"","preview_url":"https://wordpress.com/theme/shawburn","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/shawborn.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/shawburn","description":"\n\n\n

Shawburn is the ideal choice for creating an online presence for your business. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Rivington","slug":"rivington-2","version":"","preview_url":"https://wordpress.com/theme/rivington","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/rivington.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/rivington","description":"\n\n\n

Rivington was designed as a website template for realtors. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Redhill","slug":"redhill-2","version":"","preview_url":"https://wordpress.com/theme/redhill","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/redhill.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/redhill","description":"\n\n\n

Redhill is a simple theme with clean typography, created with entrepreneurs and small business owners in mind. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Morden","slug":"morden-2","version":"","preview_url":"https://wordpress.com/theme/morden","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/morden.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/morden","description":"\n\n\n

Morden is a functional and responsive multi-purpose theme that is the perfect solution for your business’s online presence. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Maywood","slug":"maywood-2","version":"","preview_url":"https://wordpress.com/theme/maywood","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/maywood.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/maywood","description":"\n\n\n

Modern, clean, sophisticated: Make your online presence as striking and stylish as your business with Maywood. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Mayland","slug":"mayland","version":"","preview_url":"https://wordpress.com/theme/mayland","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/mmayland.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/mayland","description":"\n\n\n

Mayland is a free WordPress theme. The clean, tasteful design highlights all your writing and photography projects. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Leven","slug":"leven-2","version":"","preview_url":"https://wordpress.com/theme/leven","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/leven.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/leven","description":"\n\n\n

Leven is a colorful, typography driven theme meant to grab the attention of potential customers and market or sell products to them. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Hever","slug":"hever-2","version":"","preview_url":"https://wordpress.com/theme/hever","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/hever.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/hever","description":"\n\n\n

Hever is a fun and friendly free WordPress theme that works particularly well for creative and crafty businesses. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Exford","slug":"exford-2","version":"","preview_url":"https://wordpress.com/theme/exford","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/exford.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/exford","description":"\n\n\n

A classic typography and clean design lend a sophisticated air to your website’s content. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Brompton","slug":"brompton-2","version":"","preview_url":"https://wordpress.com/theme/brompton","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/brompton.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/brompton","description":"\n\n\n

A a simple yet powerful website theme for small-business owners and entrepreneurs. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Barnsbury","slug":"barnsbury-2","version":"","preview_url":"https://wordpress.com/theme/barnsbury","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/Barnsbury.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/barnsbury","description":"\n\n\n

Barnsbury is an earthy, friendly theme made with farming and agriculture businesses in mind — but versatile enough for a personal site, too. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Balasana","slug":"balasana-2","version":"","preview_url":"https://wordpress.com/theme/balasana","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/Balasana.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/balasana","description":"\n\n\n

Balasana is a clean and minimalist business theme designed with health and wellness-focused sites in mind. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Alves","slug":"alves-2","version":"","preview_url":"https://wordpress.com/theme/alves","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/Alves.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/alves","description":"\n\n\n

Convincing design for your charity or organization’s online presence. Highlight your actions, causes and projects, Alves is versatile enough to be your personal site too. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Varia","slug":"varia-2","version":"","preview_url":"https://wordpress.com/theme/varia","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/varia.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/varia","description":"\n\n\n

A variable-based design system for WordPress sites built with Gutenberg. Parent theme of multiple AMP compatible themes.

\n","requires":"","requires_php":"","wporg":false},{"name":"Activation","slug":"activation","version":"1.2.2","preview_url":"https://wp-themes.com/activation/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/activation/screenshot.png?ver=1.2.2","rating":100,"num_ratings":1,"homepage":"https://wordpress.org/themes/activation/","description":"Activation is a Primer child theme with a colorful, fitness-focused design.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":false,"wporg":true},{"name":"Velux","slug":"velux","version":"1.1.3","preview_url":"https://wp-themes.com/velux/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/velux/screenshot.png?ver=1.1.3","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/velux/","description":"Velux is a Primer child theme with a clean, professional, and upscale design.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":"5.6.0","wporg":true},{"name":"Scribbles","slug":"scribbles","version":"1.1.2","preview_url":"https://wp-themes.com/scribbles/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/scribbles/screenshot.png?ver=1.1.2","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/scribbles/","description":"Scribbles is a Primer child theme with a playful and fun mood.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.1","requires_php":false,"wporg":true},{"name":"Ascension","slug":"ascension","version":"1.1.5","preview_url":"https://wp-themes.com/ascension/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/ascension/screenshot.png?ver=1.1.5","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/ascension/","description":"Ascension is a Primer child theme with a business-oriented design.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":"5.6.0","wporg":true},{"name":"Uptown Style","slug":"uptown-style","version":"1.1.3","preview_url":"https://wp-themes.com/uptown-style/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/uptown-style/screenshot.png?ver=1.1.3","rating":100,"num_ratings":3,"homepage":"https://wordpress.org/themes/uptown-style/","description":"Uptown Style is a Primer child theme with elegance and class.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":"5.6.0","wporg":true},{"name":"Go","slug":"go","version":"1.4.4","preview_url":"https://wp-themes.com/go/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":"GoDaddy","author_url":"https://www.godaddy.com"},"screenshot_url":"//ts.w.org/wp-content/themes/go/screenshot.png?ver=1.4.4","rating":94,"num_ratings":14,"homepage":"https://wordpress.org/themes/go/","description":"Go is an innovative, Gutenberg-first WordPress theme, hyper-focused on empowering makers to build beautifully rich websites with WordPress.","requires":false,"requires_php":"5.6","wporg":true},{"name":"Navigation Pro","slug":"navigation-pro","version":"","preview_url":"https://my.studiopress.com/themes/navigation/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/02/navigationPro.jpg","rating":0,"num_ratings":0,"homepage":"https://my.studiopress.com/themes/navigation/","description":"\n\n\n

A Genesis framework theme that cuts through the haze with bright colors, bold images and versatile layouts to steer your site to success.

\n","requires":"","requires_php":"","wporg":false},{"name":"Memory","slug":"memory","version":"2.0.1","preview_url":"https://wp-themes.com/memory/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/memory/screenshot.png?ver=2.0.1","rating":60,"num_ratings":1,"homepage":"https://wordpress.org/themes/memory/","description":"Clean and beautiful personal blog theme.","requires":"4.5","requires_php":"5.2","wporg":true},{"name":"Sacha","slug":"sacha","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/sacha9.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","description":"\n\n\n

Sacha is a Newspack child theme. You’ll find the latest version on the Newspack release page.

\n","requires":"","requires_php":"","wporg":false},{"name":"Scott","slug":"scott-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/scott.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","description":"\n\n\n

Scott is a Newspack child theme. You’ll find the latest version on the Newspack release page.

\n","requires":"","requires_php":"","wporg":false},{"name":"Katharine","slug":"katharine-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/katharine.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","description":"\n\n\n

Katharine is a Newspack child theme. You’ll find the latest version on the Newspack release page.

\n","requires":"","requires_php":"","wporg":false},{"name":"Joseph","slug":"joseph-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/joseph-1.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","description":"\n\n\n

Joseph is a Newspack child theme. You’ll find the latest version on the Newspack release page.

\n","requires":"","requires_php":"","wporg":false},{"name":"Nelson","slug":"nelson-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/nelson.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","description":"\n\n\n

Nelson is a Newspack child theme. You’ll find the latest version on the Newspack release page.

\n","requires":"","requires_php":"","wporg":false},{"name":"Newspack","slug":"newspack","version":"","preview_url":"https://github.com/Automattic/newspack-theme","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2019/11/newspack.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme","description":"\n\n\n

The Newspack theme is a forward-looking news theme designed and developed to be highly customizable with the WordPress block editor.

\n","requires":"","requires_php":"","wporg":false},{"name":"Twenty Twenty","slug":"twentytwenty","version":"1.8","preview_url":"https://wp-themes.com/twentytwenty/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentytwenty/screenshot.png?ver=1.8","rating":88,"num_ratings":61,"homepage":"https://wordpress.org/themes/twentytwenty/","description":"Our default theme for 2020 is designed to take full advantage of the flexibility of the block editor. Organizations and businesses have the ability to create dynamic landing pages with endless layouts using the group and column blocks. The centered content column and fine-tuned typography also makes it perfect for traditional blogs. Complete editor styles give you a good idea of what your content will look like, even before you publish. You can give your site a personal touch by changing the background colors and the accent color in the Customizer. The colors of all elements on your site are automatically calculated based on the colors you pick, ensuring a high, accessible color contrast for your visitors.","requires":"4.7","requires_php":"5.2.4","wporg":true},{"name":"Primer","slug":"primer","version":"1.8.9","preview_url":"https://wp-themes.com/primer/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/primer/screenshot.png?ver=1.8.9","rating":90,"num_ratings":15,"homepage":"https://wordpress.org/themes/primer/","description":"Primer is a powerful theme that brings clarity to your content in a fresh design.","requires":false,"requires_php":false,"wporg":true},{"name":"Essence Pro","slug":"essence-pro-theme","version":"","preview_url":"https://my.studiopress.com/themes/essence/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2019/07/cropped-Essence-Pro.png","rating":0,"num_ratings":0,"homepage":"https://my.studiopress.com/themes/essence/","description":"\n\n\n

Essence Pro is a beautiful, clutter-free theme for sites in the health, wellness, and lifestyle niches.

\n","requires":"","requires_php":"","wporg":false},{"name":"Genesis Framework","slug":"genesis-theme-framework","version":"","preview_url":"https://my.studiopress.com/themes/genesis/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2019/07/cropped-Genesis.png","rating":0,"num_ratings":0,"homepage":"https://my.studiopress.com/themes/genesis/","description":"\n\n\n

The Genesis Framework empowers webmasters to quickly and easily build websites with WordPress.

\n","requires":"","requires_php":"","wporg":false},{"name":"Twenty Fourteen","slug":"twentyfourteen","version":"3.2","preview_url":"https://wp-themes.com/twentyfourteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyfourteen/screenshot.png?ver=3.2","rating":88,"num_ratings":93,"homepage":"https://wordpress.org/themes/twentyfourteen/","description":"In 2014, our default theme lets you create a responsive magazine website with a sleek, modern design. Feature your favorite homepage content in either a grid or a slider. Use the three widget areas to customize your website, and change your content's layout with a full-width page template and a contributor page to show off your authors. Creating a magazine website with WordPress has never been easier.","requires":false,"requires_php":"5.2.4","wporg":true},{"name":"Twenty Thirteen","slug":"twentythirteen","version":"3.4","preview_url":"https://wp-themes.com/twentythirteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentythirteen/screenshot.png?ver=3.4","rating":82,"num_ratings":62,"homepage":"https://wordpress.org/themes/twentythirteen/","description":"The 2013 theme for WordPress takes us back to the blog, featuring a full range of post formats, each displayed beautifully in their own unique way. Design details abound, starting with a vibrant color scheme and matching header images, beautiful typography and icons, and a flexible layout that looks great on any device, big or small.","requires":"3.6","requires_php":"5.2.4","wporg":true},{"name":"Twenty Eleven","slug":"twentyeleven","version":"3.9","preview_url":"https://wp-themes.com/twentyeleven/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyeleven/screenshot.png?ver=3.9","rating":92,"num_ratings":49,"homepage":"https://wordpress.org/themes/twentyeleven/","description":"The 2011 theme for WordPress is sophisticated, lightweight, and adaptable. Make it yours with a custom menu, header image, and background -- then go further with available theme options for light or dark color scheme, custom link colors, and three layout choices. Twenty Eleven comes equipped with a Showcase page template that transforms your front page into a showcase to show off your best content, widget support galore (sidebar, three footer areas, and a Showcase page widget area), and a custom \"Ephemera\" widget to display your Aside, Link, Quote, or Status posts. Included are styles for print and for the admin editor, support for featured images (as custom header images on posts and pages and as large images on featured \"sticky\" posts), and special styles for six different post formats.","requires":false,"requires_php":"5.2.4","wporg":true},{"name":"Twenty Ten","slug":"twentyten","version":"3.5","preview_url":"https://wp-themes.com/twentyten/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyten/screenshot.png?ver=3.5","rating":94,"num_ratings":50,"homepage":"https://wordpress.org/themes/twentyten/","description":"The 2010 theme for WordPress is stylish, customizable, simple, and readable -- make it yours with a custom menu, header image, and background. Twenty Ten supports six widgetized areas (two in the sidebar, four in the footer) and featured images (thumbnails for gallery posts and custom header images for posts and pages). It includes stylesheets for print and the admin Visual Editor, special styles for posts in the \"Asides\" and \"Gallery\" categories, and has an optional one-column page template that removes the sidebar.","requires":"3.0","requires_php":"5.2.4","wporg":true},{"name":"Zakra","slug":"zakra","version":"2.0.5","preview_url":"https://wp-themes.com/zakra/","author":{"user_nicename":"themegrill","profile":"https://profiles.wordpress.org/themegrill","avatar":"https://secure.gravatar.com/avatar/fa3cda768036cc3983458ed23394a43d?s=96&d=monsterid&r=g","display_name":"ThemeGrill","author":"ThemeGrill","author_url":"https://themegrill.com"},"screenshot_url":"//ts.w.org/wp-content/themes/zakra/screenshot.jpg?ver=2.0.5","rating":100,"num_ratings":482,"homepage":"https://wordpress.org/themes/zakra/","description":"Zakra is flexible, fast, lightweight and modern multipurpose theme that comes with many starter free sites (currently 10+ free starter sites and more will be added later) that you can use to make your site beautiful and professional. Check all the starter sites at https://zakratheme.com/demos. Suitable for personal blog, portfolio, WooCommerce stores, business websites and niche-based sites (like Cafe, Spa, Charity, Yoga, Wedding, Dentist, Education etc) as well. Works with Elementor plus other major page builders so you can create any layout you want. The theme is responsive, Gutenberg compatible, SEO friendly, translation ready and major WordPress plugins compatible.","requires":false,"requires_php":"5.6","wporg":true},{"name":"Neve","slug":"neve","version":"3.0.6","preview_url":"https://wp-themes.com/neve/","author":{"user_nicename":"themeisle","profile":"https://profiles.wordpress.org/themeisle","avatar":"https://secure.gravatar.com/avatar/a0ec097eaf5f30933eb00c1175d4bd55?s=96&d=monsterid&r=g","display_name":"Themeisle","author":"ThemeIsle","author_url":"https://themeisle.com"},"screenshot_url":"//ts.w.org/wp-content/themes/neve/screenshot.png?ver=3.0.6","rating":96,"num_ratings":830,"homepage":"https://wordpress.org/themes/neve/","description":"Neve is a super fast, easily customizable, multi-purpose theme. It’s perfect for blogs, small business, startups, agencies, firms, e-commerce shops (WooCommerce storefront) as well as personal portfolio sites and most types of projects. A fully AMP optimized and responsive theme, Neve will load in mere seconds and adapt perfectly on any viewing device. While it is lightweight and has a minimalist design, the theme is highly extendable, it has a highly SEO optimized code, resulting in top rankings in Google search results. Neve works perfectly with Gutenberg and the most popular page builders (Elementor, Brizy, Beaver Builder, Visual Composer, SiteOrigin, Divi). Neve is also WooCommerce ready, responsive, RTL & translation ready. Look no further. Neve is the perfect theme for you!","requires":"5.4","requires_php":"7.0","wporg":true},{"name":"Astra","slug":"astra","version":"3.7.3","preview_url":"https://wp-themes.com/astra/","author":{"user_nicename":"brainstormforce","profile":"https://profiles.wordpress.org/brainstormforce","avatar":"https://secure.gravatar.com/avatar/9f4255d653745eaa037105cd5eab2295?s=96&d=monsterid&r=g","display_name":"Brainstorm Force","author":"Brainstorm Force","author_url":"https://wpastra.com/about/"},"screenshot_url":"//ts.w.org/wp-content/themes/astra/screenshot.jpg?ver=3.7.3","rating":98,"num_ratings":5000,"homepage":"https://wordpress.org/themes/astra/","description":"Astra is fast, fully customizable & beautiful WordPress theme suitable for blog, personal portfolio, business website and WooCommerce storefront. It is very lightweight (less than 50KB on frontend) and offers unparalleled speed. Built with SEO in mind, Astra comes with Schema.org code integrated and is Native AMP ready so search engines will love your site. It offers special features and templates so it works perfectly with all page builders like Elementor, Beaver Builder, Visual Composer, SiteOrigin, Divi, etc. Some of the other features: # WooCommerce Ready # Responsive # RTL & Translation Ready # Extendible with premium addons # Regularly updated # Designed, Developed, Maintained & Supported by Brainstorm Force. Looking for a perfect base theme? Look no further. Astra is fast, fully customizable and WooCommerce ready theme that you can use for building any kind of website!","requires":"5.3","requires_php":"5.3","wporg":true},{"name":"Twenty Twelve","slug":"twentytwelve","version":"3.5","preview_url":"https://wp-themes.com/twentytwelve/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentytwelve/screenshot.png?ver=3.5","rating":92,"num_ratings":155,"homepage":"https://wordpress.org/themes/twentytwelve/","description":"The 2012 theme for WordPress is a fully responsive theme that looks great on any device. Features include a front page template with its own widgets, an optional display font, styling for post formats on both index and single views, and an optional no-sidebar page template. Make it yours with a custom menu, header image, and background.","requires":"3.5","requires_php":"5.2.4","wporg":true},{"name":"Twenty Nineteen","slug":"twentynineteen","version":"2.1","preview_url":"https://wp-themes.com/twentynineteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentynineteen/screenshot.png?ver=2.1","rating":74,"num_ratings":59,"homepage":"https://wordpress.org/themes/twentynineteen/","description":"Our 2019 default theme is designed to show off the power of the block editor. It features custom styles for all the default blocks, and is built so that what you see in the editor looks like what you'll see on your website. Twenty Nineteen is designed to be adaptable to a wide range of websites, whether you’re running a photo blog, launching a new business, or supporting a non-profit. Featuring ample whitespace and modern sans-serif headlines paired with classic serif body text, it's built to be beautiful on all screen sizes.","requires":"4.9.6","requires_php":"5.2.4","wporg":true},{"name":"Twenty Seventeen","slug":"twentyseventeen","version":"2.8","preview_url":"https://wp-themes.com/twentyseventeen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyseventeen/screenshot.png?ver=2.8","rating":88,"num_ratings":114,"homepage":"https://wordpress.org/themes/twentyseventeen/","description":"Twenty Seventeen brings your site to life with header video and immersive featured images. With a focus on business sites, it features multiple sections on the front page as well as widgets, navigation and social menus, a logo, and more. Personalize its asymmetrical grid with a custom color scheme and showcase your multimedia content with post formats. Our default theme for 2017 works great in many languages, for any abilities, and on any device.","requires":"4.7","requires_php":"5.2.4","wporg":true},{"name":"Twenty Sixteen","slug":"twentysixteen","version":"2.5","preview_url":"https://wp-themes.com/twentysixteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentysixteen/screenshot.png?ver=2.5","rating":82,"num_ratings":79,"homepage":"https://wordpress.org/themes/twentysixteen/","description":"Twenty Sixteen is a modernized take on an ever-popular WordPress layout — the horizontal masthead with an optional right sidebar that works perfectly for blogs and websites. It has custom color options with beautiful default color schemes, a harmonious fluid grid using a mobile-first approach, and impeccable polish in every detail. Twenty Sixteen will make your WordPress look beautiful everywhere.","requires":"4.4","requires_php":"5.2.4","wporg":true},{"name":"Twenty Fifteen","slug":"twentyfifteen","version":"3.0","preview_url":"https://wp-themes.com/twentyfifteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyfifteen/screenshot.png?ver=3.0","rating":88,"num_ratings":50,"homepage":"https://wordpress.org/themes/twentyfifteen/","description":"Our 2015 default theme is clean, blog-focused, and designed for clarity. Twenty Fifteen's simple, straightforward typography is readable on a wide variety of screen sizes, and suitable for multiple languages. We designed it using a mobile-first approach, meaning your content takes center-stage, regardless of whether your visitors arrive by smartphone, tablet, laptop, or desktop computer.","requires":false,"requires_php":"5.2.4","wporg":true}] \ No newline at end of file From f0c7712753a0330236e7e6c20206db49f3a0638b Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Mon, 11 Oct 2021 17:22:43 +0530 Subject: [PATCH 027/105] Remove duplicate css and update tooltip message --- assets/src/admin/amp-plugin-install.js | 2 +- .../components/px-enhancing-message/index.js | 2 +- .../components/px-enhancing-message/style.css | 61 ------------------- src/Admin/OnboardingWizardSubmenuPage.php | 7 +++ 4 files changed, 9 insertions(+), 63 deletions(-) diff --git a/assets/src/admin/amp-plugin-install.js b/assets/src/admin/amp-plugin-install.js index 5cf55a62482..82e8f852af1 100644 --- a/assets/src/admin/amp-plugin-install.js +++ b/assets/src/admin/amp-plugin-install.js @@ -59,7 +59,7 @@ const ampPluginInstall = { tooltipElement.classList.add( 'tooltiptext' ); tooltipElement.append( - __( 'This theme follow best practice and is known to work well with AMP plugin.', 'amp' ), + __( 'This plugin follow best practice and is known to work well with AMP plugin.', 'amp' ), ); messageElement.append( iconElement ); diff --git a/assets/src/components/px-enhancing-message/index.js b/assets/src/components/px-enhancing-message/index.js index 74bd2f9a663..5bf55e1d69d 100644 --- a/assets/src/components/px-enhancing-message/index.js +++ b/assets/src/components/px-enhancing-message/index.js @@ -14,7 +14,7 @@ export function PXEnhancingMessage() {   - { __( 'This plugin follow best practice and is known to work well with AMP plugin.', 'amp' ) } + { __( 'This theme follow best practice and is known to work well with AMP plugin.', 'amp' ) } { __( 'Page Experience Enhancing', 'amp' ) } diff --git a/assets/src/components/px-enhancing-message/style.css b/assets/src/components/px-enhancing-message/style.css index ed4785e21d1..5ed35a9ff50 100644 --- a/assets/src/components/px-enhancing-message/style.css +++ b/assets/src/components/px-enhancing-message/style.css @@ -1,69 +1,8 @@ -.extension-card-px-message { - text-align: center; - padding: 7px 20px; - clear: both; - background-color: #e7e7e7; - border-top: 2px solid #dcdcde; - color: #3c434a; - position: relative; -} - .theme-card .extension-card-px-message { margin: 0 -1.5rem -1.5rem; } -.amp-logo-icon { - background-image: url("../images/amp-logo-icon.svg"); - background-color: transparent; - background-size: 20px 20px; - height: 20px; - width: 20px; - display: inline-block; - vertical-align: middle; -} - -.amp-logo-icon.small { - background-size: 15px 15px; - height: 15px; - width: 15px; -} - -.theme-browser .theme { - float: none; - display: inline-block; - vertical-align: top; -} - -.extension-card-px-message .tooltiptext { - visibility: hidden; - width: 60%; - background-color: rgba(0, 0, 0, 0.8); - color: #fff; - text-align: center; - border-radius: 6px; - padding: 5px; - position: absolute; - z-index: 1; - bottom: 100%; - left: 20%; -} - .theme-card .extension-card-px-message .tooltiptext { width: 80%; left: 10%; } - -.tooltiptext::after { - content: ""; - position: absolute; - top: 100%; - left: 50%; - margin-left: -7px; - border-width: 7px; - border-style: solid; - border-color: rgba(0, 0, 0, 0.8) transparent transparent transparent; -} - -.extension-card-px-message:hover .tooltiptext { - visibility: visible; -} diff --git a/src/Admin/OnboardingWizardSubmenuPage.php b/src/Admin/OnboardingWizardSubmenuPage.php index 790e6056e3c..e34b0350473 100644 --- a/src/Admin/OnboardingWizardSubmenuPage.php +++ b/src/Admin/OnboardingWizardSubmenuPage.php @@ -209,6 +209,13 @@ public function enqueue_assets( $hook_suffix ) { true ); + wp_enqueue_style( + 'amp-admin', + amp_get_asset_url( 'css/amp-admin.css' ), + [], + AMP__VERSION + ); + wp_enqueue_style( self::ASSET_HANDLE, amp_get_asset_url( 'css/amp-onboarding-wizard.css' ), From 08f416379d69a42777ac9fd22fef0ce1ab11f27a Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Tue, 12 Oct 2021 13:19:15 +0530 Subject: [PATCH 028/105] Remove the usage of jquery and udpate package.json --- assets/src/admin/amp-plugin-install.js | 41 +++++++++++-------- assets/src/admin/theme-install/view/theme.js | 26 ++++++++---- .../components/px-enhancing-message/index.js | 2 +- bin/file-system.js | 2 +- package-lock.json | 28 +++++++------ package.json | 3 +- 6 files changed, 59 insertions(+), 43 deletions(-) diff --git a/assets/src/admin/amp-plugin-install.js b/assets/src/admin/amp-plugin-install.js index 82e8f852af1..42295e4c279 100644 --- a/assets/src/admin/amp-plugin-install.js +++ b/assets/src/admin/amp-plugin-install.js @@ -1,4 +1,3 @@ -/* global _ */ /** * WordPress dependencies */ @@ -9,7 +8,7 @@ import { __ } from '@wordpress/i18n'; * External dependencies */ import { AMP_PLUGINS, NONE_WPORG_PLUGINS } from 'amp-plugins'; // From WP inline script. -import jQuery from 'jquery'; +import { debounce } from 'lodash'; const ampPluginInstall = { @@ -26,15 +25,20 @@ const ampPluginInstall = { * Add AMP compatible message in AMP compatible plugin card after search result comes in. */ addAMPMessageInSearchResult() { - const pluginInstallSearch = jQuery( '.plugin-install-php .wp-filter-search' ); - - pluginInstallSearch.on( 'keyup input', _.debounce( () => { - if ( 'undefined' !== typeof wp.updates.searchRequest ) { - wp.updates.searchRequest.done( () => { - this.addAmpMessage(); - } ); - } - }, 1500 ) ); + const pluginInstallSearch = document.querySelector( '.plugin-install-php .wp-filter-search' ); + + if ( pluginInstallSearch ) { + const callback = debounce( () => { + if ( 'undefined' !== typeof wp.updates.searchRequest ) { + wp.updates.searchRequest.done( () => { + this.addAmpMessage(); + } ); + } + }, 1500 ); + + pluginInstallSearch.addEventListener( 'keyup', callback ); + pluginInstallSearch.addEventListener( 'input', callback ); + } }, /** @@ -42,8 +46,7 @@ const ampPluginInstall = { */ addAmpMessage() { // eslint-disable-next-line guard-for-in - for ( const index in AMP_PLUGINS ) { - const pluginSlug = AMP_PLUGINS[ index ]; + for ( const pluginSlug of AMP_PLUGINS ) { const pluginCardElement = document.querySelector( `.plugin-card.plugin-card-${ pluginSlug }` ); if ( ! pluginCardElement ) { @@ -65,9 +68,9 @@ const ampPluginInstall = { messageElement.append( iconElement ); messageElement.append( tooltipElement ); messageElement.append( ' ' ); - messageElement.append( __( 'Page Experience Enhancing', 'amp' ) ); + messageElement.append( __( 'AMP Compatible', 'amp' ) ); - jQuery( pluginCardElement ).append( messageElement ); + pluginCardElement.appendChild( messageElement ); } }, @@ -76,15 +79,17 @@ const ampPluginInstall = { */ removeAdditionalInfo() { // eslint-disable-next-line guard-for-in - for ( const index in NONE_WPORG_PLUGINS ) { - const pluginSlug = NONE_WPORG_PLUGINS[ index ]; + for ( const pluginSlug of NONE_WPORG_PLUGINS ) { const pluginCardElement = document.querySelector( `.plugin-card.plugin-card-${ pluginSlug }` ); if ( ! pluginCardElement ) { continue; } - jQuery( '.plugin-card-bottom', pluginCardElement ).remove(); + const pluginCardBottom = pluginCardElement.querySelector( '.plugin-card-bottom' ); + if ( pluginCardBottom ) { + pluginCardBottom.remove(); + } } }, }; diff --git a/assets/src/admin/theme-install/view/theme.js b/assets/src/admin/theme-install/view/theme.js index 11107a270b2..8997169a17c 100644 --- a/assets/src/admin/theme-install/view/theme.js +++ b/assets/src/admin/theme-install/view/theme.js @@ -7,7 +7,6 @@ import { __, sprintf } from '@wordpress/i18n'; * External dependencies */ import { AMP_THEMES, NONE_WPORG_THEMES } from 'amp-themes'; // From WP inline script. -import jQuery from 'jquery'; const wpThemeView = wp.themes.view.Theme; @@ -21,6 +20,12 @@ export default wpThemeView.extend( { render( ...args ) { wpThemeView.prototype.render.apply( this, args ); + if ( 0 >= this.$el?.length || ! this.$el[ 0 ] ) { + return; + } + + const element = this.$el[ 0 ]; + const data = this.model.toJSON(); let slug = data?.slug; @@ -44,9 +49,9 @@ export default wpThemeView.extend( { messageElement.append( iconElement ); messageElement.append( tooltipElement ); messageElement.append( ' ' ); - messageElement.append( __( 'Page Experience Enhancing', 'amp' ) ); + messageElement.append( __( 'AMP Compatible', 'amp' ) ); - this.$el.append( messageElement ); + element.appendChild( messageElement ); } if ( slug && ! this.isWPORGTheme( slug ) ) { @@ -68,12 +73,17 @@ export default wpThemeView.extend( { data.name, ) ); - const themeActions = jQuery( '.theme-actions', this.$el ); - themeActions.html( '' ); - themeActions.append( siteLinkButton ); + const themeActions = element.querySelector( '.theme-actions' ); + if ( themeActions ) { + themeActions.innerHTML = ''; + themeActions.appendChild( siteLinkButton ); + } - const moreDetail = jQuery( '.more-details', this.$el ); - moreDetail.text( __( 'Visit site', 'amp' ) ); + const moreDetail = element.querySelector( '.more-details' ); + if ( moreDetail ) { + moreDetail.innerHTML = ''; + moreDetail.append( __( 'Visit site', 'amp' ) ); + } } }, diff --git a/assets/src/components/px-enhancing-message/index.js b/assets/src/components/px-enhancing-message/index.js index 5bf55e1d69d..125d97db8c2 100644 --- a/assets/src/components/px-enhancing-message/index.js +++ b/assets/src/components/px-enhancing-message/index.js @@ -16,7 +16,7 @@ export function PXEnhancingMessage() { { __( 'This theme follow best practice and is known to work well with AMP plugin.', 'amp' ) } - { __( 'Page Experience Enhancing', 'amp' ) } + { __( 'AMP Compatible', 'amp' ) } ); } diff --git a/bin/file-system.js b/bin/file-system.js index 4acd194f427..9c8db8b2336 100644 --- a/bin/file-system.js +++ b/bin/file-system.js @@ -6,7 +6,7 @@ * External dependencies */ const fs = require( 'fs' ); -const _ = require( 'underscore' ); +const _ = require( 'lodash' ); class FileSystem { /** diff --git a/package-lock.json b/package-lock.json index 4e908970853..6a809547ada 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3636,6 +3636,12 @@ "type-fest": "^0.8.1" } }, + "prettier": { + "version": "npm:wp-prettier@2.2.1-beta-1", + "resolved": "https://registry.npmjs.org/wp-prettier/-/wp-prettier-2.2.1-beta-1.tgz", + "integrity": "sha512-+JHkqs9LC/JPp51yy1hzs3lQ7qeuWCwOcSzpQNeeY/G7oSpnF61vxt7hRh87zNRTr6ob2ndy0W8rVzhgrcA+Gw==", + "dev": true + }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -4075,6 +4081,12 @@ "semver": "^7.3.5" } }, + "prettier": { + "version": "npm:wp-prettier@2.2.1-beta-1", + "resolved": "https://registry.npmjs.org/wp-prettier/-/wp-prettier-2.2.1-beta-1.tgz", + "integrity": "sha512-+JHkqs9LC/JPp51yy1hzs3lQ7qeuWCwOcSzpQNeeY/G7oSpnF61vxt7hRh87zNRTr6ob2ndy0W8rVzhgrcA+Gw==", + "dev": true + }, "read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", @@ -4624,6 +4636,7 @@ "version": "0.21.1", "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", + "dev": true, "requires": { "follow-redirects": "^1.10.0" } @@ -8428,7 +8441,8 @@ "follow-redirects": { "version": "1.14.4", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz", - "integrity": "sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==" + "integrity": "sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==", + "dev": true }, "for-in": { "version": "1.0.2", @@ -15893,12 +15907,6 @@ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, - "prettier": { - "version": "npm:wp-prettier@2.2.1-beta-1", - "resolved": "https://registry.npmjs.org/wp-prettier/-/wp-prettier-2.2.1-beta-1.tgz", - "integrity": "sha512-+JHkqs9LC/JPp51yy1hzs3lQ7qeuWCwOcSzpQNeeY/G7oSpnF61vxt7hRh87zNRTr6ob2ndy0W8rVzhgrcA+Gw==", - "dev": true - }, "prettier-linter-helpers": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", @@ -19191,12 +19199,6 @@ "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", "dev": true }, - "underscore": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz", - "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==", - "dev": true - }, "underscore.string": { "version": "3.3.5", "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.5.tgz", diff --git a/package.json b/package.json index 68d800435bc..3cdf048c7b5 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,6 @@ "@wordpress/icons": "5.0.2", "@wordpress/is-shallow-equal": "4.2.0", "@wordpress/url": "3.2.2", - "axios": "0.21.1", "classnames": "2.3.1", "clipboard": "2.0.8", "prop-types": "15.7.2", @@ -62,6 +61,7 @@ "@wordpress/jest-puppeteer-axe": "3.1.0", "@wordpress/plugins": "4.0.2", "@wordpress/scripts": "18.0.1", + "axios": "0.21.1", "babel-plugin-inline-react-svg": "2.0.1", "babel-plugin-transform-react-remove-prop-types": "0.4.24", "copy-webpack-plugin": "9.0.1", @@ -94,7 +94,6 @@ "react-test-renderer": "17.0.2", "rtlcss-webpack-plugin": "4.0.6", "svgo": "2.7.0", - "underscore": "1.13.1", "webpackbar": "5.0.0-3", "wporg-api-client": "1.0.1" }, From 639796d13e1a3bd321298cedc6bf91cfd889ba57 Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Tue, 12 Oct 2021 13:29:22 +0530 Subject: [PATCH 029/105] Remove AMP Compatible message for themes in AMP onboarding screen --- .../components/px-enhancing-message/index.js | 22 ------------------- .../components/px-enhancing-message/style.css | 8 ------- .../reader-theme-selection/index.js | 4 +--- .../reader-themes-context-provider/index.js | 3 +-- assets/src/components/theme-card/index.js | 9 +------- 5 files changed, 3 insertions(+), 43 deletions(-) delete mode 100644 assets/src/components/px-enhancing-message/index.js delete mode 100644 assets/src/components/px-enhancing-message/style.css diff --git a/assets/src/components/px-enhancing-message/index.js b/assets/src/components/px-enhancing-message/index.js deleted file mode 100644 index 125d97db8c2..00000000000 --- a/assets/src/components/px-enhancing-message/index.js +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Internal dependencies - */ -import './style.css'; - -/** - * WordPress dependencies - */ -import { __ } from '@wordpress/i18n'; - -export function PXEnhancingMessage() { - return ( -
- -   - - { __( 'This theme follow best practice and is known to work well with AMP plugin.', 'amp' ) } - - { __( 'AMP Compatible', 'amp' ) } -
- ); -} diff --git a/assets/src/components/px-enhancing-message/style.css b/assets/src/components/px-enhancing-message/style.css deleted file mode 100644 index 5ed35a9ff50..00000000000 --- a/assets/src/components/px-enhancing-message/style.css +++ /dev/null @@ -1,8 +0,0 @@ -.theme-card .extension-card-px-message { - margin: 0 -1.5rem -1.5rem; -} - -.theme-card .extension-card-px-message .tooltiptext { - width: 80%; - left: 10%; -} diff --git a/assets/src/components/reader-theme-selection/index.js b/assets/src/components/reader-theme-selection/index.js index 312301138ec..79cfc42d649 100644 --- a/assets/src/components/reader-theme-selection/index.js +++ b/assets/src/components/reader-theme-selection/index.js @@ -22,7 +22,7 @@ import { ThemesAPIError } from '../themes-api-error'; * Component for selecting a reader theme. */ export function ReaderThemeSelection() { - const { availableThemes, fetchingThemes, unavailableThemes, ampThemes } = useContext( ReaderThemes ); + const { availableThemes, fetchingThemes, unavailableThemes } = useContext( ReaderThemes ); if ( fetchingThemes ) { return ; @@ -43,7 +43,6 @@ export function ReaderThemeSelection() { ) ) } @@ -64,7 +63,6 @@ export function ReaderThemeSelection() { key={ `theme-card-${ theme.slug }` } screenshotUrl={ theme.screenshot_url } disabled={ true } - isPXEnhanced={ ampThemes.includes( theme.slug ) } { ...theme } /> ) ) } diff --git a/assets/src/components/reader-themes-context-provider/index.js b/assets/src/components/reader-themes-context-provider/index.js index 9b01121648a..3d099d0b8e9 100644 --- a/assets/src/components/reader-themes-context-provider/index.js +++ b/assets/src/components/reader-themes-context-provider/index.js @@ -9,7 +9,7 @@ import { __ } from '@wordpress/i18n'; * External dependencies */ import PropTypes from 'prop-types'; -import { USING_FALLBACK_READER_THEME, LEGACY_THEME_SLUG, AMP_THEMES } from 'amp-settings'; +import { USING_FALLBACK_READER_THEME, LEGACY_THEME_SLUG } from 'amp-settings'; /** * Internal dependencies @@ -310,7 +310,6 @@ export function ReaderThemesContextProvider( { wpAjaxUrl, children, currentTheme themes: filteredThemes, themesAPIError, unavailableThemes, - ampThemes: AMP_THEMES, } } > diff --git a/assets/src/components/theme-card/index.js b/assets/src/components/theme-card/index.js index f8c647a2962..0235dc7db6e 100644 --- a/assets/src/components/theme-card/index.js +++ b/assets/src/components/theme-card/index.js @@ -19,7 +19,6 @@ import MobileIcon from '../svg/mobile-icon.svg'; import { Options } from '../options-context-provider'; import { Selectable } from '../selectable'; import { Phone } from '../phone'; -import { PXEnhancingMessage } from '../px-enhancing-message'; /** * A selectable card showing a theme in a list of themes. @@ -33,9 +32,8 @@ import { PXEnhancingMessage } from '../px-enhancing-message'; * @param {boolean} props.disabled Whether the theme is not automatically installable in the current environment. * @param {Object} props.style Style object to pass to the Selectable component. * @param {string} props.ElementName Name for the wrapper element. - * @param {boolean} props.isPXEnhanced Is themes is AMP compatible or not. */ -export function ThemeCard( { description, ElementName = 'li', homepage, screenshotUrl, slug, name, disabled, style, isPXEnhanced } ) { +export function ThemeCard( { description, ElementName = 'li', homepage, screenshotUrl, slug, name, disabled, style } ) { const { editedOptions, updateOptions } = useContext( Options ); const { reader_theme: readerTheme } = editedOptions; @@ -102,10 +100,6 @@ export function ThemeCard( { description, ElementName = 'li', homepage, screensh

) } - { isPXEnhanced && ( - - ) } - ); } @@ -119,5 +113,4 @@ ThemeCard.propTypes = { name: PropTypes.string, disabled: PropTypes.bool, style: PropTypes.object, - isPXEnhanced: PropTypes.bool, }; From bd562c045fa2be2e56fa53f6711ccf0aea1048bd Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Tue, 12 Oct 2021 13:45:34 +0530 Subject: [PATCH 030/105] Increase the limit to fetch data from API. --- bin/update-extension-json.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bin/update-extension-json.js b/bin/update-extension-json.js index 7e8f8dd9a01..5144c1de969 100644 --- a/bin/update-extension-json.js +++ b/bin/update-extension-json.js @@ -36,7 +36,7 @@ class UpdateExtensionJson { const queryParams = { ecosystem_types: [ themeTerm, pluginTerm ], - per_page: 20, + per_page: 100, page: 1, }; @@ -153,7 +153,7 @@ class UpdateExtensionJson { const filters = { search: slug, page: 1, - per_page: 20, + per_page: 100, }; const response = await getThemesList( filters ); @@ -214,7 +214,7 @@ class UpdateExtensionJson { const filters = { search: slug, page: 1, - per_page: 20, + per_page: 100, }; const response = await getPluginsList( filters ); From 2be96cd39d18c8e6e4f057fe138790f77f7eed7d Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Tue, 12 Oct 2021 14:19:01 +0530 Subject: [PATCH 031/105] Fix JS issue and revert changes of OnboardingWizardSubmenuPage.php --- assets/src/admin/theme-install/view/theme.js | 3 +-- src/Admin/OnboardingWizardSubmenuPage.php | 10 ---------- 2 files changed, 1 insertion(+), 12 deletions(-) diff --git a/assets/src/admin/theme-install/view/theme.js b/assets/src/admin/theme-install/view/theme.js index 8997169a17c..3847df18675 100644 --- a/assets/src/admin/theme-install/view/theme.js +++ b/assets/src/admin/theme-install/view/theme.js @@ -81,8 +81,7 @@ export default wpThemeView.extend( { const moreDetail = element.querySelector( '.more-details' ); if ( moreDetail ) { - moreDetail.innerHTML = ''; - moreDetail.append( __( 'Visit site', 'amp' ) ); + moreDetail.innerHTML = __( 'Visit site', 'amp' ); } } }, diff --git a/src/Admin/OnboardingWizardSubmenuPage.php b/src/Admin/OnboardingWizardSubmenuPage.php index e34b0350473..bbb4a105a09 100644 --- a/src/Admin/OnboardingWizardSubmenuPage.php +++ b/src/Admin/OnboardingWizardSubmenuPage.php @@ -209,13 +209,6 @@ public function enqueue_assets( $hook_suffix ) { true ); - wp_enqueue_style( - 'amp-admin', - amp_get_asset_url( 'css/amp-admin.css' ), - [], - AMP__VERSION - ); - wp_enqueue_style( self::ASSET_HANDLE, amp_get_asset_url( 'css/amp-onboarding-wizard.css' ), @@ -233,8 +226,6 @@ public function enqueue_assets( $hook_suffix ) { $amp_settings_link = menu_page_url( AMP_Options_Manager::OPTION_NAME, false ); - AMPThemes::set_themes(); - $setup_wizard_data = [ 'AMP_OPTIONS_KEY' => AMP_Options_Manager::OPTION_NAME, 'AMP_QUERY_VAR' => amp_get_slug(), @@ -263,7 +254,6 @@ public function enqueue_assets( $hook_suffix ) { 'UPDATES_NONCE' => wp_create_nonce( 'updates' ), 'USER_FIELD_DEVELOPER_TOOLS_ENABLED' => UserAccess::USER_FIELD_DEVELOPER_TOOLS_ENABLED, 'USERS_RESOURCE_REST_PATH' => '/wp/v2/users', - 'AMP_THEMES' => wp_list_pluck( AMPThemes::$themes, 'slug' ), ]; wp_add_inline_script( From 34a5162baf7e367dc63619cad625837ef612e9a4 Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Tue, 12 Oct 2021 14:58:35 +0530 Subject: [PATCH 032/105] Apply suggestion from PR --- src/Admin/AMPPlugins.php | 21 ++++++++++++--------- src/Admin/AMPThemes.php | 24 +++--------------------- 2 files changed, 15 insertions(+), 30 deletions(-) diff --git a/src/Admin/AMPPlugins.php b/src/Admin/AMPPlugins.php index a7cd79d432e..ded14b18f9b 100644 --- a/src/Admin/AMPPlugins.php +++ b/src/Admin/AMPPlugins.php @@ -12,6 +12,7 @@ use AmpProject\AmpWP\Infrastructure\Registerable; use AmpProject\AmpWP\Infrastructure\Service; use stdClass; +use WP_Screen; use function get_current_screen; /** @@ -61,17 +62,13 @@ public static function is_needed() { */ public static function set_plugins() { - global $wp_filesystem; - - AMPThemes::init_file_system(); - $plugin_json = AMP__DIR__ . '/data/plugins.json'; if ( ! file_exists( $plugin_json ) ) { return; } - $json_data = $wp_filesystem->get_contents( $plugin_json ); + $json_data = file_get_contents( $plugin_json ); self::$plugins = json_decode( $json_data, true ); $json_last_error = json_last_error(); @@ -90,7 +87,7 @@ public function register() { $this->set_plugins(); $screen = get_current_screen(); - if ( $screen instanceof \WP_Screen && in_array( $screen->id, [ 'plugins', 'plugin-install' ], true ) ) { + if ( $screen instanceof WP_Screen && in_array( $screen->id, [ 'plugins', 'plugin-install' ], true ) ) { add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_scripts' ] ); } @@ -237,9 +234,12 @@ public function action_links( $actions, $plugin ) { if ( ! empty( $plugin['homepage'] ) ) { $actions[] = sprintf( - '%s', + '%s', esc_url( $plugin['homepage'] ), - esc_html( $plugin['name'] ), + esc_attr( + /* translators: %s: Plugin name */ + sprintf( __( 'Site link of %s', 'amp' ), $plugin['name'] ) + ), esc_html__( 'Visit site', 'amp' ) ); } @@ -263,7 +263,10 @@ public function plugin_row_meta( $plugin_meta, $plugin_file, $plugin_data ) { $amp_plugins = wp_list_pluck( self::$plugins, 'slug' ); if ( ! empty( $plugin_data['slug'] ) && in_array( $plugin_data['slug'], $amp_plugins, true ) ) { - $plugin_meta[] = ' Page Experience Enhancing'; + $plugin_meta[] = sprintf( + ' %s', + esc_html__( 'AMP Compatible', 'amp' ) + ); } return $plugin_meta; diff --git a/src/Admin/AMPThemes.php b/src/Admin/AMPThemes.php index 8e8f23d16df..2b95c8001a0 100644 --- a/src/Admin/AMPThemes.php +++ b/src/Admin/AMPThemes.php @@ -10,6 +10,7 @@ use AmpProject\AmpWP\Infrastructure\Registerable; use AmpProject\AmpWP\Infrastructure\Service; use WP_Filesystem_Base; +use stdClass; /** * Add new tab (AMP) in theme install screen in WordPress admin. @@ -31,31 +32,12 @@ class AMPThemes implements Service, Registerable { */ public static $themes = []; - /** - * To initialize file system. - * - * @return void - */ - public static function init_file_system() { - global $wp_filesystem; - - require_once ABSPATH . 'wp-admin/includes/file.php'; - - if ( ! $wp_filesystem instanceof WP_Filesystem_Base ) { - $creds = request_filesystem_credentials( site_url() ); - wp_filesystem( $creds ); - } - } - /** * Fetch AMP themes data. * * @return void */ public static function set_themes() { - global $wp_filesystem; - - self::init_file_system(); $file_path = AMP__DIR__ . '/data/themes.json'; @@ -63,7 +45,7 @@ public static function set_themes() { return; } - $json_data = $wp_filesystem->get_contents( $file_path ); + $json_data = file_get_contents( $file_path ); self::$themes = json_decode( $json_data, true ); $json_last_error = json_last_error(); @@ -168,7 +150,7 @@ public function themes_api( $response, $action, $args ) { return $response; } - $response = new \stdClass(); + $response = new stdClass(); $response->themes = []; $args['per_page'] = ( ! empty( $args['per_page'] ) ) ? $args['per_page'] : 36; From 6c301df7c6b22b2ee779a8118f1017b7640e354a Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Tue, 12 Oct 2021 15:40:41 +0530 Subject: [PATCH 033/105] fetch AMP plugin and theme data when it needed --- src/Admin/AMPPlugins.php | 47 ++++++++++++++------------ src/Admin/AMPThemes.php | 43 ++++++++++++----------- tests/php/src/Admin/AMPPluginsTest.php | 7 ++-- 3 files changed, 53 insertions(+), 44 deletions(-) diff --git a/src/Admin/AMPPlugins.php b/src/Admin/AMPPlugins.php index ded14b18f9b..5bfee156736 100644 --- a/src/Admin/AMPPlugins.php +++ b/src/Admin/AMPPlugins.php @@ -31,9 +31,11 @@ class AMPPlugins implements Conditional, Delayed, Service, Registerable { const ASSET_HANDLE = 'amp-plugin-install'; /** - * @var array List of AMP plugins. + * List of AMP plugins. + * + * @var array|bool */ - public static $plugins = []; + protected $plugins = false; /** * Get the action to use for registering the service. @@ -58,23 +60,27 @@ public static function is_needed() { /** * Fetch AMP plugin data. * - * @return void + * @return array */ - public static function set_plugins() { + public function get_plugins() { - $plugin_json = AMP__DIR__ . '/data/plugins.json'; + if ( ! is_array( $this->plugins ) ) { + $file_path = AMP__DIR__ . '/data/plugins.json'; - if ( ! file_exists( $plugin_json ) ) { - return; - } + if ( ! file_exists( $file_path ) ) { + return []; + } - $json_data = file_get_contents( $plugin_json ); - self::$plugins = json_decode( $json_data, true ); - $json_last_error = json_last_error(); + $json_data = file_get_contents( $file_path ); + $this->plugins = json_decode( $json_data, true ); + $json_last_error = json_last_error(); - if ( JSON_ERROR_NONE !== $json_last_error ) { - self::$plugins = []; + if ( JSON_ERROR_NONE !== $json_last_error ) { + $this->plugins = []; + } } + + return $this->plugins; } /** @@ -84,7 +90,6 @@ public static function set_plugins() { */ public function register() { - $this->set_plugins(); $screen = get_current_screen(); if ( $screen instanceof WP_Screen && in_array( $screen->id, [ 'plugins', 'plugin-install' ], true ) ) { @@ -129,14 +134,14 @@ public function enqueue_scripts() { $none_wporg = []; - foreach ( self::$plugins as $plugin ) { + foreach ( $this->get_plugins() as $plugin ) { if ( true !== $plugin['wporg'] ) { $none_wporg[] = $plugin['slug']; } } $js_data = [ - 'AMP_PLUGINS' => wp_list_pluck( self::$plugins, 'slug' ), + 'AMP_PLUGINS' => wp_list_pluck( $this->get_plugins(), 'slug' ), 'NONE_WPORG_PLUGINS' => $none_wporg, ]; @@ -175,7 +180,7 @@ public function add_tab( $tabs ) { public function tab_args() { $per_page = 36; - $total_page = ceil( count( self::$plugins ) / $per_page ); + $total_page = ceil( count( $this->get_plugins() ) / $per_page ); $pagenum = isset( $_REQUEST['paged'] ) ? absint( $_REQUEST['paged'] ) : 1; // phpcs:ignore WordPress.Security.NonceVerification.Recommended $pagenum = ( $pagenum > $total_page ) ? $total_page : $pagenum; $page = max( 1, $pagenum ); @@ -203,9 +208,9 @@ public function plugins_api( $response, $action, $args ) { return $response; } - $total_page = ceil( count( self::$plugins ) / $args['per_page'] ); + $total_page = ceil( count( $this->get_plugins() ) / $args['per_page'] ); $page = ( ! empty( $args['page'] ) && 0 < (int) $args['page'] ) ? (int) $args['page'] : 1; - $plugin_chunks = array_chunk( (array) self::$plugins, $args['per_page'] ); + $plugin_chunks = array_chunk( (array) $this->get_plugins(), $args['per_page'] ); $plugins = ( ! empty( $plugin_chunks[ $page - 1 ] ) && is_array( $plugin_chunks[ $page - 1 ] ) ) ? $plugin_chunks[ $page - 1 ] : []; $response = new stdClass(); @@ -213,7 +218,7 @@ public function plugins_api( $response, $action, $args ) { $response->info = [ 'page' => $page, 'pages' => $total_page, - 'results' => count( self::$plugins ), + 'results' => count( $this->get_plugins() ), ]; return $response; @@ -260,7 +265,7 @@ public function action_links( $actions, $plugin ) { */ public function plugin_row_meta( $plugin_meta, $plugin_file, $plugin_data ) { - $amp_plugins = wp_list_pluck( self::$plugins, 'slug' ); + $amp_plugins = wp_list_pluck( $this->get_plugins(), 'slug' ); if ( ! empty( $plugin_data['slug'] ) && in_array( $plugin_data['slug'], $amp_plugins, true ) ) { $plugin_meta[] = sprintf( diff --git a/src/Admin/AMPThemes.php b/src/Admin/AMPThemes.php index 2b95c8001a0..1919db6061d 100644 --- a/src/Admin/AMPThemes.php +++ b/src/Admin/AMPThemes.php @@ -9,7 +9,6 @@ use AmpProject\AmpWP\Infrastructure\Registerable; use AmpProject\AmpWP\Infrastructure\Service; -use WP_Filesystem_Base; use stdClass; /** @@ -28,30 +27,36 @@ class AMPThemes implements Service, Registerable { const ASSET_HANDLE = 'amp-theme-install'; /** - * @var array List of AMP themes. + * List of AMP themes. + * + * @var array|bool */ - public static $themes = []; + protected $themes = false; /** * Fetch AMP themes data. * - * @return void + * @return array */ - public static function set_themes() { + public function get_themes() { - $file_path = AMP__DIR__ . '/data/themes.json'; + if ( ! is_array( $this->themes ) ) { + $file_path = AMP__DIR__ . '/data/themes.json'; - if ( ! file_exists( $file_path ) ) { - return; - } + if ( ! file_exists( $file_path ) ) { + return []; + } - $json_data = file_get_contents( $file_path ); - self::$themes = json_decode( $json_data, true ); - $json_last_error = json_last_error(); + $json_data = file_get_contents( $file_path ); + $this->themes = json_decode( $json_data, true ); + $json_last_error = json_last_error(); - if ( JSON_ERROR_NONE !== $json_last_error ) { - self::$themes = []; + if ( JSON_ERROR_NONE !== $json_last_error ) { + $this->themes = []; + } } + + return $this->themes; } /** @@ -61,8 +66,6 @@ public static function set_themes() { */ public function register() { - self::set_themes(); - add_filter( 'themes_api', [ $this, 'themes_api' ], 10, 3 ); if ( ! wp_doing_ajax() && is_admin() ) { @@ -113,14 +116,14 @@ public function enqueue_scripts() { $none_wporg = []; - foreach ( self::$themes as $theme ) { + foreach ( $this->get_themes() as $theme ) { if ( true !== $theme['wporg'] ) { $none_wporg[] = $theme['slug']; } } $js_data = [ - 'AMP_THEMES' => wp_list_pluck( self::$themes, 'slug' ), + 'AMP_THEMES' => wp_list_pluck( $this->get_themes(), 'slug' ), 'NONE_WPORG_THEMES' => $none_wporg, ]; @@ -156,7 +159,7 @@ public function themes_api( $response, $action, $args ) { $args['per_page'] = ( ! empty( $args['per_page'] ) ) ? $args['per_page'] : 36; $page = ( ! empty( $args['page'] ) && 0 < (int) $args['page'] ) ? (int) $args['page'] : 1; - $theme_chunks = array_chunk( (array) self::$themes, $args['per_page'] ); + $theme_chunks = array_chunk( (array) $this->get_themes(), $args['per_page'] ); $themes = ( ! empty( $theme_chunks[ $page - 1 ] ) && is_array( $theme_chunks[ $page - 1 ] ) ) ? $theme_chunks[ $page - 1 ] : []; if ( 'query_themes' === $action ) { @@ -170,7 +173,7 @@ public function themes_api( $response, $action, $args ) { $response->info = [ 'page' => $page, 'pages' => count( $theme_chunks ), - 'results' => count( (array) self::$themes ), + 'results' => count( (array) $this->get_themes() ), ]; return $response; diff --git a/tests/php/src/Admin/AMPPluginsTest.php b/tests/php/src/Admin/AMPPluginsTest.php index 403122c848a..c5dc2859f1a 100644 --- a/tests/php/src/Admin/AMPPluginsTest.php +++ b/tests/php/src/Admin/AMPPluginsTest.php @@ -9,6 +9,7 @@ use AmpProject\AmpWP\Admin\AMPPlugins; use AmpProject\AmpWP\Tests\TestCase; +use stdClass; /** * Tests for AMPPlugins. @@ -145,7 +146,7 @@ public function test_tab_args() { */ public function test_plugins_api() { $this->instance->register(); - $response = new \stdClass(); + $response = new stdClass(); // Test 1: Normal request. $response = $this->instance->plugins_api( $response, 'query_themes', [ 'per_page' => 36 ] ); @@ -191,7 +192,7 @@ public function test_action_links() { $this->assertIsArray( $output ); $this->assertEquals( sprintf( - '%s', + '%s', esc_url( $plugin_data['homepage'] ), esc_html( $plugin_data['name'] ), esc_html__( 'Visit site', 'amp' ) @@ -220,7 +221,7 @@ public function test_plugin_row_meta() { $output = $this->instance->plugin_row_meta( $plugin_meta, '', [ 'slug' => 'akismet' ] ); $this->assertContains( - ' Page Experience Enhancing', + ' AMP Compatible', $output ); From 49b368c73ea05ee4b4fb2a3e2ade2fb09465ac9e Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Tue, 12 Oct 2021 17:35:29 +0530 Subject: [PATCH 034/105] Store AMP plugins/themes data into php files instead of JSON --- .gitignore | 2 ++ bin/update-extension-json.js | 53 ++++++++++++++++++++++++++++++++++-- data/plugins.json | 1 - data/themes.json | 1 - src/Admin/AMPPlugins.php | 18 ++++-------- src/Admin/AMPThemes.php | 18 ++++-------- 6 files changed, 65 insertions(+), 28 deletions(-) delete mode 100644 data/plugins.json delete mode 100644 data/themes.json diff --git a/.gitignore b/.gitignore index 1044d8cf962..22502e5462f 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,8 @@ assets/js/*.asset.php assets/js/*.map built /amphtml +includes/amp-plugins.php +includes/amp-themes.php .env .idea/ /phpcs.xml diff --git a/bin/update-extension-json.js b/bin/update-extension-json.js index 5144c1de969..0baf9db537d 100644 --- a/bin/update-extension-json.js +++ b/bin/update-extension-json.js @@ -81,14 +81,63 @@ class UpdateExtensionJson { */ async storeData() { if ( this.plugins ) { - await filesystem.writeFile( 'data/plugins.json', JSON.stringify( this.plugins ) ); + let output = this.convertToPhpArray( this.plugins ); + output = ` ${ childObjectOutput },`; + break; + case 'boolean': + output += `\n${ tabs }'${ key }' => ${ value ? 'true' : 'false' },`; + break; + case 'string': + value = value.toString().replace( /'/gm, `\\'` ); + output += `\n${ tabs }'${ key }' => '${ value }',`; + break; + case 'bigint': + case 'number': + output += `\n${ tabs }'${ key }' => ${ value },`; + break; + default: + output += `\n${ tabs }'${ key }' => '',`; + break; + } + } + output += '\n' + '\t'.repeat( depth - 1 ) + ']'; + return output; + } + /** * Prepare a object for WordPress install page from the object of amp-wp.org rest object. * diff --git a/data/plugins.json b/data/plugins.json deleted file mode 100644 index 0507c13fca1..00000000000 --- a/data/plugins.json +++ /dev/null @@ -1 +0,0 @@ -[{"name":"Podcast Player – Your Podcasting Companion","slug":"podcast-player","version":"5.2.1","author":"vedathemes","author_profile":"https://profiles.wordpress.org/vedathemes","requires":"4.9","tested":"5.8.1","requires_php":"5.6","rating":98,"ratings":{"1":0,"2":1,"3":0,"4":2,"5":45},"num_ratings":48,"support_threads":6,"support_threads_resolved":4,"active_installs":8000,"downloaded":124555,"last_updated":"2021-10-05 7:37pm GMT","added":"2019-02-06","homepage":"https://vedathemes.com/podcast-player/","short_description":"Showcase your podcast only using podcasting feed url. Use custom widget, shortcode or editor block to display podcast player anywhere on your site.","description":"

Podcast Player provides an easy way to show and play your podcast episodes using podcasting feed url. It is a must have plugin for your podcast website. Give your listeners an easy access to all your episodes from any page or even from all the pages of your website.

\n

Podcast Player Pro | Documentation

\n\n

Podcast player key features

\n
    \n
  • Give your listeners an easy access to your podcast episodes.
  • \n
  • Display responsive podcast player just by entering your podcast’s feed url.
  • \n
  • Fetch all required details from feed url.
  • \n
  • Option to modify fetched details of your podcast.
  • \n
  • Option to Show or Hide individual player elements.
  • \n
  • Give your listener an option to share your podcast episodes.
  • \n
  • Ajax live search episodes from the podcast.
  • \n
  • It is possible to have multiple instances of podcast player on single page.
  • \n
  • Self adjusting layout according to width of the podcast player.
  • \n
\n

Podcast player pro features

\n
    \n
  • Professionally showcase your podcast using our unified player, episode list and grid templates.
  • \n
  • Use powerful filter options to choose which episodes or seasons you want to display on your website.
  • \n
  • Make your entire podcast catalogue easily available using our ajax approximate search feature.
  • \n
  • Add an audio message within your podcast episode.
  • \n
  • Add audio mp3 to your WordPress posts and display as podcast episodes.
  • \n
  • Show or hide specific elements and customize color and fonts to personalize your podcast display
  • \n
\n

Setup Podcast Player Widget

\n

Display searchable podcast episodes list on any widget area of your website.

\n

Minimum Setup

\n
    \n
  1. After activating the plugin, visit Appearance > Widgets in admin dashboard.
  2. \n
  3. Look for ‘Podcast player’ widget in left ‘Available Widgets’ section.
  4. \n
  5. Drag the widget to any available sidebar/widget area.
  6. \n
  7. Enter feed url in the appropriate field.
  8. \n
  9. Click [Save] button.
  10. \n
\n

Advanced Setup

\n
    \n
  1. After activating the plugin, visit Appearance > Widgets in admin dashboard.
  2. \n
  3. Look for ‘Podcast player’ widget in left ‘Available Widgets’ section.
  4. \n
  5. Drag the widget to any available sidebar/widget area.
  6. \n
  7. Enter feed url in the appropriate field.
  8. \n
  9. Optionally, click on “Change podcast content” button to customize feed’s auto fetched details.
  10. \n
  11. Optionally, click on “Show/Hide player items” button to show or hide player elements.
  12. \n
  13. Optionally, click on “Podcast player styling” button to customize player’s accent color.
  14. \n
  15. Optionally, click on “Sort & Filter” button to sort or filter podcast episodes.
  16. \n
  17. Click [Save] button.
  18. \n
\n

Setup Podcast Player Block

\n

Display searchable podcast episodes list on any post or page. Make sure you have not disabled WordPress latest block editor.

\n

Setup

\n
    \n
  1. After activating the plugin, visit any post or page’s edit screen.
  2. \n
  3. In main content area, click on ‘+’ icon to add a new block.
  4. \n
  5. Search for ‘Podcast Player’ block.
  6. \n
  7. Enter feed url in the appropriate field. A preview of your podcast player will appear.
  8. \n
  9. Click on the podcast player preview.
  10. \n
  11. Select appropriate options from the right sidebar to customize the player.
  12. \n
  13. Save or Update the post.
  14. \n
\n

Setup Podcast Player using shortcode

\n

Minimum Setup

\n
[podcastplayer feed_url ='']\n
\n
    \n
  1. feed_url – Your podcast feed url.
  2. \n
\n

Advanced Setup

\n
[podcastplayer feed_url ='' number='' podcast_menu='' cover_image_url='' hide_cover='true' hide_description='true' hide_subscribe='true' hide_search='true' hide_loadmore='true' hide_download='true' accent_color='#65b84f']Short Description [/podcastplayer]\n
\n
    \n
  1. feed_url: Your podcast feed url.
  2. \n
  3. number: Number of podcasts episodes to be displayed at a time.
  4. \n
  5. podcast_menu: Any previously created WordPress menu’s name OR ID OR slug. (optional)
  6. \n
  7. cover_image_url: Podcast’s cover image url. The image must be from your WP media library. (optional)
  8. \n
  9. header_default: (false/true) Show player header items by default
  10. \n
  11. hide_header: Hide player header items
  12. \n
  13. hide_title: (false/true) Show / Hide podcast Title in header info section
  14. \n
  15. hide_cover: (false/true) Show / Hide podcast cover image
  16. \n
  17. hide_description: (false/true) Show / Hide podcast description
  18. \n
  19. hide_subscribe: (false/true) Show / Hide podcast subscribe button.
  20. \n
  21. hide_search: (false/true) Show / Hide podcast search field.
  22. \n
  23. hide_author: (false/true) Show / Hide author/podcaster’s name.
  24. \n
  25. hide_content: (false/true) Show / Hide podcast episode’s content.
  26. \n
  27. hide_loadmore: (false/true) Show / Hide podcast load more button.
  28. \n
  29. hide_download: (false/true) Show/ Hide podcast episode download link.
  30. \n
  31. hide_social: (false/true) Show/ Hide podcast episode social sharing links.
  32. \n
  33. accent_color: Podcast player’s accent color (Color hex-code to be entered).
  34. \n
  35. sortby: Sort podcast episodes (sort_date_desc/sort_date_asc/sort_title_desc/sort_title_asc)
  36. \n
  37. filterby: Filter by any string in episode’s title
  38. \n
  39. list_default: (false/true) Display Episodes list by default on small screen
  40. \n
  41. hide_featured: (false/true) Show / Hide podcast episode featured image
  42. \n
  43. apple_sub: Apple podcast subscription link
  44. \n
  45. google_sub: Google podcast subscription link
  46. \n
  47. Short Description: Podcast short text description. (optional)
  48. \n
\n","download_link":"https://downloads.wordpress.org/plugin/podcast-player.5.2.1.zip","tags":{"feed-to-audio":"feed to audio","podcast":"podcast","podcaster":"podcaster","podcasting":"podcasting","rss-feed":"rss feed"},"donate_link":"","icons":{"1x":"https://ps.w.org/podcast-player/assets/icon-256x256.png?rev=2025683","2x":"https://ps.w.org/podcast-player/assets/icon-256x256.png?rev=2025683"},"wporg":true},{"name":"WPSSO Schema JSON-LD Markup","slug":"wpsso-schema-json-ld","version":"5.0.0","author":"JS Morisset","author_profile":"https://profiles.wordpress.org/jsmoriss","requires":"5.0","tested":"5.8.1","requires_php":"7.0","rating":90,"ratings":{"1":5,"2":2,"3":1,"4":1,"5":55},"num_ratings":64,"support_threads":4,"support_threads_resolved":4,"active_installs":4000,"downloaded":290170,"last_updated":"2021-10-08 7:23pm GMT","added":"2016-02-14","homepage":"https://wpsso.com/extend/plugins/wpsso-schema-json-ld/","short_description":"Discontinued / deprecated add-on.","description":"

This add-on has been discontinued / deprecated:

\n

The [schema] shortcode was migrated to a new WPSSO Schema Shortcode add-on.

\n

All other features of the WPSSO Schema JSON-LD Markup (aka WPSSO JSON) add-on were integrated in the WPSSO Core v9.0.0 plugin.

\n

The WPSSO JSON Premium version remains available and supported:

\n
    \n
  • \n

    If you are using the Free / Standard version of WPSSO Core, you can safely update and continue using the WPSSO JSON Premium add-on.

    \n
  • \n
  • \n

    If you are using the WPSSO Core Premium version, you can deactivate and delete the WPSSO JSON Premium add-on (as all of its features are now available in the WPSSO Core Premium plugin).

    \n
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/wpsso-schema-json-ld.5.0.0.zip","tags":[],"donate_link":"","icons":{"default":"https://s.w.org/plugins/geopattern-icon/wpsso-schema-json-ld.svg"},"wporg":true},{"name":"ShortPixel Image Optimizer","slug":"shortpixel-image-optimiser","version":"4.22.5","author":"ShortPixel","author_profile":"https://profiles.wordpress.org/shortpixel","requires":"4.2.0","tested":"5.8.1","requires_php":"5.6","rating":92,"ratings":{"1":53,"2":12,"3":8,"4":12,"5":545},"num_ratings":630,"support_threads":12,"support_threads_resolved":8,"active_installs":300000,"downloaded":6967862,"last_updated":"2021-08-31 5:54pm GMT","added":"2014-11-05","homepage":"https://shortpixel.com/","short_description":"Speed up your website & boost your SEO by compressing old & new images and…","description":"

A freemium, easy to use, comprehensive, stable and frequently updated image compression plugin supported by the friendly team that created it. 🙂

\n

Increase your website’s SEO ranking, number of visitors and ultimately your sales by optimising any image or PDF document on your website.
\nShortPixel is an easy to use, lightweight, install-and-forget-about-it image optimization plugin that can compress all your past images and PDF documents with a single click. New images are automatically resized/rescaled and optimized on the fly, in the background. It’s also compatible with any gallery, slider or ecommerce plugin.

\n

Ready for a quick DEMO? Test our plugin here.
\nOr you can create a staging copy of your site using WP Staging and test it there.

\n

Short Pixel uses minimal resources and works well with any shared, cloud, VPS or dedicated web hosting. It can optimize any image you have on your website even the images that aren’t listed in Media Library like those in galleries like NextGEN, Modula or added directly via FTP!

\n

Both lossy and lossless image compression are available for the most common image types (JPG, PNG, GIF, WebP and AVIF) plus PDF files.
\nWe also offer glossy JPEG compression which is a very high quality lossy optimization algorithm. Specially designed for photographers!
\nOptimized images mean better user experience, better PageSpeed Insights or GTmetrix results, better Google PageRank and more visitors.

\n

Make an instant image compression test of your site or compress some images to test our optimization algorithms.

\n

Why is ShortPixel the best choice when it comes to image optimization or PDF compression?

\n
    \n
  • popular plugin with over 300,000 active installations – according to WordPress
  • \n
  • compress JPG (and its variations JPEG, JPEG 2000, JPEG XR), PNG, GIF (still or animated) images and also PDF documents
  • \n
  • option to convert any JPEG, PNG or GIF (even animated ones!) to WebP and AVIF for more Google love. How to enable WebP?. What is AVIF and why is it good?.
  • \n
  • option to automatically convert PNG to JPG if that will result in smaller images. Ideal for large images in PNG format
  • \n
  • option to include the next generation images (WebP and AVIF) into the front-end pages by using the <picture> tag instead of <img>, independent from generating them through the plugin
  • \n
  • compatible with WP Retina 2x – all retina images are automatically compressed. How to benefit from Retina displays?
  • \n
  • optimize thumbnails as well as featured images. You can also select individual thumbnails to exclude from optimization
  • \n
  • ability to optimize any image on your site including images in NextGEN Gallery and any other image galleries or sliders
  • \n
  • option to scale images down, with 2 different options, which is very useful to automatically resize large images. This applies to the featured images and there is no need for additional plugins like Imsanity
  • \n
  • CMYK to RGB conversion
  • \n
  • skip already optimized images
  • \n
  • 24h stellar support (24/7) directly from developers.
  • \n
  • easily test lossy/glossy/lossless versions of the images with a single click in your Media Library
  • \n
  • great for photographers: keep or remove EXIF data from your images, compress photos with lossless option
  • \n
  • works well with both HTTPS and HTTP websites
  • \n
  • uses progressive JPEG for larger images in order to speed up the image display
  • \n
  • you can run ShortPixel plugin on multiple websites or on a multisite with a single API Key
  • \n
  • it is safe to test and use the plugin: all the original images are by default saved in a local backup that can be restored with a click, either one by one or in bulk
  • \n
  • ‘Bulk’ optimize all the existing images in Media Library or in any gallery with one click
  • \n
  • works great for eCommerce websites using WooCommerce or other plugins
  • \n
  • works great with NextGEN gallery, Foo Gallery and any other galleries and sliders
  • \n
  • compatible with WP Engine hosted websites and all the major hosting providers
  • \n
  • compatible with WPML and WPML Media plugins
  • \n
  • no file size limit
  • \n
  • integrates with Gravity Forms post_image field type optimizing the images upon upload
  • \n
  • compatible with watermarking plugins
  • \n
  • option to deactivate auto-optimizing images on upload
  • \n
  • no credits are used for the images that are optimised less that 5%
  • \n
  • direct integration with CloudFlare, either by using an API Key or a Token
  • \n
  • 30 days optimization report with all image details and overall statistics
  • \n
  • We are GDPR compliant! Read more.
  • \n
  • free optimization credits for non-profits, contact us for details
  • \n
\n

How much does it cost?
\nShortPixel comes with 100 free credits/month and additional credits can be bought for as little as $4.99 for 5,000 image credits.
\nCheck out our prices.

\n
\n

Testimonials:
\n ★★★★★ A Super Plugin works very well 62% reduction overall. robertvarns
\n ★★★★★ The secret sauce for a WordPress website. mark1mark
\n ★★★★★ A must have plugin, great support! ElColo13
\n ★★★★★ Excellent Plugin! Even Better Customer Service! scaliendo
\n ★★★★★ Great image compression, solid plugin, equally great support. matters1959
\n more testimonials

\n
\n\n

Help us spread the word by recommending ShortPixel to your friends and collect 100 lifetime monthly additional image credits for each referred active user. Make money by promoting a great plugin with our 30% commission affiliate program.

\n

Other plugins by ShortPixel

\n\n

Get in touch!

\n\n

Actions and Filters for Developers

\n

The ShortPixel Image Optimiser plugin calls the following actions and filters:

\n
do_action( 'shortpixel_image_optimised', $post_id );\n
\n

upon successful optimization;

\n
do_action(\"shortpixel_before_restore_image\", $post_id);\n
\n

before restoring an image from backup;

\n
do_action(\"shortpixel_after_restore_image\", $post_id);\n
\n

after succesful restore;

\n
apply_filters(\"shortpixel_backup_folder\", $backup_folder, $main_file_path, $sizes);\n
\n

just before returning the ShortPixel backup folder, usually /wp-content/uploads/ShortpixelBackups. The $sizes are the sizes array from metadata;

\n
apply_filters('shortpixel_image_exists', file_exists($path), $path, $post_id);\n
\n

post ID is not always set, only if it’s an image from Media Library;

\n
apply_filters('shortpixel_image_urls', $URLs, $post_id);\n
\n

filters the URLs that will be sent to optimisation, $URLs is a plain array;

\n
apply_filters('shortpixel/db/chunk_size', $chunk);\n
\n

the $chunk is the value ShortPixel chooses to use as number of selected records in one query (based on total table size), some hosts work better with a different value;

\n
apply_filters('shortpixel/backup/paths', $PATHs, $mainPath);\n
\n

filters the array of paths of the images sent for backup and can be used to exclude certain paths/images/thumbs from being backed up, based on the image path. $mainPath is the path of the main image, while $PATHs is an array with all files to be backed up (including thumbnails);

\n
apply_filters('shortpixel/settings/image_sizes', $sizes);\n
\n

filters the array ($sizes) of image sizes which can be excluded from processing (displayed in the plugin Advanced settings).

\n

In order to define custom thumbnails to be picked up by the optimization you have two options, both comma separated defines:

\n
define('SHORTPIXEL_CUSTOM_THUMB_SUFFIXES', '_tl,_tr');\n
\n

will handle custom thumbnails like image-100x100_tl.jpg;

\n
define('SHORTPIXEL_CUSTOM_THUMB_INFIXES', '-uae');\n
\n

will handle custom thumbnails like image-uae-100×100.jpg;

\n
define('SHORTPIXEL_USE_DOUBLE_WEBP_EXTENSION', true);\n
\n

will tell the plugin to create double extensions for the WebP image counterparts, for example image.jpg.webp for image.jpg;

\n
define(\"SHORTPIXEL_NOFLOCK\", true);\n
\n

don’t use flock queue, only activate this when you have flock() denied errors on your installation;

\n
define(\"SHORTPIXEL_EXPERIMENTAL_SECURICACHE\", true);\n
\n

adds timestamps to URLS, to prevent hitting the cache. Useful for persistent caches.

\n

Hide the Cloudflare settings by defining these constants in wp-config.php:

\n
define('SHORTPIXEL_CFTOKEN', 'the Cloudflare API token that has Purge Cache right');\ndefine('SHORTPIXEL_CFZONE', 'The Zone ID from the domain settings in Cloudflare');\n
\n

Hide the WSO banner in the settings by defining this constant in wp-config.php:

\n
define('SHORTPIXEL_NO_BANNER', true);\n
\n

Alternatively, you can use this filter in your theme’s functions.php file:

\n
add_filter('shortpixel/settings/no_banner', true);\n
\n","download_link":"https://downloads.wordpress.org/plugin/shortpixel-image-optimiser.4.22.5.zip","tags":{"compressor":"compressor","convert-webp":"convert webp","image-optimization":"image optimization","optimize-images":"optimize images","resize":"resize"},"donate_link":"","icons":{"1x":"https://ps.w.org/shortpixel-image-optimiser/assets/icon-128x128.png?rev=1038819","2x":"https://ps.w.org/shortpixel-image-optimiser/assets/icon-256x256.png?rev=1038819"},"wporg":true},{"name":"Theme Kit for Twenty Twenty-One & Twenty Twenty (Customization, Gutenberg Blocks, Templates) – Twentig","slug":"twentig","version":"1.3.6","author":"Twentig","author_profile":"https://profiles.wordpress.org/twentig","requires":"5.5","tested":"5.8.1","requires_php":"5.6","rating":100,"ratings":{"1":0,"2":0,"3":0,"4":2,"5":109},"num_ratings":111,"support_threads":38,"support_threads_resolved":34,"active_installs":10000,"downloaded":150718,"last_updated":"2021-09-15 2:23pm GMT","added":"2019-05-29","homepage":"https://twentig.com","short_description":"Supercharge your WordPress theme (Twenty Twenty-One & Twenty Twenty) with customization options, enhanced Gutenberg blocks,…","description":"

The easy way to build a beautiful website.

\n

Twentig helps you customize the default WordPress theme (Twenty Twenty-One and Twenty Twenty) the way you want with Google Fonts, colors, custom layouts, and many more options.

\n

With enhanced Gutenberg blocks, pre-designed block templates, and starter websites, you’ve got everything you need to build stunning pages that look great on any device — no coding or design skills needed.

\n
\n

“Twentig is a plugin that essentially gives superpowers to the default theme.” — Justin Tadlock, WP Tavern

\n
\n

Customize the most popular WordPress theme. Your way.

\n

Twentig offers powerful features to customize the Twenty Twenty-One and Twenty Twenty themes — making it easier than ever to create your own professional website.

\n

Advanced theme customization. From post grid to sidebar to sticky header to footer layout, our plugin provides endless ways to enhance your WordPress theme. Change the look and feel of your website by customizing the fonts (Google Fonts), colors, global styles, 404 page, and more.

\n

Custom page templates. Control the look of your entire page with our page templates. Easily remove the page title, header, footer, or set a transparent header. Now you can use Gutenberg blocks to create a custom hero, landing page, coming soon page, and more.

\n

Tailored design. Twentig brings design improvements to the default WordPress theme. Our additional block settings and pre-designed block templates are specially built for it — so it’s simple to make beautiful pages with Gutenberg blocks.

\n

Start with a pre-built website.

\n

Instead of starting from scratch, you can quickly import one of Twentig’s starter websites crafted by award-winning designers.

\n

The simple way to import starter websites. Choose from a variety of starter websites and seamlessly load them in a few seconds in the Customizer. Preview and customize your theme any way you like before publishing it to your live site.

\n

Flexible import. Twentig lets you import full websites (Customizer settings, menus, widgets, and pages built with Gutenberg blocks). You can also only import what you need, be it the styling or the pages, on a fresh install or an existing website.

\n

Check out the starter websites to see the power and flexibility of Twentig.

\n

Do more with Gutenberg blocks.

\n

Twentig enhances the existing Gutenberg blocks — taking the WordPress block editor to a new level of design and creativity.

\n

Block customization made easy. We’ve added the right amount of features to the Gutenberg core blocks. So you can easily customize your blocks to fit your needs with just a few clicks.

\n

Powerful Gutenberg block features. Twentig provides alternative styles, advanced block settings, margin controls, and CSS classes. From columns style to group shape divider to typography settings, you have the best tools to customize the Gutenberg blocks and build gorgeous pages.

\n

Build your pages with ready-to-use templates.

\n

Twentig brings hundreds of pre-designed block patterns and page templates — making it easier and faster than ever to create stunning pages.

\n

Flexible block templates. Choose from a variety of versatile block patterns and page templates that you can mix and match to fit your project. Our block template library is designed to enable a wide range of uses and endless design possibilities.

\n

Professional design. Our templates are responsive and give your pages a professional look right from the start — no coding or design skills needed.

\n

Twentig features list

\n

Check out the screenshots to see how Twentig can transform your theme and the Gutenberg blocks.

\n

ADDITIONAL THEME OPTIONS

\n

Header

\n
    \n
  • Header layouts
  • \n
  • Sticky header
  • \n
  • Header width
  • \n
  • Header decoration
  • \n
  • Additional elements: search bar, social icons, button
  • \n
  • Logo width
  • \n
  • Custom logo for transparent header
  • \n
  • Menu link style
  • \n
  • Option to display the burger menu on tablet
  • \n
\n

Footer

\n
    \n
  • Footer layouts
  • \n
  • Footer widgets layout
  • \n
  • Footer width
  • \n
  • Custom copyright and remove “Powered by WordPress”
  • \n
  • Social icons
  • \n
\n

Site Layout

\n
    \n
  • Text width
  • \n
  • Wide width (Twenty Twenty-One theme)
  • \n
  • Site width to create a boxed layout site (Twenty Twenty-One theme)
  • \n
\n

Blog Posts Page

\n
    \n
  • Option to display the page title (Twenty Twenty-One theme)
  • \n
  • Blog layouts: stack, post grid, post grid card
  • \n
  • Blog sidebar (Twenty Twenty-One theme)
  • \n
  • Number of columns for post grid layouts
  • \n
  • Featured image options
  • \n
  • Blog content options
  • \n
  • Blog meta options
  • \n
  • Pagination style (Twenty Twenty-One theme)
  • \n
\n

Single Blog Post

\n
    \n
  • Featured image and post title layouts
  • \n
  • Blog sidebar (Twenty Twenty-One theme)
  • \n
  • Option to display the manual excerpt below the title
  • \n
  • Single post meta options
  • \n
  • Post navigation layout (Twenty Twenty theme)
  • \n
  • Hide comments section
  • \n
\n

Typography & Colors

\n
    \n
  • Google Fonts options (curated collection and custom Google Fonts)
  • \n
  • Google Fonts pairings and Google Fonts presets
  • \n
  • Font settings
  • \n
  • Color options
  • \n
\n

Pages

\n
    \n
  • Custom page templates: remove the page title, header, and footer, or set a transparent header
  • \n
  • Featured image and page title layouts
  • \n
\n

Custom 404 Page

\n
    \n
  • Option to assign any page as the 404 page
  • \n
\n

Additional Settings

\n
    \n
  • Minimal style for links (Twenty Twenty-One theme)
  • \n
  • Button style
  • \n
  • Separator style
  • \n
  • Social icons style (Twenty Twenty theme)
  • \n
\n

ADDITIONAL GUTENBERG BLOCK SETTINGS

\n
    \n
  • Gutenberg core blocks: top margin and bottom margin
  • \n
  • Group: shadow, border, shape divider, full height
  • \n
  • Columns: gutter, responsive layout, columns style (card, border), text alignment, stretched link
  • \n
  • Media & Text: styles (shadow, overlap), responsive layout, reverse stack order, stretched link, full height
  • \n
  • Cover: styles (shadow, inner border), stretched link, hover effect
  • \n
  • Heading: typography options, decoration
  • \n
  • Paragraph: wide width, typography options
  • \n
  • List: styles (dash, checkmark, arrow, border, no bullet, inline), typography options, spacing
  • \n
  • Image: styles (rounded, shadow, frame, border), image filter
  • \n
  • Gallery: stack variation, styles (rounded, frame), fixed width columns, image aspect ratio, gutter, responsive layout, caption size, border, image filter
  • \n
  • YouTube, Vimeo, SoundCloud, and Video blocks: style (frame)
  • \n
  • Latest Posts: styles (card, border), image aspect ratio, heading size, stretched link, text alignment
  • \n
  • Social Icons: hover effect
  • \n
  • Quote: additional styles
  • \n
  • Pullquote: additional styles
  • \n
  • Table: styles (border, inner border), vertical alignment
  • \n
  • Separator: style (short line), responsive visibility
  • \n
  • Spacer: responsive visibility
  • \n
\n

GUTENBERG TEMPLATE LIBRARY

\n

Hundreds of Gutenberg block patterns grouped by following categories:

\n
    \n
  • Columns
  • \n
  • Text Columns
  • \n
  • Text and Image
  • \n
  • Text
  • \n
  • Hero
  • \n
  • Cover
  • \n
  • Call to Action
  • \n
  • List
  • \n
  • Numbers, Stats
  • \n
  • Gallery
  • \n
  • Video, Audio
  • \n
  • Latest Posts
  • \n
  • Contact
  • \n
  • Team
  • \n
  • Testimonials
  • \n
  • Logos, Clients
  • \n
  • Pricing
  • \n
  • FAQ
  • \n
  • Events, Schedule
  • \n
\n

Dozens of pre-designed page templates grouped by following categories:

\n
    \n
  • Homepage
  • \n
  • About
  • \n
  • Services
  • \n
  • Contact
  • \n
  • Single Page
  • \n
\n

Get more

\n\n

Enjoying Twentig?

\n\n","download_link":"https://downloads.wordpress.org/plugin/twentig.1.3.6.zip","tags":{"gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","templates":"templates","theme":"theme","twenty-twenty-one":"twenty-twenty-one"},"donate_link":"https://www.paypal.com/donate?hosted_button_id=JTBTPQAFEA94E","icons":{"1x":"https://ps.w.org/twentig/assets/icon.svg?rev=2569439","2x":"https://ps.w.org/twentig/assets/icon-256x256.png?rev=2569439","svg":"https://ps.w.org/twentig/assets/icon.svg?rev=2569439"},"wporg":true},{"name":"Custom Post Type UI","slug":"custom-post-type-ui","version":"1.10.0","author":"WebDevStudios","author_profile":"https://profiles.wordpress.org/williamsba1","requires":"5.5","tested":"5.8.1","requires_php":"5.6","rating":94,"ratings":{"1":12,"2":3,"3":6,"4":9,"5":204},"num_ratings":234,"support_threads":54,"support_threads_resolved":36,"active_installs":1000000,"downloaded":8989005,"last_updated":"2021-10-05 1:54am GMT","added":"2010-02-26","homepage":"https://github.com/WebDevStudios/custom-post-type-ui/","short_description":"Admin UI for creating custom post types and custom taxonomies for WordPress","description":"

Custom Post Type UI provides an easy to use interface for registering and managing custom post types and taxonomies for your website.

\n

While CPTUI helps solve the problem of creating custom post types, displaying the data gleaned from them can be a whole new challenge. That’s why we created Custom Post Type UI Extended. View our Layouts page to see some examples that are available with Custom Post Type UI Extended.

\n

Official development of Custom Post Type UI is on GitHub, with official stable releases published on WordPress.org. The GitHub repo can be found at https://github.com/WebDevStudios/custom-post-type-ui. Please use the Support tab for potential bugs, issues, or enhancement ideas.

\n

Pluginize was launched in 2016 by WebDevStudios to promote, support, and house all of their WordPress products. Pluginize is not only creating new products for WordPress all the time, like CPTUI Extended, but also provides ongoing support and development for WordPress community favorites like CMB2 and more.

\n","download_link":"https://downloads.wordpress.org/plugin/custom-post-type-ui.1.10.0.zip","tags":{"cms":"cms","cpt":"cpt","custom-post-types":"custom post types","post":"post","types":"types"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=3084056","icons":{"1x":"https://ps.w.org/custom-post-type-ui/assets/icon-128x128.png?rev=2549362","2x":"https://ps.w.org/custom-post-type-ui/assets/icon-256x256.png?rev=2549362"},"wporg":true},{"name":"Flex Posts – Widget and Gutenberg Block","slug":"flex-posts","version":"1.8.1","author":"Tajam","author_profile":"https://profiles.wordpress.org/tajam","requires":"5.2","tested":"5.8.1","requires_php":false,"rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":17},"num_ratings":17,"support_threads":7,"support_threads_resolved":3,"active_installs":3000,"downloaded":25372,"last_updated":"2021-07-29 10:41am GMT","added":"2018-05-10","homepage":"https://tajam.id/flex-posts/","short_description":"A widget to display posts with thumbnails in various layouts. Fits nicely in any widget…","description":"

Flex Posts is a widget to display posts in various different layouts. It is useful for a news site where you need to display a lot of posts in a page.

\n

The widget is responsive so you can place it in any widget area. The widget content will adapt based on the width of its container. In a narrow area like standard sidebar, posts will be displayed vertically, but in a wider area, posts will be displayed in 2 or 3 columns depends on the container’s width.

\n

Widget Settings

\n
    \n
  • Title: Set the widget title. Leave it empty to hide the title section.
  • \n
  • Title URL: Set the title link url. Leave it empty to disable link in the title.
  • \n
  • Layout: Select a widget layout, from layout 1 to 4.
  • \n
  • Post type: Select the post type. Options include: Post, Page, custom post types if available, and any.
  • \n
  • Category: Select a category for the posts, or choose All Categories to disable this filter.
  • \n
  • Tag(s): Set a post tag (using the tag slug). You can also use comma separated value for multiple tags. Prepending a tag with a hyphen will exclude posts matching that tag. Eg, featured, -video will show posts tagged with featured but not video.
  • \n
  • Order by: Set the order in which the posts will be displayed. Options include: Newest, Oldest, Most Commented, Alphabetical, Random, Modified Date.
  • \n
  • Number of posts to show: Set the number of posts displayed.
  • \n
  • Number of posts to skip: Set the number of posts to displace or pass over.
  • \n
  • Show image on: Select in which posts the image will be displayed. Options include: All posts, First post only, or none.
  • \n
  • Image size: Select image size from registered image sizes.
  • \n
  • Show post title: Choose to show or hide the post title.
  • \n
  • Show categories: Choose to show or hide the categories.
  • \n
  • Show author: Choose to show or hide the author.
  • \n
  • Show date: Choose to show or hide the date.
  • \n
  • Show comments number: Choose to show or hide the comments number.
  • \n
  • Show excerpt: Choose to show or hide the excerpt
  • \n
  • Excerpt length: Set the number of words for the excerpt.
  • \n
  • Show read more link: Choose to show or hide the Read More link.
  • \n
  • Read more text: Set the text for the read more link. You can leave it empty to use the default text Read More.
  • \n
  • Show pagination: Choose to show or hide the pagination links.
  • \n
  • Additional class(es): Set a custom class for the widget container. You can use spaces to separate multiple classes.
  • \n
\n

Gutenberg Block

\n

Since version 1.1.0, Flex Posts also includes a gutenberg block. You can add the widget directly into the post/page content with the WP 5.0 block editor.

\n

Demo

\n

Please visit the live demo here: Flex Posts Demo

\n

Requirements

\n

This plugin has been tested and works with at least PHP 5.3 installed in your environment. But we strongly recommend you to use the latest PHP version, as using older versions may expose you to security vulnerabilities.

\n","download_link":"https://downloads.wordpress.org/plugin/flex-posts.zip","tags":{"category-posts":"category posts","grid":"grid","magazine":"magazine","news":"news","responsive":"responsive"},"donate_link":"https://tajam.id/","icons":{"1x":"https://ps.w.org/flex-posts/assets/icon-128x128.png?rev=1871802"},"wporg":true},{"name":"YARPP – Yet Another Related Posts Plugin","slug":"yet-another-related-posts-plugin","version":"5.27.5","author":"YARPP","author_profile":"https://profiles.wordpress.org/jeffparker","requires":"3.7","tested":"5.8.1","requires_php":"5.3","rating":94,"ratings":{"1":33,"2":2,"3":14,"4":45,"5":651},"num_ratings":745,"support_threads":25,"support_threads_resolved":9,"active_installs":100000,"downloaded":6558008,"last_updated":"2021-09-15 5:54pm GMT","added":"2008-01-02","homepage":"https://yarpp.com/","short_description":"The best WordPress plugin for displaying related posts. Simple and flexible, with a powerful proven…","description":"

Related Posts Plugin for WordPress

\n

Yet Another Related Posts Plugin (YARPP) is a professionally maintained, highly customizable, performant and feature rich plugin that displays pages, posts, and custom post types related to the current entry. YARPP introduces your visitors to other relevant content on your site — boosting visitor engagement, time on site and SEO. Related Posts can increase your pageviews up to 10%. Simply install, activate and watch your sessions and pageviews increase.

\n

Key Features

\n
    \n
  • An advanced and versatile algorithm: Using a customizable algorithm considering post titles, content, tags, categories, and custom taxonomies, YARPP finds related content from across your site
  • \n
  • Caching: Inbuilt cache makes subsequent queries super efficient and fast
  • \n
  • Custom Templates and Styles: Use a pre-built list or thumbnail template, or use the YARPP custom templating system for 100% control of how results are styles and displayed
  • \n
  • Flexible with a full range of placement options, including:\n\n
  • \n
  • Works with all languages, including those with full-width (double-byte) characters and those that don’t use spaces between words
  • \n
  • Custom post type and taxonomy support
  • \n
  • WordPress Multisite support
  • \n
  • bbPress forums support
  • \n
  • WooCommerce support
  • \n
  • Professionally maintained and supported with regular updates
  • \n
\n

YARPP Algorithm Explained

\n

\n

Contribute: Translate YARPP

\n

YARPP is available for translation directly on WordPress.org. Please check out the official Translator Handbook.

\n

Wide Support

\n

YARPP is the most popular and the highest rated Related Posts Plugin for WordPress. With your support, this plugin always strives to be the best WordPress plugin for Content Discovery and Related Posts.

\n

✔ Over 10 years of development
\n✔ Over 6 million downloads
\n✔ Translated into more than a dozen languages
\n✔ Professionally maintained and actively supported with regular updates
\n✔ Works with all languages

\n

YARPP works best with PHP 5.3 or greater, MySQL 5.6 or greater OR MariaDB 10.1 or greater, and WordPress 3.7 or greater. See the FAQ for answers to common questions.

\n","download_link":"https://downloads.wordpress.org/plugin/yet-another-related-posts-plugin.5.27.5.zip","tags":{"contextual-related-posts":"contextual related posts","posts":"posts","related-posts":"related posts","seo":"seo","similar-posts":"similar posts"},"donate_link":"https://yarpp.com","icons":{"1x":"https://ps.w.org/yet-another-related-posts-plugin/assets/icon-128x128.png?rev=2549977","2x":"https://ps.w.org/yet-another-related-posts-plugin/assets/icon-256x256.png?rev=2549977"},"wporg":true},{"name":"Superb WordPress Table (SEO Optimized Tables With Schema)","slug":"superb-tables","version":"1.0.9","author":"SuPlugins","author_profile":"https://profiles.wordpress.org/suplugins","requires":"3.0.1","tested":"5.8.1","requires_php":"5.2.4","rating":86,"ratings":{"1":0,"2":1,"3":0,"4":0,"5":3},"num_ratings":4,"support_threads":1,"support_threads_resolved":1,"active_installs":4000,"downloaded":36915,"last_updated":"2021-10-01 9:37am GMT","added":"2019-03-05","homepage":"https://superbthemes.com/plugins/superb-tables/","short_description":"Responsive & SEO Optimized tables. Get your Google Featured Snippets. Different table designs, table shortcodes…","description":"

Responsive & SEO Optimized tables. Get your Google Featured Snippets. Different table designs, table shortcodes & lightweight code.

\n

Click here to view the demo!

\n

Features

\n
    \n
  • Table Shortcodes
  • \n
  • Multiple Color Schemes
  • \n
  • Use Themes Own Table Design
  • \n
  • Schema Markup (Micro Data)
  • \n
  • Create Unlimited Tables
  • \n
  • Create Unlimited Rows
  • \n
  • Create unlimited Columns
  • \n
  • SEO-friendly Tables With Schema markup
  • \n
  • Purple Color Scheme
  • \n
  • Black/White Color Scheme
  • \n
  • Swap around on columns & rows with drag n’ drop
  • \n
  • Delete Tables & Remove Them From Your Database
  • \n
  • Gives you a better chance to get Google Featured Snippets
  • \n
  • Friendly User Support)
  • \n
  • GDPR Compliant
  • \n
  • W3C Valid Code
  • \n
  • WYSIWYG Functionality Editor
  • \n
\n

Configuring the plugin

\n

Once you’ve installed the plugin, check the left sidebar, and you will notice the Superb Table section. Click on it, and you can now create your first table. Just click on the Add New Table button.

\n

Feel free to add as many columns and rows as you want—inserting rows and columns is extremely easy.

\n

You have a few options to make your table stand apart. First, choose one of the three color schemes: standard, purple, or black. Second, choose your table design: default or custom. Block, left, and inline-block are the floating modes for your table. Finally, enable or disable the full width of the table.

\n

Once you finish your table, name it and save it. All you have to do now is to copy the shortcode and paste wherever you want, you can for example embed it in the Gutenberg Shortcode Block! (It works in the classic WordPress editor too)

\n

Consider purchasing our premium version for $11 to unlock more features!

\n

Why use a HTML table

\n

Displaying data within a comparison table is beneficial for not only readers but also content creators. A table does a better job than long paragraphs of text, underlined phrases, and bulleted lists. It shows a lot of information side by side in a concise format. Bloggers and content creators should create tables and insert the data. There’s no need to search for breathtaking expressions, cool descriptions, or digestible lists of items. It’s just pure data, and everyone is happy with this situation. You can read our full guide on How to Add a Table to Your WordPress Website with Superb Tables.

\n

Responsive Tables

\n

We developed Superb Tables mobile friendly by taking responsiveness into account, and as a result, you can make a WordPress table responsive by using our plugin. The tables are fully responsive regardless of the number of rows and columns. The plugin works on all mobile devices and tablets (iPhone, Android etc.). The plugin works with AMP.

\n

SEO Friendly WordPress Tables With Schema Markup

\n

“Schema markup“ and “featured snippets“ are two interconnected terms that are being used by more and more bloggers, SEO practitioners, and developers. Have you noticed that Google now provides complex answers in the form of lists, tables, paragraphs, or videos directly on the results page? Those are featured snippets.

\n

Moz claims that 23% of all search results include a featured snippet—a descriptive box displayed on the search results page providing information for your query. It may include paragraphs, lists, videos, or tables. You have to consider featured snippets when choosing a table plugin—can it help Google generate a featured snippet from the data within your table?

\n

We developed Superb Tables with featured snippets in mind, and you can use the plugin worry-free. We used schema markup, which is the code that helps search engine bots generate snippets from your content, including tables. It’s a great way for affiliate websites and blogs to promote their content.

\n

You must use WordPress tables with schema markup to get featured snippets on search engines, and Superb Tables is a reliable solution in this respect.

\n

Add Tables everywhere & use them for Any Purpose

\n

You can insert the SEO optimised tables with microdata everywhere through the shortcode. For example in a popup, widgets, Gutenberg blocks, email newsletter sent from your WordPress website. You can also insert it on any post or page, even category pages, blog feed, search page and your 404 page! The plugin is made for affiliates marketers and affiliate websites, having a good SERP rank in Google and Bing is critical. When you’re looking to improve your ranking then all of your plugins must be SEO optimized, otherwise it’s gonna be hard to create monetization through ads programs such as AdSense and Amazon Associates Program.

\n

We know that business is important for any modern blog or affiliate marketing website that’s looking to make a revenue from it. Remember to use HTTPS (SSL) on your website, a CDN and lightweight stats tracking tools such as Google Analytics to better your SEO as well.

\n

Guide to creating your Superb Tables

\n
    \n
  1. In the wordpress admin panel, go to the sidebar and click ‘Superb Tables’.
  2. \n
  3. Click the green ‘Add new table’ in the top left corner
  4. \n
  5. Fill in your table data, click ‘Save’
  6. \n
  7. Click ‘Superb Tables’ in the left sidebar and copy paste the ‘Table Shortcode’
  8. \n
  9. Insert the Table Shortcode (For example [spbtbl_sc id=1] ) in a post, page, widget or in HTML.
  10. \n
\n

You’re done!

\n

Resources & Inspiration

\n
    \n
  • Auto-Expand: https://codepen.io/vsync/pen/frudD
  • \n
  • Data Table: https://codepen.io/alassetter/pen/cyrfB
  • \n
  • Table DnD: https://github.com/isocra/TableDnD/
  • \n
  • Table icon: https://www.iconfinder.com/icons/1608863/table_icon#size=256
  • \n
  • Custom confirm: https://codepen.io/Ana_Champion/pen/JRbZEL
  • \n
  • Table design inspiration: https://codepen.io/lukepeters/pen/bfFur
  • \n
  • Table design inspiration: https://codepen.io/alassetter/pen/cyrfB
  • \n
  • Table design inspiration: https://uicookies.com/wp-content/uploads/2018/05/table-responsive-v2-1000×750.jpg
  • \n
  • Table design inspiration: https://uicookies.com/wp-content/uploads/2018/05/table-responsive-v1.jpg
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/superb-tables.1.0.9.zip","tags":{"content-tables":"content tables","responsive-tables":"responsive tables","table":"table","tables":"tables"},"donate_link":"","icons":{"1x":"https://ps.w.org/superb-tables/assets/icon-256x256.png?rev=2044672","2x":"https://ps.w.org/superb-tables/assets/icon-256x256.png?rev=2044672"},"wporg":true},{"name":"Floating Button","slug":"floating-button","version":"5.0.1","author":"Wow-Company","author_profile":"https://profiles.wordpress.org/wpcalc","requires":"3.2","tested":"5.8.1","requires_php":"5.3","rating":80,"ratings":{"1":1,"2":1,"3":0,"4":0,"5":5},"num_ratings":7,"support_threads":1,"support_threads_resolved":0,"active_installs":2000,"downloaded":34863,"last_updated":"2021-09-24 7:38am GMT","added":"2018-09-08","homepage":"https://wordpress.org/plugins/floating-button/","short_description":"Easily create a custom sticky floating buttons. The Floating Button will be the effective solution for increasing the recognition of your web resource","description":"

The Floating Button is the free WordPress plugin for creating the original sticky floating actions buttons. It allows you to install on the site floating buttons with unique thematic icons. The extension serves for placing both traditional navigation bar and additional block with useful information for user.

\n

The Floating Button plugin will be the effective solution for increasing the recognition of your web resource. Its connection will bring originality and novelty to the used theme of the site. The extension helps to configure user-friendly navigation, place useful information or contact panel.

\n

Main features

\n
    \n
  • 2 submenu;
  • \n
  • more than 1500+ FontAwesome icons;
  • \n
  • any links insertion;
  • \n
  • using the tooltips to provide more information;
  • \n
  • round buttons shape;
  • \n
  • LogIn link;
  • \n
  • LogOut link;
  • \n
  • Lost password link
  • \n
\n

Floating Button can be used for:

\n
    \n
  • site navigation;
  • \n
  • additional menu;
  • \n
  • social panel;
  • \n
  • user menu;
  • \n
  • Skype menu and others;
  • \n
  • And more…
  • \n
\n

Pro version

\n

Connect the Pro-version of the plugin to gain access to more features:

\n

Preview of Pro version

\n
    \n
  • create an unlimited amount of buttons;
  • \n
  • use up to 4 floating button positions;
  • \n
  • change the form of the menu display: Circle, Rounded square, Ellipse, Square;
  • \n
  • set the color of the main button and submenu items;
  • \n
  • accompany the change in navigation behavior with the highlight when hovering the mouse cursor;
  • \n
  • use the built-in user menu, social panel and print function;
  • \n
  • set the display according to the user role and status;
  • \n
  • change the menu output depending on the language of the page;
  • \n
  • add restrictions for screens with large or small resolution;
  • \n
  • use the categories on the site, exceptions and ID to place the menu on individual pages;
  • \n
  • insert the shortcode of the panel in the specified location;
  • \n
  • And more…
  • \n
\n

Buy Pro version

\n

Use with other plugins to maximize your results

\n\n

Support

\n

Search for answers and ask your questions at support center

\n","download_link":"https://downloads.wordpress.org/plugin/floating-button.5.0.1.zip","tags":{"circle-menu":"circle menu","float-menu":"float menu","floating-button":"floating button","floating-menu":"floating menu","sticky-button":"sticky button"},"donate_link":"https://wow-estore.com/item/floating-button-pro/","icons":{"1x":"https://ps.w.org/floating-button/assets/icon-128x128.png?rev=2533016","2x":"https://ps.w.org/floating-button/assets/icon-256x256.png?rev=2533016"},"wporg":true},{"name":"Breadcrumb NavXT","slug":"breadcrumb-navxt","version":"6.6.0","author":"John Havlik","author_profile":"https://profiles.wordpress.org/mtekk","requires":"4.9","tested":"5.7.3","requires_php":"5.5","rating":94,"ratings":{"1":5,"2":2,"3":4,"4":7,"5":104},"num_ratings":122,"support_threads":9,"support_threads_resolved":2,"active_installs":900000,"downloaded":10181836,"last_updated":"2021-04-01 2:13am GMT","added":"2007-12-01","homepage":"http://mtekk.us/code/breadcrumb-navxt/","short_description":"Breadcrumb NavXT, the successor to the popular WordPress plugin Breadcrumb Navigation XT, was written from the ground up to be better than its ancesto …","description":"

Breadcrumb NavXT, the successor to the popular WordPress plugin Breadcrumb Navigation XT, was written from the ground up to be better than its ancestor. This plugin generates locational breadcrumb trails for your WordPress powered blog or website. These breadcrumb trails are highly customizable to suit the needs of just about any website running WordPress. The Administrative interface makes setting options easy, while a direct class access is available for theme developers and more adventurous users.

\n

PHP Requirements

\n

Breadcrumb NavXT 5.2 and newer require PHP5.3
\nBreadcrumb NavXT 5.1.1 and older require PHP5.2

\n

Features (non-exhaustive)

\n
    \n
  • RDFa format Schema.org BreadcrumbList compatible breadcrumb generation.
  • \n
  • Extensive breadcrumb customization control via a settings page with appropriate default values for most use cases.
  • \n
  • Network admin settings page for managing breadcrumb settings for all subsites with configurable global priority.
  • \n
  • Built in WordPress Widget.
  • \n
  • Extensible via OOP and provided actions and filters.
  • \n
  • WPML compatible (enhanced compatibility with WPML extensions plugin).
  • \n
  • Polylang compatible (enhanced compatibility with Polylang extensions plugin).
  • \n
  • bbPress compatible (enhanced compatibility with bbPress extensions plugin).
  • \n
  • BuddyPress compatible (enhanced compatibility with BuddyPress extensions plugin).
  • \n
\n

Translations

\n

Breadcrumb NavXT now supports WordPress.org language packs. Want to translate Breadcrumb NavXT? Visit Breadcrumb NavXT’s WordPress.org translation project.

\n","download_link":"https://downloads.wordpress.org/plugin/breadcrumb-navxt.6.6.0.zip","tags":{"breadcrumb":"breadcrumb","breadcrumbs":"breadcrumbs","menu":"menu","navigation":"navigation","trail":"trail"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=FD5XEU783BR8U&lc=US&item_name=Breadcrumb%20NavXT%20Donation¤cy_code=USD&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted","icons":{"1x":"https://ps.w.org/breadcrumb-navxt/assets/icon.svg?rev=1927103","2x":"https://ps.w.org/breadcrumb-navxt/assets/icon-256x256.png?rev=2410525","svg":"https://ps.w.org/breadcrumb-navxt/assets/icon.svg?rev=1927103"},"wporg":true},{"name":"WP Recipe Maker","slug":"wp-recipe-maker","version":"7.6.1","author":"Bootstrapped Ventures","author_profile":"https://profiles.wordpress.org/brechtvds","requires":"4.4","tested":"5.8.1","requires_php":"5.4","rating":100,"ratings":{"1":1,"2":0,"3":1,"4":4,"5":209},"num_ratings":215,"support_threads":23,"support_threads_resolved":16,"active_installs":50000,"downloaded":1587108,"last_updated":"2021-09-16 11:33am GMT","added":"2016-09-07","homepage":"http://bootstrapped.ventures/wp-recipe-maker/","short_description":"The easy and user-friendly recipe plugin for everyone. Automatic JSON-LD metadata for food AND how-to recipes will improve your SEO!","description":"

WP Recipe Maker is the easy recipe plugin that everyone can use. An easy workflow allows you to add recipes to any post or page with automatic JSON-LD metadata for your recipes. This metadata will improve your SEO and get you more visitors!

\n

\n

Would you like to see the plugin in action before installing it? We have a WP Recipe Maker demo website showcasing all of the features!

\n
\n

Get the most out of this plugin!
\n Join the WP Recipe Maker Email Course and we’ll help you get started and learn all the tips and trick for using WPRM.

\n
\n

Features

\n

An overview of WP Recipe Maker features:

\n
    \n
  • Compatible with both the Classic Editor and new Gutenberg editor
  • \n
  • Includes an Elementor block and shortcode can be used in other page builders
  • \n
  • Easy workflow to add recipes to any post or page
  • \n
  • Uses schema.org/Recipe JSON-LD metadata optimised for Google Recipe search
  • \n
  • Uses schema.org/How-to JSON-LD metadata optimised for non-food recipes and instructions
  • \n
  • Supports both regular and Guided Recipes for Google metadata
  • \n
  • Google AMP compatible
  • \n
  • Integrates recipe metadata with Yoast SEO schema graph
  • \n
  • Option to disable metadata per recipe if you want to publish non-food or DIY recipes
  • \n
  • Compatible with Pinterest Rich Pins and a setting to easily opt out
  • \n
  • Outputs ItemList metadata for Recipe Roundup posts
  • \n
  • Associate ingredients with instructions to have them show up exactly where needed
  • \n
  • Keyboard accessible and AMP compatible ratings for comments
  • \n
  • Interactive print recipe page with room for ads and optional credit to your website
  • \n
  • Fallback recipe shows up when the plugin is disabled
  • \n
  • Include a recipe video in the template and metadata
  • \n
  • Add photos or videos to any step of the recipe
  • \n
  • Print recipe and jump to recipe shortcodes
  • \n
  • This plugin is fully responsive, your recipes will look good on any device
  • \n
  • Easily change the look and feel to fit your website in the Template Editor
  • \n
  • Structure your ingredients and instructions in groups (e.g. icing and cake batter)
  • \n
  • Full text search for your recipes
  • \n
  • Access your recipes through the WordPress REST API
  • \n
  • Built-in SEO check for your recipe metadata
  • \n
  • Compatible with RTL languages
  • \n
  • Import your recipes from other plugins (see below)
  • \n
\n

WP Recipe Maker Premium

\n

Looking for some more advanced functionality? We also have the WP Recipe Maker Premium add-on available with the following features:

\n
    \n
  • Use ingredient links for linking to products or other recipes
  • \n
  • Adjustable servings make it easy for your visitors
  • \n
  • Display all nutrition data in a nutrition label
  • \n
  • User Ratings allow visitors to vote without commenting
  • \n
  • Add a mobile-friendly kitchen timer to your recipes
  • \n
  • More Premium templates for a unique recipe template
  • \n
  • Create custom recipe taxonomies like price level, difficulty, …
  • \n
  • Use checkboxes for your ingredients and instructions
  • \n
\n

Even more add-ons can add the following functionality:

\n
    \n
  • Integration with a Nutrition API for automatic nutrition facts
  • \n
  • Unit Conversion to reach an international audience with a different unit system
  • \n
  • Have your users send in recipes through the Recipe Submission form
  • \n
  • Give your visitors the power of Recipe Collections for favourites, meal planning and more
  • \n
\n

Import Options

\n

Currently using another recipe plugin? No problem! You can easily migrate all your existing recipes to WP Recipe Maker if you’re using any of the following plugins:

\n
    \n
  • Tasty Recipes
  • \n
  • Create by Mediavine
  • \n
  • EasyRecipe
  • \n
  • WP Ultimate Recipe
  • \n
  • Recipe Card Blocks by WPZOOM
  • \n
  • Meal Planner Pro
  • \n
  • BigOven
  • \n
  • ZipList and Zip Recipes
  • \n
  • Yummly
  • \n
  • Yumprint Recipe Card
  • \n
  • FoodiePress
  • \n
  • Cooked
  • \n
  • Cookbook
  • \n
  • Simple Recipe Pro
  • \n
  • Purr Recipe Plugin
  • \n
  • Recipes by Simmer
  • \n
  • WordPress.com shortcode
  • \n
  • JSON-LD HTML Script
  • \n
  • Multi Rating (ratings only)
  • \n
  • (Need anything else? Just ask!)
  • \n
\n

This plugin is in active development. Feel free to contact us with any feature requests or ideas.

\n","download_link":"https://downloads.wordpress.org/plugin/wp-recipe-maker.zip","tags":{"cooking":"cooking","food":"food","ingredients":"ingredients","recipe":"Recipe","recipes":"recipes"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QG7KZMGFU325Y","icons":{"1x":"https://ps.w.org/wp-recipe-maker/assets/icon-128x128.png?rev=1491788","2x":"https://ps.w.org/wp-recipe-maker/assets/icon-256x256.png?rev=1491788"},"wporg":true},{"name":"Slim SEO – Fast & Automated WordPress SEO Plugin","slug":"slim-seo","version":"3.10.2","author":"eLightUp","author_profile":"https://profiles.wordpress.org/rilwis","requires":"4.5","tested":"5.8.1","requires_php":"5.6","rating":92,"ratings":{"1":1,"2":3,"3":0,"4":0,"5":27},"num_ratings":31,"support_threads":10,"support_threads_resolved":6,"active_installs":10000,"downloaded":179104,"last_updated":"2021-09-27 6:47am GMT","added":"2018-12-31","homepage":"https://wpslimseo.com","short_description":"A full-featured SEO plugin for WordPress that's lightweight, blazing fast with minimum configuration. No bloats,…","description":"

A Fast & Automated SEO Plugin For WordPress

\n

Currently there are many SEO plugins for WordPress in the market. But these plugins often have too many options and are very complicated for ordinary users. Access to their configuration section, you will easily get lost in a maze of explanations and options that you sometimes don’t understand. Besides, there are ads!

\n

So how can an ordinary user use an SEO plugin?

\n

SEO should be an integrated part of WordPress, where users don’t need or need very little effort to configure for SEO. The main reason is that not everyone understands the terms of SEO and how to configure them optimally.

\n

So, we made Slim SEO.

\n

Slim SEO is a full-featured SEO plugin, that’s done right! It provides a complete SEO solution for WordPress where the configuration has been done automatically. Users do not need to care about their complex and semantic options.

\n

So what does Slim SEO do?

\n

Slim SEO Features

\n

Slim SEO helps you do the following jobs automatically:

\n

1. Meta Tags

\n

The following meta tags are auto-generated and optimized for the best SEO scores.

\n\n

2. XML Sitemap

\n

Slim SEO automatically generates XML sitemap (at domain.com/sitemap.xml) to submit to search engines. With XML sitemaps, your website are indexed fast and completely.

\n

3. Breadcrumbs

\n

The plugin allows you to output a breadcrumb trail on your website easily. It automatically fetches the information from the current post and output a hierarchy for you. You can also style the breadcrumbs to match your theme style.

\n

4. Schema (Structured Data)

\n

Schema is a way that describes structured data for search engines. Based on the data provided, search engines can show the content in the search results page in a more appealing way.

\n

Slim SEO automatically adds the some structured data to the website via JSON-LD which makes your website more SEO-friendly. Not only schemas are created by the plugin, there are also meaningful connections between them. For example, an article (single post) is the main entity of the current webpage. Slim SEO does that all without any configuration.

\n

5. Auto Redirection

\n
    \n
  • Auto redirect attachment page to the attachment file URL.
  • \n
  • Auto redirect author page to the homepage if the website has only one author or the author doesn’t have any posts.
  • \n
\n

6. Open Source

\n

Slim SEO has different contributors which help make Slim SEO a quality product. Join us on Github!

\n

Who should use Slim SEO?

\n

Everyone can use Slim SEO!

\n

However, Slim SEO is perfectly suitable for users who prefer simplicity or do not like the complicated options that other SEO plugins provide. It’s also a good choice for users with little SEO knowledge and just want to use SEO plugins to automate their jobs.

\n

If you like this plugin, you might also like our other products: Meta Box and GretaThemes.

\n","download_link":"https://downloads.wordpress.org/plugin/slim-seo.3.10.2.zip","tags":{"google":"google","schema":"schema","search-engine-optimization":"search engine optimization","seo":"seo","sitemap":"sitemap"},"donate_link":"https://wpslimseo.com/pro/","icons":{"1x":"https://ps.w.org/slim-seo/assets/icon.svg?rev=2005049","svg":"https://ps.w.org/slim-seo/assets/icon.svg?rev=2005049"},"wporg":true},{"name":"Schema & Structured Data for WP & AMP","slug":"schema-and-structured-data-for-wp","version":"1.9.85","author":"Magazine3","author_profile":"https://profiles.wordpress.org/magazine3","requires":"3.0","tested":"5.8.1","requires_php":false,"rating":94,"ratings":{"1":13,"2":1,"3":2,"4":10,"5":183},"num_ratings":209,"support_threads":29,"support_threads_resolved":13,"active_installs":80000,"downloaded":2416083,"last_updated":"2021-09-24 10:57am GMT","added":"2018-08-06","homepage":"","short_description":"Schema & Structured Data for WP & AMP adds Google Rich Snippets markup according to…","description":"

Schema & Structured Data for WP & AMP adds Google Rich Snippets markup according to Schema.org guidelines to structure your site for SEO. (AMP Compatible)

\n

Features

\n
    \n
  • Schema Types: Currently, We have more than 35 schema types such as Blog Posting, News article, Local Business, Web page, Article, Recipe, Product, and Video Object view all. We are going to add all the schema types in the future. You can request the one you want and we will add it for you!
  • \n
  • Conditional Display Fields: Meaning you include or exclude any posts, pages, post types, taxonomies and more!
  • \n
  • Knowlegde Base Support: Recognize the content based on the organization or a person via data type option.
  • \n
  • Full AMP Compatiblity: Supports the AMP for WP and AMP by Automattic plugins.
  • \n
  • Advanced Settings: Play with output of schema markup using these options (Defragment, Add in Footer, Pretty Print, MicroData CleanUp etc.)
  • \n
  • Migration: Import the data from other schema plugins such as (SEO Pressor, WP SEO Schema, Schema Plugin etc )
  • \n
  • Compatibility: Generate the schema markup for the plugins. We have provided schema support for them. Few of them are – kk Star Ratings, WP-PostRatings, bbPress
  • \n
  • Google Review: Display your business google reviews and its schema markup on your website.
  • \n
  • [Premium] Reviews ( Fetch reviews from 75+ platforms ).
  • \n
  • [Premium] Priority Support. Get it We get more than 100 technical queries a day but the Priority support plan will help you skip that and get the help from a dedicated team.
  • \n
  • Review Module: Create your own review rating box with pros and cons and its schema markup
  • \n
  • Schema Type Blocks in Gutenberg: Create your own content with the blocks and json schema markup will be added automatically
  • \n
  • Unlimited Custom Post Types: You can control to represent the Rich Snippets data in the google search console using unlimited custom post types.
  • \n
  • Easy to use with Minimal Settings
  • \n
  • Archive Page Listing Support
  • \n
  • JSON-LD Format
  • \n
  • Easy to use Setup Wizard
  • \n
  • Breadcrumbs Listing Support
  • \n
  • Comments Post comments Support
  • \n
  • Constant Development & New Features: We’ll be releasing the constant updates along with the more handy features as soon as we get the feedback from the users.
  • \n
\n

Supported Schema Types

\n
    \n
  • Apartment
  • \n
  • House
  • \n
  • SingleFamilyResidence
  • \n
  • Article
  • \n
  • Blogposting
  • \n
  • Book
  • \n
  • Course
  • \n
  • DiscussionForumPosting,
  • \n
  • DataFeed
  • \n
  • HowTo
  • \n
  • NewsArticle
  • \n
  • QAPage
  • \n
  • Review
  • \n
  • Recipe
  • \n
  • TVSeries
  • \n
  • SoftwareApplication
  • \n
  • MobileApplication
  • \n
  • SpecialAnnouncement (Related to Coronavirus)
  • \n
  • TechArticle
  • \n
  • WebPage
  • \n
  • Event
  • \n
  • VideoGame
  • \n
  • JobPosting
  • \n
  • Service
  • \n
  • Trip
  • \n
  • AudioObject
  • \n
  • VideoObject
  • \n
  • MedicalCondition
  • \n
  • MusicPlaylist
  • \n
  • MusicAlbum
  • \n
  • LocalBusiness with all the sub categories
  • \n
  • Product
  • \n
  • TouristAttraction
  • \n
  • TouristDestination
  • \n
  • LandmarksOrHistoricalBuildings
  • \n
  • HinduTemple
  • \n
  • Church
  • \n
  • Mosque
  • \n
  • Person
  • \n
  • View All
  • \n
\n

Extensions

\n

Some useful extensions to extend Schema & Structured Data for WP & AMP features, check Woocommerce Compatibility For Schema, Cooked Compatibility For Schema and We are going to add more.

\n

Support

\n

We try our best to provide support on WordPress.org forums. However, We have a special team support where you can ask us questions and get help. Delivering a good user experience means a lot to us and so we try our best to reply each and every question that gets asked.

\n

Bug Reports

\n

Bug reports for Schema & Structured Data for WP & AMP are welcomed on GitHub. Please note GitHub is not a support forum, and issues that aren’t properly qualified as bugs will be closed.

\n

Credits

\n
    \n
  • Select2 used https://github.com/select2/select2 – License URI: https://github.com/select2/select2/blob/develop/LICENSE.md,
  • \n
  • Merlin WP used https://github.com/richtabor/MerlinWP – License URI: https://github.com/richtabor/MerlinWP/blob/master/LICENSE,
  • \n
  • jquery-timepicker used https://github.com/jonthornton/jquery-timepicker
  • \n
  • Rate Yo! used https://github.com/prrashi/rateYo – License URI: https://github.com/prrashi/rateYo/commit/f3812fe96c38b08627d209795176053550fb1427
  • \n
  • Aqua Resizer used http://aquagraphite.com – License URI: WTFPL – http://sam.zoy.org/wtfpl/
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/schema-and-structured-data-for-wp.1.9.85.zip","tags":{"google-snippets":"google snippets","rich-snippets":"rich snippets","schema":"schema","schema-org":"schema.org","structured-data":"structured data"},"donate_link":"","icons":{"1x":"https://ps.w.org/schema-and-structured-data-for-wp/assets/icon-128x128.png?rev=1922284","2x":"https://ps.w.org/schema-and-structured-data-for-wp/assets/icon-256x256.png?rev=1922284"},"wporg":true},{"name":"GenerateBlocks","slug":"generateblocks","version":"1.3.5","author":"Tom Usborne","author_profile":"https://profiles.wordpress.org/edge22","requires":"5.4","tested":"5.8.1","requires_php":"5.6","rating":98,"ratings":{"1":0,"2":0,"3":2,"4":1,"5":72},"num_ratings":75,"support_threads":21,"support_threads_resolved":6,"active_installs":50000,"downloaded":252265,"last_updated":"2021-07-19 6:12pm GMT","added":"2020-05-19","homepage":"https://generateblocks.com","short_description":"A small collection of lightweight WordPress blocks that can accomplish nearly anything.","description":"

\n

\n

Add incredible versatility to your editor without bloating it with tons of one-dimensional Gutenberg blocks. With GenerateBlocks, you can learn a handful of blocks deeply and use them to build anything.

\n

GenerateBlocks works hand-in-hand with GeneratePress, but is built to work with any theme.

\n

Looking for more features? Check out GenerateBlocks Pro.

\n

Container

\n

Organize your content into rows and sections. The Container block is the foundation of your content, allowing you to design unique sections for your content.

\n

Grid

\n

Create advanced layouts with flexible grids. The Grid block gives you the ability to create any kind of layout you can imagine.

\n

Headline

\n

Craft text-rich content with advanced typography. Everything from headings to paragraphs – take full control of your text.

\n

Buttons

\n

Drive conversions with beautiful buttons.

\n

Performance

\n

We take performance seriously. Minimal CSS is generated only for the blocks you need, and our HTML structure is as simple as possible while allowing for maximum flexibility.

\n

Coding standards

\n

Built to the highest coding standards for security, stability and future compatibility.

\n

Fully responsive

\n

Every block comes with tablet and mobile controls, giving you total control of your responsive design.

\n

Documentation

\n

Check out our documentation for more information on the individual blocks and how to use them.

\n","download_link":"https://downloads.wordpress.org/plugin/generateblocks.1.3.5.zip","tags":{"blocks":"blocks","container":"container","grid":"grid","gutenberg":"gutenberg","headline":"headline"},"donate_link":"https://generateblocks.com","icons":{"1x":"https://ps.w.org/generateblocks/assets/icon-128x128.png?rev=2336822","2x":"https://ps.w.org/generateblocks/assets/icon-256x256.png?rev=2336822"},"wporg":true},{"name":"Blackhole for Bad Bots","slug":"blackhole-bad-bots","version":"3.2","author":"Jeff Starr","author_profile":"https://profiles.wordpress.org/specialk","requires":"4.1","tested":"5.8.1","requires_php":"5.6.20","rating":98,"ratings":{"1":2,"2":0,"3":3,"4":2,"5":108},"num_ratings":115,"support_threads":4,"support_threads_resolved":4,"active_installs":30000,"downloaded":310531,"last_updated":"2021-07-19 8:41pm GMT","added":"2016-02-18","homepage":"https://perishablepress.com/blackhole-bad-bots/","short_description":"Blackhole is a WordPress security plugin that detects and traps bad bots in a virtual…","description":"
\n

Add your own virtual black hole trap for bad bots.

\n
\n

Bye bye bad bots..

\n

Bad bots are the worst. They do all sorts of nasty stuff and waste server resources. The Blackhole plugin helps to stop bad bots and save precious resources for legit visitors.

\n

How does it work?

\n

First the plugin adds a hidden trigger link to the footer of your pages. You then add a line to your robots.txt file that forbids all bots from following the hidden link. Bots that then ignore or disobey your robots rules will crawl the link and fall into the trap. Once trapped, bad bots are denied further access to your WordPress site.

\n

I call it the “one-strike” rule: bots have one chance to obey your site’s robots.txt rule. Failure to comply results in immediate banishment. The best part is that the Blackhole only affects bad bots: human users never see the hidden link, and good bots obey the robots rules in the first place. Win-win! 🙂

\n

Using a caching plugin? Check out the Installation notes for important info.

\n

Features

\n
    \n
  • Easy to set up
  • \n
  • Squeaky clean code
  • \n
  • Focused and modular
  • \n
  • Lightweight, fast and flexible
  • \n
  • Built with the WordPress API
  • \n
  • Works with other security plugins
  • \n
  • Easy to reset the list of bad bots
  • \n
  • Easy to delete any bot from the list
  • \n
  • Regularly updated and “future proof”
  • \n
  • Blackhole link includes “nofollow” attribute
  • \n
  • Plugin options configurable via settings screen
  • \n
  • Works silently behind the scenes to protect your site
  • \n
  • Whitelists all major search engines to never block
  • \n
  • Focused on flexibility, performance, and security
  • \n
  • Email alerts with WHOIS lookup for blocked bots
  • \n
  • Complete inline documentation via the Help tab
  • \n
  • Provides setting to whitelist any IP addresses
  • \n
  • Customize the message displayed to bad bots 😉
  • \n
  • One-click restore the plugin default options
  • \n
  • Does NOT use or require any .htaccess rules
  • \n
\n

Blackhole for Bad Bots protects your site against bad bots, spammers, scrapers, scanners, and other automated threats.

\n

Not using WordPress? Check out the standalone PHP version of Blackhole!

\n

Check out Blackhole Pro and level up with advanced features!

\n

Whitelist

\n

By default, this plugin does NOT block any of the major search engines (user agents):

\n
    \n
  • AOL.com
  • \n
  • Baidu
  • \n
  • Bingbot/MSN
  • \n
  • DuckDuckGo
  • \n
  • Googlebot
  • \n
  • Teoma
  • \n
  • Yahoo!
  • \n
  • Yandex
  • \n
\n

These search engines (and all of their myriad variations) are whitelisted via user agent. So are a bunch of other “useful” bots. They always are allowed full access to your site, even if they disobey your robots.txt rules. This list can be customized in the plugin settings. For a complete list of whitelisted bots, visit the Help tab in the plugin settings (under “Whitelist Settings”).

\n

Privacy

\n

User Data: This plugin automatically blocks bad bots. When bad bots fall into the trap, their IP address, user agent, and other request data are stored in the WP database. No other user data is collected by this plugin. At any time, the administrator may delete all saved data via the plugin settings.

\n

Services: This plugin does not connect to any third-party locations or services.

\n

Cookies: This plugin does not set any cookies.

\n

Header Image Courtesy NASA/JPL-Caltech.

\n

Support development of this plugin

\n

I develop and maintain this free plugin with love for the WordPress community. To show support, you can make a donation or purchase one of my books:

\n\n

And/or purchase one of my premium WordPress plugins:

\n\n

Links, tweets and likes also appreciated. Thanks! 🙂

\n","download_link":"https://downloads.wordpress.org/plugin/blackhole-bad-bots.3.2.zip","tags":{"anti-spam":"anti-spam","bad-bots":"bad bots","blackhole":"blackhole","honeypot":"honeypot","security":"security"},"donate_link":"https://monzillamedia.com/donate.html","icons":{"1x":"https://ps.w.org/blackhole-bad-bots/assets/icon-128x128.png?rev=1471215","2x":"https://ps.w.org/blackhole-bad-bots/assets/icon-256x256.png?rev=1471215"},"wporg":true},{"name":"Page View Count","slug":"page-views-count","version":"2.4.12","author":"a3rev Software","author_profile":"https://profiles.wordpress.org/a3rev","requires":"5.0","tested":"5.8.1","requires_php":false,"rating":78,"ratings":{"1":8,"2":5,"3":2,"4":3,"5":30},"num_ratings":48,"support_threads":3,"support_threads_resolved":0,"active_installs":20000,"downloaded":407119,"last_updated":"2021-07-19 10:48am GMT","added":"2012-12-21","homepage":"","short_description":"Places an icon, all time views count and views today count at the bottom of posts, pages and custom post types on any WordPress website.","description":"

A beautifully simple to set up plugin that gives site visitors and site owners the ability to quickly and easily see how many people have visited that page or post.

\n

FEATURES

\n
    \n
  • On the front end it adds an icon and page views count to the bottom or top of pages and posts on your WordPress website.
  • \n
  • Switch ON | OFF hide Page Views Count for all Posts, Pages and all custom posts types including WooCommerce custom post types.
  • \n
  • Set the Position of the counter to show at the top of the page or post or at the bottom
  • \n
  • Set alignment of the counter Left, Right or Centre
  • \n
  • Set the colour and size of the counter icon
  • \n
  • Option to use load by Ajax to prevent the count from being cached by caching plugins
  • \n
  • Option to Manually set / edit total views and views today from Page View Count meta box on any post or page editor
  • \n
  • Add Page Views counter via the PVC Gutenberg block
  • \n
  • Add Page Views counter via shortcode
  • \n
  • Add Page Views counter via widget
  • \n
  • Developers can add the Page Views Counter via php tag
  • \n
  • All options and settings are point click – absolutely no coding required
  • \n
\n

COMPATIBILTY

\n

Compatible with WordPress 5.3+ and backwards to WP 4.9.0. Compatible with Classic Editor plugin with 5.0+ (Gutenberg Deactivated)

\n

GUTENBERG BLOCK

\n

Using the Gutenberg Editor. Use the Page View Count Block to add the counter to any page or post content. Block search for ‘Page Views’ or selecting the block from the a3rev Blocks menu.

\n

Adding the Page Views block to your content automatically deactivates the Global Page View counter on the post or page.

\n

ELEMENTOR TEMPLATES

\n

Fully compatible with Elementor templates. Add counter via Shortcode or widget to any template.

\n

DEVELOPERS

\n

On the plugins dashboard in the + Page Views Count Function options box you will find the Page Views Count functions and notes on how to use them.

\n
    \n
  • Use to manually add Page views count to any content or object in the theme.
  • \n
  • Use to add page View Count to any content that is not create using WordPress custom post / taxonomy type.
  • \n
  • Use to create a custom position of the Page Views Count
  • \n
  • Functions support echo and return parameters when getting visitor stats on any variable.
  • \n
\n

TROUBLESHOOTING

\n
    \n
  • The number 1 support request we get about the plugin is that it double or triple counts page or post loads. Yes it does and if you see that it is a Red Flag that you have a misconfiguration or bug in your theme or a plugin. Page Views Count does exactly that – counts each time the page or post is loading in the browser – if its counting twice it is because the browser is double loading the page. That is a bad thing and you or your developer needs to fix that.
  • \n
\n

CONTRIBUTE

\n

When you download Page Views Count, you join our community. Regardless of if you are a WordPress beginner or experienced developer if you’?re interested in contributing to Page Views Count development head over to the Page Views Count GitHub Repository to find out how you can contribute.
\nWant to add a new language to Page Views Count? Great! You can contribute via translate.wordpress.org

\n

Usage

\n
    \n
  1. \n

    Install and activate the plugin

    \n
  2. \n
  3. \n

    Go to WordPress Settings menu > Page View Count Menu

    \n
  4. \n
  5. \n

    Activate Page Views Count and use the options box settings to make the desired configuration

    \n
  6. \n
  7. \n

    Be sure to clear any caching and browser cache to see your Page Views Count

    \n
  8. \n
\n","download_link":"https://downloads.wordpress.org/plugin/page-views-count.2.4.12.zip","tags":{"gutenberg":"gutenberg","page-view-count":"page view count","post-view-count":"post view count","post-views":"post views","wordpress-page-view":"wordpress page view"},"donate_link":"","icons":{"1x":"https://ps.w.org/page-views-count/assets/icon.svg?rev=986301","2x":"https://ps.w.org/page-views-count/assets/icon-256x256.png?rev=986301","svg":"https://ps.w.org/page-views-count/assets/icon.svg?rev=986301"},"wporg":true},{"name":"Newspack Listings","slug":"newspack-listings","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://github.com/Automattic/newspack-listings/releases","short_description":"

Create reusable content as listings and add them to lists wherever core blocks can be used

\n","description":"\n\n\n

Create reusable content as listings and add them to lists wherever core blocks can be used

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2021/02/listings2-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2021/02/listings2-372x209.jpg","svg":""},"wporg":false},{"name":"Newspack Newsletters","slug":"newspack-newsletters","version":"1.33.1","author":"Automattic","author_profile":"https://profiles.wordpress.org/automattic","requires":"5.3","tested":"5.8.0","requires_php":"5.6","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":1,"support_threads_resolved":1,"active_installs":600,"downloaded":3353,"last_updated":"2021-09-14 10:52pm GMT","added":"2021-02-15","homepage":"https://newspack.pub","short_description":"Create email newsletters with the Gutenberg editor and distribute them with your Mailchimp or Constant Contact mailing lists.","description":"

Create email newsletters with the Gutenberg editor and send them via Mailchimp or Constant Contact, all without leaving WP Admin! Newspack Newsletters lets you build eye-catching newsletters using the WordPress editing tools you’re already familiar with, and lets you save drafts, create reusable layouts, send to your existing mailing list, and also publish them to your website.

\n

Use and create newsletter layouts

\n

Newspack Newsletters comes with four default layouts to help you start building newsletters quickly. You can use an existing layout, or start fresh with a blank page. You can also create and save your own layouts, or alter the ones that come bundled with the plugin and save the settings, and use them for future campaigns.

\n

Use Gutenberg blocks and settings

\n

Newspack Newsletters supports most core Gutenberg blocks and configurations, letting you use blocks like Group, Button, Columns, and more, to create dynamic layouts. The plugin will warn you when a block will not display as expected in an email.

\n

Customize your newsletter’s appearance

\n

You can customize your newsletters further by changing the header and body fonts, or picking a background color.

\n

Newspack Blocks

\n

Newspack Newsletters comes bundled with the Newspack Post Inserter block. This block lets you insert excerpts from live posts on your site, and, once inserted, will turn those posts into static content using the Header and Paragraph blocks, linking back to your site.

\n

Need to target a post title to your newsletter audience? Not a problem! You can edit these blocks, and add others, to make sure they’ speak to your readers.

\n

Add ads!

\n

Monetize your newsletters by including advertising. The Newspack Newsletters plugin lets you create ads, which are stored as a custom post type. Ads are automatically inserted into your newsletters, and can also be toggled off on a newsletter-by-newsletter basis.

\n

Send with ease

\n

Newspack Newsletters connects to your Mailchimp or Constant Contact accounts to send emails using the mailing lists you’ve collected there, all without leaving the WordPress Admin.

\n

Before sending your campaign, you can send test emails to one or more email addresses at a time from the newsletter editor, to make sure everything is pixel perfect before sharing with the world.

\n

About Newspack

\n

The Newspack Newletters plugin is part of Newspack, a suite of tools to help small to mid-sized news organizations publish and generate revenue with WordPress. Newspack is a collaborative project by WordPress.com and the Google News Initiative. You can learn more about Newspack by visiting our website.

\n

Credits

\n

The beach photograph in the screenshot is by Life of Pix, licensed CC0.

\n","download_link":"https://downloads.wordpress.org/plugin/newspack-newsletters.zip","tags":{"constant-contact":"constant contact","mailchimp":"mailchimp","newsletters":"newsletters","newspack":"Newspack","wordpress-com":"WordPress.com"},"donate_link":"","icons":{"1x":"https://ps.w.org/newspack-newsletters/assets/icon.svg?rev=2475195","2x":"https://ps.w.org/newspack-newsletters/assets/icon-256x256.png?rev=2475195","svg":"https://ps.w.org/newspack-newsletters/assets/icon.svg?rev=2475195"},"wporg":true},{"name":"Web Stories","slug":"web-stories","version":"1.12.0","author":"Google","author_profile":"https://profiles.wordpress.org/google","requires":"5.5","tested":"5.8.1","requires_php":"7.0","rating":84,"ratings":{"1":5,"2":2,"3":2,"4":4,"5":32},"num_ratings":45,"support_threads":130,"support_threads_resolved":95,"active_installs":30000,"downloaded":365112,"last_updated":"2021-10-05 10:37pm GMT","added":"2020-09-22","homepage":"https://wp.stories.google/","short_description":"Web Stories are a visual storytelling format for the open web which immerses your readers in fast-loading, full-screen, and visually rich experiences.","description":"

Web Stories are a free, open-web, visual storytelling format for the web, enabling you to easily create visual narratives with engaging animations and tappable interactions, and immerse your readers in great and fast-loading full-screen experiences.

\n

Benefits of Web Stories

\n

The Web Stories format puts features and capabilities at your fingertips to engage with your audience via the power of storytelling on the open web. Specifically, you can:

\n
    \n
  • Create beautiful and engaging content easily: Web Stories make the production of stories as easy as possible from a technical perspective.
  • \n
  • Enjoy creative flexibility for editorial freedom and branding: The Web Stories format comes with preset but flexible layout templates, standardized UI controls, and components for sharing and adding follow-on content.
  • \n
  • Share and link your stories on the open web: Web Stories are part of the open web and can be shared and embedded across sites and apps without being confined to a single ecosystem.
  • \n
  • Track and measure your stories: Supports analytics and bookend capabilities for viral sharing and monetization.
  • \n
  • Capture the attention of your readers by offering fast loading times to your stories: Web Stories are lightning fast so that your audience stays engaged and entertained.
  • \n
  • Engage with your readers via immersive storytelling: Web Stories are a new and modern way to reach existing readers.
  • \n
  • Monetize effectively the beautiful and engaging stories you create: Web Stories enable monetization capability for publishers using affiliate links. For advertisers, Stories is a way to reach a unique audience within a new storytelling experience.
  • \n
\n

Web Stories Editor

\n

The Web Stories editor for WordPress brings together a robust set of story creation capabilities in a user-friendly, WYSIWYG creation tool. Some of the key features you can leverage out of the box are:

\n
    \n
  • A visually rich and intuitive dashboard, allowing you to easily navigate the story creation process
  • \n
  • Beautiful and expressive page templates to you get your story creation process started quickly and smoothly
  • \n
  • Easy drag-and-drop capabilities, making it easy to compose beautiful stories
  • \n
  • Convenient access to WordPress’ media library, enabling you to grab your media assets right from the plugin dashboard as you create your stories
  • \n
  • Customizable color and text style presets, making it easy to tailor the style of your stories to the needs of your content strategy
  • \n
  • And much more!
  • \n
\n

Using the Web Stories editor for WordPress, you can easily create visual narratives with tappable interactions, and share freely across the web, or embed them on your existing content strategies. The Stories you create are yours in every way, as Web Stories belong to the open web, instead of being confined to any specific closed ecosystem or platform.

\n

Audience: Everyone

\n

Web Stories are for everyone! If you are a site owner, content creator, or publisher on the web, embracing the Web Stories format would be great as a way to enhance the quality of your content strategy, the value you bring to your readers, and consequently your chances of achieving sustainable success.

\n

Terms of Service

\n

By using this plugin, you agree to Google’s Terms of Service. By using third-party imagery and video provided by Unsplash, Coverr and Tenor, you agree to adhere to the respective Terms of Service.

\n","download_link":"https://downloads.wordpress.org/plugin/web-stories.1.12.0.zip","tags":{"amp":"amp","google":"google","stories":"stories","storytelling":"storytelling","web-stories":"web stories"},"donate_link":"","icons":{"1x":"https://ps.w.org/web-stories/assets/icon.svg?rev=2386543","2x":"https://ps.w.org/web-stories/assets/icon-256x256.png?rev=2386543","svg":"https://ps.w.org/web-stories/assets/icon.svg?rev=2386543"},"wporg":true},{"name":"Jetpack – WP Security, Backup, Speed, & Growth","slug":"jetpack","version":"10.2","author":"Automattic","author_profile":"https://profiles.wordpress.org/automattic","requires":"5.7","tested":"5.8.1","requires_php":"5.6","rating":78,"ratings":{"1":321,"2":80,"3":82,"4":138,"5":1024},"num_ratings":1645,"support_threads":303,"support_threads_resolved":261,"active_installs":5000000,"downloaded":247940612,"last_updated":"2021-10-05 4:54pm GMT","added":"2011-01-20","homepage":"https://jetpack.com","short_description":"Improve your WP security with powerful one-click tools like backup and malware scan. Get essential…","description":"

The most popular WordPress plugin for just about everything.

\n

WordPress security, performance, marketing, and design tools — Jetpack is made by WordPress experts to make WP sites safer and faster, and help you grow your traffic.

\n

24/7 AUTO SITE SECURITY

\n

We guard your site so you can run your site or business. Jetpack Security provides easy-to-use, comprehensive WordPress site security including auto real-time backups and easy restores, malware scans, and spam protection. Essential features like brute force protection and downtime / uptime monitoring are free.

\n
    \n
  • Back up your site automatically in real time and restore to any point with one click. Unlimited storage for your backup. Great for eCommerce stores especially Woo.
  • \n
  • Manage migration to a new host, migrate theme files and plugins to a new database, easily duplicate websites, create full database backups, clone websites, repair broken websites by restoring older backups or easily set up a test site by creating a duplicate of your existing WP website.
  • \n
  • See every site change and who made it with the activity log, great for coordination, debug, maintenance, or troubleshooting.
  • \n
  • Automatically perform malware scans and security scans for other code threats. One click fix to restore your site for malware.
  • \n
  • Block spam comments and form responses with anti spam features powered by Akismet.
  • \n
  • Brute force attack protection to protect your WordPress login page from attacks.
  • \n
  • Monitor your site uptime / downtime and get an instant alert of any change by email.
  • \n
  • Secure WordPress.com powered login used by millions of sites with optional 2FA (two factor authentication) for extra protection.
  • \n
  • Auto update individual plugins for easy site maintenance and management.
  • \n
\n

PEAK SPEED AND PERFORMANCE

\n

Get blazing fast site speed with Jetpack, the premier WP plugin built to leverage the power of AMP, a tool that helps optimize your site on mobile devices. Jetpack’s free CDN (content delivery network) auto optimizes your images. Watch your page load times decrease — we’ll optimize your images and serve them from our own powerful global network, and speed up your site on mobile devices to reduce bandwidth usage and save money!

\n
    \n
  • Jetpack has partnered with Google AMP to create the best, highest performance all-in-one toolkit for WordPress. By using Jetpack and AMP together, you get all the features you need to build a beautiful, fast, modern website with no coding required.
  • \n
  • Image CDN for images and static files, like CSS and JavaScript, served from our servers, not yours, which saves you money and bandwidth.
  • \n
  • Lazy load images for a super fast experience, even on mobile. Jetpack’s lazy loading automatically delays the loading of media on your posts and pages until your visitors scroll down to where they appear on the page.
  • \n
  • Unlimited, high speed, ad free video hosting keeps the focus on your content, not on ads or recommendations that lead people off site.
  • \n
  • Custom site search is incredibly powerful and customizable. Helps your visitors instantly find the right content so they read and buy more. Works great with WooCommerce / eCommerce sites to help filter products so customers get what they want on your site faster.
  • \n
  • Recommended to use with WP Super Cache for ultimate WordPress site speed.
  • \n
\n

POWERFUL TOOLS FOR GROWTH

\n

Create and customize your WordPress site, optimize it for visitors and revenue, and enjoy watching your stats tick up. Build it, share it, and watch it grow.

\n
    \n
  • Advanced site stats and analytics to help you understand your audience.
  • \n
  • Auto publish blog posts and products to social media by simply using our tools to connect to Facebook, Twitter, and Linkedin.
  • \n
  • Easily share Instagram posts on your pages and blog posts.
  • \n
  • Collect a payment or donation, sell a product, service, or membership with simple integrations with PayPal and Stripe.
  • \n
  • Grow traffic with SEO tools for Google, Bing, Twitter, Facebook, and WordPress.com. XML sitemap created automatically.
  • \n
  • Advertise on your site to generate revenue. The ad network automatically does the work for you to find high-quality ads that are placed on your site.
  • \n
  • Manage Jetpack features from anywhere with the official WordPress mobile app, available for Apple iOS (iPhone or iPad) and Google Android.
  • \n
  • Looking for Customer Relationship Management? Check out the Jetpack CRM plugin which works alongside Jetpack to give you a simple and practical way to build relationships with your customers and leads.
  • \n
\n

EASY DESIGN TOOLS

\n

Quickly customize your site to make it stand out — no coding needed.

\n
    \n
  • Themes — Simple themes to get started or pick a professional theme to make your site stand out.
  • \n
  • Related posts — Keep visitors on your site by automatically showing them related content they will be interested in.
  • \n
  • Gallery and Slideshow tools — Image galleries, carousel slider, and slideshows for WP sites and stores.
  • \n
  • Subscriptions — Make it easy for visitors to sign up to receive notifications of your latest posts and comments.
  • \n
  • Contact form — Easily build unlimited contact forms for free without any coding. Receive email notifications for each response. Integrate with mail solutions like Creative Mail to reach your customers and leads quickly. Connect to Jetpack Anti spam (powered by Akismet) to filter submissions.
  • \n
  • oEmbed Support — easily embed images, posts, and links from Facebook and Instagram.
  • \n
\n

INTEGRATIONS

\n

Jetpack is updated monthly to ensure seamless integration with top WordPress plugins and other tech products.

\n
    \n
  • Built for WooCommerce: Jetpack and WooCommerce are both made by Automattic. Backup, Scan, Anti-spam, integrate perfectly for Woo / eComm stores
  • \n
  • Jetpack is fully compatible with v2.0 of the official AMP plugin for WordPress.
  • \n
  • Better understand your customers and marketing with Google Analytics (GA) integration
  • \n
  • Social media platforms: Instagram, Facebook, Twitter, LinkedIn
  • \n
  • Simple Blocks to customize your site: Pinterest, Whatsapp, Podcast player, GIFs, maps, tiled gallery, slideshow
  • \n
  • Payment processors: easily collect payments or donations and sell products through Stripe and PayPal
  • \n
  • Site speed and performance plugins: Works great with WP Super Cache by Automattic and Cloudflare.
  • \n
  • Contact form: Anti-spam (Powered by Akismet) blocks spam comments for Jetpack forms, Contact Form 7, Ninja Forms, Gravity Forms, Formidable Forms, and more.
  • \n
  • Other tech integrations: Instagram, Creative Mail, Mailchimp, Calendly, Whatsapp, Pinterest, Revue, and more.
  • \n
\n

EXPERT SUPPORT

\n

We have a global team of Happiness Engineers ready to provide incredible support. Ask your questions in the support forum or contact us directly.

\n

GET STARTED

\n

Installation is free, quick, and easy. Set up Jetpack in minutes. Take advantage of more robust features like WordPress site security and design and growth tools by upgrading to a paid plan.

\n","download_link":"https://downloads.wordpress.org/plugin/jetpack.10.2.zip","tags":{"backup":"backup","malware":"malware","scan":"scan","security":"security","woo":"woo"},"donate_link":"","icons":{"1x":"https://ps.w.org/jetpack/assets/icon.svg?rev=2394525","2x":"https://ps.w.org/jetpack/assets/icon-256x256.png?rev=2394525","svg":"https://ps.w.org/jetpack/assets/icon.svg?rev=2394525"},"wporg":true},{"name":"Easy Notification Bar","slug":"easy-notification-bar","version":"1.4.3","author":"WPExplorer","author_profile":"https://profiles.wordpress.org/wpexplorer","requires":"5.2.0","tested":"5.8.1","requires_php":"5.6.2","rating":82,"ratings":{"1":0,"2":1,"3":1,"4":1,"5":4},"num_ratings":7,"support_threads":4,"support_threads_resolved":1,"active_installs":4000,"downloaded":37750,"last_updated":"2021-09-28 3:14am GMT","added":"2019-06-20","homepage":"https://wordpress.org/plugins/easy-notification-bar/","short_description":"Easily add a custom top bar notification message to on your site with live customization options via the WordPress customizer.","description":"

Easily add a custom top bar notification message to on your site with live customization options via the WordPress customizer. The plugin allows you to enter your notification bar text as well as an optional button to display next to your text. Perfect for notifying visitors of a current sale, hot product, warnings or other important messages.

\n

The Easy Notification Bar plugin makes use of the newer “wp_body_open” action hook introduced in WordPress 5.2.0 which allows the plugin to work better with any theme that has been updated to support the tag. Contrary to other notice bar solutions which rely on absolute positioning, this plugin inserts the notice bar right after the body tag so it should display perfectly without any conflicts on any well-coded theme.

\n

By default, the notification bar is “static” which means it displays at the top of your site so when you scroll down the page it will become “hidden”. This is generally better for usability and SEO. However, in version 1.4 we added a new sticky option which you can enable in the Customizer so that the notification bar remains visible as you scroll down the page. The sticky functionality makes use of the CSS sticky property (not javascript).

\n

Although disabled by default, you can enable a close icon for your notice. When enabled, your visitors will see an “x” icon over the top bar which they can click to hide the message for their current and future sessions. This functionality makes use of localStorage (not cookies).

\n

Live Demo: You can view a live demo for the notification bar on our More Widgets Plugin Demo

\n

Features

\n
    \n
  • Sitewide (or homepage only) top notification bar.
  • \n
  • Easy setup via the WordPress customizer.
  • \n
  • Optional close icon.
  • \n
  • Optional sticky display.
  • \n
  • Custom background, color, text alignment and font size settings.
  • \n
  • Optional callout button.
  • \n
  • Responsive design so it looks good on mobile.
  • \n
  • Minimal code.
  • \n
  • Vanilla Javascript used for close icon (jQuery not needed).
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/easy-notification-bar.zip","tags":{"notice":"notice","notice-bar":"notice bar","notification":"notification","notification-bar":"notification bar","top-bar":"top bar"},"donate_link":"","icons":{"1x":"https://ps.w.org/easy-notification-bar/assets/icon-128x128.png?rev=2515988","2x":"https://ps.w.org/easy-notification-bar/assets/icon-256x256.png?rev=2515988"},"wporg":true},{"name":"Antispam Bee","slug":"antispam-bee","version":"2.10.0","author":"pluginkollektiv","author_profile":"https://profiles.wordpress.org/pluginkollektiv","requires":"4.5","tested":"5.8.1","requires_php":"5.2","rating":96,"ratings":{"1":7,"2":1,"3":1,"4":2,"5":174},"num_ratings":185,"support_threads":6,"support_threads_resolved":6,"active_installs":700000,"downloaded":5121769,"last_updated":"2021-07-29 11:15am GMT","added":"2009-01-10","homepage":"https://antispambee.pluginkollektiv.org/","short_description":"Antispam plugin with a sophisticated tool set for effective day to day comment and trackback spam-fighting. Build with data protection and privacy in …","description":"

Say Goodbye to comment spam on your WordPress blog or website. Antispam Bee blocks spam comments and trackbacks effectively, without captchas and without sending personal information to third party services. It is free of charge, ad-free and 100% GDPR compliant.

\n

Feature/Settings Overview

\n
    \n
  • Trust approved commenters.
  • \n
  • Trust commenters with a Gravatar.
  • \n
  • Consider the comment time.
  • \n
  • Allow comments only in a certain language.
  • \n
  • Block or allow commenters from certain countries.
  • \n
  • Treat BBCode links as spam.
  • \n
  • Validate the IP address of commenters.
  • \n
  • Use regular expressions.
  • \n
  • Search local spam database for commenters previously marked as spammers.
  • \n
  • Notify admins by e-mail about incoming spam.
  • \n
  • Delete existing spam after n days.
  • \n
  • Limit approval to comments/pings (will delete other comment types).
  • \n
  • Select spam indicators to send comments to deletion directly.
  • \n
  • Optionally exclude trackbacks and pingbacks from spam detection.
  • \n
  • Optionally spam-check comment forms on archive pages.
  • \n
  • Display spam statistics on the dashboard, including daily updates of spam detection rate and a total of blocked spam comments.
  • \n
\n

Support

\n\n

Contribute

\n
    \n
  • Active development of this plugin is handled on GitHub.
  • \n
  • Pull requests for documented bugs are highly appreciated.
  • \n
  • If you think you’ve found a bug (e.g. you’re experiencing unexpected behavior), please post at the support forums first.
  • \n
  • If you want to help us translate this plugin you can do so on WordPress Translate.
  • \n
\n

Credits

\n\n","download_link":"https://downloads.wordpress.org/plugin/antispam-bee.2.10.0.zip","tags":{"anti-spam":"anti-spam","antispam":"antispam","block-spam":"block spam","comment":"comment","comments":"comments"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=TD4AMD2D8EMZW","icons":{"1x":"https://ps.w.org/antispam-bee/assets/icon-128x128.png?rev=977629","2x":"https://ps.w.org/antispam-bee/assets/icon-256x256.png?rev=977629"},"wporg":true},{"name":"SimpleTOC – Table of Contents Block","slug":"simpletoc","version":"4.8","author":"Marc Tönsing","author_profile":"https://profiles.wordpress.org/marcdk","requires":"5.0","tested":"5.8.1","requires_php":false,"rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":24},"num_ratings":24,"support_threads":4,"support_threads_resolved":3,"active_installs":2000,"downloaded":21859,"last_updated":"2021-07-29 9:07pm GMT","added":"2020-04-14","homepage":"https://marc.tv/simpletoc-wordpress-inhaltsverzeichnis-plugin-gutenberg/","short_description":"Adds a custom Table of Contents Gutenberg block.","description":"

In Gutenberg, add a block and search for “SimpleTOC” or just “TOC”. You need to save your post before you add the block. It works by parsing the post content and retrieving the heading blocks and creates a new dynamic block with a list of links to the headings.

\n

Hide the headline “Table of Contents” and set a maximum display depth in the blocks’ sidebar configuration. Add the CSS class “simpletoc-hidden” to a heading block to remove that specific heading from the generated TOC.

\n

Features

\n
    \n
  • No javascript or css added.
  • \n
  • Designed for Gutenberg.
  • \n
  • Compatible with AMP plugins.
  • \n
  • Minimal and valid HTML output.
  • \n
  • Inherits the style of your theme.
  • \n
  • Support for column block layouts.
  • \n
  • Control the maximum depth of the headings.
  • \n
  • Choose between an ordered and unordered html list.
  • \n
  • SEO friendly: Disable the h2 heading of the TOC block and add your own.
  • \n
  • Comes with English, French, Spanish, German, and Brazilian Portuguese translations.
  • \n
  • Works with non-latin texts. Tested with Japanese and Arabic.
  • \n
  • Finds headlines in groups and reusable blocks. And in groups within reusable blocks.
  • \n
  • Rank Math support.
  • \n
\n

Credits

\n

This plugin is forked from https://github.com/pdewouters/gutentoc by pdewouters and uses code from https://github.com/shazahm1/Easy-Table-of-Contents by shazahm1

\n

Many thanks to Tom J Nowell https://tomjn.com and and Sally CJ who both helped me a lot with my questions over at wordpress.stackexchange.com

\n","download_link":"https://downloads.wordpress.org/plugin/simpletoc.4.8.zip","tags":{"amp":"amp","block":"block","gutenberg":"gutenberg","table-of-contents":"table of contents","toc":"toc"},"donate_link":"https://marc.tv/out/donate","icons":{"1x":"https://ps.w.org/simpletoc/assets/icon.svg?rev=2451408","2x":"https://ps.w.org/simpletoc/assets/icon-256x256.png?rev=2451408","svg":"https://ps.w.org/simpletoc/assets/icon.svg?rev=2451408"},"wporg":true},{"name":"Log in with Google","slug":"login-with-google","version":"1.2.1","author":"rtCamp","author_profile":"https://profiles.wordpress.org/rtcamp","requires":"5.4.2","tested":"5.7.3","requires_php":"7.3","rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":6},"num_ratings":6,"support_threads":1,"support_threads_resolved":0,"active_installs":400,"downloaded":3340,"last_updated":"2021-07-23 10:00pm GMT","added":"2020-10-01","homepage":"","short_description":"Minimal plugin that allows WordPress users to log in using Google.","description":"

Ultra minimal plugin to let your users login to WordPress applications using their Google accounts. No more remembering hefty passwords!

\n

Initial Setup

\n
    \n
  1. \n

    Create a project from Google Developers Console if none exists.

    \n
  2. \n
  3. \n

    Go to Credentials tab, then create credential for OAuth client.

    \n
      \n
    • Application type will be Web Application
    • \n
    • Add YOUR_DOMAIN/wp-login.php in Authorized redirect URIs
    • \n
    \n
  4. \n
  5. \n

    This will give you Client ID and Secret key.

    \n
  6. \n
  7. \n

    Input these values either in WP Admin > Settings > WP Google Login, or in wp-config.php using the following code snippet:

    \n

    `
    \ndefine( ‘WP_GOOGLE_LOGIN_CLIENT_ID’, ‘YOUR_GOOGLE_CLIENT_ID’ );
    \ndefine( ‘WP_GOOGLE_LOGIN_SECRET’, ‘YOUR_SECRET_KEY’ );
    \n“

    \n
  8. \n
\n

Browser support

\n

These browsers are supported. Note, for example, that One Tap Login is not supported in Safari.

\n

How to enable automatic user registration

\n

You can enable user registration either by
\n– Enabling Settings > WP Google Login > Enable Google Login Registration

\n

OR

\n
    \n
  • Adding
    \ndefine( 'WP_GOOGLE_LOGIN_USER_REGISTRATION', 'true' );
    \nin wp-config.php file.
  • \n
\n

Note: If the checkbox is ON then, it will register valid Google users even when WordPress default setting, under

\n

Settings > General Settings > Membership > Anyone can register checkbox

\n

is OFF.

\n

Restrict user registration to one or more domain(s)

\n

By default, when you enable user registration via constant WP_GOOGLE_LOGIN_USER_REGISTRATION or enable Settings > WP Google Login > Enable Google Login Registration, it will create a user for any Google login (including gmail.com users). If you are planning to use this plugin on a private, internal site, then you may like to restrict user registration to users under a single Google Suite organization. This configuration variable does that.

\n

Add your domain name, without any schema prefix and www, as the value of WP_GOOGLE_LOGIN_WHITELIST_DOMAINS constant or in the settings Settings > WP Google Login > Whitelisted Domains. You can whitelist multiple domains. Please separate domains with commas. See the below example to know how to do it via constants:

\n
`\n
\n

define( ‘WP_GOOGLE_LOGIN_WHITELIST_DOMAINS’, ‘example.com,sample.com’ );
\n `

\n

Note: If a user already exists, they will be allowed to login with Google regardless of whether their domain is whitelisted or not. Whitelisting will only prevent users from registering with email addresses from non-whitelisted domains.

\n

Hooks

\n

Filter wp_google_login_scopes
\nThis filter can be used to filter existing scope used in Google Sign in.
\nYou can ask for additional permission while user logs in.
\nThis filter will provide 1 parameter scopes in callback, which contains array of scopes.

\n

wp-config.php parameters list

\n
    \n
  • \n

    WP_GOOGLE_LOGIN_CLIENT_ID (string): Google client ID of your application.

    \n
  • \n
  • \n

    WP_GOOGLE_LOGIN_SECRET (string): Secret key of your application

    \n
  • \n
  • \n

    WP_GOOGLE_LOGIN_USER_REGISTRATION (boolean) (optional): Set true If you want to enable new user registration. By default, user registration defers to Settings > General Settings > Membership if constant is not set.

    \n
  • \n
  • \n

    WP_GOOGLE_LOGIN_WHITELIST_DOMAINS (string) (optional): Domain names, if you want to restrict login with your custom domain. By default, it will allow all domains. You can whitelist multiple domains.

    \n
  • \n
\n

BTW, We’re Hiring!

\n

\n","download_link":"https://downloads.wordpress.org/plugin/login-with-google.1.2.1.zip","tags":{"authentication":"authentication","google-login":"Google Login","oauth":"oauth","sign-in":"sign in","sso":"sso"},"donate_link":"https://rtcamp.com/","icons":{"1x":"https://ps.w.org/login-with-google/assets/icon-128x128.png?rev=2402713","2x":"https://ps.w.org/login-with-google/assets/icon-256x256.png?rev=2402713"},"wporg":true},{"name":"Search with Google","slug":"search-with-google","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://wordpress.org/plugins/search-with-google/","short_description":"

This plugin replaces the WordPress default search query with server-side results from Custom Search Site Restricted JSON API. 

\n","description":"\n\n\n

This plugin replaces the WordPress default search query with server-side results from Custom Search Site Restricted JSON API

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2020/11/searchWithGoogle-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2020/11/searchWithGoogle-372x209.jpg","svg":""},"wporg":false},{"name":"Page Builder Gutenberg Blocks – CoBlocks","slug":"coblocks","version":"2.17.0","author":"GoDaddy","author_profile":"https://profiles.wordpress.org/godaddy","requires":"5.0","tested":"5.8.1","requires_php":"5.6","rating":88,"ratings":{"1":7,"2":3,"3":4,"4":5,"5":63},"num_ratings":82,"support_threads":15,"support_threads_resolved":2,"active_installs":500000,"downloaded":5687024,"last_updated":"2021-10-05 4:45pm GMT","added":"2018-04-19","homepage":"","short_description":"CoBlocks is a suite of page builder WordPress blocks for Gutenberg, with 10+ new blocks and a true page builder experience with rows and columns.","description":"

CoBlocks is the most innovative collection of page building WordPress blocks for the new Gutenberg WordPress block editor.

\n

With additional blocks and true row and column building, CoBlocks gives you a true page builder experience for Gutenberg.

\n

CoBlocks is powerful but lightweight: it adds functionality to the WordPress editor without bloat. This is the plugin you’ve been waiting for, and it will make you rethink what WordPress is capable of.

\n

Make Beautiful Web Pages With Gutenberg & CoBlocks

\n

CoBlocks is the last page builder you’ll ever need: you get a winning mix of additional WordPress blocks, and page builder functionality. With CoBlocks you have everything you need to make beautiful web pages with the new block editor:

\n
    \n
  • Accordion Block
  • \n
  • Alert Block
  • \n
  • Author Profile Block
  • \n
  • Buttons Block
  • \n
  • Carousel Gallery Block
  • \n
  • Click to Tweet Block
  • \n
  • Collage Gallery Block
  • \n
  • Dynamic Separator Block
  • \n
  • Events Block (New!)
  • \n
  • Features Block
  • \n
  • Food & Drinks Block
  • \n
  • Form Block
  • \n
  • Gif Block
  • \n
  • GitHub Gist Block
  • \n
  • Hero Block
  • \n
  • Highlight Block
  • \n
  • Icon Block
  • \n
  • Logos & Badges Block
  • \n
  • Map Block
  • \n
  • Masonry Gallery Block
  • \n
  • Media Card Block
  • \n
  • Offset Gallery Block
  • \n
  • OpenTable Reservations Block
  • \n
  • Post Carousel Block
  • \n
  • Posts Block
  • \n
  • Pricing Table Block
  • \n
  • Resizable Row/Columns Blocks
  • \n
  • Services Block
  • \n
  • Shape Divider Block
  • \n
  • Social Profiles Block
  • \n
  • Social Sharing Block
  • \n
  • Stacked Gallery Block
  • \n
\n

Breakthrough Page Builder System

\n

CoBlocks features an innovative block system that allows you to create stunning web pages, and even entire websites, with the new WordPress editor.

\n

You get the extra blocks you need and the layout and design functionality for a true page builder experience.

\n

Use the exceptional Row and Columns blocks to add dynamically generated content areas with specific responsive margin and padding settings that only CoBlocks provides.

\n

Style these with innovative new blocks such as the Shape Divider, which lets you split up your content with beautiful dividers.

\n

Each of the WordPress blocks within CoBlocks have been precisely fined tuned to offer a familiar, yet powerful, customization experience. Tailor each block to your taste using our custom controls and settings. Change fonts, set margin and padding, pick colors and more.

\n

Custom Typography Controls

\n

The breakthrough Typography Control Panel within CoBlocks lets you design web pages with alluring typographic elements. Set fonts, sizes, weights, transformations and more, in our CoBlocks blocks, and in core WordPress blocks.

\n

Free Companion Theme

\n

CoBlocks is built to show off the best of Gutenberg, but it requires a Gutenberg-first theme to unlock its full potential. We also created the free Go theme in the WordPress theme repository as the perfect companion for CoBlocks.

\n

Going Beyond Gutenberg Blocks

\n

The vision for CoBlocks is to create a suite of Gutenberg blocks to help folks make beautiful websites easily. These newest releases of CoBlocks is the ultimate expression of that vision.

\n

Built With Developers in Mind

\n

Extensible, adaptable, and open source — CoBlocks is created with theme and plugin developers in mind. If you’re interested to jump in the project, there are opportunities for developers at all levels to get involved. Contribute to CoBlocks on GitHub and join the party. 🎉

\n

\n

Enhancements

\n
    \n
  • Enhance editor performance by removing superfluous slow selectors #2056
  • \n
  • Enhance Services block with Toolbar media replacement controls #2030
  • \n
  • Enhance Services block by adding image overlay media replacement button #2012
  • \n
  • Enhance accessibility of Food and Drinks block #2021
  • \n
  • Enhance Social Profiles block UX #2050
  • \n
  • Enhance Social block UX #2045
  • \n
  • Enhance Gif block previews #2047
  • \n
  • Enhance Services block previews #2053
  • \n
  • Enhance Accordion block previews #2048
  • \n
\n

Bug Fixes

\n
    \n
  • Fix custom colors use with the Alert block #2051
  • \n
  • Fix superfluous margin with no gutter on Stacked Gallery #2052
  • \n
  • Fix overlapping resizable block handles for the Logos and Badges block #2044
  • \n
  • Fix reverting gutter value in Carousel Gallery #2017
  • \n
  • Fix crash when adding invalid category for Posts and Post Carousel blocks #2018
  • \n
  • Fix inner block alignment attribute persistence #2008
  • \n
  • Fix crash when transforming from Core gallery block #1990
  • \n
  • Fix deprecated styles for the Dynamic Separator block #1995
  • \n
\n

Misc

\n
    \n
  • Introduce editor performance metric tests #2031
  • \n
  • Introduce automated performance metric comparisons #2039
  • \n
  • Update icons to utilize @godaddy-wordpress/coblocks-icons package #1967
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/coblocks.2.17.0.zip","tags":{"blocks":"blocks","gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","page-builder":"page builder","wordpress-blocks":"wordpress blocks"},"donate_link":"","icons":{"1x":"https://ps.w.org/coblocks/assets/icon-128x128.jpg?rev=2243972","2x":"https://ps.w.org/coblocks/assets/icon-256x256.jpg?rev=2243972"},"wporg":true},{"name":"Simple Author Box","slug":"simple-author-box","version":"2.42","author":"WebFactory Ltd","author_profile":"https://profiles.wordpress.org/webfactory","requires":"4.6","tested":"5.8.1","requires_php":"5.6","rating":88,"ratings":{"1":9,"2":0,"3":5,"4":8,"5":75},"num_ratings":97,"support_threads":7,"support_threads_resolved":7,"active_installs":50000,"downloaded":908088,"last_updated":"2021-08-13 8:08am GMT","added":"2014-08-08","homepage":"https://wpauthorbox.com/","short_description":"Add a responsive author box with social icons to any post. Great author box for any site!","description":"

Simple Author Box adds a responsive author box at the end of your posts, showing the author name, author gravatar and author description – author bio. It also adds over 30 social profile fields on WordPress user profile screen, allowing to display the author social icons in the author box.

\n

Main Features

\n
    \n
  • Shows author gravatar, name, website, description (author bio) and social icons
  • \n
  • Fully customizable to match your theme design (style, color, size and text options)
  • \n
  • Nice looking on desktop, laptop, tablet or mobile phones
  • \n
  • Automatically insert the author box at the end of your post
  • \n
  • Option to manually insert the author box on your template file (single.php or author.php)
  • \n
  • Simple Author Box has RTL support
  • \n
  • Simple Author Box has AMP support
  • \n
  • Great for guest posts, and guest authors
  • \n
\n

Simple Author Box Pro Features

\n
\n

Premium features only available in Simple Author Box Pro

\n
    \n
  • Change author box position to before/after content
  • \n
  • Choose whether the author’s name should link to its website/page/none
  • \n
  • Select where to show author box on
  • \n
  • Add rotate effect on author avatar hover
  • \n
  • Option to open author website link in a new tab
  • \n
  • Option to add “nofollow” attribute on author website link
  • \n
  • Choose the author website’s position: right/left
  • \n
  • Social icons type, style, rotate effect, shadow effect, thin border
  • \n
  • Option to change the color palette
  • \n
  • Choose the font and font sizes for the author’s job title, website, name, and description
  • \n
  • Enable guest authors and co-authors
  • \n
  • Option to use guest authors as co-authors
  • \n
  • Top authors widget – displays the most popular authors based of comments
  • \n
  • Simple author box widget – displays the users selected
  • \n
\n
\n

Read more about the Simple Author Box advanced features.

\n","download_link":"https://downloads.wordpress.org/plugin/simple-author-box.2.42.zip","tags":{"author-bio":"author bio","author-box":"author box","author-profile-fields":"author profile fields","author-social-icons":"author social icons","responsive-author-box":"responsive author box"},"donate_link":"","icons":{"1x":"https://ps.w.org/simple-author-box/assets/icon-128x128.jpg?rev=1821054"},"wporg":true},{"name":"Genesis Blocks","slug":"genesis-blocks","version":"1.3.0","author":"StudioPress","author_profile":"https://profiles.wordpress.org/studiopress","requires":"5.3","tested":"5.8.1","requires_php":"7.1","rating":90,"ratings":{"1":1,"2":0,"3":1,"4":0,"5":10},"num_ratings":12,"support_threads":9,"support_threads_resolved":2,"active_installs":40000,"downloaded":233177,"last_updated":"2021-09-23 6:49pm GMT","added":"2020-08-25","homepage":"https://studiopress.com/genesis-pro/","short_description":"A collection of content blocks, sections, & full-page layouts for the block editor.","description":"

Genesis Blocks is a collection of page building blocks for the Gutenberg block editor. Building pages with the block editor and Genesis Blocks gives you more control to quickly create and launch any kind of site you want!

\n

Installing the customizable Genesis Blocks plugin adds a collection of beautiful, site-building blocks to help you customize page layouts, increase engagement, and get results for your business. Genesis Blocks provides everything from customizable buttons, to beautifully-designed page sections and full-page layout designs via the Section & Layout block.

\n

Along with the blocks themselves, Genesis Blocks extends the content creation experience by providing a library of page sections and full-page layouts, all available from within the block editor.

\n

Create compelling content faster.

\n

Create and use content quickly with prebuilt and custom content sections and full-page layouts.

\n

Enhance the Gutenberg editor.

\n

Additional content blocks and the layout selector make it easy to get the most value out of the block-based editor.

\n

Genesis Blocks currently includes the following blocks to help you build content and pages quickly and effortlessly:

\n
    \n
  • Section & Layout Block
  • \n
  • Advanced Columns Block
  • \n
  • Newsletter Block
  • \n
  • Pricing Block
  • \n
  • Post Grid Block
  • \n
  • Container Block
  • \n
  • Testimonial Block
  • \n
  • Inline Notice Block
  • \n
  • Accordion Block
  • \n
  • Share Icons Block
  • \n
  • Call-To-Action Block
  • \n
  • Customizable Button Block
  • \n
  • Spacer & Divider Block
  • \n
  • Author Profile Block
  • \n
  • Drop Cap Block
  • \n
\n

Do more with Genesis Pro

\n

For those wanting to level-up with Genesis Blocks, a Genesis Pro subscription brings even richer tooling and a bigger library of sections and layouts.

\n
    \n
  • 2 new blocks (more coming soon)
  • \n
  • 26 pre-built full-page layouts
  • \n
  • 56 pre-built sections
  • \n
  • Save & reuse your own sections & layouts
  • \n
  • Advanced block-level user permissions
  • \n
  • Access to and support for Genesis Framework & all of our 35 StudioPress-made premium child themes.
  • \n
  • Additional advanced features for the rest of the Genesis Product Suite
  • \n
\n

Genesis Pro includes even more value for modern WordPress content creators, marketers, and developers. Learn more about Genesis Pro here.

\n

Google AMP Support

\n

The Accelerated Mobile Pages (AMP) project is a publishing format created by Google to enhance site performance for mobile website users. AMP pages are specially designed for Google search users to quickly load website pages without using any extraneous data. Genesis Blocks has support for AMP built into each block!

\n

Help & Docs

\n

User and developer docs for Genesis Blocks can be found here.

\n","download_link":"https://downloads.wordpress.org/plugin/genesis-blocks.1.3.0.zip","tags":{"blocks":"blocks","editor":"editor","gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","page-builder":"page builder"},"donate_link":"https://studiopress.com","icons":{"1x":"https://ps.w.org/genesis-blocks/assets/icon-128x128.png?rev=2368839","2x":"https://ps.w.org/genesis-blocks/assets/icon-256x256.png?rev=2368840"},"wporg":true},{"name":"MathML Block","slug":"mathml-block","version":"1.2.1","author":"adamsilverstein","author_profile":"https://profiles.wordpress.org/adamsilverstein","requires":"5.0","tested":"5.8.1","requires_php":"5.6","rating":90,"ratings":{"1":0,"2":0,"3":0,"4":1,"5":1},"num_ratings":2,"support_threads":1,"support_threads_resolved":0,"active_installs":500,"downloaded":8052,"last_updated":"2021-09-11 2:30pm GMT","added":"2018-12-28","homepage":"","short_description":"A MathML block for the WordPress block editor (Gutenberg).","description":"

A MathML block for the WordPress block editor (Gutenberg).
\nRequires PHP 5.4+ and WordPress 5.0+.

\n

Development takes place on the GitHub repository: https://github.com/adamsilverstein/mathml-block.

\n

Screencast: https://cl.ly/c0f6bbfbc3b1

\n

What is MathML?

\n

Mathematical Markup Language is a mathematical markup language, an application of XML for describing mathematical notations and capturing both its structure and content. It aims at integrating mathematical formulae into World Wide Web pages and other documents.

\n

The MathML block uses MathJax to render MathML formulas in the editor and on the front end of a website. MathJax (https://www.mathjax.org/) is A JavaScript display engine for mathematics that works in all browsers.

\n

To test a MathML block and enter a formula, for example: \\[x = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}\\].

\n

To test using math formulas inline, type an formula into a block of text, select it and hit the ‘M’ icon in the control bar. For example: \\( \\cos(θ+φ)=\\cos(θ)\\cos(φ)−\\sin(θ)\\sin(φ) \\). Note: if you are copying and pasting formulas into the rich text editor, switching to HTML/code editor mode is less likely to reformat your pasted formula.

\n

This plugin is compatible with the official AMP plugin by rendering amp-mathml on AMP pages.

\n

Technical Notes

\n
    \n
  • Requires PHP 5.6+.
  • \n
  • Requires WordPress 5.0+.
  • \n
  • Issues and Pull requests welcome on the GitHub repository: https://github.com/adamsilverstein/mathml-block.
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/mathml-block.zip","tags":{"block":"block","block-editor":"block-editor","gutenberg":"gutenberg","math":"math","mathml":"mathml"},"donate_link":"","icons":{"1x":"https://ps.w.org/mathml-block/assets/icon-128x128.png?rev=2002452","2x":"https://ps.w.org/mathml-block/assets/icon-256x256.png?rev=2002452"},"wporg":true},{"name":"Calculated Fields Form","slug":"calculated-fields-form","version":"1.1.27","author":"CodePeople","author_profile":"https://profiles.wordpress.org/codepeople","requires":"3.0.5","tested":"5.8.1","requires_php":false,"rating":96,"ratings":{"1":20,"2":2,"3":4,"4":27,"5":683},"num_ratings":736,"support_threads":108,"support_threads_resolved":108,"active_installs":60000,"downloaded":3616036,"last_updated":"2021-10-09 10:12am GMT","added":"2013-03-12","homepage":"https://cff.dwbooster.com","short_description":"Calculated Fields Form allows you to create both simple and rich forms, quickly like a…","description":"

The “Calculated Fields Form” plugin allows you to create web forms with calculated fields, whose values are dynamically calculated based on other fields’ values in the web form.

\n

The possibilities are unlimited. For example, you can create forms with financial calculations, date operations to create reservation forms, and calculate the product prices. The plugin includes text operations for editing, translation, or advertising services. There are more advanced operations available such as determining the distance between addresses or generating graphs. The resulting forms are 100% mobile responsive.

\n

The most impressive thing is that you don’t need to hire a programmer to create the forms. With basic knowledge, you will have a professional form in just five minutes.

\n

Creating a form is all visual. The “Calculated Fields Form” plugin includes a form editor with multiple controls. Such as text fields, numeric fields, currency fields, slider controls, email fields, radio buttons, checkboxes, container fields, page breaks to create multipage forms, and most importantly, calculated fields.

\n

The form editor includes a list of controls, a property bar to easily edit field properties, a dashboard where you can design your forms, and the attributes for form configuration. Also, the plugin comes with multiple predefined layouts to change the forms’ appearance. If there are not enough predefined layouts for your project, there is a style editor to customize the form’s design.

\n

The “Calculated Fields Form” plugin includes integration with popular page builders:

\n
    \n
  • Classic WordPress Editor
  • \n
  • Gutenberg Editor
  • \n
  • Elementor
  • \n
  • Page Builder by SiteOrigin
  • \n
  • Beaver Builder
  • \n
  • WPBakery Page Builder
  • \n
  • DIVI Builder
  • \n
\n

For other editors, it is possible to insert the form into the pages via its shortcode. Each web form has an associated shortcode that allows you to insert it wherever you want.

\n

Features

\n

Main features:

\n
    \n
  • Visual form builder with an intuitive and interactive interface.
  • \n
  • Includes general-purpose controls such as radio buttons, checkboxes, menu lists, date fields, slider controls, numeric fields, text currency fields, etc.
  • \n
  • Includes calculated fields whose values result from operations involving other form fields.
    \nInsert as many calculated fields in the form as you need.
  • \n
  • Contains an advanced formula editor associated with the calculated fields with syntax highlighting and error detection.
  • \n
  • Features many operations modules: mathematical operations, operations with dates, financial operations, distance operations, text management, operations for calling remote services, etc. The calculated fields can identify numbers and prices within the values of the fields.
  • \n
  • Distributed with several predefined forms that you can use as a starting point for your projects.
  • \n
  • Includes several design templates.
  • \n
  • Supports multi-pages forms by inserting page break controls between fields belonging to different pages.
  • \n
  • Allows the grouping of fields inside container controls (Div and Fieldset).
  • \n
  • Possible to define dependency rules between fields in the form, which is very useful in the design of wizards.
  • \n
\n

Other features:

\n
    \n
  • From the plugin configuration page, it is possible to duplicate a form by pressing the “Clone” button associated with it. By cloning a form, you can reuse the work already done.
  • \n
  • Includes a troubleshooting and optimization area.
  • \n
  • Allows you to disable forms in the indexing process to improve the speed of the website.
  • \n
  • Includes a version control in the forms to recover previous versions.
  • \n
\n

Predefined forms:

\n

“Calculated Fields Form” is distributed with five predefined sample forms.

\n
    \n
  1. Simple Calculator Operations
  2. \n
  3. Calculation with Dates (bookings with check-in and check-out dates)
  4. \n
  5. Ideal Weight Calculator
  6. \n
  7. Pregnancy Calculator
  8. \n
  9. Lease Calculator
  10. \n
\n

You can clone a sample form to implement your project, or create a new form from scratch.

\n
\n

Calculated Fields Form Commercial
\n The free version of the “Calculated Fields Form” plugin includes only basic functionality. Other distributions (Professional, Developer, and Platinum) are available with advanced functionalities, such as sending notification emails, integration with payment gateways and external services, controls for database’s connection (and connection to other data sources), complex operations, and many other features.

\n
\n

Features of the Profesional version:

\n
    \n
  • Includes all the features of the free version of the plugin.
  • \n
  • Submit the data collected by the forms and store it on the website for review.
  • \n
  • Send notification emails with the data collected by the form, as well as confirmation emails to the users.
  • \n
  • Integrate the form with PayPal and calculate the amount to be charged through a calculated field.
    \nPayments allow SCA (strong customer authentication), compatible with the new payment services (PSD 2) – Directive (EU).
  • \n
  • Export and import forms between different WordPress sites.
  • \n
  • Different mechanisms to protect forms, such as captcha, WordPress nonces, and honeypot fields.
  • \n
  • Associate “Thank You” page with the form, where you can show a summary of the form’s submission.
  • \n
  • Dashboard widget to show the last week’s submissions.
  • \n
  • Cache the forms to increase the rendering speed.
  • \n
  • Export the information submitted by the forms to a CSV file and use it with third-party tools such as Excel, OpenOffice, LibreOffice, or any other spreadsheet editor.
  • \n
\n

Features of the Developer version:

\n\n

Includes add-ons to extend the form features and make use of third-party plugins and external services

\n
    \n
  • Server-Side Equations add-on: define server-side equations.
  • \n
  • Verification Code add-on: verifies the user’s email by sending him a verification code and blocking the form’s submission until the verification code is entered.
  • \n
  • WooCommerce add-on: integrate forms with WooCommerce products and calculate their prices, dimensions, and weight at the runtime.
  • \n
  • SalesForce add-on: integrate the form with the SalesForce service.
  • \n
  • WebHooks add-on: send the information collected by the form to a WebHook URL to open countless possibilities. By connecting your form to services such as Zapier, Microsoft Flow, IFTTT, Workato, and others, you can connect to hundreds of third-party services (e.g. Zoho CRM, Dropbox, Mailchimp, Google Drive, Facebook, Twitter, etc.).
  • \n
  • User Permissions add-on: control the forms’ access, as well as allowing users to access and edit their data.
  • \n
  • User Registration Form add-on: build a user registration form that captures the user’s basic information and metadata.
  • \n
  • reCAPTCHA add-on: replace the basic captcha with Google reCAPTCHA to protect the forms.
  • \n
\n

Features of the Platinum version:

\n
    \n
  • Includes all the features of free, Professional, and Developer versions of the plugin.
  • \n
  • Unique Fields Values add-on: verifies that the values entered by users have not been used in previous submissions.
  • \n
  • Easy Digital Downloads add-on: integrate the forms into Easy Digital Downloads products and calculate their prices at the runtime.
  • \n
  • Google Analytics add-on: generate usage reports in “Google Analytics” for the users’ actions.
  • \n
  • PayPal Pro add-on: enable the payer’s credit card details to be entered directly through the website without any redirection to the PayPal website.
  • \n
  • Upload Files add-on: add uploaded files to the media library and extend the file types accepted by WordPress.
  • \n
  • DropBox Integration add-on: copy or move the uploaded files to a DropBox account.
  • \n
  • ip2location add-on: identify the users’ data using the ip2location databases.
  • \n
  • Google Places add-on: transform form fields into autocomplete address fields.
  • \n
  • Autocomplete Places add-on: transform form fields into autocomplete address fields by using the Photon API.
  • \n
  • Signature add-on: convert form fields into “Signature” fields, allowing the users to sign the form with a mouse or touchscreen.
  • \n
  • iCal add-on: send iCal file in the notification emails to import the events into most popular calendars like Outlook and Google Calendar.
  • \n
  • CSV Generator add-on: export the information collected by the form to CSV files and attach these to the notification emails.
  • \n
  • PDF Generator add-on: generate PDF files with the information collected by the forms and attach them to the notification emails.
  • \n
  • WebMerge add-on: integrate the forms with FormStack documents (formerly WebMerge) to generate PDF and Office documents at runtime with the information collected by the web forms.
  • \n
  • PrintFriendly add-on: generate PDF files with the PrintFriendly API and attach the resulting files to the notification emails.
  • \n
  • Mailchimp add-on: add new members to the MailChimp account.
  • \n
  • Mautic add-on: add new contacts (or update existing ones) into the Mautic Service.
  • \n
  • HubSpot add-on: add/update contacts in HubSpot, using the information collected by the form.
  • \n
  • Emma add-on: add new members to the Emma service.
  • \n
  • Twilio add-on: send notification messages (SMS) in the forms’ submissions.
  • \n
  • MailPoet add-on: add new subscribers to MailPoet’s Mailing Lists (MailPoet versions 2 and 3).
  • \n
  • AffiliateWP add-on: integrate the forms with the AffiliateWP plugin.
  • \n
  • Authorize.Net add-on: accept payments via Authorize.Net from the form.
  • \n
  • Stripe add-on: accept payments via the Stripe payment gateway from the form.
  • \n
  • Skrill Payments Integration add-on: integrate with the Skrill Moneybookers payment gateway.
  • \n
  • TargetPay (iDeal) add-on add-on: integrate with iDeal, the popular Dutch payment method.
  • \n
  • Mollie (iDeal) add-on: accept payments via iDeal.
  • \n
  • RedSys / Servired / Sermepa add-on provides: a secure interface for accepting credit card payments from most banks in Spain.
  • \n
  • PayTM add-on: a secure interface for accepting payments with credit cards, debit cards, net banking, wallets, and EMI.
  • \n
  • SagePay add-on: a secure interface for accepting payments via SagePay.
  • \n
  • Sage Payment add-on: a secure interface for accepting payments through a secure SSL checkout system for both bankcard and virtual check transactions.
  • \n
\n

Please keep the plugin updated. Updates contain bug fixes as well as new features. The WordPress directory distributes the updates for the free version of the plugin. But for commercial versions, it would be necessary to register your copy of the plugin. The following link describes the registration process: CLICK HEREThis section mainly contains notes on features of the form builder that are too detailed to include in the main description.

\n

Conditional rules

\n

It is possible to show or hide form fields (dependent fields) based on the options selected in checkbox fields, radio buttons, the options selected in dropdown menus, or the result of calculated fields.

\n

The value of a dependent field is zero when it is hidden/disabled. The plugin excludes the disabled form fields from the submission.

\n

Additional details about the use of dependencies

\n

Predefined values

\n

The predefined values in the fields have two possible uses:

\n

1- To fill the field by default. This makes it easier for the end-user to enter values.

\n

2- Hint of the values to be entered in the field (like “Enter your name”). To use the predefined value as a placeholder, you must tick the “Hide predefined value on click” checkbox. The value will disappear once the user starts filling in the field. The calculated fields’ equations ignore placeholders.

\n

The “User Instructions” attribute

\n

The “User instructions” attribute in the field settings allows you to instruct the user on how to fill in the field. By default, the instructions appear as smaller text on the public website. But they can be configured as tooltips.

\n

Adding CSS layout keywords

\n

The “Add CSS layout keywords” attribute in the fields settings allows you to apply CSS styles to fields. You must only enter the name of the CSS class names, and not their definitions.

\n

You can define the CSS classes via the “Customize Form Design” attribute in the “Form Settings” tab. This attribute contains a CSS editor with syntax highlighting and error checking.

\n

If you want to assign several class names to the field, separate them by space characters.

\n

The plugin includes multiple predefined classes that you can assign to the form fields.

\n

More information about the form’s design can be found by reading the following post in the plugin’s blog:

\n

Customizing the form’s design

\n

The classes listed below allow you to align two, three, or four fields on the same line:

\n
column2\ncolumn3\ncolumn4\n
\n

For example, if you want to put two fields on the same line, give both fields the class name “column2”.

\n

There are other variants for displaying several fields on the same line, such as container fields (Div or Fieldset). Container fields allow you to select the number of columns in your configuration. The following post describes all the alternatives for positioning the fields in the form:

\n

Formatting the form (distributing the fields in columns)

\n

Multi-page form

\n

To create multi-page forms, you must insert “Page break” controls between fields belonging to different pages.

\n

When the user presses the “Next Page” button, the plugin validates the fields in the current form. If there is any validation error (such as an unfilled required field), the plugin stops the “Next page” action.

\n

Hidden calculated fields

\n

Calculated fields include a checkbox in the configuration that allows them to be hidden from the public website. This feature is essential in those fields that are used to calculate intermediate values or when we want to show the results only in emails or thank you pages.

\n

Equation / Formula format for calculated fields

\n

Below, some possible formulas are included as examples, but the possibilities are endless.

\n
    \n
  • \n

    With simple mathematical operations:

    \n
    fieldname1 + fieldname2\n\nfieldname1 * fieldname2\n\nfieldname1 / fieldname2\n\nfieldname1 - fieldname2\n\nfieldname1 - fieldname2\n
    \n
  • \n
  • \n

    With mathematical operations involving multiple fields and grouped fields:

    \n
    fieldname1 * (fieldname2 + fieldname3)\n
    \n
  • \n
  • \n

    With rounding operations. Round the result to two decimal places:

    \n
    PREC(fieldname2 / fieldname3, 2)\n
    \n
  • \n
  • \n

    There are infinite number of formulas that can be created using complex structures. For example, the following formula includes conditional statements:

    \n
    (function () {\nif (100 < fieldname3) return fieldname1 + fieldname2;\nif (fieldname3 <= 100) return fieldname1 * fieldname2;\n})();\n
    \n
  • \n
  • \n

    For complex formulas/equations you must use the function format with return statement to return the result to the calculated field:

    \n
     (function () {\n    var result = 0;\n    /* Your code here */\n    return result;\n}) ();\n
    \n
  • \n
\n

Operations and operators to use in equations/formulas

\n

One of the “Calculated Fields Form” strengths is the ability to use any valid JavaScript code to implement the equations/formulas.

\n

However, the plugin includes a wide variety of operations and operators to simplify the development process.

\n

Mathematical Operations and Operators

\n

Conditional Operations

\n

Field Handling Operations

\n

Operations for interacting with external services

\n

Operations for handling URLs and query strings

\n

In addition to the operation modules listed above, the Developer and Platinum versions of the plugin include additional modules:

\n

Date Time Operations

\n

Financial Operations

\n

Distance and Travel Time Operations

\n

Operations to generate charts

\n

Controls available in the form generator of the “Calculated Fields Form”

\n

The complete list of controls is available from this link: CLICK HERE

\n

Create JavaScript variables from parameters received by “GET” or “POST”, “SESSION” variables, or “COOKIES” to use in the equations

\n

The plugin includes the shortcode [CP_CALCULATED_FIELDS_VAR] to generate JavaScript variables from parameters received by “GET” or “POST”, “SESSION” variables, or “COOKIES”:

\n
[CP_CALCULATED_FIELDS_VAR name=\"...\"]\n
\n

In the shortcode, you must replace the “…” symbols with the name of the parameter or variable. It will be the same name for the JavaScript variable.

\n

For example:

\n
[CP_CALCULATED_FIELDS_VAR name=\"varname\"]\n
\n

You can use the variables generated through the shortcode [CP_CALCULATED_FIELDS_VAR] in the formulas of the calculated fields: fieldname1*varname

\n

The complete list of parameters accepted by the variables shortcode is available at the following link: CLICK HERE

\n

Tips for calculating prices

\n

One of the most frequent uses of our plugin is for price calculation. When displaying the price of a product, you may want to split the form into two pages. The first page would request the information needed to calculate the price, and the second page would include the calculated field with the final price. Also, you could use the “Instruct. Text” fields to indicate the terms, conditions, and validity period of the offer.

\n

Note that you can make the “Instruct. Text” fields dependent on the calculated value. This allows you to vary the text displayed to the user depending on the calculated price, as the terms, conditions, or offers often depend on the transaction amount.

\n

Add-ons

\n

The add-ons are only distributed with the Developer and Platinum versions of the plugin.

\n

The plugin lists the add ons in the “Add-ons area” of the settings page. To enable the add-ons, you must tick their corresponding checkbox and press the “Activate/Deactivate Add-ons” button.

\n

Server-Side Equations add-on – included in the Developer and Platinum versions of the plugin

\n

Define equations with PHP code on the server-side. The calculated fields call the server-side equations via AJAX.

\n

CLICK HERE for additional information

\n

Verification Code add-on – included in the Developer and Platinum versions of the plugin

\n

The “Verification Code” add-on allows verifying the users’ emails by sending a verification code and blocking the form’s submission until a valid code is entered.

\n

CLICK HERE for additional information

\n

Unique Fields Values add-on – included in the Platinum version of the plugin

\n

The “Unique Fields Values” add-on verifies that the values entered by users have not been used in previous submissions. It allows to enter simple and complex verification rules (one or multiple fields separated by comma symbols).

\n

CLICK HERE for additional information

\n

WooCommerce add-on – included in the Developer and Platinum versions of the plugin

\n

Integrate the forms created by the “Calculated Fields Form” with WooCommerce products and calculate their prices, weights, dimensions, and more at the runtime.

\n

CLICK HERE for additional information

\n

Easy Digital Downloads add-on – included in the Platinum version of the plugin

\n

Integrate forms created by the “Calculated Fields Form” with the Easy Digital Downloads products, and calculate their price dynamically at the runtime.

\n

CLICK HERE for additional information

\n

SalesForce add-on – included in the Developer and Platinum versions of the plugin

\n

Add new leads to a SalesForce account using the data collected by the forms.

\n

CLICK HERE for additional information

\n

WebHook add-on – included in the Developer and Platinum versions of the plugin

\n

Post the information collected by the forms to WebHook URLs.

\n

Through connecting the forms created by the plugin with services like Zapier, Microsoft Flow, Workato, or IFTTT (and many others), you will have access to hundreds of third-party services, like Zoho CRM, Dropbox, Mailchimp, Evernote, Google Drive, Facebook, Twitter, and more than 300 services https://zapier.com/zapbook/apps/, https://flow.microsoft.com/, https://ifttt.com/discover

\n

CLICK HERE for additional information

\n

User Permissions add-on – included in the Developer and Platinum versions of the plugin

\n

Control access to forms. Access can be restricted to registered users, users with certain roles, or to specific users.

\n

The add-on adds a new shortcode to the plugin to list the data submitted by the logged-in user (it is possible to insert the new shortcode into the user’s profile) and assign user permissions to edit their information or delete an entry.

\n

Limit the number of submissions (e.g. one submission per form/user).

\n

CLICK HERE for additional information

\n

User Registration Form add-on – included in the Developer and Platinum versions of the plugin

\n

Build user registration forms. The form can collect basic user information and metadata required by other plugins.

\n

CLICK HERE for additional information

\n

reCAPTCHA add-on – included in the Developer and Platinum versions of the plugin

\n

Protect forms using Google reCAPTCHA instead of the basic captcha distributed with the plugin, as reCAPTCHA is more visual and intuitive than traditional captchas.

\n

CLICK HERE for additional information

\n

Google Analytics add-on – included in the Platinum version of the plugin

\n

Generate usage reports in “Google Analytics” for the users’ actions.

\n

CLICK HERE for additional information

\n

PayPal Pro add-on – included in the Platinum version of the plugin

\n

Allow the user to enter their credit card details directly on your website without redirecting them to the PayPal website. Once the user has filled the form fields and clicked the submit button, the payment is processed and the posted data (excluding the credit card information) is stored in the WordPress database.

\n

CLICK HERE for additional information

\n

Upload Files add-on – included in the Platinum version of the plugin

\n

Every commercial version of the plugin includes the “Upload File” control to upload files from the form. However, the “Upload Files” add-on allows the uploaded files to be added to the Media Library and be accessed from the pages and posts of the website.

\n

WordPress restricts the file types that can be uploaded. The “Uploads Files” add-on allows the list of accepted files to be extended.

\n

CLICK HERE for additional information

\n

DropBox Integration add-on – included in the Platinum version of the plugin

\n

Copy or move files uploaded through the forms to a DropBox account.

\n

CLICK HERE for additional information

\n

ip2location add-on – included in the Platinum version of the plugin

\n

Use the ip2location databases to identify additional user information based on their IP. Address such as country, city, coordinates, weather station, time zone, ZIP code, etc.

\n

CLICK HERE for additional information

\n

Google Places add-on – included in the Platinum version of the plugin

\n

Transform fields into autocomplete address fields calling the Google Places API.

\n

CLICK HERE for additional information

\n

Autocomplete Places add-on – included in the Platinum version of the plugin

\n

Transform fields into autocomplete address fields by calling the Photon API.

\n

CLICK HERE for additional information

\n

Signature add-on – included in the Platinum version of the plugin

\n

Transform fields into “Signature” fields to allow the users to sign the form with their mouse or touchscreens.

\n

CLICK HERE for additional information

\n

iCal add-on – included in the Platinum version of the plugin

\n

Send the users iCal files attached to the confirmation emails to import events into the most popular calendars like Outlook and Google Calendar.

\n

CLICK HERE for additional information

\n

CSV Generator add-on – included in the Platinum version of the plugin

\n

Export the information collected by the form to CSV files and attach them to the notification emails.

\n

CLICK HERE for additional information

\n

PDF Generator add-on – included in the Platinum version of the plugin

\n

An experimental add-on that generates PDF files with the information collected by the forms and attaches them to the notification emails.

\n

CLICK HERE for additional information

\n

WebMerge add-on – included in the Platinum version of the plugin

\n

Integrate the forms with the FormStack Documents service (formerly WebMerge) to generate PDF and Office documents with the information collected from the form.

\n

CLICK HERE for additional information

\n

Integrate the form with the Silverpop service (now: IBM Watson Campaign Automation) CLICK HERE for additional information

\n

PrintFriendly add-on – included in the Platinum version of the plugin

\n

Send the information collected by the forms to PrintFriendly and attach the resulting PDF files to the notification emails.

\n

CLICK HERE for additional information

\n

Mailchimp add-on – included in the Platinum version of the plugin

\n

Add new members to the MailChimp lists with the information collected by the form.

\n

CLICK HERE for additional information

\n

Mautic add-on – included in the Platinum version of the plugin

\n

Add/update contacts in the Mautic service with information collected by the forms.

\n

CLICK HERE for additional information

\n

HubSpot add-on – included in the Platinum version of the plugin

\n

Add/update HubSpot contacts with information collected by the forms.

\n

CLICK HERE for additional information

\n

Emma add-on – included in the Platinum version of the plugin

\n

Connect the forms to the Emma service to add new members to Emma groups.

\n

CLICK HERE for additional information

\n

Twilio add-on – included in the Platinum version of the plugin

\n

Send notification messages (SMS) through Twilio in the form’s submissions.

\n

CLICK HERE for additional information

\n

MailPoet add-on – included in the Platinum version of the plugin

\n

Adds subscribers to MailPoet Mailing Lists (MailPoet versions 2 and 3).

\n

CLICK HERE for additional information

\n

AffiliateWP add-on – included in the Platinum version of the plugin

\n

Integrate the forms with the “AffiliateWP” plugin.

\n

CLICK HERE for additional information

\n

Authorize.Net add-on – included in the Platinum version of the plugin

\n

The Authorize.net Server Integration Method (Authorize.net SIM) is a hosted payment processing solution that handles all of the steps in processing a transaction.

\n

CLICK HERE for additional information

\n

Stripe add-on – included in the Platinum version of the plugin

\n

The Stripe Payments add-on (www.stripe.com) provides a way to accept all major cards from customers around the world.

\n

CLICK HERE for additional information

\n

Skrill Payments Integration add-on – included in the Platinum version of the plugin

\n

An interface for accepting payments through secure pages.

\n

You can accept cards, more than 20 local payment methods, and over 80 direct bank transfer connections with a single integration.

\n

CLICK HERE for additional information

\n

TargetPay (iDeal) add-on – included in the Platinum version of the plugin

\n

Integrate with iDeal, the most popular Dutch payment method. The integration is made via TargetPay: https://www.targetpay.com/info/ideal?setlang=en

\n

CLICK HERE for additional information

\n

Mollie (iDeal) add-on – included in the Platinum version of the plugin

\n

Integrate with iDeal, the popular Dutch payment method.

\n

CLICK HERE for additional information

\n

RedSys / Servired / Sermepa add-on – included in the Platinum version of the plugin

\n

A secure interface for accepting credit card payments through most banks in Spain (Sabadell, Banco Popular, BBVA, Santander, Bankia-Caixa, Bankinter, etc.)

\n

CLICK HERE for additional information

\n

PayTM add-on – included in the Platinum version of the plugin

\n

A secure interface for accepting payments through credit cards, debit cards, net banking, wallets, and EMI. With over 100 million PayTM users in India, your customers will appreciate the option to pay with their trusted PayTM Wallet.

\n

CLICK HERE for additional information

\n

SagePay add-on – included in the Platinum version of the plugin

\n

A secure interface for accepting payments through SagePay.

\n

CLICK HERE for additional information

\n

Sage Payment add-on – included in the Platinum version of the plugin

\n

An interface for accepting payments through a secure SSL-checkout system for both bank cards and virtual check transactions. All authorized and approved transactions will be delivered to your current bank card and/or virtual check batches, viewable within the Virtual Terminal for order processing and settlement.

\n

CLICK HERE for additional information

\n","download_link":"https://downloads.wordpress.org/plugin/calculated-fields-form.zip","tags":{"calculator":"calculator","contact-form":"contact form","form":"form","form-builder":"form builder","quote-form":"quote form"},"donate_link":"http://cff.dwbooster.com","icons":{"1x":"https://ps.w.org/calculated-fields-form/assets/icon-128x128.jpg?rev=1734377","2x":"https://ps.w.org/calculated-fields-form/assets/icon-256x256.jpg?rev=1734377"},"wporg":true},{"name":"All in One SEO – Best WordPress SEO Plugin – Easily Improve SEO Rankings & Increase Traffic","slug":"all-in-one-seo-pack","version":"4.1.4.4","author":"All in One SEO Team","author_profile":"https://profiles.wordpress.org/smub","requires":"4.9","tested":"5.8.1","requires_php":"5.4","rating":90,"ratings":{"1":166,"2":22,"3":15,"4":60,"5":1552},"num_ratings":1815,"support_threads":128,"support_threads_resolved":125,"active_installs":2000000,"downloaded":85914099,"last_updated":"2021-09-22 3:46pm GMT","added":"2007-03-30","homepage":"https://aioseo.com/","short_description":"The original WordPress SEO plugin. Improve your WordPress SEO rankings and traffic with our comprehensive SEO tools and smart SEO optimizations.","description":"

AIOSEO – The Best WordPress SEO Plugin & Toolkit

\n

All in One SEO for WordPress is the original WordPress SEO plugin started in 2007. Over 2 million smart website owners use AIOSEO to properly setup WordPress SEO, so their websites can rank higher in search engines.

\n

We believe you shouldn’t have to hire an SEO expert or developer to properly setup WordPress SEO. That’s why we built AIOSEO as the most comprehensive WordPress SEO plugin and marketing toolkit, so you can improve your website’s SEO rankings and uncover new SEO growth opportunities in less than 10 minutes.

\n

At All in One SEO (AIOSEO), user experience is our #1 priority. From website SEO setup to ongoing SEO optimization, our team of SEO experts have created easy to follow SEO workflows that will help you outrank your competitors in search results. This is why many industry leaders award AIOSEO as the most beginner friendly WordPress SEO plugin that’s both EASY and POWERFUL!

\n

AIOSEO’s WordPress SEO plugin features are highly optimized for Google and other popular search engine algorithm because we follow the most up to date SEO standards and SEO best practices. We can honestly say that AIOSEO is the best WordPress SEO plugin in the world.

\n
\n

AIOSEO Pro
\n This plugin is the lite version of the All in One WordPress SEO Pro plugin that comes with all the SEO features you will ever need to rank higher in search engines including smart SEO schema markup, advanced SEO modules, powerful SEO sitemap suite, local SEO module, Google AMP SEO, WooCommerce SEO, and tons more. Click here to purchase the best premium WordPress SEO plugin now!

\n
\n

We took the pain out of optimizing WordPress SEO and made it easy. Here’s why smart business owners, SEO experts, marketers, and developers love AIOSEO, and you will too!

\n

\n

Properly Setup WordPress SEO (without Hiring an Expert)

\n

AIOSEO makes it easy to setup WordPress SEO, the RIGHT WAY. Our smart WordPress SEO setup wizard helps you optimize your website’s SEO settings based on your unique industry needs.

\n

In less than 10 minutes, you will be able to setup all the advanced WordPress SEO features like XML sitemaps, optimized search appearance, SEO meta title, SEO meta description, SEO keywords, Open Graph SEO Knowledge Panel information, social media integration, SEO search console / webmaster tool connections, local SEO, schema markup for SEO, and more.

\n

But don’t just take our word. See what another website owner like yourself is saying:

\n
\n

Swift, honest, full control. After all these years and having used almost every WP SEO plugin I’m amazed by AIOSEO’s depth, simplicity and fast workflow ❤️
\n @aaronbol

\n
\n

Optimize Your Pages for Higher SEO Rankings with TruSEO Analysis

\n

Creating SEO optimized content used to be hard. Why?

\n

Because most business owners aren’t SEO experts.

\n

That’s why we created the TruSEO score. This gives you a more in-depth SEO optimization analysis and an actionable SEO checklist, so you can easily optimize your website pages for any keyword to get higher SEO rankings and maximum traffic.

\n

Our SEO content analysis tool is enabled by default in both the Gutenberg block editor and Classic Editor, so you can quickly optimize your blog posts and pages for your SEO keywords to get higher SEO rankings.

\n

Our SEO readability analysis gives you further insights on how to improve your content for maximum SEO benefits.

\n

The best part about TruSEO analysis is that you can use it to optimize your posts / pages for unlimited SEO keywords.

\n

Seamless SEO Integrations with Webmaster Tools & Social Media

\n

All in One SEO for WordPress offers seamless integration with popular social media platforms like Facebook, Twitter, Pinterest, YouTube, LinkedIn, Instagram, and more.

\n

This ensures that your website preview is optimized for both search engines (SEO), and social media networks.

\n

AIOSEO also makes it easy to connect your website with Google Search Console, Bing webmaster tools, Yandex webmaster tools, Baidu webmaster tools, Google Analytics, and all other SEO webmaster tools.

\n

This helps you easily measure your SEO results and progress.

\n
\n

I’m a professional SEO and used many tools and extensions. Regarding simplicity, individuality and configurability All in One SEO Pro is by far the best SEO plugin out there for WordPress.
\n Joel Steinmann

\n
\n

Smart XML Sitemaps and Rich Snippets (SEO Schema Markup)

\n

Proper website SEO markup plays an important role in improving SEO rankings. That’s why smart SEO experts use AIOSEO for on-page SEO optimization.

\n

Aside from the comprehensive WordPress XML sitemap feature, we also offer News SEO sitemap and Video SEO sitemap to help you improve your website’s SEO ranking and get more traffic.

\n

AIOSEO comes with built-in smart SEO schema markup feature to help you get more traffic through SEO rich snippets, Google featured snippets, breadcrumb site links in SEO, and image SEO search results.

\n
\n

The best SEO plugin. All in One SEO is the best SEO Plugin. I personally find it better than Yoast. This plugin offers so much freedom in configuration.
\n hanapupu

\n
\n

Local SEO, WooCommerce SEO, Google AMP, and More

\n

All in One SEO is the most comprehensive WordPress SEO plugin / marketing toolkit in the world.

\n

We offer complete support for Google Knowledge Graph and Schema.org markup for local businesses. You can add multiple business locations, opening hours, contact info (business email, business phone, business address, etc) and more with our Local SEO module.

\n

AIOSEO also makes WooCommerce SEO easy. With our SEO plugin, you can optimize your product pages and product categories for better SEO rankings (with just a few clicks).

\n

Since AIOSEO is the original WordPress SEO plugin, we have SEO integrations with all popular WordPress plugins such as membership plugin SEO, landing page plugin SEO, Semrush SEO integration, etc. AIOSEO also offers Google AMP integration and works seamlessly with all popular speed & caching plugins.

\n
\n

Best SEO Plugin for WordPress. We continue to use All in One SEO on all our WordPress sites and Clients sites, and we recommend it too all other clients.
\n MySEOGuy

\n
\n

Since SEO is an essential feature, AIOSEO is a must have plugin for every website!

\n

SEO Redirection Manager and 404 Monitoring

\n

AIOSEO Redirection manager helps you set up proper 301 redirects to improve your SEO rankings.

\n

We also support other advanced SEO redirects including 302 redirects, 307 redirects, 410 redirection, 404 redirects, REGEX redirects for advanced SEO needs, and more.

\n

We have an automatic 404 error monitor that helps you track and redirect 404 errors, so you can prevent losing SEO rankings.

\n

Since redirect speed is important for SEO, we built in both Apache / NGINX server level redirects to help you get maximum SEO benefit.

\n

Full All in One SEO Feature List

\n
    \n
  • WordPress SEO Setup Wizard – Properly setup WordPress SEO in less than 10 minutes.
  • \n
  • On-page SEO Optimization – optimize SEO code markup (without hiring a developer)
  • \n
  • TruSEO score – detailed content & readability analysis to help you optimize your pages for higher SEO rankings.
  • \n
  • Smart Meta Title & Description – Automatic SEO generation, dynamic SEO smart tags, and more.
  • \n
  • Unlimited SEO Keywords – our SEO content analyzer helps you optimize your pages for unlimited SEO keywords.
  • \n
  • XML Sitemap – Advanced XML sitemaps to boost your SEO rankings.
  • \n
  • Video SEO Sitemap – Improve your SEO rankings with video sitemap.
  • \n
  • News SEO Sitemap – Increase your SEO traffic with Google News sitemap.
  • \n
  • RSS SEO Sitemap – Improve SEO crawl frequency with RSS sitemap.
  • \n
  • Automatic Image SEO – Our image SEO module helps your images rank higher.
  • \n
  • Local Business SEO – Improve your local business SEO presence with our local SEO module.
  • \n
  • Multiple location SEO – Great for SEO optimization for businesses with multiple local store locations.
  • \n
  • Rich Snippets Schema – Get better click through rate (CTR) and increase SEO rankings with rich snippets schema.
  • \n
  • SEO Knowledge Graph Support – Improve your website’s search appearance with SEO Knowledge panel.
  • \n
  • Advanced SEO Schema – Easily add advanced SEO schema markups like FAQ schema, product schema, recipe schema (food blogger SEO), software application schema markup (SaaS SEO), online course schema (for course SEO), and more.
  • \n
  • Sitelinks Search Box – Helps you get a search box in Google SEO rankings.
  • \n
  • Google Site Links – Our SEO markup can help you get sitelinks for your brand.
  • \n
  • Robots.txt Editor – Control what SEO robots can see with our easy SEO robots.txt editor.
  • \n
  • SEO Audit Checklist – Improve your website’s SEO ranking with our SEO audit checklist.
  • \n
  • Google Search Console – Connect your WordPress site with Google webmaster tools to see additional SEO insights.
  • \n
  • Search Engine Verification Tools – Easily integrate with other popular SEO webmaster tools to improve search visibility.
  • \n
  • Google AMP SEO – Improve your mobile SEO rankings with Google AMP SEO.
  • \n
  • Advanced SEO Canonical URLs – Prevent duplicate content in SEO with automatic canonical URLs and boost your SEO rankings.
  • \n
  • Advanced Robots Meta SEO Settings – granular controls for no index, no follow, no archive, no snippet, max snippet, max video, and more.
  • \n
  • RSS Content for SEO – Stop content theft from hurting your SEO rankings with our RSS Content tool.
  • \n
  • User Access Control – Control who can manage your SEO settings with our advanced SEO access control.
  • \n
  • Competitor Site SEO Analysis – Use our competitor SEO analysis to outrank them by improving your website’s SEO optimization.
  • \n
  • Smart Breadcrumbs – Add Breadcrumb navigation to improve user experience and boost your SEO rankings. Comes with full SEO JSON+LD support.
  • \n
  • Smart SEO Redirects – Setup proper 301 redirects to improve your SEO rankings.
  • \n
  • 404 Error Monitor for SEO – Monitor website 404 errors and set up proper SEO redirects to prevent losing SEO rankings.
  • \n
  • Title and Nofollow for SEO – We make it easy for you to add title and nofollow to external links to improve SEO rankings.
  • \n
\n

WordPress SEO Integrations

\n
    \n
  • WooCommerce SEO – optimize your WooCommerce product pages and improve your WooCommerce store’s SEO rankings.
  • \n
  • MemberPress SEO – optimize your MemberPress course pages and improve your membership site’s SEO rankings.
  • \n
  • Elementor SEO – add SEO optimization for your Elementor landing pages.
  • \n
  • LearnDash SEO – SEO optimization for LearnDash courses.
  • \n
  • Facebook SEO – SEO optimize your website preview on Facebook.
  • \n
  • Twitter SEO – SEO optimize your website preview on Twitter.
  • \n
  • Pinterest SEO – SEO optimize your website preview on Pinterest.
  • \n
  • Open Graph Support – improve your SEO with open graph meta data.
  • \n
  • Knowledge Panel SEO – improve website SEO apperance by adding social media profile links for Facebook, Twitter, Wikpedia, Instagram, LinkedIn, Yelp, YouTube, and more.
  • \n
  • SEO Webmaster Tool Content – Connect your WordPress site with various webmaster tools to improve SEO rankings.
  • \n
  • Semrush SEO integration – See additional SEO keywords and relevant SEO keyphrases with our Semrush SEO integration.
  • \n
\n

WordPress SEO Plugin Importer

\n
    \n
  • Yoast SEO Importer – easily switch from Yoast SEO to AIOSEO with our full SEO migration wizard that includes SEO keywords, SEO title, meta description, XML sitemaps and more.
  • \n
  • Yoast SEO Premium Importer – easily import Yoast SEO premium settings including SEO redirects to AIOSEO with our full SEO migration wizard.
  • \n
  • RankMath SEO Importer – easily switch from RankMath SEO to AIOSEO with our SEO migration wizard.
  • \n
  • SEO Settings Backup – create a backup of your AIOSEO settings.
  • \n
  • Advanced SEO Import / Export – easily import / export AIOSEO settings from one site to another.
  • \n
  • Redirection Importer – import your SEO redirects from the Redirection plugin with our SEO migration wizard.
  • \n
  • Simple 301 Redirects Importer – import your SEO redirects from Simple 301 redirets with our SEO migration wizard.
  • \n
  • Safe Redirection Manager – easily import SEO redirects from safe redirect manager with our SEO migration wizard.
  • \n
\n

After reading this feature list, you can probably imagine why AIOSEO is the best WordPress SEO plugin in the market.

\n

Give AIOSEO a try.

\n

Want to unlock more SEO features? Upgrade to AIOSEO Pro.

\n

Credits

\n

This plugin is created by Benjamin Rojas and Syed Balkhi.

\n

Branding Guideline

\n

AIOSEO® is a registered trademark of Semper Plugins LLC. When writing about the WordPress SEO plugin by AIOSEO, please use the following format.

\n
    \n
  • AIOSEO (correct)
  • \n
  • All in One SEO (correct)
  • \n
  • AIO SEO (incorrect)
  • \n
  • All in 1 SEO (incorrect)
  • \n
  • AISEO (incorrect)
  • \n
\n

What’s Next

\n

If you like our WordPress SEO plugin, then consider checking out our other projects:

\n
    \n
  • OptinMonster – Get More Email Subscribers with the most popular conversion optimization plugin for WordPress.
  • \n
  • WPForms – #1 drag & drop online form builder for WordPress.
  • \n
  • MonsterInsights – See the Stats that Matter and Grow Your Business with Confidence. Best Google Analytics Plugin for WordPress.
  • \n
  • SeedProd – Create beautiful landing pages with our powerful drag & drop landing page builder.
  • \n
  • WP Mail SMTP – Improve email deliverability for your contact form with the most popular SMTP plugin for WordPress.
  • \n
  • RafflePress – Best WordPress giveaway and contest plugin.
  • \n
  • Smash Balloon – #1 social feeds plugin for WordPress.
  • \n
  • SearchWP – advanced WordPress search plugin.
  • \n
  • PushEngage – best web push notification plugin.
  • \n
\n

Visit WPBeginner to learn from our WordPress Tutorials and find out about other best WordPress plugins.

\n","download_link":"https://downloads.wordpress.org/plugin/all-in-one-seo-pack.4.1.4.4.zip","tags":{"google-search-console":"google search console","meta-description":"meta description","schema":"schema","seo":"seo","xml-sitemap":"xml sitemap"},"donate_link":"","icons":{"1x":"https://ps.w.org/all-in-one-seo-pack/assets/icon.svg?rev=2443290","2x":"https://ps.w.org/all-in-one-seo-pack/assets/icon-256x256.png?rev=2443290","svg":"https://ps.w.org/all-in-one-seo-pack/assets/icon.svg?rev=2443290"},"wporg":true},{"name":"Weglot Translate – Translate your WordPress website and go multilingual","slug":"weglot","version":"3.4","author":"Weglot Translate team","author_profile":"https://profiles.wordpress.org/remyb92","requires":"4.5","tested":"5.8.1","requires_php":"5.6","rating":96,"ratings":{"1":40,"2":7,"3":6,"4":27,"5":1222},"num_ratings":1302,"support_threads":6,"support_threads_resolved":6,"active_installs":40000,"downloaded":1236506,"last_updated":"2021-09-24 3:41pm GMT","added":"2015-09-27","homepage":"http://wordpress.org/plugins/weglot/","short_description":"Translate your WordPress website in 110+ languages within minutes with Weglot Translate, without any coding.","description":"

Weglot Translate is the leading WordPress translation plugin, trusted by 60,000+ users worldwide. Translate your WordPress website into 110+ languages and go multilingual within minutes, no coding required.

\n

Increase visibility and boost conversions with ease by adding multilingual functionality. Weglot Translate is fully optimized for multilingual SEO, with every translated page automatically indexed by Google. Say hello in multiple languages to millions of new visitors.

\n

Make your website multilingual in minutes with a free trial. Visit https://weglot.com/ to learn more!

\n

How Weglot Translate works

\n\n

Why Weglot Translate

\n

It’s easy to install: Weglot Translate is quick to set up to have a multilingual WordPress website ready, instantly. Reach out to millions of new visitors worldwide with a few clicks, without any coding.

\n

It’s built for maximum compatibility: Weglot Translate is fully compatible with all platforms, WordPress themes, and plugins. From WooCommerce product descriptions to Elementor order forms, everything is built with the creation of a successful multilingual website in mind: easily translate all your content into the languages of your choice. This way you can focus on your content, not the technical details.

\n

It’s optimized for SEO: Weglot Translate follows Google’s best practices for multilingual website translation, serving all translated web pages with clean source code. Google will automatically index every translated page with dedicated URLs.

\n

It’s easy to set and forget: Weglot Translate automatically detects all your website content for easy translation. No more time-consuming manual duplication of every single line of content to get a multilingual website. All translations are updated in real-time, so you don’t need to worry about maintenance and any newly added content is automatically translated.

\n

It takes translation seriously: Weglot Translate gives you an edge on your translation tasks with the first layer of automatic multilingual translation provided by the best machine learning providers on the market (DeepL, Google, Microsoft, and Yandex). You can also edit the translations and collaborate with your team to work on multilingual translations together, directly within Weglot.

\n

It partners with the pros: Weglot Translate lets you order from vetted professional translators directly inside your Weglot dashboard. Set translation quality the way you want it to be, with Weglot Translate.

\n

“Within a week of translating our site to English with Weglot, international sales doubled, by the following month – they had quadrupled.”
\nClara Champion – Director of Digital and E-Commerce, Jimmy Fairly
\nRead the case study

\n

Multilingual functionality like no other

\n

Increase visibility: All translated pages are automatically indexed following Google’s best practices with dedicated URLs. Get new traffic with your multilingual website.

\n

Reduce bounce rate: Redirect visitors automatically to serve them in the language of their choice, based on their browser settings.

\n

Enhance user experience: From the landing page to the email confirmation, get all your key conversion steps translated in your customers’ language. You can even add different images and videos for various languages. Useful for images with text, Weglot Translate makes it easy to display “translated” images in your translated versions. Media localization is an essential aspect of any multilingual project and Weglot Translate makes it simple to do so.

\n

“We really loved the localization features provided by Weglot, such as the ability to translate images and other types of media depending on the language the visitor is viewing the site in.”
\nKim Martin – Senior Communications and Marketing Officer, The Challenge Initiative
\nRead the case study

\n

An all-in-one language translation platform

\n
    \n
  • Manage and edit all of your translations through a user-friendly interface.
  • \n
  • Collaborate with team members and trusted translators to translate together, directly inside Weglot.
  • \n
  • Is it a title? Is it a link? No more guessing the context of the text. Weglot Translate’s in-context editor lets you translate directly within the webpage.
  • \n
  • Make it your own. The multilingual language switcher is fully customizable with multiple design choices.
  • \n
  • Weglot Translate makes it easy to migrate from other WordPress multilingual plugins like Polylang or WPML. Simply deactivate your existing translation plugin and install Weglot Translate.
  • \n
\n

“Weglot removed the pain of having to manage multiple stores for multiple locales. The integration was easy, and the support is incredibly helpful. I highly recommend Weglot to anyone looking for a simple and cost-effective solution to translate their stores!”
\nMike Robertson – Director of Sales Operations, Nikon

\n

With an increase in site visitors and session duration thanks to your multilingual website, you can expect a massive boost to your conversions. See why thousands of e-commerce platforms, SaaS firms, marketplaces, corporate websites, and blogs worldwide love Weglot Translate for its multilingual powers. Try it today for free

\n

Why should you have a multilingual website?

\n

It’s easy to forget all about other languages when setting up your online business! With the resources needed to put together a new website, multilingual capabilities are very commonly ignored, as the process to get multiple translations can get complicated and expensive. But ignoring the importance of being multilingual can be a costly mistake: unlocking the possibility for visitors to read and interact in their own language means you’ll be significantly widening your reach, increasing your chances of business success!

\n

This is why it’s important to think of ways to cater for more languages: multilingual websites naturally rank in more countries and attract more potential customers. Your visitors will also feel like you are significantly more localized by speaking to them in a language they easily understand!

\n

But how about the cost and headache to set up a proper multilingual website? This is where Weglot can make it easy: with a simple way to unlock multilingual capabilities swiftly, your website can go from targeted towards a single language to multilingual in an easy, affordable manner!

\n

Please note that Weglot is using Cloudfront CDN to display flags images to speed up performance around the world.
\nThe use of this CDN and of Weglot service is subject to Weglot terms of service

\n","download_link":"https://downloads.wordpress.org/plugin/weglot.3.4.zip","tags":{"language":"language","localization":"localization","multilingual":"multilingual","translate":"translate","translation":"translation"},"donate_link":"","icons":{"1x":"https://ps.w.org/weglot/assets/icon-128x128.png?rev=2186774","2x":"https://ps.w.org/weglot/assets/icon-256x256.png?rev=2186774"},"wporg":true},{"name":"Rank Math SEO – Best SEO Plugin For WordPress To Increase Your SEO Traffic","slug":"seo-by-rank-math","version":"1.0.73","author":"Rank Math","author_profile":"https://profiles.wordpress.org/rankmath","requires":"5.6","tested":"5.8.1","requires_php":"7.2","rating":98,"ratings":{"1":72,"2":17,"3":20,"4":52,"5":3521},"num_ratings":3682,"support_threads":121,"support_threads_resolved":114,"active_installs":900000,"downloaded":21069673,"last_updated":"2021-09-29 8:57am GMT","added":"2018-11-19","homepage":"https://s.rankmath.com/home","short_description":"Rank Math SEO is the Best WordPress SEO plugin combines the features of many SEO tools in a single package & helps you multiply your SEO traffic.","description":"

Rank Math SEO – Best SEO Plugin for WordPress
\n★★★★★

\n

SEO is the most consistent source of traffic for any website. We created Rank Math SEO, a WordPress SEO plugin, to help every website owner get access to the SEO tools they need to improve their SEO and attract more traffic to their website.

\n

Try The FREE Demo of Rank Math SEO

\n\n

Features | Why Choose Rank Math SEO? | Compare | Screenshots | Benefits

\n

SEO might be the best and most consistent source of traffic for one’s website, but it’s not without its quirks. The constant process of optimizing your posts can sometimes take more time than actually writing the content. If you always feel that you can do more on the SEO front for your website but don’t have the time, then Rank Math SEO is what you’re looking for.

\n

Its host of intelligent features brings top SEO capabilities in your hands that were previously out of reach. The smart automation features give you the power of an entire SEO team with just a few clicks. A well thought out design, powerful features, and years of development by the MyThemeShop squad make Rank Math SEO a game-changing SEO plugin that will level the SEO playing field in your favor to help increase traffic.

\n

Rank Math SEO beats all of its competitors, hands down.

\n

See the features which are exclusive to the Rank Math SEO plugin and understand why Rank Math SEO is possibly the Best SEO Plugin for WordPress.

\n
    \n
  • \n

    Setup Wizard (Easy to follow)
    \nRank Math SEO practically configures itself. Rank Math SEO features a step-by-step installation and configuration wizard that sets up SEO for WordPress perfectly.

    \n
  • \n
  • \n

    Google Schema Markup aka Rich Snippets Integrated
    \nConfiguring Google Schema Markup, aka Rich Snippets, is now easy, thanks to Rank Math SEO. With support for 16+ types of Schema Markups, aka Rich Snippets, including the Rating Schema, you’ll be able to optimize your posts in just a few clicks. It also includes the FAQ Schema aka FAQPage Schema Block & the HowTo aka How To Schema Block in the plugin.

    \n
  • \n
  • \n

    Optimize Unlimited Keywords
    \nUnlike other plugins, Rank Math SEO lets you optimize your posts for unlimited focus keywords per post. 5 by default. Increase by adding this filter.

    \n
  • \n
  • \n

    Google Search Console Integration
    \nRank Math SEO saves you a ton of time by integrating with Google Search Console and displaying important information about your website right inside WordPress.

    \n
  • \n
  • \n

    Google Keyword Ranking
    \nWith Rank Math SEO Plugin, you can track your keyword rankings in Google.

    \n
  • \n
  • \n

    Google Analytics Integration
    \nRank Math SEO offers a one-click solution to install Google Analytics script without pasting anything manually anywhere. You can also exclude the Logged-in users.

    \n
  • \n
  • \n

    Optimal Settings Pre-Selected
    \nConfiguring an SEO plugin takes time, and can be confusing. Rank Math SEO saves you the trouble with its optimal default settings, which are ideal for most websites, and if needed, can be changed.

    \n
  • \n
  • \n

    LSI Keyword Tool Integrated
    \nRank Math SEO’s integrated LSI keyword tool gives you multiple keyword variations of your focus keyword, which helps you attract more traffic to your posts. Free account needed.

    \n
  • \n
  • \n

    Add Overlay Icons On Social Images
    \nRank Math SEO makes social thumbnails click magnets by giving you the option of overlaying a GIF or a video icon on the thumbnail.

    \n
  • \n
  • \n

    Advanced SEO Analysis Tool
    \nWith just a single click, Rank Math SEO can perform an SEO audit of your website.

    \n
  • \n
  • \n

    30 Detailed SEO Tests
    \nRank Math SEO is designed to completely supercharge your website’s SEO with its 30 detailed SEO tests. Free account needed.

    \n
  • \n
  • \n

    Module Based System
    \nRank Math SEO has been designed with a module-based system, each of which can be enabled or disabled as per your needs, giving you extra speed and control.

    \n
  • \n
  • \n

    Smart Redirection Manager
    \nRank Math SEO’s built-in smart redirection manager will help you create, manage, delete, enable, or disable redirects at scale.

    \n
  • \n
  • \n

    Local Business SEO
    \nRank Math SEO is designed to be used by Global websites and local websites alike. With its local SEO features, local sites can stand out in the search engine results like Google’s and attract more traffic.

    \n
  • \n
  • \n

    SEO Optimized Breadcrumbs
    \nRank Math SEO can display SEO optimized Breadcrumbs on all websites, even if the theme doesn’t support Schema.org coding.

    \n
  • \n
  • \n

    404 Monitor
    \nRank Math SEO has a built-in 404 error monitor that helps you find and resolve 404 errors for a better user experience.

    \n
  • \n
  • \n

    Deep Content Analysis Tests
    \nOn-Page SEO is no longer a mystery with Rank Math SEO’s deep content analysis and precise SEO recommendations.

    \n
  • \n
  • \n

    Internal Linking Suggestions
    \nRank Math SEO intelligently suggests other posts from your website for internal linking from your current posts, improving the chances of ranking higher in the SERPs.

    \n
  • \n
  • \n

    Role Manager
    \nEven if you have multiple employees manage your website, you can precisely control what each of them has to access to in Rank Math SEO with its role manager.

    \n
  • \n
  • \n

    Multisite Ready
    \nWhether you run a single WordPress website or an entire network of sites – we are ready for you. Rank Math SEO fully supports the WordPress Multiuser project (WPMU).

    \n
  • \n
  • \n

    and has lightweight Code compared to slow-loading in other SEO plugins.
    \nEven with significantly more features than other plugins, Rank Math SEO loads amazingly fast and keeps your website fast always.

    \n
  • \n
\n

Why is Rank Math SEO such a game-changer?

\n
    \n
  • \n

    Auto Configuration — All you have to do is set a few options, and Rank Math SEO will configure itself perfectly for your website.

    \n
  • \n
  • \n

    Super Fast SEO Plugin — Even after packing so many features, Rank Math SEO has a negligible load on your server, thus making it one of the fastest SEO plugins for WordPress.

    \n
  • \n
  • \n

    Automatic Keyword Suggestions from Google — Get keyword suggestions from Google as you start typing letters in the focus keyword field of Rank Math SEO.

    \n
  • \n
  • \n

    New SEO Analyzer — Rank Math SEO’s built-in SEO analysis will give you SEO recommendations that you’d normally spend hundreds of dollars to get.

    \n
  • \n
  • \n

    Elementor SEO – Deep integration with the Elementor Page builder. Now, you don’t need to go back and forth between tabs to configure your page’s SEO. Everything related to SEO for Elementor can be configured in the visual editor.

    \n
  • \n
  • \n

    Divi SEO – One of its kind integration with the Divi Page Builder and theme. Handle everything related to SEO from the page editor screen without jumping back to the default editor. This helps you optimize your website in real-time for SEO.

    \n
  • \n
  • \n

    Page Builder SEO – The Rank Math SEO plugin’s content analysis works perfectly with popular page builders and themes like Oxygen Builder, WPBakery, Avada, Astra, Kadence, Themify, Beaver Builder, Page Builder Framework, Schema theme, Flothemes, OceanWP, etc.

    \n
  • \n
  • \n

    Optimize UNLIMITED Keywords At Once — You can optimize your post for up to 5 different keywords by default with the Rank Math SEO plugin and can use a filter to optimize for unlimited keywords.

    \n
  • \n
  • \n

    Image SEO – With Rank Math SEO’s perfect solution to add ALT & Title tags on the fly, to optimize images, showing inside the content, and that too for FREE, there is no reason to choose any other SEO solution that does not provide all the essential SEO features.

    \n
  • \n
  • \n

    Web Stories SEO – Make any Story created with the Google’s Web Stories plugin SEO-Ready. Automatically adds AMP-friendly Schema markup and Meta tags.

    \n
  • \n
  • \n

    WooCommerce SEO – Optimizing your store products is easier with Rank Math. SEO Meta tags and Schema are automatically added but can be customized with total control as well. Rank Math SEO has the most advanced SEO for WooCommerce.

    \n
  • \n
  • \n

    Google AMP SEO – Accelerated Mobile Pages need to be prepared for search engines. What better way to do that than letting Rank Math SEO use your regular SEO details and optimizing AMPs based on that data?

    \n
  • \n
  • \n

    bbPress SEO – User-generated content in bbPress is properly optimized with Rank Math handling all the important SEO aspects. Q&A Schema is added to bbPress topics along with other essential meta tags.

    \n
  • \n
  • \n

    BuddyPress SEO – As with bbPress, SEO for BuddyPress content is done automatically done using Rank Math. You get all the options you need to get higher rankings with your user-generated content.

    \n
  • \n
  • \n

    Quick Edit SEO Details – Go through a lot of posts/pages quickly by ensuring they are optimized for search engines. Quickly edit multiple SEO fields at once using Rank Math SEO.

    \n
  • \n
  • \n

    Instant Indexing for Bing – Get your content instantly indexed by Bing. Enter a few key details and you are all set and ready to go.

    \n
  • \n
  • \n

    Instant Indexing for Google – Instantly getting indexed by Google used to be reserved to huge brands and large websites. Not anymore. Just about anyone can take advantage of Google’s Instant Indexing feature using Rank Math SEO.

    \n
  • \n
  • \n

    Version Control – Rollback or try beta versions. Updating and downgrading your plugins is now a matter of few clicks. Automatically update to the latest versions or try out the latest beta builds.

    \n
  • \n
  • \n

    Translation Plugins Support — Rank Math SEO works flawlessly with the top translations plugins like WPML, TranslatePress, Weglot, Polylang (not entirely compatible yet), etc., making it a perfect companion.

    \n
  • \n
  • \n

    XML Sitemap – The Rank Math SEO plugin comes with a fast-loading Sitemap feature that works with different post types, including the custom ones, and provides deep controlling. One can also generate a Locations KML file via filter for Local Sitemap, & a WooCommerce Sitemap.

    \n
  • \n
  • \n

    1-Click Import From Yoast — With a single click of your mouse, Rank Math SEO can import all your settings from Yoast SEO & Yoast SEO Premium to itself. The transfer is instant, and you don’t lose any SERP rankings as a result.

    \n
  • \n
  • \n

    1-Click Import From AIO SEO — Rank Math SEO can also import all your settings from AIO SEO & All in One SEO Pack Pro in a single click. The transfer is instant, and you don’t lose any SERP rankings as a result.

    \n
  • \n
  • \n

    1-Click Import From All In One Schema Rich Snippets — Rank Math SEO can also import all of AIO’s Rich Snippet & Schema Pro settings in a few clicks, which help preserve your rich rankings when moving to Rank Math SEO.

    \n
  • \n
  • \n

    1-Click Import From SEOPress SEO — With a single click of your mouse, Rank Math SEO can import all your settings from SEOPress & SEOPress Pro SEO plugin to itself. The transfer is instant, and you don’t lose any SERP rankings as a result.

    \n
  • \n
  • \n

    1-Click Import From Redirection — Moving all your redirects shouldn’t be a hassle. That’s why we have made importing redirections from the popular Redirection plugin as simple as clicking a button.

    \n
  • \n
  • \n

    Google Keyword Suggestion — When deciding on focus keywords, Rank Math SEO can help you discover more keywords by pulling in automatic keyword suggestions from Google.

    \n
  • \n
\n

Who Can Benefit From Rank Math SEO?

\n

Rank Math SEO Plugin is perfect for:

\n

✔ Bloggers
\n✔ eCommerce Store Owners
\n✔ Niche Sites
\n✔ Businesses
\n✔ Local Businesses
\n✔ Startups
\n✔ The Real Estate
\n✔ Artists & Photographers
\n✔ The Solution Offerer
\n✔ Directories
\n✔ Vloggers (Video Bloggers)
\n✔ Or any WordPress Website

\n

Take a sneak peek into Rank Math SEO’s features

\n

Detailed Setup Tutorial

\n\n

List of Best Rank Math SEO Features

\n
    \n
  • Clean, & Simple User Interface
  • \n
  • Optimal Settings Pre-Selected
  • \n
  • Simple Setup Wizard\n
      \n
    • Compatibility Check
    • \n
    \n
  • \n
  • Auto Canonical URLs
  • \n
  • LSI Keyword Tool Integrated
  • \n
  • Google Search Console Integration
  • \n
  • Google Keyword Ranking
  • \n
  • Import Other Plugin Settings\n
      \n
    • 1 Click Import From Yoast SEO Plugin
    • \n
    • 1 Click Import From AIO SEO
    • \n
    • 1 Click Import From SEOPress & SEOPress Pro
    • \n
    • 1 Click Import From All In One Schema Rich Snippets & Schema Pro
    • \n
    • 1 Click Import From Redirection Plugin
    • \n
    \n
  • \n
  • Role Manager
  • \n
  • ACF Support
  • \n
  • AMP Ready
  • \n
  • bbPress & BuddyPress Modules
  • \n
  • Google Schema Markup Integrated\n
      \n
    • Article Rich Snippet
    • \n
    • Review Rich Snippet
    • \n
    • Book Rich Snippet
    • \n
    • Course Rich Snippet
    • \n
    • Event Rich Snippet
    • \n
    • Job Posting Rich Snippet
    • \n
    • Local Business Rich Snippet
    • \n
    • 193 Local Business Types
    • \n
    • Music Rich Snippet
    • \n
    • Person Rich Snippet
    • \n
    • Product Rich Snippet
    • \n
    • Recipe Rich Snippet
    • \n
    • Restaurant Rich Snippet
    • \n
    • Service Rich Snippet
    • \n
    • Software Application Rich Snippet
    • \n
    • Video Rich Snippet
    • \n
    • Author Stay Rating
    • \n
    \n
  • \n
  • Social Media Optimization\n
      \n
    • Add Overlay Icons On Social Images
    • \n
    • Default OpenGraph Thumbnail
    • \n
    • Auto Facebook Open Graph
    • \n
    • Facebook Authorship
    • \n
    • Facebook Open Graph for Homepage
    • \n
    • Automatic Twitter Meta Cards
    • \n
    • Twitter Card for Homepage
    • \n
    • Default Twitter Card Type
    • \n
    • Social Previews
    • \n
    \n
  • \n
  • Add Knowledge Graph\n
      \n
    • Represent site as a Person
    • \n
    • Represent site as a Company
    • \n
    • Set a Site Logo
    • \n
    \n
  • \n
  • Advanced SEO Analysis Tool\n
      \n
    • 30 Detailed SEO Tests
    • \n
    • SEO Analysis Score
    • \n
    \n
  • \n
  • Automated Image SEO
  • \n
  • Powerful Post Optimization\n
      \n
    • Add SEO Meta Box to all post types
    • \n
    • Bulk Edit Titles & Descriptions
    • \n
    • Post Preview on Google
    • \n
    • Content Analysis
    • \n
    • Control SEO For Single Pages
    • \n
    • Control The Title
    • \n
    • Control Meta Description
    • \n
    • Auto Add Additional Meta Data
    • \n
    • Control ROBOTS Meta
    • \n
    • Choose a Primary Category
    • \n
    \n
  • \n
  • Single Post/page Optimization\n
      \n
    • Focus Keyword
    • \n
    • Google Keyword Suggestion
    • \n
    • Optimize UNLIMITED Keywords (5 by default)
    • \n
    • Choose Pillar Posts & Pages
    • \n
    • Internal Linking Suggestions
    • \n
    • Capitalize Titles
    • \n
    • SEO Failed Tests
    • \n
    • SEO Warnings
    • \n
    \n
  • \n
  • XML Sitemap (New!)
  • \n
  • Module Based System
  • \n
  • Choose Any Separator Character
  • \n
  • Modify Global Meta
  • \n
  • Search Engine Verification Tools\n
      \n
    • Bing Site Verification
    • \n
    • Baidu Site Verification
    • \n
    • Alexa Site Verification
    • \n
    • Yandex Site Verification
    • \n
    • Google Site Verification
    • \n
    • Pinterest Site Verification
    • \n
    • Norton Safe Web Site Verification
    • \n
    \n
  • \n
  • Advanced Redirection Manager\n
      \n
    • Smart & Automatic Post Redirects
    • \n
    • 301 Redirection Type
    • \n
    • 302 Redirection Type
    • \n
    • 307 Redirection Type
    • \n
    • 410 Redirection Type
    • \n
    • 451 Redirection Type
    • \n
    • Support for REGEX
    • \n
    • Debug Redirections
    • \n
    \n
  • \n
  • Simple 404 Monitor\n
      \n
    • Advanced 404 Monitor
    • \n
    \n
  • \n
  • Advanced SEO Breadcrumbs\n
      \n
    • Auto Show SEO Breadcrumbs
    • \n
    \n
  • \n
  • Advanced Link Options\n
      \n
    • Nofollow All External Image Links
    • \n
    • Nofollow All External Links
    • \n
    • Open External Links in New Tab/Window
    • \n
    • Redirect Attachments to Parent
    • \n
    • Strip Category Base
    • \n
    \n
  • \n
  • Remove Stopwords from Permalinks
  • \n
  • Ping Search Engines
  • \n
  • Local SEO Optimization\n
      \n
    • Contact Info Shortcode
    • \n
    \n
  • \n
  • Deep Support For WooCommerce SEO
  • \n
  • Compatible for EDD SEO (Easy Digital Downloads SEO)
  • \n
  • Only 30k Lines of Code\n
      \n
    • PSR-4 Coding Standards (wherever possible)
    • \n
    \n
  • \n
  • Optimize Different Archives\n
      \n
    • Optimize Author Archive Pages
    • \n
    • Optimize Date Archive Pages
    • \n
    • Optimize Archive Pages
    • \n
    \n
  • \n
  • .htaccess Editor
  • \n
  • Robots.txt Editor
  • \n
  • Import/Export Settings
  • \n
  • Import/Export Redirections
  • \n
  • Add Content Before the RSS Feed
  • \n
  • Add Content After the RSS Feed
  • \n
  • Detailed Documentation\n
      \n
    • Contextual Help
    • \n
    \n
  • \n
\n

BIG Publications are Raving About Rank Math SEO

\n

Rank Math SEO Reviews

\n\n\n

Rank Math SEO Review – Why I Ditched Yoast For Rank Math SEO

\n

Rank Math SEO on Product Hunt

\n

Rank Math SEO Plugin Review from an SEO Consultant

\n

and many more

\n

Check RANK MATH PRO WHICH MAKES SEO EASIER & FASTER

\n\n

Rank Math SEO FREE VS PRO COMPARISON

\n

UNIQUE FEATURES OF RANK MATH SEO PRO

\n

Google Analytics & Search Console Integration (The only SEO plugin that provides it)
\n✔ Integrated Google Analytics, AdSense & Search Console Data
\n✔ Analyze SEO Performance of Each Post & Page
\n✔ See Top Winning/Losing Posts & Keywords
\n✔ Keep Track of Position History
\n✔ Rank Tracker for Important Keywords

\n

Schema aka Structured Data aka Rich Snippets. The BEST Schema Generator Available Online
\n✔ 20+ Pre-defined Schema types (more than any other plugin) –
\n✔ Import Schema from Other Websites
\n✔ Advanced Schema Builder [Advanced SEOs can use this to create any complex Schema Markup)
\n✔ Schema Templates for Automation
\n✔ Conditional Schema Markup
\n✔ Inbuilt Schema Code Preview and Validation
\n✔ Multiple Location Schema On Any Page (using the Shortcode)

\n

Automation At Its BEST
\n✔ Automated Image SEO
\n✔ Advanced Filtering for Images [https://i.rankmath.com/zAUHHP]
\n✔ Watermark Your images
\n✔ Advanced Post filtering
\n✔ Bulk Actions [index, noindex, redirect, etc.]
\n✔ Quick Edit SEO Details
\n✔ Bulk Import SEO Meta Details Using CSV file
\n✔ Auto Detect Videos and Generate Schema Markup for Them
\n✔ Auto Fetch Thumbnail, Duration of YouTube & Vimeo Videos
\n✔ Automatically Flush Facebook Thumbnails
\n✔ Open External Links in New Tabs
\n✔ Nofollow External Links
\n✔ Noindex Paginated, Archive, Search Result Pages
\n✔ Instant Indexing for Bing [Also Google using our Instant Indexing Plugin]

\n

WooCommerce SEO
\n✔ Automatic Schema for WooCommerce Products
\n✔ Advanced Open Graph Tags for WooCommerce Products
\n✔ Automatic NoIndex Hidden Products
\n✔ Remove WooCommerce Product and Category Base
\n✔ Add Custom Brands to Products
\n✔ Add Global Identifier Like GTIN/MPN – Even to Variations

\n

Workflow Improvements
\n✔ Internal Role Manager
\n✔ Inbuilt Google Trends Insights
\n✔ Site Audit with 29 Unique Tests
\n✔ Import Redirections Using CSV File
\n✔ Categorize Redirections for Grouping
\n✔ One-Click Redirection for 404s
\n✔ Monitor Search Performance of Entire Portfolio
\n✔ Easy and Advanced Mode

\n

Miscellaneous
\n✔ Supports bbPress SEO and BuddyPress SEO
\n✔ Version Control – Rollback or Try Beta Versions

\n

MANY MORE FEATURES
\n✔ PREMIUM 24x7x365 Dedicated Support Managers
\n✔ MOST COMPETITIVE PRICING EVER!

\n

CHEK ALL THE PREMIUM FEATURES AND PRICING HERE

\n

CONNECT WITH THE TEAM AND SEO EXPERTS

\n

JOIN FACEBOOK GROUP COMMUNITY: The purpose of this Facebook group is to have a collective place where the community can help each other, and we can get some feedback to improve Rank Math SEO as well. Joining the group is also a great way to connect with like-minded people and share your SEO experience.

\n

Branding Guideline

\n

Rank Math® SEO is a registered trademark. Please use the following format when mentioning the Rank Math SEO plugin anywhere.
\n* Rank Math SEO [correct]
\n* RankMath [incorrect]
\n* Rankmath [incorrect]
\n* rankmath [incorrect]
\n* rankMath [incorrect]

\n

Getting Started:

\n

1. How to Setup Rank Math SEO: Once you install Rank Math SEO for the first time, you will be greeted with the Setup Wizard, which is discussed in detail here.

\n

2. Facebook Group: In this group, you will find the team of Rank Math SEO plugin fairly active and ready to answer your SEO related queries.

\n

3. User Documentation: Although Rank Math SEO is already easy to set up, we’ve put together tutorials, guides, and some knowledge bases to help you set up and get started with Rank Math SEO.

\n

4. Contribute (Sharing is caring): If you are one of those caring hearts that want to help, go to our Rank Math SEO’s GitHub Repository and see how you can contribute to the SEO community. You can also add a new language via translate.wordpress.org.

\n

5. Fixing Common Errors: Sometimes, avoidable or common issues can get you stuck. We’ve created a common guide where we discuss all the common issues and how to fix them.

\n

6. Support Ticket Forum: Our dedicated forum is where you can get support for any issues that you face with Rank Math SEO. In the forum, we’ll also try to answer some SEO queries. User experience is important to us, and our aim is to answer all the queries on the forum in a timely manner.

\n

7. Frequently Asked Questions: Here, we’ve answered the most commonly asked questions about Rank Math SEO. The questions are related to features, pricing, and others.

\n","download_link":"https://downloads.wordpress.org/plugin/seo-by-rank-math.1.0.73.zip","tags":{"google-search-console":"google search console","redirection":"redirection","schema":"schema","seo":"seo","sitemap":"sitemap"},"donate_link":"","icons":{"1x":"https://ps.w.org/seo-by-rank-math/assets/icon.svg?rev=2348086","2x":"https://ps.w.org/seo-by-rank-math/assets/icon-256x256.png?rev=2348086","svg":"https://ps.w.org/seo-by-rank-math/assets/icon.svg?rev=2348086"},"wporg":true},{"name":"Head, Footer and Post Injections","slug":"header-footer","version":"3.2.2","author":"Stefano Lissa","author_profile":"https://profiles.wordpress.org/satollo","requires":"4.0","tested":"5.7.3","requires_php":"5.6","rating":98,"ratings":{"1":3,"2":2,"3":4,"4":13,"5":624},"num_ratings":646,"support_threads":1,"support_threads_resolved":0,"active_installs":300000,"downloaded":2801425,"last_updated":"2021-03-17 1:26pm GMT","added":"2008-04-07","homepage":"https://www.satollo.net/plugins/header-footer","short_description":"Header and Footer plugin let you to add html code to the head and footer…","description":"

About WordPress SEO and Facebook Open Graph: I was very unpleased by Yoast invitation to
\nremove my plugin, and it’s not the case.
\nRead more here.

\n

Head and Footer Codes

\n

Why you have to install 10 plugins to add Google Analytics, Facebook Pixel, custom
\ntracking code, Google DFP code, Google Webmaster/Alexa/Bing/Tradedoubler verification code and so on…

\n

With Header and Footer plugin you can just copy the code those services give you
\nin a centralized point to manage them all. And theme independent: you can change your theme
\nwithout loosing the code injected!

\n

Injection points and features

\n
    \n
  • in the page section where most if the codes are usually added
  • \n
  • just after the tag as required by some JavaScript SDK (like Facebook)
  • \n
  • in the page footer (just before the tag)
  • \n
  • recognize and execute PHP code to add logic to your injections
  • \n
  • distinct desktop and mobile injections
  • \n
\n

AMP

\n

A new AMP dedicated section compatible with AMP plugin lets you to inject specific codes in
\nAMP pages. Should be ok even with other AMP plugins.

\n

Post Top and Bottom Codes

\n

Do you need to inject a banner over the post content or after it? No problem. With Header and
\nFooter you can:

\n
    \n
  • Add codes on top, bottom and in the middle of posts and pages
  • \n
  • Differentiate between mobile and desktop (you don’t display the same ad format on both, true?)
  • \n
  • Separate post and page configuration
  • \n
  • Native PHP code enabled
  • \n
  • Shortcodes enabled
  • \n
\n

Special Injections

\n
    \n
  • Just after the opening BODY tag
  • \n
  • In the middle of post content (using configurable rules)
  • \n
  • Everywhere on template (using placeholders)
  • \n
\n

bbPress

\n

The specific bbPress injections are going to be removed. Switch to my
\nAds for bbPress, which is more flexible and complete.

\n

Limits

\n

This plugin cannot change the menu or the footer layout, those features must be covered by your theme!

\n

Official page: Header and Footer.

\n

Other plugins by Stefano Lissa:

\n\n

Translation

\n

You can contribute to translate this plugin in your language on WordPress Translate

\n

Privacy and GDPR

\n

This plugin does not collect or process any personal user data.

\n","download_link":"https://downloads.wordpress.org/plugin/header-footer.3.2.2.zip","tags":{"blog":"blog","footer":"footer","header":"header","page":"page","single":"single"},"donate_link":"http://www.satollo.net/donations","icons":{"1x":"https://ps.w.org/header-footer/assets/icon-256x256.png?rev=1064219","2x":"https://ps.w.org/header-footer/assets/icon-256x256.png?rev=1064219"},"wporg":true},{"name":"WP Rocket","slug":"wp-rocket","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://wp-rocket.me/","short_description":"

Powerful caching to speed up your WordPress website in a few clicks. No coding required.

\n","description":"\n\n\n

Powerful caching to speed up your WordPress website in a few clicks. No coding required.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2020/06/WP-Rocket-285x160.png","2x":"https://amp-wp.org/wp-content/uploads/2020/06/WP-Rocket-372x209.png","svg":""},"wporg":false},{"name":"Statify","slug":"statify","version":"1.8.3","author":"pluginkollektiv","author_profile":"https://profiles.wordpress.org/pluginkollektiv","requires":"4.7","tested":"5.8.1","requires_php":"5.2","rating":94,"ratings":{"1":2,"2":0,"3":0,"4":3,"5":33},"num_ratings":38,"support_threads":2,"support_threads_resolved":1,"active_installs":200000,"downloaded":1519650,"last_updated":"2021-07-17 8:46am GMT","added":"2011-03-16","homepage":"https://statify.pluginkollektiv.org/","short_description":"Visitor statistics for WordPress with focus on data protection, transparency and clarity. Perfect as a widget in your WordPress Dashboard.","description":"

Statify provides a straightforward and compact access to the number of site views. It is privacy-friendly as it uses neither cookies nor a third party.

\n

An interactive chart is followed by lists of the most common reference sources and target pages. The period of statistics and length of lists can be set directly in the dashboard widget.

\n

Data Privacy

\n

In direct comparison to statistics services such as Google Analytics, WordPress.com Stats and Matomo (Piwik) Statify doesn’t process and store personal data as e.g. IP addresses – Statify counts site views, not visitors.

\n

Absolute privacy compliance coupled with transparent procedures: A locally in WordPress created database table consists of only four fields (ID, date, source, target) and can be viewed at any time, cleaned up and cleared by the administrator.

\n

Due to this tracking approach, Statify is 100% compliant with GDPR and serves as an lightweight alternative to other tracking services.

\n

Display of the widget

\n

The plugin configuration can be changed directly in the Statify Widget on the dashboard by clicking the Configure link.

\n

The amount of links shown in the Statify Widget can be set as well as the option to only count views from today. Of course, older entries are not deleted when changing this setting.

\n

The statistics for the dashboard widget are cached for four minutes.

\n

Period of data saving

\n

Statify stores the data only for a limited period (default: two weeks), longer intervals can be selected as option in the widget. Data which is older than the selected period is deleted by a daily cron job.

\n

An increase in the database volume can be expected because all statistic values are collected and managed in the local WordPress database (especially if you increase the period of data saving).

\n

JavaScript tracking for caching compatibility

\n

For compatibility with caching plugins like Cachify Statify offers an optional switchable tracking via JavaScript. This function allows reliable count of cached blog pages.

\n

For this to work correctly, the active theme has to call wp_footer(), typically in a file named footer.php.

\n

Skip tracking for spam referrers

\n

The comment blacklist can be enabled to skip tracking for views with a referrer URL listed in comment blacklist, i. e. which considered as spam.

\n

Support

\n

If you’ve problems or think you’ve found a bug (e.g. you’re experiencing unexpected behavior), please post at the support forums.

\n

Contribute

\n
    \n
  • Active development of this plugin is handled on GitHub.
  • \n
  • Pull requests for documented bugs are highly appreciated.
  • \n
  • If you want to help us translate this plugin you can do so on WordPress Translate.
  • \n
\n","download_link":"https://downloads.wordpress.org/plugin/statify.1.8.3.zip","tags":{"analytics":"analytics","dashboard":"dashboard","pageviews":"pageviews","privacy":"privacy","statistics":"statistics"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=TD4AMD2D8EMZW","icons":{"1x":"https://ps.w.org/statify/assets/icon-128x128.png?rev=2355063","2x":"https://ps.w.org/statify/assets/icon-256x256.png?rev=2355063"},"wporg":true},{"name":"LIQUID BLOCKS GALLERY 37+ Free Designs","slug":"liquid-blocks","version":"1.1.1","author":"LIQUID DESIGN Ltd.","author_profile":"https://profiles.wordpress.org/lqd","requires":"5.2","tested":"5.8.1","requires_php":false,"rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"num_ratings":1,"support_threads":1,"support_threads_resolved":0,"active_installs":4000,"downloaded":20891,"last_updated":"2021-07-22 6:55am GMT","added":"2019-10-18","homepage":"https://lqd.jp/wp/plugin.html","short_description":"If you’re looking to create block page sections that look great give LIQUID BLOCKS a…","description":"

If you’re looking to create block page sections that look great give LIQUID BLOCKS a try.

\n

In Gutenberg Block Template & Design Gallery, Just select your favorite design. Instantly create page section elements. Like a very simple page builder.

\n

You can manage Block Pattern. (WordPress 5.5+)
\nFully compatible with Gutenberg and themes and AMP.
\nlatest information on LIQUID PRESS.

\n

\n

Design Gallery

\n

Carefully selected 37+ Free Designs.
\n* Headlines
\n* Layouts (Q&A, Ranking, Column, Step, Fluid Shape.)
\n* Price list
\n* CTA
\n* Landing pages
\n* Block Patterns (You can register.)

\n

Toolbar

\n

Add to RichText Toolbar.
\n* Mark
\n* Underline
\n* Big
\n* Small

\n","download_link":"https://downloads.wordpress.org/plugin/liquid-blocks.zip","tags":{"block":"block","block-editor":"block-editor","blocks":"blocks","editor":"editor","gutenberg":"gutenberg"},"donate_link":"https://lqd.jp/wp/plugin.html","icons":{"1x":"https://ps.w.org/liquid-blocks/assets/icon-128x128.png?rev=2175390"},"wporg":true},{"name":"Schema","slug":"schema","version":"1.7.9.2","author":"Hesham","author_profile":"https://profiles.wordpress.org/hishaman","requires":"4.0","tested":"5.7.3","requires_php":"5.4","rating":90,"ratings":{"1":15,"2":6,"3":4,"4":8,"5":163},"num_ratings":196,"support_threads":6,"support_threads_resolved":0,"active_installs":60000,"downloaded":1089391,"last_updated":"2021-05-19 2:51pm GMT","added":"2016-05-11","homepage":"https://schema.press","short_description":"Get the next generation of Schema Structured Data to enhance your WordPress site presentation in…","description":"

Like Schema plugin? Consider leaving a 5 star review.

\n

Super fast, light-weight plugin for adding schema.org structured data markup in recommended JSON-LD format automatically to WordPress sites.

\n

Enhanced Presentation in Search Results By including structured data appropriate to your content, your site can enhance its search results and presentation.

\n

Check out the Plugin Homepage for more info and documentation.

\n

What is Schema markup?

\n

Schema markup is code (semantic vocabulary) that you put on your website to help the search engines return more informative results for users. So, Schema is not just for SEO reasons, it’s also for the benefit of the searcher.

\n

Schema.org Structured Data Demo & Examples

\n\n

Schema Key Features

\n
    \n
  • Easy to use, set it and forget it, with minimal settings.
  • \n
  • [Premium] Support for different schema.org types.
  • \n
  • Enable Schema types at once per post type or post category.
  • \n
  • [Premium] Enable Schema types anywhere you want on your site content.
  • \n
  • [Premium] Customize source data of schema.org properties.
  • \n
  • Valid markup, test it in Google Structured Data Testing Tool.
  • \n
  • Output JSON-LD format, the most recommended by Google.
  • \n
  • Reuse data saved in post meta, which is created by other plugins.
  • \n
  • Extensible, means you can extend its functionality via other plugins, extensions or within your Theme’s functions.php file.
  • \n
\n
\n

Note: some features are Premium. Which means you need Schema Premium to have those features. Get Schema Premium here!

\n
\n

Free vs Premium

\n
\n

See: a Free vs Premium comparison.

\n
\n

Free Plugin Extensions

\n
    \n
  • Schema Review: Extend Schema functionality by adding review and rating Structured Data functionality for Editors and Authors.
  • \n
  • Schema Default Image: Add ability to set a default WordPress Featured image for schema.org markup.
  • \n
\n

Premium Plugin Extensions

\n\n

Supported Google/Schema Markups

\n\n

Supported Schema.org Types

\n\n

Premium Supported Schema.org Types

\n
\n

Schema Premium has additional support for schema.org types, including:

\n
\n\n

Schema.org Markup Examples

\n

View our Live Structured Data Demo examples.

\n

Supported Plugins

\n

Schema plugin integrates and/or play nicely with (not necessarily a full integration):

\n
    \n
  • Yoast SEO
  • \n
  • AMP plugin (Automattic’s Accelerated Mobile Pages)
  • \n
  • Accelerated Mobile Pages – AMP for WP
  • \n
  • WPRichSnippets
  • \n
  • The SEO Framework
  • \n
  • WPBakery Page Builder
  • \n
  • ThirstyAffiliates
  • \n
  • [Premium] WooCommerce: Schema for WooCommerce extension.
  • \n
  • Easy Digital Downloads (EDD)
  • \n
\n

Supported Themes

\n

The plugin should work fine with any well coded WordPress theme, however these themes were tested and works properly with the plugin.

\n
    \n
  • Genesis 2.x
  • \n
  • Thesis 2.x
  • \n
  • Divi
  • \n
\n

Premium support

\n

schema.press team does not always provide active support for the Schema plugin on the WordPress.org forums, as we prioritize our email support. One-on-one email support is available to people who bought Schema Premium only.

\n

Note that the premium Schema Plugin also has several extra features too, including the option to enable more schema.org types, set content location target for markup, and map schema.org properties, so it is well worth your investment!

\n

Developers?

\n

Feel free to fork the project on GitHub and submit your contributions via pull request.

\n","download_link":"https://downloads.wordpress.org/plugin/schema.zip","tags":{"json-ld":"JSON-LD","rich-snippets":"rich snippets","schema":"schema","schema-org":"schema.org","structured-data":"structured data"},"donate_link":"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=NGVUBT2QXN7YL","icons":{"1x":"https://ps.w.org/schema/assets/icon-128x128.png?rev=1750172","2x":"https://ps.w.org/schema/assets/icon-256x256.png?rev=1750173"},"wporg":true},{"name":"Iframely – rich media embeds for 2000+ publishers","slug":"iframely","version":"0.7.2","author":"Itteco Corp.","author_profile":"https://profiles.wordpress.org/ivanp","requires":"3.5.1","tested":"5.4.7","requires_php":false,"rating":80,"ratings":{"1":2,"2":0,"3":1,"4":0,"5":7},"num_ratings":10,"support_threads":2,"support_threads_resolved":1,"active_installs":3000,"downloaded":97486,"last_updated":"2020-05-22 5:21pm GMT","added":"2013-10-03","homepage":"http://wordpress.org/plugins/iframely/","short_description":"Iframely extends WordPress default rich media embeds and adds support of over 2000 more providers…","description":"

Iframely extends WordPress default embeds and adds over 2000 more providers and cards as URL previews for the rest of the Web. Provides responsive embed codes, works with AMP.

\n

Just like default WordPress embeds, Iframely will detect URLs in your posts and replace it with responsive embed codes. Supports all usual suspects such as YouTube, Vimeo, Instagram, Facebook, Giphy, GfyCat, Imgur, Google +, GitHub Gists, Storify, SlideShare, Streamable, Vidme, Reddit, Dailymotion, Spotify, Tableau, Prezi, Apester, QZZR, Tidal, MLB. Well over two thousand of providers and keeps growing.

\n

Test your URL here to check if we support it.

\n

Iframely also generates and hosts summary cards as URL previews for general articles. It includes your own site, and Iframely can replace the default embed cards that your publish via WordPress for other sites to use.

\n

API key and paid/free

\n

Powered by Iframely cloud service and requires an account with us. Grab an API key for extended trial at iframely.com, or test the plugin out without an API key.

\n

Before you push the plugin to production, a service subscription is required to avoid any possible disruptions.

\n

We maintain an overwhelming number of integrations and widgets in the background for you, and make sure your sites remains fast and keeps your users happy. This requires a substantial effort on our part, and we won’t be able to provide it without requiring a service subscription.

\n

How to use:

\n

The plugin works the same way the standard oEmbed is supported by WordPress: URL on a separate line.

\n

For example,

\n
Check out this cool video:\n\nhttp://your.url/here\n\nThat was a cool video.\n
\n

Iframely also has its own shortcode [iframely]http://your.url/here[/iframely].

\n

Heads-up:

\n

Iframely does not simply wrap URLs with <iframe src=...> code. That’s not what Iframely is for. We can only match URLs to the known embed codes if publisher offers them for manual copy-paste, or generate a summary card for URL preview if a publisher provides at least a thumnnail image.

\n

To keep default embed providers

\n

By default, Iframely will inject itself to be the first embeds provider in the list, thus intercepting all URLs. It means that the default providers that are later in the list won’t get called and will thus be disabled.

\n

It means Iframely replaces default YouTube, Vimeo, Twitter, other oEmbed plugins that you might have(like JetPack), etc.

\n

Although we should support the same providers and output the same code, just make it responsive and add extra features, you can still disable such behavior and tell Iframely to only process links that otherwise don’t have an embed provider.

\n

Just choose this option in your settings. It will essentially put Iframely to be the last in the list, be “a catcher”, rather then “an interceptor”.

\n

URL editor options

\n

You can fine-tune many aspects of Iframely on your dashboard at iframely.com. This would include some most common settings for popular rich media publishers. Our support team can also fine-tune many other publishers, just for you.

\n

However, you might need a per-post editor for the widgets options. And, Iframely does provide this too. It’s done via URL options editor, and available for higher-tier plans, or during your initial trial period. Make sure to check it out.

\n

AMP support

\n

Yes, Iframely works nicely with AMP WP plugin. It catches all missing embeds and follow your Iframely settings. But you can also opt to have Iframely for all embeds, including default AMP embeds too. For example, Facebook video will be indeed a nice video without user’s text message.

\n","download_link":"https://downloads.wordpress.org/plugin/iframely.zip","tags":{"embed":"embed","embed-code":"embed code","iframely":"iframely","oembed":"oembed","responsive":"responsive"},"donate_link":"","icons":{"default":"https://s.w.org/plugins/geopattern-icon/iframely.svg"},"wporg":true},{"name":"Pym.js Embeds","slug":"pym-shortcode","version":"1.3.2.4","author":"INN Labs","author_profile":"https://profiles.wordpress.org/automattic","requires":"3.0.1","tested":"5.4.7","requires_php":"5.3","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":1,"support_threads_resolved":0,"active_installs":100,"downloaded":2331,"last_updated":"2020-03-26 6:09pm GMT","added":"2016-06-17","homepage":"https://github.com/INN/pym-shortcode","short_description":"A WordPress block and shortcode for embedding iframes that are responsive horizontally and vertically, using…","description":"

Pym.js Embeds provides shortcode and Gutenberg block wrappers for embedding responsive iframes using Pym.js, developed by the NPR Visuals Team. Embedded content resizes vertically to match its container’s width.

\n

AMP compatibility is provided by the official AMP plugin.

\n

Pym.js Resources from NPR

\n

You may also want to look at NPR’s Pym.js resources:

\n\n","download_link":"https://downloads.wordpress.org/plugin/pym-shortcode.1.3.2.4.zip","tags":{"embeds":"Embeds","iframe":"iframe","javascript":"javascript","responsive":"responsive","shortcode":"shortcode"},"donate_link":"https://inn.org/donate","icons":{"1x":"https://ps.w.org/pym-shortcode/assets/icon.svg?rev=1944461","svg":"https://ps.w.org/pym-shortcode/assets/icon.svg?rev=1944461"},"wporg":true},{"name":"PWA","slug":"pwa","version":"0.6.0","author":"PWA Plugin Contributors","author_profile":"https://profiles.wordpress.org/westonruter","requires":"5.5","tested":"5.8.1","requires_php":"5.6","rating":86,"ratings":{"1":3,"2":0,"3":0,"4":0,"5":13},"num_ratings":16,"support_threads":6,"support_threads_resolved":3,"active_installs":40000,"downloaded":299537,"last_updated":"2021-09-21 7:17pm GMT","added":"2018-07-12","homepage":"https://github.com/GoogleChromeLabs/pwa-wp","short_description":"WordPress feature plugin to bring Progressive Web App (PWA) capabilities to Core","description":"

\nProgressive Web Apps are user experiences that have the reach of the web, and are:

\n
    \n
  • Reliable – Load instantly and never show the downasaur, even in uncertain network conditions.
  • \n
  • Fast – Respond quickly to user interactions with silky smooth animations and no janky scrolling.
  • \n
  • Engaging – Feel like a natural app on the device, with an immersive user experience.
  • \n
\n

This new level of quality allows Progressive Web Apps to earn a place on the user’s home screen.\n

\n

Continue reading more about Progressive Web Apps (PWA) from Google.

\n

In general a PWA depends on the following technologies to be available:

\n\n

This plugin serves as a place to implement support for these in WordPress with the intention of being proposed for core merge, piece by piece.

\n

This feature plugin is not intended to obsolete the other plugins and themes which turn WordPress sites into PWAs. Rather, this plugin is intended to provide the PWA building blocks and coordination mechanism for these themes and plugins to not reinvent the wheel and also to not conflict with each other. For example, a theme that implements the app shell model should be able to extend the core service worker while a plugin that provides push notifications should be able to do the same. Themes and plugins no longer should have to each create a service worker on their own, something which is inherently problematic because only one service worker can be active at a time: only one service worker can win. If you are developing a plugin or theme that includes a service worker, consider relying on this PWA plugin, or at least only use the built-in implementation as a fallback for when the PWA plugin is not available.

\n

In versions prior to 0.6, no caching strategies were added by default. The only service worker behavior was to serve an offline template when the client’s connection is down or the site is down, and also to serve an error page when the server returns with 500 Internal Server Error. As of 0.6, there is a new “Offline browsing” toggle on the Reading Settings screen in the admin. It is disabled by default, but when enabled a network-first caching strategy is registered for navigations so that the offline page won’t be shown when accessing previously-accessed pages. The network-first strategy is also used for assets from themes, plugins, and WordPress core. In addition, uploaded images get served with a stale-while-revalidate strategy. For all the details on these changes, see the pull request.

\n

Documentation for the plugin can be found on the GitHub project Wiki.

\n

Development of this plugin is done on GitHub. Pull requests welcome. Please see issues reported there before going to the plugin forum.

\n","download_link":"https://downloads.wordpress.org/plugin/pwa.0.6.0.zip","tags":{"https":"https","progressive-web-apps":"progressive web apps","pwa":"pwa","service-workers":"service-workers.","web-app-manifest":"web app manifest"},"donate_link":"","icons":{"1x":"https://ps.w.org/pwa/assets/icon.svg?rev=1908485","2x":"https://ps.w.org/pwa/assets/icon-256x256.png?rev=1908485","svg":"https://ps.w.org/pwa/assets/icon.svg?rev=1908485"},"wporg":true},{"name":"MC4WP: Mailchimp for WordPress","slug":"mailchimp-for-wp","version":"4.8.6","author":"ibericode","author_profile":"https://profiles.wordpress.org/dvankooten","requires":"4.6","tested":"5.8.1","requires_php":"5.3","rating":96,"ratings":{"1":36,"2":10,"3":16,"4":35,"5":1284},"num_ratings":1381,"support_threads":37,"support_threads_resolved":33,"active_installs":2000000,"downloaded":35999675,"last_updated":"2021-08-04 7:14am GMT","added":"2013-06-19","homepage":"https://www.mc4wp.com/#utm_source=wp-plugin&utm_medium=mailchimp-for-wp&utm_campaign=plugins-page","short_description":"Mailchimp for WordPress, the #1 unofficial Mailchimp plugin.","description":"

Mailchimp for WordPress

\n

Allowing your visitors to subscribe to your newsletter should be easy. With this plugin, it finally is.

\n

This plugin helps you grow your Mailchimp lists and write better newsletters through various methods. You can create good looking opt-in forms or integrate with any existing form on your site, like your comment, contact or checkout form.

\n\n

Some (but not all) features

\n
    \n
  • \n

    Connect with your Mailchimp account in seconds.

    \n
  • \n
  • \n

    Sign-up forms which are good looking, user-friendly and mobile optimized. You have complete control over the form fields and can send anything you like to Mailchimp.

    \n
  • \n
  • \n

    Seamless integration with the following plugins:

    \n
      \n
    • Default WordPress Comment Form
    • \n
    • Default WordPress Registration Form
    • \n
    • Contact Form 7
    • \n
    • WooCommerce
    • \n
    • Gravity Forms
    • \n
    • Ninja Forms 3
    • \n
    • WPForms
    • \n
    • BuddyPress
    • \n
    • MemberPress
    • \n
    • Events Manager
    • \n
    • Easy Digital Downloads
    • \n
    • Give
    • \n
    • UltimateMember
    • \n
    \n
  • \n
  • \n

    A multitude of available add-on plugins and integrations:

    \n\n
  • \n
  • \n

    Well documented. Our knowledge base is updated daily.

    \n
  • \n
  • \n

    Developer friendly. For inspiration, check out our repository of example code snippets.

    \n
  • \n
\n
\n

Become a Premium user

\n

Mailchimp for WordPress has a Premium add-on which comes with several additional benefits.

\n
    \n
  • Multiple forms
  • \n
  • Advanced e-commerce integration for WooCommerce
  • \n
  • Email notifications
  • \n
  • An easy way to style your forms
  • \n
  • Detailed reports & statistics
  • \n
\n

View more Premium features

\n
\n

What is Mailchimp?

\n

Mailchimp is a newsletter service that allows you to send out email campaigns to a list of email subscribers. It is free for lists up to 2000 subscribers, which is why it is the newsletter-service of choice for thousands of businesses.

\n

This plugin allows you to tightly integrate your WordPress site with your Mailchimp account.

\n

If you are not yet using Mailchimp, creating an account is 100% free and only takes you about 30 seconds.

\n

Support

\n

Use the WordPress.org plugin forums for community support where we try to help all of our users. If you found a bug, please create an issue on Github where we can act upon them more efficiently.

\n

If you’re a premium user, please use the email address inside the plugin for support as that will guarantee a faster response time.

\n

Please take a look at the Mailchimp for WordPress knowledge base as well.

\n

Add-on plugins

\n

There are several add-on plugins available, which help you get even more out of your site.

\n

Translations

\n

You can help translate Mailchimp for WordPress into your language using your WordPress.org account.

\n

Development

\n

This plugin is being developed on GitHub. If you want to collaborate, please look at ibericode/mailchimp-for-wordpress.

\n

Customizing the plugin

\n

The plugin provides various filter & action hooks that allow you to modify or extend default behavior. We’re also maintaining a collection of sample code snippets.

\n","download_link":"https://downloads.wordpress.org/plugin/mailchimp-for-wp.4.8.6.zip","tags":{"email":"email","mailchimp":"mailchimp","marketing":"marketing","mc4wp":"mc4wp","newsletter":"newsletter"},"donate_link":"https://www.mc4wp.com/#utm_source=wp-plugin-repo&utm_medium=mailchimp-for-wp&utm_campaign=donate-link","icons":{"1x":"https://ps.w.org/mailchimp-for-wp/assets/icon-128x128.png?rev=1224577","2x":"https://ps.w.org/mailchimp-for-wp/assets/icon-256x256.png?rev=1224577"},"wporg":true},{"name":"Site Kit by Google","slug":"google-site-kit","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://sitekit.withgoogle.com/","short_description":"

Site Kit is the official WordPress plugin from Google for insights about how people find and use your site. Site Kit is the one-stop solution to deploy, manage, and get insights from critical Google tools to make the site successful on the web. It provides authoritative, up-to-date insights from multiple Google products directly on the

\n

Read More

\n","description":"\n\n\n

Site Kit is the official WordPress plugin from Google for insights about how people find and use your site. Site Kit is the one-stop solution to deploy, manage, and get insights from critical Google tools to make the site successful on the web. It provides authoritative, up-to-date insights from multiple Google products directly on the WordPress dashboard for easy access, all for free.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2019/12/site-kit-by-google-logo-285x160.png","2x":"https://amp-wp.org/wp-content/uploads/2019/12/site-kit-by-google-logo-372x209.png","svg":""},"wporg":false},{"name":"Newspack Blocks","slug":"newspack-blocks","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://github.com/Automattic/newspack-blocks","short_description":"

A collection of useful and easy to use Gutenberg based blocks, developed primarily for the Newspack project.

\n","description":"\n\n\n

A collection of useful and easy to use Gutenberg based blocks, developed primarily for the Newspack project.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2019/11/newspack_blocks-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2019/11/newspack_blocks-372x209.jpg","svg":""},"wporg":false},{"name":"Advanced Ads – Ad Manager & AdSense","slug":"advanced-ads","version":"1.29.0","author":"Thomas Maier, Advanced Ads GmbH","author_profile":"https://profiles.wordpress.org/webzunft","requires":"4.9","tested":"5.8.1","requires_php":"5.6","rating":98,"ratings":{"1":17,"2":1,"3":9,"4":21,"5":1192},"num_ratings":1240,"support_threads":64,"support_threads_resolved":56,"active_installs":100000,"downloaded":5286061,"last_updated":"2021-10-05 8:38am GMT","added":"2014-06-23","homepage":"https://wpadvancedads.com","short_description":"Manage and optimize all ad types. Support for Google AdSense Auto ads, Amazon, image banners, HTML, page builder, ad widget, ad rotations, ads.txt","description":"

Are you looking for a simple ad manager plugin? These are the top arguments to use Advanced Ads:

\n
    \n
  • approved in publishing and ad optimization since 2009
  • \n
  • works with all ad types and networks, including Google AdSense, Google Ad Manager (formerly Google DoubleClick for Publishers, DFP), Amazon ads, or media.net ads
  • \n
  • most features to test and optimize ads
  • \n
  • unlimited ad units
  • \n
  • ads.txt support
  • \n
  • dedicated ad block for the block editor
  • \n
  • Google AdSense Partner, who implements all technical changes early and in 100% compliance with the Google AdSense policies
  • \n
  • the only advertising solution with Ad Health integration and Google AdSense violation checks
  • \n
  • best rated free support
  • \n
\n

This is what our users are saying about Advanced Ads:

\n
\n

We use this plugin to deliver rotating ads on a community news site, and it’s great. Both feature-rich and reliable, your imagination is the limit when it comes to the product you want to create for your users. We’ve delivered over a million ad impressions since we launched less than a year ago, using a combination of sidebar, top, sticky and in-content placements — both HTML5 and images. Advanced Ads makes it easy for our small team to deliver a good experience to our users and our advertisers.
\n mytown304 on wp.org

\n
\n

Would you like to know if there is a certain feature, what the optimized setup would be, or how to implement your client’s demands? Just open a thread in the forum!

\n

Advanced Ads allowed us to grow from 0 to 100 MM monthly ad impressions. Benefit from our experience as a publisher and monetize your website today!

\n

Full Feature List.

\n

ad management

\n
    \n
  • create and display unlimited ad units
  • \n
  • rotate ads
  • \n
  • schedule ads and set start time and expiration date
  • \n
  • target ads by content and user groups
  • \n
  • inject ads into posts and pages automatically without coding
  • \n
\n

ad types

\n

choose between different ad types that enable you to:

\n
    \n
  • insert ads and banners from all ad and affiliate networks (e.g., Google AdSense, Amazon, BuySellAds, Google Ad Manager (formerly Google DoubleClick for Publishers, DFP), Ezoic, media.net, Booking.com, Tradedoubler, Awin, Getyourguide, The Moneytizer, Infolinks…)
  • \n
  • dedicated support for all types of Google AdSense ads, including text and display ads, native ads (In-article, In-feed, matched content), Auto ads, and Auto ads for AMP
  • \n
  • display images and image banners
  • \n
  • create content-rich ads with the WordPress TinyMCE editor
  • \n
  • insert contextual Amazon Native Shopping Ads
  • \n
  • inject HTML, CSS, Javascript or PHP code
  • \n
  • use shortcodes within ads (to also deliver advertisements from another ad plugin like Ad Inserter, AdRotate, Quick AdSense, WP Bannerize, or the Google AdSense Plugin WP QUADS)
  • \n
\n

display ads for WP

\n
    \n
  • auto-inject ads via placements
  • \n
  • use functions to display ads in template files
  • \n
  • use shortcodes to place ads manually in post content
  • \n
  • show ads in the sidebar and in widgets
  • \n
  • disable all ads on specific pages
  • \n
  • display multiple ads (ad blocks)
  • \n
  • display a customizable ad label, e.g., “Advertisements” above each banner ad
  • \n
\n

display conditions

\n

show ads based on conditions like:

\n
    \n
  • individual posts, pages, and other post types
  • \n
  • posts by category, tags, taxonomies, author, and age
  • \n
  • archive pages by category, tags, taxonomies
  • \n
  • special page types like 404, attachment and front page
  • \n
  • hide ads on secondary queries (e.g., posts in sidebars)
  • \n
  • display or hide banners within the post feed
  • \n
  • hide all ads from specific page types, e.g., 404 pages, feed
  • \n
  • hide ads from bots and web crawlers
  • \n
\n

visitor conditions

\n

serve ads by conditions based on the visitor. List of all visitor conditions

\n
    \n
  • display or hide a banner by device: mobile and tablet or desktop
  • \n
  • display or hide a banner by role and for logged-in visitors
  • \n
  • advanced visitor conditions: previously visited URL (referrer), user capability, browser language, browser and device, URL parameters included in Pro
  • \n
  • display ads by geolocation with the Geo Targeting add-on
  • \n
  • display ads by browser width with the Responsive add-on
  • \n
\n
\n

Fantastic plugin and outstanding support
\n I tried at least three other ad plugins for WordPress and ‘Advanced Ads’ is by and far the best one. Last but not least in the support. The first port of call are a number of excellent tutorials. And finally the hands on support. I don’t quite know how he does it but the speed and depth of responses are absolutely amazing.
\n djsawyer on wp.org

\n
\n

ad injection | placements

\n

Placements to insert ads in pre-defined positions in your theme and content. List of all placements

\n
    \n
  • ads after any given paragraph, headline, image, or other HTML element
  • \n
  • ads at the top or bottom of the post content
  • \n
  • ads before closing </head> tag
  • \n
  • ads in the footer
  • \n
  • create split tests and A/B testing
  • \n
  • many more ad positions with add-ons
  • \n
  • automatic insertion of any kind of code into header or footer, not only advertising
  • \n
\n

mobile devices

\n
    \n
  • display ads on mobile and tablets or desktop only
  • \n
  • display responsive image ads
  • \n
  • ads for specific browser sizes only using Responsive Ads
  • \n
  • inserting ads on AMP pages with Responsive Ads
  • \n
\n

Google AdSense

\n

Amazing features of the most powerful and easy Google AdSense plugin.

\n
    \n
  • unlimited Google AdSense ads banners
  • \n
  • pull ad units directly from your Google AdSense account
  • \n
  • show AdSense revenue in WP Admin
  • \n
  • change settings of your Google AdSense ads directly from your WordPress backend
  • \n
  • supports all Google AdSense ad types, including Google AdSense display ads, native ads like In-feed ads, In-article ads, matched content ads, Google AdSense Auto ads, and Google AdSense Auto ads for AMP
  • \n
  • change type and sizes of AdSense ads without going into your Google AdSense account
  • \n
  • hide Google AdSense advertisements on 404 pages by default (to comply with Google AdSense terms)
  • \n
  • insert Google AdSense code for verification and AdSense Auto Ads
  • \n
  • enable AdSense Auto ads on AMP
  • \n
  • easy Ad Health integration and Google AdSense violation checks
  • \n
  • option to remove the Google AdSense background color
  • \n
  • place Google AdSense In-feed ads using the also free In-feed add-on
  • \n
  • assistant for exact sizes of responsive Google AdSense ads with the Responsive add-on
  • \n
  • convert Google AdSense ads into AMP ads automatically with the Responsive add-on
  • \n
  • ads.txt generated with the correct AdSense information automatically
  • \n
  • works along with Google Site Kit or can replace it if you want to control your ad placements
  • \n
\n

\n

\n

Like j4ckson185, there are thousands of happy AdSense users:

\n
\n

Your app is awesome, congratulations! Google Adsense suggests using your app on its official website, it’s incredible!

\n
\n

ads.txt

\n
    \n
  • generates an ads.txt with custom content
  • \n
  • adds the content for AdSense to the ads.txt automatically
  • \n
\n

\n

\n

ad blocker

\n
    \n
  • basic features to prevent ads from being removed by AdBlock and other ad blockers
  • \n
  • prevent ad blockers from breaking sites where plugin scripts are running
  • \n
  • ad blocking detection: show alternative content to ad block users with Pro and improve the monetization of your website
  • \n
\n

Learn more on the plugin homepage.

\n

Thank you for motivating us with your positive review.

\n

Localizations: Arabic, Chinese, Czech, Danish, Dutch, English, French, German, Hungarian, Italian, Japanese, Norwegian, Polish, Portuguese, Russian, Slovak, Spanish, Turkish, Vietnamese

\n
\n

Add-Ons

\n
    \n
  • all add-ons include priority email support
  • \n
  • Advanced Ads Pro – powerful tools for ad optimizations: cache-busting, more placements, lazy loading, ad blocker module, click fraud protection, and many more
  • \n
  • Tracking – track ad impressions and ad clicks with local methods or Google Analytics
  • \n
  • Responsive Ads – target ads to specific browser sizes and create ads for AMP
  • \n
  • Google Ad Manager Integration – a quick and error-free way to load ad units from your Google Ad Manager (formerly Google DoubleClick for Publishers, DFP) account without touching any ad codes
  • \n
  • Geo Targeting – display ads based on the geo location of the visitor
  • \n
  • Sticky Ads – increase click rates with fixed, sticky, and anchor ads
  • \n
  • Fixed Widget for WordPress – turn sidebar widgets into performant fixed sticky ads
  • \n
  • PopUp and Layer Ads – display ads and other content in layers, popups, and interstitials
  • \n
  • Selling Ads – allows you to sell ads on your website fully automated, including payments and advertiser profiles
  • \n
  • Ad Slider – create a simple slider from your ads
  • \n
\n
\n

If you have problems with Advanced Ads, please reach out to our support or open a new topic in our forums on wordpress.org
\n.

\n

Integrations

\n

Advanced Ads integrates with plenty of other plugins:

\n\n","download_link":"https://downloads.wordpress.org/plugin/advanced-ads.1.29.0.zip","tags":{"ad-manager":"ad manager","ad-rotation":"ad rotation","ads":"ads","adsense":"adsense","banner":"banner"},"donate_link":"","icons":{"1x":"https://ps.w.org/advanced-ads/assets/icon-128x128.gif?rev=2293174","2x":"https://ps.w.org/advanced-ads/assets/icon-256x256.gif?rev=2293174"},"wporg":true},{"name":"Syntax-highlighting Code Block (with Server-side Rendering)","slug":"syntax-highlighting-code-block","version":"1.3.1","author":"Weston Ruter","author_profile":"https://profiles.wordpress.org/westonruter","requires":"5.5","tested":"5.8.1","requires_php":"5.6","rating":100,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":18},"num_ratings":18,"support_threads":2,"support_threads_resolved":2,"active_installs":1000,"downloaded":12383,"last_updated":"2021-09-21 7:11pm GMT","added":"2019-07-30","homepage":"https://github.com/westonruter/syntax-highlighting-code-block","short_description":"Extending the Code block with syntax highlighting rendered on the server, thus being AMP-compatible and…","description":"

This plugin extends the Code block in WordPress core to add syntax highlighting which is rendered on the server. Pre-existing Code blocks on a site are automatically extended to include syntax highlighting. Doing server-side syntax highlighting eliminates the need to enqueue any JavaScript on the frontend (e.g. Highlight.js or Prism.js) and this ensures there is no flash of unhighlighted code (FOUC?). Reducing script on the frontend improves frontend performance and it also allows for the syntax highlighted code to appear properly in AMP pages as rendered by the official AMP plugin (see also ampproject/amp-wp#972) or when JavaScript is turned off in the browser.

\n

In addition to not adding any JavaScript to the frontend, the stylesheets needed for styling the Code block will only be added to the page if there is a Code block present. The stylesheets are added inline when the Code block is rendered, ensuring that they do not block rendering of any content higher in the page. If stylesheets fail to load for any reason, the block simply renders without styling, with one key exception: highlighted lines are wrapped in mark elements so they’ll get highlighted regardless, including in RSS Feeds and posts syndicated in email (as long as the mark element is supported in the client).

\n

This extended Code block uses language auto-detection to add syntax highlighting, but you can override the language in the block’s settings sidebar. (There is currently no syntax highlighting of the Code block in the editor.) The plugin supports all programming languages that highlight.php supports (being a port of highlight.js). The Code block also is extended to support specifying the aforementioned highlighted lines. There is also a checkbox for whether to show line numbers on the frontend (with the numbers being non-selectable). Lastly, given inconsistencies across themes as to whether lines in a Code block should be wrapped, this plugin adds styling to force them to no-wrap by default, with a checkbox to opt-in to wrapping when desired.

\n

For advanced usage, please see the plugin wiki.

\n

This plugin is developed on GitHub. See list of current issues with the plugin. Please feel free to file any additional issues or requests that you may come across. Pull requests are welcome.

\n

Credits

\n

This is a fork of Code Syntax Block by Marcus Kazmierczak (mkaz), which is also available on WordPress.org. Copyright (c) 2018 Marcus Kazmierczak. Licensed under GPL 2.0 or later.

\n

highlight.php is released under the BSD 3-Clause License. Copyright © 2006-2013, Ivan Sagalaev (maniac@softwaremaniacs.org), highlight.js (original author). Copyright © 2013, Geert Bergman (geert@scrivo.nl), highlight.php

\n","download_link":"https://downloads.wordpress.org/plugin/syntax-highlighting-code-block.1.3.1.zip","tags":{"block":"block","code":"code","code-highlighting":"code highlighting","code-syntax":"code syntax","syntax-highlight":"syntax highlight"},"donate_link":"","icons":{"1x":"https://ps.w.org/syntax-highlighting-code-block/assets/icon.svg?rev=2131108","2x":"https://ps.w.org/syntax-highlighting-code-block/assets/icon-256x256.png?rev=2131108","svg":"https://ps.w.org/syntax-highlighting-code-block/assets/icon.svg?rev=2131108"},"wporg":true},{"name":"Contact Form by WPForms – Drag & Drop Form Builder for WordPress","slug":"wpforms-lite","version":"1.7.0","author":"WPForms","author_profile":"https://profiles.wordpress.org/jaredatch","requires":"4.9","tested":"5.8.1","requires_php":"5.5","rating":98,"ratings":{"1":215,"2":47,"3":56,"4":225,"5":9773},"num_ratings":10316,"support_threads":92,"support_threads_resolved":77,"active_installs":5000000,"downloaded":84332252,"last_updated":"2021-10-07 11:02am GMT","added":"2016-03-14","homepage":"https://wpforms.com","short_description":"The best WordPress contact form plugin. Drag & Drop online form builder that helps you create beautiful contact forms with just a few clicks.","description":"

WordPress Contact Form Builder Plugin

\n

We believe that you shouldn’t have to hire a developer to create a WordPress contact form. That’s why we built WPForms, a drag & drop WordPress form builder that’s EASY and POWERFUL.

\n

WPForms allows you to create beautiful contact forms, feedback form, subscription forms, payment forms, and other types of forms for your site in minutes, not hours!

\n

At WPForms, user experience is our #1 priority. Our pre-built form templates and workflows make WPForms the most beginner friendly contact form plugin in the market.

\n

The WPForms Challenge guides you through creating your first form in under 5 minutes. We walk you through using the form builder all the way to adding a form to a page on your site! WPForms includes integrations for popular page builders like the WordPress Block Editor (Gutenberg), Classic Editor, Elementor, and Divi making the whole process seamless.

\n

WPForms is a 100% mobile responsive contact form solution, so your contact forms will always look great on all devices (mobile, tablet, laptop, and desktop).

\n

WPForms’ contact forms are also highly optimized for web and server performance because we understand the importance of speed when it comes to SEO, marketing, and conversion. We can honestly say that WPForms is one of the fastest WordPress contact form builder plugins in the world.

\n
\n

WPForms Pro
\n This plugin is the lite version of the WPForms Pro plugin that comes with all the contact form features you will ever need including email subscription forms, multi-page contact forms, file uploads, conditional logic, payment integrations, form templates, and tons more. Click here to purchase the best premium WordPress contact form plugin now!

\n
\n

We took the pain out of creating contact forms and made it easy. Here’s why smart business owners, designers, and developers love WPForms, and you will too!

\n

\n

Drag & Drop Contact Form Builder

\n

We were tired of the bloated and buggy contact form builder plugins. That’s why we built WPForms to adapt to your workflow and allow you to create custom contact forms in minutes. By using our easy to use drag and drop online form builder, you can easily add custom form fields, rearrange them, and basically create a complete contact form in 5 minutes or less.

\n

But don’t just take our word. See what one of the WordPress experts are saying:

\n
\n

WPForms is by far the easiest form plugin to use. My clients love WPForms and it’s one of the few plugins they can use without any training. As a developer I appreciate how fast, modern, clean and extensible it is.
\n Bill Erickson – Expert WordPress Consultant

\n
\n

Pre-built Form Templates

\n

Building contact forms in WordPress can be time consuming. Why?

\n

Because every other WordPress contact form builder plugin requires you to build your contact form from scratch. The truth is it’s often not necessary to create a contact form completely from scratch unless you really want to.

\n

Whether you’re looking to create a simple contact form, marketing form, request a quote form, donation form, payment order form, registration form, or a subscription form, we have a form template for you inside our contact form builder.

\n

WPForms comes with pre-built form templates to help you save time. You can add, remove, or re-arrange fields as necessary.

\n

See 300+ Pre-Made WPForms Form Template Demo

\n

Mobile Ready, SEO Friendly and Optimized for Speed

\n

WPForms’ contact forms are 100% responsive and mobile-friendly by default. We also optimized every query on the front-end and the back-end to ensure maximum speed – Yes, WPForms is one of the fastest WordPress contact form plugin.

\n

You can embed your contact form on any page with optimized title and description. With the speed and proper formatting, WPForms is also one of the most SEO friendly contact form plugin.

\n

All the Fields & Features that You Need to Succeed

\n

From star ratings to file uploads to multi-page contact forms with progress bar, we have all the fields you need.

\n

You can easily integrate your contact forms with an email marketing service or collect payments for bookings and orders. WPForms allows you to do it all.

\n

The best part is, you can do it all without hiring a developer.

\n

See what one business owner has to say about WPForms’ contact form:

\n
\n

As a business owner, time is my most valuable asset. WPForms allow me to create smart contact forms with just a few clicks. With their pre-built form templates and the drag & drop builder, I can create a new form that works in less than 2 minutes without writing a single line of code. Well worth the investment.
\n David Henzel – Co-founder of MaxCDN

\n
\n

Surveys & Polls

\n

Along with contact form, you can also use WPForms to create surveys and polls.

\n

Our WordPress Survey plugin addon comes with smart survey fields including likert scale, star ratings, multiple choice, Net Promoter Score (NPS), and more, so you can create custom survey forms like Survey Monkey (without the high costs).

\n

WPForms offer the best-in class survey reporting. You can use our interactive reports to customize the graphs, export them for your presentations, and even display the aggregate results to your users.

\n

The best part about WPForms survey reports is that it can retroactively work on any old contact form or feedback survey contact form created with WPForms.

\n

Thousands of businesses love WPForms surveys for creating employee feedback form, customer feedback form, online petition form, and more.

\n

You can also use the surveys & polls addon to easily create a poll on your site. To save you time when creating a user poll, we have added a built-in poll forms template. Our poll feature offers real-time reports, so you can share poll results with the user immediately after they submit their vote.

\n

Just like the contact form, you can embed your surveys and polls inside any post, page, or widget area in WordPress.

\n

Membership and Default WordPress Forms

\n

Aside from building simple contact forms which every WordPress site needs, WPForms also helps you create better default WordPress forms.

\n

For example, you can use WPForms to create custom WordPress login forms and custom WordPress user registration forms which are great for membership sites.

\n

For membership sites, you can also use WPForms to create a password-protected contact form or even a members only contact form which is restricited to logged-in users only.

\n

Even if you’re not using a WordPress membership plugin, you can use WPForms to create membership registration forms, online RSVP forms, and other address book contact forms.

\n

Bloggers and publishers can use our WordPress post submission forms to accept guest posts, testimonials contact form to collect testiomnials, and partnership agreement forms to grow their business.

\n

Payment Form, Donation Form, Booking Form, and More

\n

While WPForms started out as a contact form plugin, it has evolved into a powerful custom forms solution that you can use to create a payment form, donation form, registration form, online booking form, mobile form, and basically any type of custom form you need.

\n

WPForms integrates with both PayPal, Stripe, Square, and Authorize.Net so you can easily create a credit card payment form to accept payments on your website. If you’re using SSL, then you can use our Stripe, Square, or Authorize.Net Payment forms to accept credit card payments directly on your website. Alternatively you can use our PayPal payment form to make a donation form and accept payments online.

\n

Aside from simple order forms, business owners also use WPForms to create custom product purchase forms, t-shirt order forms, online booking forms, and more.

\n

We understand that sometimes you may need to create a contact form that require a signature. WPForms comes with a signature field to collect user signature on your WordPress forms or even create custom signature forms.

\n

You can do all of this while still using the same easy-to-use contact form builder that’s loved by over 5 million users.

\n
\n

I am so impressed with this plugin. I decided to give it a shot over some of the other form plugins, and I am so glad I did. It works well, is so easy to use and customize. The support is amazing on top of it all. I got the pro version because I was so pleased. Highly recommend.
\n Micky73 – WordPress user

\n
\n

Forms that are Optimized for Conversion and Results

\n

With our Form Pages addon, you can create distraction-free custom form landing pages like Google Forms and Wufoo right inside WordPress, so you can increase conversions without the high costs (See Form Pages Demo).

\n

To improve form completion rate, we created Conversational Forms® which helps you make your generic feedback form and other custom contact forms feel more human by adding an interactive form layout. Our conversational forms are similar to Typeform without the high subscription costs (See Conversational Forms Demo).

\n

WPForms also has other conversion optimization features such as our smart form logic that lets you create dynamic contact forms where fields change based on user’s answer, multi-page contact forms with progress bar, and other advanced contact forms.

\n

WPForms form analytics integration with MonsterInsights allow you to easily track your lead capture forms, newsletter signup forms, request a quote contact form, and other important forms on your site.

\n

Easy to Customize and Extend

\n

You can easily customize your contact forms with our section dividers, HTML blocks, and custom CSS.

\n

If you’re using Elementor or Divi page builders our native integrations let you quickly customize the style of your forms. Embedding forms in Elementor and Divi has never been easier.

\n

We also knew that our developer friends may want to extend simple contact forms further. That’s why WPForms come with tons of hooks and filters to create custom functionality.

\n

Since contact forms are essential for marketing, WPForms is a must have plugin for every website!

\n

Full WPForms Feature List

\n
    \n
  • Online Form Builder – Our powerful drag & drop contact form builder allows you to easily create WordPress contact forms and other online forms in just a few minutes without writing any code.
  • \n
  • 100% Responsive – Mobile Friendly contact forms.
  • \n
  • GDPR Friendly – Make your contact form GDPR compatible with just a few clicks.
  • \n
  • Form Templates – Use our pre-built form templates to save time. Never start from scratch again (see all form templates demos).
  • \n
  • Spam Protection – WPForms provides smart anti-spam protection out-of-the-box, plus direct integrations with hCaptcha and Google reCAPTCHA.
  • \n
  • Instant Form Notification – Quickly respond to incoming inquiries with our instant contact form notification system.
  • \n
  • Smart Form Confirmation – Show a custom success message, or redirect users to a custom thank you page.
  • \n
  • File Uploads – Collect files and media through your contact forms with File Uploads.
  • \n
  • Multi-Page Forms – Split long forms into multiple pages with progress bar to improve user experience.
  • \n
  • Smart Conditional Logic – Show or hide fields and contact form sections based on user behavior.
  • \n
  • Signature Forms – Create signature forms or add the signature field to your contact form, application form, booking form, etc.
  • \n
  • User Registration Forms – Create custom user registration form and custom login form in WordPress.
  • \n
  • Post Submissions – Collect user-submitted content in WordPress with our front-end post submission form. Great for guest posts, testimonials, business directory, listings, etc.
  • \n
  • Geolocation – Display location information about your users.
  • \n
  • Custom Captchas – Create custom captchas for your contact form.
  • \n
  • Surveys and Polls – Easily create surveys forms and analyze the data with interactive reports.
  • \n
  • Form Abandonment – Unlock more leads and grow your business with partial-form submission.
  • \n
  • Form Locker – Manage form permissions and add access control rules including password-protected forms, members only forms, limit contact form entry per person, close form after specific date / time, etc.
  • \n
  • Offline Forms – Let your visitors save their entered data offline and submit when their internet connection is restored.
  • \n
  • Form Landing Pages – Create “distraction-free” form landing pages to boost conversions. Great Google Forms and Wufoo alternative.
  • \n
  • Conversational Forms – Interactive form layout that makes your form feels more human and boost overall completion rate. Great for surveys and registration forms. Perfect Typeform alternative for WordPress without the high costs.
  • \n
  • Webhooks – Send form entry data to secondary tools and external services. No code required, and no need for a third party connector.
  • \n
  • User Journey Reporting – Discover the steps your visitors take before they submit your forms. Right in the WordPress dashboard, you can easily see the content that’s driving the most valuable form conversions.
  • \n
\n

Integrations

\n
    \n
  • PayPal Payment Forms – Create PayPal forms to easily collect payments, donations, and online orders.
  • \n
  • Stripe Forms – Easily collect credit card payments, donations, and online orders with our Stripe addon.
  • \n
  • Square Forms – Accept payments faster, from anywhere with Square’s secure payment processing with the Square addon.
  • \n
  • Authorize.Net Forms – Connect your WordPress site with Authorize.Net to collect payments, donations, and online orders.
  • \n
  • Mailchimp Forms – Create Mailchimp newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • AWeber Forms – Create AWeber newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • Campaign Monitor Forms – Create Campaign Monitor newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • GetResponse Forms – Create GetResponse newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • Constant Contact Forms – Create Constant Contact newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • Drip Forms – Create Drip newsletter signup forms in WordPress and connect with your contact form to grow your email list.
  • \n
  • ActiveCampaign Forms – Add contacts to your ActiveCampaign account, record events, add notes to contacts, and more.
  • \n
  • Sendinblue Forms – Create Sendinblue forms to automate your marketing and engage your subscribers.
  • \n
  • Salesforce Forms – Easily send your WordPress form contacts and leads to your Salesforce CRM account.
  • \n
  • Zapier Addon – Connect your WordPress forms with over 1000+ apps. Route your contact form data to your favorite CRM, email marketing service, etc.
  • \n
\n

After reading this feature list, you can probably imagine why WPForms is the best WordPress contact form plugin in the market.

\n

Give WPForms a try.

\n

Want to unlock more features? Upgrade to our Pro version.

\n

Credits

\n

This plugin is created by Jared Atchison and Syed Balkhi.

\n

Branding Guideline

\n

WPForms® is a registered trademark of WPForms LLC. When writing about the contact form plugin by WPForms, please make sure to uppercase the initial 3 letters.

\n
    \n
  • WPForms (correct)
  • \n
  • WP Forms (incorrect)
  • \n
  • wpforms (incorrect)
  • \n
  • wpform (incorrect)
  • \n
\n

What’s Next

\n

If you like this plugin, then consider checking out our other projects:

\n
    \n
  • OptinMonster – Get More Email Subscribers with the most popular conversion optimization plugin for WordPress.
  • \n
  • MonsterInsights – See the stats that matter and grow your business with confidence. The best Google Analytics plugin for WordPress.
  • \n
  • SeedProd – Create beautiful landing pages with our powerful drag & drop landing page builder.
  • \n
  • WP Mail SMTP – Improve email deliverability for your contact form with the most popular SMTP plugin for WordPress.
  • \n
  • RafflePress – Best WordPress giveaway and contest plugin to grow traffic and social followers.
  • \n
  • Smash Baloon – #1 social feeds plugin for WordPress – display social media content in WordPress without code.
  • \n
  • AIOSEO – The original WordPress SEO plugin to help you rank higher in search results (trusted by over 2 million sites).
  • \n
  • Push Engage – Connect with visitors after they leave your website with the leading web push notification plugin.
  • \n
  • TrustPulse – Add real-time social proof notifications to boost your store conversions by up to 15%.
  • \n
\n

Visit WPBeginner to learn from our WordPress Tutorials and find out about other best WordPress plugins.

\n

Notes

\n

WPForms is absolutely, positively the most beginner friendly WordPress contact form plugin on the market. It is both easy and powerful.

\n

We took the pain out of creating online forms and made it easy. Check out all WPForms features.

\n

Also, I’m the founder of WPBeginner, the largest WordPress resource site for beginners. It was a huge priority for me to make a WordPress contact form plugin that beginners can use without any training.

\n

I feel that we have done that here. I hope you enjoy using WPForms.

\n

Thank you

\n

Syed Balkhi

\n","download_link":"https://downloads.wordpress.org/plugin/wpforms-lite.1.7.0.zip","tags":{"contact-form":"contact form","contact-form-plugin":"contact form plugin","custom-form":"custom form","form-builder":"form builder","forms":"forms"},"donate_link":"","icons":{"1x":"https://ps.w.org/wpforms-lite/assets/icon.svg?rev=2574198","2x":"https://ps.w.org/wpforms-lite/assets/icon-256x256.png?rev=2574201","svg":"https://ps.w.org/wpforms-lite/assets/icon.svg?rev=2574198"},"wporg":true},{"name":"MonsterInsights – Google Analytics Dashboard for WordPress (Website Stats Made Easy)","slug":"google-analytics-for-wordpress","version":"8.1.0","author":"MonsterInsights","author_profile":"https://profiles.wordpress.org/chriscct7","requires":"4.8.0","tested":"5.8.1","requires_php":"5.5","rating":92,"ratings":{"1":194,"2":39,"3":35,"4":76,"5":2100},"num_ratings":2444,"support_threads":11,"support_threads_resolved":10,"active_installs":3000000,"downloaded":101631670,"last_updated":"2021-09-30 7:56am GMT","added":"2007-09-14","homepage":"https://www.monsterinsights.com/?utm_source=liteplugin&utm_medium=pluginheader&utm_campaign=pluginurl&utm_content=7%2E0%2E0","short_description":"The best free Google Analytics plugin for WordPress. See how visitors find and use your website, so you can grow your business.","description":"

Google Analytics Plugin for WordPress

\n

With over 3 million active installs, MonsterInsights is the most popular Google Analytics plugin for WordPress.

\n

We believe that it’s easy to double your traffic and sales when you know exactly how people find and use your website. MonsterInsights shows you the analytics and stats that matter, so you can grow your business with confidence.

\n

At MonsterInsights, we make it “effortless” to properly connect your WordPress site with Google Analytics, so you can start making data-driven decisions to grow your business.

\n

Unlike other Google Analytics plugins, MonsterInsights allow you to enable all advanced Google Analytics tracking features with just a few clicks (no need to hire a developer).

\n

The best part is that MonsterInsights comes with an analytics dashboard for WordPress that shows you actionable analytics reports right inside your WordPress dashboard. We have created customized reports that eliminate the fluff and only show you the stats that matter, so you can see exactly what’s working and what’s not!

\n

Simply put, MonsterInsights is the most complete Google Analytics plugin for WordPress that’s both EASY and POWERFUL.

\n

That’s why millions of small businesses and top companies like Microsoft, Bloomberg, FedEx, Yelp, Subway, etc. use MonsterInsights to setup Google Analytics on their WordPress sites.

\n
\n

MonsterInsights Pro
\n This plugin is the lite version of MonsterInsights Pro plugin that comes with all the tracking features you will ever need including events tracking, ecommerce tracking, custom dimensions tracking, page speed reports, popular post tracking, custom dimensions, affiliate link tracking, and tons more. Click here to purchase the best premium Google Analytics plugin for WordPress now!

\n
\n

We took the pain out of installing Google Analytics in WordPress and made it easy. Here’s why over 3 million smart business owners, designers, and developers love MonsterInsights, and you will too!

\n

\n

Quick & Easy Google Analytics Setup

\n

Properly setting up Google Analytics is complicated. You have to either hire a developer or learn how to add advanced code snippets to your website in many different areas. This process can take days or weeks…and can even break your website!

\n

With MonsterInsights, we made it “effortless” to properly setup Google Analytics in WordPress. Yes, you can enable all advanced Google Analytics features with just a few clicks.

\n

If you can point-and-click, then you can set up Google Analytics inside WordPress and start seeing insights in under 15 minutes (no code necessary).

\n

We keep up with all Google Analytics updates, so you can sleep well at night knowing that your website will always stay up to date with the newest features.

\n

See what one business owner is saying about MonsterInsights:

\n
\n

It just works. Really easy way to insert Google Analytics tracking code and keep it there when switching themes. No need to copy/paste code anywhere. This is the best way to handle Google Analytics in WordPress.
\n Steven Gliebe

\n
\n

Google Analytics Dashboard + Real Time Stats

\n

Our goal at MonsterInsights is to make Google Analytics easy and accessible for everyone.

\n

We understand that Google Analytics has a steep learning curve which often prevents small business owners from making informed decisions to grow their business.

\n

That’s why MonsterInsights comes with a built-in Google Analytics Dashboard for your WordPress site, so you can see all the useful information about your visitors right inside your WordPress dashboard without needing to login somewhere else.

\n

We have even created customized reports to help you filter through the noise and see the stats that really matter!

\n
    \n
  • \n

    Audience Report helps you get to know your visitors in a whole new way. It shows you detailed insights like which country your visitors are coming from, what are they most interested in, which device are they using, their age, gender, and a whole lot more. You can use this demographics report and audience clues to tweak your website design and content accordingly.

    \n
  • \n
  • \n

    **Publishers Report ** helps you understand which pages your visitors are arriving, and which pages they are leaving from. Designed specifically for blogs and other resource sites, this powerful report will show you which outbound links are getting clicked so you can easily optimize for higher conversions.

    \n
  • \n
  • \n

    Behavior Report shows you exactly how people find your website, which keywords did they search for, who referred them, what did they click on your site, and more. You can use these useful stats to identify low-hanging fruits, new partnership opportunities, and promotional areas to focus on.

    \n
  • \n
  • \n

    Content Report shows you stats on exactly which content gets the most visits, so you can stop guessing and start creating content that gets more traffic and conversion.

    \n
  • \n
  • \n

    Ecommerce Report shows you important store stats like total revenue, conversion rate, average order value, top referral sources, and more (all in one place).

    \n
  • \n
  • \n

    Forms Report shows you conversion stats for various contact forms and lead forms on your website, so you can improve the conversions to grow your business.

    \n
  • \n
  • \n

    Search Console Report shows you exactly how well your website is ranking in Google, so you can further optimize your SEO to grow your organic traffic.

    \n
  • \n
  • \n

    Custom Dimensions Report helps you dig deeper by showing you useful stats like who are your most popular authors, what are the best publication times, which are your most popular categories or tags, how well are your Yoast focus keywords and SEO score performing, and more.

    \n
  • \n
  • \n

    Site Speed Report makes it easy to track pagespeed insights and loading times for your website and get the information you need to improve user experience and your SEO rankings.

    \n
  • \n
\n

Our custom Google Analytics Dashboard reports are based on over 12+ years of online business experience. We built MonsterInsights to be the Google Analytics plugin that we wish we had.

\n

We currently use MonsterInsights on all our portfolio companies which include both media sites generating tens of millions of pageviews and eCommerce sites generating millions in sales.

\n

That’s why we can confidently say that MonsterInsights is the ultimate Google Analytics Shortcut for seeing the stats that matter and making data-driven decisions to grow your business.

\n
\n

I love being able to drill down into the analytics via the reporting feature. I have the PRO version and it makes a big difference what you can analyze. I’m glad that I can integrate with Pretty Links too!
\n Kim Beasley – MonsterInsights user

\n
\n

Google Analytics Enhanced Ecommerce Tracking Made Easy

\n

Google Analytics Enhanced Ecommerce tracking is a powerful feature that lets you track user behavior across your online store starting from product views to checkout page to thank you page and beyond.

\n

With MonsterInsights’ easy WooCommerce integration, you can setup WooCommerce analytics with literally 1-click.

\n

Once you have enabled WooCommerce tracking, MonsterInsights will show you all important WooCommerce metrics in a single dashboard including WooCommerce conversion rate, top products in your WooCommerce store, total transactions, total revenue, average order value, top referral sources, and more.

\n

Our WooCommerce analytics report also includes other detailed WooCommerce event tracking data like total add to carts, total removed from cart, time to purchase, and sessions to purchase.

\n

For those who want to go beyond our WooCommerce stats dashboard, you can easily open up the Google Analytics dashboard to combine WooCommerce data with other secondary dimensions and filters to find exactly what you’re looking for.

\n

Aside from WooCommerce Google Analytics integration, MonsterInsights’ eCommerce addon also offers seamless integration for the Easy Digital Downloads plugin.

\n

Our Easy Digital Downloads Google Analytics integration allows you to set up Enhanced Ecommerce Tracking on your store with just 1-click.

\n

Simply put, MonsterInsights’ Enhanced Ecommerce for WordPress feature is by far the easiest and most powerful in the market.

\n

Google Analytics + GDPR Compliance

\n

MonsterInsights helps make Google Analytics GDPR compliance easier for business owners.

\n

Our EU compliance addon allows you to:

\n
    \n
  • Anonymize IP in Google Analytics
  • \n
  • Disable the Demographics and Interest Reports for Remarketing and Advertising
  • \n
  • Disable UserID and author name tracking
  • \n
  • Enable the ga() compatibility mode
  • \n
  • Integrate with Cookie Notice and CookieBot plugins to collect user consent before tracking
  • \n
  • Integrate with Google AMP Consent Box before enable tracking
  • \n
  • Integrate with Google Analytics’s Chrome browser opt-out extension and built-in cookie opt-out system
  • \n
  • Offer Easy Opt Out link for Google Analytics tracking
  • \n
\n

While no single plugin can guarantee 100% GDPR compliance in WordPress, MonsterInsights goes to great length in helping business owners with GDPR compliance.

\n

For more details, see: GDPR and MonsterInsights – Everything You Need to Know.

\n

Universal Tracking + Google Analytics for AMP and Instant Articles

\n

MonsterInsights uses Google Analytics universal tracking, so you can track your users across devices and platforms.

\n

Accelerated Mobile Pages (AMP) is a project by Google that helps you speed up your website. However if you don’t set it up properly, Google AMP can cause you to lose your website analytics. Our Google Analytics AMP integration allows you to have accurate tracking on all AMP enabled pages. It works seamlessly with AMP for WordPress plugin.

\n

We also offer 1-click Google Analytics integration with Facebook Instant Articles.

\n

At MonsterInsights, we always stay ahead of the curve in helping you integrate WordPress with the latest Google Analytics tracking features.

\n
\n

Analytics for PROs! This plugin brings it all, great features and helpful info to easily see what you are doing.
\n Frank van der Sluijs

\n
\n

Google AdSense Tracking and Affiliate Link Tracking

\n

With MonsterInsights Ads tracking addon, publishers can easily track the performance of their Google AdSense Ads inside their Google Analytics dashboard.

\n

Our affiliate link tracking makes it easy for bloggers and affiliate marketers to track their affiliate links with Google Analytics.

\n

MonsterInsights uses event tracking for all WordPress outbound link tracking which is far more accurate than any built-in WordPress analytics solution.

\n

Unlike other WordPress analytics plugin, our Google Analytics affiliate link tracking does NOT slow down your website because all events are recorded via JavaScript and sent straight to your account.

\n

Most other WordPress stats plugin track data on your WordPress hosting server which slows down your website and does not scale for larger websites.

\n

Since our affiliate link tracking uses Google Analytics’ powerful servers, we can skip WordPress entirely.

\n

MonsterInsights’ affiliate link tracking feature works with all WordPress affiliate link management plugins including Pretty Links, Thirsty Affiliates, and others.

\n

Custom Dimensions Tracking, Custom Google Analytics Event Tracking, and More

\n

Our Google Analytics event tracking feature for WordPress doesn’t just stop at affiliate link tracking.

\n

You can use MonsterInsights custom Google analytics event tracking feature to easily add outbound-link tracking, file downloads tracking, call-to-action button tracking, hashmark tracking, telephone link tracking, and more.

\n

Our powerful Forms Tracking addon uses Google Analytics custom event tracking feature to enable form analytics in WordPress. With just 1-click, you can enable form conversion tracking for your contact forms, lead generation forms, registration forms, surveys, and any other type of form in WordPress.

\n

MonsterInsights’ Custom Dimensions addon allows you to push WordPress analytics even further. You can use Google Analytics custom dimensions to generate helpful WordPress stats for:

\n
    \n
  • Author Tracking – see stats for each author to find which author’s posts generate the most traffic.
  • \n
  • Post Type Tracking – see stats for WordPress post types to find out which sections are performing the best.
  • \n
  • Category Tracking – see stats for your WordPress categories to find out which sections of your sites are the most popular.
  • \n
  • Tags Tracking – see stats for your WordPress tags to find out which tags are the most popular.
  • \n
  • SEO Score Tracking – see stats for your Yoast SEO score and see how it impacts your traffic.
  • \n
  • Focus Keyword Tracking – see stats for Yoast focus keyword and see how it correlates with your traffic.
  • \n
  • Logged-in User Tracking – see WordPress stats for what percentage of your users are logged-in.
  • \n
  • User ID Tracking – see stats for each individual logged-in user’s activity through User ID custom dimension – great for Ecommerce and membership sites.
  • \n
  • Published Time Tracking – track the performance of your posts based on their published time.
  • \n
\n

Simply put, MonsterInsights allow you to take full advantage of all the powerful Google Analytics features.

\n
\n

I like how simple it is for client users and how I can turn on the advanced features for myself to get all the details right.
\n Skip Shean

\n
\n

Google Analytics Dashboard Plugin for WordPress Multisite Networks

\n

MonsterInsights is the most popular analytics plugin for adding Google Analytics to WordPress multisite.

\n

We have built-in all permissions and controls that you would need to successfully run Google Analytics on a WordPress multi-site.

\n

You can control who has access to view the Google Analytics Dashboard report in WordPress. Our permissions setting allows you to hide analytics reports for specific user roles.

\n

Similarly, we understand that some sites may want to exclude logged-in users from tracking. MonsterInsights gives you granular control to exclude admin in Analytics as well as other user roles.

\n

Our performance addon allows you to adjust sample rate and site speed sample rates for Google Analytics.

\n

By now you can probably see why MonsterInsights has become the most popular Google Analytics plugin for WordPress.

\n

We understand Google Analytics better than any other analytics plugin for WordPress.

\n

Full MonsterInsights Feature List

\n
    \n
  • Quick and Easy Setup – Easily setup Google Analytics for WordPress with just a few clicks (no coding needed)
  • \n
  • Real Time Stats – See real time stats inside your Google Analytics dashboard.
  • \n
  • Universal Tracking – Get better insights with Google Analytics’ universal tracking.
  • \n
  • Google Analytics Dashboard – See the stats that matter from right inside your WordPress dashboard with custom Publisher Report, Ecommerce report, and Search Console report.
  • \n
  • Google Analytics 4 Support – Easily set up and send proper website tracking data to Google Analytics 4
  • \n
  • eCommerce Tracking – Add Google Analytics Ecommerce tracking to WordPress.
  • \n
  • WooCommerce Google Analytics – Add Enhanced Ecommerce Tracking to your WooCommerce store.
  • \n
  • Easy Digital Downloads Google Analytics – Add Enhanced Ecommerce Tracking to your EDD store.
  • \n
  • Ads Tracking – Track your Google Adsense ads with Google Analytics.
  • \n
  • Affiliate Link Tracking – Track your affiliate links and get stats that matter.
  • \n
  • File Download Tracking – Enable file download stats with just a click.
  • \n
  • Custom Link Tracking – Track your outbound link clicks with Google Analytics.
  • \n
  • Events Tracking – Track custom button and banner clicks with Google Analytics.
  • \n
  • Custom Dimensions Tracking – Enable Google analytics custom dimensions tracking for WordPress.
  • \n
  • Author Tracking – See author stats and discover who’s the most popular author on your site.
  • \n
  • Popular Post Tracking – See which blog post and section is the most popular.
  • \n
  • Contextual Insights – Get actionable tips on how to improve engagement and get more visitors based on your site’s traffic.
  • \n
  • Headline Analyzer – Get more clicks and improve SEO following suggestions from our Headline Analyzer directly in the WordPress editor
  • \n
  • Custom Post Type Tracking – Track the performance of your custom post types.
  • \n
  • Referral Tracking – See how visitors are finding your website to better focus your marketing efforts.
  • \n
  • Performance Tracking – Control the performance rate and sample rate for your Google Analytics report.
  • \n
  • Enhanced Link Attribution – Get better analytics with enhanced link attribution.
  • \n
  • Email Summaries – Your site’s Google Analytics traffic report delivered straight to your inbox every week.
  • \n
  • Google Analytics for AMP – Add proper tracking for Google AMP.
  • \n
  • Google Analytics for Facebook Instant Articles – Add proper tracking for Facebook Analytics.
  • \n
  • Google Analytics GDPR Compliance – EU compliance addon helps you improve Google Analytics GDPR compliance by adding anonymize IP, cookie consent for opt-out tracking, and more.
  • \n
  • Form Conversion Tracking – Track conversions for your WordPress forms. Works with all popular plugins including WPForms, Contact Form 7, Gravity Forms, Formidable Forms, and more.
  • \n
  • Google Optimize Tracking – Enable Google Analytics support for Google Optimize A/B Testing.
  • \n
  • Google Analytics Tools – Helpful tools for Google Analytics such as UTM link tracking builder.
  • \n
  • Want us to add something else? Suggest a feature and we’ll get it added!
  • \n
\n

After reading this exhaustive feature list, you can probably imagine why MonsterInsights is the best Google Analytics plugin for WordPress.

\n

Give MonsterInsights a try.

\n

Want to unlock even more features? Upgrade to our Pro version.

\n
\n

Simple, yet powerful. Amazing piece of plugin, does exactly what expected and even more.
\n Matt Jaworski

\n
\n

Popular Google Analytics Tutorials

\n\n

Note for Beginners

\n

Like all WordPress plugins, Google Analytics by MonsterInsights is only available for self-hosted WordPress sites. This means you will need to switch from WordPress.com to WordPress.org if you want to use this plugin on your WordPress site.

\n

For more details, see this infographic on self hosted WordPress.org vs free WordPress.com

\n

Credits

\n

This plugin is created by Chris Christoff and Syed Balkhi with sponsorship from WPBeginner.

\n

Branding Guidelines

\n

MonsterInsights® is a registered trademark of MonsterInsights LLC. When writing about the Google Analytics for WordPress plugin by MonsterInsights, please make sure to uppercase the first letters of both word.

\n
    \n
  • MonsterInsights (correct)
  • \n
  • Monster Insights (incorrect)
  • \n
  • monsterinsights (incorrect)
  • \n
  • monsterinsight (incorrect)
  • \n
\n

What’s Next

\n

If you like this plugin, then consider checking out our other projects:

\n
    \n
  • OptinMonster – Get More Email Subscribers
  • \n
  • WPForms – Best WordPress Contact Form Plugin
  • \n
  • AIOSEO – The original WordPress SEO plugin to help you rank higher in search results (trusted by over 2 million sites)
  • \n
  • SeedProd – Most popular coming soon & maintenance mode plugin for WordPress
  • \n
  • WP Mail SMTP – Improve email deliverability for your contact form with the most popular SMTP plugin for WordPress
  • \n
  • RafflePress – Best WordPress giveaway and contest plugin to grow traffic and social followers
  • \n
  • Smash Balloon – #1 social feeds plugin for WordPress – display social media content in WordPress without code
  • \n
  • PushEngage – Connect with visitors after they leave your website with the leading web push notification plugin
  • \n
  • TrustPulse – Add real-time social proof notifications to boost your store conversions by up to 15%
  • \n
\n

This plugin would not be possible without the help and support of WPBeginner, the largest WordPress resource site. You can learn from our free WordPress Tutorials like how to install WordPress, choose the best WordPress hosting, WordPress glossary, and more.

\n

You can also learn about other best WordPress plugins.

\n","download_link":"https://downloads.wordpress.org/plugin/google-analytics-for-wordpress.8.1.0.zip","tags":{"google-analytics":"google analytics","google-analytics-dashboard":"google analytics dashboard","google-analytics-widget":"google analytics widget","woocommerce-stats":"WooCommerce stats","wordpress-analytics":"WordPress analytics"},"donate_link":"http://www.wpbeginner.com/wpbeginner-needs-your-help/","icons":{"1x":"https://ps.w.org/google-analytics-for-wordpress/assets/icon.svg?rev=1598927","2x":"https://ps.w.org/google-analytics-for-wordpress/assets/icon-256x256.png?rev=1598927","svg":"https://ps.w.org/google-analytics-for-wordpress/assets/icon.svg?rev=1598927"},"wporg":true},{"name":"Atomic Blocks – Gutenberg Blocks Collection","slug":"atomic-blocks","version":"2.9.0","author":"atomicblocks","author_profile":"https://profiles.wordpress.org/atomicblocks","requires":"5.3","tested":"5.5.6","requires_php":"5.6","rating":86,"ratings":{"1":5,"2":0,"3":1,"4":6,"5":31},"num_ratings":43,"support_threads":1,"support_threads_resolved":0,"active_installs":40000,"downloaded":997842,"last_updated":"2020-10-28 4:53pm GMT","added":"2018-03-26","homepage":"https://atomicblocks.com","short_description":"A collection of beautiful, customizable Gutenberg blocks for the new block editor.","description":"

Atomic Blocks has moved!

\n

Same powerful blocks, same beautiful designs, same innovative team. Atomic Blocks has been renamed to Genesis Blocks. Learn more about Genesis Blocks. With our migration tool built right into Genesis Blocks, the transition between plugins will be simple and seamless – plus you’ll be ready to receive the new blocks and features we’re releasing soon.

\n

Atomic Blocks is a collection of page building blocks for the new Gutenberg block editor. Building pages with the block editor and Atomic Blocks gives you more control to quickly create and launch any kind of site you want!

\n

Installing the customizable Atomic Block plugin adds a collection of beautiful, site-building blocks to help you customize page layouts, increase engagement, and get results for your business. Atomic Blocks provides everything from customizable buttons, to beautifully-designed page sections and full-page layout designs via the Section & Layout block.

\n

Along with the content blocks you’ll find in Atomic Blocks, we’re also publishing helpful articles and tutorials to help you get started with Gutenberg.

\n

New Section and Layout Block!

\n

\n

On top of the handy, time-saving blocks already found in Atomic Blocks, we’re excited to introduce the brand new Section and Layout block! This block comes with a library of pre-designed sections and layouts to help you quickly and easily build a beautiful site with the new block editor.

\n

Using the Section and Layout modal window, you can browse designs by category, search, and even add sections and layouts to a Favorites tab for quick access later. Paired with the free Atomic Blocks theme, which has support for full-width, block-based page building, you have everything you need to start building your site today!

\n

Atomic Blocks currently includes the following blocks:

\n\n

Atomic Blocks WordPress Theme

\n

We’ve created a beautiful WordPress theme to help you get started with the Atomic Blocks plugin and the new WordPress block editor. The theme integrates seamlessly with the blocks you’ll find in the plugin!

\n\n

In addition to the Atomic Block Theme, we’ve built Revolution Pro with the StudioPress team. This theme is built from the ground up with blocks—Gutenberg core and Atomic. Using this Theme and the Genesis One-Click Theme Install you can have a new block-based site up and running in minutes.

\n\n

Google AMP Support

\n

The Accelerated Mobile Pages (AMP) project is a publishing format created by Google to enhance site performance for mobile website users. AMP pages are specially designed for Google search users to quickly load website pages without using any extraneous data. Atomic Blocks has support for AMP built into each block!

\n

Atomic Blocks Help File

\n

We’ve created a handy help file that you can check out here. The help file covers how to setup the plugin and get started with the blocks.

\n

The help file is also available in the plugin once activated. Click the Atomic Blocks admin menu item to visit the Getting Started page.

\n

View the plugin help file

\n

Follow Along:

\n\n","download_link":"https://downloads.wordpress.org/plugin/atomic-blocks.2.9.0.zip","tags":{"blocks":"blocks","editor":"editor","gutenberg":"gutenberg","gutenberg-blocks":"gutenberg blocks","page-builder":"page builder"},"donate_link":"https://atomicblocks.com","icons":{"1x":"https://ps.w.org/atomic-blocks/assets/icon-128x128.jpg?rev=1914920","2x":"https://ps.w.org/atomic-blocks/assets/icon-256x256.jpg?rev=1914921"},"wporg":true},{"name":"Akismet Spam Protection","slug":"akismet","version":"4.2.1","author":"Automattic","author_profile":"https://profiles.wordpress.org/automattic","requires":"5.0","tested":"5.8.1","requires_php":false,"rating":94,"ratings":{"1":40,"2":10,"3":13,"4":45,"5":813},"num_ratings":921,"support_threads":14,"support_threads_resolved":9,"active_installs":5000000,"downloaded":220531442,"last_updated":"2021-10-01 6:28pm GMT","added":"2005-10-20","homepage":"https://akismet.com/","short_description":"The best anti-spam protection to block spam comments and spam in a contact form. The most trusted antispam solution for WordPress and WooCommerce.","description":"

Akismet checks your comments and contact form submissions against our global database of spam to prevent your site from publishing malicious content. You can review the comment spam it catches on your blog’s “Comments” admin screen.

\n

Major features in Akismet include:

\n
    \n
  • Automatically checks all comments and filters out the ones that look like spam.
  • \n
  • Each comment has a status history, so you can easily see which comments were caught or cleared by Akismet and which were spammed or unspammed by a moderator.
  • \n
  • URLs are shown in the comment body to reveal hidden or misleading links.
  • \n
  • Moderators can see the number of approved comments for each user.
  • \n
  • A discard feature that outright blocks the worst spam, saving you disk space and speeding up your site.
  • \n
\n

PS: You’ll be prompted to get an Akismet.com API key to use it, once activated. Keys are free for personal blogs; paid subscriptions are available for businesses and commercial sites.

\n","download_link":"https://downloads.wordpress.org/plugin/akismet.4.2.1.zip","tags":{"anti-spam":"anti-spam","antispam":"antispam","comments":"comments","contact-form":"contact form","spam":"spam"},"donate_link":"","icons":{"1x":"https://ps.w.org/akismet/assets/icon-128x128.png?rev=969272","2x":"https://ps.w.org/akismet/assets/icon-256x256.png?rev=969272"},"wporg":true},{"name":"WP GDPR Cookie Notice","slug":"wp-gdpr-cookie-notice","version":"1.0.0-rc.1","author":"Felix Arntz","author_profile":"https://profiles.wordpress.org/flixos90","requires":"4.9.6","tested":"5.7.3","requires_php":"7.0","rating":76,"ratings":{"1":4,"2":0,"3":0,"4":0,"5":9},"num_ratings":13,"support_threads":1,"support_threads_resolved":0,"active_installs":700,"downloaded":6130,"last_updated":"2021-04-02 11:51pm GMT","added":"2019-03-01","homepage":"https://wordpress.org/plugins/wp-gdpr-cookie-notice/","short_description":"Simple performant cookie consent notice that supports AMP, Web Stories, granular cookie control and live…","description":"

This plugin adds a simple performant cookie consent notice to your WordPress site that supports AMP, Web Stories, granular cookie control and live preview customization.

\n

Not only does the notice allow you to provide the regular message that your site uses cookies, you can also optionally grant your site visitors permission to granularly allow which cookie types are allowed, supporting groups of functional (always required), preferences, analytics and marketing cookies. This aims towards compliance with how the new GDPR regulations recommend implementing cookie control for your site.

\n

In addition to the Privacy Policy page setting that WordPress core provides, you also get a settings to optionally set an extra Cookie Policy page, and you can easily link to either of them from the cookie consent notice.

\n

The cookie notice content and appearance can easily be tweaked using the Customizer, with an immediate live-preview of what your changes will look like.

\n

Last but not least, another important thing that this plugin takes care of, other than most other cookie consent plugins, is that it actually ensures cookies are only placed if the respective cookie type has been allowed by the visitor. The plugin does this by implementing cookie rules for WordPress itself, and also for the following plugins:

\n\n

More plugins will be supported in the future. If you are a developer though, it’s also very easy to add cookie rules for other code, by using the flexible cookie rule component the plugin provides as an extension point.

\n

Feature Summary

\n
    \n
  • Lightweight and easy-to-use: Simply activate the plugin, and the notice will appear.
  • \n
  • Live Preview: Use the Customizer to adjust the notice to your needs, with an instant live preview.
  • \n
  • Customizable Appearance: Specify the notice position, colors, border, button size and more.
  • \n
  • Customizable Content: Adjust the notice heading, text and button label to your preferences. You can easily link to your cookie policy page or privacy policy page, and even give visitors granular control about which cookie types they allow.
  • \n
  • Cookie Policy Support: Define an optional cookie policy page if your site has one, or alternatively provide an ID attribute to the cookie section in your privacy policy.
  • \n
  • Cookie Integrations: Supported cookies are only set once the visitor has given their consent. The cookie rules implemented also respect the more granular cookie control.
  • \n
  • JavaScript-driven: The cookie notice is inserted into the page as necessary via JavaScript, but at the same time provides easy access to whether it should be displayed via its PHP API.
  • \n
  • AMP Support: The notice is fully AMP-compatible using <amp-consent>, integrating seamlessly with the AMP plugin. It integrates with Web Stories as well.
  • \n
  • Coding Best Practices: The plugin is fully object-oriented and is coded after best practices, such as using interfaces, traits, dependency injection or the single responsibility principle. It also implements modern coding features requiring PHP 7, such as scalar type hints or return type hints.
  • \n
\n

Disclaimer

\n

This plugin does not provide any legal protection. You as a site administrator are required to ensure that it meets legal standards. This plugin is a technical tool, not a lawyer.

\n","download_link":"https://downloads.wordpress.org/plugin/wp-gdpr-cookie-notice.1.0.0-rc.1.zip","tags":{"amp":"amp","cookie-consent":"cookie consent","cookie-notice":"cookie notice","gdpr":"GDPR","web-stories":"web stories"},"donate_link":"","icons":{"1x":"https://ps.w.org/wp-gdpr-cookie-notice/assets/icon-128x128.png?rev=2042024","2x":"https://ps.w.org/wp-gdpr-cookie-notice/assets/icon-256x256.png?rev=2042024"},"wporg":true},{"name":"WordPress Share Buttons Plugin – AddThis","slug":"addthis","version":"6.2.6","author":"The AddThis Team","author_profile":"https://profiles.wordpress.org/arnavarro","requires":"3.0","tested":"5.2.12","requires_php":false,"rating":84,"ratings":{"1":75,"2":25,"3":22,"4":46,"5":444},"num_ratings":612,"support_threads":1,"support_threads_resolved":0,"active_installs":100000,"downloaded":5075866,"last_updated":"2019-07-10 5:19pm GMT","added":"2008-12-23","homepage":"https://wordpress.org/plugins/addthis/","short_description":"Now compatible with the AMP Plugin! Free Share Buttons from AddThis. Share to Messenger, WhatsApp, Facebook, Twitter, Pinterest and many more.","description":"

Now compatible with the AMP Plugin! The Free WordPress Share Buttons Plugin from AddThis makes it easier than ever for your audience to spread your content around the web. Our quick-loading Share Buttons Plugin lets you connect to over 200 social channels including Messenger, WhatsApp, Facebook, Twitter, Pinterest and many more.

\n

Our clean, customizable and simple share buttons are beautiful, quick to load and recognized all over the web.

\n

AddThis is trusted by over 15,000,000 websites with over 2 billion unique users, sharing content all over the world, in more than sixty languages.

\n

Types of Share Buttons:

\n
    \n
  • \n

    Floating share buttons: Placed on the side of your page, following your reader as they scroll. A great way to promote sharing without getting too in-your-face.

    \n
  • \n
  • \n

    Expanding share buttons: Modern, clean, and best suited for sites with tons of mobile traffic. This button expands to reveal sharing options on hover or click.

    \n
  • \n
  • \n

    Inline share buttons: Integrate share buttons into your own content for a seamless sharing experience.

    \n
  • \n
  • \n

    Image sharing buttons: Seamlessly integrate sharing into your layout with adjustable image sharing buttons. Perfect for pages with tons of shareable content.

    \n
  • \n
\n

Customizable:

\n
    \n
  • \n

    Designed for desktop, tablet, and mobile

    \n
  • \n
  • \n

    Choose from over 200 social media channels to display

    \n
  • \n
  • \n

    Adjust coloring to match your brand

    \n
  • \n
\n

Analytics:

\n
    \n
  • Sign up for a free AddThis account to get analytics on how your content is performing such as your top shared content, referring social networks and more. After you register, these analytics are accessible by logging into your AddThis.com account and visiting your AddThis dashboard. Analytics include site pageviews, your top shared content, referring social networks, and more.
  • \n
\n

Support:

\n

We strive to provide best-in-class support with a response time of around two hours, and a customer satisfaction rate of over 98%. To get in touch with our team, head to http://www.addthis.com/support.

\n

Check out our other plugins to help you grow and engage your audience!

\n
    \n
  • \n

    Follow Buttons: Add followers to 65+ social networks, including Facebook, Snapchat, Instagram, and more.

    \n
  • \n
  • \n

    Related Posts: Boost your on-site engagement with our Related Posts tool, which recommends content not only by what’s popular, but also what’s most relevant.

    \n
  • \n
\n

Want more? Visit our website to learn how you can activate our Email List Building and Link Promotion Tools.

\n

AddThis Academy | Privacy Policy

\n","download_link":"https://downloads.wordpress.org/plugin/addthis.6.2.6.zip","tags":{"share-buttons":"share buttons","social":"social","social-marketing":"Social Marketing","social-share":"social share","social-sharing":"social sharing"},"donate_link":"","icons":{"1x":"https://ps.w.org/addthis/assets/icon-128x128.png?rev=1223867","2x":"https://ps.w.org/addthis/assets/icon-256x256.png?rev=1223867"},"wporg":true},{"name":"BigCommerce For WordPress","slug":"bigcommerce","version":"4.18.0","author":"BigCommerce","author_profile":"https://profiles.wordpress.org/bigcommerce","requires":"5.2","tested":"5.8.1","requires_php":"7.4.0","rating":80,"ratings":{"1":8,"2":1,"3":0,"4":3,"5":27},"num_ratings":39,"support_threads":7,"support_threads_resolved":0,"active_installs":1000,"downloaded":60330,"last_updated":"2021-10-07 1:18am GMT","added":"2018-11-16","homepage":"","short_description":"Scale your ecommerce business with WordPress on the front-end and BigCommerce on the back end.…","description":"

BigCommerce for WordPress is a plugin that allows you to scale ecommerce further than ever before on WordPress. Scale your business with WordPress on the front-end and free up server resources from things like catalog management, processing payments, managing fulfillment logistics and more with BigCommerce on the back end.

\n

Built to integrate seamlessly with WordPress, you get access to our native ecommerce features from a single plugin, the ability to sell across multiple channels and marketplaces from a single location, and best of all, an embedded checkout experience that takes on PCI compliance and customer security on your behalf.

\n

Quick Start!

\n

Look at details from the latest release, including new features and enhancements here: https://github.com/bigcommerce/bigcommerce-for-wordpress/releases

\n

Dive into how you set up and customize your site using BC4WP using our guides here: https://developer.bigcommerce.com/bigcommerce-for-wordpress/getting-started/introduction

\n

Have a suggestion for how we can be better? Ping the team! wordpress-suggestions@bigcommerce.com

\n

DIFFERENT FROM YOUR TRADITIONAL PLUGIN

\n

We’ve taken a very different approach to ecommerce in WordPress. We set out to build our plugin the WordPress Way: deliver value to the community, build it with WordPress experts and make something developers can call their own.

\n

The BigCommerce for WordPress plugin leverages the best aspects of both platforms, allowing WordPress to manage content and BigCommerce to manage ecommerce.

\n

SCALABLE ECOMMERCE FOR WORDPRESS

\n

Continue to tap into the unrestricted customization of WordPress while pairing it with the most scalable SaaS ecommerce engine. BigCommerce lets you build complex catalogs, manage large volumes of concurrent traffic, orders and analytics.

\n

The BigCommerce plugin ports over a copy of your product catalog and stores products as custom post types in WordPress. It also creates pages for your cart, checkout, account profiles, sign in, shipping & returns, gift certificates and order history.

\n

The key difference to our approach is that you don’t need to install additional extensions to get access to common ecommerce features. Instead, you get instant access to many common (and advanced) features, such as complex catalog support, global payment gateways, currency handling, taxation, shipping calculations and centralized channel management; all out-of-the-box.

\n

OFFLOAD BACKEND RESOURCES

\n

Our philosophy is that processing orders and running your store shouldn’t affect the uptime and speed of your site — which can hurt your SEO, conversion, and brand. The BigCommerce plugin does the heavy commerce lifting, letting you scale your ecommerce without losing speed or uptime.

\n

LET US HANDLE PCI COMPLIANCE

\n

Taking on your own PCI compliance comes with a huge amount of liability and risk. BigCommerce powers the full checkout experience, assuming the burden of PCI compliance for you.

\n

EXTENSIVE PAYMENT GATEWAYS

\n

BigCommerce has over 65 payment gateway integrations available out-of-the box, serving 100+ countries and over 250 local payment methods.

\n

To help you reduce costs, we’ve pre-negotiated special credit and debit card processing rates with PayPal, our preferred payment solution. The more you grow with BigCommerce and upgrade your plan, the lower your rates can go.

\n

HIGHLY SCALABLE PRODUCT CATALOG

\n

BigCommerce is built for large, complex catalogs with up to 600 SKUs per product, and 250 product values for a single option. Our native catalog structure treats single products (including variants, details, SKUs, etc.) as a single API call, making inventory syncing with ERPs, PIMs (and WordPress) fast.

\n

MULTI-CHANNEL SELLING & MANAGEMENT

\n

With the core BigCommerce platform, you now have access within the control panel to sell across multiple marketplaces simultaneously, such as eBay, Amazon, Facebook, Instagram, Google Shopping, Square and more! Save time and eliminate errors and overselling with bulk listing, automatic inventory syncing and unified order and fulfillment management.

\n

USE YOUR FAVORITE WORDPRESS THEME

\n

BigCommerce for WordPress will work with any WordPress theme, but it may require some styling to make it fit perfectly. Are you a theme developer? We’d love to promote your BigCommerce for WordPress compatible theme. Get in touch with us here.

\n

To start, we recommend choosing a cross-browser compatible WordPress ecommerce theme, since the theme options included will better match what an online store requires.

\n

ECOMMERCE WITH GUTENBERG

\n

We’re big supporters of Gutenberg and built our plugin to support both the classic editor and Gutenberg. Whether you’re inserting shortcodes in classic mode or product blocks in Gutenberg, we will continue to enable support for both.

\n

SECURED USER ACCOUNTS & LOGINS

\n

In addition to offering you peace of mind with a secure checkout experience, we also extend this level of security to your shoppers, their accounts and logins, and payment information — all managed by BigCommerce.

\n

GLOBAL SHIPPING STREAMLINED

\n

We support all major global carriers, offer real-time carrier quotes, allow for free shipping, flat rates, dropshipping and more. With our deep ShipperHQ integration, you can even specify rates by product, category, customer group, quantity, destination, dimensions and more.

\n

FLEXIBLE SHOPPING CART

\n

We are bringing over a decade of focusing on building online stores to every WordPress website. Through this we bring our flexible shopping cart, along with it’s extensive customization options, so can offer enterprise grade promotions and discounts within a fully responsive layout, without additional extensions that other WordPress ecommerce plugins require.

\n

MULTIPLE SITES; ONE CONTROL PANEL

\n

Even if you sell across multiple WordPress sites, you shouldn’t have to manage them all in separate places. BigCommerce gives you a single control panel to manage your catalog, orders and shipping, all from one place. Streamline your admin experience and spend less time managing ecommerce on WordPress.

\n

Beyond WordPress, the endpoints we’ve opened on our platform allow you to build commerce into any sort of experience. Looking to launch a site in React? Interested in developing a mobile app? Want to integrate with an in-house POS? All of these can be built and managed from within the BigCommerce Control Panel.

\n

COMPLEX ENTERPRISE SYSTEMS INTEGRATIONS

\n

A huge benefit of having a SaaS ecommerce engine behind the scenes is that the core platform is already built for mid-market and enterprise use cases. Natively connect to your existing ERP suites, PIM software, OMS solutions, POS systems or marketing automation tools right out of the box.

\n

AMP SUPPORT

\n

Unique to most WordPress ecommerce plugins, BigCommerce for WordPress also includes support for Accelerated Mobile Pages. To activate, install the official Google plugin.

\n

SUPPORT AND SERVICES

\n

All of our BigCommerce customers have access to our 24/7 live phone, chat, and email support, run from our headquarters in Austin, Texas. For larger enterprise customers, we offer dedicated account management and implementation management services as part of your plan. We also have an ever-growing collection of help, support, and how-to guides in our help center.

\n

BUILT WITH DEVELOPERS IN MIND

\n

BigCommerce for WordPress was built by WordPress developers, with developers in mind. Our plugin is open source and available for you to fork, extend and modify as your needs require.

\n

Our plugin supports WordPress’ standard method of overriding template files so you can modify out-of-the-box designs. Customize your product cards, lists and shopping cart without risking plugin updates that will undo your changes.

\n

Additionally, there are many hooks and filters, so you can manipulate content to your heart’s content.

\n

JOIN OUR BIGCOMMERCE COMMUNITY

\n

All BigCommerce customers get access to our ever-growing online community to answer questions, discuss ecommerce strategies, learn about the latest product updates, contribute ideas and more.

\n

If you’re interested in contributing to BigCommerce for WordPress, head over to our GitHub Repository.

\n","download_link":"https://downloads.wordpress.org/plugin/bigcommerce.4.18.0.zip","tags":{"ecommerce":"ecommerce","online-store":"online store","retail":"retail","sell-online":"sell online","storefront":"storefront"},"donate_link":"","icons":{"1x":"https://ps.w.org/bigcommerce/assets/icon-256x256.png?rev=2141502","2x":"https://ps.w.org/bigcommerce/assets/icon-256x256.png?rev=2141502"},"wporg":true},{"name":"Yoast SEO","slug":"wordpress-seo","version":"17.3","author":"Team Yoast","author_profile":"https://profiles.wordpress.org/joostdevalk","requires":"5.6","tested":"5.8.1","requires_php":"5.6.20","rating":96,"ratings":{"1":722,"2":125,"3":174,"4":618,"5":25760},"num_ratings":27399,"support_threads":514,"support_threads_resolved":436,"active_installs":5000000,"downloaded":364182943,"last_updated":"2021-10-05 6:53am GMT","added":"2010-10-11","homepage":"https://yoa.st/1uj","short_description":"Improve your WordPress SEO: Write better content and have a fully optimized WordPress site using the Yoast SEO plugin.","description":"

Yoast SEO: the #1 WordPress SEO plugin

\n

Since 2008 Yoast SEO has helped millions of websites worldwide to rank higher in search engines.

\n

Yoast’s mission is SEO for Everyone. Our plugin’s users range from the bakery around the corner to some of the most popular sites on the planet.

\n

Yoast SEO Free contains everything that you need to manage your SEO, and the Yoast SEO Premium plugin and its extensions unlock even more tools and functionality.

\n

GET AHEAD OF THE COMPETITION

\n

To rank highly in search engines, you need to beat the competition. You need a better, faster, stronger website than the people who sell or do the same kinds of things as you.

\n

Yoast SEO is the most-used WordPress SEO plugin, and has helped millions of people like you to get ahead, and to stay ahead.

\n

TAKING CARE OF YOUR WORDPRESS SEO

\n

Yoast SEO is packed full of features, designed to help visitors and search engines to get the most out of your website. Some of our favourites are:

\n
    \n
  • Automated technical SEO improvements, like canonical URLs and meta tags.
  • \n
  • Advanced XML sitemaps; making it easy for Google to understand your site structure.
  • \n
  • Title and meta description templating, for better branding and consistent snippets in the search results.
  • \n
  • An in-depth Schema.org integration that will increase your chance of getting rich results, by helping search engines to understand your content.
  • \n
  • Full control over site breadcrumbs, so that users and search engines always know where they are.
  • \n
  • Faster loading times for your whole website, due to an innovative way of managing data in WordPress.
  • \n
  • [Premium] E-mail support for our Yoast SEO Premium users.
  • \n
  • [Premium] The possibility to expand Yoast SEO with the News SEO, Video SEO, Local SEO and WooCommerce SEO extensions.
  • \n
\n

WRITE KILLER CONTENT WITH YOAST SEO

\n

We know content is king, that’s why Yoast SEO is famous for its state-of-the-art content and SEO analysis. Yoast SEO gives you:

\n
    \n
  • SEO analysis: an invaluable tool while writing SEO-friendly content with the right (focus) keyphrases in mind.
  • \n
  • Readability analysis: ensures that humans and search engines can read and understand your content.
  • \n
  • Full language support for: English, German, French, Dutch, Spanish, Italian, Russian, Indonesian, Polish, Portuguese, Arabic, Swedish, Hebrew, Hungarian, Turkish, Czech, Norwegian and Slovak.
  • \n
  • A Google preview, which shows what your listings will look like in the search results. Even on mobile devices!
  • \n
  • Innovative Schema blocks for the WordPress block editor, so that your FAQ and HowTo content can be shown directly in the search results. Plus a breadcrumbs block to guide your users.
  • \n
  • [Premium] Internal linking blocks to easily improve the structure of your content. Easily add a table of contents block, a related links block, a subpages block, or siblings block! Plus, we’ll keep adding these easy-to-add blocks to improve your site structure.
  • \n
  • [Premium] Social previews to show you how your content will be shown on Twitter and Facebook. Plus: Social Appearance Templates to guarantee a consistent look.
  • \n
  • [Premium] The Insights tool that shows you what your text focuses on. This way you can keep your article in line with your keyphrases.
  • \n
  • [Premium] Optimize your content for synonyms and related keyphrases.
  • \n
  • [Premium] Optimize your article for different word forms of your keyphrases, as the singular and plural. But also different verb forms, synonyms, and related keyphrases. This makes for more natural content!
  • \n
  • [Premium] Automatic internal linking suggestions: write your article and get automatic suggested posts to link to!
  • \n
  • [Premium] An orphaned content filter to detect posts that have no links pointing towards them!
  • \n
  • [Premium] SEO workouts to make working on your site as easy as ABC. These SEO workflows will get your site into shape in no time!
  • \n
\n

KEEP YOUR SITE IN PERFECT SHAPE

\n

Whether you are an online entrepreneur, blogger or content creator, a developer, a (WordPress) SEO expert or a business owner, Yoast SEO helps you keep your website in perfect shape by:

\n
    \n
  • Tuning the engine of your website, so you can work on creating great content!
  • \n
  • Giving you cornerstone content and internal linking features to help you optimize your site structure in a breeze.
  • \n
  • Translating your content to structured data where possible, to help search engines understand your website.
  • \n
  • Helping you manage your team: with our SEO roles you can give colleagues access to specific sections of the Yoast SEO plugin.
  • \n
  • [Premium] Automatically creating redirects when URLs change or when pages are deleted, and providing tools to manage or create redirects.
  • \n
  • [Premium] Showing you social previews to manage the way your page is shared on social networks like Facebook and Twitter.
  • \n
\n

TRUST THE EXPERTS

\n

Yoast is powered by a team of expert developers, testers, software architects, and SEO consultants. They work constantly to stay at the cutting edge of WordPress SEO, and to improve the plugin with every release.

\n

Yoast SEO is the only WordPress SEO plugin made by world-renowned SEO experts.

\n

GET PREMIUM SUPPORT

\n

The Yoast team offers regular support on the WordPress.org forums. But we hope you understand that we prioritize our Premium customers. This one-on-one email support is available to people who have purchased Yoast SEO Premium.

\n

Did you know that Yoast SEO Premium contains a lot of extra features:

\n
    \n
  • A redirect manager that prevents “404: page not found” errors
  • \n
  • Optimize without worrying about over-optimization with intelligent word form recognition available in multiple languages.
  • \n
  • Internal linking blocks to structure your site easily.
  • \n
  • Internal linking suggestions while you’re writing.
  • \n
  • Preview your content to see what it will look like in the search results and when shared on social media using the Google preview and social preview.
  • \n
  • Cornerstone content checks that point search engines to your most important pages.
  • \n
  • Connect Yoast SEO to Zapier to easily create zaps that instantly share your published posts with 2000+ destinations like Twitter, Facebook, and much more.
  • \n
\n

If you are serious about your WordPress SEO, install the Yoast SEO Premium plugin! Costs a little, saves a lot of time!

\n

OUR EXTENSIONS TO FURTHER IMPROVE YOUR WORDPRESS SEO

\n

Check out these SEO add-ons by Yoast:

\n
    \n
  • Yoast Local SEO optimizes your website for a local audience.
  • \n
  • Yoast Video SEO ensures that Google understands what your video is about, increasing the chances of ranking in the video results.
  • \n
  • Yoast News SEO for news websites that want to improve their visibility and performance in Google News.
  • \n
  • WooCommerce SEO for all online shops that want to perform better in the search results and social media.
  • \n
\n

These extensions work fine with the free version of Yoast SEO. Of course, the premium extensions also include 24/7 support.

\n

Oh, don’t forget: our Yoast Academy is for all entrepreneurs, bloggers, and anyone who wants to learn more about optimizing websites, improving your WordPress SEO, and if you want to take your content to the next level!

\n

INTEGRATIONS

\n

Yoast SEO integrates seamlessly into a range of themes and plugins. We work particularly well with:

\n\n

BUG REPORTS

\n

Do you want to report a bug for Yoast SEO? Best to do so in the WordPress SEO repository on GitHub. Please note that GitHub is not a support forum and issues will be closed if they don’t meet the bug requirements.

\n

READ MORE

\n

Want more information on search engine optimization and Yoast SEO? Have a look at:

\n\n","download_link":"https://downloads.wordpress.org/plugin/wordpress-seo.17.3.zip","tags":{"content-analysis":"Content analysis","readability":"Readability","schema":"schema","seo":"seo","xml-sitemap":"xml sitemap"},"donate_link":"https://yoa.st/1up","icons":{"1x":"https://ps.w.org/wordpress-seo/assets/icon.svg?rev=2363699","2x":"https://ps.w.org/wordpress-seo/assets/icon-256x256.png?rev=2363699","svg":"https://ps.w.org/wordpress-seo/assets/icon.svg?rev=2363699"},"wporg":true},{"name":"Gutenberg","slug":"gutenberg","version":"11.6.0","author":"Gutenberg Team","author_profile":"https://profiles.wordpress.org/matveb","requires":"5.7","tested":"5.8.1","requires_php":"5.6","rating":42,"ratings":{"1":2276,"2":201,"3":128,"4":134,"5":708},"num_ratings":3447,"support_threads":64,"support_threads_resolved":29,"active_installs":300000,"downloaded":24959511,"last_updated":"2021-09-29 9:53am GMT","added":"2017-06-16","homepage":"https://github.com/WordPress/gutenberg","short_description":"The Gutenberg plugin provides editing, customization, and site building features to WordPress. This beta plugin allows you to test bleeding-edge featu …","description":"

“Gutenberg” is a codename for a whole new paradigm for creating with WordPress, that aims to revolutionize the entire publishing experience as much as Gutenberg did the printed word. The project is following a four-phase process that will touch major pieces of WordPress — Editing, Customization, Collaboration, and Multilingual.

\n

The block editor introduces a modular approach to all parts of your site: each piece of content in the editor, from a paragraph to an image gallery to a headline, is its own block. And just like physical blocks, WordPress blocks can be added, arranged, and rearranged, allowing WordPress users to create media-rich content in a visually intuitive way — and without work-arounds like shortcodes or custom HTML.

\n

The block editor first became available in December 2018. We’re always hard at work refining the experience, creating more and better blocks, and laying the groundwork for the future phases of work. Each WordPress release comes ready to go with the stable features from multiple versions of the Gutenberg plugin, so you don’t need to use the plugin to benefit from the work being done here. However, if you’re more adventurous and tech-savvy, the Gutenberg plugin gives you the latest and greatest, so you can join us in testing bleeding-edge features, start playing with blocks, and maybe get inspired to build your own.

\n

Discover More

\n
    \n
  • \n

    User Documentation: Review the WordPress Editor documentation for detailed instructions on using the editor as an author to create posts, pages, and more.

    \n
  • \n
  • \n

    Developer Documentation: Explore the Developer Documentation for extensive tutorials, documentation, and API references on how to extend the editor.

    \n
  • \n
  • \n

    Contributors: Gutenberg is an open-source project and welcomes all contributors from code to design, from documentation to triage. See the Contributor’s Handbook for all the details on how you can help.

    \n
  • \n
\n

The development hub for the Gutenberg project can be found at https://github.com/wordpress/gutenberg. Discussions for the project are on the Make Core Blog and in the #core-editor channel in Slack, including weekly meetings. If you don’t have a slack account, you can sign up here.

\n","download_link":"https://downloads.wordpress.org/plugin/gutenberg.11.6.0.zip","tags":[],"donate_link":"","icons":{"1x":"https://ps.w.org/gutenberg/assets/icon-128x128.jpg?rev=1776042","2x":"https://ps.w.org/gutenberg/assets/icon-256x256.jpg?rev=1776042"},"wporg":true},{"name":"Setka Editor","slug":"setka-editor","version":"","author":"","author_profile":"","requires":"","tested":"","requires_php":"","rating":0,"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"active_installs":0,"downloaded":0,"last_updated":"","added":"","homepage":"https://setka.io/","short_description":"

Setka Editor is the first WYSIWYG plugin with page builder functionality.

\n","description":"\n\n\n

Setka Editor is the first WYSIWYG plugin with page builder functionality.

\n","download_link":"","tags":{},"donate_link":"","icons":{"1x":"https://amp-wp.org/wp-content/uploads/2018/11/Setka-Banner-285x160.jpg","2x":"https://amp-wp.org/wp-content/uploads/2018/11/Setka-Banner-372x209.jpg","svg":""},"wporg":false}] \ No newline at end of file diff --git a/data/themes.json b/data/themes.json deleted file mode 100644 index d8c8ec0815b..00000000000 --- a/data/themes.json +++ /dev/null @@ -1 +0,0 @@ -[{"name":"ExS","slug":"exs","version":"1.7.5","preview_url":"https://wp-themes.com/exs/","author":{"user_nicename":"exstheme","profile":"https://profiles.wordpress.org/exstheme","avatar":"https://secure.gravatar.com/avatar/1823b8571e6996048b616b6602b21358?s=96&d=monsterid&r=g","display_name":"exstheme","author":"the ExS team","author_url":"https://exsthemewp.com/about/"},"screenshot_url":"//ts.w.org/wp-content/themes/exs/screenshot.png?ver=1.7.5","rating":100,"num_ratings":4,"homepage":"https://wordpress.org/themes/exs/","description":"ExS theme is a fastest and smallest multipurpose Gutenberg compatible highly customizable theme without 3rd party dependencies. It is designed to have 100% Google Page and LightHouse speed. It has an extra small size of CSS (70kB) and JS (3kB) assets, 100% SEO optimised and valid code and it is 100% mobile friendly. It also has a WooCommerce and Easy Digital Downloads (EDD) plugin support so it will be perfect solution for your online store and e-commerce business. bbPress extended support makes ExS theme perfect for your forum. BuddyPress and Ultimate member support will help to create your social network with ExS theme. WP Job manager and Simple Job Board support will help you to create your job board. The Events Calendar advanced support will help you to create your events site. LearnPress plugin advanced support will help you to create a online courses and online school site. It has unlimited color options, headers and footers layouts, 15+ blog layouts, separate layouts for each category and many more super useful features that you can set up directly in your Customizer with live preview. ExS theme has builtin multiple page templates to perfectly work with any page builder such as Elementor, Beaver Builder, WPBackery, Brizy etc. ExS uses WordPress starter content feature so you can setup your pages immediately after WordPress and theme installation by simply going to Customizer and publish your changes. Theme Demo: https://exsthemewp.com/demo/.","requires":"5.5","requires_php":"5.6","wporg":true},{"name":"Sydney","slug":"sydney","version":"1.82","preview_url":"https://wp-themes.com/sydney/","author":{"user_nicename":"athemes","profile":"https://profiles.wordpress.org/athemes","avatar":"https://secure.gravatar.com/avatar/0fe6c4dee6e201e81783d8a0ee12d83b?s=96&d=monsterid&r=g","display_name":"athemes","author":"aThemes","author_url":"https://athemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/sydney/screenshot.png?ver=1.82","rating":98,"num_ratings":507,"homepage":"https://wordpress.org/themes/sydney/","description":"Sydney is a powerful business theme that provides a fast way for companies or freelancers to create an awesome online presence. As well as being fully compatible with Elementor, Sydney brings plenty of customization possibilities like access to all Google Fonts, full color control, layout control, logo upload, full screen slider, header image, sticky navigation and much more. Also, Sydney provides all the construction blocks you need to rapidly create an engaging front page. Looking for a quick start with Sydney? With just a few clicks, you can import one of our existing demos (https://athemes.com/sydney-demos/)","requires":false,"requires_php":"5.6","wporg":true},{"name":"Really Simple","slug":"really-simple","version":"1.0.7","preview_url":"https://wp-themes.com/really-simple/","author":{"user_nicename":"flauberthenriques","profile":"https://profiles.wordpress.org/flauberthenriques","avatar":"https://secure.gravatar.com/avatar/d524eb0811fa44be90481509b000c779?s=96&d=monsterid&r=g","display_name":"Flaubert Henriques","author":"Flaubert Henriques","author_url":"https://profiles.wordpress.org/flauberthenriques/"},"screenshot_url":"//ts.w.org/wp-content/themes/really-simple/screenshot.png?ver=1.0.7","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/really-simple/","description":"Really Simple is a theme for bloggers and writers who need a ultra light and fast theme. The theme focuses on simplicity and loading speed. Yes, Really Simple Theme is also fully AMP compatible. Check the readme.txt file and leave the sidebar perfect after WordPress 5.8 update.","requires":"5.3","requires_php":"7.0","wporg":true},{"name":"Artpop","slug":"artpop","version":"1.0.8","preview_url":"https://wp-themes.com/artpop/","author":{"user_nicename":"designlabthemes","profile":"https://profiles.wordpress.org/designlabthemes","avatar":"https://secure.gravatar.com/avatar/956873f77232371cb89d8a0d7a516354?s=96&d=monsterid&r=g","display_name":"designlabthemes","author":"Design Lab","author_url":"https://www.designlabthemes.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/artpop/screenshot.png?ver=1.0.8","rating":100,"num_ratings":1,"homepage":"https://wordpress.org/themes/artpop/","description":"Artpop is a beautiful Gutenberg-first WordPress theme, carefully designed to help you build your online brand. Unleash your creativity, Artpop takes care of the rest! Well documented and easy to use even for WordPress beginners, Artpop is perfect for a blog, personal portfolio, small business website, and WooCommerce storefront. Easily set your logo, change colors, and create awesome layouts to give your website a truly unique look.","requires":"4.7","requires_php":"5.6","wporg":true},{"name":"Michelle","slug":"michelle","version":"1.2.0","preview_url":"https://wp-themes.com/michelle/","author":{"user_nicename":"webmandesign","profile":"https://profiles.wordpress.org/webmandesign","avatar":"https://secure.gravatar.com/avatar/f4a334f9f5af61b2bd22fcaadb04dd06?s=96&d=monsterid&r=g","display_name":"WebMan Design | Oliver Juhas","author":"WebMan Design","author_url":"https://www.webmandesign.eu/"},"screenshot_url":"//ts.w.org/wp-content/themes/michelle/screenshot.png?ver=1.2.0","rating":100,"num_ratings":3,"homepage":"https://wordpress.org/themes/michelle/","description":"Michelle is accessibility ready WordPress theme for creating inclusive websites easily and with fun using block editor. Useful block patterns, block styles, templates and featured posts functionality allow you to build an eyecatching website in no time. Customize site footer and error 404 page content with block editor! The theme also works with Beaver Builder, Elementor, or any other page builder. It also supports theme builders! Michelle elevates your business, eCommerce, portfolio, or blog website. Check out the demo at https://themedemos.webmandesign.eu/michelle/ and documentation at https://webmandesign.github.io/docs/michelle/","requires":"5.5","requires_php":"7.0","wporg":true},{"name":"Miniva","slug":"miniva","version":"1.6.3","preview_url":"https://wp-themes.com/miniva/","author":{"user_nicename":"tajam","profile":"https://profiles.wordpress.org/tajam","avatar":"https://secure.gravatar.com/avatar/378d4e715829ccf6f1fbe6dfef6eb539?s=96&d=monsterid&r=g","display_name":"Tajam","author":"Tajam","author_url":"https://tajam.id/"},"screenshot_url":"//ts.w.org/wp-content/themes/miniva/screenshot.png?ver=1.6.3","rating":100,"num_ratings":6,"homepage":"https://wordpress.org/themes/miniva/","description":"A fast, lightweight, and mobile-friendly WordPress theme for bloggers. Miniva is built with simplicity, accessibility and performance in mind. The clean and minimal design helps readers focus on your content. It supports AMP and several Jetpack modules including featured content, infinite scroll, content options and social menu. See the theme demo at https://tajam.id/miniva-demo/","requires":"4.5","requires_php":"5.3","wporg":true},{"name":"Iknow","slug":"iknow","version":"1.2.6","preview_url":"https://wp-themes.com/iknow/","author":{"user_nicename":"wpcalc","profile":"https://profiles.wordpress.org/wpcalc","avatar":"https://secure.gravatar.com/avatar/64ca4933fab3d5e50383f0b514acd5f6?s=96&d=monsterid&r=g","display_name":"Wow-Company","author":"Wow-Company","author_url":"https://wow-company.com"},"screenshot_url":"//ts.w.org/wp-content/themes/iknow/screenshot.png?ver=1.2.6","rating":98,"num_ratings":9,"homepage":"https://wordpress.org/themes/iknow/","description":"Iknow WordPress Theme has a minimalistic, responsive and mobile-friendly design. Easy and fast theme. The theme is perfect for creating Knowledge Base, Helpdesk, Wiki and FAQ websites. Ability to set custom icons for each category and tag. Manage the display of categories on the main page of the site. The integrated post rating system VoteUp/VoteDown. Breadcrumbs for easy site navigation. Custom widget to display the current navigation in a category and in a separate post. You can view the appearance and features of the theme on the site https://wow-company.com/wp-theme-iknow/. Documentation https://wow-company.com/faq/category/wow-themes/iknow/","requires":false,"requires_php":"5.6","wporg":true},{"name":"Kadence","slug":"kadence","version":"1.1.6","preview_url":"https://wp-themes.com/kadence/","author":{"user_nicename":"britner","profile":"https://profiles.wordpress.org/britner","avatar":"https://secure.gravatar.com/avatar/3276133b8df529e6e1e58586ab1a309e?s=96&d=monsterid&r=g","display_name":"Ben Ritner - Kadence WP","author":"Kadence WP","author_url":"https://www.kadencewp.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/kadence/screenshot.png?ver=1.1.6","rating":98,"num_ratings":142,"homepage":"https://wordpress.org/themes/kadence/","description":"Kadence Theme is a lightweight yet full featured WordPress theme for creating beautiful fast loading and accessible websites, easier than ever. It features an easy to use drag and drop header and footer builder to build any type of header in minutes. It features a full library of gorgeous starter templates that are easy to modify with our intelligent global font and color controls. With extensive integration with the most popular 3rd party plugins, you can quickly build impressive ecommerce websites, course websites, business websites, and more.","requires":"5.0","requires_php":"7.0","wporg":true},{"name":"Izo","slug":"izo","version":"1.0.12","preview_url":"https://wp-themes.com/izo/","author":{"user_nicename":"elfwp","profile":"https://profiles.wordpress.org/elfwp","avatar":"https://secure.gravatar.com/avatar/1cfedf4555fea4d8fbba2947635586ea?s=96&d=monsterid&r=g","display_name":"elfwp","author":"elfWP","author_url":"https://elfwp.com"},"screenshot_url":"//ts.w.org/wp-content/themes/izo/screenshot.png?ver=1.0.12","rating":90,"num_ratings":2,"homepage":"https://wordpress.org/themes/izo/","description":"Izo a fast, lightweight, native AMP and fully customizable multipurpose WordPress theme. Features include compatibility with many popular plugins like Elementor and other page builders, WooCommerce, WPML, LifterLMS and more. There is also full support for the new WordPress block editor. Izo is fully responsive and our users can take advantage of the many customizer options to easily change styles. Also, if you're looking for a quick start, we're offering a bunch of free starter sites, ready to easily import.","requires":false,"requires_php":"5.6","wporg":true},{"name":"OceanWP","slug":"oceanwp","version":"3.0.7","preview_url":"https://wp-themes.com/oceanwp/","author":{"user_nicename":"oceanwp","profile":"https://profiles.wordpress.org/oceanwp","avatar":"https://secure.gravatar.com/avatar/05f8d3fe2ccb6479bac14e4d40b406dd?s=96&d=monsterid&r=g","display_name":"oceanwp","author":"Nick","author_url":"https://oceanwp.org/about-me/"},"screenshot_url":"//ts.w.org/wp-content/themes/oceanwp/screenshot.png?ver=3.0.7","rating":98,"num_ratings":4970,"homepage":"https://wordpress.org/themes/oceanwp/","description":"OceanWP is the perfect theme for your project. Lightweight and highly extendable, it will enable you to create almost any type of website such a blog, portfolio, business website and WooCommerce storefront with a beautiful & professional design. Very fast, responsive, RTL & translation ready, best SEO practices, unique WooCommerce features to increase conversion and much more. You can even edit the settings on tablet & mobile so your site looks good on every device. Work with the most popular page builders as Elementor, Beaver Builder, Brizy, Visual Composer, Divi, SiteOrigin, etc... Developers will love his extensible codebase making it a joy to customize and extend. Best friend of Elementor & WooCommerce. Looking for a Multi-Purpose theme? Look no further! Check the demos to realize that it's the only theme you will ever need: https://oceanwp.org/demos/","requires":"5.3","requires_php":"7.2","wporg":true},{"name":"Twenty Twenty-One","slug":"twentytwentyone","version":"1.4","preview_url":"https://wp-themes.com/twentytwentyone/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentytwentyone/screenshot.png?ver=1.4","rating":82,"num_ratings":35,"homepage":"https://wordpress.org/themes/twentytwentyone/","description":"Twenty Twenty-One is a blank canvas for your ideas and it makes the block editor your best brush. With new block patterns, which allow you to create a beautiful layout in a matter of seconds, this theme’s soft colors and eye-catching — yet timeless — design will let your work shine. Take it for a spin! See how Twenty Twenty-One elevates your portfolio, business website, or personal blog.","requires":"5.3","requires_php":"5.6","wporg":true},{"name":"Occasio","slug":"occasio","version":"","preview_url":"https://themezee.com/themes/occasio/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/12/occasio.jpg","rating":0,"num_ratings":0,"homepage":"https://themezee.com/themes/occasio/","description":"\n\n\n

A sleek and modern Blogging & Magazine theme, carefully designed for writers using the Gutenberg Block Editor.

\n","requires":"","requires_php":"","wporg":false},{"name":"Tortuga","slug":"tortuga","version":"2.3.4","preview_url":"https://wp-themes.com/tortuga/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/tortuga/screenshot.jpg?ver=2.3.4","rating":96,"num_ratings":19,"homepage":"https://wordpress.org/themes/tortuga/","description":"Tortuga is a highly flexible and adventurous WordPress theme for your pirate magazine or any news related website. It supports three different post layouts, two sidebar schemes and a Magazine Homepage template based on widgets. Other highlights of Tortuga are the beautiful post slider and header widgets area. Arrr!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Treville","slug":"treville","version":"2.1.4","preview_url":"https://wp-themes.com/treville/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/treville/screenshot.jpg?ver=2.1.4","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/treville/","description":"An elegant Blogging & Magazine WordPress Theme with subtle colors and great typography. Treville supports two navigation menus, advanced post settings and a post slider with fullscreen images!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Wellington","slug":"wellington","version":"2.1.4","preview_url":"https://wp-themes.com/wellington/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/wellington/screenshot.jpg?ver=2.1.4","rating":100,"num_ratings":12,"homepage":"https://wordpress.org/themes/wellington/","description":"Wellington is a clean and simple Magazine WordPress theme with beautiful typography and subtle colors. The theme includes two different post layouts, a featured post slider and thoughtful theme settings in the Customizer.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Poseidon","slug":"poseidon","version":"2.3.4","preview_url":"https://wp-themes.com/poseidon/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/poseidon/screenshot.jpg?ver=2.3.4","rating":96,"num_ratings":16,"homepage":"https://wordpress.org/themes/poseidon/","description":"Poseidon is an elegant designed WordPress theme featuring a splendid fullscreen image slideshow. The clean typography and spacious white layout makes it great to share your stories. You can use the theme as simple blog or easily create a news website with the widget-based Magazine Homepage template.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Napoli","slug":"napoli","version":"2.2.4","preview_url":"https://wp-themes.com/napoli/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/napoli/screenshot.jpg?ver=2.2.4","rating":100,"num_ratings":4,"homepage":"https://wordpress.org/themes/napoli/","description":"Napoli is a beautiful WordPress theme perfectly suited for a food magazine. It features a great featured post slider, smooth typography and a grid-layout for posts. Bon appetit!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Mercia","slug":"mercia","version":"1.9.7","preview_url":"https://wp-themes.com/mercia/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/mercia/screenshot.jpg?ver=1.9.7","rating":100,"num_ratings":1,"homepage":"https://wordpress.org/themes/mercia/","description":"Mercia is a flexible and versatile theme perfect for lifestyle, travel, or fashion magazines. It features a modern and minimalist design with great typropaphy. Of course it works on all screen sizes. With multiple blog layouts and powerful Magazine widgets, you can easily create a stunning and dynamic news website in just a few minutes.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Maxwell","slug":"maxwell","version":"2.3.4","preview_url":"https://wp-themes.com/maxwell/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/maxwell/screenshot.jpg?ver=2.3.4","rating":100,"num_ratings":7,"homepage":"https://wordpress.org/themes/maxwell/","description":"Maxwell is a minimalistic and elegant WordPress theme featuring an ultra clean magazine layout. With a beautiful typography, various post layouts and a gorgeous featured posts slideshow Maxwell truly helps you to stand out.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Harrison","slug":"harrison","version":"1.3.4","preview_url":"https://wp-themes.com/harrison/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/harrison/screenshot.jpg?ver=1.3.4","rating":80,"num_ratings":1,"homepage":"https://wordpress.org/themes/harrison/","description":"Harrison is a highly versatile WordPress Theme and was specially designed for use with the new WordPress Block Editor. The theme supports the latest Gutenberg features and provides different blog layouts and extensive post settings. The clean and elegant design is perfect to create all kinds of websites. You should really try it!","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Gridbox","slug":"gridbox","version":"2.3.4","preview_url":"https://wp-themes.com/gridbox/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/gridbox/screenshot.jpg?ver=2.3.4","rating":74,"num_ratings":6,"homepage":"https://wordpress.org/themes/gridbox/","description":"Gridbox is a clean and solid WordPress theme featuring a three-column grid-layout for posts. The theme works out of the box and does not require any complicated setup. It is perfectly suited for a simple magazine, blog or portfolio website.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Chronus","slug":"chronus","version":"2.0.5","preview_url":"https://wp-themes.com/chronus/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/chronus/screenshot.jpg?ver=2.0.5","rating":80,"num_ratings":5,"homepage":"https://wordpress.org/themes/chronus/","description":"Chronus is a fast and lightweight WordPress Theme created for magazines, news websites and personal blogs. The Featured Content section and flexible Magazine Widgets give you the ability to highlight your most important posts on the home page. The minimalistic and responsive design focuses on your content and looks great on any screen size.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Donovan","slug":"donovan","version":"1.8.4","preview_url":"https://wp-themes.com/donovan/","author":{"user_nicename":"themezee","profile":"https://profiles.wordpress.org/themezee","avatar":"https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g","display_name":"ThemeZee","author":"ThemeZee","author_url":"https://themezee.com"},"screenshot_url":"//ts.w.org/wp-content/themes/donovan/screenshot.jpg?ver=1.8.4","rating":96,"num_ratings":16,"homepage":"https://wordpress.org/themes/donovan/","description":"Donovan is a flexible, yet easy-to-use blogging theme with a clean and modern design. It features an elegant mobile-first design, three different blog layouts and extensive post settings. Donovan is perfect for your personal blog or for any content-focused website.","requires":"5.2","requires_php":"5.6","wporg":true},{"name":"Yosemite Lite","slug":"yosemite-lite","version":"1.2.1","preview_url":"https://wp-themes.com/yosemite-lite/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/yosemite-lite/screenshot.jpg?ver=1.2.1","rating":60,"num_ratings":2,"homepage":"https://wordpress.org/themes/yosemite-lite/","description":"Yosemite is a beautiful WordPress blog theme for personal blogs. Yosemite has a modern, clean and elegant look and lots of customization for bloggers. Built on the latest technology of WordPress, Yosemite is lightweight, fast and optimized for all mobile phones.","requires":false,"requires_php":false,"wporg":true},{"name":"Justread","slug":"justread","version":"1.3.0","preview_url":"https://wp-themes.com/justread/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/justread/screenshot.jpg?ver=1.3.0","rating":100,"num_ratings":5,"homepage":"https://wordpress.org/themes/justread/","description":"Justread is a clean and modern WordPress theme that focuses on reading experience. Justread has a grid layout with single column content. The theme uses system fonts and SVG for fast loading. Enjoy reading long content with comfortability.","requires":false,"requires_php":"5.6","wporg":true},{"name":"Floral Lite","slug":"floral-lite","version":"1.4","preview_url":"https://wp-themes.com/floral-lite/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/floral-lite/screenshot.jpg?ver=1.4","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/floral-lite/","description":"Floral is a beautiful WordPress blog theme for personal blogs. Floral has a modern, clean and elegant look and lots of customization for bloggers. Built on the latest technology of WordPress, Floral is lightweight, fast and optimized for all mobile phones.","requires":"4.5","requires_php":"5.6","wporg":true},{"name":"EightyDays Lite","slug":"eightydays-lite","version":"2.2.7","preview_url":"https://wp-themes.com/eightydays-lite/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"http://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/eightydays-lite/screenshot.png?ver=2.2.7","rating":90,"num_ratings":4,"homepage":"https://wordpress.org/themes/eightydays-lite/","description":"EightyDays is a beautiful WordPress travel theme for travel blogs or magazines. EightyDays has a modern, clean and elegant look and lots of customization for bloggers. Built on the latest technology of WordPress, EightyDays is lightweight, fast and optimized for all mobile phones.","requires":false,"requires_php":false,"wporg":true},{"name":"eStar","slug":"estar","version":"1.3.4","preview_url":"https://wp-themes.com/estar/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/estar/screenshot.png?ver=1.3.4","rating":100,"num_ratings":4,"homepage":"https://wordpress.org/themes/estar/","description":"eStar is a super fast, lightweight (less than 10KB on the front end), responsive and highly customizable WordPress theme suitable for blog, personal portfolio and business websites. It works perfectly with Gutenberg and all WordPress blocks. You can also pair it with any page builder plugin like Elementor, Beaver Builder, Visual Composer, SiteOrigin, Divi, Thrive Architect, Brizy and more. eStar is written from scratch with performance, extensibility, usability and SEO in mind. The theme follows best practices, well-coded and follows the latest web standards (HTML5, SVG, JavaScript). Some of the other features: microdata integration, widget areas, sidebar layouts, custom colors, custom Google fonts, translation ready. Looking for a perfect base theme? Look no further. eStar is fast, fully customizable WordPress theme that you can use for building any kind of website like business agencies, corporate, portfolio, education, university portal, consulting, church, restaurant, medical and so on. Learn more about the theme at https://gretathemes.com/wordpress-themes/estar/","requires":false,"requires_php":"5.6","wporg":true},{"name":"Stow","slug":"stow-2","version":"","preview_url":"https://wordpress.com/theme/stow","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/stow.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/stow","description":"\n\n\n

A bold and clean theme with lots of space for large images, it’s the ideal choice for creating an online presence for your business. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Shawburn","slug":"shawburn","version":"","preview_url":"https://wordpress.com/theme/shawburn","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/shawborn.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/shawburn","description":"\n\n\n

Shawburn is the ideal choice for creating an online presence for your business. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Rivington","slug":"rivington-2","version":"","preview_url":"https://wordpress.com/theme/rivington","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/rivington.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/rivington","description":"\n\n\n

Rivington was designed as a website template for realtors. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Redhill","slug":"redhill-2","version":"","preview_url":"https://wordpress.com/theme/redhill","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/redhill.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/redhill","description":"\n\n\n

Redhill is a simple theme with clean typography, created with entrepreneurs and small business owners in mind. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Morden","slug":"morden-2","version":"","preview_url":"https://wordpress.com/theme/morden","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/morden.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/morden","description":"\n\n\n

Morden is a functional and responsive multi-purpose theme that is the perfect solution for your business’s online presence. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Maywood","slug":"maywood-2","version":"","preview_url":"https://wordpress.com/theme/maywood","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/maywood.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/maywood","description":"\n\n\n

Modern, clean, sophisticated: Make your online presence as striking and stylish as your business with Maywood. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Mayland","slug":"mayland","version":"","preview_url":"https://wordpress.com/theme/mayland","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/mmayland.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/mayland","description":"\n\n\n

Mayland is a free WordPress theme. The clean, tasteful design highlights all your writing and photography projects. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Leven","slug":"leven-2","version":"","preview_url":"https://wordpress.com/theme/leven","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/leven.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/leven","description":"\n\n\n

Leven is a colorful, typography driven theme meant to grab the attention of potential customers and market or sell products to them. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Hever","slug":"hever-2","version":"","preview_url":"https://wordpress.com/theme/hever","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/hever.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/hever","description":"\n\n\n

Hever is a fun and friendly free WordPress theme that works particularly well for creative and crafty businesses. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Exford","slug":"exford-2","version":"","preview_url":"https://wordpress.com/theme/exford","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/exford.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/exford","description":"\n\n\n

A classic typography and clean design lend a sophisticated air to your website’s content. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Brompton","slug":"brompton-2","version":"","preview_url":"https://wordpress.com/theme/brompton","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/brompton.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/brompton","description":"\n\n\n

A a simple yet powerful website theme for small-business owners and entrepreneurs. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Barnsbury","slug":"barnsbury-2","version":"","preview_url":"https://wordpress.com/theme/barnsbury","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/Barnsbury.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/barnsbury","description":"\n\n\n

Barnsbury is an earthy, friendly theme made with farming and agriculture businesses in mind — but versatile enough for a personal site, too. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Balasana","slug":"balasana-2","version":"","preview_url":"https://wordpress.com/theme/balasana","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/Balasana.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/balasana","description":"\n\n\n

Balasana is a clean and minimalist business theme designed with health and wellness-focused sites in mind. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Alves","slug":"alves-2","version":"","preview_url":"https://wordpress.com/theme/alves","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/Alves.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/alves","description":"\n\n\n

Convincing design for your charity or organization’s online presence. Highlight your actions, causes and projects, Alves is versatile enough to be your personal site too. A Varia child theme.

\n","requires":"","requires_php":"","wporg":false},{"name":"Varia","slug":"varia-2","version":"","preview_url":"https://wordpress.com/theme/varia","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/08/varia.jpg","rating":0,"num_ratings":0,"homepage":"https://wordpress.com/theme/varia","description":"\n\n\n

A variable-based design system for WordPress sites built with Gutenberg. Parent theme of multiple AMP compatible themes.

\n","requires":"","requires_php":"","wporg":false},{"name":"Activation","slug":"activation","version":"1.2.2","preview_url":"https://wp-themes.com/activation/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/activation/screenshot.png?ver=1.2.2","rating":100,"num_ratings":1,"homepage":"https://wordpress.org/themes/activation/","description":"Activation is a Primer child theme with a colorful, fitness-focused design.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":false,"wporg":true},{"name":"Velux","slug":"velux","version":"1.1.3","preview_url":"https://wp-themes.com/velux/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/velux/screenshot.png?ver=1.1.3","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/velux/","description":"Velux is a Primer child theme with a clean, professional, and upscale design.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":"5.6.0","wporg":true},{"name":"Scribbles","slug":"scribbles","version":"1.1.2","preview_url":"https://wp-themes.com/scribbles/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/scribbles/screenshot.png?ver=1.1.2","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/scribbles/","description":"Scribbles is a Primer child theme with a playful and fun mood.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.1","requires_php":false,"wporg":true},{"name":"Ascension","slug":"ascension","version":"1.1.5","preview_url":"https://wp-themes.com/ascension/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/ascension/screenshot.png?ver=1.1.5","rating":0,"num_ratings":0,"homepage":"https://wordpress.org/themes/ascension/","description":"Ascension is a Primer child theme with a business-oriented design.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":"5.6.0","wporg":true},{"name":"Uptown Style","slug":"uptown-style","version":"1.1.3","preview_url":"https://wp-themes.com/uptown-style/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/uptown-style/screenshot.png?ver=1.1.3","rating":100,"num_ratings":3,"homepage":"https://wordpress.org/themes/uptown-style/","description":"Uptown Style is a Primer child theme with elegance and class.","template":"primer","parent":{"slug":"primer","name":"Primer","homepage":"https://wordpress.org/themes/primer/"},"requires":"4.4","requires_php":"5.6.0","wporg":true},{"name":"Go","slug":"go","version":"1.4.4","preview_url":"https://wp-themes.com/go/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":"GoDaddy","author_url":"https://www.godaddy.com"},"screenshot_url":"//ts.w.org/wp-content/themes/go/screenshot.png?ver=1.4.4","rating":94,"num_ratings":14,"homepage":"https://wordpress.org/themes/go/","description":"Go is an innovative, Gutenberg-first WordPress theme, hyper-focused on empowering makers to build beautifully rich websites with WordPress.","requires":false,"requires_php":"5.6","wporg":true},{"name":"Navigation Pro","slug":"navigation-pro","version":"","preview_url":"https://my.studiopress.com/themes/navigation/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/02/navigationPro.jpg","rating":0,"num_ratings":0,"homepage":"https://my.studiopress.com/themes/navigation/","description":"\n\n\n

A Genesis framework theme that cuts through the haze with bright colors, bold images and versatile layouts to steer your site to success.

\n","requires":"","requires_php":"","wporg":false},{"name":"Memory","slug":"memory","version":"2.0.1","preview_url":"https://wp-themes.com/memory/","author":{"user_nicename":"gretathemes","profile":"https://profiles.wordpress.org/gretathemes","avatar":"https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g","display_name":"GretaThemes","author":false,"author_url":"https://gretathemes.com"},"screenshot_url":"//ts.w.org/wp-content/themes/memory/screenshot.png?ver=2.0.1","rating":60,"num_ratings":1,"homepage":"https://wordpress.org/themes/memory/","description":"Clean and beautiful personal blog theme.","requires":"4.5","requires_php":"5.2","wporg":true},{"name":"Sacha","slug":"sacha","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/sacha9.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","description":"\n\n\n

Sacha is a Newspack child theme. You’ll find the latest version on the Newspack release page.

\n","requires":"","requires_php":"","wporg":false},{"name":"Scott","slug":"scott-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/scott.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","description":"\n\n\n

Scott is a Newspack child theme. You’ll find the latest version on the Newspack release page.

\n","requires":"","requires_php":"","wporg":false},{"name":"Katharine","slug":"katharine-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/katharine.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","description":"\n\n\n

Katharine is a Newspack child theme. You’ll find the latest version on the Newspack release page.

\n","requires":"","requires_php":"","wporg":false},{"name":"Joseph","slug":"joseph-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/joseph-1.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","description":"\n\n\n

Joseph is a Newspack child theme. You’ll find the latest version on the Newspack release page.

\n","requires":"","requires_php":"","wporg":false},{"name":"Nelson","slug":"nelson-2","version":"","preview_url":"https://github.com/Automattic/newspack-theme/releases","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2020/01/nelson.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme/releases","description":"\n\n\n

Nelson is a Newspack child theme. You’ll find the latest version on the Newspack release page.

\n","requires":"","requires_php":"","wporg":false},{"name":"Newspack","slug":"newspack","version":"","preview_url":"https://github.com/Automattic/newspack-theme","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2019/11/newspack.jpg","rating":0,"num_ratings":0,"homepage":"https://github.com/Automattic/newspack-theme","description":"\n\n\n

The Newspack theme is a forward-looking news theme designed and developed to be highly customizable with the WordPress block editor.

\n","requires":"","requires_php":"","wporg":false},{"name":"Twenty Twenty","slug":"twentytwenty","version":"1.8","preview_url":"https://wp-themes.com/twentytwenty/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentytwenty/screenshot.png?ver=1.8","rating":88,"num_ratings":61,"homepage":"https://wordpress.org/themes/twentytwenty/","description":"Our default theme for 2020 is designed to take full advantage of the flexibility of the block editor. Organizations and businesses have the ability to create dynamic landing pages with endless layouts using the group and column blocks. The centered content column and fine-tuned typography also makes it perfect for traditional blogs. Complete editor styles give you a good idea of what your content will look like, even before you publish. You can give your site a personal touch by changing the background colors and the accent color in the Customizer. The colors of all elements on your site are automatically calculated based on the colors you pick, ensuring a high, accessible color contrast for your visitors.","requires":"4.7","requires_php":"5.2.4","wporg":true},{"name":"Primer","slug":"primer","version":"1.8.9","preview_url":"https://wp-themes.com/primer/","author":{"user_nicename":"godaddy","profile":"https://profiles.wordpress.org/godaddy","avatar":"https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g","display_name":"GoDaddy","author":false,"author_url":"https://www.godaddy.com/"},"screenshot_url":"//ts.w.org/wp-content/themes/primer/screenshot.png?ver=1.8.9","rating":90,"num_ratings":15,"homepage":"https://wordpress.org/themes/primer/","description":"Primer is a powerful theme that brings clarity to your content in a fresh design.","requires":false,"requires_php":false,"wporg":true},{"name":"Essence Pro","slug":"essence-pro-theme","version":"","preview_url":"https://my.studiopress.com/themes/essence/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2019/07/cropped-Essence-Pro.png","rating":0,"num_ratings":0,"homepage":"https://my.studiopress.com/themes/essence/","description":"\n\n\n

Essence Pro is a beautiful, clutter-free theme for sites in the health, wellness, and lifestyle niches.

\n","requires":"","requires_php":"","wporg":false},{"name":"Genesis Framework","slug":"genesis-theme-framework","version":"","preview_url":"https://my.studiopress.com/themes/genesis/","author":{"user_nicename":"","profile":"","avatar":"","display_name":"","author":"","author_url":""},"screenshot_url":"https://amp-wp.org/wp-content/uploads/2019/07/cropped-Genesis.png","rating":0,"num_ratings":0,"homepage":"https://my.studiopress.com/themes/genesis/","description":"\n\n\n

The Genesis Framework empowers webmasters to quickly and easily build websites with WordPress.

\n","requires":"","requires_php":"","wporg":false},{"name":"Twenty Fourteen","slug":"twentyfourteen","version":"3.2","preview_url":"https://wp-themes.com/twentyfourteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyfourteen/screenshot.png?ver=3.2","rating":88,"num_ratings":93,"homepage":"https://wordpress.org/themes/twentyfourteen/","description":"In 2014, our default theme lets you create a responsive magazine website with a sleek, modern design. Feature your favorite homepage content in either a grid or a slider. Use the three widget areas to customize your website, and change your content's layout with a full-width page template and a contributor page to show off your authors. Creating a magazine website with WordPress has never been easier.","requires":false,"requires_php":"5.2.4","wporg":true},{"name":"Twenty Thirteen","slug":"twentythirteen","version":"3.4","preview_url":"https://wp-themes.com/twentythirteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentythirteen/screenshot.png?ver=3.4","rating":82,"num_ratings":62,"homepage":"https://wordpress.org/themes/twentythirteen/","description":"The 2013 theme for WordPress takes us back to the blog, featuring a full range of post formats, each displayed beautifully in their own unique way. Design details abound, starting with a vibrant color scheme and matching header images, beautiful typography and icons, and a flexible layout that looks great on any device, big or small.","requires":"3.6","requires_php":"5.2.4","wporg":true},{"name":"Twenty Eleven","slug":"twentyeleven","version":"3.9","preview_url":"https://wp-themes.com/twentyeleven/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyeleven/screenshot.png?ver=3.9","rating":92,"num_ratings":49,"homepage":"https://wordpress.org/themes/twentyeleven/","description":"The 2011 theme for WordPress is sophisticated, lightweight, and adaptable. Make it yours with a custom menu, header image, and background -- then go further with available theme options for light or dark color scheme, custom link colors, and three layout choices. Twenty Eleven comes equipped with a Showcase page template that transforms your front page into a showcase to show off your best content, widget support galore (sidebar, three footer areas, and a Showcase page widget area), and a custom \"Ephemera\" widget to display your Aside, Link, Quote, or Status posts. Included are styles for print and for the admin editor, support for featured images (as custom header images on posts and pages and as large images on featured \"sticky\" posts), and special styles for six different post formats.","requires":false,"requires_php":"5.2.4","wporg":true},{"name":"Twenty Ten","slug":"twentyten","version":"3.5","preview_url":"https://wp-themes.com/twentyten/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyten/screenshot.png?ver=3.5","rating":94,"num_ratings":50,"homepage":"https://wordpress.org/themes/twentyten/","description":"The 2010 theme for WordPress is stylish, customizable, simple, and readable -- make it yours with a custom menu, header image, and background. Twenty Ten supports six widgetized areas (two in the sidebar, four in the footer) and featured images (thumbnails for gallery posts and custom header images for posts and pages). It includes stylesheets for print and the admin Visual Editor, special styles for posts in the \"Asides\" and \"Gallery\" categories, and has an optional one-column page template that removes the sidebar.","requires":"3.0","requires_php":"5.2.4","wporg":true},{"name":"Zakra","slug":"zakra","version":"2.0.5","preview_url":"https://wp-themes.com/zakra/","author":{"user_nicename":"themegrill","profile":"https://profiles.wordpress.org/themegrill","avatar":"https://secure.gravatar.com/avatar/fa3cda768036cc3983458ed23394a43d?s=96&d=monsterid&r=g","display_name":"ThemeGrill","author":"ThemeGrill","author_url":"https://themegrill.com"},"screenshot_url":"//ts.w.org/wp-content/themes/zakra/screenshot.jpg?ver=2.0.5","rating":100,"num_ratings":482,"homepage":"https://wordpress.org/themes/zakra/","description":"Zakra is flexible, fast, lightweight and modern multipurpose theme that comes with many starter free sites (currently 10+ free starter sites and more will be added later) that you can use to make your site beautiful and professional. Check all the starter sites at https://zakratheme.com/demos. Suitable for personal blog, portfolio, WooCommerce stores, business websites and niche-based sites (like Cafe, Spa, Charity, Yoga, Wedding, Dentist, Education etc) as well. Works with Elementor plus other major page builders so you can create any layout you want. The theme is responsive, Gutenberg compatible, SEO friendly, translation ready and major WordPress plugins compatible.","requires":false,"requires_php":"5.6","wporg":true},{"name":"Neve","slug":"neve","version":"3.0.6","preview_url":"https://wp-themes.com/neve/","author":{"user_nicename":"themeisle","profile":"https://profiles.wordpress.org/themeisle","avatar":"https://secure.gravatar.com/avatar/a0ec097eaf5f30933eb00c1175d4bd55?s=96&d=monsterid&r=g","display_name":"Themeisle","author":"ThemeIsle","author_url":"https://themeisle.com"},"screenshot_url":"//ts.w.org/wp-content/themes/neve/screenshot.png?ver=3.0.6","rating":96,"num_ratings":830,"homepage":"https://wordpress.org/themes/neve/","description":"Neve is a super fast, easily customizable, multi-purpose theme. It’s perfect for blogs, small business, startups, agencies, firms, e-commerce shops (WooCommerce storefront) as well as personal portfolio sites and most types of projects. A fully AMP optimized and responsive theme, Neve will load in mere seconds and adapt perfectly on any viewing device. While it is lightweight and has a minimalist design, the theme is highly extendable, it has a highly SEO optimized code, resulting in top rankings in Google search results. Neve works perfectly with Gutenberg and the most popular page builders (Elementor, Brizy, Beaver Builder, Visual Composer, SiteOrigin, Divi). Neve is also WooCommerce ready, responsive, RTL & translation ready. Look no further. Neve is the perfect theme for you!","requires":"5.4","requires_php":"7.0","wporg":true},{"name":"Astra","slug":"astra","version":"3.7.3","preview_url":"https://wp-themes.com/astra/","author":{"user_nicename":"brainstormforce","profile":"https://profiles.wordpress.org/brainstormforce","avatar":"https://secure.gravatar.com/avatar/9f4255d653745eaa037105cd5eab2295?s=96&d=monsterid&r=g","display_name":"Brainstorm Force","author":"Brainstorm Force","author_url":"https://wpastra.com/about/"},"screenshot_url":"//ts.w.org/wp-content/themes/astra/screenshot.jpg?ver=3.7.3","rating":98,"num_ratings":5000,"homepage":"https://wordpress.org/themes/astra/","description":"Astra is fast, fully customizable & beautiful WordPress theme suitable for blog, personal portfolio, business website and WooCommerce storefront. It is very lightweight (less than 50KB on frontend) and offers unparalleled speed. Built with SEO in mind, Astra comes with Schema.org code integrated and is Native AMP ready so search engines will love your site. It offers special features and templates so it works perfectly with all page builders like Elementor, Beaver Builder, Visual Composer, SiteOrigin, Divi, etc. Some of the other features: # WooCommerce Ready # Responsive # RTL & Translation Ready # Extendible with premium addons # Regularly updated # Designed, Developed, Maintained & Supported by Brainstorm Force. Looking for a perfect base theme? Look no further. Astra is fast, fully customizable and WooCommerce ready theme that you can use for building any kind of website!","requires":"5.3","requires_php":"5.3","wporg":true},{"name":"Twenty Twelve","slug":"twentytwelve","version":"3.5","preview_url":"https://wp-themes.com/twentytwelve/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentytwelve/screenshot.png?ver=3.5","rating":92,"num_ratings":155,"homepage":"https://wordpress.org/themes/twentytwelve/","description":"The 2012 theme for WordPress is a fully responsive theme that looks great on any device. Features include a front page template with its own widgets, an optional display font, styling for post formats on both index and single views, and an optional no-sidebar page template. Make it yours with a custom menu, header image, and background.","requires":"3.5","requires_php":"5.2.4","wporg":true},{"name":"Twenty Nineteen","slug":"twentynineteen","version":"2.1","preview_url":"https://wp-themes.com/twentynineteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentynineteen/screenshot.png?ver=2.1","rating":74,"num_ratings":59,"homepage":"https://wordpress.org/themes/twentynineteen/","description":"Our 2019 default theme is designed to show off the power of the block editor. It features custom styles for all the default blocks, and is built so that what you see in the editor looks like what you'll see on your website. Twenty Nineteen is designed to be adaptable to a wide range of websites, whether you’re running a photo blog, launching a new business, or supporting a non-profit. Featuring ample whitespace and modern sans-serif headlines paired with classic serif body text, it's built to be beautiful on all screen sizes.","requires":"4.9.6","requires_php":"5.2.4","wporg":true},{"name":"Twenty Seventeen","slug":"twentyseventeen","version":"2.8","preview_url":"https://wp-themes.com/twentyseventeen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyseventeen/screenshot.png?ver=2.8","rating":88,"num_ratings":114,"homepage":"https://wordpress.org/themes/twentyseventeen/","description":"Twenty Seventeen brings your site to life with header video and immersive featured images. With a focus on business sites, it features multiple sections on the front page as well as widgets, navigation and social menus, a logo, and more. Personalize its asymmetrical grid with a custom color scheme and showcase your multimedia content with post formats. Our default theme for 2017 works great in many languages, for any abilities, and on any device.","requires":"4.7","requires_php":"5.2.4","wporg":true},{"name":"Twenty Sixteen","slug":"twentysixteen","version":"2.5","preview_url":"https://wp-themes.com/twentysixteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentysixteen/screenshot.png?ver=2.5","rating":82,"num_ratings":79,"homepage":"https://wordpress.org/themes/twentysixteen/","description":"Twenty Sixteen is a modernized take on an ever-popular WordPress layout — the horizontal masthead with an optional right sidebar that works perfectly for blogs and websites. It has custom color options with beautiful default color schemes, a harmonious fluid grid using a mobile-first approach, and impeccable polish in every detail. Twenty Sixteen will make your WordPress look beautiful everywhere.","requires":"4.4","requires_php":"5.2.4","wporg":true},{"name":"Twenty Fifteen","slug":"twentyfifteen","version":"3.0","preview_url":"https://wp-themes.com/twentyfifteen/","author":{"user_nicename":"wordpressdotorg","profile":"https://profiles.wordpress.org/wordpressdotorg","avatar":"https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g","display_name":"WordPress.org","author":"the WordPress team","author_url":"https://wordpress.org/"},"screenshot_url":"//ts.w.org/wp-content/themes/twentyfifteen/screenshot.png?ver=3.0","rating":88,"num_ratings":50,"homepage":"https://wordpress.org/themes/twentyfifteen/","description":"Our 2015 default theme is clean, blog-focused, and designed for clarity. Twenty Fifteen's simple, straightforward typography is readable on a wide variety of screen sizes, and suitable for multiple languages. We designed it using a mobile-first approach, meaning your content takes center-stage, regardless of whether your visitors arrive by smartphone, tablet, laptop, or desktop computer.","requires":false,"requires_php":"5.2.4","wporg":true}] \ No newline at end of file diff --git a/src/Admin/AMPPlugins.php b/src/Admin/AMPPlugins.php index 5bfee156736..22cf3436573 100644 --- a/src/Admin/AMPPlugins.php +++ b/src/Admin/AMPPlugins.php @@ -58,26 +58,20 @@ public static function is_needed() { } /** - * Fetch AMP plugin data. + * Get list of AMP plugins. * - * @return array + * @return array List of AMP plugins. */ public function get_plugins() { if ( ! is_array( $this->plugins ) ) { - $file_path = AMP__DIR__ . '/data/plugins.json'; + $file_path = AMP__DIR__ . '/includes/amp-plugins.php'; - if ( ! file_exists( $file_path ) ) { - return []; + if ( file_exists( $file_path ) ) { + $this->plugins = include $file_path; } - $json_data = file_get_contents( $file_path ); - $this->plugins = json_decode( $json_data, true ); - $json_last_error = json_last_error(); - - if ( JSON_ERROR_NONE !== $json_last_error ) { - $this->plugins = []; - } + $this->plugins = ( ! empty( $this->plugins ) && is_array( $this->plugins ) ) ? $this->plugins : []; } return $this->plugins; diff --git a/src/Admin/AMPThemes.php b/src/Admin/AMPThemes.php index 1919db6061d..dfecccd0773 100644 --- a/src/Admin/AMPThemes.php +++ b/src/Admin/AMPThemes.php @@ -34,26 +34,20 @@ class AMPThemes implements Service, Registerable { protected $themes = false; /** - * Fetch AMP themes data. + * Get list of AMP themes. * - * @return array + * @return array List of AMP themes. */ public function get_themes() { if ( ! is_array( $this->themes ) ) { - $file_path = AMP__DIR__ . '/data/themes.json'; + $file_path = AMP__DIR__ . '/includes/amp-themes.php'; - if ( ! file_exists( $file_path ) ) { - return []; + if ( file_exists( $file_path ) ) { + $this->themes = include $file_path; } - $json_data = file_get_contents( $file_path ); - $this->themes = json_decode( $json_data, true ); - $json_last_error = json_last_error(); - - if ( JSON_ERROR_NONE !== $json_last_error ) { - $this->themes = []; - } + $this->themes = ( ! empty( $this->themes ) && is_array( $this->themes ) ) ? $this->themes : []; } return $this->themes; From b12e57267d294784288718b1e0608c0d7c9a6aad Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Tue, 12 Oct 2021 18:02:31 +0530 Subject: [PATCH 035/105] Update function docs --- assets/css/src/amp-admin.css | 1 - assets/src/admin/amp-plugin-install.js | 4 ++-- src/Admin/AMPThemes.php | 3 ++- tests/php/src/Admin/AMPThemesTest.php | 3 ++- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/assets/css/src/amp-admin.css b/assets/css/src/amp-admin.css index eb51f6ca8fe..b8b14d90b46 100644 --- a/assets/css/src/amp-admin.css +++ b/assets/css/src/amp-admin.css @@ -6,7 +6,6 @@ border-top: 2px solid #dcdcde; color: #3c434a; position: relative; - } .amp-logo-icon { diff --git a/assets/src/admin/amp-plugin-install.js b/assets/src/admin/amp-plugin-install.js index 42295e4c279..c9bf87bd942 100644 --- a/assets/src/admin/amp-plugin-install.js +++ b/assets/src/admin/amp-plugin-install.js @@ -22,7 +22,7 @@ const ampPluginInstall = { }, /** - * Add AMP compatible message in AMP compatible plugin card after search result comes in. + * Add message for AMP Compatibility in AMP-compatible plugins card after search result comes in. */ addAMPMessageInSearchResult() { const pluginInstallSearch = document.querySelector( '.plugin-install-php .wp-filter-search' ); @@ -42,7 +42,7 @@ const ampPluginInstall = { }, /** - * Add AMP compatible message in AMP compatible plugin card. + * Add message for AMP Compatibility in AMP-compatible plugins card. */ addAmpMessage() { // eslint-disable-next-line guard-for-in diff --git a/src/Admin/AMPThemes.php b/src/Admin/AMPThemes.php index dfecccd0773..24e7a28eafb 100644 --- a/src/Admin/AMPThemes.php +++ b/src/Admin/AMPThemes.php @@ -9,6 +9,7 @@ use AmpProject\AmpWP\Infrastructure\Registerable; use AmpProject\AmpWP\Infrastructure\Service; +use WP_Screen; use stdClass; /** @@ -76,7 +77,7 @@ public function register_hooks() { $screen = get_current_screen(); - if ( $screen instanceof \WP_Screen && in_array( $screen->id, [ 'themes', 'theme-install' ], true ) ) { + if ( $screen instanceof WP_Screen && in_array( $screen->id, [ 'themes', 'theme-install' ], true ) ) { add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_scripts' ] ); } } diff --git a/tests/php/src/Admin/AMPThemesTest.php b/tests/php/src/Admin/AMPThemesTest.php index 7e5d1187cea..ad511b06977 100644 --- a/tests/php/src/Admin/AMPThemesTest.php +++ b/tests/php/src/Admin/AMPThemesTest.php @@ -9,6 +9,7 @@ use AmpProject\AmpWP\Admin\AMPThemes; use AmpProject\AmpWP\Tests\TestCase; +use stdClass; /** * Tests for AMPThemes. @@ -79,7 +80,7 @@ public function test_enqueue_scripts() { */ public function test_themes_api() { $this->instance->register(); - $response = new \stdClass(); + $response = new stdClass(); // Test 1: Normal request. $response = $this->instance->themes_api( $response, 'query_themes', [ 'per_page' => 36 ] ); From f386e29f4d863e6097442db6684cee2a0ffa3145 Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Tue, 12 Oct 2021 19:37:25 +0530 Subject: [PATCH 036/105] Omit the empty field for the plugin/theme data, and fill it in when needed --- bin/update-extension-json.js | 37 --------------- src/Admin/AMPPlugins.php | 62 ++++++++++++++++++++++++++ src/Admin/AMPThemes.php | 44 ++++++++++++++++++ tests/php/src/Admin/AMPPluginsTest.php | 61 +++++++++++++++++++++++++ tests/php/src/Admin/AMPThemesTest.php | 40 +++++++++++++++++ 5 files changed, 207 insertions(+), 37 deletions(-) diff --git a/bin/update-extension-json.js b/bin/update-extension-json.js index 0baf9db537d..78b32b5ee77 100644 --- a/bin/update-extension-json.js +++ b/bin/update-extension-json.js @@ -232,23 +232,10 @@ class UpdateExtensionJson { return { name: item.title.rendered, slug: item.slug, - version: '', preview_url: item?.meta?.ampps_ecosystem_url, - author: { - user_nicename: '', - profile: '', - avatar: '', - display_name: '', - author: '', - author_url: '', - }, screenshot_url: attachment.source_url, - rating: 0, - num_ratings: 0, homepage: item?.meta?.ampps_ecosystem_url, description: item.content.rendered, - requires: '', - requires_php: '', wporg: false, }; } @@ -293,33 +280,9 @@ class UpdateExtensionJson { return { name: item.title.rendered, slug: item.slug, - version: '', - author: '', - author_profile: '', - requires: '', - tested: '', - requires_php: '', - rating: 0, - ratings: { - 1: 0, - 2: 0, - 3: 0, - 4: 0, - 5: 0, - }, - num_ratings: 0, - support_threads: 0, - support_threads_resolved: 0, - active_installs: 0, - downloaded: 0, - last_updated: '', - added: '', homepage: item?.meta?.ampps_ecosystem_url, short_description: item.excerpt.rendered, description: item.content.rendered, - download_link: '', - tags: {}, - donate_link: '', icons: { '1x': attachment.media_details.sizes[ 'amp-wp-org-thumbnail' ].source_url, '2x': attachment.media_details.sizes[ 'amp-wp-org-medium' ].source_url, diff --git a/src/Admin/AMPPlugins.php b/src/Admin/AMPPlugins.php index 22cf3436573..398fe88574e 100644 --- a/src/Admin/AMPPlugins.php +++ b/src/Admin/AMPPlugins.php @@ -72,11 +72,73 @@ public function get_plugins() { } $this->plugins = ( ! empty( $this->plugins ) && is_array( $this->plugins ) ) ? $this->plugins : []; + $this->plugins = array_map( + static function ( $plugin ) { + return self::normalize_plugin_data( $plugin ); + }, + $this->plugins + ); } return $this->plugins; } + /** + * Normalize plugin data. + * + * @param array $plugin Plugin data. + * + * @return array Normalized plugin data. + */ + public static function normalize_plugin_data( $plugin = [] ) { + + $default = [ + 'name' => '', + 'slug' => '', + 'version' => '', + 'author' => '', + 'author_profile' => '', + 'requires' => '', + 'tested' => '', + 'requires_php' => '', + 'rating' => 0, + 'ratings' => [ + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 0, + ], + 'num_ratings' => 0, + 'support_threads' => 0, + 'support_threads_resolved' => 0, + 'active_installs' => 0, + 'downloaded' => 0, + 'last_updated' => '', + 'added' => '', + 'homepage' => '', + 'short_description' => '', + 'description' => '', + 'download_link' => '', + 'tags' => [], + 'donate_link' => '', + 'icons' => [ + '1x' => '', + '2x' => '', + 'svg' => '', + ], + 'wporg' => false, + ]; + + $plugin['ratings'] = ( ! empty( $plugin['ratings'] ) && is_array( $plugin['ratings'] ) ) ? $plugin['ratings'] : []; + $plugin['ratings'] = $plugin['ratings'] + $default['ratings']; + + $plugin['icons'] = ( ! empty( $plugin['icons'] ) && is_array( $plugin['icons'] ) ) ? $plugin['icons'] : []; + $plugin['icons'] = wp_parse_args( $plugin['icons'], $default['icons'] ); + + return wp_parse_args( $plugin, $default ); + } + /** * Adds hooks. * diff --git a/src/Admin/AMPThemes.php b/src/Admin/AMPThemes.php index 24e7a28eafb..76c101a6538 100644 --- a/src/Admin/AMPThemes.php +++ b/src/Admin/AMPThemes.php @@ -49,11 +49,55 @@ public function get_themes() { } $this->themes = ( ! empty( $this->themes ) && is_array( $this->themes ) ) ? $this->themes : []; + $this->themes = array_map( + static function ( $theme ) { + + return self::normalize_theme_data( $theme ); + }, + $this->themes + ); } return $this->themes; } + /** + * Normalize theme data. + * + * @param array $theme Theme data. + * + * @return array Normalized theme data. + */ + public static function normalize_theme_data( $theme = [] ) { + + $default = [ + 'name' => '', + 'slug' => '', + 'version' => '', + 'preview_url' => '', + 'author' => [ + 'user_nicename' => '', + 'profile' => '', + 'avatar' => '', + 'display_name' => '', + 'author' => '', + 'author_url' => '', + ], + 'screenshot_url' => '', + 'rating' => 0, + 'num_ratings' => 0, + 'homepage' => '', + 'description' => '', + 'requires' => '', + 'requires_php' => '', + ]; + + $theme['author'] = ( ! empty( $theme['author'] ) && is_array( $theme['author'] ) ) ? $theme['author'] : []; + $theme['author'] = wp_parse_args( $theme['author'], $default['author'] ); + + return wp_parse_args( $theme, $default ); + } + /** * Adds hooks. * diff --git a/tests/php/src/Admin/AMPPluginsTest.php b/tests/php/src/Admin/AMPPluginsTest.php index c5dc2859f1a..6c84fdc97ae 100644 --- a/tests/php/src/Admin/AMPPluginsTest.php +++ b/tests/php/src/Admin/AMPPluginsTest.php @@ -41,6 +41,67 @@ public function setUp() { $this->instance = new AMPPlugins(); } + /** + * @covers ::normalize_plugin_data() + */ + public function test_normalize_plugin_data() { + + $input = [ + 'name' => 'Plugin Name', + 'slug' => 'plugin-name', + 'ratings' => [ + '1' => 10, + 2 => 45, + ], + 'icons' => [ + '1x' => 'http://sample.test/plugin-icon.png', + ], + ]; + + $expected = [ + 'name' => 'Plugin Name', + 'slug' => 'plugin-name', + 'version' => '', + 'author' => '', + 'author_profile' => '', + 'requires' => '', + 'tested' => '', + 'requires_php' => '', + 'rating' => 0, + 'ratings' => [ + 1 => 10, + 2 => 45, + 3 => 0, + 4 => 0, + 5 => 0, + ], + 'num_ratings' => 0, + 'support_threads' => 0, + 'support_threads_resolved' => 0, + 'active_installs' => 0, + 'downloaded' => 0, + 'last_updated' => '', + 'added' => '', + 'homepage' => '', + 'short_description' => '', + 'description' => '', + 'download_link' => '', + 'tags' => [], + 'donate_link' => '', + 'icons' => [ + '1x' => 'http://sample.test/plugin-icon.png', + '2x' => '', + 'svg' => '', + ], + 'wporg' => false, + ]; + + $this->assertEquals( + $expected, + AMPPlugins::normalize_plugin_data( $input ) + ); + } + /** * @covers ::get_registration_action() */ diff --git a/tests/php/src/Admin/AMPThemesTest.php b/tests/php/src/Admin/AMPThemesTest.php index ad511b06977..d9253f3f068 100644 --- a/tests/php/src/Admin/AMPThemesTest.php +++ b/tests/php/src/Admin/AMPThemesTest.php @@ -40,6 +40,46 @@ public function setUp() { $this->instance = new AMPThemes(); } + /** + * @covers ::normalize_theme_data() + */ + public function test_normalize_theme_data() { + + $input = [ + 'name' => 'sample theme', + 'author' => [ + 'user_nicename' => 'author_nicename', + ], + ]; + + $expected = [ + 'name' => 'sample theme', + 'slug' => '', + 'version' => '', + 'preview_url' => '', + 'author' => [ + 'user_nicename' => 'author_nicename', + 'profile' => '', + 'avatar' => '', + 'display_name' => '', + 'author' => '', + 'author_url' => '', + ], + 'screenshot_url' => '', + 'rating' => 0, + 'num_ratings' => 0, + 'homepage' => '', + 'description' => '', + 'requires' => '', + 'requires_php' => '', + ]; + + $this->assertEquals( + $expected, + AMPThemes::normalize_theme_data( $input ) + ); + } + /** * @covers ::register() */ From 04ac4296bbe5185d5f0c9e72305d838107322f94 Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Tue, 12 Oct 2021 20:05:33 +0530 Subject: [PATCH 037/105] Fix unit test cases --- tests/php/src/Admin/AMPPluginsTest.php | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tests/php/src/Admin/AMPPluginsTest.php b/tests/php/src/Admin/AMPPluginsTest.php index 6c84fdc97ae..24af3c0aef0 100644 --- a/tests/php/src/Admin/AMPPluginsTest.php +++ b/tests/php/src/Admin/AMPPluginsTest.php @@ -7,6 +7,7 @@ namespace AmpProject\AmpWP\Tests\Admin; +use AmpProject\AmpWP\Tests\Helpers\PrivateAccess; use AmpProject\AmpWP\Admin\AMPPlugins; use AmpProject\AmpWP\Tests\TestCase; use stdClass; @@ -18,6 +19,8 @@ */ class AMPPluginsTest extends TestCase { + use PrivateAccess; + /** * Instance of AMPPlugins * @@ -278,6 +281,16 @@ public function test_plugin_row_meta() { $output = $this->instance->plugin_row_meta( $plugin_meta, '', [ 'slug' => 'example' ] ); $this->assertEquals( $plugin_meta, $output ); + $this->set_private_property( + $this->instance, + 'plugins', + [ + [ + 'name' => 'akismet', + 'slug' => 'akismet', + ], + ] + ); // Test 2: None AMP plugin. $output = $this->instance->plugin_row_meta( $plugin_meta, '', [ 'slug' => 'akismet' ] ); @@ -286,5 +299,6 @@ public function test_plugin_row_meta() { $output ); + $this->set_private_property( $this->instance, 'plugins', [] ); } } From 097ac8dfeaae618fc83db8a9f56b6bdbaa286586 Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Tue, 12 Oct 2021 20:45:36 +0530 Subject: [PATCH 038/105] Rename the command and file that update AMP extension files --- bin/{update-extension-json.js => update-extension-files.js} | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) rename bin/{update-extension-json.js => update-extension-files.js} (99%) diff --git a/bin/update-extension-json.js b/bin/update-extension-files.js similarity index 99% rename from bin/update-extension-json.js rename to bin/update-extension-files.js index 78b32b5ee77..1fc4e7e1022 100644 --- a/bin/update-extension-json.js +++ b/bin/update-extension-files.js @@ -9,7 +9,7 @@ const axios = require( 'axios' ); */ const filesystem = require( './file-system' ); -class UpdateExtensionJson { +class UpdateExtensionFiles { /** * Construct method. */ @@ -294,4 +294,4 @@ class UpdateExtensionJson { } // eslint-disable-next-line no-new -new UpdateExtensionJson(); +new UpdateExtensionFiles(); diff --git a/package.json b/package.json index ef30fa94ef7..bfbfdb0e44b 100644 --- a/package.json +++ b/package.json @@ -101,7 +101,7 @@ "build:dev": "cross-env NODE_ENV=development npm-run-all 'build:!(dev|prod)'", "build:prod": "cross-env NODE_ENV=production npm-run-all 'build:!(dev|prod)'", "build:prepare": "grunt clean", - "build:json": "node ./bin/update-extension-json.js", + "build:extension-files": "node ./bin/update-extension-files.js", "build:js": "wp-scripts build", "build:run": "grunt build", "build:zip": "grunt create-build-zip", From 7ecf41561b6437fc6f06b6a74049d6741d487b92 Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Tue, 12 Oct 2021 21:03:53 +0530 Subject: [PATCH 039/105] Replace single quote with double quote while converting object to php array --- bin/update-extension-files.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/update-extension-files.js b/bin/update-extension-files.js index 1fc4e7e1022..692c5dc583d 100644 --- a/bin/update-extension-files.js +++ b/bin/update-extension-files.js @@ -122,7 +122,7 @@ class UpdateExtensionFiles { output += `\n${ tabs }'${ key }' => ${ value ? 'true' : 'false' },`; break; case 'string': - value = value.toString().replace( /'/gm, `\\'` ); + value = value.toString().replace( /'/gm, `"` ); output += `\n${ tabs }'${ key }' => '${ value }',`; break; case 'bigint': From 91cf77691b148c6f58c15934336177f57216ceef Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Tue, 12 Oct 2021 21:21:48 +0530 Subject: [PATCH 040/105] Prevent to store plugin description in php file --- bin/update-extension-files.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bin/update-extension-files.js b/bin/update-extension-files.js index 692c5dc583d..0940661853b 100644 --- a/bin/update-extension-files.js +++ b/bin/update-extension-files.js @@ -162,6 +162,8 @@ class UpdateExtensionFiles { plugin = await this.preparePluginData( item ); } + delete plugin.description; + return plugin; } From 68bbb9ca25d5244fb428490cb30875ff579f2eca Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Tue, 12 Oct 2021 21:54:42 +0530 Subject: [PATCH 041/105] Use innerText instead of innerHTML --- assets/src/admin/theme-install/view/theme.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/assets/src/admin/theme-install/view/theme.js b/assets/src/admin/theme-install/view/theme.js index 3847df18675..d4aa28ff482 100644 --- a/assets/src/admin/theme-install/view/theme.js +++ b/assets/src/admin/theme-install/view/theme.js @@ -75,13 +75,13 @@ export default wpThemeView.extend( { const themeActions = element.querySelector( '.theme-actions' ); if ( themeActions ) { - themeActions.innerHTML = ''; + themeActions.innerText = ''; themeActions.appendChild( siteLinkButton ); } const moreDetail = element.querySelector( '.more-details' ); if ( moreDetail ) { - moreDetail.innerHTML = __( 'Visit site', 'amp' ); + moreDetail.innerText = __( 'Visit site', 'amp' ); } } }, From d8ac7dc73a1b98f14c3b2dda9769911eadb48906 Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Wed, 13 Oct 2021 13:02:32 +0530 Subject: [PATCH 042/105] Add unit test case for get_plugins() and get_themes() --- src/Admin/AMPThemes.php | 2 +- tests/php/src/Admin/AMPPluginsTest.php | 100 +++++++++++++++++++++---- tests/php/src/Admin/AMPThemesTest.php | 70 +++++++++++++++++ 3 files changed, 158 insertions(+), 14 deletions(-) diff --git a/src/Admin/AMPThemes.php b/src/Admin/AMPThemes.php index 76c101a6538..30502e2bd2e 100644 --- a/src/Admin/AMPThemes.php +++ b/src/Admin/AMPThemes.php @@ -156,7 +156,7 @@ public function enqueue_scripts() { $none_wporg = []; foreach ( $this->get_themes() as $theme ) { - if ( true !== $theme['wporg'] ) { + if ( ! isset( $theme['wporg'] ) || true !== $theme['wporg'] ) { $none_wporg[] = $theme['slug']; } } diff --git a/tests/php/src/Admin/AMPPluginsTest.php b/tests/php/src/Admin/AMPPluginsTest.php index 24af3c0aef0..6f2d131061b 100644 --- a/tests/php/src/Admin/AMPPluginsTest.php +++ b/tests/php/src/Admin/AMPPluginsTest.php @@ -7,7 +7,6 @@ namespace AmpProject\AmpWP\Tests\Admin; -use AmpProject\AmpWP\Tests\Helpers\PrivateAccess; use AmpProject\AmpWP\Admin\AMPPlugins; use AmpProject\AmpWP\Tests\TestCase; use stdClass; @@ -19,8 +18,6 @@ */ class AMPPluginsTest extends TestCase { - use PrivateAccess; - /** * Instance of AMPPlugins * @@ -28,6 +25,13 @@ class AMPPluginsTest extends TestCase { */ public $instance; + /** + * Flag for AMP-compatible plugins file initially exists or not. + * + * @var bool + */ + protected $is_file_exists = false; + /** * Setup. * @@ -42,6 +46,86 @@ public function setUp() { $wp_styles = null; $this->instance = new AMPPlugins(); + + $file_path = TESTS_PLUGIN_DIR . '/includes/amp-plugins.php'; + $this->is_file_exists = file_exists( $file_path ); + + if ( ! $this->is_file_exists ) { + $data = [ + [ + 'name' => 'Akismet', + 'slug' => 'akismet', + ], + ]; + + $file_content = "is_file_exists ) { + $this->unlink( TESTS_PLUGIN_DIR . '/includes/amp-plugins.php' ); + } + } + + /** + * @covers ::get_plugins() + */ + public function test_get_plugins() { + + $plugins = $this->instance->get_plugins(); + + $this->assertEquals( + [ + [ + 'name' => 'Akismet', + 'slug' => 'akismet', + 'version' => '', + 'author' => '', + 'author_profile' => '', + 'requires' => '', + 'tested' => '', + 'requires_php' => '', + 'rating' => 0, + 'ratings' => [ + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 0, + ], + 'num_ratings' => 0, + 'support_threads' => 0, + 'support_threads_resolved' => 0, + 'active_installs' => 0, + 'downloaded' => 0, + 'last_updated' => '', + 'added' => '', + 'homepage' => '', + 'short_description' => '', + 'description' => '', + 'download_link' => '', + 'tags' => [], + 'donate_link' => '', + 'icons' => [ + '1x' => '', + '2x' => '', + 'svg' => '', + ], + 'wporg' => false, + ], + ], + $plugins + ); } /** @@ -281,16 +365,6 @@ public function test_plugin_row_meta() { $output = $this->instance->plugin_row_meta( $plugin_meta, '', [ 'slug' => 'example' ] ); $this->assertEquals( $plugin_meta, $output ); - $this->set_private_property( - $this->instance, - 'plugins', - [ - [ - 'name' => 'akismet', - 'slug' => 'akismet', - ], - ] - ); // Test 2: None AMP plugin. $output = $this->instance->plugin_row_meta( $plugin_meta, '', [ 'slug' => 'akismet' ] ); diff --git a/tests/php/src/Admin/AMPThemesTest.php b/tests/php/src/Admin/AMPThemesTest.php index d9253f3f068..616a5b6a72f 100644 --- a/tests/php/src/Admin/AMPThemesTest.php +++ b/tests/php/src/Admin/AMPThemesTest.php @@ -25,6 +25,13 @@ class AMPThemesTest extends TestCase { */ public $instance; + /** + * Flag for AMP-compatible themes file initially exists or not. + * + * @var bool + */ + protected $is_file_exists = false; + /** * Setup. * @@ -38,6 +45,69 @@ public function setUp() { $wp_styles = null; $this->instance = new AMPThemes(); + + $file_path = TESTS_PLUGIN_DIR . '/includes/amp-themes.php'; + $this->is_file_exists = file_exists( $file_path ); + + if ( ! $this->is_file_exists ) { + $data = [ + [ + 'name' => 'Astra', + 'slug' => 'astra', + ], + ]; + + $file_content = "is_file_exists ) { + $this->unlink( TESTS_PLUGIN_DIR . '/includes/amp-themes.php' ); + } + } + + /** + * @covers ::get_themes + */ + public function test_get_themes() { + $themes = $this->instance->get_themes(); + + $this->assertEquals( + [ + [ + 'name' => 'Astra', + 'slug' => 'astra', + 'version' => '', + 'preview_url' => '', + 'author' => [ + 'user_nicename' => '', + 'profile' => '', + 'avatar' => '', + 'display_name' => '', + 'author' => '', + 'author_url' => '', + ], + 'screenshot_url' => '', + 'rating' => 0, + 'num_ratings' => 0, + 'homepage' => '', + 'description' => '', + 'requires' => '', + 'requires_php' => '', + ], + ], + $themes + ); } /** From 55faed34f487a189db896a34fc613299d3277dcf Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Wed, 13 Oct 2021 17:05:33 +0530 Subject: [PATCH 043/105] Update the logic to covernt JS object into PHP array --- bin/file-system.js | 89 ----------------------------------- bin/update-extension-files.js | 79 +++++++++++++++---------------- package-lock.json | 5 ++ package.json | 1 + 4 files changed, 43 insertions(+), 131 deletions(-) delete mode 100644 bin/file-system.js diff --git a/bin/file-system.js b/bin/file-system.js deleted file mode 100644 index 9c8db8b2336..00000000000 --- a/bin/file-system.js +++ /dev/null @@ -1,89 +0,0 @@ -/** - * Helper class for file management. - */ - -/** - * External dependencies - */ -const fs = require( 'fs' ); -const _ = require( 'lodash' ); - -class FileSystem { - /** - * Directory separator. - * - * @return {string} Directory separator. - */ - static get DS() { - return '/'; - } - - /** - * Assure that given path is directory path. - * If file path is provided then it will return parent directory of given path. - * - * @param {string} path Path to check. - * @return {string} Directory path. - */ - static assureDirectoryPath( path ) { - if ( _.isEmpty( path ) || ! _.isString( path ) ) { - return ''; - } - - const lastSegment = path.toString().split( this.DS ).pop(); - - if ( -1 !== lastSegment.indexOf( '.' ) ) { - path = path.replace( `${ this.DS }${ lastSegment }`, '' ); - } - - return path; - } - - /** - * Assure that directory is physically exists. - * - * @param {string} path Path for that need to make sure physical directory exists. - * @return {Promise} True on success otherwise false. - */ - static assureDirectoryExists( path ) { - path = this.assureDirectoryPath( path ); - - return new Promise( ( done ) => { - fs.mkdir( path, { recursive: true }, ( error ) => { - if ( error ) { - done( false ); - } else { - done( true ); - } - } ); - } ); - } - - /** - * Write content to file. - * - * @param {string} filePath File path. - * @param {string} content Content of file. - * @return {Promise} True on success otherwise false. - */ - static async writeFile( filePath, content ) { - if ( _.isEmpty( filePath ) || ! _.isString( filePath ) || - _.isEmpty( content ) || ! _.isString( content ) ) { - return false; - } - - await this.assureDirectoryExists( filePath ); - - return new Promise( ( done ) => { - fs.writeFile( filePath, content, ( error ) => { - if ( error ) { - done( false ); - } else { - done( true ); - } - } ); - } ); - } -} - -module.exports = FileSystem; diff --git a/bin/update-extension-files.js b/bin/update-extension-files.js index 0940661853b..fb237ee7de3 100644 --- a/bin/update-extension-files.js +++ b/bin/update-extension-files.js @@ -1,14 +1,11 @@ /** * External dependencies */ +const { exec } = require( 'child_process' ); +const fs = require( 'fs' ); const { getPluginsList, getThemesList } = require( 'wporg-api-client' ); const axios = require( 'axios' ); -/** - * Internal dependencies - */ -const filesystem = require( './file-system' ); - class UpdateExtensionFiles { /** * Construct method. @@ -81,61 +78,59 @@ class UpdateExtensionFiles { */ async storeData() { if ( this.plugins ) { - let output = this.convertToPhpArray( this.plugins ); + let output = await this.convertToPhpArray( this.plugins ); output = `} Output or error from shell command. + */ + executeCommand( command ) { + return new Promise( ( done, failed ) => { + exec( command, ( error, stdout, stderr ) => { + if ( error ) { + error.stdout = stdout; + error.stderr = stderr; + failed( error ); + return; + } + done( { stdout, stderr } ); + } ); + } ); + } + /** * Convert JS object into PHP array variable. * * @param {Object} object An object that needs to convert into a PHP array. - * @param {number} depth Depth of iteration. * @return {string|null} PHP array in string. */ - convertToPhpArray( object, depth = 1 ) { + async convertToPhpArray( object ) { if ( 'object' !== typeof object ) { return null; } - const tabs = '\t'.repeat( depth ); - let output = '['; - - // eslint-disable-next-line guard-for-in - for ( const key in object ) { - let value = object[ key ]; - - switch ( typeof value ) { - case 'object': - let childObjectOutput = this.convertToPhpArray( value, ( depth + 1 ) ); - childObjectOutput = childObjectOutput ? childObjectOutput : '[]'; - output += `\n${ tabs }'${ key }' => ${ childObjectOutput },`; - break; - case 'boolean': - output += `\n${ tabs }'${ key }' => ${ value ? 'true' : 'false' },`; - break; - case 'string': - value = value.toString().replace( /'/gm, `"` ); - output += `\n${ tabs }'${ key }' => '${ value }',`; - break; - case 'bigint': - case 'number': - output += `\n${ tabs }'${ key }' => ${ value },`; - break; - default: - output += `\n${ tabs }'${ key }' => '',`; - break; - } - } - output += '\n' + '\t'.repeat( depth - 1 ) + ']'; - return output; + const tempFilePath = '/tmp/amp.json'; + const json = JSON.stringify( object ); + const command = `php -r 'var_export( json_decode( file_get_contents( "${ tempFilePath }" ), true ) );'`; + + fs.writeFileSync( tempFilePath, json ); + const output = await this.executeCommand( command ); + + fs.unlinkSync( tempFilePath ); + + return ( output.stdout ) ? output.stdout : 'array()'; } /** diff --git a/package-lock.json b/package-lock.json index 00659e38511..66db8d5fc23 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7458,6 +7458,11 @@ } } }, + "child_process": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/child_process/-/child_process-1.0.2.tgz", + "integrity": "sha1-sffn/HPSXn/R1FWtyU4UODAYK1o=" + }, "chokidar": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", diff --git a/package.json b/package.json index bfbfdb0e44b..3188089b722 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,7 @@ "@wordpress/icons": "5.0.2", "@wordpress/is-shallow-equal": "4.2.0", "@wordpress/url": "3.2.2", + "child_process": "1.0.2", "classnames": "2.3.1", "clipboard": "2.0.8", "prop-types": "15.7.2", From de077b48e5fd54f645c6dd0ab031b23efc090dbe Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Wed, 13 Oct 2021 17:54:00 +0530 Subject: [PATCH 044/105] Update Gruntfile.js to add auto-generated files --- Gruntfile.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Gruntfile.js b/Gruntfile.js index 953fa837581..51bd8140fff 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -169,6 +169,10 @@ module.exports = function( grunt ) { paths.push( 'assets/js/**/*.asset.php' ); paths.push( 'assets/css/*.css' ); + // Include auto-generated files. + paths.push( 'includes/amp-plugins.php' ); + paths.push( 'includes/amp-themes.php' ); + if ( 'development' === process.env.NODE_ENV ) { paths.push( 'assets/js/**/*.js.map' ); paths.push( 'assets/css/*.css.map' ); From fe7d4bba663f3a47fafa422d5df862e4cb0ef587 Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Wed, 13 Oct 2021 18:27:29 +0530 Subject: [PATCH 045/105] Add multiple attempt to fetch data from wp.org API --- bin/update-extension-files.js | 50 +++++++++++++++++++++++++++++++++-- 1 file changed, 48 insertions(+), 2 deletions(-) diff --git a/bin/update-extension-files.js b/bin/update-extension-files.js index fb237ee7de3..dc84a749974 100644 --- a/bin/update-extension-files.js +++ b/bin/update-extension-files.js @@ -202,7 +202,7 @@ class UpdateExtensionFiles { per_page: 100, }; - const response = await getThemesList( filters ); + const response = await this.getThemesList( filters ); const items = response?.data?.themes; for ( const index in items ) { @@ -215,6 +215,29 @@ class UpdateExtensionFiles { return null; } + /** + * Wrapper function to get theme list. + * On fail it will try upto five time to get data. + * + * @param {Object} filter List of filters. + * @return {Promise} Response from wp.org API. + */ + async getThemesList( filter ) { + let error = false; + + for ( let attempts = 0; attempts < 5; attempts++ ) { + try { + // eslint-disable-next-line no-await-in-loop + const responseData = await getThemesList( filter ); + return responseData.data; + } catch ( exception ) { + error = exception; + } + } + + throw error; + } + /** * Transform theme data fetched from amp-wp.org to compatible with theme install screen. * @@ -250,7 +273,7 @@ class UpdateExtensionFiles { per_page: 100, }; - const response = await getPluginsList( filters ); + const response = await this.getPluginsList( filters ); const items = response?.data?.plugins; for ( const index in items ) { @@ -263,6 +286,29 @@ class UpdateExtensionFiles { return null; } + /** + * Wrapper function to get plugin list. + * On fail it will try upto five time to get data. + * + * @param {Object} filter List of filters. + * @return {Promise} Response from wp.org API. + */ + async getPluginsList( filter ) { + let error = false; + + for ( let attempts = 0; attempts < 5; attempts++ ) { + try { + // eslint-disable-next-line no-await-in-loop + const responseData = await getPluginsList( filter ); + return responseData; + } catch ( exception ) { + error = exception; + } + } + + throw error; + } + /** * Transform plugin data fetched from amp-wp.org to compatible with theme install screen. * From 89839bf229719ca9182e1a30615ec7c2d6896018 Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Wed, 13 Oct 2021 18:52:07 +0530 Subject: [PATCH 046/105] Fix unit test cases --- tests/php/src/Admin/AMPPluginsTest.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/php/src/Admin/AMPPluginsTest.php b/tests/php/src/Admin/AMPPluginsTest.php index 6f2d131061b..9e6c1516851 100644 --- a/tests/php/src/Admin/AMPPluginsTest.php +++ b/tests/php/src/Admin/AMPPluginsTest.php @@ -372,7 +372,5 @@ public function test_plugin_row_meta() { ' AMP Compatible', $output ); - - $this->set_private_property( $this->instance, 'plugins', [] ); } } From 6558ab521532bf65d04485c1a3070e27346fa927 Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Wed, 13 Oct 2021 19:54:39 +0530 Subject: [PATCH 047/105] Add a check for if an auto-generated file is exists --- tests/php/src/Admin/AMPPluginsTest.php | 21 ++++++++++++++++----- tests/php/src/Admin/AMPThemesTest.php | 22 ++++++++++++++++------ 2 files changed, 32 insertions(+), 11 deletions(-) diff --git a/tests/php/src/Admin/AMPPluginsTest.php b/tests/php/src/Admin/AMPPluginsTest.php index 9e6c1516851..0414aab9edc 100644 --- a/tests/php/src/Admin/AMPPluginsTest.php +++ b/tests/php/src/Admin/AMPPluginsTest.php @@ -84,8 +84,18 @@ public function test_get_plugins() { $plugins = $this->instance->get_plugins(); - $this->assertEquals( - [ + if ( $this->is_file_exists ) { + $expected_plugins = include TESTS_PLUGIN_DIR . '/includes/amp-plugins.php'; + + $expected = array_map( + static function ( $theme ) { + + return AMPPlugins::normalize_plugin_data( $theme ); + }, + $expected_plugins + ); + } else { + $expected = [ [ 'name' => 'Akismet', 'slug' => 'akismet', @@ -123,9 +133,10 @@ public function test_get_plugins() { ], 'wporg' => false, ], - ], - $plugins - ); + ]; + } + + $this->assertEquals( $expected, $plugins ); } /** diff --git a/tests/php/src/Admin/AMPThemesTest.php b/tests/php/src/Admin/AMPThemesTest.php index 616a5b6a72f..3a77a4e6abf 100644 --- a/tests/php/src/Admin/AMPThemesTest.php +++ b/tests/php/src/Admin/AMPThemesTest.php @@ -77,13 +77,22 @@ public function tearDown() { } /** - * @covers ::get_themes + * @covers ::get_themes() */ public function test_get_themes() { $themes = $this->instance->get_themes(); - $this->assertEquals( - [ + if ( $this->is_file_exists ) { + $expected_themes = include TESTS_PLUGIN_DIR . '/includes/amp-themes.php'; + + $expected = array_map( + static function ( $theme ) { + return AMPThemes::normalize_theme_data( $theme ); + }, + $expected_themes + ); + } else { + $expected = [ [ 'name' => 'Astra', 'slug' => 'astra', @@ -105,9 +114,10 @@ public function test_get_themes() { 'requires' => '', 'requires_php' => '', ], - ], - $themes - ); + ]; + } + + $this->assertEquals( $expected, $themes ); } /** From d99b7a3100b7b670f26a56b95453a8a70a170c42 Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Thu, 14 Oct 2021 12:24:07 +0530 Subject: [PATCH 048/105] Remove unwanted eslint ignore comments --- assets/src/admin/amp-plugin-install.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/assets/src/admin/amp-plugin-install.js b/assets/src/admin/amp-plugin-install.js index c9bf87bd942..7b8aa87a2e5 100644 --- a/assets/src/admin/amp-plugin-install.js +++ b/assets/src/admin/amp-plugin-install.js @@ -45,7 +45,6 @@ const ampPluginInstall = { * Add message for AMP Compatibility in AMP-compatible plugins card. */ addAmpMessage() { - // eslint-disable-next-line guard-for-in for ( const pluginSlug of AMP_PLUGINS ) { const pluginCardElement = document.querySelector( `.plugin-card.plugin-card-${ pluginSlug }` ); @@ -78,7 +77,6 @@ const ampPluginInstall = { * Remove the additional info from plugin card if plugin is none wporg plugin. */ removeAdditionalInfo() { - // eslint-disable-next-line guard-for-in for ( const pluginSlug of NONE_WPORG_PLUGINS ) { const pluginCardElement = document.querySelector( `.plugin-card.plugin-card-${ pluginSlug }` ); From 85247dd4635227823fe703549744938d837dc473 Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 19 Oct 2021 15:08:31 -0700 Subject: [PATCH 049/105] Add logging to indicate what is going on --- Gruntfile.js | 4 ---- bin/update-extension-files.js | 8 ++++++++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 51bd8140fff..953fa837581 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -169,10 +169,6 @@ module.exports = function( grunt ) { paths.push( 'assets/js/**/*.asset.php' ); paths.push( 'assets/css/*.css' ); - // Include auto-generated files. - paths.push( 'includes/amp-plugins.php' ); - paths.push( 'includes/amp-themes.php' ); - if ( 'development' === process.env.NODE_ENV ) { paths.push( 'assets/js/**/*.js.map' ); paths.push( 'assets/css/*.css.map' ); diff --git a/bin/update-extension-files.js b/bin/update-extension-files.js index dc84a749974..0d37ff6c38e 100644 --- a/bin/update-extension-files.js +++ b/bin/update-extension-files.js @@ -196,6 +196,8 @@ class UpdateExtensionFiles { * @return {Promise} Theme object from WP org. */ async fetchThemeFromWporg( slug ) { + // eslint-disable-next-line no-console + console.log( `Fetching theme ${ slug } from WordPress.org.` ); const filters = { search: slug, page: 1, @@ -246,6 +248,8 @@ class UpdateExtensionFiles { */ async prepareThemeData( item ) { const imageRequestUrl = item._links[ 'wp:featuredmedia' ][ 0 ].href; + // eslint-disable-next-line no-console + console.log( `Fetching theme data: ${ imageRequestUrl }` ); let attachment = await axios.get( imageRequestUrl ); attachment = attachment.data; @@ -267,6 +271,8 @@ class UpdateExtensionFiles { * @return {Promise} Plugin object from WP org. */ async fetchPluginFromWporg( slug ) { + // eslint-disable-next-line no-console + console.log( `Fetching plugin ${ slug } from WordPress.org.` ); const filters = { search: slug, page: 1, @@ -317,6 +323,8 @@ class UpdateExtensionFiles { */ async preparePluginData( item ) { const imageRequestUrl = item._links[ 'wp:featuredmedia' ][ 0 ].href; + // eslint-disable-next-line no-console + console.log( `Fetching theme data: ${ imageRequestUrl }` ); let attachment = await axios.get( imageRequestUrl ); attachment = attachment.data; From d032f72d0f6bbbf5dd57475c0da3cdd487fb8656 Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 19 Oct 2021 15:09:08 -0700 Subject: [PATCH 050/105] Simplify conditional --- bin/update-extension-files.js | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/bin/update-extension-files.js b/bin/update-extension-files.js index 0d37ff6c38e..e82e43d6dd6 100644 --- a/bin/update-extension-files.js +++ b/bin/update-extension-files.js @@ -143,14 +143,10 @@ class UpdateExtensionFiles { const regex = /wordpress\.org\/plugins\/(.[^\/]+)\/?/; const ecosystemUrl = item?.meta?.ampps_ecosystem_url; const matches = regex.exec( ecosystemUrl ); - let plugin = null; + let plugin; - // WordPress org plugin. - if ( null !== matches ) { - plugin = await this.fetchPluginFromWporg( matches[ 1 ] ); - } else { - plugin = await this.fetchPluginFromWporg( item.slug ); - } + const slug = null !== matches ? matches[ 1 ] : item.slug; + plugin = await this.fetchPluginFromWporg( slug ); // Plugin data for amp-wp.org if ( null === matches || null === plugin ) { @@ -172,14 +168,10 @@ class UpdateExtensionFiles { const regex = /wordpress\.org\/themes\/(.[^\/]+)\/?/; const ecosystemUrl = item?.meta?.ampps_ecosystem_url; const matches = regex.exec( ecosystemUrl ); - let theme = null; + let theme; - // WordPress org plugin. - if ( null !== matches ) { - theme = await this.fetchThemeFromWporg( matches[ 1 ] ); - } else { - theme = await this.fetchThemeFromWporg( item.slug ); - } + const slug = null !== matches ? matches[ 1 ] : item.slug; + theme = await this.fetchThemeFromWporg( slug ); // Theme data for amp-wp.org if ( null === matches || null === theme ) { From 088b8050893b39fade5bb2ff023c7576dffb7479 Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 19 Oct 2021 15:09:51 -0700 Subject: [PATCH 051/105] Abort update-extension-files when files exist --- bin/update-extension-files.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/bin/update-extension-files.js b/bin/update-extension-files.js index e82e43d6dd6..041f1fe8377 100644 --- a/bin/update-extension-files.js +++ b/bin/update-extension-files.js @@ -6,12 +6,21 @@ const fs = require( 'fs' ); const { getPluginsList, getThemesList } = require( 'wporg-api-client' ); const axios = require( 'axios' ); +const PLUGINS_FILE = 'includes/amp-plugins.php'; +const THEMES_FILE = 'includes/amp-themes.php'; + class UpdateExtensionFiles { /** * Construct method. */ constructor() { ( async () => { + if ( fs.existsSync( PLUGINS_FILE ) && fs.existsSync( THEMES_FILE ) ) { + // eslint-disable-next-line no-console + console.log( `Files already exist (${ PLUGINS_FILE } and ${ THEMES_FILE }) so exiting.` ); + return; + } + this.plugins = []; this.themes = []; @@ -80,13 +89,13 @@ class UpdateExtensionFiles { if ( this.plugins ) { let output = await this.convertToPhpArray( this.plugins ); output = ` Date: Tue, 19 Oct 2021 15:12:16 -0700 Subject: [PATCH 052/105] Opt to commit amp-plugins and amp-themes data to repo --- .gitignore | 2 - includes/amp-plugins.php | 2372 ++++++++++++++++++++++++++++++++++++++ includes/amp-themes.php | 1029 +++++++++++++++++ 3 files changed, 3401 insertions(+), 2 deletions(-) create mode 100644 includes/amp-plugins.php create mode 100644 includes/amp-themes.php diff --git a/.gitignore b/.gitignore index 22502e5462f..1044d8cf962 100644 --- a/.gitignore +++ b/.gitignore @@ -12,8 +12,6 @@ assets/js/*.asset.php assets/js/*.map built /amphtml -includes/amp-plugins.php -includes/amp-themes.php .env .idea/ /phpcs.xml diff --git a/includes/amp-plugins.php b/includes/amp-plugins.php new file mode 100644 index 00000000000..39f4602e2fe --- /dev/null +++ b/includes/amp-plugins.php @@ -0,0 +1,2372 @@ + + array ( + 'name' => 'Podcast Player – Your Podcasting Companion', + 'slug' => 'podcast-player', + 'version' => '5.2.2', + 'author' => 'vedathemes', + 'author_profile' => 'https://profiles.wordpress.org/vedathemes', + 'requires' => '4.9', + 'tested' => '5.8.1', + 'requires_php' => '5.6', + 'rating' => 98, + 'ratings' => + array ( + 1 => 0, + 2 => 1, + 3 => 0, + 4 => 2, + 5 => 46, + ), + 'num_ratings' => 49, + 'support_threads' => 6, + 'support_threads_resolved' => 4, + 'active_installs' => 8000, + 'downloaded' => 128775, + 'last_updated' => '2021-10-14 9:56am GMT', + 'added' => '2019-02-06', + 'homepage' => 'https://vedathemes.com/podcast-player/', + 'short_description' => 'Showcase your podcast only using podcasting feed url. Use custom widget, shortcode or editor block to display podcast player anywhere on your site.', + 'download_link' => 'https://downloads.wordpress.org/plugin/podcast-player.5.2.2.zip', + 'tags' => + array ( + 'feed-to-audio' => 'feed to audio', + 'podcast' => 'podcast', + 'podcaster' => 'podcaster', + 'podcasting' => 'podcasting', + 'rss-feed' => 'rss feed', + ), + 'donate_link' => '', + 'icons' => + array ( + '1x' => 'https://ps.w.org/podcast-player/assets/icon-256x256.png?rev=2025683', + '2x' => 'https://ps.w.org/podcast-player/assets/icon-256x256.png?rev=2025683', + ), + 'wporg' => true, + ), + 1 => + array ( + 'name' => 'WPSSO Schema JSON-LD Markup', + 'slug' => 'wpsso-schema-json-ld', + 'version' => '5.1.0', + 'author' => 'JS Morisset', + 'author_profile' => 'https://profiles.wordpress.org/jsmoriss', + 'requires' => '5.0', + 'tested' => '5.8.1', + 'requires_php' => '7.0', + 'rating' => 90, + 'ratings' => + array ( + 1 => 5, + 2 => 2, + 3 => 1, + 4 => 1, + 5 => 55, + ), + 'num_ratings' => 64, + 'support_threads' => 4, + 'support_threads_resolved' => 4, + 'active_installs' => 4000, + 'downloaded' => 291525, + 'last_updated' => '2021-10-19 3:30pm GMT', + 'added' => '2016-02-14', + 'homepage' => 'https://wpsso.com/extend/plugins/wpsso-schema-json-ld/', + 'short_description' => 'Discontinued / deprecated add-on: The features of this plugin were merged into WPSSO Core v9.0.0.', + 'download_link' => 'https://downloads.wordpress.org/plugin/wpsso-schema-json-ld.zip', + 'tags' => + array ( + ), + 'donate_link' => '', + 'icons' => + array ( + 'default' => 'https://s.w.org/plugins/geopattern-icon/wpsso-schema-json-ld.svg', + ), + 'wporg' => true, + ), + 2 => + array ( + 'name' => 'ShortPixel Image Optimizer', + 'slug' => 'shortpixel-image-optimiser', + 'version' => '4.22.6', + 'author' => 'ShortPixel', + 'author_profile' => 'https://profiles.wordpress.org/shortpixel', + 'requires' => '4.2.0', + 'tested' => '5.8.1', + 'requires_php' => '5.6', + 'rating' => 92, + 'ratings' => + array ( + 1 => 53, + 2 => 12, + 3 => 8, + 4 => 12, + 5 => 546, + ), + 'num_ratings' => 631, + 'support_threads' => 11, + 'support_threads_resolved' => 7, + 'active_installs' => 300000, + 'downloaded' => 7106321, + 'last_updated' => '2021-10-11 2:44pm GMT', + 'added' => '2014-11-05', + 'homepage' => 'https://shortpixel.com/', + 'short_description' => 'Speed up your website & boost your SEO by compressing old & new images and…', + 'download_link' => 'https://downloads.wordpress.org/plugin/shortpixel-image-optimiser.4.22.6.zip', + 'tags' => + array ( + 'compressor' => 'compressor', + 'convert-webp' => 'convert webp', + 'image-optimization' => 'image optimization', + 'optimize-images' => 'optimize images', + 'resize' => 'resize', + ), + 'donate_link' => '', + 'icons' => + array ( + '1x' => 'https://ps.w.org/shortpixel-image-optimiser/assets/icon-128x128.png?rev=1038819', + '2x' => 'https://ps.w.org/shortpixel-image-optimiser/assets/icon-256x256.png?rev=1038819', + ), + 'wporg' => true, + ), + 3 => + array ( + 'name' => 'Theme Kit for Twenty Twenty-One & Twenty Twenty (Customization, Gutenberg Blocks, Templates) – Twentig', + 'slug' => 'twentig', + 'version' => '1.3.6', + 'author' => 'Twentig', + 'author_profile' => 'https://profiles.wordpress.org/twentig', + 'requires' => '5.5', + 'tested' => '5.8.1', + 'requires_php' => '5.6', + 'rating' => 100, + 'ratings' => + array ( + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 2, + 5 => 110, + ), + 'num_ratings' => 112, + 'support_threads' => 37, + 'support_threads_resolved' => 30, + 'active_installs' => 10000, + 'downloaded' => 151930, + 'last_updated' => '2021-09-15 2:23pm GMT', + 'added' => '2019-05-29', + 'homepage' => 'https://twentig.com', + 'short_description' => 'Supercharge your WordPress theme (Twenty Twenty-One & Twenty Twenty) with customization options, enhanced Gutenberg blocks,…', + 'download_link' => 'https://downloads.wordpress.org/plugin/twentig.1.3.6.zip', + 'tags' => + array ( + 'gutenberg' => 'gutenberg', + 'gutenberg-blocks' => 'gutenberg blocks', + 'templates' => 'templates', + 'theme' => 'theme', + 'twenty-twenty-one' => 'twenty-twenty-one', + ), + 'donate_link' => 'https://www.paypal.com/donate?hosted_button_id=JTBTPQAFEA94E', + 'icons' => + array ( + '1x' => 'https://ps.w.org/twentig/assets/icon.svg?rev=2569439', + '2x' => 'https://ps.w.org/twentig/assets/icon-256x256.png?rev=2569439', + 'svg' => 'https://ps.w.org/twentig/assets/icon.svg?rev=2569439', + ), + 'wporg' => true, + ), + 4 => + array ( + 'name' => 'Custom Post Type UI', + 'slug' => 'custom-post-type-ui', + 'version' => '1.10.0', + 'author' => 'WebDevStudios', + 'author_profile' => 'https://profiles.wordpress.org/williamsba1', + 'requires' => '5.5', + 'tested' => '5.8.1', + 'requires_php' => '5.6', + 'rating' => 94, + 'ratings' => + array ( + 1 => 12, + 2 => 3, + 3 => 6, + 4 => 9, + 5 => 205, + ), + 'num_ratings' => 235, + 'support_threads' => 58, + 'support_threads_resolved' => 29, + 'active_installs' => 1000000, + 'downloaded' => 9058474, + 'last_updated' => '2021-10-05 1:54am GMT', + 'added' => '2010-02-26', + 'homepage' => 'https://github.com/WebDevStudios/custom-post-type-ui/', + 'short_description' => 'Admin UI for creating custom post types and custom taxonomies for WordPress', + 'download_link' => 'https://downloads.wordpress.org/plugin/custom-post-type-ui.1.10.0.zip', + 'tags' => + array ( + 'cms' => 'cms', + 'cpt' => 'cpt', + 'custom-post-types' => 'custom post types', + 'post' => 'post', + 'types' => 'types', + ), + 'donate_link' => 'https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=3084056', + 'icons' => + array ( + '1x' => 'https://ps.w.org/custom-post-type-ui/assets/icon-128x128.png?rev=2549362', + '2x' => 'https://ps.w.org/custom-post-type-ui/assets/icon-256x256.png?rev=2549362', + ), + 'wporg' => true, + ), + 5 => + array ( + 'name' => 'Flex Posts – Widget and Gutenberg Block', + 'slug' => 'flex-posts', + 'version' => '1.8.1', + 'author' => 'Tajam', + 'author_profile' => 'https://profiles.wordpress.org/tajam', + 'requires' => '5.2', + 'tested' => '5.8.1', + 'requires_php' => false, + 'rating' => 100, + 'ratings' => + array ( + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 17, + ), + 'num_ratings' => 17, + 'support_threads' => 3, + 'support_threads_resolved' => 1, + 'active_installs' => 3000, + 'downloaded' => 25509, + 'last_updated' => '2021-07-29 10:41am GMT', + 'added' => '2018-05-10', + 'homepage' => 'https://tajam.id/flex-posts/', + 'short_description' => 'A widget to display posts with thumbnails in various layouts. Fits nicely in any widget…', + 'download_link' => 'https://downloads.wordpress.org/plugin/flex-posts.zip', + 'tags' => + array ( + 'category-posts' => 'category posts', + 'grid' => 'grid', + 'magazine' => 'magazine', + 'news' => 'news', + 'responsive' => 'responsive', + ), + 'donate_link' => 'https://tajam.id/', + 'icons' => + array ( + '1x' => 'https://ps.w.org/flex-posts/assets/icon-128x128.png?rev=1871802', + ), + 'wporg' => true, + ), + 6 => + array ( + 'name' => 'YARPP – Yet Another Related Posts Plugin', + 'slug' => 'yet-another-related-posts-plugin', + 'version' => '5.27.6', + 'author' => 'YARPP', + 'author_profile' => 'https://profiles.wordpress.org/jeffparker', + 'requires' => '3.7', + 'tested' => '5.8.1', + 'requires_php' => '5.3', + 'rating' => 94, + 'ratings' => + array ( + 1 => 33, + 2 => 2, + 3 => 14, + 4 => 45, + 5 => 653, + ), + 'num_ratings' => 747, + 'support_threads' => 21, + 'support_threads_resolved' => 7, + 'active_installs' => 100000, + 'downloaded' => 6602792, + 'last_updated' => '2021-10-12 3:43pm GMT', + 'added' => '2008-01-02', + 'homepage' => 'https://yarpp.com/', + 'short_description' => 'The best WordPress plugin for displaying related posts. Simple and flexible, with a powerful proven algorithm and inbuilt caching.', + 'download_link' => 'https://downloads.wordpress.org/plugin/yet-another-related-posts-plugin.5.27.6.zip', + 'tags' => + array ( + 'contextual-related-posts' => 'contextual related posts', + 'posts' => 'posts', + 'related-posts' => 'related posts', + 'seo' => 'seo', + 'similar-posts' => 'similar posts', + ), + 'donate_link' => 'https://yarpp.com', + 'icons' => + array ( + '1x' => 'https://ps.w.org/yet-another-related-posts-plugin/assets/icon-128x128.png?rev=2549977', + '2x' => 'https://ps.w.org/yet-another-related-posts-plugin/assets/icon-256x256.png?rev=2549977', + ), + 'wporg' => true, + ), + 7 => + array ( + 'name' => 'Superb WordPress Table (SEO Optimized Tables With Schema)', + 'slug' => 'superb-tables', + 'version' => '1.0.9', + 'author' => 'SuPlugins', + 'author_profile' => 'https://profiles.wordpress.org/suplugins', + 'requires' => '3.0.1', + 'tested' => '5.8.1', + 'requires_php' => '5.2.4', + 'rating' => 86, + 'ratings' => + array ( + 1 => 0, + 2 => 1, + 3 => 0, + 4 => 0, + 5 => 3, + ), + 'num_ratings' => 4, + 'support_threads' => 1, + 'support_threads_resolved' => 1, + 'active_installs' => 4000, + 'downloaded' => 37334, + 'last_updated' => '2021-10-01 9:37am GMT', + 'added' => '2019-03-05', + 'homepage' => 'https://superbthemes.com/plugins/superb-tables/', + 'short_description' => 'Responsive & SEO Optimized tables. Get your Google Featured Snippets. Different table designs, table shortcodes…', + 'download_link' => 'https://downloads.wordpress.org/plugin/superb-tables.1.0.9.zip', + 'tags' => + array ( + 'content-tables' => 'content tables', + 'responsive-tables' => 'responsive tables', + 'table' => 'table', + 'tables' => 'tables', + ), + 'donate_link' => '', + 'icons' => + array ( + '1x' => 'https://ps.w.org/superb-tables/assets/icon-256x256.png?rev=2044672', + '2x' => 'https://ps.w.org/superb-tables/assets/icon-256x256.png?rev=2044672', + ), + 'wporg' => true, + ), + 8 => + array ( + 'name' => 'Floating Button', + 'slug' => 'floating-button', + 'version' => '5.1', + 'author' => 'Wow-Company', + 'author_profile' => 'https://profiles.wordpress.org/wpcalc', + 'requires' => '3.2', + 'tested' => '5.8.1', + 'requires_php' => '5.3', + 'rating' => 80, + 'ratings' => + array ( + 1 => 1, + 2 => 1, + 3 => 0, + 4 => 0, + 5 => 5, + ), + 'num_ratings' => 7, + 'support_threads' => 1, + 'support_threads_resolved' => 0, + 'active_installs' => 2000, + 'downloaded' => 35813, + 'last_updated' => '2021-10-12 9:08am GMT', + 'added' => '2018-09-08', + 'homepage' => 'https://wordpress.org/plugins/floating-button/', + 'short_description' => 'Easily create a custom sticky floating buttons. The Floating Button will be the effective solution…', + 'download_link' => 'https://downloads.wordpress.org/plugin/floating-button.5.1.zip', + 'tags' => + array ( + 'circle-menu' => 'circle menu', + 'float-menu' => 'float menu', + 'floating-button' => 'floating button', + 'floating-menu' => 'floating menu', + 'sticky-button' => 'sticky button', + ), + 'donate_link' => 'https://wow-estore.com/item/floating-button-pro/', + 'icons' => + array ( + '1x' => 'https://ps.w.org/floating-button/assets/icon-128x128.png?rev=2533016', + '2x' => 'https://ps.w.org/floating-button/assets/icon-256x256.png?rev=2533016', + ), + 'wporg' => true, + ), + 9 => + array ( + 'name' => 'Breadcrumb NavXT', + 'slug' => 'breadcrumb-navxt', + 'version' => '6.6.0', + 'author' => 'John Havlik', + 'author_profile' => 'https://profiles.wordpress.org/mtekk', + 'requires' => '4.9', + 'tested' => '5.7.3', + 'requires_php' => '5.5', + 'rating' => 94, + 'ratings' => + array ( + 1 => 5, + 2 => 2, + 3 => 4, + 4 => 7, + 5 => 104, + ), + 'num_ratings' => 122, + 'support_threads' => 8, + 'support_threads_resolved' => 3, + 'active_installs' => 900000, + 'downloaded' => 10199521, + 'last_updated' => '2021-04-01 2:13am GMT', + 'added' => '2007-12-01', + 'homepage' => 'http://mtekk.us/code/breadcrumb-navxt/', + 'short_description' => 'Breadcrumb NavXT, the successor to the popular WordPress plugin Breadcrumb Navigation XT, was written from the ground up to be better than its ancesto …', + 'download_link' => 'https://downloads.wordpress.org/plugin/breadcrumb-navxt.6.6.0.zip', + 'tags' => + array ( + 'breadcrumb' => 'breadcrumb', + 'breadcrumbs' => 'breadcrumbs', + 'menu' => 'menu', + 'navigation' => 'navigation', + 'trail' => 'trail', + ), + 'donate_link' => 'https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=FD5XEU783BR8U&lc=US&item_name=Breadcrumb%20NavXT%20Donation¤cy_code=USD&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted', + 'icons' => + array ( + '1x' => 'https://ps.w.org/breadcrumb-navxt/assets/icon.svg?rev=1927103', + '2x' => 'https://ps.w.org/breadcrumb-navxt/assets/icon-256x256.png?rev=2410525', + 'svg' => 'https://ps.w.org/breadcrumb-navxt/assets/icon.svg?rev=1927103', + ), + 'wporg' => true, + ), + 10 => + array ( + 'name' => 'WP Recipe Maker', + 'slug' => 'wp-recipe-maker', + 'version' => '7.6.1', + 'author' => 'Bootstrapped Ventures', + 'author_profile' => 'https://profiles.wordpress.org/brechtvds', + 'requires' => '4.4', + 'tested' => '5.8.1', + 'requires_php' => '5.4', + 'rating' => 100, + 'ratings' => + array ( + 1 => 1, + 2 => 0, + 3 => 1, + 4 => 4, + 5 => 209, + ), + 'num_ratings' => 215, + 'support_threads' => 21, + 'support_threads_resolved' => 16, + 'active_installs' => 50000, + 'downloaded' => 1589300, + 'last_updated' => '2021-09-16 11:33am GMT', + 'added' => '2016-09-07', + 'homepage' => 'http://bootstrapped.ventures/wp-recipe-maker/', + 'short_description' => 'The easy and user-friendly recipe plugin for everyone. Automatic JSON-LD metadata for food AND how-to recipes will improve your SEO!', + 'download_link' => 'https://downloads.wordpress.org/plugin/wp-recipe-maker.zip', + 'tags' => + array ( + 'cooking' => 'cooking', + 'food' => 'food', + 'ingredients' => 'ingredients', + 'recipe' => 'Recipe', + 'recipes' => 'recipes', + ), + 'donate_link' => 'https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QG7KZMGFU325Y', + 'icons' => + array ( + '1x' => 'https://ps.w.org/wp-recipe-maker/assets/icon-128x128.png?rev=1491788', + '2x' => 'https://ps.w.org/wp-recipe-maker/assets/icon-256x256.png?rev=1491788', + ), + 'wporg' => true, + ), + 11 => + array ( + 'name' => 'Slim SEO – Fast & Automated WordPress SEO Plugin', + 'slug' => 'slim-seo', + 'version' => '3.10.2', + 'author' => 'eLightUp', + 'author_profile' => 'https://profiles.wordpress.org/rilwis', + 'requires' => '4.5', + 'tested' => '5.8.1', + 'requires_php' => '5.6', + 'rating' => 92, + 'ratings' => + array ( + 1 => 1, + 2 => 3, + 3 => 0, + 4 => 0, + 5 => 27, + ), + 'num_ratings' => 31, + 'support_threads' => 8, + 'support_threads_resolved' => 4, + 'active_installs' => 10000, + 'downloaded' => 180352, + 'last_updated' => '2021-09-27 6:47am GMT', + 'added' => '2018-12-31', + 'homepage' => 'https://wpslimseo.com', + 'short_description' => 'A full-featured SEO plugin for WordPress that's lightweight, blazing fast with minimum configuration. No bloats,…', + 'download_link' => 'https://downloads.wordpress.org/plugin/slim-seo.3.10.2.zip', + 'tags' => + array ( + 'google' => 'google', + 'schema' => 'schema', + 'search-engine-optimization' => 'search engine optimization', + 'seo' => 'seo', + 'sitemap' => 'sitemap', + ), + 'donate_link' => 'https://wpslimseo.com/pro/', + 'icons' => + array ( + '1x' => 'https://ps.w.org/slim-seo/assets/icon.svg?rev=2005049', + 'svg' => 'https://ps.w.org/slim-seo/assets/icon.svg?rev=2005049', + ), + 'wporg' => true, + ), + 12 => + array ( + 'name' => 'Schema & Structured Data for WP & AMP', + 'slug' => 'schema-and-structured-data-for-wp', + 'version' => '1.9.86', + 'author' => 'Magazine3', + 'author_profile' => 'https://profiles.wordpress.org/magazine3', + 'requires' => '3.0', + 'tested' => '5.8.1', + 'requires_php' => false, + 'rating' => 94, + 'ratings' => + array ( + 1 => 13, + 2 => 1, + 3 => 2, + 4 => 10, + 5 => 184, + ), + 'num_ratings' => 210, + 'support_threads' => 32, + 'support_threads_resolved' => 10, + 'active_installs' => 80000, + 'downloaded' => 2443675, + 'last_updated' => '2021-10-18 3:35pm GMT', + 'added' => '2018-08-06', + 'homepage' => '', + 'short_description' => 'Schema & Structured Data for WP & AMP adds Google Rich Snippets markup according to…', + 'download_link' => 'https://downloads.wordpress.org/plugin/schema-and-structured-data-for-wp.1.9.86.zip', + 'tags' => + array ( + 'google-snippets' => 'google snippets', + 'rich-snippets' => 'rich snippets', + 'schema' => 'schema', + 'schema-org' => 'schema.org', + 'structured-data' => 'structured data', + ), + 'donate_link' => '', + 'icons' => + array ( + '1x' => 'https://ps.w.org/schema-and-structured-data-for-wp/assets/icon-128x128.png?rev=1922284', + '2x' => 'https://ps.w.org/schema-and-structured-data-for-wp/assets/icon-256x256.png?rev=1922284', + ), + 'wporg' => true, + ), + 13 => + array ( + 'name' => 'GenerateBlocks', + 'slug' => 'generateblocks', + 'version' => '1.3.5', + 'author' => 'Tom Usborne', + 'author_profile' => 'https://profiles.wordpress.org/edge22', + 'requires' => '5.4', + 'tested' => '5.8.1', + 'requires_php' => '5.6', + 'rating' => 98, + 'ratings' => + array ( + 1 => 0, + 2 => 0, + 3 => 2, + 4 => 1, + 5 => 72, + ), + 'num_ratings' => 75, + 'support_threads' => 18, + 'support_threads_resolved' => 5, + 'active_installs' => 60000, + 'downloaded' => 255118, + 'last_updated' => '2021-07-19 6:12pm GMT', + 'added' => '2020-05-19', + 'homepage' => 'https://generateblocks.com', + 'short_description' => 'A small collection of lightweight WordPress blocks that can accomplish nearly anything.', + 'download_link' => 'https://downloads.wordpress.org/plugin/generateblocks.1.3.5.zip', + 'tags' => + array ( + 'blocks' => 'blocks', + 'container' => 'container', + 'grid' => 'grid', + 'gutenberg' => 'gutenberg', + 'headline' => 'headline', + ), + 'donate_link' => 'https://generateblocks.com', + 'icons' => + array ( + '1x' => 'https://ps.w.org/generateblocks/assets/icon-128x128.png?rev=2336822', + '2x' => 'https://ps.w.org/generateblocks/assets/icon-256x256.png?rev=2336822', + ), + 'wporg' => true, + ), + 14 => + array ( + 'name' => 'Blackhole for Bad Bots', + 'slug' => 'blackhole-bad-bots', + 'version' => '3.2', + 'author' => 'Jeff Starr', + 'author_profile' => 'https://profiles.wordpress.org/specialk', + 'requires' => '4.1', + 'tested' => '5.8.1', + 'requires_php' => '5.6.20', + 'rating' => 98, + 'ratings' => + array ( + 1 => 2, + 2 => 0, + 3 => 3, + 4 => 2, + 5 => 108, + ), + 'num_ratings' => 115, + 'support_threads' => 7, + 'support_threads_resolved' => 7, + 'active_installs' => 30000, + 'downloaded' => 311572, + 'last_updated' => '2021-07-19 8:41pm GMT', + 'added' => '2016-02-18', + 'homepage' => 'https://perishablepress.com/blackhole-bad-bots/', + 'short_description' => 'Blackhole is a WordPress security plugin that detects and traps bad bots in a virtual…', + 'download_link' => 'https://downloads.wordpress.org/plugin/blackhole-bad-bots.3.2.zip', + 'tags' => + array ( + 'anti-spam' => 'anti-spam', + 'bad-bots' => 'bad bots', + 'blackhole' => 'blackhole', + 'honeypot' => 'honeypot', + 'security' => 'security', + ), + 'donate_link' => 'https://monzillamedia.com/donate.html', + 'icons' => + array ( + '1x' => 'https://ps.w.org/blackhole-bad-bots/assets/icon-128x128.png?rev=1471215', + '2x' => 'https://ps.w.org/blackhole-bad-bots/assets/icon-256x256.png?rev=1471215', + ), + 'wporg' => true, + ), + 15 => + array ( + 'name' => 'Page View Count', + 'slug' => 'page-views-count', + 'version' => '2.4.12', + 'author' => 'a3rev Software', + 'author_profile' => 'https://profiles.wordpress.org/a3rev', + 'requires' => '5.0', + 'tested' => '5.8.1', + 'requires_php' => false, + 'rating' => 78, + 'ratings' => + array ( + 1 => 8, + 2 => 5, + 3 => 2, + 4 => 3, + 5 => 30, + ), + 'num_ratings' => 48, + 'support_threads' => 4, + 'support_threads_resolved' => 0, + 'active_installs' => 20000, + 'downloaded' => 407865, + 'last_updated' => '2021-07-19 10:48am GMT', + 'added' => '2012-12-21', + 'homepage' => '', + 'short_description' => 'Places an icon, all time views count and views today count at the bottom of…', + 'download_link' => 'https://downloads.wordpress.org/plugin/page-views-count.2.4.12.zip', + 'tags' => + array ( + 'gutenberg' => 'gutenberg', + 'page-view-count' => 'page view count', + 'post-view-count' => 'post view count', + 'post-views' => 'post views', + 'wordpress-page-view' => 'wordpress page view', + ), + 'donate_link' => '', + 'icons' => + array ( + '1x' => 'https://ps.w.org/page-views-count/assets/icon.svg?rev=986301', + '2x' => 'https://ps.w.org/page-views-count/assets/icon-256x256.png?rev=986301', + 'svg' => 'https://ps.w.org/page-views-count/assets/icon.svg?rev=986301', + ), + 'wporg' => true, + ), + 16 => + array ( + 'name' => 'Newspack Listings', + 'slug' => 'newspack-listings', + 'homepage' => 'https://github.com/Automattic/newspack-listings/releases', + 'short_description' => '

Create reusable content as listings and add them to lists wherever core blocks can be used

+', + 'icons' => + array ( + '1x' => 'https://amp-wp.org/wp-content/uploads/2021/02/listings2-285x160.jpg', + '2x' => 'https://amp-wp.org/wp-content/uploads/2021/02/listings2-372x209.jpg', + 'svg' => '', + ), + 'wporg' => false, + ), + 17 => + array ( + 'name' => 'Newspack Newsletters', + 'slug' => 'newspack-newsletters', + 'version' => '1.34.0', + 'author' => 'Automattic', + 'author_profile' => 'https://profiles.wordpress.org/automattic', + 'requires' => '5.3', + 'tested' => '5.8.0', + 'requires_php' => '5.6', + 'rating' => 0, + 'ratings' => + array ( + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 0, + ), + 'num_ratings' => 0, + 'support_threads' => 1, + 'support_threads_resolved' => 1, + 'active_installs' => 600, + 'downloaded' => 3413, + 'last_updated' => '2021-10-19 8:03pm GMT', + 'added' => '2021-02-15', + 'homepage' => 'https://newspack.pub', + 'short_description' => 'Create email newsletters with the Gutenberg editor and distribute them with your Mailchimp or Constant…', + 'download_link' => 'https://downloads.wordpress.org/plugin/newspack-newsletters.zip', + 'tags' => + array ( + 'constant-contact' => 'constant contact', + 'mailchimp' => 'mailchimp', + 'newsletters' => 'newsletters', + 'newspack' => 'Newspack', + 'wordpress-com' => 'WordPress.com', + ), + 'donate_link' => '', + 'icons' => + array ( + '1x' => 'https://ps.w.org/newspack-newsletters/assets/icon.svg?rev=2475195', + '2x' => 'https://ps.w.org/newspack-newsletters/assets/icon-256x256.png?rev=2475195', + 'svg' => 'https://ps.w.org/newspack-newsletters/assets/icon.svg?rev=2475195', + ), + 'wporg' => true, + ), + 18 => + array ( + 'name' => 'Web Stories', + 'slug' => 'web-stories', + 'version' => '1.13.0', + 'author' => 'Google', + 'author_profile' => 'https://profiles.wordpress.org/google', + 'requires' => '5.5', + 'tested' => '5.8.1', + 'requires_php' => '7.0', + 'rating' => 86, + 'ratings' => + array ( + 1 => 5, + 2 => 2, + 3 => 2, + 4 => 4, + 5 => 33, + ), + 'num_ratings' => 46, + 'support_threads' => 133, + 'support_threads_resolved' => 102, + 'active_installs' => 30000, + 'downloaded' => 382713, + 'last_updated' => '2021-10-12 10:17pm GMT', + 'added' => '2020-09-22', + 'homepage' => 'https://wp.stories.google/', + 'short_description' => 'Web Stories are a visual storytelling format for the open web which immerses your readers…', + 'download_link' => 'https://downloads.wordpress.org/plugin/web-stories.1.13.0.zip', + 'tags' => + array ( + 'amp' => 'amp', + 'google' => 'google', + 'stories' => 'stories', + 'storytelling' => 'storytelling', + 'web-stories' => 'web stories', + ), + 'donate_link' => '', + 'icons' => + array ( + '1x' => 'https://ps.w.org/web-stories/assets/icon.svg?rev=2386543', + '2x' => 'https://ps.w.org/web-stories/assets/icon-256x256.png?rev=2386543', + 'svg' => 'https://ps.w.org/web-stories/assets/icon.svg?rev=2386543', + ), + 'wporg' => true, + ), + 19 => + array ( + 'name' => 'Jetpack – WP Security, Backup, Speed, & Growth', + 'slug' => 'jetpack', + 'version' => '10.2.1', + 'author' => 'Automattic', + 'author_profile' => 'https://profiles.wordpress.org/automattic', + 'requires' => '5.7', + 'tested' => '5.8.1', + 'requires_php' => '5.6', + 'rating' => 78, + 'ratings' => + array ( + 1 => 321, + 2 => 80, + 3 => 82, + 4 => 138, + 5 => 1030, + ), + 'num_ratings' => 1651, + 'support_threads' => 305, + 'support_threads_resolved' => 271, + 'active_installs' => 5000000, + 'downloaded' => 249117459, + 'last_updated' => '2021-10-19 3:50pm GMT', + 'added' => '2011-01-20', + 'homepage' => 'https://jetpack.com', + 'short_description' => 'Improve your WP security with powerful one-click tools like backup and malware scan. Get essential free tools including stats, CDN and social sharing.', + 'download_link' => 'https://downloads.wordpress.org/plugin/jetpack.10.2.1.zip', + 'tags' => + array ( + 'backup' => 'backup', + 'malware' => 'malware', + 'scan' => 'scan', + 'security' => 'security', + 'woo' => 'woo', + ), + 'donate_link' => '', + 'icons' => + array ( + '1x' => 'https://ps.w.org/jetpack/assets/icon.svg?rev=2394525', + '2x' => 'https://ps.w.org/jetpack/assets/icon-256x256.png?rev=2394525', + 'svg' => 'https://ps.w.org/jetpack/assets/icon.svg?rev=2394525', + ), + 'wporg' => true, + ), + 20 => + array ( + 'name' => 'Easy Notification Bar', + 'slug' => 'easy-notification-bar', + 'version' => '1.4.3', + 'author' => 'WPExplorer', + 'author_profile' => 'https://profiles.wordpress.org/wpexplorer', + 'requires' => '5.2.0', + 'tested' => '5.8.1', + 'requires_php' => '5.6.2', + 'rating' => 82, + 'ratings' => + array ( + 1 => 0, + 2 => 1, + 3 => 1, + 4 => 1, + 5 => 4, + ), + 'num_ratings' => 7, + 'support_threads' => 5, + 'support_threads_resolved' => 3, + 'active_installs' => 4000, + 'downloaded' => 38280, + 'last_updated' => '2021-09-28 3:14am GMT', + 'added' => '2019-06-20', + 'homepage' => 'https://wordpress.org/plugins/easy-notification-bar/', + 'short_description' => 'Easily add a custom top bar notification message to on your site with live customization…', + 'download_link' => 'https://downloads.wordpress.org/plugin/easy-notification-bar.zip', + 'tags' => + array ( + 'notice' => 'notice', + 'notice-bar' => 'notice bar', + 'notification' => 'notification', + 'notification-bar' => 'notification bar', + 'top-bar' => 'top bar', + ), + 'donate_link' => '', + 'icons' => + array ( + '1x' => 'https://ps.w.org/easy-notification-bar/assets/icon-128x128.png?rev=2515988', + '2x' => 'https://ps.w.org/easy-notification-bar/assets/icon-256x256.png?rev=2515988', + ), + 'wporg' => true, + ), + 21 => + array ( + 'name' => 'Antispam Bee', + 'slug' => 'antispam-bee', + 'version' => '2.10.0', + 'author' => 'pluginkollektiv', + 'author_profile' => 'https://profiles.wordpress.org/pluginkollektiv', + 'requires' => '4.5', + 'tested' => '5.8.1', + 'requires_php' => '5.2', + 'rating' => 96, + 'ratings' => + array ( + 1 => 7, + 2 => 1, + 3 => 1, + 4 => 2, + 5 => 174, + ), + 'num_ratings' => 185, + 'support_threads' => 6, + 'support_threads_resolved' => 6, + 'active_installs' => 700000, + 'downloaded' => 5136488, + 'last_updated' => '2021-07-29 11:15am GMT', + 'added' => '2009-01-10', + 'homepage' => 'https://antispambee.pluginkollektiv.org/', + 'short_description' => 'Antispam plugin with a sophisticated tool set for effective day to day comment and trackback…', + 'download_link' => 'https://downloads.wordpress.org/plugin/antispam-bee.2.10.0.zip', + 'tags' => + array ( + 'anti-spam' => 'anti-spam', + 'antispam' => 'antispam', + 'block-spam' => 'block spam', + 'comment' => 'comment', + 'comments' => 'comments', + ), + 'donate_link' => 'https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=TD4AMD2D8EMZW', + 'icons' => + array ( + '1x' => 'https://ps.w.org/antispam-bee/assets/icon-128x128.png?rev=977629', + '2x' => 'https://ps.w.org/antispam-bee/assets/icon-256x256.png?rev=977629', + ), + 'wporg' => true, + ), + 22 => + array ( + 'name' => 'SimpleTOC – Table of Contents Block', + 'slug' => 'simpletoc', + 'version' => '4.8', + 'author' => 'Marc Tönsing', + 'author_profile' => 'https://profiles.wordpress.org/marcdk', + 'requires' => '5.0', + 'tested' => '5.8.1', + 'requires_php' => false, + 'rating' => 100, + 'ratings' => + array ( + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 24, + ), + 'num_ratings' => 24, + 'support_threads' => 5, + 'support_threads_resolved' => 4, + 'active_installs' => 2000, + 'downloaded' => 22163, + 'last_updated' => '2021-07-29 9:07pm GMT', + 'added' => '2020-04-14', + 'homepage' => 'https://marc.tv/simpletoc-wordpress-inhaltsverzeichnis-plugin-gutenberg/', + 'short_description' => 'Adds a custom Table of Contents Gutenberg block.', + 'download_link' => 'https://downloads.wordpress.org/plugin/simpletoc.4.8.zip', + 'tags' => + array ( + 'amp' => 'amp', + 'block' => 'block', + 'gutenberg' => 'gutenberg', + 'table-of-contents' => 'table of contents', + 'toc' => 'toc', + ), + 'donate_link' => 'https://marc.tv/out/donate', + 'icons' => + array ( + '1x' => 'https://ps.w.org/simpletoc/assets/icon.svg?rev=2451408', + '2x' => 'https://ps.w.org/simpletoc/assets/icon-256x256.png?rev=2451408', + 'svg' => 'https://ps.w.org/simpletoc/assets/icon.svg?rev=2451408', + ), + 'wporg' => true, + ), + 23 => + array ( + 'name' => 'Log in with Google', + 'slug' => 'login-with-google', + 'version' => '1.2.1', + 'author' => 'rtCamp', + 'author_profile' => 'https://profiles.wordpress.org/rtcamp', + 'requires' => '5.4.2', + 'tested' => '5.7.3', + 'requires_php' => '7.3', + 'rating' => 100, + 'ratings' => + array ( + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 6, + ), + 'num_ratings' => 6, + 'support_threads' => 2, + 'support_threads_resolved' => 0, + 'active_installs' => 400, + 'downloaded' => 3450, + 'last_updated' => '2021-07-23 10:00pm GMT', + 'added' => '2020-10-01', + 'homepage' => '', + 'short_description' => 'Minimal plugin that allows WordPress users to log in using Google.', + 'download_link' => 'https://downloads.wordpress.org/plugin/login-with-google.1.2.1.zip', + 'tags' => + array ( + 'authentication' => 'authentication', + 'google-login' => 'Google Login', + 'oauth' => 'oauth', + 'sign-in' => 'sign in', + 'sso' => 'sso', + ), + 'donate_link' => 'https://rtcamp.com/', + 'icons' => + array ( + '1x' => 'https://ps.w.org/login-with-google/assets/icon-128x128.png?rev=2402713', + '2x' => 'https://ps.w.org/login-with-google/assets/icon-256x256.png?rev=2402713', + ), + 'wporg' => true, + ), + 24 => + array ( + 'name' => 'Search with Google', + 'slug' => 'search-with-google', + 'version' => '1.0', + 'author' => 'rtCamp', + 'author_profile' => 'https://profiles.wordpress.org/rtcamp', + 'requires' => '4.8', + 'tested' => '5.5.6', + 'requires_php' => '7.0', + 'rating' => 60, + 'ratings' => + array ( + 1 => 1, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 1, + ), + 'num_ratings' => 2, + 'support_threads' => 1, + 'support_threads_resolved' => 0, + 'active_installs' => 20, + 'downloaded' => 308, + 'last_updated' => '2020-10-19 5:28pm GMT', + 'added' => '2020-10-19', + 'homepage' => '', + 'short_description' => 'Replace WordPress default search with server-side rendered Google Custom Search results.', + 'download_link' => 'https://downloads.wordpress.org/plugin/search-with-google.zip', + 'tags' => + array ( + 'cse' => 'cse', + 'custom-search-engine' => 'custom search engine', + 'google' => 'google', + 'programmable-search' => 'programmable search', + 'search' => 'search', + ), + 'donate_link' => 'https://rtcamp.com/', + 'icons' => + array ( + '1x' => 'https://ps.w.org/search-with-google/assets/icon-128x128.png?rev=2402707', + '2x' => 'https://ps.w.org/search-with-google/assets/icon-256x256.png?rev=2402707', + ), + 'wporg' => true, + ), + 25 => + array ( + 'name' => 'Page Builder Gutenberg Blocks – CoBlocks', + 'slug' => 'coblocks', + 'version' => '2.17.0', + 'author' => 'GoDaddy', + 'author_profile' => 'https://profiles.wordpress.org/godaddy', + 'requires' => '5.0', + 'tested' => '5.8.1', + 'requires_php' => '5.6', + 'rating' => 88, + 'ratings' => + array ( + 1 => 7, + 2 => 3, + 3 => 4, + 4 => 5, + 5 => 63, + ), + 'num_ratings' => 82, + 'support_threads' => 16, + 'support_threads_resolved' => 3, + 'active_installs' => 500000, + 'downloaded' => 5726811, + 'last_updated' => '2021-10-05 4:45pm GMT', + 'added' => '2018-04-19', + 'homepage' => '', + 'short_description' => 'CoBlocks is a suite of page builder WordPress blocks for Gutenberg, with 10+ new blocks and a true page builder experience with rows and columns.', + 'download_link' => 'https://downloads.wordpress.org/plugin/coblocks.2.17.0.zip', + 'tags' => + array ( + 'blocks' => 'blocks', + 'gutenberg' => 'gutenberg', + 'gutenberg-blocks' => 'gutenberg blocks', + 'page-builder' => 'page builder', + 'wordpress-blocks' => 'wordpress blocks', + ), + 'donate_link' => '', + 'icons' => + array ( + '1x' => 'https://ps.w.org/coblocks/assets/icon-128x128.jpg?rev=2243972', + '2x' => 'https://ps.w.org/coblocks/assets/icon-256x256.jpg?rev=2243972', + ), + 'wporg' => true, + ), + 26 => + array ( + 'name' => 'Simple Author Box', + 'slug' => 'simple-author-box', + 'version' => '2.42', + 'author' => 'WebFactory Ltd', + 'author_profile' => 'https://profiles.wordpress.org/webfactory', + 'requires' => '4.6', + 'tested' => '5.8.1', + 'requires_php' => '5.6', + 'rating' => 88, + 'ratings' => + array ( + 1 => 9, + 2 => 0, + 3 => 5, + 4 => 8, + 5 => 75, + ), + 'num_ratings' => 97, + 'support_threads' => 5, + 'support_threads_resolved' => 5, + 'active_installs' => 50000, + 'downloaded' => 910046, + 'last_updated' => '2021-08-13 8:08am GMT', + 'added' => '2014-08-08', + 'homepage' => 'https://wpauthorbox.com/', + 'short_description' => 'Add a responsive author box with social icons to any post. Great author box for any site!', + 'download_link' => 'https://downloads.wordpress.org/plugin/simple-author-box.2.42.zip', + 'tags' => + array ( + 'author-bio' => 'author bio', + 'author-box' => 'author box', + 'author-profile-fields' => 'author profile fields', + 'author-social-icons' => 'author social icons', + 'responsive-author-box' => 'responsive author box', + ), + 'donate_link' => '', + 'icons' => + array ( + '1x' => 'https://ps.w.org/simple-author-box/assets/icon-128x128.jpg?rev=1821054', + ), + 'wporg' => true, + ), + 27 => + array ( + 'name' => 'Genesis Blocks', + 'slug' => 'genesis-blocks', + 'version' => '1.3.0', + 'author' => 'StudioPress', + 'author_profile' => 'https://profiles.wordpress.org/studiopress', + 'requires' => '5.3', + 'tested' => '5.8.1', + 'requires_php' => '7.1', + 'rating' => 90, + 'ratings' => + array ( + 1 => 1, + 2 => 0, + 3 => 1, + 4 => 0, + 5 => 10, + ), + 'num_ratings' => 12, + 'support_threads' => 8, + 'support_threads_resolved' => 1, + 'active_installs' => 40000, + 'downloaded' => 237934, + 'last_updated' => '2021-09-23 6:49pm GMT', + 'added' => '2020-08-25', + 'homepage' => 'https://studiopress.com/genesis-pro/', + 'short_description' => 'A collection of content blocks, sections, & full-page layouts for the block editor.', + 'download_link' => 'https://downloads.wordpress.org/plugin/genesis-blocks.1.3.0.zip', + 'tags' => + array ( + 'blocks' => 'blocks', + 'editor' => 'editor', + 'gutenberg' => 'gutenberg', + 'gutenberg-blocks' => 'gutenberg blocks', + 'page-builder' => 'page builder', + ), + 'donate_link' => 'https://studiopress.com', + 'icons' => + array ( + '1x' => 'https://ps.w.org/genesis-blocks/assets/icon-128x128.png?rev=2368839', + '2x' => 'https://ps.w.org/genesis-blocks/assets/icon-256x256.png?rev=2368840', + ), + 'wporg' => true, + ), + 28 => + array ( + 'name' => 'MathML Block', + 'slug' => 'mathml-block', + 'version' => '1.2.1', + 'author' => 'adamsilverstein', + 'author_profile' => 'https://profiles.wordpress.org/adamsilverstein', + 'requires' => '5.0', + 'tested' => '5.8.1', + 'requires_php' => '5.6', + 'rating' => 90, + 'ratings' => + array ( + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 1, + 5 => 1, + ), + 'num_ratings' => 2, + 'support_threads' => 1, + 'support_threads_resolved' => 0, + 'active_installs' => 500, + 'downloaded' => 8169, + 'last_updated' => '2021-09-11 2:30pm GMT', + 'added' => '2018-12-28', + 'homepage' => '', + 'short_description' => 'A MathML block for the WordPress block editor (Gutenberg).', + 'download_link' => 'https://downloads.wordpress.org/plugin/mathml-block.zip', + 'tags' => + array ( + 'block' => 'block', + 'block-editor' => 'block-editor', + 'gutenberg' => 'gutenberg', + 'math' => 'math', + 'mathml' => 'mathml', + ), + 'donate_link' => '', + 'icons' => + array ( + '1x' => 'https://ps.w.org/mathml-block/assets/icon-128x128.png?rev=2002452', + '2x' => 'https://ps.w.org/mathml-block/assets/icon-256x256.png?rev=2002452', + ), + 'wporg' => true, + ), + 29 => + array ( + 'name' => 'Calculated Fields Form', + 'slug' => 'calculated-fields-form', + 'version' => '1.1.29', + 'author' => 'CodePeople', + 'author_profile' => 'https://profiles.wordpress.org/codepeople', + 'requires' => '3.0.5', + 'tested' => '5.8.1', + 'requires_php' => false, + 'rating' => 96, + 'ratings' => + array ( + 1 => 20, + 2 => 2, + 3 => 4, + 4 => 27, + 5 => 686, + ), + 'num_ratings' => 739, + 'support_threads' => 107, + 'support_threads_resolved' => 107, + 'active_installs' => 60000, + 'downloaded' => 3645736, + 'last_updated' => '2021-10-18 9:26am GMT', + 'added' => '2013-03-12', + 'homepage' => 'https://cff.dwbooster.com', + 'short_description' => 'Calculated Fields Form allows you to create both simple and rich forms, quickly like a…', + 'download_link' => 'https://downloads.wordpress.org/plugin/calculated-fields-form.zip', + 'tags' => + array ( + 'calculator' => 'calculator', + 'contact-form' => 'contact form', + 'form' => 'form', + 'form-builder' => 'form builder', + 'quote-form' => 'quote form', + ), + 'donate_link' => 'http://cff.dwbooster.com', + 'icons' => + array ( + '1x' => 'https://ps.w.org/calculated-fields-form/assets/icon-128x128.jpg?rev=1734377', + '2x' => 'https://ps.w.org/calculated-fields-form/assets/icon-256x256.jpg?rev=1734377', + ), + 'wporg' => true, + ), + 30 => + array ( + 'name' => 'All in One SEO – Best WordPress SEO Plugin – Easily Improve SEO Rankings & Increase Traffic', + 'slug' => 'all-in-one-seo-pack', + 'version' => '4.1.4.4', + 'author' => 'All in One SEO Team', + 'author_profile' => 'https://profiles.wordpress.org/smub', + 'requires' => '4.9', + 'tested' => '5.8.1', + 'requires_php' => '5.4', + 'rating' => 92, + 'ratings' => + array ( + 1 => 166, + 2 => 22, + 3 => 15, + 4 => 60, + 5 => 1569, + ), + 'num_ratings' => 1832, + 'support_threads' => 132, + 'support_threads_resolved' => 128, + 'active_installs' => 2000000, + 'downloaded' => 86049973, + 'last_updated' => '2021-09-22 3:46pm GMT', + 'added' => '2007-03-30', + 'homepage' => 'https://aioseo.com/', + 'short_description' => 'The original WordPress SEO plugin. Improve your WordPress SEO rankings and traffic with our comprehensive SEO tools and smart SEO optimizations.', + 'download_link' => 'https://downloads.wordpress.org/plugin/all-in-one-seo-pack.4.1.4.4.zip', + 'tags' => + array ( + 'google-search-console' => 'google search console', + 'meta-description' => 'meta description', + 'schema' => 'schema', + 'seo' => 'seo', + 'xml-sitemap' => 'xml sitemap', + ), + 'donate_link' => '', + 'icons' => + array ( + '1x' => 'https://ps.w.org/all-in-one-seo-pack/assets/icon.svg?rev=2443290', + '2x' => 'https://ps.w.org/all-in-one-seo-pack/assets/icon-256x256.png?rev=2443290', + 'svg' => 'https://ps.w.org/all-in-one-seo-pack/assets/icon.svg?rev=2443290', + ), + 'wporg' => true, + ), + 31 => + array ( + 'name' => 'Weglot Translate – Translate your WordPress website and go multilingual', + 'slug' => 'weglot', + 'version' => '3.4', + 'author' => 'Weglot Translate team', + 'author_profile' => 'https://profiles.wordpress.org/remyb92', + 'requires' => '4.5', + 'tested' => '5.8.1', + 'requires_php' => '5.6', + 'rating' => 96, + 'ratings' => + array ( + 1 => 40, + 2 => 7, + 3 => 6, + 4 => 27, + 5 => 1224, + ), + 'num_ratings' => 1304, + 'support_threads' => 5, + 'support_threads_resolved' => 4, + 'active_installs' => 40000, + 'downloaded' => 1241073, + 'last_updated' => '2021-09-24 3:41pm GMT', + 'added' => '2015-09-27', + 'homepage' => 'http://wordpress.org/plugins/weglot/', + 'short_description' => 'Translate your WordPress website in 110+ languages within minutes with Weglot Translate, without any coding.', + 'download_link' => 'https://downloads.wordpress.org/plugin/weglot.3.4.zip', + 'tags' => + array ( + 'language' => 'language', + 'localization' => 'localization', + 'multilingual' => 'multilingual', + 'translate' => 'translate', + 'translation' => 'translation', + ), + 'donate_link' => '', + 'icons' => + array ( + '1x' => 'https://ps.w.org/weglot/assets/icon-128x128.png?rev=2186774', + '2x' => 'https://ps.w.org/weglot/assets/icon-256x256.png?rev=2186774', + ), + 'wporg' => true, + ), + 32 => + array ( + 'name' => 'Rank Math SEO – Best SEO Plugin For WordPress To Increase Your SEO Traffic', + 'slug' => 'seo-by-rank-math', + 'version' => '1.0.74', + 'author' => 'Rank Math', + 'author_profile' => 'https://profiles.wordpress.org/rankmath', + 'requires' => '5.6', + 'tested' => '5.8.1', + 'requires_php' => '7.2', + 'rating' => 98, + 'ratings' => + array ( + 1 => 74, + 2 => 17, + 3 => 21, + 4 => 52, + 5 => 3559, + ), + 'num_ratings' => 3723, + 'support_threads' => 124, + 'support_threads_resolved' => 120, + 'active_installs' => 1000000, + 'downloaded' => 21549815, + 'last_updated' => '2021-10-13 8:38am GMT', + 'added' => '2018-11-19', + 'homepage' => 'https://s.rankmath.com/home', + 'short_description' => 'Rank Math SEO is the Best WordPress SEO plugin combines the features of many SEO tools in a single package & helps you multiply your SEO traffic.', + 'download_link' => 'https://downloads.wordpress.org/plugin/seo-by-rank-math.1.0.74.zip', + 'tags' => + array ( + 'google-search-console' => 'google search console', + 'redirection' => 'redirection', + 'schema' => 'schema', + 'seo' => 'seo', + 'sitemap' => 'sitemap', + ), + 'donate_link' => '', + 'icons' => + array ( + '1x' => 'https://ps.w.org/seo-by-rank-math/assets/icon.svg?rev=2348086', + '2x' => 'https://ps.w.org/seo-by-rank-math/assets/icon-256x256.png?rev=2348086', + 'svg' => 'https://ps.w.org/seo-by-rank-math/assets/icon.svg?rev=2348086', + ), + 'wporg' => true, + ), + 33 => + array ( + 'name' => 'Head, Footer and Post Injections', + 'slug' => 'header-footer', + 'version' => '3.2.2', + 'author' => 'Stefano Lissa', + 'author_profile' => 'https://profiles.wordpress.org/satollo', + 'requires' => '4.0', + 'tested' => '5.7.3', + 'requires_php' => '5.6', + 'rating' => 98, + 'ratings' => + array ( + 1 => 3, + 2 => 2, + 3 => 4, + 4 => 13, + 5 => 627, + ), + 'num_ratings' => 649, + 'support_threads' => 1, + 'support_threads_resolved' => 0, + 'active_installs' => 300000, + 'downloaded' => 2808630, + 'last_updated' => '2021-03-17 1:26pm GMT', + 'added' => '2008-04-07', + 'homepage' => 'https://www.satollo.net/plugins/header-footer', + 'short_description' => 'Header and Footer plugin let you to add html code to the head and footer sections of your blog... and more!', + 'download_link' => 'https://downloads.wordpress.org/plugin/header-footer.3.2.2.zip', + 'tags' => + array ( + 'blog' => 'blog', + 'footer' => 'footer', + 'header' => 'header', + 'page' => 'page', + 'single' => 'single', + ), + 'donate_link' => 'http://www.satollo.net/donations', + 'icons' => + array ( + '1x' => 'https://ps.w.org/header-footer/assets/icon-256x256.png?rev=1064219', + '2x' => 'https://ps.w.org/header-footer/assets/icon-256x256.png?rev=1064219', + ), + 'wporg' => true, + ), + 34 => + array ( + 'name' => 'WP Rocket', + 'slug' => 'wp-rocket', + 'homepage' => 'https://wp-rocket.me/', + 'short_description' => '

Powerful caching to speed up your WordPress website in a few clicks. No coding required.

+', + 'icons' => + array ( + '1x' => 'https://amp-wp.org/wp-content/uploads/2020/06/WP-Rocket-285x160.png', + '2x' => 'https://amp-wp.org/wp-content/uploads/2020/06/WP-Rocket-372x209.png', + 'svg' => '', + ), + 'wporg' => false, + ), + 35 => + array ( + 'name' => 'Statify', + 'slug' => 'statify', + 'version' => '1.8.3', + 'author' => 'pluginkollektiv', + 'author_profile' => 'https://profiles.wordpress.org/pluginkollektiv', + 'requires' => '4.7', + 'tested' => '5.8.1', + 'requires_php' => '5.2', + 'rating' => 94, + 'ratings' => + array ( + 1 => 2, + 2 => 0, + 3 => 0, + 4 => 3, + 5 => 33, + ), + 'num_ratings' => 38, + 'support_threads' => 2, + 'support_threads_resolved' => 1, + 'active_installs' => 200000, + 'downloaded' => 1524456, + 'last_updated' => '2021-07-17 8:46am GMT', + 'added' => '2011-03-16', + 'homepage' => 'https://statify.pluginkollektiv.org/', + 'short_description' => 'Visitor statistics for WordPress with focus on data protection, transparency and clarity. Perfect as a widget in your WordPress Dashboard.', + 'download_link' => 'https://downloads.wordpress.org/plugin/statify.1.8.3.zip', + 'tags' => + array ( + 'analytics' => 'analytics', + 'dashboard' => 'dashboard', + 'pageviews' => 'pageviews', + 'privacy' => 'privacy', + 'statistics' => 'statistics', + ), + 'donate_link' => 'https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=TD4AMD2D8EMZW', + 'icons' => + array ( + '1x' => 'https://ps.w.org/statify/assets/icon-128x128.png?rev=2355063', + '2x' => 'https://ps.w.org/statify/assets/icon-256x256.png?rev=2355063', + ), + 'wporg' => true, + ), + 36 => + array ( + 'name' => 'LIQUID BLOCKS GALLERY 37+ Free Designs', + 'slug' => 'liquid-blocks', + 'version' => '1.1.1', + 'author' => 'LIQUID DESIGN Ltd.', + 'author_profile' => 'https://profiles.wordpress.org/lqd', + 'requires' => '5.2', + 'tested' => '5.8.1', + 'requires_php' => false, + 'rating' => 100, + 'ratings' => + array ( + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 1, + ), + 'num_ratings' => 1, + 'support_threads' => 1, + 'support_threads_resolved' => 0, + 'active_installs' => 4000, + 'downloaded' => 21060, + 'last_updated' => '2021-07-22 6:55am GMT', + 'added' => '2019-10-18', + 'homepage' => 'https://lqd.jp/wp/plugin.html', + 'short_description' => 'If you’re looking to create block page sections that look great give LIQUID BLOCKS a…', + 'download_link' => 'https://downloads.wordpress.org/plugin/liquid-blocks.zip', + 'tags' => + array ( + 'block' => 'block', + 'block-editor' => 'block-editor', + 'blocks' => 'blocks', + 'editor' => 'editor', + 'gutenberg' => 'gutenberg', + ), + 'donate_link' => 'https://lqd.jp/wp/plugin.html', + 'icons' => + array ( + '1x' => 'https://ps.w.org/liquid-blocks/assets/icon-128x128.png?rev=2175390', + ), + 'wporg' => true, + ), + 37 => + array ( + 'name' => 'Schema', + 'slug' => 'schema', + 'version' => '1.7.9.3', + 'author' => 'Hesham', + 'author_profile' => 'https://profiles.wordpress.org/hishaman', + 'requires' => '4.0', + 'tested' => '5.8.1', + 'requires_php' => '5.4', + 'rating' => 90, + 'ratings' => + array ( + 1 => 15, + 2 => 6, + 3 => 4, + 4 => 8, + 5 => 163, + ), + 'num_ratings' => 196, + 'support_threads' => 6, + 'support_threads_resolved' => 1, + 'active_installs' => 60000, + 'downloaded' => 1109255, + 'last_updated' => '2021-10-13 3:10pm GMT', + 'added' => '2016-05-11', + 'homepage' => 'https://schema.press', + 'short_description' => 'Get the next generation of Schema Structured Data to enhance your WordPress site presentation in Google search results.', + 'download_link' => 'https://downloads.wordpress.org/plugin/schema.zip', + 'tags' => + array ( + 'json-ld' => 'JSON-LD', + 'rich-snippets' => 'rich snippets', + 'schema' => 'schema', + 'schema-org' => 'schema.org', + 'structured-data' => 'structured data', + ), + 'donate_link' => 'https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=NGVUBT2QXN7YL', + 'icons' => + array ( + '1x' => 'https://ps.w.org/schema/assets/icon-128x128.png?rev=1750172', + '2x' => 'https://ps.w.org/schema/assets/icon-256x256.png?rev=1750173', + ), + 'wporg' => true, + ), + 38 => + array ( + 'name' => 'Iframely – rich media embeds for 2000+ publishers', + 'slug' => 'iframely', + 'version' => '0.7.2', + 'author' => 'Itteco Corp.', + 'author_profile' => 'https://profiles.wordpress.org/ivanp', + 'requires' => '3.5.1', + 'tested' => '5.4.7', + 'requires_php' => false, + 'rating' => 80, + 'ratings' => + array ( + 1 => 2, + 2 => 0, + 3 => 1, + 4 => 0, + 5 => 7, + ), + 'num_ratings' => 10, + 'support_threads' => 2, + 'support_threads_resolved' => 1, + 'active_installs' => 3000, + 'downloaded' => 97554, + 'last_updated' => '2020-05-22 5:21pm GMT', + 'added' => '2013-10-03', + 'homepage' => 'http://wordpress.org/plugins/iframely/', + 'short_description' => 'Iframely extends WordPress default rich media embeds and adds support of over 2000 more providers…', + 'download_link' => 'https://downloads.wordpress.org/plugin/iframely.zip', + 'tags' => + array ( + 'embed' => 'embed', + 'embed-code' => 'embed code', + 'iframely' => 'iframely', + 'oembed' => 'oembed', + 'responsive' => 'responsive', + ), + 'donate_link' => '', + 'icons' => + array ( + 'default' => 'https://s.w.org/plugins/geopattern-icon/iframely.svg', + ), + 'wporg' => true, + ), + 39 => + array ( + 'name' => 'Pym.js Embeds', + 'slug' => 'pym-shortcode', + 'version' => '1.3.2.4', + 'author' => 'INN Labs', + 'author_profile' => 'https://profiles.wordpress.org/automattic', + 'requires' => '3.0.1', + 'tested' => '5.4.7', + 'requires_php' => '5.3', + 'rating' => 0, + 'ratings' => + array ( + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 0, + ), + 'num_ratings' => 0, + 'support_threads' => 1, + 'support_threads_resolved' => 0, + 'active_installs' => 100, + 'downloaded' => 2342, + 'last_updated' => '2020-03-26 6:09pm GMT', + 'added' => '2016-06-17', + 'homepage' => 'https://github.com/INN/pym-shortcode', + 'short_description' => 'A WordPress block and shortcode for embedding iframes that are responsive horizontally and vertically, using the NPR Visuals Team's Pym.js.', + 'download_link' => 'https://downloads.wordpress.org/plugin/pym-shortcode.1.3.2.4.zip', + 'tags' => + array ( + 'embeds' => 'Embeds', + 'iframe' => 'iframe', + 'javascript' => 'javascript', + 'responsive' => 'responsive', + 'shortcode' => 'shortcode', + ), + 'donate_link' => 'https://inn.org/donate', + 'icons' => + array ( + '1x' => 'https://ps.w.org/pym-shortcode/assets/icon.svg?rev=1944461', + 'svg' => 'https://ps.w.org/pym-shortcode/assets/icon.svg?rev=1944461', + ), + 'wporg' => true, + ), + 40 => + array ( + 'name' => 'PWA', + 'slug' => 'pwa', + 'version' => '0.6.0', + 'author' => 'PWA Plugin Contributors', + 'author_profile' => 'https://profiles.wordpress.org/westonruter', + 'requires' => '5.5', + 'tested' => '5.8.1', + 'requires_php' => '5.6', + 'rating' => 86, + 'ratings' => + array ( + 1 => 3, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 13, + ), + 'num_ratings' => 16, + 'support_threads' => 10, + 'support_threads_resolved' => 5, + 'active_installs' => 40000, + 'downloaded' => 301659, + 'last_updated' => '2021-09-21 7:17pm GMT', + 'added' => '2018-07-12', + 'homepage' => 'https://github.com/GoogleChromeLabs/pwa-wp', + 'short_description' => 'WordPress feature plugin to bring Progressive Web App (PWA) capabilities to Core', + 'download_link' => 'https://downloads.wordpress.org/plugin/pwa.0.6.0.zip', + 'tags' => + array ( + 'https' => 'https', + 'progressive-web-apps' => 'progressive web apps', + 'pwa' => 'pwa', + 'service-workers' => 'service-workers.', + 'web-app-manifest' => 'web app manifest', + ), + 'donate_link' => '', + 'icons' => + array ( + '1x' => 'https://ps.w.org/pwa/assets/icon.svg?rev=1908485', + '2x' => 'https://ps.w.org/pwa/assets/icon-256x256.png?rev=1908485', + 'svg' => 'https://ps.w.org/pwa/assets/icon.svg?rev=1908485', + ), + 'wporg' => true, + ), + 41 => + array ( + 'name' => 'MC4WP: Mailchimp for WordPress', + 'slug' => 'mailchimp-for-wp', + 'version' => '4.8.6', + 'author' => 'ibericode', + 'author_profile' => 'https://profiles.wordpress.org/dvankooten', + 'requires' => '4.6', + 'tested' => '5.8.1', + 'requires_php' => '5.3', + 'rating' => 96, + 'ratings' => + array ( + 1 => 36, + 2 => 10, + 3 => 16, + 4 => 35, + 5 => 1286, + ), + 'num_ratings' => 1383, + 'support_threads' => 32, + 'support_threads_resolved' => 30, + 'active_installs' => 2000000, + 'downloaded' => 36068700, + 'last_updated' => '2021-08-04 7:14am GMT', + 'added' => '2013-06-19', + 'homepage' => 'https://www.mc4wp.com/#utm_source=wp-plugin&utm_medium=mailchimp-for-wp&utm_campaign=plugins-page', + 'short_description' => 'Mailchimp for WordPress, the #1 unofficial Mailchimp plugin.', + 'download_link' => 'https://downloads.wordpress.org/plugin/mailchimp-for-wp.4.8.6.zip', + 'tags' => + array ( + 'email' => 'email', + 'mailchimp' => 'mailchimp', + 'marketing' => 'marketing', + 'mc4wp' => 'mc4wp', + 'newsletter' => 'newsletter', + ), + 'donate_link' => 'https://www.mc4wp.com/#utm_source=wp-plugin-repo&utm_medium=mailchimp-for-wp&utm_campaign=donate-link', + 'icons' => + array ( + '1x' => 'https://ps.w.org/mailchimp-for-wp/assets/icon-128x128.png?rev=1224577', + '2x' => 'https://ps.w.org/mailchimp-for-wp/assets/icon-256x256.png?rev=1224577', + ), + 'wporg' => true, + ), + 42 => + array ( + 'name' => 'Site Kit by Google', + 'slug' => 'google-site-kit', + 'homepage' => 'https://sitekit.withgoogle.com/', + 'short_description' => '

Site Kit is the official WordPress plugin from Google for insights about how people find and use your site. Site Kit is the one-stop solution to deploy, manage, and get insights from critical Google tools to make the site successful on the web. It provides authoritative, up-to-date insights from multiple Google products directly on the

+ +', + 'icons' => + array ( + '1x' => 'https://amp-wp.org/wp-content/uploads/2019/12/site-kit-by-google-logo-285x160.png', + '2x' => 'https://amp-wp.org/wp-content/uploads/2019/12/site-kit-by-google-logo-372x209.png', + 'svg' => '', + ), + 'wporg' => false, + ), + 43 => + array ( + 'name' => 'Newspack Blocks', + 'slug' => 'newspack-blocks', + 'homepage' => 'https://github.com/Automattic/newspack-blocks', + 'short_description' => '

A collection of useful and easy to use Gutenberg based blocks, developed primarily for the Newspack project.

+', + 'icons' => + array ( + '1x' => 'https://amp-wp.org/wp-content/uploads/2019/11/newspack_blocks-285x160.jpg', + '2x' => 'https://amp-wp.org/wp-content/uploads/2019/11/newspack_blocks-372x209.jpg', + 'svg' => '', + ), + 'wporg' => false, + ), + 44 => + array ( + 'name' => 'Advanced Ads – Ad Manager & AdSense', + 'slug' => 'advanced-ads', + 'version' => '1.29.1', + 'author' => 'Thomas Maier, Advanced Ads GmbH', + 'author_profile' => 'https://profiles.wordpress.org/webzunft', + 'requires' => '4.9', + 'tested' => '5.8.1', + 'requires_php' => '5.6', + 'rating' => 98, + 'ratings' => + array ( + 1 => 17, + 2 => 1, + 3 => 9, + 4 => 21, + 5 => 1195, + ), + 'num_ratings' => 1243, + 'support_threads' => 74, + 'support_threads_resolved' => 67, + 'active_installs' => 100000, + 'downloaded' => 5344580, + 'last_updated' => '2021-10-14 10:40am GMT', + 'added' => '2014-06-23', + 'homepage' => 'https://wpadvancedads.com', + 'short_description' => 'Manage and optimize all ad types. Support for Google AdSense Auto ads, Amazon, image banners,…', + 'download_link' => 'https://downloads.wordpress.org/plugin/advanced-ads.1.29.1.zip', + 'tags' => + array ( + 'ad-manager' => 'ad manager', + 'ad-rotation' => 'ad rotation', + 'ads' => 'ads', + 'adsense' => 'adsense', + 'banner' => 'banner', + ), + 'donate_link' => '', + 'icons' => + array ( + '1x' => 'https://ps.w.org/advanced-ads/assets/icon-128x128.gif?rev=2293174', + '2x' => 'https://ps.w.org/advanced-ads/assets/icon-256x256.gif?rev=2293174', + ), + 'wporg' => true, + ), + 45 => + array ( + 'name' => 'Syntax-highlighting Code Block (with Server-side Rendering)', + 'slug' => 'syntax-highlighting-code-block', + 'version' => '1.3.1', + 'author' => 'Weston Ruter', + 'author_profile' => 'https://profiles.wordpress.org/westonruter', + 'requires' => '5.5', + 'tested' => '5.8.1', + 'requires_php' => '5.6', + 'rating' => 100, + 'ratings' => + array ( + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 18, + ), + 'num_ratings' => 18, + 'support_threads' => 3, + 'support_threads_resolved' => 2, + 'active_installs' => 1000, + 'downloaded' => 12474, + 'last_updated' => '2021-09-21 7:11pm GMT', + 'added' => '2019-07-30', + 'homepage' => 'https://github.com/westonruter/syntax-highlighting-code-block', + 'short_description' => 'Extending the Code block with syntax highlighting rendered on the server, thus being AMP-compatible and…', + 'download_link' => 'https://downloads.wordpress.org/plugin/syntax-highlighting-code-block.1.3.1.zip', + 'tags' => + array ( + 'block' => 'block', + 'code' => 'code', + 'code-highlighting' => 'code highlighting', + 'code-syntax' => 'code syntax', + 'syntax-highlight' => 'syntax highlight', + ), + 'donate_link' => '', + 'icons' => + array ( + '1x' => 'https://ps.w.org/syntax-highlighting-code-block/assets/icon.svg?rev=2131108', + '2x' => 'https://ps.w.org/syntax-highlighting-code-block/assets/icon-256x256.png?rev=2131108', + 'svg' => 'https://ps.w.org/syntax-highlighting-code-block/assets/icon.svg?rev=2131108', + ), + 'wporg' => true, + ), + 46 => + array ( + 'name' => 'Contact Form by WPForms – Drag & Drop Form Builder for WordPress', + 'slug' => 'wpforms-lite', + 'version' => '1.7.0', + 'author' => 'WPForms', + 'author_profile' => 'https://profiles.wordpress.org/jaredatch', + 'requires' => '4.9', + 'tested' => '5.8.1', + 'requires_php' => '5.5', + 'rating' => 98, + 'ratings' => + array ( + 1 => 218, + 2 => 47, + 3 => 57, + 4 => 226, + 5 => 9824, + ), + 'num_ratings' => 10372, + 'support_threads' => 88, + 'support_threads_resolved' => 76, + 'active_installs' => 5000000, + 'downloaded' => 84741294, + 'last_updated' => '2021-10-07 11:02am GMT', + 'added' => '2016-03-14', + 'homepage' => 'https://wpforms.com', + 'short_description' => 'The best WordPress contact form plugin. Drag & Drop online form builder that helps you create beautiful contact forms with just a few clicks.', + 'download_link' => 'https://downloads.wordpress.org/plugin/wpforms-lite.1.7.0.zip', + 'tags' => + array ( + 'contact-form' => 'contact form', + 'contact-form-plugin' => 'contact form plugin', + 'custom-form' => 'custom form', + 'form-builder' => 'form builder', + 'forms' => 'forms', + ), + 'donate_link' => '', + 'icons' => + array ( + '1x' => 'https://ps.w.org/wpforms-lite/assets/icon.svg?rev=2574198', + '2x' => 'https://ps.w.org/wpforms-lite/assets/icon-256x256.png?rev=2574201', + 'svg' => 'https://ps.w.org/wpforms-lite/assets/icon.svg?rev=2574198', + ), + 'wporg' => true, + ), + 47 => + array ( + 'name' => 'MonsterInsights – Google Analytics Dashboard for WordPress (Website Stats Made Easy)', + 'slug' => 'google-analytics-for-wordpress', + 'version' => '8.1.0', + 'author' => 'MonsterInsights', + 'author_profile' => 'https://profiles.wordpress.org/chriscct7', + 'requires' => '4.8.0', + 'tested' => '5.8.1', + 'requires_php' => '5.5', + 'rating' => 92, + 'ratings' => + array ( + 1 => 194, + 2 => 39, + 3 => 35, + 4 => 77, + 5 => 2104, + ), + 'num_ratings' => 2449, + 'support_threads' => 11, + 'support_threads_resolved' => 9, + 'active_installs' => 3000000, + 'downloaded' => 101831096, + 'last_updated' => '2021-09-30 7:56am GMT', + 'added' => '2007-09-14', + 'homepage' => 'https://www.monsterinsights.com/?utm_source=liteplugin&utm_medium=pluginheader&utm_campaign=pluginurl&utm_content=7%2E0%2E0', + 'short_description' => 'The best free Google Analytics plugin for WordPress. See how visitors find and use your website, so you can grow your business.', + 'download_link' => 'https://downloads.wordpress.org/plugin/google-analytics-for-wordpress.8.1.0.zip', + 'tags' => + array ( + 'google-analytics' => 'google analytics', + 'google-analytics-dashboard' => 'google analytics dashboard', + 'google-analytics-widget' => 'google analytics widget', + 'woocommerce-stats' => 'WooCommerce stats', + 'wordpress-analytics' => 'WordPress analytics', + ), + 'donate_link' => 'http://www.wpbeginner.com/wpbeginner-needs-your-help/', + 'icons' => + array ( + '1x' => 'https://ps.w.org/google-analytics-for-wordpress/assets/icon.svg?rev=1598927', + '2x' => 'https://ps.w.org/google-analytics-for-wordpress/assets/icon-256x256.png?rev=1598927', + 'svg' => 'https://ps.w.org/google-analytics-for-wordpress/assets/icon.svg?rev=1598927', + ), + 'wporg' => true, + ), + 48 => + array ( + 'name' => 'Atomic Blocks – Gutenberg Blocks Collection', + 'slug' => 'atomic-blocks', + 'version' => '2.9.0', + 'author' => 'atomicblocks', + 'author_profile' => 'https://profiles.wordpress.org/atomicblocks', + 'requires' => '5.3', + 'tested' => '5.5.6', + 'requires_php' => '5.6', + 'rating' => 86, + 'ratings' => + array ( + 1 => 5, + 2 => 0, + 3 => 1, + 4 => 6, + 5 => 31, + ), + 'num_ratings' => 43, + 'support_threads' => 1, + 'support_threads_resolved' => 0, + 'active_installs' => 40000, + 'downloaded' => 999598, + 'last_updated' => '2020-10-28 4:53pm GMT', + 'added' => '2018-03-26', + 'homepage' => 'https://atomicblocks.com', + 'short_description' => 'A collection of beautiful, customizable Gutenberg blocks for the new block editor.', + 'download_link' => 'https://downloads.wordpress.org/plugin/atomic-blocks.2.9.0.zip', + 'tags' => + array ( + 'blocks' => 'blocks', + 'editor' => 'editor', + 'gutenberg' => 'gutenberg', + 'gutenberg-blocks' => 'gutenberg blocks', + 'page-builder' => 'page builder', + ), + 'donate_link' => 'https://atomicblocks.com', + 'icons' => + array ( + '1x' => 'https://ps.w.org/atomic-blocks/assets/icon-128x128.jpg?rev=1914920', + '2x' => 'https://ps.w.org/atomic-blocks/assets/icon-256x256.jpg?rev=1914921', + ), + 'wporg' => true, + ), + 49 => + array ( + 'name' => 'Akismet Spam Protection', + 'slug' => 'akismet', + 'version' => '4.2.1', + 'author' => 'Automattic', + 'author_profile' => 'https://profiles.wordpress.org/automattic', + 'requires' => '5.0', + 'tested' => '5.8.1', + 'requires_php' => false, + 'rating' => 94, + 'ratings' => + array ( + 1 => 40, + 2 => 10, + 3 => 13, + 4 => 45, + 5 => 815, + ), + 'num_ratings' => 923, + 'support_threads' => 12, + 'support_threads_resolved' => 8, + 'active_installs' => 5000000, + 'downloaded' => 221281530, + 'last_updated' => '2021-10-01 6:28pm GMT', + 'added' => '2005-10-20', + 'homepage' => 'https://akismet.com/', + 'short_description' => 'The best anti-spam protection to block spam comments and spam in a contact form. The…', + 'download_link' => 'https://downloads.wordpress.org/plugin/akismet.4.2.1.zip', + 'tags' => + array ( + 'anti-spam' => 'anti-spam', + 'antispam' => 'antispam', + 'comments' => 'comments', + 'contact-form' => 'contact form', + 'spam' => 'spam', + ), + 'donate_link' => '', + 'icons' => + array ( + '1x' => 'https://ps.w.org/akismet/assets/icon-128x128.png?rev=969272', + '2x' => 'https://ps.w.org/akismet/assets/icon-256x256.png?rev=969272', + ), + 'wporg' => true, + ), + 50 => + array ( + 'name' => 'WP GDPR Cookie Notice', + 'slug' => 'wp-gdpr-cookie-notice', + 'version' => '1.0.0-rc.1', + 'author' => 'Felix Arntz', + 'author_profile' => 'https://profiles.wordpress.org/flixos90', + 'requires' => '4.9.6', + 'tested' => '5.7.3', + 'requires_php' => '7.0', + 'rating' => 76, + 'ratings' => + array ( + 1 => 4, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 9, + ), + 'num_ratings' => 13, + 'support_threads' => 1, + 'support_threads_resolved' => 0, + 'active_installs' => 700, + 'downloaded' => 6164, + 'last_updated' => '2021-04-02 11:51pm GMT', + 'added' => '2019-03-01', + 'homepage' => 'https://wordpress.org/plugins/wp-gdpr-cookie-notice/', + 'short_description' => 'Simple performant cookie consent notice that supports AMP, Web Stories, granular cookie control and live…', + 'download_link' => 'https://downloads.wordpress.org/plugin/wp-gdpr-cookie-notice.1.0.0-rc.1.zip', + 'tags' => + array ( + 'amp' => 'amp', + 'cookie-consent' => 'cookie consent', + 'cookie-notice' => 'cookie notice', + 'gdpr' => 'GDPR', + 'web-stories' => 'web stories', + ), + 'donate_link' => '', + 'icons' => + array ( + '1x' => 'https://ps.w.org/wp-gdpr-cookie-notice/assets/icon-128x128.png?rev=2042024', + '2x' => 'https://ps.w.org/wp-gdpr-cookie-notice/assets/icon-256x256.png?rev=2042024', + ), + 'wporg' => true, + ), + 51 => + array ( + 'name' => 'WordPress Share Buttons Plugin – AddThis', + 'slug' => 'addthis', + 'version' => '6.2.6', + 'author' => 'The AddThis Team', + 'author_profile' => 'https://profiles.wordpress.org/arnavarro', + 'requires' => '3.0', + 'tested' => '5.2.12', + 'requires_php' => false, + 'rating' => 84, + 'ratings' => + array ( + 1 => 75, + 2 => 25, + 3 => 22, + 4 => 46, + 5 => 444, + ), + 'num_ratings' => 612, + 'support_threads' => 1, + 'support_threads_resolved' => 0, + 'active_installs' => 100000, + 'downloaded' => 5077713, + 'last_updated' => '2019-07-10 5:19pm GMT', + 'added' => '2008-12-23', + 'homepage' => 'https://wordpress.org/plugins/addthis/', + 'short_description' => 'Now compatible with the AMP Plugin! Free Share Buttons from AddThis. Share to Messenger, WhatsApp,…', + 'download_link' => 'https://downloads.wordpress.org/plugin/addthis.6.2.6.zip', + 'tags' => + array ( + 'share-buttons' => 'share buttons', + 'social' => 'social', + 'social-marketing' => 'Social Marketing', + 'social-share' => 'social share', + 'social-sharing' => 'social sharing', + ), + 'donate_link' => '', + 'icons' => + array ( + '1x' => 'https://ps.w.org/addthis/assets/icon-128x128.png?rev=1223867', + '2x' => 'https://ps.w.org/addthis/assets/icon-256x256.png?rev=1223867', + ), + 'wporg' => true, + ), + 52 => + array ( + 'name' => 'BigCommerce For WordPress', + 'slug' => 'bigcommerce', + 'version' => '4.18.0', + 'author' => 'BigCommerce', + 'author_profile' => 'https://profiles.wordpress.org/bigcommerce', + 'requires' => '5.2', + 'tested' => '5.8.1', + 'requires_php' => '7.4.0', + 'rating' => 80, + 'ratings' => + array ( + 1 => 8, + 2 => 1, + 3 => 0, + 4 => 3, + 5 => 27, + ), + 'num_ratings' => 39, + 'support_threads' => 8, + 'support_threads_resolved' => 0, + 'active_installs' => 1000, + 'downloaded' => 60739, + 'last_updated' => '2021-10-07 1:18am GMT', + 'added' => '2018-11-16', + 'homepage' => '', + 'short_description' => 'Scale your ecommerce business with WordPress on the front-end and BigCommerce on the back end.…', + 'download_link' => 'https://downloads.wordpress.org/plugin/bigcommerce.4.18.0.zip', + 'tags' => + array ( + 'ecommerce' => 'ecommerce', + 'online-store' => 'online store', + 'retail' => 'retail', + 'sell-online' => 'sell online', + 'storefront' => 'storefront', + ), + 'donate_link' => '', + 'icons' => + array ( + '1x' => 'https://ps.w.org/bigcommerce/assets/icon-256x256.png?rev=2141502', + '2x' => 'https://ps.w.org/bigcommerce/assets/icon-256x256.png?rev=2141502', + ), + 'wporg' => true, + ), + 53 => + array ( + 'name' => 'Yoast SEO', + 'slug' => 'wordpress-seo', + 'version' => '17.4', + 'author' => 'Team Yoast', + 'author_profile' => 'https://profiles.wordpress.org/joostdevalk', + 'requires' => '5.6', + 'tested' => '5.8.1', + 'requires_php' => '5.6.20', + 'rating' => 96, + 'ratings' => + array ( + 1 => 722, + 2 => 125, + 3 => 175, + 4 => 619, + 5 => 25761, + ), + 'num_ratings' => 27402, + 'support_threads' => 491, + 'support_threads_resolved' => 443, + 'active_installs' => 5000000, + 'downloaded' => 366734729, + 'last_updated' => '2021-10-19 6:48am GMT', + 'added' => '2010-10-11', + 'homepage' => 'https://yoa.st/1uj', + 'short_description' => 'Improve your WordPress SEO: Write better content and have a fully optimized WordPress site using the Yoast SEO plugin.', + 'download_link' => 'https://downloads.wordpress.org/plugin/wordpress-seo.17.4.zip', + 'tags' => + array ( + 'content-analysis' => 'Content analysis', + 'readability' => 'Readability', + 'schema' => 'schema', + 'seo' => 'seo', + 'xml-sitemap' => 'xml sitemap', + ), + 'donate_link' => 'https://yoa.st/1up', + 'icons' => + array ( + '1x' => 'https://ps.w.org/wordpress-seo/assets/icon.svg?rev=2363699', + '2x' => 'https://ps.w.org/wordpress-seo/assets/icon-256x256.png?rev=2363699', + 'svg' => 'https://ps.w.org/wordpress-seo/assets/icon.svg?rev=2363699', + ), + 'wporg' => true, + ), + 54 => + array ( + 'name' => 'Gutenberg', + 'slug' => 'gutenberg', + 'version' => '11.7.0', + 'author' => 'Gutenberg Team', + 'author_profile' => 'https://profiles.wordpress.org/matveb', + 'requires' => '5.7', + 'tested' => '5.8.1', + 'requires_php' => '5.6', + 'rating' => 42, + 'ratings' => + array ( + 1 => 2282, + 2 => 202, + 3 => 128, + 4 => 134, + 5 => 710, + ), + 'num_ratings' => 3456, + 'support_threads' => 63, + 'support_threads_resolved' => 28, + 'active_installs' => 300000, + 'downloaded' => 25101324, + 'last_updated' => '2021-10-13 3:50pm GMT', + 'added' => '2017-06-16', + 'homepage' => 'https://github.com/WordPress/gutenberg', + 'short_description' => 'The Gutenberg plugin provides editing, customization, and site building features to WordPress. This beta plugin allows you to test bleeding-edge featu …', + 'download_link' => 'https://downloads.wordpress.org/plugin/gutenberg.11.7.0.zip', + 'tags' => + array ( + ), + 'donate_link' => '', + 'icons' => + array ( + '1x' => 'https://ps.w.org/gutenberg/assets/icon-128x128.jpg?rev=1776042', + '2x' => 'https://ps.w.org/gutenberg/assets/icon-256x256.jpg?rev=1776042', + ), + 'wporg' => true, + ), + 55 => + array ( + 'name' => 'Setka Editor', + 'slug' => 'setka-editor', + 'homepage' => 'https://setka.io/', + 'short_description' => '

Setka Editor is the first WYSIWYG plugin with page builder functionality.

+', + 'icons' => + array ( + '1x' => 'https://amp-wp.org/wp-content/uploads/2018/11/Setka-Banner-285x160.jpg', + '2x' => 'https://amp-wp.org/wp-content/uploads/2018/11/Setka-Banner-372x209.jpg', + 'svg' => '', + ), + 'wporg' => false, + ), +); \ No newline at end of file diff --git a/includes/amp-themes.php b/includes/amp-themes.php new file mode 100644 index 00000000000..b8beaab4a16 --- /dev/null +++ b/includes/amp-themes.php @@ -0,0 +1,1029 @@ + + array ( + 'name' => 'EXS', + 'slug' => 'exs', + 'preview_url' => 'https://wordpress.org/themes/exs/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2021/09/exs.jpg', + 'homepage' => 'https://wordpress.org/themes/exs/', + 'description' => ' + + +

ExS is a superfast WordPress theme with unlimited customise options, header, footer blog and post layouts.

+', + 'wporg' => false, + ), + 1 => + array ( + 'name' => 'Sydney', + 'slug' => 'sydney', + 'preview_url' => 'https://wordpress.org/themes/sydney/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2021/08/sydney.jpg', + 'homepage' => 'https://wordpress.org/themes/sydney/', + 'description' => ' + + +

Sydney is a powerful business theme that provides a fast way for companies or freelancers to create an awesome online presence.

+', + 'wporg' => false, + ), + 2 => + array ( + 'name' => 'Really Simple', + 'slug' => 'really-simple', + 'preview_url' => 'https://wordpress.org/themes/really-simple/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2021/08/reallysimple.jpg', + 'homepage' => 'https://wordpress.org/themes/really-simple/', + 'description' => ' + + +

Really Simple is a theme for bloggers and writers who need a ultra light and fast theme.

+', + 'wporg' => false, + ), + 3 => + array ( + 'name' => 'Artpop', + 'slug' => 'artpop', + 'preview_url' => 'https://wordpress.org/themes/artpop/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2021/06/artpop.jpg', + 'homepage' => 'https://wordpress.org/themes/artpop/', + 'description' => ' + + +

Artpop is a beautiful Gutenberg-first WordPress theme, carefully designed to help you build your online brand. Unleash your creativity, Artpop takes care of the rest!

+', + 'wporg' => false, + ), + 4 => + array ( + 'name' => 'Michelle', + 'slug' => 'michelle', + 'preview_url' => 'https://wordpress.org/themes/michelle/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2021/06/michelle.jpg', + 'homepage' => 'https://wordpress.org/themes/michelle/', + 'description' => ' + + +

Michelle is free block editor compatible accessibility ready WordPress theme ideal for any fast and inclusive website.

+', + 'wporg' => false, + ), + 5 => + array ( + 'name' => 'Miniva', + 'slug' => 'miniva', + 'preview_url' => 'https://wordpress.org/themes/miniva/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2021/05/miniva.jpg', + 'homepage' => 'https://wordpress.org/themes/miniva/', + 'description' => ' + + +

A fast, lightweight, and mobile-friendly WordPress theme for bloggers. Miniva is built with simplicity, accessibility and performance in mind.

+', + 'wporg' => false, + ), + 6 => + array ( + 'name' => 'Iknow', + 'slug' => 'iknow-2', + 'preview_url' => 'https://wordpress.org/themes/iknow/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2021/04/iknow.jpg', + 'homepage' => 'https://wordpress.org/themes/iknow/', + 'description' => ' + + +

Iknow WordPress Theme has a minimalistic, responsive and mobile-friendly design

+', + 'wporg' => false, + ), + 7 => + array ( + 'name' => 'Kadence', + 'slug' => 'kadence', + 'preview_url' => 'https://wordpress.org/themes/kadence/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2021/01/kadence.jpg', + 'homepage' => 'https://wordpress.org/themes/kadence/', + 'description' => ' + + +

A lightweight yet full featured WordPress theme for creating beautiful fast loading and accessible websites, easier than ever.

+', + 'wporg' => false, + ), + 8 => + array ( + 'name' => 'Izo', + 'slug' => 'izo', + 'preview_url' => 'https://wordpress.org/themes/izo/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2021/01/izo.jpg', + 'homepage' => 'https://wordpress.org/themes/izo/', + 'description' => ' + + +

Izo a fast, lightweight, native AMP and fully customizable multipurpose WordPress theme.

+', + 'wporg' => false, + ), + 9 => + array ( + 'name' => 'OceanWP', + 'slug' => 'oceanwp', + 'preview_url' => 'https://wordpress.org/themes/oceanwp/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2021/01/oceanwp.jpg', + 'homepage' => 'https://wordpress.org/themes/oceanwp/', + 'description' => ' + + +

The favorite choice of thousands of developers and hobby-users.

+', + 'wporg' => false, + ), + 10 => + array ( + 'name' => 'Twenty Twenty One', + 'slug' => 'twenty-twenty-one', + 'preview_url' => 'https://wordpress.org/themes/twentytwentyone/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/12/twentytwentyone.jpg', + 'homepage' => 'https://wordpress.org/themes/twentytwentyone/', + 'description' => ' + + +

Twenty Twenty-One is a blank canvas for your ideas and it makes the block editor your best brush. With new block patterns, which allow you to create a beautiful layout in a matter of seconds, this theme’s soft colors and eye-catching — yet timeless — design will let your work shine

+', + 'wporg' => false, + ), + 11 => + array ( + 'name' => 'Occasio', + 'slug' => 'occasio', + 'preview_url' => 'https://themezee.com/themes/occasio/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/12/occasio.jpg', + 'homepage' => 'https://themezee.com/themes/occasio/', + 'description' => ' + + +

A sleek and modern Blogging & Magazine theme, carefully designed for writers using the Gutenberg Block Editor.

+', + 'wporg' => false, + ), + 12 => + array ( + 'name' => 'Tortuga', + 'slug' => 'tortuga-2', + 'preview_url' => 'https://wordpress.org/themes/tortuga/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/09/tortuga.jpg', + 'homepage' => 'https://wordpress.org/themes/tortuga/', + 'description' => ' + + +

Tortuga is a highly flexible and adventurous WordPress theme for your pirate magazine or any news related website. Other highlights of Tortuga are the beautiful post slider and header widgets area. Arrr!

+', + 'wporg' => false, + ), + 13 => + array ( + 'name' => 'Treville', + 'slug' => 'treville-2', + 'preview_url' => 'https://wordpress.org/themes/treville/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/09/treville.jpg', + 'homepage' => 'https://wordpress.org/themes/treville/', + 'description' => ' + + +

An elegant Blogging & Magazine WordPress Theme with subtle colors and great typography. Treville supports two navigation menus, advanced post settings and a post slider with fullscreen images!

+', + 'wporg' => false, + ), + 14 => + array ( + 'name' => 'Wellington', + 'slug' => 'wellington-2', + 'preview_url' => 'https://wordpress.org/themes/wellington/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/09/wellington.jpg', + 'homepage' => 'https://wordpress.org/themes/wellington/', + 'description' => ' + + +

Wellington is a clean and simple Magazine WordPress theme with beautiful typography and subtle colors. The theme includes two different post layouts, a featured post slider and thoughtful theme settings in the Customizer.

+', + 'wporg' => false, + ), + 15 => + array ( + 'name' => 'Poseidon', + 'slug' => 'poseidon-2', + 'preview_url' => 'https://wordpress.org/themes/poseidon/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/09/poseidon.jpg', + 'homepage' => 'https://wordpress.org/themes/poseidon/', + 'description' => ' + + +

Poseidon is an elegant designed WordPress theme featuring a splendid fullscreen image slideshow. The clean typography and spacious white layout makes it great to share your stories.

+', + 'wporg' => false, + ), + 16 => + array ( + 'name' => 'Napoli', + 'slug' => 'napoli-2', + 'preview_url' => 'https://wordpress.org/themes/napoli/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/09/napoli.jpg', + 'homepage' => 'https://wordpress.org/themes/napoli/', + 'description' => ' + + +

Napoli is a beautiful WordPress theme featuring a great featured post slider, smooth typography and a grid-layout for posts. Bon appetit!

+', + 'wporg' => false, + ), + 17 => + array ( + 'name' => 'Mercia', + 'slug' => 'mercia-2', + 'preview_url' => 'https://wordpress.org/themes/mercia/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/09/mercia1.jpg', + 'homepage' => 'https://wordpress.org/themes/mercia/', + 'description' => ' + + +

Mercia is a flexible and versatile theme perfect for lifestyle, travel, or fashion magazines, with multiple blog layouts and powerful Magazine widgets.

+', + 'wporg' => false, + ), + 18 => + array ( + 'name' => 'Maxwell', + 'slug' => 'maxwell-2', + 'preview_url' => 'https://wordpress.org/themes/maxwell/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/09/maxwell1-1.jpg', + 'homepage' => 'https://wordpress.org/themes/maxwell/', + 'description' => ' + + +

Maxwell is a minimalistic and elegant WordPress theme featuring an ultra clean magazine layout.

+', + 'wporg' => false, + ), + 19 => + array ( + 'name' => 'Harrison', + 'slug' => 'harrison-2', + 'preview_url' => 'https://wordpress.org/themes/harrison/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/09/harrison1.jpg', + 'homepage' => 'https://wordpress.org/themes/harrison/', + 'description' => ' + + +

Harrison is a highly versatile WordPress Theme and was specially designed for use with the new WordPress Block Editor

+', + 'wporg' => false, + ), + 20 => + array ( + 'name' => 'Gridbox', + 'slug' => 'gridbox-2', + 'preview_url' => 'https://wordpress.org/themes/gridbox/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/09/gridbox.jpg', + 'homepage' => 'https://wordpress.org/themes/gridbox/', + 'description' => ' + + +

Gridbox is a clean and solid WordPress theme featuring a three-column grid-layout for posts. 

+', + 'wporg' => false, + ), + 21 => + array ( + 'name' => 'Chronus', + 'slug' => 'chronus-2', + 'preview_url' => 'https://wordpress.org/themes/chronus/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/09/chronus.jpg', + 'homepage' => 'https://wordpress.org/themes/chronus/', + 'description' => ' + + +

A fast and lightweight WordPress Theme created for magazines, news websites and personal blogs. The minimalistic and responsive design focuses on your content and looks great on any screen size.

+', + 'wporg' => false, + ), + 22 => + array ( + 'name' => 'Donovan', + 'slug' => 'donovan-2', + 'preview_url' => 'https://wordpress.org/themes/donovan/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/09/donovan.jpg', + 'homepage' => 'https://wordpress.org/themes/donovan/', + 'description' => ' + + +

Donovan is a flexible, yet easy-to-use blogging theme with a clean and modern design, perfect for your personal blog or for any content-focused website.

+', + 'wporg' => false, + ), + 23 => + array ( + 'name' => 'Yosemite Lite', + 'slug' => 'yosemite-lite', + 'preview_url' => 'https://wordpress.org/themes/yosemite-lite/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/08/yosemite.jpg', + 'homepage' => 'https://wordpress.org/themes/yosemite-lite/', + 'description' => ' + + +

Suitable for personal blogs Yosemite is lightweight, fast and optimized for all mobile phones. It features a modern and elegant look.

+', + 'wporg' => false, + ), + 24 => + array ( + 'name' => 'Justread', + 'slug' => 'justread', + 'preview_url' => 'https://wordpress.org/themes/justread/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/08/justread.jpg', + 'homepage' => 'https://wordpress.org/themes/justread/', + 'description' => ' + + +

Justread is a clean and modern theme that focuses on reading experience. The theme uses system fonts and SVG for fast loading.

+', + 'wporg' => false, + ), + 25 => + array ( + 'name' => 'Floral Lite', + 'slug' => 'floral-lite', + 'preview_url' => 'https://wordpress.org/themes/floral-lite/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/08/floral.jpg', + 'homepage' => 'https://wordpress.org/themes/floral-lite/', + 'description' => ' + + +

Floral has a modern, clean and elegant look with lots of customization for bloggers. Built on the latest WordPress technology.

+', + 'wporg' => false, + ), + 26 => + array ( + 'name' => 'EightyDays Lite', + 'slug' => 'eightydays-lite', + 'preview_url' => 'https://wordpress.org/themes/eightydays-lite/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/08/80days.jpg', + 'homepage' => 'https://wordpress.org/themes/eightydays-lite/', + 'description' => ' + + +

A beautiful theme for travel blogs or magazines EightyDays has a modern, clean and elegant look with lots of customization.

+', + 'wporg' => false, + ), + 27 => + array ( + 'name' => 'eStar', + 'slug' => 'estar', + 'preview_url' => 'https://wordpress.org/themes/estar/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/08/star.jpg', + 'homepage' => 'https://wordpress.org/themes/estar/', + 'description' => ' + + +

eStar is a super fast, lightweight, responsive and highly customizable theme suitable for blog, personal portfolio and business websites.

+', + 'wporg' => false, + ), + 28 => + array ( + 'name' => 'Stow', + 'slug' => 'stow-2', + 'preview_url' => 'https://wordpress.com/theme/stow', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/08/stow.jpg', + 'homepage' => 'https://wordpress.com/theme/stow', + 'description' => ' + + +

A bold and clean theme with lots of space for large images, it’s the ideal choice for creating an online presence for your business. A Varia child theme.

+', + 'wporg' => false, + ), + 29 => + array ( + 'name' => 'Shawburn', + 'slug' => 'shawburn', + 'preview_url' => 'https://wordpress.com/theme/shawburn', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/08/shawborn.jpg', + 'homepage' => 'https://wordpress.com/theme/shawburn', + 'description' => ' + + +

Shawburn is the ideal choice for creating an online presence for your business. A Varia child theme.

+', + 'wporg' => false, + ), + 30 => + array ( + 'name' => 'Rivington', + 'slug' => 'rivington-2', + 'preview_url' => 'https://wordpress.com/theme/rivington', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/08/rivington.jpg', + 'homepage' => 'https://wordpress.com/theme/rivington', + 'description' => ' + + +

Rivington was designed as a website template for realtors. A Varia child theme.

+', + 'wporg' => false, + ), + 31 => + array ( + 'name' => 'Redhill', + 'slug' => 'redhill-2', + 'preview_url' => 'https://wordpress.com/theme/redhill', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/08/redhill.jpg', + 'homepage' => 'https://wordpress.com/theme/redhill', + 'description' => ' + + +

Redhill is a simple theme with clean typography, created with entrepreneurs and small business owners in mind. A Varia child theme.

+', + 'wporg' => false, + ), + 32 => + array ( + 'name' => 'Morden', + 'slug' => 'morden-2', + 'preview_url' => 'https://wordpress.com/theme/morden', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/08/morden.jpg', + 'homepage' => 'https://wordpress.com/theme/morden', + 'description' => ' + + +

Morden is a functional and responsive multi-purpose theme that is the perfect solution for your business’s online presence. A Varia child theme.

+', + 'wporg' => false, + ), + 33 => + array ( + 'name' => 'Maywood', + 'slug' => 'maywood-2', + 'preview_url' => 'https://wordpress.com/theme/maywood', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/08/maywood.jpg', + 'homepage' => 'https://wordpress.com/theme/maywood', + 'description' => ' + + +

Modern, clean, sophisticated: Make your online presence as striking and stylish as your business with Maywood. A Varia child theme.

+', + 'wporg' => false, + ), + 34 => + array ( + 'name' => 'Mayland', + 'slug' => 'mayland', + 'preview_url' => 'https://wordpress.com/theme/mayland', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/08/mmayland.jpg', + 'homepage' => 'https://wordpress.com/theme/mayland', + 'description' => ' + + +

Mayland is a free WordPress theme. The clean, tasteful design highlights all your writing and photography projects. A Varia child theme.

+', + 'wporg' => false, + ), + 35 => + array ( + 'name' => 'Leven', + 'slug' => 'leven-2', + 'preview_url' => 'https://wordpress.com/theme/leven', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/08/leven.jpg', + 'homepage' => 'https://wordpress.com/theme/leven', + 'description' => ' + + +

Leven is a colorful, typography driven theme meant to grab the attention of potential customers and market or sell products to them. A Varia child theme.

+', + 'wporg' => false, + ), + 36 => + array ( + 'name' => 'Hever', + 'slug' => 'hever-2', + 'preview_url' => 'https://wordpress.com/theme/hever', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/08/hever.jpg', + 'homepage' => 'https://wordpress.com/theme/hever', + 'description' => ' + + +

Hever is a fun and friendly free WordPress theme that works particularly well for creative and crafty businesses. A Varia child theme.

+', + 'wporg' => false, + ), + 37 => + array ( + 'name' => 'Exford', + 'slug' => 'exford-2', + 'preview_url' => 'https://wordpress.com/theme/exford', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/08/exford.jpg', + 'homepage' => 'https://wordpress.com/theme/exford', + 'description' => ' + + +

A classic typography and clean design lend a sophisticated air to your website’s content. A Varia child theme.

+', + 'wporg' => false, + ), + 38 => + array ( + 'name' => 'Brompton', + 'slug' => 'brompton-2', + 'preview_url' => 'https://wordpress.com/theme/brompton', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/08/brompton.jpg', + 'homepage' => 'https://wordpress.com/theme/brompton', + 'description' => ' + + +

A a simple yet powerful website theme for small-business owners and entrepreneurs. A Varia child theme.

+', + 'wporg' => false, + ), + 39 => + array ( + 'name' => 'Barnsbury', + 'slug' => 'barnsbury-2', + 'preview_url' => 'https://wordpress.com/theme/barnsbury', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/08/Barnsbury.jpg', + 'homepage' => 'https://wordpress.com/theme/barnsbury', + 'description' => ' + + +

Barnsbury is an earthy, friendly theme made with farming and agriculture businesses in mind — but versatile enough for a personal site, too. A Varia child theme.

+', + 'wporg' => false, + ), + 40 => + array ( + 'name' => 'Balasana', + 'slug' => 'balasana-2', + 'preview_url' => 'https://wordpress.com/theme/balasana', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/08/Balasana.jpg', + 'homepage' => 'https://wordpress.com/theme/balasana', + 'description' => ' + + +

Balasana is a clean and minimalist business theme designed with health and wellness-focused sites in mind. A Varia child theme.

+', + 'wporg' => false, + ), + 41 => + array ( + 'name' => 'Alves', + 'slug' => 'alves-2', + 'preview_url' => 'https://wordpress.com/theme/alves', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/08/Alves.jpg', + 'homepage' => 'https://wordpress.com/theme/alves', + 'description' => ' + + +

Convincing design for your charity or organization’s online presence. Highlight your actions, causes and projects, Alves is versatile enough to be your personal site too. A Varia child theme.

+', + 'wporg' => false, + ), + 42 => + array ( + 'name' => 'Varia', + 'slug' => 'varia-2', + 'preview_url' => 'https://wordpress.com/theme/varia', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/08/varia.jpg', + 'homepage' => 'https://wordpress.com/theme/varia', + 'description' => ' + + +

A variable-based design system for WordPress sites built with Gutenberg. Parent theme of multiple AMP compatible themes.

+', + 'wporg' => false, + ), + 43 => + array ( + 'name' => 'Activation', + 'slug' => 'activation', + 'preview_url' => 'https://wordpress.org/themes/activation/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/04/Activation.jpg', + 'homepage' => 'https://wordpress.org/themes/activation/', + 'description' => ' + + +

Activation is a Primer child theme with a colorful, fitness-focused design.

+', + 'wporg' => false, + ), + 44 => + array ( + 'name' => 'Velux', + 'slug' => 'velux', + 'preview_url' => 'https://wordpress.org/themes/velux/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/04/Velux.jpg', + 'homepage' => 'https://wordpress.org/themes/velux/', + 'description' => ' + + +

Velux is a Primer child theme with a clean, professional, and upscale design.

+', + 'wporg' => false, + ), + 45 => + array ( + 'name' => 'Scribbles', + 'slug' => 'scribbles', + 'preview_url' => 'https://wordpress.org/themes/scribbles/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/04/Scribbles.jpg', + 'homepage' => 'https://wordpress.org/themes/scribbles/', + 'description' => ' + + +

Scribbles is a Primer child theme with a playful and fun mood.

+', + 'wporg' => false, + ), + 46 => + array ( + 'name' => 'Ascension', + 'slug' => 'ascension', + 'preview_url' => 'https://wordpress.org/themes/ascension/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/03/ascension.jpg', + 'homepage' => 'https://wordpress.org/themes/ascension/', + 'description' => ' + + +

If you’re looking for an AMP ready business-oriented design checkout Ascension. a Primer child theme.

+', + 'wporg' => false, + ), + 47 => + array ( + 'name' => 'Uptown Style', + 'slug' => 'uptown-style', + 'preview_url' => 'https://wordpress.org/themes/uptown-style/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/03/uptownstyle.jpg', + 'homepage' => 'https://wordpress.org/themes/uptown-style/', + 'description' => ' + + +

Uptown Style is a Primer child theme with elegance and class.

+', + 'wporg' => false, + ), + 48 => + array ( + 'name' => 'Go – by GoDaddy', + 'slug' => 'go-godaddy', + 'preview_url' => 'https://wordpress.org/themes/go/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/02/Gotheme.jpg', + 'homepage' => 'https://wordpress.org/themes/go/', + 'description' => ' + + +

Go is an innovative, Gutenberg-first WordPress theme, hyper-focused on empowering makers to build beautifully rich websites with WordPress.

+', + 'wporg' => false, + ), + 49 => + array ( + 'name' => 'Navigation Pro', + 'slug' => 'navigation-pro', + 'preview_url' => 'https://my.studiopress.com/themes/navigation/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/02/navigationPro.jpg', + 'homepage' => 'https://my.studiopress.com/themes/navigation/', + 'description' => ' + + +

A Genesis framework theme that cuts through the haze with bright colors, bold images and versatile layouts to steer your site to success.

+', + 'wporg' => false, + ), + 50 => + array ( + 'name' => 'Memory', + 'slug' => 'memory-2', + 'preview_url' => 'https://wordpress.org/themes/memory/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/02/memory.jpg', + 'homepage' => 'https://wordpress.org/themes/memory/', + 'description' => ' + + +

Memory is a clean and beautiful personal blog style theme which is easy to use, optimized for performance and fully up-to-date with modern tech standards.

+', + 'wporg' => false, + ), + 51 => + array ( + 'name' => 'Sacha', + 'slug' => 'sacha', + 'preview_url' => 'https://github.com/Automattic/newspack-theme/releases', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/01/sacha9.jpg', + 'homepage' => 'https://github.com/Automattic/newspack-theme/releases', + 'description' => ' + + +

Sacha is a Newspack child theme. You’ll find the latest version on the Newspack release page.

+', + 'wporg' => false, + ), + 52 => + array ( + 'name' => 'Scott', + 'slug' => 'scott-2', + 'preview_url' => 'https://github.com/Automattic/newspack-theme/releases', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/01/scott.jpg', + 'homepage' => 'https://github.com/Automattic/newspack-theme/releases', + 'description' => ' + + +

Scott is a Newspack child theme. You’ll find the latest version on the Newspack release page.

+', + 'wporg' => false, + ), + 53 => + array ( + 'name' => 'Katharine', + 'slug' => 'katharine-2', + 'preview_url' => 'https://github.com/Automattic/newspack-theme/releases', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/01/katharine.jpg', + 'homepage' => 'https://github.com/Automattic/newspack-theme/releases', + 'description' => ' + + +

Katharine is a Newspack child theme. You’ll find the latest version on the Newspack release page.

+', + 'wporg' => false, + ), + 54 => + array ( + 'name' => 'Joseph', + 'slug' => 'joseph-2', + 'preview_url' => 'https://github.com/Automattic/newspack-theme/releases', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/01/joseph-1.jpg', + 'homepage' => 'https://github.com/Automattic/newspack-theme/releases', + 'description' => ' + + +

Joseph is a Newspack child theme. You’ll find the latest version on the Newspack release page.

+', + 'wporg' => false, + ), + 55 => + array ( + 'name' => 'Nelson', + 'slug' => 'nelson-2', + 'preview_url' => 'https://github.com/Automattic/newspack-theme/releases', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/01/nelson.jpg', + 'homepage' => 'https://github.com/Automattic/newspack-theme/releases', + 'description' => ' + + +

Nelson is a Newspack child theme. You’ll find the latest version on the Newspack release page.

+', + 'wporg' => false, + ), + 56 => + array ( + 'name' => 'Newspack', + 'slug' => 'newspack', + 'preview_url' => 'https://github.com/Automattic/newspack-theme', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2019/11/newspack.jpg', + 'homepage' => 'https://github.com/Automattic/newspack-theme', + 'description' => ' + + +

The Newspack theme is a forward-looking news theme designed and developed to be highly customizable with the WordPress block editor.

+', + 'wporg' => false, + ), + 57 => + array ( + 'name' => 'Twenty Twenty', + 'slug' => 'twentytwenty', + 'preview_url' => 'https://wordpress.org/themes/twentytwenty/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2019/11/twentytwenty-screenshot.png', + 'homepage' => 'https://wordpress.org/themes/twentytwenty/', + 'description' => ' + + +

Our default theme for 2020 is designed to take full advantage of the flexibility of the block editor. Organizations and businesses have the ability to create dynamic landing pages with endless layouts using the group and column blocks. The centered content column and fine-tuned typography also makes it perfect for traditional blogs. Complete editor styles give you a good idea of what your content will look like, even before you publish. You can give your site a personal touch by changing the background colors and the accent color in the Customizer. The colors of all elements on your site are automatically calculated based on the colors you pick, ensuring a high, accessible color contrast for your visitors.

+', + 'wporg' => false, + ), + 58 => + array ( + 'name' => 'Primer', + 'slug' => 'primer', + 'preview_url' => 'https://wordpress.org/themes/primer/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2019/07/primer-1024x768-1.png', + 'homepage' => 'https://wordpress.org/themes/primer/', + 'description' => ' + + +

Primer is a powerful theme that brings clarity to your content in a fresh design.

+', + 'wporg' => false, + ), + 59 => + array ( + 'name' => 'Essence Pro', + 'slug' => 'essence-pro-theme', + 'preview_url' => 'https://my.studiopress.com/themes/essence/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2019/07/cropped-Essence-Pro.png', + 'homepage' => 'https://my.studiopress.com/themes/essence/', + 'description' => ' + + +

Essence Pro is a beautiful, clutter-free theme for sites in the health, wellness, and lifestyle niches.

+', + 'wporg' => false, + ), + 60 => + array ( + 'name' => 'Genesis Framework', + 'slug' => 'genesis-theme-framework', + 'preview_url' => 'https://my.studiopress.com/themes/genesis/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2019/07/cropped-Genesis.png', + 'homepage' => 'https://my.studiopress.com/themes/genesis/', + 'description' => ' + + +

The Genesis Framework empowers webmasters to quickly and easily build websites with WordPress.

+', + 'wporg' => false, + ), + 61 => + array ( + 'name' => 'Twenty Fourteen', + 'slug' => 'twenty-fourteen', + 'preview_url' => 'https://wordpress.org/themes/twentyfourteen', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2019/06/cropped-twentyfourteen.png', + 'homepage' => 'https://wordpress.org/themes/twentyfourteen', + 'description' => ' + + +

In 2014, our default theme lets you create a responsive magazine website with a sleek, modern design. Feature your favorite homepage content in either a grid or a slider. Use the three widget areas to customize your website, and change your content’s layout with a full-width page template and a contributor page to show off your authors. Creating a magazine website with WordPress has never been easier.

+', + 'wporg' => false, + ), + 62 => + array ( + 'name' => 'Twenty Thirteen', + 'slug' => 'twenty-thirteen', + 'preview_url' => 'https://wordpress.org/themes/twentythirteen/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2019/06/cropped-twentythirteen.png', + 'homepage' => 'https://wordpress.org/themes/twentythirteen/', + 'description' => ' + + +

The 2013 theme for WordPress takes us back to the blog, featuring a full range of post formats, each displayed beautifully in their own unique way. Design details abound, starting with a vibrant color scheme and matching header images, beautiful typography and icons, and a flexible layout that looks great on any device, big or small.

+', + 'wporg' => false, + ), + 63 => + array ( + 'name' => 'Twenty Eleven', + 'slug' => 'twenty-eleven', + 'preview_url' => 'https://wordpress.org/themes/twentyeleven/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2019/06/cropped-twentyeleven.png', + 'homepage' => 'https://wordpress.org/themes/twentyeleven/', + 'description' => ' + + +

The 2011 theme for WordPress is sophisticated, lightweight, and adaptable. Make it yours with a custom menu, header image, and background — then go further with available theme options for light or dark color scheme, custom link colors, and three layout choices. Twenty Eleven comes equipped with a Showcase page template that transforms your front page into a showcase to show off your best content, widget support galore (sidebar, three footer areas, and a Showcase page widget area), and a custom “Ephemera” widget to display your Aside, Link, Quote, or Status posts. Included are styles for print and for the admin editor, support for featured images (as custom header images on posts and pages and as large images on featured “sticky” posts), and special styles for six different post formats.

+', + 'wporg' => false, + ), + 64 => + array ( + 'name' => 'Twenty Ten', + 'slug' => 'twenty-ten', + 'preview_url' => 'https://wordpress.org/themes/twentyten/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2019/06/cropped-twentyten.png', + 'homepage' => 'https://wordpress.org/themes/twentyten/', + 'description' => ' + + +

The 2010 theme for WordPress is stylish, customizable, simple, and readable — make it yours with a custom menu, header image, and background. Twenty Ten supports six widgetized areas (two in the sidebar, four in the footer) and featured images (thumbnails for gallery posts and custom header images for posts and pages). It includes stylesheets for print and the admin Visual Editor, special styles for posts in the “Asides” and “Gallery” categories, and has an optional one-column page template that removes the sidebar.

+', + 'wporg' => false, + ), + 65 => + array ( + 'name' => 'Zakra', + 'slug' => 'zakra', + 'preview_url' => 'https://wordpress.org/themes/zakra/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2019/06/zakra.jpg', + 'homepage' => 'https://wordpress.org/themes/zakra/', + 'description' => ' + + +

Zakra is flexible, fast, lightweight and modern multipurpose theme that comes with many starter free sites (currently 10+ free starter sites and more will be added later) that you can use to make your site beautiful and professional.

+', + 'wporg' => false, + ), + 66 => + array ( + 'name' => 'Neve', + 'slug' => 'neve', + 'preview_url' => 'https://wordpress.org/themes/neve/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2019/03/neve-theme-screenshot.png', + 'homepage' => 'https://wordpress.org/themes/neve/', + 'description' => ' + + +

Neve is a super fast, easily customizable, multi-purpose theme

+', + 'wporg' => false, + ), + 67 => + array ( + 'name' => 'Astra', + 'slug' => 'astra', + 'preview_url' => 'https://wordpress.org/themes/astra/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2019/03/astra-theme-screenshot.jpg', + 'homepage' => 'https://wordpress.org/themes/astra/', + 'description' => ' + + +

A very lightweight and beautiful theme made to work with Page Builders.

+', + 'wporg' => false, + ), + 68 => + array ( + 'name' => 'Twenty Twelve', + 'slug' => 'twenty-twelve', + 'preview_url' => 'https://wordpress.org/themes/twentytwelve/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2018/11/cropped-twentytwelve.png', + 'homepage' => 'https://wordpress.org/themes/twentytwelve/', + 'description' => ' + + +

The 2012 theme for WordPress is a fully responsive theme that looks great on any device. Features include a front page template with its own widgets, an optional display font, styling for post formats on both index and single views, and an optional no-sidebar page template. Make it yours with a custom menu, header image, and background.

+', + 'wporg' => false, + ), + 69 => + array ( + 'name' => 'Twenty Nineteen', + 'slug' => 'twenty-nineteen', + 'preview_url' => 'https://wordpress.org/themes/twentynineteen/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2018/11/cropped-twentynineteen.png', + 'homepage' => 'https://wordpress.org/themes/twentynineteen/', + 'description' => ' + + +

Our 2019 default theme is designed to show off the power of the block editor. It features custom styles for all the default blocks, and is built so that what you see in the editor looks like what you’ll see on your website. Twenty Nineteen is designed to be adaptable to a wide range of websites, whether you’re running a photo blog, launching a new business, or supporting a non-profit. Featuring ample whitespace and modern sans-serif headlines paired with classic serif body text, it’s built to be beautiful on all screen sizes.

+ + + +

+', + 'wporg' => false, + ), + 70 => + array ( + 'name' => 'Twenty Seventeen', + 'slug' => 'twenty-seventeen', + 'preview_url' => 'https://wordpress.org/themes/twentyseventeen/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2018/11/cropped-twentyseventeen.png', + 'homepage' => 'https://wordpress.org/themes/twentyseventeen/', + 'description' => ' + + +

Twenty Seventeen brings your site to life with header video and immersive featured images. With a focus on business sites, it features multiple sections on the front page as well as widgets, navigation and social menus, a logo, and more. Personalize its asymmetrical grid with a custom color scheme and showcase your multimedia content with post formats. Our default theme for 2017 works great in many languages, for any abilities, and on any device.

+', + 'wporg' => false, + ), + 71 => + array ( + 'name' => 'Twenty Sixteen', + 'slug' => 'twenty-sixteen', + 'preview_url' => 'https://wordpress.org/themes/twentysixteen/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2018/11/cropped-twentysixteen.png', + 'homepage' => 'https://wordpress.org/themes/twentysixteen/', + 'description' => ' + + +

Twenty Sixteen is a modernized take on an ever-popular WordPress layout — the horizontal masthead with an optional right sidebar that works perfectly for blogs and websites. It has custom color options with beautiful default color schemes, a harmonious fluid grid using a mobile-first approach, and impeccable polish in every detail. Twenty Sixteen will make your WordPress look beautiful everywhere.

+', + 'wporg' => false, + ), + 72 => + array ( + 'name' => 'Twenty Fifteen', + 'slug' => 'twenty-fifteen', + 'preview_url' => 'https://wordpress.org/themes/twentyfifteen/', + 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2018/11/cropped-twentyfifteen.png', + 'homepage' => 'https://wordpress.org/themes/twentyfifteen/', + 'description' => ' + + +

Our 2015 default theme is clean, blog-focused, and designed for clarity. Twenty Fifteen’s simple, straightforward typography is readable on a wide variety of screen sizes, and suitable for multiple languages. We designed it using a mobile-first approach, meaning your content takes center-stage, regardless of whether your visitors arrive by smartphone, tablet, laptop, or desktop computer.

+', + 'wporg' => false, + ), +); \ No newline at end of file From ce93a3f8d97fd80092600cb4ac59025eada0d2f8 Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 19 Oct 2021 15:22:27 -0700 Subject: [PATCH 053/105] Exclude phpcs rules for exported data --- .phpcs.xml.dist | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/.phpcs.xml.dist b/.phpcs.xml.dist index 8bad0b81e96..2dca81deb63 100644 --- a/.phpcs.xml.dist +++ b/.phpcs.xml.dist @@ -55,6 +55,8 @@ tests/test-tag-and-attribute-sanitizer.php + includes/amp-plugins.php + includes/amp-themes.php bin/* @@ -131,6 +133,36 @@ + + + includes/amp-plugins.php + includes/amp-themes.php + + + includes/amp-plugins.php + includes/amp-themes.php + + + includes/amp-plugins.php + includes/amp-themes.php + + + includes/amp-plugins.php + includes/amp-themes.php + + + includes/amp-plugins.php + includes/amp-themes.php + + + includes/amp-plugins.php + includes/amp-themes.php + + + includes/amp-plugins.php + includes/amp-themes.php + + . From 231749ed993891d0830d07162654ef719a25eaf4 Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 19 Oct 2021 15:32:16 -0700 Subject: [PATCH 054/105] Fix lintstaged pattern to match 'amp-' prefixed files in includes directory --- .lintstagedrc.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.lintstagedrc.js b/.lintstagedrc.js index f63b9836671..6cdc1fd3118 100644 --- a/.lintstagedrc.js +++ b/.lintstagedrc.js @@ -8,7 +8,7 @@ module.exports = { "**/*.js": [ "npm run lint:js" ], - "**/!(amp).php": [ + "**/!(amp.php).php": [ "npm run lint:php" ], "amp.php": [ From 8ef0ec333093bd619f66acb024e28d3d934e4497 Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 19 Oct 2021 15:54:29 -0700 Subject: [PATCH 055/105] Move theme/plugin files into includes/ecosystem-data directory --- .phpcs.xml.dist | 32 ------- bin/update-extension-files.js | 22 ++++- .../plugins.php} | 10 ++- .../themes.php} | 10 ++- src/Admin/AMPPlugins.php | 9 +- src/Admin/AMPThemes.php | 10 +-- tests/php/src/Admin/AMPPluginsTest.php | 89 ++----------------- tests/php/src/Admin/AMPThemesTest.php | 71 ++------------- 8 files changed, 55 insertions(+), 198 deletions(-) rename includes/{amp-plugins.php => ecosystem-data/plugins.php} (99%) rename includes/{amp-themes.php => ecosystem-data/themes.php} (98%) diff --git a/.phpcs.xml.dist b/.phpcs.xml.dist index 2dca81deb63..8bad0b81e96 100644 --- a/.phpcs.xml.dist +++ b/.phpcs.xml.dist @@ -55,8 +55,6 @@ tests/test-tag-and-attribute-sanitizer.php - includes/amp-plugins.php - includes/amp-themes.php bin/* @@ -133,36 +131,6 @@ - - - includes/amp-plugins.php - includes/amp-themes.php - - - includes/amp-plugins.php - includes/amp-themes.php - - - includes/amp-plugins.php - includes/amp-themes.php - - - includes/amp-plugins.php - includes/amp-themes.php - - - includes/amp-plugins.php - includes/amp-themes.php - - - includes/amp-plugins.php - includes/amp-themes.php - - - includes/amp-plugins.php - includes/amp-themes.php - - . diff --git a/bin/update-extension-files.js b/bin/update-extension-files.js index 041f1fe8377..1ce2ee794bd 100644 --- a/bin/update-extension-files.js +++ b/bin/update-extension-files.js @@ -6,8 +6,8 @@ const fs = require( 'fs' ); const { getPluginsList, getThemesList } = require( 'wporg-api-client' ); const axios = require( 'axios' ); -const PLUGINS_FILE = 'includes/amp-plugins.php'; -const THEMES_FILE = 'includes/amp-themes.php'; +const PLUGINS_FILE = 'includes/ecosystem-data/plugins.php'; +const THEMES_FILE = 'includes/ecosystem-data/themes.php'; class UpdateExtensionFiles { /** @@ -86,15 +86,29 @@ class UpdateExtensionFiles { * @return {Promise} */ async storeData() { + const phpcsDisables = [ + 'Squiz.Commenting.FileComment.Missing', + 'WordPress.Arrays.ArrayIndentation', + 'WordPress.WhiteSpace.PrecisionAlignment', + 'WordPress.Arrays.ArrayDeclarationSpacing', + 'Generic.WhiteSpace.DisallowSpaceIndent', + 'Generic.Arrays.DisallowLongArraySyntax', + 'Squiz.Commenting.FileComment.Missing', + 'Generic.Files.EndFileNewline', + 'WordPress.Arrays.MultipleStatementAlignment', + ]; + + const phpcsDisableComments = phpcsDisables.map( ( rule ) => `// phpcs:disable ${ rule }\n` ).join( '' ); + if ( this.plugins ) { let output = await this.convertToPhpArray( this.plugins ); - output = ` array ( diff --git a/includes/amp-themes.php b/includes/ecosystem-data/themes.php similarity index 98% rename from includes/amp-themes.php rename to includes/ecosystem-data/themes.php index b8beaab4a16..5c91166bf3e 100644 --- a/includes/amp-themes.php +++ b/includes/ecosystem-data/themes.php @@ -1,4 +1,12 @@ - array ( diff --git a/src/Admin/AMPPlugins.php b/src/Admin/AMPPlugins.php index 398fe88574e..1abf2f05dec 100644 --- a/src/Admin/AMPPlugins.php +++ b/src/Admin/AMPPlugins.php @@ -65,18 +65,11 @@ public static function is_needed() { public function get_plugins() { if ( ! is_array( $this->plugins ) ) { - $file_path = AMP__DIR__ . '/includes/amp-plugins.php'; - - if ( file_exists( $file_path ) ) { - $this->plugins = include $file_path; - } - - $this->plugins = ( ! empty( $this->plugins ) && is_array( $this->plugins ) ) ? $this->plugins : []; $this->plugins = array_map( static function ( $plugin ) { return self::normalize_plugin_data( $plugin ); }, - $this->plugins + require __DIR__ . '/../../includes/ecosystem-data/plugins.php' ); } diff --git a/src/Admin/AMPThemes.php b/src/Admin/AMPThemes.php index 30502e2bd2e..4adcd2e7288 100644 --- a/src/Admin/AMPThemes.php +++ b/src/Admin/AMPThemes.php @@ -42,19 +42,11 @@ class AMPThemes implements Service, Registerable { public function get_themes() { if ( ! is_array( $this->themes ) ) { - $file_path = AMP__DIR__ . '/includes/amp-themes.php'; - - if ( file_exists( $file_path ) ) { - $this->themes = include $file_path; - } - - $this->themes = ( ! empty( $this->themes ) && is_array( $this->themes ) ) ? $this->themes : []; $this->themes = array_map( static function ( $theme ) { - return self::normalize_theme_data( $theme ); }, - $this->themes + require __DIR__ . '/../../includes/ecosystem-data/themes.php' ); } diff --git a/tests/php/src/Admin/AMPPluginsTest.php b/tests/php/src/Admin/AMPPluginsTest.php index 0414aab9edc..e9f6f325770 100644 --- a/tests/php/src/Admin/AMPPluginsTest.php +++ b/tests/php/src/Admin/AMPPluginsTest.php @@ -46,35 +46,6 @@ public function setUp() { $wp_styles = null; $this->instance = new AMPPlugins(); - - $file_path = TESTS_PLUGIN_DIR . '/includes/amp-plugins.php'; - $this->is_file_exists = file_exists( $file_path ); - - if ( ! $this->is_file_exists ) { - $data = [ - [ - 'name' => 'Akismet', - 'slug' => 'akismet', - ], - ]; - - $file_content = "is_file_exists ) { - $this->unlink( TESTS_PLUGIN_DIR . '/includes/amp-plugins.php' ); - } } /** @@ -84,57 +55,15 @@ public function test_get_plugins() { $plugins = $this->instance->get_plugins(); - if ( $this->is_file_exists ) { - $expected_plugins = include TESTS_PLUGIN_DIR . '/includes/amp-plugins.php'; - - $expected = array_map( - static function ( $theme ) { - - return AMPPlugins::normalize_plugin_data( $theme ); - }, - $expected_plugins - ); - } else { - $expected = [ - [ - 'name' => 'Akismet', - 'slug' => 'akismet', - 'version' => '', - 'author' => '', - 'author_profile' => '', - 'requires' => '', - 'tested' => '', - 'requires_php' => '', - 'rating' => 0, - 'ratings' => [ - 1 => 0, - 2 => 0, - 3 => 0, - 4 => 0, - 5 => 0, - ], - 'num_ratings' => 0, - 'support_threads' => 0, - 'support_threads_resolved' => 0, - 'active_installs' => 0, - 'downloaded' => 0, - 'last_updated' => '', - 'added' => '', - 'homepage' => '', - 'short_description' => '', - 'description' => '', - 'download_link' => '', - 'tags' => [], - 'donate_link' => '', - 'icons' => [ - '1x' => '', - '2x' => '', - 'svg' => '', - ], - 'wporg' => false, - ], - ]; - } + $expected_plugins = include TESTS_PLUGIN_DIR . '/includes/ecosystem-data/plugins.php'; + + $expected = array_map( + static function ( $theme ) { + + return AMPPlugins::normalize_plugin_data( $theme ); + }, + $expected_plugins + ); $this->assertEquals( $expected, $plugins ); } diff --git a/tests/php/src/Admin/AMPThemesTest.php b/tests/php/src/Admin/AMPThemesTest.php index 3a77a4e6abf..a2632ea1850 100644 --- a/tests/php/src/Admin/AMPThemesTest.php +++ b/tests/php/src/Admin/AMPThemesTest.php @@ -45,35 +45,6 @@ public function setUp() { $wp_styles = null; $this->instance = new AMPThemes(); - - $file_path = TESTS_PLUGIN_DIR . '/includes/amp-themes.php'; - $this->is_file_exists = file_exists( $file_path ); - - if ( ! $this->is_file_exists ) { - $data = [ - [ - 'name' => 'Astra', - 'slug' => 'astra', - ], - ]; - - $file_content = "is_file_exists ) { - $this->unlink( TESTS_PLUGIN_DIR . '/includes/amp-themes.php' ); - } } /** @@ -82,40 +53,14 @@ public function tearDown() { public function test_get_themes() { $themes = $this->instance->get_themes(); - if ( $this->is_file_exists ) { - $expected_themes = include TESTS_PLUGIN_DIR . '/includes/amp-themes.php'; - - $expected = array_map( - static function ( $theme ) { - return AMPThemes::normalize_theme_data( $theme ); - }, - $expected_themes - ); - } else { - $expected = [ - [ - 'name' => 'Astra', - 'slug' => 'astra', - 'version' => '', - 'preview_url' => '', - 'author' => [ - 'user_nicename' => '', - 'profile' => '', - 'avatar' => '', - 'display_name' => '', - 'author' => '', - 'author_url' => '', - ], - 'screenshot_url' => '', - 'rating' => 0, - 'num_ratings' => 0, - 'homepage' => '', - 'description' => '', - 'requires' => '', - 'requires_php' => '', - ], - ]; - } + $expected_themes = include TESTS_PLUGIN_DIR . '/includes/ecosystem-data/themes.php'; + + $expected = array_map( + static function ( $theme ) { + return AMPThemes::normalize_theme_data( $theme ); + }, + $expected_themes + ); $this->assertEquals( $expected, $themes ); } From 1a10ded41f8386d5d88d897dfa04fb745f845242 Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 19 Oct 2021 16:02:30 -0700 Subject: [PATCH 056/105] Remove update-extension-files from running as part of build --- bin/update-extension-files.js | 6 ------ package.json | 4 ++-- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/bin/update-extension-files.js b/bin/update-extension-files.js index 1ce2ee794bd..632bdc0d46f 100644 --- a/bin/update-extension-files.js +++ b/bin/update-extension-files.js @@ -15,12 +15,6 @@ class UpdateExtensionFiles { */ constructor() { ( async () => { - if ( fs.existsSync( PLUGINS_FILE ) && fs.existsSync( THEMES_FILE ) ) { - // eslint-disable-next-line no-console - console.log( `Files already exist (${ PLUGINS_FILE } and ${ THEMES_FILE }) so exiting.` ); - return; - } - this.plugins = []; this.themes = []; diff --git a/package.json b/package.json index a40dd37454c..c4c33555e74 100644 --- a/package.json +++ b/package.json @@ -102,7 +102,6 @@ "build:dev": "cross-env NODE_ENV=development npm-run-all 'build:!(dev|prod)'", "build:prod": "cross-env NODE_ENV=production npm-run-all 'build:!(dev|prod)'", "build:prepare": "grunt clean", - "build:extension-files": "node ./bin/update-extension-files.js", "build:js": "wp-scripts build", "build:run": "grunt build", "build:zip": "grunt create-build-zip", @@ -136,7 +135,8 @@ "test:js:help": "wp-scripts test-unit-js --help", "test:js:watch": "npm run test:js -- --watch", "test:php": "vendor/bin/phpunit", - "test:php:help": "npm run test:php -- --help" + "test:php:help": "npm run test:php -- --help", + "update-ecosystem-files": "node ./bin/update-extension-files.js" }, "npmpackagejsonlint": { "extends": "@wordpress/npm-package-json-lint-config", From b82cf95c313ed655d215e2b7b19b773673904fc7 Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 19 Oct 2021 16:08:36 -0700 Subject: [PATCH 057/105] Add notice for how files were generated --- bin/update-extension-files.js | 4 ++-- includes/ecosystem-data/plugins.php | 2 ++ includes/ecosystem-data/themes.php | 2 ++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/bin/update-extension-files.js b/bin/update-extension-files.js index 632bdc0d46f..60be2dbd1b7 100644 --- a/bin/update-extension-files.js +++ b/bin/update-extension-files.js @@ -96,13 +96,13 @@ class UpdateExtensionFiles { if ( this.plugins ) { let output = await this.convertToPhpArray( this.plugins ); - output = ` array ( diff --git a/includes/ecosystem-data/themes.php b/includes/ecosystem-data/themes.php index 5c91166bf3e..1129e0a449a 100644 --- a/includes/ecosystem-data/themes.php +++ b/includes/ecosystem-data/themes.php @@ -7,6 +7,8 @@ // phpcs:disable Squiz.Commenting.FileComment.Missing // phpcs:disable Generic.Files.EndFileNewline // phpcs:disable WordPress.Arrays.MultipleStatementAlignment + +// NOTICE: This file was auto-generated with: npm run update-ecosystem-files. return array ( 0 => array ( From 888a6399acd0a6f8377a73fb483181bc9996b86a Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 19 Oct 2021 16:10:37 -0700 Subject: [PATCH 058/105] Mark ecosystem data files as being generated files --- .gitattributes | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitattributes b/.gitattributes index 289761dafa2..5d4880561be 100644 --- a/.gitattributes +++ b/.gitattributes @@ -7,3 +7,4 @@ includes/sanitizers/class-amp-allowed-tags-generated.php linguist-generated=true docs/**/*.md linguist-generated=true docs/docs.json linguist-generated=true **/__data__/*.js linguist-generated=true +includes/ecosystem-data/*.php linguist-generated=true From 4d021168ed1962fa7782a19281d2989759c12bc7 Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Wed, 20 Oct 2021 16:12:00 +0530 Subject: [PATCH 059/105] Update script to fetch AMP extension data, Rename the tab name from PX Enhancing to AMP Compatible --- assets/src/admin/amp-theme-install.js | 4 +- assets/src/admin/theme-install/view/theme.js | 2 +- bin/update-extension-files.js | 34 +-- includes/ecosystem-data/plugins.php | 206 +++++++++---------- package-lock.json | 18 +- src/Admin/AMPPlugins.php | 14 +- src/Admin/AMPThemes.php | 2 +- tests/php/src/Admin/AMPPluginsTest.php | 12 +- tests/php/src/Admin/AMPThemesTest.php | 2 +- 9 files changed, 150 insertions(+), 144 deletions(-) diff --git a/assets/src/admin/amp-theme-install.js b/assets/src/admin/amp-theme-install.js index a77437b4a7f..8fabc3eebd3 100644 --- a/assets/src/admin/amp-theme-install.js +++ b/assets/src/admin/amp-theme-install.js @@ -35,9 +35,9 @@ const ampThemeInstall = { anchorElement.append( spanElement ); anchorElement.append( ' ' ); - anchorElement.append( __( 'PX Enhancing', 'amp' ) ); + anchorElement.append( __( 'AMP Compatible', 'amp' ) ); anchorElement.setAttribute( 'href', '#' ); - anchorElement.setAttribute( 'data-sort', 'px_enhancing' ); + anchorElement.setAttribute( 'data-sort', 'amp-compatible' ); listItem.appendChild( anchorElement ); diff --git a/assets/src/admin/theme-install/view/theme.js b/assets/src/admin/theme-install/view/theme.js index d4aa28ff482..f8ede519983 100644 --- a/assets/src/admin/theme-install/view/theme.js +++ b/assets/src/admin/theme-install/view/theme.js @@ -43,7 +43,7 @@ export default wpThemeView.extend( { tooltipElement.classList.add( 'tooltiptext' ); tooltipElement.append( - __( 'This theme follow best practice and is known to work well with AMP plugin.', 'amp' ), + __( 'This theme is known to work well with the AMP plugin.', 'amp' ), ); messageElement.append( iconElement ); diff --git a/bin/update-extension-files.js b/bin/update-extension-files.js index 60be2dbd1b7..6e0c59daeb3 100644 --- a/bin/update-extension-files.js +++ b/bin/update-extension-files.js @@ -29,7 +29,7 @@ class UpdateExtensionFiles { * @return {Promise} */ async fetchData() { - let totalPage = 1; + let totalPage; const pluginTerm = 552; const themeTerm = 245; const url = 'https://amp-wp.org/wp-json/wp/v2/ecosystem'; @@ -50,9 +50,7 @@ class UpdateExtensionFiles { break; } - // eslint-disable-next-line guard-for-in - for ( const index in items ) { - const item = items[ index ]; + for ( const item of items ) { const ecosystemTerm = item.ecosystem_types.pop(); if ( ecosystemTerm === pluginTerm ) { @@ -206,7 +204,7 @@ class UpdateExtensionFiles { */ async fetchThemeFromWporg( slug ) { // eslint-disable-next-line no-console - console.log( `Fetching theme ${ slug } from WordPress.org.` ); + console.log( `Fetching theme "${ slug }" from WordPress.org.` ); const filters = { search: slug, page: 1, @@ -214,12 +212,13 @@ class UpdateExtensionFiles { }; const response = await this.getThemesList( filters ); - const items = response?.data?.themes; + let items = response?.data?.themes; + items = Array.isArray( items ) ? items : Object.values( items ); - for ( const index in items ) { - if ( slug === items[ index ].slug ) { - items[ index ].wporg = true; - return items[ index ]; + for ( const item of items ) { + if ( slug === item.slug ) { + item.wporg = true; + return item; } } @@ -240,7 +239,7 @@ class UpdateExtensionFiles { try { // eslint-disable-next-line no-await-in-loop const responseData = await getThemesList( filter ); - return responseData.data; + return responseData; } catch ( exception ) { error = exception; } @@ -281,7 +280,7 @@ class UpdateExtensionFiles { */ async fetchPluginFromWporg( slug ) { // eslint-disable-next-line no-console - console.log( `Fetching plugin ${ slug } from WordPress.org.` ); + console.log( `Fetching plugin "${ slug }" from WordPress.org.` ); const filters = { search: slug, page: 1, @@ -289,12 +288,13 @@ class UpdateExtensionFiles { }; const response = await this.getPluginsList( filters ); - const items = response?.data?.plugins; + let items = response?.data?.plugins; + items = Array.isArray( items ) ? items : Object.values( items ); - for ( const index in items ) { - if ( slug === items[ index ].slug ) { - items[ index ].wporg = true; - return items[ index ]; + for ( const item of items ) { + if ( slug === item.slug ) { + item.wporg = true; + return item; } } diff --git a/includes/ecosystem-data/plugins.php b/includes/ecosystem-data/plugins.php index a768622c9ad..50df9662ae8 100644 --- a/includes/ecosystem-data/plugins.php +++ b/includes/ecosystem-data/plugins.php @@ -31,13 +31,13 @@ ), 'num_ratings' => 49, 'support_threads' => 6, - 'support_threads_resolved' => 4, + 'support_threads_resolved' => 6, 'active_installs' => 8000, - 'downloaded' => 128775, + 'downloaded' => 128848, 'last_updated' => '2021-10-14 9:56am GMT', 'added' => '2019-02-06', 'homepage' => 'https://vedathemes.com/podcast-player/', - 'short_description' => 'Showcase your podcast only using podcasting feed url. Use custom widget, shortcode or editor block to display podcast player anywhere on your site.', + 'short_description' => 'Showcase your podcast only using podcasting feed url. Use custom widget, shortcode or editor block…', 'download_link' => 'https://downloads.wordpress.org/plugin/podcast-player.5.2.2.zip', 'tags' => array ( @@ -78,7 +78,7 @@ 'support_threads' => 4, 'support_threads_resolved' => 4, 'active_installs' => 4000, - 'downloaded' => 291525, + 'downloaded' => 291598, 'last_updated' => '2021-10-19 3:30pm GMT', 'added' => '2016-02-14', 'homepage' => 'https://wpsso.com/extend/plugins/wpsso-schema-json-ld/', @@ -117,11 +117,11 @@ 'support_threads' => 11, 'support_threads_resolved' => 7, 'active_installs' => 300000, - 'downloaded' => 7106321, + 'downloaded' => 7108264, 'last_updated' => '2021-10-11 2:44pm GMT', 'added' => '2014-11-05', 'homepage' => 'https://shortpixel.com/', - 'short_description' => 'Speed up your website & boost your SEO by compressing old & new images and…', + 'short_description' => 'Speed up your website & boost your SEO by compressing old & new images and PDFs. Optimize and convert WebP & AVIF.', 'download_link' => 'https://downloads.wordpress.org/plugin/shortpixel-image-optimiser.4.22.6.zip', 'tags' => array ( @@ -159,10 +159,10 @@ 5 => 110, ), 'num_ratings' => 112, - 'support_threads' => 37, + 'support_threads' => 39, 'support_threads_resolved' => 30, 'active_installs' => 10000, - 'downloaded' => 151930, + 'downloaded' => 151982, 'last_updated' => '2021-09-15 2:23pm GMT', 'added' => '2019-05-29', 'homepage' => 'https://twentig.com', @@ -205,10 +205,10 @@ 5 => 205, ), 'num_ratings' => 235, - 'support_threads' => 58, - 'support_threads_resolved' => 29, + 'support_threads' => 57, + 'support_threads_resolved' => 28, 'active_installs' => 1000000, - 'downloaded' => 9058474, + 'downloaded' => 9061699, 'last_updated' => '2021-10-05 1:54am GMT', 'added' => '2010-02-26', 'homepage' => 'https://github.com/WebDevStudios/custom-post-type-ui/', @@ -257,7 +257,7 @@ 'last_updated' => '2021-07-29 10:41am GMT', 'added' => '2018-05-10', 'homepage' => 'https://tajam.id/flex-posts/', - 'short_description' => 'A widget to display posts with thumbnails in various layouts. Fits nicely in any widget…', + 'short_description' => 'A widget to display posts with thumbnails in various layouts. Fits nicely in any widget area size.', 'download_link' => 'https://downloads.wordpress.org/plugin/flex-posts.zip', 'tags' => array ( @@ -294,14 +294,14 @@ 5 => 653, ), 'num_ratings' => 747, - 'support_threads' => 21, - 'support_threads_resolved' => 7, + 'support_threads' => 20, + 'support_threads_resolved' => 6, 'active_installs' => 100000, - 'downloaded' => 6602792, + 'downloaded' => 6603700, 'last_updated' => '2021-10-12 3:43pm GMT', 'added' => '2008-01-02', 'homepage' => 'https://yarpp.com/', - 'short_description' => 'The best WordPress plugin for displaying related posts. Simple and flexible, with a powerful proven algorithm and inbuilt caching.', + 'short_description' => 'The best WordPress plugin for displaying related posts. Simple and flexible, with a powerful proven…', 'download_link' => 'https://downloads.wordpress.org/plugin/yet-another-related-posts-plugin.5.27.6.zip', 'tags' => array ( @@ -342,7 +342,7 @@ 'support_threads' => 1, 'support_threads_resolved' => 1, 'active_installs' => 4000, - 'downloaded' => 37334, + 'downloaded' => 37357, 'last_updated' => '2021-10-01 9:37am GMT', 'added' => '2019-03-05', 'homepage' => 'https://superbthemes.com/plugins/superb-tables/', @@ -386,11 +386,11 @@ 'support_threads' => 1, 'support_threads_resolved' => 0, 'active_installs' => 2000, - 'downloaded' => 35813, + 'downloaded' => 35836, 'last_updated' => '2021-10-12 9:08am GMT', 'added' => '2018-09-08', 'homepage' => 'https://wordpress.org/plugins/floating-button/', - 'short_description' => 'Easily create a custom sticky floating buttons. The Floating Button will be the effective solution…', + 'short_description' => 'Easily create a custom sticky floating buttons. The Floating Button will be the effective solution for increasing the recognition of your web resource', 'download_link' => 'https://downloads.wordpress.org/plugin/floating-button.5.1.zip', 'tags' => array ( @@ -431,7 +431,7 @@ 'support_threads' => 8, 'support_threads_resolved' => 3, 'active_installs' => 900000, - 'downloaded' => 10199521, + 'downloaded' => 10200481, 'last_updated' => '2021-04-01 2:13am GMT', 'added' => '2007-12-01', 'homepage' => 'http://mtekk.us/code/breadcrumb-navxt/', @@ -477,7 +477,7 @@ 'support_threads' => 21, 'support_threads_resolved' => 16, 'active_installs' => 50000, - 'downloaded' => 1589300, + 'downloaded' => 1589392, 'last_updated' => '2021-09-16 11:33am GMT', 'added' => '2016-09-07', 'homepage' => 'http://bootstrapped.ventures/wp-recipe-maker/', @@ -522,7 +522,7 @@ 'support_threads' => 8, 'support_threads_resolved' => 4, 'active_installs' => 10000, - 'downloaded' => 180352, + 'downloaded' => 180498, 'last_updated' => '2021-09-27 6:47am GMT', 'added' => '2018-12-31', 'homepage' => 'https://wpslimseo.com', @@ -548,7 +548,7 @@ array ( 'name' => 'Schema & Structured Data for WP & AMP', 'slug' => 'schema-and-structured-data-for-wp', - 'version' => '1.9.86', + 'version' => '1.9.86.1', 'author' => 'Magazine3', 'author_profile' => 'https://profiles.wordpress.org/magazine3', 'requires' => '3.0', @@ -564,15 +564,15 @@ 5 => 184, ), 'num_ratings' => 210, - 'support_threads' => 32, - 'support_threads_resolved' => 10, + 'support_threads' => 33, + 'support_threads_resolved' => 11, 'active_installs' => 80000, - 'downloaded' => 2443675, - 'last_updated' => '2021-10-18 3:35pm GMT', + 'downloaded' => 2455590, + 'last_updated' => '2021-10-20 2:42am GMT', 'added' => '2018-08-06', 'homepage' => '', 'short_description' => 'Schema & Structured Data for WP & AMP adds Google Rich Snippets markup according to…', - 'download_link' => 'https://downloads.wordpress.org/plugin/schema-and-structured-data-for-wp.1.9.86.zip', + 'download_link' => 'https://downloads.wordpress.org/plugin/schema-and-structured-data-for-wp.1.9.86.1.zip', 'tags' => array ( 'google-snippets' => 'google snippets', @@ -609,10 +609,10 @@ 5 => 72, ), 'num_ratings' => 75, - 'support_threads' => 18, + 'support_threads' => 17, 'support_threads_resolved' => 5, 'active_installs' => 60000, - 'downloaded' => 255118, + 'downloaded' => 255255, 'last_updated' => '2021-07-19 6:12pm GMT', 'added' => '2020-05-19', 'homepage' => 'https://generateblocks.com', @@ -657,11 +657,11 @@ 'support_threads' => 7, 'support_threads_resolved' => 7, 'active_installs' => 30000, - 'downloaded' => 311572, + 'downloaded' => 311643, 'last_updated' => '2021-07-19 8:41pm GMT', 'added' => '2016-02-18', 'homepage' => 'https://perishablepress.com/blackhole-bad-bots/', - 'short_description' => 'Blackhole is a WordPress security plugin that detects and traps bad bots in a virtual…', + 'short_description' => 'Blackhole is a WordPress security plugin that detects and traps bad bots in a virtual black hole, where they are denied access to your entire site.', 'download_link' => 'https://downloads.wordpress.org/plugin/blackhole-bad-bots.3.2.zip', 'tags' => array ( @@ -702,7 +702,7 @@ 'support_threads' => 4, 'support_threads_resolved' => 0, 'active_installs' => 20000, - 'downloaded' => 407865, + 'downloaded' => 407905, 'last_updated' => '2021-07-19 10:48am GMT', 'added' => '2012-12-21', 'homepage' => '', @@ -763,11 +763,11 @@ 'support_threads' => 1, 'support_threads_resolved' => 1, 'active_installs' => 600, - 'downloaded' => 3413, + 'downloaded' => 3484, 'last_updated' => '2021-10-19 8:03pm GMT', 'added' => '2021-02-15', 'homepage' => 'https://newspack.pub', - 'short_description' => 'Create email newsletters with the Gutenberg editor and distribute them with your Mailchimp or Constant…', + 'short_description' => 'Create email newsletters with the Gutenberg editor and distribute them with your Mailchimp or Constant Contact mailing lists.', 'download_link' => 'https://downloads.wordpress.org/plugin/newspack-newsletters.zip', 'tags' => array ( @@ -807,9 +807,9 @@ ), 'num_ratings' => 46, 'support_threads' => 133, - 'support_threads_resolved' => 102, + 'support_threads_resolved' => 99, 'active_installs' => 30000, - 'downloaded' => 382713, + 'downloaded' => 383025, 'last_updated' => '2021-10-12 10:17pm GMT', 'added' => '2020-09-22', 'homepage' => 'https://wp.stories.google/', @@ -852,10 +852,10 @@ 5 => 1030, ), 'num_ratings' => 1651, - 'support_threads' => 305, - 'support_threads_resolved' => 271, + 'support_threads' => 304, + 'support_threads_resolved' => 268, 'active_installs' => 5000000, - 'downloaded' => 249117459, + 'downloaded' => 249931352, 'last_updated' => '2021-10-19 3:50pm GMT', 'added' => '2011-01-20', 'homepage' => 'https://jetpack.com', @@ -901,11 +901,11 @@ 'support_threads' => 5, 'support_threads_resolved' => 3, 'active_installs' => 4000, - 'downloaded' => 38280, + 'downloaded' => 38293, 'last_updated' => '2021-09-28 3:14am GMT', 'added' => '2019-06-20', 'homepage' => 'https://wordpress.org/plugins/easy-notification-bar/', - 'short_description' => 'Easily add a custom top bar notification message to on your site with live customization…', + 'short_description' => 'Easily add a custom top bar notification message to on your site with live customization options via the WordPress customizer.', 'download_link' => 'https://downloads.wordpress.org/plugin/easy-notification-bar.zip', 'tags' => array ( @@ -946,11 +946,11 @@ 'support_threads' => 6, 'support_threads_resolved' => 6, 'active_installs' => 700000, - 'downloaded' => 5136488, + 'downloaded' => 5137226, 'last_updated' => '2021-07-29 11:15am GMT', 'added' => '2009-01-10', 'homepage' => 'https://antispambee.pluginkollektiv.org/', - 'short_description' => 'Antispam plugin with a sophisticated tool set for effective day to day comment and trackback…', + 'short_description' => 'Antispam plugin with a sophisticated tool set for effective day to day comment and trackback spam-fighting. Build with data protection and privacy in …', 'download_link' => 'https://downloads.wordpress.org/plugin/antispam-bee.2.10.0.zip', 'tags' => array ( @@ -991,7 +991,7 @@ 'support_threads' => 5, 'support_threads_resolved' => 4, 'active_installs' => 2000, - 'downloaded' => 22163, + 'downloaded' => 22174, 'last_updated' => '2021-07-29 9:07pm GMT', 'added' => '2020-04-14', 'homepage' => 'https://marc.tv/simpletoc-wordpress-inhaltsverzeichnis-plugin-gutenberg/', @@ -1127,7 +1127,7 @@ 'support_threads' => 16, 'support_threads_resolved' => 3, 'active_installs' => 500000, - 'downloaded' => 5726811, + 'downloaded' => 5728868, 'last_updated' => '2021-10-05 4:45pm GMT', 'added' => '2018-04-19', 'homepage' => '', @@ -1172,11 +1172,11 @@ 'support_threads' => 5, 'support_threads_resolved' => 5, 'active_installs' => 50000, - 'downloaded' => 910046, + 'downloaded' => 910141, 'last_updated' => '2021-08-13 8:08am GMT', 'added' => '2014-08-08', 'homepage' => 'https://wpauthorbox.com/', - 'short_description' => 'Add a responsive author box with social icons to any post. Great author box for any site!', + 'short_description' => 'Add a responsive author box with social icons to any post. Great author box for…', 'download_link' => 'https://downloads.wordpress.org/plugin/simple-author-box.2.42.zip', 'tags' => array ( @@ -1216,7 +1216,7 @@ 'support_threads' => 8, 'support_threads_resolved' => 1, 'active_installs' => 40000, - 'downloaded' => 237934, + 'downloaded' => 238114, 'last_updated' => '2021-09-23 6:49pm GMT', 'added' => '2020-08-25', 'homepage' => 'https://studiopress.com/genesis-pro/', @@ -1261,7 +1261,7 @@ 'support_threads' => 1, 'support_threads_resolved' => 0, 'active_installs' => 500, - 'downloaded' => 8169, + 'downloaded' => 8180, 'last_updated' => '2021-09-11 2:30pm GMT', 'added' => '2018-12-28', 'homepage' => '', @@ -1287,7 +1287,7 @@ array ( 'name' => 'Calculated Fields Form', 'slug' => 'calculated-fields-form', - 'version' => '1.1.29', + 'version' => '1.1.30', 'author' => 'CodePeople', 'author_profile' => 'https://profiles.wordpress.org/codepeople', 'requires' => '3.0.5', @@ -1303,14 +1303,14 @@ 5 => 686, ), 'num_ratings' => 739, - 'support_threads' => 107, - 'support_threads_resolved' => 107, + 'support_threads' => 105, + 'support_threads_resolved' => 105, 'active_installs' => 60000, - 'downloaded' => 3645736, - 'last_updated' => '2021-10-18 9:26am GMT', + 'downloaded' => 3654737, + 'last_updated' => '2021-10-19 10:31pm GMT', 'added' => '2013-03-12', 'homepage' => 'https://cff.dwbooster.com', - 'short_description' => 'Calculated Fields Form allows you to create both simple and rich forms, quickly like a…', + 'short_description' => 'Calculated Fields Form allows you to create both simple and rich forms, quickly like a professional. It includes a form builder with dynamic calculate …', 'download_link' => 'https://downloads.wordpress.org/plugin/calculated-fields-form.zip', 'tags' => array ( @@ -1345,13 +1345,13 @@ 2 => 22, 3 => 15, 4 => 60, - 5 => 1569, + 5 => 1570, ), - 'num_ratings' => 1832, + 'num_ratings' => 1833, 'support_threads' => 132, - 'support_threads_resolved' => 128, + 'support_threads_resolved' => 126, 'active_installs' => 2000000, - 'downloaded' => 86049973, + 'downloaded' => 86057385, 'last_updated' => '2021-09-22 3:46pm GMT', 'added' => '2007-03-30', 'homepage' => 'https://aioseo.com/', @@ -1391,13 +1391,13 @@ 2 => 7, 3 => 6, 4 => 27, - 5 => 1224, + 5 => 1225, ), - 'num_ratings' => 1304, + 'num_ratings' => 1305, 'support_threads' => 5, 'support_threads_resolved' => 4, 'active_installs' => 40000, - 'downloaded' => 1241073, + 'downloaded' => 1241302, 'last_updated' => '2021-09-24 3:41pm GMT', 'added' => '2015-09-27', 'homepage' => 'http://wordpress.org/plugins/weglot/', @@ -1435,14 +1435,14 @@ 1 => 74, 2 => 17, 3 => 21, - 4 => 52, - 5 => 3559, + 4 => 53, + 5 => 3561, ), - 'num_ratings' => 3723, + 'num_ratings' => 3726, 'support_threads' => 124, 'support_threads_resolved' => 120, 'active_installs' => 1000000, - 'downloaded' => 21549815, + 'downloaded' => 21556610, 'last_updated' => '2021-10-13 8:38am GMT', 'added' => '2018-11-19', 'homepage' => 'https://s.rankmath.com/home', @@ -1488,7 +1488,7 @@ 'support_threads' => 1, 'support_threads_resolved' => 0, 'active_installs' => 300000, - 'downloaded' => 2808630, + 'downloaded' => 2808987, 'last_updated' => '2021-03-17 1:26pm GMT', 'added' => '2008-04-07', 'homepage' => 'https://www.satollo.net/plugins/header-footer', @@ -1548,7 +1548,7 @@ 'support_threads' => 2, 'support_threads_resolved' => 1, 'active_installs' => 200000, - 'downloaded' => 1524456, + 'downloaded' => 1524691, 'last_updated' => '2021-07-17 8:46am GMT', 'added' => '2011-03-16', 'homepage' => 'https://statify.pluginkollektiv.org/', @@ -1593,7 +1593,7 @@ 'support_threads' => 1, 'support_threads_resolved' => 0, 'active_installs' => 4000, - 'downloaded' => 21060, + 'downloaded' => 21085, 'last_updated' => '2021-07-22 6:55am GMT', 'added' => '2019-10-18', 'homepage' => 'https://lqd.jp/wp/plugin.html', @@ -1634,10 +1634,10 @@ 5 => 163, ), 'num_ratings' => 196, - 'support_threads' => 6, + 'support_threads' => 7, 'support_threads_resolved' => 1, 'active_installs' => 60000, - 'downloaded' => 1109255, + 'downloaded' => 1109761, 'last_updated' => '2021-10-13 3:10pm GMT', 'added' => '2016-05-11', 'homepage' => 'https://schema.press', @@ -1686,7 +1686,7 @@ 'last_updated' => '2020-05-22 5:21pm GMT', 'added' => '2013-10-03', 'homepage' => 'http://wordpress.org/plugins/iframely/', - 'short_description' => 'Iframely extends WordPress default rich media embeds and adds support of over 2000 more providers…', + 'short_description' => 'Iframely extends WordPress default rich media embeds and adds support of over 2000 more providers and cards as URL previews for the rest of the Web.', 'download_link' => 'https://downloads.wordpress.org/plugin/iframely.zip', 'tags' => array ( @@ -1726,11 +1726,11 @@ 'support_threads' => 1, 'support_threads_resolved' => 0, 'active_installs' => 100, - 'downloaded' => 2342, + 'downloaded' => 2353, 'last_updated' => '2020-03-26 6:09pm GMT', 'added' => '2016-06-17', 'homepage' => 'https://github.com/INN/pym-shortcode', - 'short_description' => 'A WordPress block and shortcode for embedding iframes that are responsive horizontally and vertically, using the NPR Visuals Team's Pym.js.', + 'short_description' => 'A WordPress block and shortcode for embedding iframes that are responsive horizontally and vertically, using…', 'download_link' => 'https://downloads.wordpress.org/plugin/pym-shortcode.1.3.2.4.zip', 'tags' => array ( @@ -1769,9 +1769,9 @@ ), 'num_ratings' => 16, 'support_threads' => 10, - 'support_threads_resolved' => 5, + 'support_threads_resolved' => 6, 'active_installs' => 40000, - 'downloaded' => 301659, + 'downloaded' => 301750, 'last_updated' => '2021-09-21 7:17pm GMT', 'added' => '2018-07-12', 'homepage' => 'https://github.com/GoogleChromeLabs/pwa-wp', @@ -1815,9 +1815,9 @@ ), 'num_ratings' => 1383, 'support_threads' => 32, - 'support_threads_resolved' => 30, + 'support_threads_resolved' => 31, 'active_installs' => 2000000, - 'downloaded' => 36068700, + 'downloaded' => 36072428, 'last_updated' => '2021-08-04 7:14am GMT', 'added' => '2013-06-19', 'homepage' => 'https://www.mc4wp.com/#utm_source=wp-plugin&utm_medium=mailchimp-for-wp&utm_campaign=plugins-page', @@ -1890,14 +1890,14 @@ 5 => 1195, ), 'num_ratings' => 1243, - 'support_threads' => 74, - 'support_threads_resolved' => 67, + 'support_threads' => 71, + 'support_threads_resolved' => 65, 'active_installs' => 100000, - 'downloaded' => 5344580, + 'downloaded' => 5345903, 'last_updated' => '2021-10-14 10:40am GMT', 'added' => '2014-06-23', 'homepage' => 'https://wpadvancedads.com', - 'short_description' => 'Manage and optimize all ad types. Support for Google AdSense Auto ads, Amazon, image banners,…', + 'short_description' => 'Manage and optimize all ad types. Support for Google AdSense Auto ads, Amazon, image banners, HTML, page builder, ad widget, ad rotations, ads.txt', 'download_link' => 'https://downloads.wordpress.org/plugin/advanced-ads.1.29.1.zip', 'tags' => array ( @@ -1938,7 +1938,7 @@ 'support_threads' => 3, 'support_threads_resolved' => 2, 'active_installs' => 1000, - 'downloaded' => 12474, + 'downloaded' => 12485, 'last_updated' => '2021-09-21 7:11pm GMT', 'added' => '2019-07-30', 'homepage' => 'https://github.com/westonruter/syntax-highlighting-code-block', @@ -1978,13 +1978,13 @@ 2 => 47, 3 => 57, 4 => 226, - 5 => 9824, + 5 => 9825, ), - 'num_ratings' => 10372, - 'support_threads' => 88, - 'support_threads_resolved' => 76, + 'num_ratings' => 10373, + 'support_threads' => 87, + 'support_threads_resolved' => 74, 'active_installs' => 5000000, - 'downloaded' => 84741294, + 'downloaded' => 84759844, 'last_updated' => '2021-10-07 11:02am GMT', 'added' => '2016-03-14', 'homepage' => 'https://wpforms.com', @@ -2030,7 +2030,7 @@ 'support_threads' => 11, 'support_threads_resolved' => 9, 'active_installs' => 3000000, - 'downloaded' => 101831096, + 'downloaded' => 101841550, 'last_updated' => '2021-09-30 7:56am GMT', 'added' => '2007-09-14', 'homepage' => 'https://www.monsterinsights.com/?utm_source=liteplugin&utm_medium=pluginheader&utm_campaign=pluginurl&utm_content=7%2E0%2E0', @@ -2076,7 +2076,7 @@ 'support_threads' => 1, 'support_threads_resolved' => 0, 'active_installs' => 40000, - 'downloaded' => 999598, + 'downloaded' => 999721, 'last_updated' => '2020-10-28 4:53pm GMT', 'added' => '2018-03-26', 'homepage' => 'https://atomicblocks.com', @@ -2121,11 +2121,11 @@ 'support_threads' => 12, 'support_threads_resolved' => 8, 'active_installs' => 5000000, - 'downloaded' => 221281530, + 'downloaded' => 221318879, 'last_updated' => '2021-10-01 6:28pm GMT', 'added' => '2005-10-20', 'homepage' => 'https://akismet.com/', - 'short_description' => 'The best anti-spam protection to block spam comments and spam in a contact form. The…', + 'short_description' => 'The best anti-spam protection to block spam comments and spam in a contact form. The most trusted antispam solution for WordPress and WooCommerce.', 'download_link' => 'https://downloads.wordpress.org/plugin/akismet.4.2.1.zip', 'tags' => array ( @@ -2211,11 +2211,11 @@ 'support_threads' => 1, 'support_threads_resolved' => 0, 'active_installs' => 100000, - 'downloaded' => 5077713, + 'downloaded' => 5077821, 'last_updated' => '2019-07-10 5:19pm GMT', 'added' => '2008-12-23', 'homepage' => 'https://wordpress.org/plugins/addthis/', - 'short_description' => 'Now compatible with the AMP Plugin! Free Share Buttons from AddThis. Share to Messenger, WhatsApp,…', + 'short_description' => 'Now compatible with the AMP Plugin! Free Share Buttons from AddThis. Share to Messenger, WhatsApp, Facebook, Twitter, Pinterest and many more.', 'download_link' => 'https://downloads.wordpress.org/plugin/addthis.6.2.6.zip', 'tags' => array ( @@ -2256,11 +2256,11 @@ 'support_threads' => 8, 'support_threads_resolved' => 0, 'active_installs' => 1000, - 'downloaded' => 60739, + 'downloaded' => 60763, 'last_updated' => '2021-10-07 1:18am GMT', 'added' => '2018-11-16', 'homepage' => '', - 'short_description' => 'Scale your ecommerce business with WordPress on the front-end and BigCommerce on the back end.…', + 'short_description' => 'Scale your ecommerce business with WordPress on the front-end and BigCommerce on the back end. Free up server resources from things like catalog manag …', 'download_link' => 'https://downloads.wordpress.org/plugin/bigcommerce.4.18.0.zip', 'tags' => array ( @@ -2298,10 +2298,10 @@ 5 => 25761, ), 'num_ratings' => 27402, - 'support_threads' => 491, - 'support_threads_resolved' => 443, + 'support_threads' => 494, + 'support_threads_resolved' => 442, 'active_installs' => 5000000, - 'downloaded' => 366734729, + 'downloaded' => 367035742, 'last_updated' => '2021-10-19 6:48am GMT', 'added' => '2010-10-11', 'homepage' => 'https://yoa.st/1uj', @@ -2344,10 +2344,10 @@ 5 => 710, ), 'num_ratings' => 3456, - 'support_threads' => 63, - 'support_threads_resolved' => 28, + 'support_threads' => 60, + 'support_threads_resolved' => 26, 'active_installs' => 300000, - 'downloaded' => 25101324, + 'downloaded' => 25104297, 'last_updated' => '2021-10-13 3:50pm GMT', 'added' => '2017-06-16', 'homepage' => 'https://github.com/WordPress/gutenberg', diff --git a/package-lock.json b/package-lock.json index 47149422a01..21affaff9b0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3673,6 +3673,12 @@ "requires": { "type-fest": "^0.8.1" } + }, + "prettier": { + "version": "npm:wp-prettier@2.2.1-beta-1", + "resolved": "https://registry.npmjs.org/wp-prettier/-/wp-prettier-2.2.1-beta-1.tgz", + "integrity": "sha512-+JHkqs9LC/JPp51yy1hzs3lQ7qeuWCwOcSzpQNeeY/G7oSpnF61vxt7hRh87zNRTr6ob2ndy0W8rVzhgrcA+Gw==", + "dev": true } } }, @@ -4104,6 +4110,12 @@ "semver": "^7.3.5" } }, + "prettier": { + "version": "npm:wp-prettier@2.2.1-beta-1", + "resolved": "https://registry.npmjs.org/wp-prettier/-/wp-prettier-2.2.1-beta-1.tgz", + "integrity": "sha512-+JHkqs9LC/JPp51yy1hzs3lQ7qeuWCwOcSzpQNeeY/G7oSpnF61vxt7hRh87zNRTr6ob2ndy0W8rVzhgrcA+Gw==", + "dev": true + }, "read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", @@ -16024,12 +16036,6 @@ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, - "prettier": { - "version": "npm:wp-prettier@2.2.1-beta-1", - "resolved": "https://registry.npmjs.org/wp-prettier/-/wp-prettier-2.2.1-beta-1.tgz", - "integrity": "sha512-+JHkqs9LC/JPp51yy1hzs3lQ7qeuWCwOcSzpQNeeY/G7oSpnF61vxt7hRh87zNRTr6ob2ndy0W8rVzhgrcA+Gw==", - "dev": true - }, "prettier-linter-helpers": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", diff --git a/src/Admin/AMPPlugins.php b/src/Admin/AMPPlugins.php index 1abf2f05dec..b1b9490631f 100644 --- a/src/Admin/AMPPlugins.php +++ b/src/Admin/AMPPlugins.php @@ -146,12 +146,12 @@ public function register() { } add_filter( 'install_plugins_tabs', [ $this, 'add_tab' ] ); - add_filter( 'install_plugins_table_api_args_px_enhancing', [ $this, 'tab_args' ] ); + add_filter( 'install_plugins_table_api_args_amp-compatible', [ $this, 'tab_args' ] ); add_filter( 'plugins_api', [ $this, 'plugins_api' ], 10, 3 ); add_filter( 'plugin_install_action_links', [ $this, 'action_links' ], 10, 2 ); add_filter( 'plugin_row_meta', [ $this, 'plugin_row_meta' ], 10, 3 ); - add_action( 'install_plugins_px_enhancing', 'display_plugins_table' ); + add_action( 'install_plugins_amp-compatible', 'display_plugins_table' ); } /** @@ -215,7 +215,7 @@ public function add_tab( $tabs ) { return array_merge( [ - 'px_enhancing' => ' ' . esc_html__( 'PX Enhancing', 'amp' ), + 'amp-compatible' => ' ' . esc_html__( 'AMP Compatible', 'amp' ), ], $tabs ); @@ -235,9 +235,9 @@ public function tab_args() { $page = max( 1, $pagenum ); return [ - 'px_enhancing' => true, - 'per_page' => $per_page, - 'page' => $page, + 'amp-compatible' => true, + 'per_page' => $per_page, + 'page' => $page, ]; } @@ -253,7 +253,7 @@ public function tab_args() { public function plugins_api( $response, $action, $args ) { $args = (array) $args; - if ( ! isset( $args['px_enhancing'] ) ) { + if ( ! isset( $args['amp-compatible'] ) ) { return $response; } diff --git a/src/Admin/AMPThemes.php b/src/Admin/AMPThemes.php index 4adcd2e7288..89e98b049c3 100644 --- a/src/Admin/AMPThemes.php +++ b/src/Admin/AMPThemes.php @@ -180,7 +180,7 @@ public function enqueue_scripts() { public function themes_api( $response, $action, $args ) { $args = (array) $args; - if ( ! isset( $args['browse'] ) || 'px_enhancing' !== $args['browse'] ) { + if ( ! isset( $args['browse'] ) || 'amp-compatible' !== $args['browse'] ) { return $response; } diff --git a/tests/php/src/Admin/AMPPluginsTest.php b/tests/php/src/Admin/AMPPluginsTest.php index e9f6f325770..2c1d0a09fbe 100644 --- a/tests/php/src/Admin/AMPPluginsTest.php +++ b/tests/php/src/Admin/AMPPluginsTest.php @@ -167,7 +167,7 @@ public function test_register() { $this->assertEquals( 10, has_filter( - 'install_plugins_table_api_args_px_enhancing', + 'install_plugins_table_api_args_amp-compatible', [ $this->instance, 'tab_args' ] ) ); @@ -185,7 +185,7 @@ public function test_register() { ); $this->assertEquals( 10, - has_action( 'install_plugins_px_enhancing', 'display_plugins_table' ) + has_action( 'install_plugins_amp-compatible', 'display_plugins_table' ) ); set_current_screen( 'plugins' ); @@ -212,7 +212,7 @@ public function test_enqueue_scripts() { public function test_add_tab() { $this->assertArrayHasKey( - 'px_enhancing', + 'amp-compatible', $this->instance->add_tab( [] ) ); } @@ -224,7 +224,7 @@ public function test_tab_args() { $output = $this->instance->tab_args(); - $this->assertArrayHasKey( 'px_enhancing', $output ); + $this->assertArrayHasKey( 'amp-compatible', $output ); $this->assertArrayHasKey( 'per_page', $output ); $this->assertArrayHasKey( 'page', $output ); } @@ -242,8 +242,8 @@ public function test_plugins_api() { // Test 2: Request for PX compatible data. $args = [ - 'px_enhancing' => true, - 'per_page' => 36, + 'amp-compatible' => true, + 'per_page' => 36, ]; $response = $this->instance->plugins_api( $response, 'query_themes', $args ); diff --git a/tests/php/src/Admin/AMPThemesTest.php b/tests/php/src/Admin/AMPThemesTest.php index a2632ea1850..63ae4a4fc88 100644 --- a/tests/php/src/Admin/AMPThemesTest.php +++ b/tests/php/src/Admin/AMPThemesTest.php @@ -153,7 +153,7 @@ public function test_themes_api() { // Test 2: Request for PX compatible data. $args = [ - 'browse' => 'px_enhancing', + 'browse' => 'amp-compatible', 'per_page' => 36, ]; From 08861f9881e1d3be31c96d8092c73bc48b0c4936 Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Thu, 21 Oct 2021 13:51:16 +0530 Subject: [PATCH 060/105] Remove the usage of tmp file to convert JS object into PHP array --- bin/update-extension-files.js | 46 +- includes/ecosystem-data/plugins.php | 254 ++--- includes/ecosystem-data/themes.php | 1343 ++++++++++++++++++--------- 3 files changed, 1064 insertions(+), 579 deletions(-) diff --git a/bin/update-extension-files.js b/bin/update-extension-files.js index 6e0c59daeb3..11c1f00c9ae 100644 --- a/bin/update-extension-files.js +++ b/bin/update-extension-files.js @@ -1,7 +1,7 @@ /** * External dependencies */ -const { exec } = require( 'child_process' ); +const { execSync } = require( 'child_process' ); const fs = require( 'fs' ); const { getPluginsList, getThemesList } = require( 'wporg-api-client' ); const axios = require( 'axios' ); @@ -19,7 +19,7 @@ class UpdateExtensionFiles { this.themes = []; await this.fetchData(); - await this.storeData(); + this.storeData(); } )(); } @@ -74,10 +74,8 @@ class UpdateExtensionFiles { /** * Store plugins and theme data in JSON respective file. - * - * @return {Promise} */ - async storeData() { + storeData() { const phpcsDisables = [ 'Squiz.Commenting.FileComment.Missing', 'WordPress.Arrays.ArrayIndentation', @@ -93,59 +91,35 @@ class UpdateExtensionFiles { const phpcsDisableComments = phpcsDisables.map( ( rule ) => `// phpcs:disable ${ rule }\n` ).join( '' ); if ( this.plugins ) { - let output = await this.convertToPhpArray( this.plugins ); + let output = this.convertToPhpArray( this.plugins ); output = `} Output or error from shell command. - */ - executeCommand( command ) { - return new Promise( ( done, failed ) => { - exec( command, ( error, stdout, stderr ) => { - if ( error ) { - error.stdout = stdout; - error.stderr = stderr; - failed( error ); - return; - } - done( { stdout, stderr } ); - } ); - } ); - } - /** * Convert JS object into PHP array variable. * * @param {Object} object An object that needs to convert into a PHP array. * @return {string|null} PHP array in string. */ - async convertToPhpArray( object ) { + convertToPhpArray( object ) { if ( 'object' !== typeof object ) { return null; } - const tempFilePath = '/tmp/amp.json'; const json = JSON.stringify( object ); - const command = `php -r 'var_export( json_decode( file_get_contents( "${ tempFilePath }" ), true ) );'`; - - fs.writeFileSync( tempFilePath, json ); - const output = await this.executeCommand( command ); - - fs.unlinkSync( tempFilePath ); + const command = `php -r 'var_export( json_decode( file_get_contents( "php://stdin" ), true ) );'`; + let output = execSync( command, { input: json } ); + output = output.toString(); - return ( output.stdout ) ? output.stdout : 'array()'; + return ( output && 'NULL' !== output ) ? output : 'array()'; } /** diff --git a/includes/ecosystem-data/plugins.php b/includes/ecosystem-data/plugins.php index 50df9662ae8..ee0d6182ea1 100644 --- a/includes/ecosystem-data/plugins.php +++ b/includes/ecosystem-data/plugins.php @@ -33,7 +33,7 @@ 'support_threads' => 6, 'support_threads_resolved' => 6, 'active_installs' => 8000, - 'downloaded' => 128848, + 'downloaded' => 128982, 'last_updated' => '2021-10-14 9:56am GMT', 'added' => '2019-02-06', 'homepage' => 'https://vedathemes.com/podcast-player/', @@ -78,7 +78,7 @@ 'support_threads' => 4, 'support_threads_resolved' => 4, 'active_installs' => 4000, - 'downloaded' => 291598, + 'downloaded' => 291686, 'last_updated' => '2021-10-19 3:30pm GMT', 'added' => '2016-02-14', 'homepage' => 'https://wpsso.com/extend/plugins/wpsso-schema-json-ld/', @@ -117,7 +117,7 @@ 'support_threads' => 11, 'support_threads_resolved' => 7, 'active_installs' => 300000, - 'downloaded' => 7108264, + 'downloaded' => 7112124, 'last_updated' => '2021-10-11 2:44pm GMT', 'added' => '2014-11-05', 'homepage' => 'https://shortpixel.com/', @@ -159,10 +159,10 @@ 5 => 110, ), 'num_ratings' => 112, - 'support_threads' => 39, - 'support_threads_resolved' => 30, + 'support_threads' => 40, + 'support_threads_resolved' => 31, 'active_installs' => 10000, - 'downloaded' => 151982, + 'downloaded' => 152096, 'last_updated' => '2021-09-15 2:23pm GMT', 'added' => '2019-05-29', 'homepage' => 'https://twentig.com', @@ -205,10 +205,10 @@ 5 => 205, ), 'num_ratings' => 235, - 'support_threads' => 57, - 'support_threads_resolved' => 28, + 'support_threads' => 59, + 'support_threads_resolved' => 29, 'active_installs' => 1000000, - 'downloaded' => 9061699, + 'downloaded' => 9068055, 'last_updated' => '2021-10-05 1:54am GMT', 'added' => '2010-02-26', 'homepage' => 'https://github.com/WebDevStudios/custom-post-type-ui/', @@ -253,7 +253,7 @@ 'support_threads' => 3, 'support_threads_resolved' => 1, 'active_installs' => 3000, - 'downloaded' => 25509, + 'downloaded' => 25520, 'last_updated' => '2021-07-29 10:41am GMT', 'added' => '2018-05-10', 'homepage' => 'https://tajam.id/flex-posts/', @@ -291,13 +291,13 @@ 2 => 2, 3 => 14, 4 => 45, - 5 => 653, + 5 => 654, ), - 'num_ratings' => 747, - 'support_threads' => 20, + 'num_ratings' => 748, + 'support_threads' => 21, 'support_threads_resolved' => 6, 'active_installs' => 100000, - 'downloaded' => 6603700, + 'downloaded' => 6604837, 'last_updated' => '2021-10-12 3:43pm GMT', 'added' => '2008-01-02', 'homepage' => 'https://yarpp.com/', @@ -342,7 +342,7 @@ 'support_threads' => 1, 'support_threads_resolved' => 1, 'active_installs' => 4000, - 'downloaded' => 37357, + 'downloaded' => 37393, 'last_updated' => '2021-10-01 9:37am GMT', 'added' => '2019-03-05', 'homepage' => 'https://superbthemes.com/plugins/superb-tables/', @@ -386,11 +386,11 @@ 'support_threads' => 1, 'support_threads_resolved' => 0, 'active_installs' => 2000, - 'downloaded' => 35836, + 'downloaded' => 35884, 'last_updated' => '2021-10-12 9:08am GMT', 'added' => '2018-09-08', 'homepage' => 'https://wordpress.org/plugins/floating-button/', - 'short_description' => 'Easily create a custom sticky floating buttons. The Floating Button will be the effective solution for increasing the recognition of your web resource', + 'short_description' => 'Easily create a custom sticky floating buttons. The Floating Button will be the effective solution…', 'download_link' => 'https://downloads.wordpress.org/plugin/floating-button.5.1.zip', 'tags' => array ( @@ -431,11 +431,11 @@ 'support_threads' => 8, 'support_threads_resolved' => 3, 'active_installs' => 900000, - 'downloaded' => 10200481, + 'downloaded' => 10202613, 'last_updated' => '2021-04-01 2:13am GMT', 'added' => '2007-12-01', 'homepage' => 'http://mtekk.us/code/breadcrumb-navxt/', - 'short_description' => 'Breadcrumb NavXT, the successor to the popular WordPress plugin Breadcrumb Navigation XT, was written from the ground up to be better than its ancesto …', + 'short_description' => 'Breadcrumb NavXT, the successor to the popular WordPress plugin Breadcrumb Navigation XT, was written from…', 'download_link' => 'https://downloads.wordpress.org/plugin/breadcrumb-navxt.6.6.0.zip', 'tags' => array ( @@ -474,14 +474,14 @@ 5 => 209, ), 'num_ratings' => 215, - 'support_threads' => 21, + 'support_threads' => 22, 'support_threads_resolved' => 16, 'active_installs' => 50000, - 'downloaded' => 1589392, + 'downloaded' => 1589648, 'last_updated' => '2021-09-16 11:33am GMT', 'added' => '2016-09-07', 'homepage' => 'http://bootstrapped.ventures/wp-recipe-maker/', - 'short_description' => 'The easy and user-friendly recipe plugin for everyone. Automatic JSON-LD metadata for food AND how-to recipes will improve your SEO!', + 'short_description' => 'The easy and user-friendly recipe plugin for everyone. Automatic JSON-LD metadata for food AND how-to…', 'download_link' => 'https://downloads.wordpress.org/plugin/wp-recipe-maker.zip', 'tags' => array ( @@ -522,7 +522,7 @@ 'support_threads' => 8, 'support_threads_resolved' => 4, 'active_installs' => 10000, - 'downloaded' => 180498, + 'downloaded' => 180631, 'last_updated' => '2021-09-27 6:47am GMT', 'added' => '2018-12-31', 'homepage' => 'https://wpslimseo.com', @@ -561,17 +561,17 @@ 2 => 1, 3 => 2, 4 => 10, - 5 => 184, + 5 => 185, ), - 'num_ratings' => 210, - 'support_threads' => 33, + 'num_ratings' => 211, + 'support_threads' => 34, 'support_threads_resolved' => 11, 'active_installs' => 80000, - 'downloaded' => 2455590, + 'downloaded' => 2466353, 'last_updated' => '2021-10-20 2:42am GMT', 'added' => '2018-08-06', 'homepage' => '', - 'short_description' => 'Schema & Structured Data for WP & AMP adds Google Rich Snippets markup according to…', + 'short_description' => 'Schema & Structured Data for WP & AMP adds Google Rich Snippets markup according to Schema.org guidelines to structure your site for SEO.', 'download_link' => 'https://downloads.wordpress.org/plugin/schema-and-structured-data-for-wp.1.9.86.1.zip', 'tags' => array ( @@ -612,7 +612,7 @@ 'support_threads' => 17, 'support_threads_resolved' => 5, 'active_installs' => 60000, - 'downloaded' => 255255, + 'downloaded' => 255570, 'last_updated' => '2021-07-19 6:12pm GMT', 'added' => '2020-05-19', 'homepage' => 'https://generateblocks.com', @@ -657,7 +657,7 @@ 'support_threads' => 7, 'support_threads_resolved' => 7, 'active_installs' => 30000, - 'downloaded' => 311643, + 'downloaded' => 311747, 'last_updated' => '2021-07-19 8:41pm GMT', 'added' => '2016-02-18', 'homepage' => 'https://perishablepress.com/blackhole-bad-bots/', @@ -702,11 +702,11 @@ 'support_threads' => 4, 'support_threads_resolved' => 0, 'active_installs' => 20000, - 'downloaded' => 407905, + 'downloaded' => 407980, 'last_updated' => '2021-07-19 10:48am GMT', 'added' => '2012-12-21', 'homepage' => '', - 'short_description' => 'Places an icon, all time views count and views today count at the bottom of…', + 'short_description' => 'Places an icon, all time views count and views today count at the bottom of posts, pages and custom post types on any WordPress website.', 'download_link' => 'https://downloads.wordpress.org/plugin/page-views-count.2.4.12.zip', 'tags' => array ( @@ -763,11 +763,11 @@ 'support_threads' => 1, 'support_threads_resolved' => 1, 'active_installs' => 600, - 'downloaded' => 3484, + 'downloaded' => 3519, 'last_updated' => '2021-10-19 8:03pm GMT', 'added' => '2021-02-15', 'homepage' => 'https://newspack.pub', - 'short_description' => 'Create email newsletters with the Gutenberg editor and distribute them with your Mailchimp or Constant Contact mailing lists.', + 'short_description' => 'Create email newsletters with the Gutenberg editor and distribute them with your Mailchimp or Constant…', 'download_link' => 'https://downloads.wordpress.org/plugin/newspack-newsletters.zip', 'tags' => array ( @@ -806,14 +806,14 @@ 5 => 33, ), 'num_ratings' => 46, - 'support_threads' => 133, - 'support_threads_resolved' => 99, + 'support_threads' => 134, + 'support_threads_resolved' => 100, 'active_installs' => 30000, - 'downloaded' => 383025, + 'downloaded' => 383662, 'last_updated' => '2021-10-12 10:17pm GMT', 'added' => '2020-09-22', 'homepage' => 'https://wp.stories.google/', - 'short_description' => 'Web Stories are a visual storytelling format for the open web which immerses your readers…', + 'short_description' => 'Web Stories are a visual storytelling format for the open web which immerses your readers in fast-loading, full-screen, and visually rich experiences.', 'download_link' => 'https://downloads.wordpress.org/plugin/web-stories.1.13.0.zip', 'tags' => array ( @@ -849,17 +849,17 @@ 2 => 80, 3 => 82, 4 => 138, - 5 => 1030, + 5 => 1032, ), - 'num_ratings' => 1651, - 'support_threads' => 304, - 'support_threads_resolved' => 268, + 'num_ratings' => 1653, + 'support_threads' => 298, + 'support_threads_resolved' => 275, 'active_installs' => 5000000, - 'downloaded' => 249931352, + 'downloaded' => 250091201, 'last_updated' => '2021-10-19 3:50pm GMT', 'added' => '2011-01-20', 'homepage' => 'https://jetpack.com', - 'short_description' => 'Improve your WP security with powerful one-click tools like backup and malware scan. Get essential free tools including stats, CDN and social sharing.', + 'short_description' => 'Improve your WP security with powerful one-click tools like backup and malware scan. Get essential…', 'download_link' => 'https://downloads.wordpress.org/plugin/jetpack.10.2.1.zip', 'tags' => array ( @@ -901,7 +901,7 @@ 'support_threads' => 5, 'support_threads_resolved' => 3, 'active_installs' => 4000, - 'downloaded' => 38293, + 'downloaded' => 38350, 'last_updated' => '2021-09-28 3:14am GMT', 'added' => '2019-06-20', 'homepage' => 'https://wordpress.org/plugins/easy-notification-bar/', @@ -943,14 +943,14 @@ 5 => 174, ), 'num_ratings' => 185, - 'support_threads' => 6, - 'support_threads_resolved' => 6, + 'support_threads' => 5, + 'support_threads_resolved' => 5, 'active_installs' => 700000, - 'downloaded' => 5137226, + 'downloaded' => 5138783, 'last_updated' => '2021-07-29 11:15am GMT', 'added' => '2009-01-10', 'homepage' => 'https://antispambee.pluginkollektiv.org/', - 'short_description' => 'Antispam plugin with a sophisticated tool set for effective day to day comment and trackback spam-fighting. Build with data protection and privacy in …', + 'short_description' => 'Antispam plugin with a sophisticated tool set for effective day to day comment and trackback…', 'download_link' => 'https://downloads.wordpress.org/plugin/antispam-bee.2.10.0.zip', 'tags' => array ( @@ -991,7 +991,7 @@ 'support_threads' => 5, 'support_threads_resolved' => 4, 'active_installs' => 2000, - 'downloaded' => 22174, + 'downloaded' => 22220, 'last_updated' => '2021-07-29 9:07pm GMT', 'added' => '2020-04-14', 'homepage' => 'https://marc.tv/simpletoc-wordpress-inhaltsverzeichnis-plugin-gutenberg/', @@ -1037,7 +1037,7 @@ 'support_threads' => 2, 'support_threads_resolved' => 0, 'active_installs' => 400, - 'downloaded' => 3450, + 'downloaded' => 3461, 'last_updated' => '2021-07-23 10:00pm GMT', 'added' => '2020-10-01', 'homepage' => '', @@ -1108,7 +1108,7 @@ array ( 'name' => 'Page Builder Gutenberg Blocks – CoBlocks', 'slug' => 'coblocks', - 'version' => '2.17.0', + 'version' => '2.18.0', 'author' => 'GoDaddy', 'author_profile' => 'https://profiles.wordpress.org/godaddy', 'requires' => '5.0', @@ -1124,15 +1124,15 @@ 5 => 63, ), 'num_ratings' => 82, - 'support_threads' => 16, - 'support_threads_resolved' => 3, + 'support_threads' => 15, + 'support_threads_resolved' => 2, 'active_installs' => 500000, - 'downloaded' => 5728868, - 'last_updated' => '2021-10-05 4:45pm GMT', + 'downloaded' => 5816889, + 'last_updated' => '2021-10-20 6:56pm GMT', 'added' => '2018-04-19', 'homepage' => '', 'short_description' => 'CoBlocks is a suite of page builder WordPress blocks for Gutenberg, with 10+ new blocks and a true page builder experience with rows and columns.', - 'download_link' => 'https://downloads.wordpress.org/plugin/coblocks.2.17.0.zip', + 'download_link' => 'https://downloads.wordpress.org/plugin/coblocks.2.18.0.zip', 'tags' => array ( 'blocks' => 'blocks', @@ -1169,14 +1169,14 @@ 5 => 75, ), 'num_ratings' => 97, - 'support_threads' => 5, - 'support_threads_resolved' => 5, + 'support_threads' => 4, + 'support_threads_resolved' => 4, 'active_installs' => 50000, - 'downloaded' => 910141, + 'downloaded' => 910341, 'last_updated' => '2021-08-13 8:08am GMT', 'added' => '2014-08-08', 'homepage' => 'https://wpauthorbox.com/', - 'short_description' => 'Add a responsive author box with social icons to any post. Great author box for…', + 'short_description' => 'Add a responsive author box with social icons to any post. Great author box for any site!', 'download_link' => 'https://downloads.wordpress.org/plugin/simple-author-box.2.42.zip', 'tags' => array ( @@ -1216,7 +1216,7 @@ 'support_threads' => 8, 'support_threads_resolved' => 1, 'active_installs' => 40000, - 'downloaded' => 238114, + 'downloaded' => 238666, 'last_updated' => '2021-09-23 6:49pm GMT', 'added' => '2020-08-25', 'homepage' => 'https://studiopress.com/genesis-pro/', @@ -1261,7 +1261,7 @@ 'support_threads' => 1, 'support_threads_resolved' => 0, 'active_installs' => 500, - 'downloaded' => 8180, + 'downloaded' => 8202, 'last_updated' => '2021-09-11 2:30pm GMT', 'added' => '2018-12-28', 'homepage' => '', @@ -1287,7 +1287,7 @@ array ( 'name' => 'Calculated Fields Form', 'slug' => 'calculated-fields-form', - 'version' => '1.1.30', + 'version' => '1.1.31', 'author' => 'CodePeople', 'author_profile' => 'https://profiles.wordpress.org/codepeople', 'requires' => '3.0.5', @@ -1300,17 +1300,17 @@ 2 => 2, 3 => 4, 4 => 27, - 5 => 686, + 5 => 687, ), - 'num_ratings' => 739, - 'support_threads' => 105, + 'num_ratings' => 740, + 'support_threads' => 106, 'support_threads_resolved' => 105, 'active_installs' => 60000, - 'downloaded' => 3654737, - 'last_updated' => '2021-10-19 10:31pm GMT', + 'downloaded' => 3659853, + 'last_updated' => '2021-10-20 11:31am GMT', 'added' => '2013-03-12', 'homepage' => 'https://cff.dwbooster.com', - 'short_description' => 'Calculated Fields Form allows you to create both simple and rich forms, quickly like a professional. It includes a form builder with dynamic calculate …', + 'short_description' => 'Calculated Fields Form allows you to create both simple and rich forms, quickly like a…', 'download_link' => 'https://downloads.wordpress.org/plugin/calculated-fields-form.zip', 'tags' => array ( @@ -1345,13 +1345,13 @@ 2 => 22, 3 => 15, 4 => 60, - 5 => 1570, + 5 => 1572, ), - 'num_ratings' => 1833, - 'support_threads' => 132, + 'num_ratings' => 1835, + 'support_threads' => 133, 'support_threads_resolved' => 126, 'active_installs' => 2000000, - 'downloaded' => 86057385, + 'downloaded' => 86071844, 'last_updated' => '2021-09-22 3:46pm GMT', 'added' => '2007-03-30', 'homepage' => 'https://aioseo.com/', @@ -1391,13 +1391,13 @@ 2 => 7, 3 => 6, 4 => 27, - 5 => 1225, + 5 => 1226, ), - 'num_ratings' => 1305, + 'num_ratings' => 1306, 'support_threads' => 5, 'support_threads_resolved' => 4, 'active_installs' => 40000, - 'downloaded' => 1241302, + 'downloaded' => 1241835, 'last_updated' => '2021-09-24 3:41pm GMT', 'added' => '2015-09-27', 'homepage' => 'http://wordpress.org/plugins/weglot/', @@ -1432,17 +1432,17 @@ 'rating' => 98, 'ratings' => array ( - 1 => 74, + 1 => 75, 2 => 17, 3 => 21, 4 => 53, - 5 => 3561, + 5 => 3563, ), - 'num_ratings' => 3726, - 'support_threads' => 124, - 'support_threads_resolved' => 120, + 'num_ratings' => 3729, + 'support_threads' => 126, + 'support_threads_resolved' => 119, 'active_installs' => 1000000, - 'downloaded' => 21556610, + 'downloaded' => 21567612, 'last_updated' => '2021-10-13 8:38am GMT', 'added' => '2018-11-19', 'homepage' => 'https://s.rankmath.com/home', @@ -1488,7 +1488,7 @@ 'support_threads' => 1, 'support_threads_resolved' => 0, 'active_installs' => 300000, - 'downloaded' => 2808987, + 'downloaded' => 2809693, 'last_updated' => '2021-03-17 1:26pm GMT', 'added' => '2008-04-07', 'homepage' => 'https://www.satollo.net/plugins/header-footer', @@ -1548,7 +1548,7 @@ 'support_threads' => 2, 'support_threads_resolved' => 1, 'active_installs' => 200000, - 'downloaded' => 1524691, + 'downloaded' => 1525226, 'last_updated' => '2021-07-17 8:46am GMT', 'added' => '2011-03-16', 'homepage' => 'https://statify.pluginkollektiv.org/', @@ -1593,7 +1593,7 @@ 'support_threads' => 1, 'support_threads_resolved' => 0, 'active_installs' => 4000, - 'downloaded' => 21085, + 'downloaded' => 21097, 'last_updated' => '2021-07-22 6:55am GMT', 'added' => '2019-10-18', 'homepage' => 'https://lqd.jp/wp/plugin.html', @@ -1634,10 +1634,10 @@ 5 => 163, ), 'num_ratings' => 196, - 'support_threads' => 7, + 'support_threads' => 8, 'support_threads_resolved' => 1, 'active_installs' => 60000, - 'downloaded' => 1109761, + 'downloaded' => 1110498, 'last_updated' => '2021-10-13 3:10pm GMT', 'added' => '2016-05-11', 'homepage' => 'https://schema.press', @@ -1682,11 +1682,11 @@ 'support_threads' => 2, 'support_threads_resolved' => 1, 'active_installs' => 3000, - 'downloaded' => 97554, + 'downloaded' => 97566, 'last_updated' => '2020-05-22 5:21pm GMT', 'added' => '2013-10-03', 'homepage' => 'http://wordpress.org/plugins/iframely/', - 'short_description' => 'Iframely extends WordPress default rich media embeds and adds support of over 2000 more providers and cards as URL previews for the rest of the Web.', + 'short_description' => 'Iframely extends WordPress default rich media embeds and adds support of over 2000 more providers…', 'download_link' => 'https://downloads.wordpress.org/plugin/iframely.zip', 'tags' => array ( @@ -1768,10 +1768,10 @@ 5 => 13, ), 'num_ratings' => 16, - 'support_threads' => 10, + 'support_threads' => 11, 'support_threads_resolved' => 6, 'active_installs' => 40000, - 'downloaded' => 301750, + 'downloaded' => 301949, 'last_updated' => '2021-09-21 7:17pm GMT', 'added' => '2018-07-12', 'homepage' => 'https://github.com/GoogleChromeLabs/pwa-wp', @@ -1814,10 +1814,10 @@ 5 => 1286, ), 'num_ratings' => 1383, - 'support_threads' => 32, - 'support_threads_resolved' => 31, + 'support_threads' => 31, + 'support_threads_resolved' => 30, 'active_installs' => 2000000, - 'downloaded' => 36072428, + 'downloaded' => 36079873, 'last_updated' => '2021-08-04 7:14am GMT', 'added' => '2013-06-19', 'homepage' => 'https://www.mc4wp.com/#utm_source=wp-plugin&utm_medium=mailchimp-for-wp&utm_campaign=plugins-page', @@ -1891,13 +1891,13 @@ ), 'num_ratings' => 1243, 'support_threads' => 71, - 'support_threads_resolved' => 65, + 'support_threads_resolved' => 66, 'active_installs' => 100000, - 'downloaded' => 5345903, + 'downloaded' => 5347793, 'last_updated' => '2021-10-14 10:40am GMT', 'added' => '2014-06-23', 'homepage' => 'https://wpadvancedads.com', - 'short_description' => 'Manage and optimize all ad types. Support for Google AdSense Auto ads, Amazon, image banners, HTML, page builder, ad widget, ad rotations, ads.txt', + 'short_description' => 'Manage and optimize all ad types. Support for Google AdSense Auto ads, Amazon, image banners,…', 'download_link' => 'https://downloads.wordpress.org/plugin/advanced-ads.1.29.1.zip', 'tags' => array ( @@ -1938,7 +1938,7 @@ 'support_threads' => 3, 'support_threads_resolved' => 2, 'active_installs' => 1000, - 'downloaded' => 12485, + 'downloaded' => 12496, 'last_updated' => '2021-09-21 7:11pm GMT', 'added' => '2019-07-30', 'homepage' => 'https://github.com/westonruter/syntax-highlighting-code-block', @@ -1978,13 +1978,13 @@ 2 => 47, 3 => 57, 4 => 226, - 5 => 9825, + 5 => 9831, ), - 'num_ratings' => 10373, - 'support_threads' => 87, + 'num_ratings' => 10379, + 'support_threads' => 91, 'support_threads_resolved' => 74, 'active_installs' => 5000000, - 'downloaded' => 84759844, + 'downloaded' => 84795141, 'last_updated' => '2021-10-07 11:02am GMT', 'added' => '2016-03-14', 'homepage' => 'https://wpforms.com', @@ -2030,7 +2030,7 @@ 'support_threads' => 11, 'support_threads_resolved' => 9, 'active_installs' => 3000000, - 'downloaded' => 101841550, + 'downloaded' => 101860874, 'last_updated' => '2021-09-30 7:56am GMT', 'added' => '2007-09-14', 'homepage' => 'https://www.monsterinsights.com/?utm_source=liteplugin&utm_medium=pluginheader&utm_campaign=pluginurl&utm_content=7%2E0%2E0', @@ -2076,7 +2076,7 @@ 'support_threads' => 1, 'support_threads_resolved' => 0, 'active_installs' => 40000, - 'downloaded' => 999721, + 'downloaded' => 999902, 'last_updated' => '2020-10-28 4:53pm GMT', 'added' => '2018-03-26', 'homepage' => 'https://atomicblocks.com', @@ -2118,10 +2118,10 @@ 5 => 815, ), 'num_ratings' => 923, - 'support_threads' => 12, + 'support_threads' => 13, 'support_threads_resolved' => 8, 'active_installs' => 5000000, - 'downloaded' => 221318879, + 'downloaded' => 221385630, 'last_updated' => '2021-10-01 6:28pm GMT', 'added' => '2005-10-20', 'homepage' => 'https://akismet.com/', @@ -2211,11 +2211,11 @@ 'support_threads' => 1, 'support_threads_resolved' => 0, 'active_installs' => 100000, - 'downloaded' => 5077821, + 'downloaded' => 5078017, 'last_updated' => '2019-07-10 5:19pm GMT', 'added' => '2008-12-23', 'homepage' => 'https://wordpress.org/plugins/addthis/', - 'short_description' => 'Now compatible with the AMP Plugin! Free Share Buttons from AddThis. Share to Messenger, WhatsApp, Facebook, Twitter, Pinterest and many more.', + 'short_description' => 'Now compatible with the AMP Plugin! Free Share Buttons from AddThis. Share to Messenger, WhatsApp,…', 'download_link' => 'https://downloads.wordpress.org/plugin/addthis.6.2.6.zip', 'tags' => array ( @@ -2237,7 +2237,7 @@ array ( 'name' => 'BigCommerce For WordPress', 'slug' => 'bigcommerce', - 'version' => '4.18.0', + 'version' => '4.19.0', 'author' => 'BigCommerce', 'author_profile' => 'https://profiles.wordpress.org/bigcommerce', 'requires' => '5.2', @@ -2254,14 +2254,14 @@ ), 'num_ratings' => 39, 'support_threads' => 8, - 'support_threads_resolved' => 0, + 'support_threads_resolved' => 1, 'active_installs' => 1000, - 'downloaded' => 60763, - 'last_updated' => '2021-10-07 1:18am GMT', + 'downloaded' => 61140, + 'last_updated' => '2021-10-20 1:43pm GMT', 'added' => '2018-11-16', 'homepage' => '', 'short_description' => 'Scale your ecommerce business with WordPress on the front-end and BigCommerce on the back end. Free up server resources from things like catalog manag …', - 'download_link' => 'https://downloads.wordpress.org/plugin/bigcommerce.4.18.0.zip', + 'download_link' => 'https://downloads.wordpress.org/plugin/bigcommerce.4.19.0.zip', 'tags' => array ( 'ecommerce' => 'ecommerce', @@ -2295,13 +2295,13 @@ 2 => 125, 3 => 175, 4 => 619, - 5 => 25761, + 5 => 25763, ), - 'num_ratings' => 27402, - 'support_threads' => 494, - 'support_threads_resolved' => 442, + 'num_ratings' => 27404, + 'support_threads' => 497, + 'support_threads_resolved' => 439, 'active_installs' => 5000000, - 'downloaded' => 367035742, + 'downloaded' => 367252970, 'last_updated' => '2021-10-19 6:48am GMT', 'added' => '2010-10-11', 'homepage' => 'https://yoa.st/1uj', @@ -2328,7 +2328,7 @@ array ( 'name' => 'Gutenberg', 'slug' => 'gutenberg', - 'version' => '11.7.0', + 'version' => '11.7.1', 'author' => 'Gutenberg Team', 'author_profile' => 'https://profiles.wordpress.org/matveb', 'requires' => '5.7', @@ -2337,22 +2337,22 @@ 'rating' => 42, 'ratings' => array ( - 1 => 2282, + 1 => 2281, 2 => 202, 3 => 128, - 4 => 134, + 4 => 135, 5 => 710, ), 'num_ratings' => 3456, - 'support_threads' => 60, - 'support_threads_resolved' => 26, + 'support_threads' => 61, + 'support_threads_resolved' => 33, 'active_installs' => 300000, - 'downloaded' => 25104297, - 'last_updated' => '2021-10-13 3:50pm GMT', + 'downloaded' => 25167399, + 'last_updated' => '2021-10-20 10:13pm GMT', 'added' => '2017-06-16', 'homepage' => 'https://github.com/WordPress/gutenberg', 'short_description' => 'The Gutenberg plugin provides editing, customization, and site building features to WordPress. This beta plugin allows you to test bleeding-edge featu …', - 'download_link' => 'https://downloads.wordpress.org/plugin/gutenberg.11.7.0.zip', + 'download_link' => 'https://downloads.wordpress.org/plugin/gutenberg.v11.7.1.zip', 'tags' => array ( ), diff --git a/includes/ecosystem-data/themes.php b/includes/ecosystem-data/themes.php index 1129e0a449a..dd5f2f49adf 100644 --- a/includes/ecosystem-data/themes.php +++ b/includes/ecosystem-data/themes.php @@ -12,157 +12,267 @@ return array ( 0 => array ( - 'name' => 'EXS', + 'name' => 'ExS', 'slug' => 'exs', - 'preview_url' => 'https://wordpress.org/themes/exs/', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2021/09/exs.jpg', + 'version' => '1.7.6', + 'preview_url' => 'https://wp-themes.com/exs/', + 'author' => + array ( + 'user_nicename' => 'exstheme', + 'profile' => 'https://profiles.wordpress.org/exstheme', + 'avatar' => 'https://secure.gravatar.com/avatar/1823b8571e6996048b616b6602b21358?s=96&d=monsterid&r=g', + 'display_name' => 'exstheme', + 'author' => 'the ExS team', + 'author_url' => 'https://exsthemewp.com/about/', + ), + 'screenshot_url' => '//ts.w.org/wp-content/themes/exs/screenshot.png?ver=1.7.6', + 'rating' => 100, + 'num_ratings' => 5, 'homepage' => 'https://wordpress.org/themes/exs/', - 'description' => ' - - -

ExS is a superfast WordPress theme with unlimited customise options, header, footer blog and post layouts.

-', - 'wporg' => false, + 'description' => 'ExS theme is a fastest and smallest multipurpose Gutenberg compatible highly customizable theme without 3rd party dependencies. It is designed to have 100% Google Page and LightHouse speed. It has an extra small size of CSS (70kB) and JS (3kB) assets, 100% SEO optimised and valid code and it is 100% mobile friendly. It also has a WooCommerce and Easy Digital Downloads (EDD) plugin support so it will be perfect solution for your online store and e-commerce business. bbPress extended support makes ExS theme perfect for your forum. BuddyPress and Ultimate member support will help to create your social network with ExS theme. WP Job manager and Simple Job Board support will help you to create your job board. The Events Calendar advanced support will help you to create your events site. LearnPress plugin advanced support will help you to create a online courses and online school site. It has unlimited color options, headers and footers layouts, 15+ blog layouts, separate layouts for each category and many more super useful features that you can set up directly in your Customizer with live preview. ExS theme has builtin multiple page templates to perfectly work with any page builder such as Elementor, Beaver Builder, WPBackery, Brizy etc. ExS uses WordPress starter content feature so you can setup your pages immediately after WordPress and theme installation by simply going to Customizer and publish your changes. Theme Demo: https://exsthemewp.com/demo/.', + 'requires' => '5.5', + 'requires_php' => '5.6', + 'wporg' => true, ), 1 => array ( 'name' => 'Sydney', 'slug' => 'sydney', - 'preview_url' => 'https://wordpress.org/themes/sydney/', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2021/08/sydney.jpg', + 'version' => '1.83', + 'preview_url' => 'https://wp-themes.com/sydney/', + 'author' => + array ( + 'user_nicename' => 'athemes', + 'profile' => 'https://profiles.wordpress.org/athemes', + 'avatar' => 'https://secure.gravatar.com/avatar/0fe6c4dee6e201e81783d8a0ee12d83b?s=96&d=monsterid&r=g', + 'display_name' => 'athemes', + 'author' => 'aThemes', + 'author_url' => 'https://athemes.com', + ), + 'screenshot_url' => '//ts.w.org/wp-content/themes/sydney/screenshot.png?ver=1.83', + 'rating' => 98, + 'num_ratings' => 511, 'homepage' => 'https://wordpress.org/themes/sydney/', - 'description' => ' - - -

Sydney is a powerful business theme that provides a fast way for companies or freelancers to create an awesome online presence.

-', - 'wporg' => false, + 'description' => 'Sydney is a powerful business theme that provides a fast way for companies or freelancers to create an awesome online presence. As well as being fully compatible with Elementor, Sydney brings plenty of customization possibilities like access to all Google Fonts, full color control, layout control, logo upload, full screen slider, header image, sticky navigation and much more. Also, Sydney provides all the construction blocks you need to rapidly create an engaging front page. Looking for a quick start with Sydney? With just a few clicks, you can import one of our existing demos (https://athemes.com/sydney-demos/)', + 'requires' => false, + 'requires_php' => '5.6', + 'wporg' => true, ), 2 => array ( 'name' => 'Really Simple', 'slug' => 'really-simple', - 'preview_url' => 'https://wordpress.org/themes/really-simple/', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2021/08/reallysimple.jpg', + 'version' => '1.0.7', + 'preview_url' => 'https://wp-themes.com/really-simple/', + 'author' => + array ( + 'user_nicename' => 'flauberthenriques', + 'profile' => 'https://profiles.wordpress.org/flauberthenriques', + 'avatar' => 'https://secure.gravatar.com/avatar/d524eb0811fa44be90481509b000c779?s=96&d=monsterid&r=g', + 'display_name' => 'Flaubert Henriques', + 'author' => 'Flaubert Henriques', + 'author_url' => 'https://profiles.wordpress.org/flauberthenriques/', + ), + 'screenshot_url' => '//ts.w.org/wp-content/themes/really-simple/screenshot.png?ver=1.0.7', + 'rating' => 0, + 'num_ratings' => 0, 'homepage' => 'https://wordpress.org/themes/really-simple/', - 'description' => ' - - -

Really Simple is a theme for bloggers and writers who need a ultra light and fast theme.

-', - 'wporg' => false, + 'description' => 'Really Simple is a theme for bloggers and writers who need a ultra light and fast theme. The theme focuses on simplicity and loading speed. Yes, Really Simple Theme is also fully AMP compatible. Check the readme.txt file and leave the sidebar perfect after WordPress 5.8 update.', + 'requires' => '5.3', + 'requires_php' => '7.0', + 'wporg' => true, ), 3 => array ( 'name' => 'Artpop', 'slug' => 'artpop', - 'preview_url' => 'https://wordpress.org/themes/artpop/', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2021/06/artpop.jpg', + 'version' => '1.0.8', + 'preview_url' => 'https://wp-themes.com/artpop/', + 'author' => + array ( + 'user_nicename' => 'designlabthemes', + 'profile' => 'https://profiles.wordpress.org/designlabthemes', + 'avatar' => 'https://secure.gravatar.com/avatar/956873f77232371cb89d8a0d7a516354?s=96&d=monsterid&r=g', + 'display_name' => 'designlabthemes', + 'author' => 'Design Lab', + 'author_url' => 'https://www.designlabthemes.com/', + ), + 'screenshot_url' => '//ts.w.org/wp-content/themes/artpop/screenshot.png?ver=1.0.8', + 'rating' => 100, + 'num_ratings' => 1, 'homepage' => 'https://wordpress.org/themes/artpop/', - 'description' => ' - - -

Artpop is a beautiful Gutenberg-first WordPress theme, carefully designed to help you build your online brand. Unleash your creativity, Artpop takes care of the rest!

-', - 'wporg' => false, + 'description' => 'Artpop is a beautiful Gutenberg-first WordPress theme, carefully designed to help you build your online brand. Unleash your creativity, Artpop takes care of the rest! Well documented and easy to use even for WordPress beginners, Artpop is perfect for a blog, personal portfolio, small business website, and WooCommerce storefront. Easily set your logo, change colors, and create awesome layouts to give your website a truly unique look.', + 'requires' => '4.7', + 'requires_php' => '5.6', + 'wporg' => true, ), 4 => array ( 'name' => 'Michelle', 'slug' => 'michelle', - 'preview_url' => 'https://wordpress.org/themes/michelle/', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2021/06/michelle.jpg', + 'version' => '1.2.0', + 'preview_url' => 'https://wp-themes.com/michelle/', + 'author' => + array ( + 'user_nicename' => 'webmandesign', + 'profile' => 'https://profiles.wordpress.org/webmandesign', + 'avatar' => 'https://secure.gravatar.com/avatar/f4a334f9f5af61b2bd22fcaadb04dd06?s=96&d=monsterid&r=g', + 'display_name' => 'WebMan Design | Oliver Juhas', + 'author' => 'WebMan Design', + 'author_url' => 'https://www.webmandesign.eu/', + ), + 'screenshot_url' => '//ts.w.org/wp-content/themes/michelle/screenshot.png?ver=1.2.0', + 'rating' => 100, + 'num_ratings' => 3, 'homepage' => 'https://wordpress.org/themes/michelle/', - 'description' => ' - - -

Michelle is free block editor compatible accessibility ready WordPress theme ideal for any fast and inclusive website.

-', - 'wporg' => false, + 'description' => 'Michelle is accessibility ready WordPress theme for creating inclusive websites easily and with fun using block editor. Useful block patterns, block styles, templates and featured posts functionality allow you to build an eyecatching website in no time. Customize site footer and error 404 page content with block editor! The theme also works with Beaver Builder, Elementor, or any other page builder. It also supports theme builders! Michelle elevates your business, eCommerce, portfolio, or blog website. Check out the demo at https://themedemos.webmandesign.eu/michelle/ and documentation at https://webmandesign.github.io/docs/michelle/', + 'requires' => '5.5', + 'requires_php' => '7.0', + 'wporg' => true, ), 5 => array ( 'name' => 'Miniva', 'slug' => 'miniva', - 'preview_url' => 'https://wordpress.org/themes/miniva/', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2021/05/miniva.jpg', + 'version' => '1.6.3', + 'preview_url' => 'https://wp-themes.com/miniva/', + 'author' => + array ( + 'user_nicename' => 'tajam', + 'profile' => 'https://profiles.wordpress.org/tajam', + 'avatar' => 'https://secure.gravatar.com/avatar/378d4e715829ccf6f1fbe6dfef6eb539?s=96&d=monsterid&r=g', + 'display_name' => 'Tajam', + 'author' => 'Tajam', + 'author_url' => 'https://tajam.id/', + ), + 'screenshot_url' => '//ts.w.org/wp-content/themes/miniva/screenshot.png?ver=1.6.3', + 'rating' => 100, + 'num_ratings' => 6, 'homepage' => 'https://wordpress.org/themes/miniva/', - 'description' => ' - - -

A fast, lightweight, and mobile-friendly WordPress theme for bloggers. Miniva is built with simplicity, accessibility and performance in mind.

-', - 'wporg' => false, + 'description' => 'A fast, lightweight, and mobile-friendly WordPress theme for bloggers. Miniva is built with simplicity, accessibility and performance in mind. The clean and minimal design helps readers focus on your content. It supports AMP and several Jetpack modules including featured content, infinite scroll, content options and social menu. See the theme demo at https://tajam.id/miniva-demo/', + 'requires' => '4.5', + 'requires_php' => '5.3', + 'wporg' => true, ), 6 => array ( 'name' => 'Iknow', - 'slug' => 'iknow-2', - 'preview_url' => 'https://wordpress.org/themes/iknow/', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2021/04/iknow.jpg', + 'slug' => 'iknow', + 'version' => '1.2.6', + 'preview_url' => 'https://wp-themes.com/iknow/', + 'author' => + array ( + 'user_nicename' => 'wpcalc', + 'profile' => 'https://profiles.wordpress.org/wpcalc', + 'avatar' => 'https://secure.gravatar.com/avatar/64ca4933fab3d5e50383f0b514acd5f6?s=96&d=monsterid&r=g', + 'display_name' => 'Wow-Company', + 'author' => 'Wow-Company', + 'author_url' => 'https://wow-company.com', + ), + 'screenshot_url' => '//ts.w.org/wp-content/themes/iknow/screenshot.png?ver=1.2.6', + 'rating' => 98, + 'num_ratings' => 9, 'homepage' => 'https://wordpress.org/themes/iknow/', - 'description' => ' - - -

Iknow WordPress Theme has a minimalistic, responsive and mobile-friendly design

-', - 'wporg' => false, + 'description' => 'Iknow WordPress Theme has a minimalistic, responsive and mobile-friendly design. Easy and fast theme. The theme is perfect for creating Knowledge Base, Helpdesk, Wiki and FAQ websites. Ability to set custom icons for each category and tag. Manage the display of categories on the main page of the site. The integrated post rating system VoteUp/VoteDown. Breadcrumbs for easy site navigation. Custom widget to display the current navigation in a category and in a separate post. You can view the appearance and features of the theme on the site https://wow-company.com/wp-theme-iknow/. Documentation https://wow-company.com/faq/category/wow-themes/iknow/', + 'requires' => false, + 'requires_php' => '5.6', + 'wporg' => true, ), 7 => array ( 'name' => 'Kadence', 'slug' => 'kadence', - 'preview_url' => 'https://wordpress.org/themes/kadence/', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2021/01/kadence.jpg', + 'version' => '1.1.7', + 'preview_url' => 'https://wp-themes.com/kadence/', + 'author' => + array ( + 'user_nicename' => 'britner', + 'profile' => 'https://profiles.wordpress.org/britner', + 'avatar' => 'https://secure.gravatar.com/avatar/3276133b8df529e6e1e58586ab1a309e?s=96&d=monsterid&r=g', + 'display_name' => 'Ben Ritner - Kadence WP', + 'author' => 'Kadence WP', + 'author_url' => 'https://www.kadencewp.com/', + ), + 'screenshot_url' => '//ts.w.org/wp-content/themes/kadence/screenshot.png?ver=1.1.7', + 'rating' => 98, + 'num_ratings' => 142, 'homepage' => 'https://wordpress.org/themes/kadence/', - 'description' => ' - - -

A lightweight yet full featured WordPress theme for creating beautiful fast loading and accessible websites, easier than ever.

-', - 'wporg' => false, + 'description' => 'Kadence Theme is a lightweight yet full featured WordPress theme for creating beautiful fast loading and accessible websites, easier than ever. It features an easy to use drag and drop header and footer builder to build any type of header in minutes. It features a full library of gorgeous starter templates that are easy to modify with our intelligent global font and color controls. With extensive integration with the most popular 3rd party plugins, you can quickly build impressive ecommerce websites, course websites, business websites, and more.', + 'requires' => '5.0', + 'requires_php' => '7.0', + 'wporg' => true, ), 8 => array ( 'name' => 'Izo', 'slug' => 'izo', - 'preview_url' => 'https://wordpress.org/themes/izo/', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2021/01/izo.jpg', + 'version' => '1.0.12', + 'preview_url' => 'https://wp-themes.com/izo/', + 'author' => + array ( + 'user_nicename' => 'elfwp', + 'profile' => 'https://profiles.wordpress.org/elfwp', + 'avatar' => 'https://secure.gravatar.com/avatar/1cfedf4555fea4d8fbba2947635586ea?s=96&d=monsterid&r=g', + 'display_name' => 'elfwp', + 'author' => 'elfWP', + 'author_url' => 'https://elfwp.com', + ), + 'screenshot_url' => '//ts.w.org/wp-content/themes/izo/screenshot.png?ver=1.0.12', + 'rating' => 90, + 'num_ratings' => 2, 'homepage' => 'https://wordpress.org/themes/izo/', - 'description' => ' - - -

Izo a fast, lightweight, native AMP and fully customizable multipurpose WordPress theme.

-', - 'wporg' => false, + 'description' => 'Izo a fast, lightweight, native AMP and fully customizable multipurpose WordPress theme. Features include compatibility with many popular plugins like Elementor and other page builders, WooCommerce, WPML, LifterLMS and more. There is also full support for the new WordPress block editor. Izo is fully responsive and our users can take advantage of the many customizer options to easily change styles. Also, if you\'re looking for a quick start, we\'re offering a bunch of free starter sites, ready to easily import.', + 'requires' => false, + 'requires_php' => '5.6', + 'wporg' => true, ), 9 => array ( 'name' => 'OceanWP', 'slug' => 'oceanwp', - 'preview_url' => 'https://wordpress.org/themes/oceanwp/', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2021/01/oceanwp.jpg', + 'version' => '3.0.7', + 'preview_url' => 'https://wp-themes.com/oceanwp/', + 'author' => + array ( + 'user_nicename' => 'oceanwp', + 'profile' => 'https://profiles.wordpress.org/oceanwp', + 'avatar' => 'https://secure.gravatar.com/avatar/05f8d3fe2ccb6479bac14e4d40b406dd?s=96&d=monsterid&r=g', + 'display_name' => 'oceanwp', + 'author' => 'Nick', + 'author_url' => 'https://oceanwp.org/about-me/', + ), + 'screenshot_url' => '//ts.w.org/wp-content/themes/oceanwp/screenshot.png?ver=3.0.7', + 'rating' => 98, + 'num_ratings' => 4976, 'homepage' => 'https://wordpress.org/themes/oceanwp/', - 'description' => ' - - -

The favorite choice of thousands of developers and hobby-users.

-', - 'wporg' => false, + 'description' => 'OceanWP is the perfect theme for your project. Lightweight and highly extendable, it will enable you to create almost any type of website such a blog, portfolio, business website and WooCommerce storefront with a beautiful & professional design. Very fast, responsive, RTL & translation ready, best SEO practices, unique WooCommerce features to increase conversion and much more. You can even edit the settings on tablet & mobile so your site looks good on every device. Work with the most popular page builders as Elementor, Beaver Builder, Brizy, Visual Composer, Divi, SiteOrigin, etc... Developers will love his extensible codebase making it a joy to customize and extend. Best friend of Elementor & WooCommerce. Looking for a Multi-Purpose theme? Look no further! Check the demos to realize that it\'s the only theme you will ever need: https://oceanwp.org/demos/', + 'requires' => '5.3', + 'requires_php' => '7.2', + 'wporg' => true, ), 10 => array ( - 'name' => 'Twenty Twenty One', - 'slug' => 'twenty-twenty-one', - 'preview_url' => 'https://wordpress.org/themes/twentytwentyone/', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/12/twentytwentyone.jpg', + 'name' => 'Twenty Twenty-One', + 'slug' => 'twentytwentyone', + 'version' => '1.4', + 'preview_url' => 'https://wp-themes.com/twentytwentyone/', + 'author' => + array ( + 'user_nicename' => 'wordpressdotorg', + 'profile' => 'https://profiles.wordpress.org/wordpressdotorg', + 'avatar' => 'https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g', + 'display_name' => 'WordPress.org', + 'author' => 'the WordPress team', + 'author_url' => 'https://wordpress.org/', + ), + 'screenshot_url' => '//ts.w.org/wp-content/themes/twentytwentyone/screenshot.png?ver=1.4', + 'rating' => 82, + 'num_ratings' => 35, 'homepage' => 'https://wordpress.org/themes/twentytwentyone/', - 'description' => ' - - -

Twenty Twenty-One is a blank canvas for your ideas and it makes the block editor your best brush. With new block patterns, which allow you to create a beautiful layout in a matter of seconds, this theme’s soft colors and eye-catching — yet timeless — design will let your work shine

-', - 'wporg' => false, + 'description' => 'Twenty Twenty-One is a blank canvas for your ideas and it makes the block editor your best brush. With new block patterns, which allow you to create a beautiful layout in a matter of seconds, this theme’s soft colors and eye-catching — yet timeless — design will let your work shine. Take it for a spin! See how Twenty Twenty-One elevates your portfolio, business website, or personal blog.', + 'requires' => '5.3', + 'requires_php' => '5.6', + 'wporg' => true, ), 11 => array ( @@ -181,226 +291,386 @@ 12 => array ( 'name' => 'Tortuga', - 'slug' => 'tortuga-2', - 'preview_url' => 'https://wordpress.org/themes/tortuga/', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/09/tortuga.jpg', + 'slug' => 'tortuga', + 'version' => '2.3.4', + 'preview_url' => 'https://wp-themes.com/tortuga/', + 'author' => + array ( + 'user_nicename' => 'themezee', + 'profile' => 'https://profiles.wordpress.org/themezee', + 'avatar' => 'https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g', + 'display_name' => 'ThemeZee', + 'author' => 'ThemeZee', + 'author_url' => 'https://themezee.com', + ), + 'screenshot_url' => '//ts.w.org/wp-content/themes/tortuga/screenshot.jpg?ver=2.3.4', + 'rating' => 96, + 'num_ratings' => 19, 'homepage' => 'https://wordpress.org/themes/tortuga/', - 'description' => ' - - -

Tortuga is a highly flexible and adventurous WordPress theme for your pirate magazine or any news related website. Other highlights of Tortuga are the beautiful post slider and header widgets area. Arrr!

-', - 'wporg' => false, + 'description' => 'Tortuga is a highly flexible and adventurous WordPress theme for your pirate magazine or any news related website. It supports three different post layouts, two sidebar schemes and a Magazine Homepage template based on widgets. Other highlights of Tortuga are the beautiful post slider and header widgets area. Arrr!', + 'requires' => '5.2', + 'requires_php' => '5.6', + 'wporg' => true, ), 13 => array ( 'name' => 'Treville', - 'slug' => 'treville-2', - 'preview_url' => 'https://wordpress.org/themes/treville/', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/09/treville.jpg', + 'slug' => 'treville', + 'version' => '2.1.4', + 'preview_url' => 'https://wp-themes.com/treville/', + 'author' => + array ( + 'user_nicename' => 'themezee', + 'profile' => 'https://profiles.wordpress.org/themezee', + 'avatar' => 'https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g', + 'display_name' => 'ThemeZee', + 'author' => 'ThemeZee', + 'author_url' => 'https://themezee.com', + ), + 'screenshot_url' => '//ts.w.org/wp-content/themes/treville/screenshot.jpg?ver=2.1.4', + 'rating' => 0, + 'num_ratings' => 0, 'homepage' => 'https://wordpress.org/themes/treville/', - 'description' => ' - - -

An elegant Blogging & Magazine WordPress Theme with subtle colors and great typography. Treville supports two navigation menus, advanced post settings and a post slider with fullscreen images!

-', - 'wporg' => false, + 'description' => 'An elegant Blogging & Magazine WordPress Theme with subtle colors and great typography. Treville supports two navigation menus, advanced post settings and a post slider with fullscreen images!', + 'requires' => '5.2', + 'requires_php' => '5.6', + 'wporg' => true, ), 14 => array ( 'name' => 'Wellington', - 'slug' => 'wellington-2', - 'preview_url' => 'https://wordpress.org/themes/wellington/', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/09/wellington.jpg', + 'slug' => 'wellington', + 'version' => '2.1.4', + 'preview_url' => 'https://wp-themes.com/wellington/', + 'author' => + array ( + 'user_nicename' => 'themezee', + 'profile' => 'https://profiles.wordpress.org/themezee', + 'avatar' => 'https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g', + 'display_name' => 'ThemeZee', + 'author' => 'ThemeZee', + 'author_url' => 'https://themezee.com', + ), + 'screenshot_url' => '//ts.w.org/wp-content/themes/wellington/screenshot.jpg?ver=2.1.4', + 'rating' => 100, + 'num_ratings' => 12, 'homepage' => 'https://wordpress.org/themes/wellington/', - 'description' => ' - - -

Wellington is a clean and simple Magazine WordPress theme with beautiful typography and subtle colors. The theme includes two different post layouts, a featured post slider and thoughtful theme settings in the Customizer.

-', - 'wporg' => false, + 'description' => 'Wellington is a clean and simple Magazine WordPress theme with beautiful typography and subtle colors. The theme includes two different post layouts, a featured post slider and thoughtful theme settings in the Customizer.', + 'requires' => '5.2', + 'requires_php' => '5.6', + 'wporg' => true, ), 15 => array ( 'name' => 'Poseidon', - 'slug' => 'poseidon-2', - 'preview_url' => 'https://wordpress.org/themes/poseidon/', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/09/poseidon.jpg', + 'slug' => 'poseidon', + 'version' => '2.3.4', + 'preview_url' => 'https://wp-themes.com/poseidon/', + 'author' => + array ( + 'user_nicename' => 'themezee', + 'profile' => 'https://profiles.wordpress.org/themezee', + 'avatar' => 'https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g', + 'display_name' => 'ThemeZee', + 'author' => 'ThemeZee', + 'author_url' => 'https://themezee.com', + ), + 'screenshot_url' => '//ts.w.org/wp-content/themes/poseidon/screenshot.jpg?ver=2.3.4', + 'rating' => 96, + 'num_ratings' => 16, 'homepage' => 'https://wordpress.org/themes/poseidon/', - 'description' => ' - - -

Poseidon is an elegant designed WordPress theme featuring a splendid fullscreen image slideshow. The clean typography and spacious white layout makes it great to share your stories.

-', - 'wporg' => false, + 'description' => 'Poseidon is an elegant designed WordPress theme featuring a splendid fullscreen image slideshow. The clean typography and spacious white layout makes it great to share your stories. You can use the theme as simple blog or easily create a news website with the widget-based Magazine Homepage template.', + 'requires' => '5.2', + 'requires_php' => '5.6', + 'wporg' => true, ), 16 => array ( 'name' => 'Napoli', - 'slug' => 'napoli-2', - 'preview_url' => 'https://wordpress.org/themes/napoli/', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/09/napoli.jpg', + 'slug' => 'napoli', + 'version' => '2.2.4', + 'preview_url' => 'https://wp-themes.com/napoli/', + 'author' => + array ( + 'user_nicename' => 'themezee', + 'profile' => 'https://profiles.wordpress.org/themezee', + 'avatar' => 'https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g', + 'display_name' => 'ThemeZee', + 'author' => 'ThemeZee', + 'author_url' => 'https://themezee.com', + ), + 'screenshot_url' => '//ts.w.org/wp-content/themes/napoli/screenshot.jpg?ver=2.2.4', + 'rating' => 100, + 'num_ratings' => 4, 'homepage' => 'https://wordpress.org/themes/napoli/', - 'description' => ' - - -

Napoli is a beautiful WordPress theme featuring a great featured post slider, smooth typography and a grid-layout for posts. Bon appetit!

-', - 'wporg' => false, + 'description' => 'Napoli is a beautiful WordPress theme perfectly suited for a food magazine. It features a great featured post slider, smooth typography and a grid-layout for posts. Bon appetit!', + 'requires' => '5.2', + 'requires_php' => '5.6', + 'wporg' => true, ), 17 => array ( 'name' => 'Mercia', - 'slug' => 'mercia-2', - 'preview_url' => 'https://wordpress.org/themes/mercia/', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/09/mercia1.jpg', + 'slug' => 'mercia', + 'version' => '1.9.7', + 'preview_url' => 'https://wp-themes.com/mercia/', + 'author' => + array ( + 'user_nicename' => 'themezee', + 'profile' => 'https://profiles.wordpress.org/themezee', + 'avatar' => 'https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g', + 'display_name' => 'ThemeZee', + 'author' => 'ThemeZee', + 'author_url' => 'https://themezee.com', + ), + 'screenshot_url' => '//ts.w.org/wp-content/themes/mercia/screenshot.jpg?ver=1.9.7', + 'rating' => 100, + 'num_ratings' => 1, 'homepage' => 'https://wordpress.org/themes/mercia/', - 'description' => ' - - -

Mercia is a flexible and versatile theme perfect for lifestyle, travel, or fashion magazines, with multiple blog layouts and powerful Magazine widgets.

-', - 'wporg' => false, + 'description' => 'Mercia is a flexible and versatile theme perfect for lifestyle, travel, or fashion magazines. It features a modern and minimalist design with great typropaphy. Of course it works on all screen sizes. With multiple blog layouts and powerful Magazine widgets, you can easily create a stunning and dynamic news website in just a few minutes.', + 'requires' => '5.2', + 'requires_php' => '5.6', + 'wporg' => true, ), 18 => array ( 'name' => 'Maxwell', - 'slug' => 'maxwell-2', - 'preview_url' => 'https://wordpress.org/themes/maxwell/', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/09/maxwell1-1.jpg', + 'slug' => 'maxwell', + 'version' => '2.3.4', + 'preview_url' => 'https://wp-themes.com/maxwell/', + 'author' => + array ( + 'user_nicename' => 'themezee', + 'profile' => 'https://profiles.wordpress.org/themezee', + 'avatar' => 'https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g', + 'display_name' => 'ThemeZee', + 'author' => 'ThemeZee', + 'author_url' => 'https://themezee.com', + ), + 'screenshot_url' => '//ts.w.org/wp-content/themes/maxwell/screenshot.jpg?ver=2.3.4', + 'rating' => 100, + 'num_ratings' => 7, 'homepage' => 'https://wordpress.org/themes/maxwell/', - 'description' => ' - - -

Maxwell is a minimalistic and elegant WordPress theme featuring an ultra clean magazine layout.

-', - 'wporg' => false, + 'description' => 'Maxwell is a minimalistic and elegant WordPress theme featuring an ultra clean magazine layout. With a beautiful typography, various post layouts and a gorgeous featured posts slideshow Maxwell truly helps you to stand out.', + 'requires' => '5.2', + 'requires_php' => '5.6', + 'wporg' => true, ), 19 => array ( 'name' => 'Harrison', - 'slug' => 'harrison-2', - 'preview_url' => 'https://wordpress.org/themes/harrison/', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/09/harrison1.jpg', + 'slug' => 'harrison', + 'version' => '1.3.4', + 'preview_url' => 'https://wp-themes.com/harrison/', + 'author' => + array ( + 'user_nicename' => 'themezee', + 'profile' => 'https://profiles.wordpress.org/themezee', + 'avatar' => 'https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g', + 'display_name' => 'ThemeZee', + 'author' => 'ThemeZee', + 'author_url' => 'https://themezee.com/', + ), + 'screenshot_url' => '//ts.w.org/wp-content/themes/harrison/screenshot.jpg?ver=1.3.4', + 'rating' => 80, + 'num_ratings' => 1, 'homepage' => 'https://wordpress.org/themes/harrison/', - 'description' => ' - - -

Harrison is a highly versatile WordPress Theme and was specially designed for use with the new WordPress Block Editor

-', - 'wporg' => false, + 'description' => 'Harrison is a highly versatile WordPress Theme and was specially designed for use with the new WordPress Block Editor. The theme supports the latest Gutenberg features and provides different blog layouts and extensive post settings. The clean and elegant design is perfect to create all kinds of websites. You should really try it!', + 'requires' => '5.2', + 'requires_php' => '5.6', + 'wporg' => true, ), 20 => array ( 'name' => 'Gridbox', - 'slug' => 'gridbox-2', - 'preview_url' => 'https://wordpress.org/themes/gridbox/', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/09/gridbox.jpg', + 'slug' => 'gridbox', + 'version' => '2.3.4', + 'preview_url' => 'https://wp-themes.com/gridbox/', + 'author' => + array ( + 'user_nicename' => 'themezee', + 'profile' => 'https://profiles.wordpress.org/themezee', + 'avatar' => 'https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g', + 'display_name' => 'ThemeZee', + 'author' => 'ThemeZee', + 'author_url' => 'https://themezee.com', + ), + 'screenshot_url' => '//ts.w.org/wp-content/themes/gridbox/screenshot.jpg?ver=2.3.4', + 'rating' => 74, + 'num_ratings' => 6, 'homepage' => 'https://wordpress.org/themes/gridbox/', - 'description' => ' - - -

Gridbox is a clean and solid WordPress theme featuring a three-column grid-layout for posts. 

-', - 'wporg' => false, + 'description' => 'Gridbox is a clean and solid WordPress theme featuring a three-column grid-layout for posts. The theme works out of the box and does not require any complicated setup. It is perfectly suited for a simple magazine, blog or portfolio website.', + 'requires' => '5.2', + 'requires_php' => '5.6', + 'wporg' => true, ), 21 => array ( 'name' => 'Chronus', - 'slug' => 'chronus-2', - 'preview_url' => 'https://wordpress.org/themes/chronus/', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/09/chronus.jpg', + 'slug' => 'chronus', + 'version' => '2.0.5', + 'preview_url' => 'https://wp-themes.com/chronus/', + 'author' => + array ( + 'user_nicename' => 'themezee', + 'profile' => 'https://profiles.wordpress.org/themezee', + 'avatar' => 'https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g', + 'display_name' => 'ThemeZee', + 'author' => 'ThemeZee', + 'author_url' => 'https://themezee.com', + ), + 'screenshot_url' => '//ts.w.org/wp-content/themes/chronus/screenshot.jpg?ver=2.0.5', + 'rating' => 80, + 'num_ratings' => 5, 'homepage' => 'https://wordpress.org/themes/chronus/', - 'description' => ' - - -

A fast and lightweight WordPress Theme created for magazines, news websites and personal blogs. The minimalistic and responsive design focuses on your content and looks great on any screen size.

-', - 'wporg' => false, + 'description' => 'Chronus is a fast and lightweight WordPress Theme created for magazines, news websites and personal blogs. The Featured Content section and flexible Magazine Widgets give you the ability to highlight your most important posts on the home page. The minimalistic and responsive design focuses on your content and looks great on any screen size.', + 'requires' => '5.2', + 'requires_php' => '5.6', + 'wporg' => true, ), 22 => array ( 'name' => 'Donovan', - 'slug' => 'donovan-2', - 'preview_url' => 'https://wordpress.org/themes/donovan/', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/09/donovan.jpg', + 'slug' => 'donovan', + 'version' => '1.8.4', + 'preview_url' => 'https://wp-themes.com/donovan/', + 'author' => + array ( + 'user_nicename' => 'themezee', + 'profile' => 'https://profiles.wordpress.org/themezee', + 'avatar' => 'https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g', + 'display_name' => 'ThemeZee', + 'author' => 'ThemeZee', + 'author_url' => 'https://themezee.com', + ), + 'screenshot_url' => '//ts.w.org/wp-content/themes/donovan/screenshot.jpg?ver=1.8.4', + 'rating' => 96, + 'num_ratings' => 16, 'homepage' => 'https://wordpress.org/themes/donovan/', - 'description' => ' - - -

Donovan is a flexible, yet easy-to-use blogging theme with a clean and modern design, perfect for your personal blog or for any content-focused website.

-', - 'wporg' => false, + 'description' => 'Donovan is a flexible, yet easy-to-use blogging theme with a clean and modern design. It features an elegant mobile-first design, three different blog layouts and extensive post settings. Donovan is perfect for your personal blog or for any content-focused website.', + 'requires' => '5.2', + 'requires_php' => '5.6', + 'wporg' => true, ), 23 => array ( 'name' => 'Yosemite Lite', 'slug' => 'yosemite-lite', - 'preview_url' => 'https://wordpress.org/themes/yosemite-lite/', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/08/yosemite.jpg', + 'version' => '1.2.1', + 'preview_url' => 'https://wp-themes.com/yosemite-lite/', + 'author' => + array ( + 'user_nicename' => 'gretathemes', + 'profile' => 'https://profiles.wordpress.org/gretathemes', + 'avatar' => 'https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g', + 'display_name' => 'GretaThemes', + 'author' => false, + 'author_url' => 'https://gretathemes.com', + ), + 'screenshot_url' => '//ts.w.org/wp-content/themes/yosemite-lite/screenshot.jpg?ver=1.2.1', + 'rating' => 60, + 'num_ratings' => 2, 'homepage' => 'https://wordpress.org/themes/yosemite-lite/', - 'description' => ' - - -

Suitable for personal blogs Yosemite is lightweight, fast and optimized for all mobile phones. It features a modern and elegant look.

-', - 'wporg' => false, + 'description' => 'Yosemite is a beautiful WordPress blog theme for personal blogs. Yosemite has a modern, clean and elegant look and lots of customization for bloggers. Built on the latest technology of WordPress, Yosemite is lightweight, fast and optimized for all mobile phones.', + 'requires' => false, + 'requires_php' => false, + 'wporg' => true, ), 24 => array ( 'name' => 'Justread', 'slug' => 'justread', - 'preview_url' => 'https://wordpress.org/themes/justread/', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/08/justread.jpg', + 'version' => '1.3.0', + 'preview_url' => 'https://wp-themes.com/justread/', + 'author' => + array ( + 'user_nicename' => 'gretathemes', + 'profile' => 'https://profiles.wordpress.org/gretathemes', + 'avatar' => 'https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g', + 'display_name' => 'GretaThemes', + 'author' => false, + 'author_url' => 'https://gretathemes.com', + ), + 'screenshot_url' => '//ts.w.org/wp-content/themes/justread/screenshot.jpg?ver=1.3.0', + 'rating' => 100, + 'num_ratings' => 5, 'homepage' => 'https://wordpress.org/themes/justread/', - 'description' => ' - - -

Justread is a clean and modern theme that focuses on reading experience. The theme uses system fonts and SVG for fast loading.

-', - 'wporg' => false, + 'description' => 'Justread is a clean and modern WordPress theme that focuses on reading experience. Justread has a grid layout with single column content. The theme uses system fonts and SVG for fast loading. Enjoy reading long content with comfortability.', + 'requires' => false, + 'requires_php' => '5.6', + 'wporg' => true, ), 25 => array ( 'name' => 'Floral Lite', 'slug' => 'floral-lite', - 'preview_url' => 'https://wordpress.org/themes/floral-lite/', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/08/floral.jpg', + 'version' => '1.4', + 'preview_url' => 'https://wp-themes.com/floral-lite/', + 'author' => + array ( + 'user_nicename' => 'gretathemes', + 'profile' => 'https://profiles.wordpress.org/gretathemes', + 'avatar' => 'https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g', + 'display_name' => 'GretaThemes', + 'author' => false, + 'author_url' => 'https://gretathemes.com', + ), + 'screenshot_url' => '//ts.w.org/wp-content/themes/floral-lite/screenshot.jpg?ver=1.4', + 'rating' => 0, + 'num_ratings' => 0, 'homepage' => 'https://wordpress.org/themes/floral-lite/', - 'description' => ' - - -

Floral has a modern, clean and elegant look with lots of customization for bloggers. Built on the latest WordPress technology.

-', - 'wporg' => false, + 'description' => 'Floral is a beautiful WordPress blog theme for personal blogs. Floral has a modern, clean and elegant look and lots of customization for bloggers. Built on the latest technology of WordPress, Floral is lightweight, fast and optimized for all mobile phones.', + 'requires' => '4.5', + 'requires_php' => '5.6', + 'wporg' => true, ), 26 => array ( 'name' => 'EightyDays Lite', 'slug' => 'eightydays-lite', - 'preview_url' => 'https://wordpress.org/themes/eightydays-lite/', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/08/80days.jpg', + 'version' => '2.2.7', + 'preview_url' => 'https://wp-themes.com/eightydays-lite/', + 'author' => + array ( + 'user_nicename' => 'gretathemes', + 'profile' => 'https://profiles.wordpress.org/gretathemes', + 'avatar' => 'https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g', + 'display_name' => 'GretaThemes', + 'author' => false, + 'author_url' => 'http://gretathemes.com', + ), + 'screenshot_url' => '//ts.w.org/wp-content/themes/eightydays-lite/screenshot.png?ver=2.2.7', + 'rating' => 90, + 'num_ratings' => 4, 'homepage' => 'https://wordpress.org/themes/eightydays-lite/', - 'description' => ' - - -

A beautiful theme for travel blogs or magazines EightyDays has a modern, clean and elegant look with lots of customization.

-', - 'wporg' => false, + 'description' => 'EightyDays is a beautiful WordPress travel theme for travel blogs or magazines. EightyDays has a modern, clean and elegant look and lots of customization for bloggers. Built on the latest technology of WordPress, EightyDays is lightweight, fast and optimized for all mobile phones.', + 'requires' => false, + 'requires_php' => false, + 'wporg' => true, ), 27 => array ( 'name' => 'eStar', 'slug' => 'estar', - 'preview_url' => 'https://wordpress.org/themes/estar/', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/08/star.jpg', + 'version' => '1.3.4', + 'preview_url' => 'https://wp-themes.com/estar/', + 'author' => + array ( + 'user_nicename' => 'gretathemes', + 'profile' => 'https://profiles.wordpress.org/gretathemes', + 'avatar' => 'https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g', + 'display_name' => 'GretaThemes', + 'author' => false, + 'author_url' => 'https://gretathemes.com', + ), + 'screenshot_url' => '//ts.w.org/wp-content/themes/estar/screenshot.png?ver=1.3.4', + 'rating' => 100, + 'num_ratings' => 4, 'homepage' => 'https://wordpress.org/themes/estar/', - 'description' => ' - - -

eStar is a super fast, lightweight, responsive and highly customizable theme suitable for blog, personal portfolio and business websites.

-', - 'wporg' => false, + 'description' => 'eStar is a super fast, lightweight (less than 10KB on the front end), responsive and highly customizable WordPress theme suitable for blog, personal portfolio and business websites. It works perfectly with Gutenberg and all WordPress blocks. You can also pair it with any page builder plugin like Elementor, Beaver Builder, Visual Composer, SiteOrigin, Divi, Thrive Architect, Brizy and more. eStar is written from scratch with performance, extensibility, usability and SEO in mind. The theme follows best practices, well-coded and follows the latest web standards (HTML5, SVG, JavaScript). Some of the other features: microdata integration, widget areas, sidebar layouts, custom colors, custom Google fonts, translation ready. Looking for a perfect base theme? Look no further. eStar is fast, fully customizable WordPress theme that you can use for building any kind of website like business agencies, corporate, portfolio, education, university portal, consulting, church, restaurant, medical and so on. Learn more about the theme at https://gretathemes.com/wordpress-themes/estar/', + 'requires' => false, + 'requires_php' => '5.6', + 'wporg' => true, ), 28 => array ( @@ -616,85 +886,180 @@ array ( 'name' => 'Activation', 'slug' => 'activation', - 'preview_url' => 'https://wordpress.org/themes/activation/', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/04/Activation.jpg', + 'version' => '1.2.2', + 'preview_url' => 'https://wp-themes.com/activation/', + 'author' => + array ( + 'user_nicename' => 'godaddy', + 'profile' => 'https://profiles.wordpress.org/godaddy', + 'avatar' => 'https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g', + 'display_name' => 'GoDaddy', + 'author' => false, + 'author_url' => 'https://www.godaddy.com/', + ), + 'screenshot_url' => '//ts.w.org/wp-content/themes/activation/screenshot.png?ver=1.2.2', + 'rating' => 100, + 'num_ratings' => 1, 'homepage' => 'https://wordpress.org/themes/activation/', - 'description' => ' - - -

Activation is a Primer child theme with a colorful, fitness-focused design.

-', - 'wporg' => false, + 'description' => 'Activation is a Primer child theme with a colorful, fitness-focused design.', + 'template' => 'primer', + 'parent' => + array ( + 'slug' => 'primer', + 'name' => 'Primer', + 'homepage' => 'https://wordpress.org/themes/primer/', + ), + 'requires' => '4.4', + 'requires_php' => false, + 'wporg' => true, ), 44 => array ( 'name' => 'Velux', 'slug' => 'velux', - 'preview_url' => 'https://wordpress.org/themes/velux/', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/04/Velux.jpg', + 'version' => '1.1.3', + 'preview_url' => 'https://wp-themes.com/velux/', + 'author' => + array ( + 'user_nicename' => 'godaddy', + 'profile' => 'https://profiles.wordpress.org/godaddy', + 'avatar' => 'https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g', + 'display_name' => 'GoDaddy', + 'author' => false, + 'author_url' => 'https://www.godaddy.com/', + ), + 'screenshot_url' => '//ts.w.org/wp-content/themes/velux/screenshot.png?ver=1.1.3', + 'rating' => 0, + 'num_ratings' => 0, 'homepage' => 'https://wordpress.org/themes/velux/', - 'description' => ' - - -

Velux is a Primer child theme with a clean, professional, and upscale design.

-', - 'wporg' => false, + 'description' => 'Velux is a Primer child theme with a clean, professional, and upscale design.', + 'template' => 'primer', + 'parent' => + array ( + 'slug' => 'primer', + 'name' => 'Primer', + 'homepage' => 'https://wordpress.org/themes/primer/', + ), + 'requires' => '4.4', + 'requires_php' => '5.6.0', + 'wporg' => true, ), 45 => array ( 'name' => 'Scribbles', 'slug' => 'scribbles', - 'preview_url' => 'https://wordpress.org/themes/scribbles/', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/04/Scribbles.jpg', + 'version' => '1.1.2', + 'preview_url' => 'https://wp-themes.com/scribbles/', + 'author' => + array ( + 'user_nicename' => 'godaddy', + 'profile' => 'https://profiles.wordpress.org/godaddy', + 'avatar' => 'https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g', + 'display_name' => 'GoDaddy', + 'author' => false, + 'author_url' => 'https://www.godaddy.com/', + ), + 'screenshot_url' => '//ts.w.org/wp-content/themes/scribbles/screenshot.png?ver=1.1.2', + 'rating' => 0, + 'num_ratings' => 0, 'homepage' => 'https://wordpress.org/themes/scribbles/', - 'description' => ' - - -

Scribbles is a Primer child theme with a playful and fun mood.

-', - 'wporg' => false, + 'description' => 'Scribbles is a Primer child theme with a playful and fun mood.', + 'template' => 'primer', + 'parent' => + array ( + 'slug' => 'primer', + 'name' => 'Primer', + 'homepage' => 'https://wordpress.org/themes/primer/', + ), + 'requires' => '4.1', + 'requires_php' => false, + 'wporg' => true, ), 46 => array ( 'name' => 'Ascension', 'slug' => 'ascension', - 'preview_url' => 'https://wordpress.org/themes/ascension/', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/03/ascension.jpg', + 'version' => '1.1.5', + 'preview_url' => 'https://wp-themes.com/ascension/', + 'author' => + array ( + 'user_nicename' => 'godaddy', + 'profile' => 'https://profiles.wordpress.org/godaddy', + 'avatar' => 'https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g', + 'display_name' => 'GoDaddy', + 'author' => false, + 'author_url' => 'https://www.godaddy.com/', + ), + 'screenshot_url' => '//ts.w.org/wp-content/themes/ascension/screenshot.png?ver=1.1.5', + 'rating' => 0, + 'num_ratings' => 0, 'homepage' => 'https://wordpress.org/themes/ascension/', - 'description' => ' - - -

If you’re looking for an AMP ready business-oriented design checkout Ascension. a Primer child theme.

-', - 'wporg' => false, + 'description' => 'Ascension is a Primer child theme with a business-oriented design.', + 'template' => 'primer', + 'parent' => + array ( + 'slug' => 'primer', + 'name' => 'Primer', + 'homepage' => 'https://wordpress.org/themes/primer/', + ), + 'requires' => '4.4', + 'requires_php' => '5.6.0', + 'wporg' => true, ), 47 => array ( 'name' => 'Uptown Style', 'slug' => 'uptown-style', - 'preview_url' => 'https://wordpress.org/themes/uptown-style/', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/03/uptownstyle.jpg', + 'version' => '1.1.3', + 'preview_url' => 'https://wp-themes.com/uptown-style/', + 'author' => + array ( + 'user_nicename' => 'godaddy', + 'profile' => 'https://profiles.wordpress.org/godaddy', + 'avatar' => 'https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g', + 'display_name' => 'GoDaddy', + 'author' => false, + 'author_url' => 'https://www.godaddy.com/', + ), + 'screenshot_url' => '//ts.w.org/wp-content/themes/uptown-style/screenshot.png?ver=1.1.3', + 'rating' => 100, + 'num_ratings' => 3, 'homepage' => 'https://wordpress.org/themes/uptown-style/', - 'description' => ' - - -

Uptown Style is a Primer child theme with elegance and class.

-', - 'wporg' => false, + 'description' => 'Uptown Style is a Primer child theme with elegance and class.', + 'template' => 'primer', + 'parent' => + array ( + 'slug' => 'primer', + 'name' => 'Primer', + 'homepage' => 'https://wordpress.org/themes/primer/', + ), + 'requires' => '4.4', + 'requires_php' => '5.6.0', + 'wporg' => true, ), 48 => array ( - 'name' => 'Go – by GoDaddy', - 'slug' => 'go-godaddy', - 'preview_url' => 'https://wordpress.org/themes/go/', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/02/Gotheme.jpg', + 'name' => 'Go', + 'slug' => 'go', + 'version' => '1.5.0', + 'preview_url' => 'https://wp-themes.com/go/', + 'author' => + array ( + 'user_nicename' => 'godaddy', + 'profile' => 'https://profiles.wordpress.org/godaddy', + 'avatar' => 'https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g', + 'display_name' => 'GoDaddy', + 'author' => 'GoDaddy', + 'author_url' => 'https://www.godaddy.com', + ), + 'screenshot_url' => '//ts.w.org/wp-content/themes/go/screenshot.png?ver=1.5.0', + 'rating' => 94, + 'num_ratings' => 14, 'homepage' => 'https://wordpress.org/themes/go/', - 'description' => ' - - -

Go is an innovative, Gutenberg-first WordPress theme, hyper-focused on empowering makers to build beautifully rich websites with WordPress.

-', - 'wporg' => false, + 'description' => 'Go is an innovative, Gutenberg-first WordPress theme, hyper-focused on empowering makers to build beautifully rich websites with WordPress.', + 'requires' => false, + 'requires_php' => '5.6', + 'wporg' => true, ), 49 => array ( @@ -713,16 +1078,26 @@ 50 => array ( 'name' => 'Memory', - 'slug' => 'memory-2', - 'preview_url' => 'https://wordpress.org/themes/memory/', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/02/memory.jpg', + 'slug' => 'memory', + 'version' => '2.0.1', + 'preview_url' => 'https://wp-themes.com/memory/', + 'author' => + array ( + 'user_nicename' => 'gretathemes', + 'profile' => 'https://profiles.wordpress.org/gretathemes', + 'avatar' => 'https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g', + 'display_name' => 'GretaThemes', + 'author' => false, + 'author_url' => 'https://gretathemes.com', + ), + 'screenshot_url' => '//ts.w.org/wp-content/themes/memory/screenshot.png?ver=2.0.1', + 'rating' => 60, + 'num_ratings' => 1, 'homepage' => 'https://wordpress.org/themes/memory/', - 'description' => ' - - -

Memory is a clean and beautiful personal blog style theme which is easy to use, optimized for performance and fully up-to-date with modern tech standards.

-', - 'wporg' => false, + 'description' => 'Clean and beautiful personal blog theme.', + 'requires' => '4.5', + 'requires_php' => '5.2', + 'wporg' => true, ), 51 => array ( @@ -812,29 +1187,49 @@ array ( 'name' => 'Twenty Twenty', 'slug' => 'twentytwenty', - 'preview_url' => 'https://wordpress.org/themes/twentytwenty/', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2019/11/twentytwenty-screenshot.png', + 'version' => '1.8', + 'preview_url' => 'https://wp-themes.com/twentytwenty/', + 'author' => + array ( + 'user_nicename' => 'wordpressdotorg', + 'profile' => 'https://profiles.wordpress.org/wordpressdotorg', + 'avatar' => 'https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g', + 'display_name' => 'WordPress.org', + 'author' => 'the WordPress team', + 'author_url' => 'https://wordpress.org/', + ), + 'screenshot_url' => '//ts.w.org/wp-content/themes/twentytwenty/screenshot.png?ver=1.8', + 'rating' => 88, + 'num_ratings' => 61, 'homepage' => 'https://wordpress.org/themes/twentytwenty/', - 'description' => ' - - -

Our default theme for 2020 is designed to take full advantage of the flexibility of the block editor. Organizations and businesses have the ability to create dynamic landing pages with endless layouts using the group and column blocks. The centered content column and fine-tuned typography also makes it perfect for traditional blogs. Complete editor styles give you a good idea of what your content will look like, even before you publish. You can give your site a personal touch by changing the background colors and the accent color in the Customizer. The colors of all elements on your site are automatically calculated based on the colors you pick, ensuring a high, accessible color contrast for your visitors.

-', - 'wporg' => false, + 'description' => 'Our default theme for 2020 is designed to take full advantage of the flexibility of the block editor. Organizations and businesses have the ability to create dynamic landing pages with endless layouts using the group and column blocks. The centered content column and fine-tuned typography also makes it perfect for traditional blogs. Complete editor styles give you a good idea of what your content will look like, even before you publish. You can give your site a personal touch by changing the background colors and the accent color in the Customizer. The colors of all elements on your site are automatically calculated based on the colors you pick, ensuring a high, accessible color contrast for your visitors.', + 'requires' => '4.7', + 'requires_php' => '5.2.4', + 'wporg' => true, ), 58 => array ( 'name' => 'Primer', 'slug' => 'primer', - 'preview_url' => 'https://wordpress.org/themes/primer/', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2019/07/primer-1024x768-1.png', + 'version' => '1.8.9', + 'preview_url' => 'https://wp-themes.com/primer/', + 'author' => + array ( + 'user_nicename' => 'godaddy', + 'profile' => 'https://profiles.wordpress.org/godaddy', + 'avatar' => 'https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g', + 'display_name' => 'GoDaddy', + 'author' => false, + 'author_url' => 'https://www.godaddy.com/', + ), + 'screenshot_url' => '//ts.w.org/wp-content/themes/primer/screenshot.png?ver=1.8.9', + 'rating' => 90, + 'num_ratings' => 15, 'homepage' => 'https://wordpress.org/themes/primer/', - 'description' => ' - - -

Primer is a powerful theme that brings clarity to your content in a fresh design.

-', - 'wporg' => false, + 'description' => 'Primer is a powerful theme that brings clarity to your content in a fresh design.', + 'requires' => false, + 'requires_php' => false, + 'wporg' => true, ), 59 => array ( @@ -867,173 +1262,289 @@ 61 => array ( 'name' => 'Twenty Fourteen', - 'slug' => 'twenty-fourteen', - 'preview_url' => 'https://wordpress.org/themes/twentyfourteen', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2019/06/cropped-twentyfourteen.png', - 'homepage' => 'https://wordpress.org/themes/twentyfourteen', - 'description' => ' - - -

In 2014, our default theme lets you create a responsive magazine website with a sleek, modern design. Feature your favorite homepage content in either a grid or a slider. Use the three widget areas to customize your website, and change your content’s layout with a full-width page template and a contributor page to show off your authors. Creating a magazine website with WordPress has never been easier.

-', - 'wporg' => false, + 'slug' => 'twentyfourteen', + 'version' => '3.2', + 'preview_url' => 'https://wp-themes.com/twentyfourteen/', + 'author' => + array ( + 'user_nicename' => 'wordpressdotorg', + 'profile' => 'https://profiles.wordpress.org/wordpressdotorg', + 'avatar' => 'https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g', + 'display_name' => 'WordPress.org', + 'author' => 'the WordPress team', + 'author_url' => 'https://wordpress.org/', + ), + 'screenshot_url' => '//ts.w.org/wp-content/themes/twentyfourteen/screenshot.png?ver=3.2', + 'rating' => 88, + 'num_ratings' => 94, + 'homepage' => 'https://wordpress.org/themes/twentyfourteen/', + 'description' => 'In 2014, our default theme lets you create a responsive magazine website with a sleek, modern design. Feature your favorite homepage content in either a grid or a slider. Use the three widget areas to customize your website, and change your content\'s layout with a full-width page template and a contributor page to show off your authors. Creating a magazine website with WordPress has never been easier.', + 'requires' => false, + 'requires_php' => '5.2.4', + 'wporg' => true, ), 62 => array ( 'name' => 'Twenty Thirteen', - 'slug' => 'twenty-thirteen', - 'preview_url' => 'https://wordpress.org/themes/twentythirteen/', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2019/06/cropped-twentythirteen.png', + 'slug' => 'twentythirteen', + 'version' => '3.4', + 'preview_url' => 'https://wp-themes.com/twentythirteen/', + 'author' => + array ( + 'user_nicename' => 'wordpressdotorg', + 'profile' => 'https://profiles.wordpress.org/wordpressdotorg', + 'avatar' => 'https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g', + 'display_name' => 'WordPress.org', + 'author' => 'the WordPress team', + 'author_url' => 'https://wordpress.org/', + ), + 'screenshot_url' => '//ts.w.org/wp-content/themes/twentythirteen/screenshot.png?ver=3.4', + 'rating' => 82, + 'num_ratings' => 62, 'homepage' => 'https://wordpress.org/themes/twentythirteen/', - 'description' => ' - - -

The 2013 theme for WordPress takes us back to the blog, featuring a full range of post formats, each displayed beautifully in their own unique way. Design details abound, starting with a vibrant color scheme and matching header images, beautiful typography and icons, and a flexible layout that looks great on any device, big or small.

-', - 'wporg' => false, + 'description' => 'The 2013 theme for WordPress takes us back to the blog, featuring a full range of post formats, each displayed beautifully in their own unique way. Design details abound, starting with a vibrant color scheme and matching header images, beautiful typography and icons, and a flexible layout that looks great on any device, big or small.', + 'requires' => '3.6', + 'requires_php' => '5.2.4', + 'wporg' => true, ), 63 => array ( 'name' => 'Twenty Eleven', - 'slug' => 'twenty-eleven', - 'preview_url' => 'https://wordpress.org/themes/twentyeleven/', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2019/06/cropped-twentyeleven.png', + 'slug' => 'twentyeleven', + 'version' => '3.9', + 'preview_url' => 'https://wp-themes.com/twentyeleven/', + 'author' => + array ( + 'user_nicename' => 'wordpressdotorg', + 'profile' => 'https://profiles.wordpress.org/wordpressdotorg', + 'avatar' => 'https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g', + 'display_name' => 'WordPress.org', + 'author' => 'the WordPress team', + 'author_url' => 'https://wordpress.org/', + ), + 'screenshot_url' => '//ts.w.org/wp-content/themes/twentyeleven/screenshot.png?ver=3.9', + 'rating' => 92, + 'num_ratings' => 49, 'homepage' => 'https://wordpress.org/themes/twentyeleven/', - 'description' => ' - - -

The 2011 theme for WordPress is sophisticated, lightweight, and adaptable. Make it yours with a custom menu, header image, and background — then go further with available theme options for light or dark color scheme, custom link colors, and three layout choices. Twenty Eleven comes equipped with a Showcase page template that transforms your front page into a showcase to show off your best content, widget support galore (sidebar, three footer areas, and a Showcase page widget area), and a custom “Ephemera” widget to display your Aside, Link, Quote, or Status posts. Included are styles for print and for the admin editor, support for featured images (as custom header images on posts and pages and as large images on featured “sticky” posts), and special styles for six different post formats.

-', - 'wporg' => false, + 'description' => 'The 2011 theme for WordPress is sophisticated, lightweight, and adaptable. Make it yours with a custom menu, header image, and background -- then go further with available theme options for light or dark color scheme, custom link colors, and three layout choices. Twenty Eleven comes equipped with a Showcase page template that transforms your front page into a showcase to show off your best content, widget support galore (sidebar, three footer areas, and a Showcase page widget area), and a custom "Ephemera" widget to display your Aside, Link, Quote, or Status posts. Included are styles for print and for the admin editor, support for featured images (as custom header images on posts and pages and as large images on featured "sticky" posts), and special styles for six different post formats.', + 'requires' => false, + 'requires_php' => '5.2.4', + 'wporg' => true, ), 64 => array ( 'name' => 'Twenty Ten', - 'slug' => 'twenty-ten', - 'preview_url' => 'https://wordpress.org/themes/twentyten/', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2019/06/cropped-twentyten.png', + 'slug' => 'twentyten', + 'version' => '3.5', + 'preview_url' => 'https://wp-themes.com/twentyten/', + 'author' => + array ( + 'user_nicename' => 'wordpressdotorg', + 'profile' => 'https://profiles.wordpress.org/wordpressdotorg', + 'avatar' => 'https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g', + 'display_name' => 'WordPress.org', + 'author' => 'the WordPress team', + 'author_url' => 'https://wordpress.org/', + ), + 'screenshot_url' => '//ts.w.org/wp-content/themes/twentyten/screenshot.png?ver=3.5', + 'rating' => 94, + 'num_ratings' => 50, 'homepage' => 'https://wordpress.org/themes/twentyten/', - 'description' => ' - - -

The 2010 theme for WordPress is stylish, customizable, simple, and readable — make it yours with a custom menu, header image, and background. Twenty Ten supports six widgetized areas (two in the sidebar, four in the footer) and featured images (thumbnails for gallery posts and custom header images for posts and pages). It includes stylesheets for print and the admin Visual Editor, special styles for posts in the “Asides” and “Gallery” categories, and has an optional one-column page template that removes the sidebar.

-', - 'wporg' => false, + 'description' => 'The 2010 theme for WordPress is stylish, customizable, simple, and readable -- make it yours with a custom menu, header image, and background. Twenty Ten supports six widgetized areas (two in the sidebar, four in the footer) and featured images (thumbnails for gallery posts and custom header images for posts and pages). It includes stylesheets for print and the admin Visual Editor, special styles for posts in the "Asides" and "Gallery" categories, and has an optional one-column page template that removes the sidebar.', + 'requires' => '3.0', + 'requires_php' => '5.2.4', + 'wporg' => true, ), 65 => array ( 'name' => 'Zakra', 'slug' => 'zakra', - 'preview_url' => 'https://wordpress.org/themes/zakra/', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2019/06/zakra.jpg', + 'version' => '2.0.5', + 'preview_url' => 'https://wp-themes.com/zakra/', + 'author' => + array ( + 'user_nicename' => 'themegrill', + 'profile' => 'https://profiles.wordpress.org/themegrill', + 'avatar' => 'https://secure.gravatar.com/avatar/fa3cda768036cc3983458ed23394a43d?s=96&d=monsterid&r=g', + 'display_name' => 'ThemeGrill', + 'author' => 'ThemeGrill', + 'author_url' => 'https://themegrill.com', + ), + 'screenshot_url' => '//ts.w.org/wp-content/themes/zakra/screenshot.jpg?ver=2.0.5', + 'rating' => 100, + 'num_ratings' => 483, 'homepage' => 'https://wordpress.org/themes/zakra/', - 'description' => ' - - -

Zakra is flexible, fast, lightweight and modern multipurpose theme that comes with many starter free sites (currently 10+ free starter sites and more will be added later) that you can use to make your site beautiful and professional.

-', - 'wporg' => false, + 'description' => 'Zakra is flexible, fast, lightweight and modern multipurpose theme that comes with many starter free sites (currently 10+ free starter sites and more will be added later) that you can use to make your site beautiful and professional. Check all the starter sites at https://zakratheme.com/demos. Suitable for personal blog, portfolio, WooCommerce stores, business websites and niche-based sites (like Cafe, Spa, Charity, Yoga, Wedding, Dentist, Education etc) as well. Works with Elementor plus other major page builders so you can create any layout you want. The theme is responsive, Gutenberg compatible, SEO friendly, translation ready and major WordPress plugins compatible.', + 'requires' => false, + 'requires_php' => '5.6', + 'wporg' => true, ), 66 => array ( 'name' => 'Neve', 'slug' => 'neve', - 'preview_url' => 'https://wordpress.org/themes/neve/', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2019/03/neve-theme-screenshot.png', + 'version' => '3.0.6', + 'preview_url' => 'https://wp-themes.com/neve/', + 'author' => + array ( + 'user_nicename' => 'themeisle', + 'profile' => 'https://profiles.wordpress.org/themeisle', + 'avatar' => 'https://secure.gravatar.com/avatar/a0ec097eaf5f30933eb00c1175d4bd55?s=96&d=monsterid&r=g', + 'display_name' => 'Themeisle', + 'author' => 'ThemeIsle', + 'author_url' => 'https://themeisle.com', + ), + 'screenshot_url' => '//ts.w.org/wp-content/themes/neve/screenshot.png?ver=3.0.6', + 'rating' => 96, + 'num_ratings' => 834, 'homepage' => 'https://wordpress.org/themes/neve/', - 'description' => ' - - -

Neve is a super fast, easily customizable, multi-purpose theme

-', - 'wporg' => false, + 'description' => 'Neve is a super fast, easily customizable, multi-purpose theme. It’s perfect for blogs, small business, startups, agencies, firms, e-commerce shops (WooCommerce storefront) as well as personal portfolio sites and most types of projects. A fully AMP optimized and responsive theme, Neve will load in mere seconds and adapt perfectly on any viewing device. While it is lightweight and has a minimalist design, the theme is highly extendable, it has a highly SEO optimized code, resulting in top rankings in Google search results. Neve works perfectly with Gutenberg and the most popular page builders (Elementor, Brizy, Beaver Builder, Visual Composer, SiteOrigin, Divi). Neve is also WooCommerce ready, responsive, RTL & translation ready. Look no further. Neve is the perfect theme for you!', + 'requires' => '5.4', + 'requires_php' => '7.0', + 'wporg' => true, ), 67 => array ( 'name' => 'Astra', 'slug' => 'astra', - 'preview_url' => 'https://wordpress.org/themes/astra/', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2019/03/astra-theme-screenshot.jpg', + 'version' => '3.7.3', + 'preview_url' => 'https://wp-themes.com/astra/', + 'author' => + array ( + 'user_nicename' => 'brainstormforce', + 'profile' => 'https://profiles.wordpress.org/brainstormforce', + 'avatar' => 'https://secure.gravatar.com/avatar/9f4255d653745eaa037105cd5eab2295?s=96&d=monsterid&r=g', + 'display_name' => 'Brainstorm Force', + 'author' => 'Brainstorm Force', + 'author_url' => 'https://wpastra.com/about/', + ), + 'screenshot_url' => '//ts.w.org/wp-content/themes/astra/screenshot.jpg?ver=3.7.3', + 'rating' => 98, + 'num_ratings' => 5005, 'homepage' => 'https://wordpress.org/themes/astra/', - 'description' => ' - - -

A very lightweight and beautiful theme made to work with Page Builders.

-', - 'wporg' => false, + 'description' => 'Astra is fast, fully customizable & beautiful WordPress theme suitable for blog, personal portfolio, business website and WooCommerce storefront. It is very lightweight (less than 50KB on frontend) and offers unparalleled speed. Built with SEO in mind, Astra comes with Schema.org code integrated and is Native AMP ready so search engines will love your site. It offers special features and templates so it works perfectly with all page builders like Elementor, Beaver Builder, Visual Composer, SiteOrigin, Divi, etc. Some of the other features: # WooCommerce Ready # Responsive # RTL & Translation Ready # Extendible with premium addons # Regularly updated # Designed, Developed, Maintained & Supported by Brainstorm Force. Looking for a perfect base theme? Look no further. Astra is fast, fully customizable and WooCommerce ready theme that you can use for building any kind of website!', + 'requires' => '5.3', + 'requires_php' => '5.3', + 'wporg' => true, ), 68 => array ( 'name' => 'Twenty Twelve', - 'slug' => 'twenty-twelve', - 'preview_url' => 'https://wordpress.org/themes/twentytwelve/', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2018/11/cropped-twentytwelve.png', + 'slug' => 'twentytwelve', + 'version' => '3.5', + 'preview_url' => 'https://wp-themes.com/twentytwelve/', + 'author' => + array ( + 'user_nicename' => 'wordpressdotorg', + 'profile' => 'https://profiles.wordpress.org/wordpressdotorg', + 'avatar' => 'https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g', + 'display_name' => 'WordPress.org', + 'author' => 'the WordPress team', + 'author_url' => 'https://wordpress.org/', + ), + 'screenshot_url' => '//ts.w.org/wp-content/themes/twentytwelve/screenshot.png?ver=3.5', + 'rating' => 92, + 'num_ratings' => 155, 'homepage' => 'https://wordpress.org/themes/twentytwelve/', - 'description' => ' - - -

The 2012 theme for WordPress is a fully responsive theme that looks great on any device. Features include a front page template with its own widgets, an optional display font, styling for post formats on both index and single views, and an optional no-sidebar page template. Make it yours with a custom menu, header image, and background.

-', - 'wporg' => false, + 'description' => 'The 2012 theme for WordPress is a fully responsive theme that looks great on any device. Features include a front page template with its own widgets, an optional display font, styling for post formats on both index and single views, and an optional no-sidebar page template. Make it yours with a custom menu, header image, and background.', + 'requires' => '3.5', + 'requires_php' => '5.2.4', + 'wporg' => true, ), 69 => array ( 'name' => 'Twenty Nineteen', - 'slug' => 'twenty-nineteen', - 'preview_url' => 'https://wordpress.org/themes/twentynineteen/', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2018/11/cropped-twentynineteen.png', + 'slug' => 'twentynineteen', + 'version' => '2.1', + 'preview_url' => 'https://wp-themes.com/twentynineteen/', + 'author' => + array ( + 'user_nicename' => 'wordpressdotorg', + 'profile' => 'https://profiles.wordpress.org/wordpressdotorg', + 'avatar' => 'https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g', + 'display_name' => 'WordPress.org', + 'author' => 'the WordPress team', + 'author_url' => 'https://wordpress.org/', + ), + 'screenshot_url' => '//ts.w.org/wp-content/themes/twentynineteen/screenshot.png?ver=2.1', + 'rating' => 74, + 'num_ratings' => 59, 'homepage' => 'https://wordpress.org/themes/twentynineteen/', - 'description' => ' - - -

Our 2019 default theme is designed to show off the power of the block editor. It features custom styles for all the default blocks, and is built so that what you see in the editor looks like what you’ll see on your website. Twenty Nineteen is designed to be adaptable to a wide range of websites, whether you’re running a photo blog, launching a new business, or supporting a non-profit. Featuring ample whitespace and modern sans-serif headlines paired with classic serif body text, it’s built to be beautiful on all screen sizes.

- - - -

-', - 'wporg' => false, + 'description' => 'Our 2019 default theme is designed to show off the power of the block editor. It features custom styles for all the default blocks, and is built so that what you see in the editor looks like what you\'ll see on your website. Twenty Nineteen is designed to be adaptable to a wide range of websites, whether you’re running a photo blog, launching a new business, or supporting a non-profit. Featuring ample whitespace and modern sans-serif headlines paired with classic serif body text, it\'s built to be beautiful on all screen sizes.', + 'requires' => '4.9.6', + 'requires_php' => '5.2.4', + 'wporg' => true, ), 70 => array ( 'name' => 'Twenty Seventeen', - 'slug' => 'twenty-seventeen', - 'preview_url' => 'https://wordpress.org/themes/twentyseventeen/', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2018/11/cropped-twentyseventeen.png', + 'slug' => 'twentyseventeen', + 'version' => '2.8', + 'preview_url' => 'https://wp-themes.com/twentyseventeen/', + 'author' => + array ( + 'user_nicename' => 'wordpressdotorg', + 'profile' => 'https://profiles.wordpress.org/wordpressdotorg', + 'avatar' => 'https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g', + 'display_name' => 'WordPress.org', + 'author' => 'the WordPress team', + 'author_url' => 'https://wordpress.org/', + ), + 'screenshot_url' => '//ts.w.org/wp-content/themes/twentyseventeen/screenshot.png?ver=2.8', + 'rating' => 88, + 'num_ratings' => 114, 'homepage' => 'https://wordpress.org/themes/twentyseventeen/', - 'description' => ' - - -

Twenty Seventeen brings your site to life with header video and immersive featured images. With a focus on business sites, it features multiple sections on the front page as well as widgets, navigation and social menus, a logo, and more. Personalize its asymmetrical grid with a custom color scheme and showcase your multimedia content with post formats. Our default theme for 2017 works great in many languages, for any abilities, and on any device.

-', - 'wporg' => false, + 'description' => 'Twenty Seventeen brings your site to life with header video and immersive featured images. With a focus on business sites, it features multiple sections on the front page as well as widgets, navigation and social menus, a logo, and more. Personalize its asymmetrical grid with a custom color scheme and showcase your multimedia content with post formats. Our default theme for 2017 works great in many languages, for any abilities, and on any device.', + 'requires' => '4.7', + 'requires_php' => '5.2.4', + 'wporg' => true, ), 71 => array ( 'name' => 'Twenty Sixteen', - 'slug' => 'twenty-sixteen', - 'preview_url' => 'https://wordpress.org/themes/twentysixteen/', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2018/11/cropped-twentysixteen.png', + 'slug' => 'twentysixteen', + 'version' => '2.5', + 'preview_url' => 'https://wp-themes.com/twentysixteen/', + 'author' => + array ( + 'user_nicename' => 'wordpressdotorg', + 'profile' => 'https://profiles.wordpress.org/wordpressdotorg', + 'avatar' => 'https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g', + 'display_name' => 'WordPress.org', + 'author' => 'the WordPress team', + 'author_url' => 'https://wordpress.org/', + ), + 'screenshot_url' => '//ts.w.org/wp-content/themes/twentysixteen/screenshot.png?ver=2.5', + 'rating' => 82, + 'num_ratings' => 79, 'homepage' => 'https://wordpress.org/themes/twentysixteen/', - 'description' => ' - - -

Twenty Sixteen is a modernized take on an ever-popular WordPress layout — the horizontal masthead with an optional right sidebar that works perfectly for blogs and websites. It has custom color options with beautiful default color schemes, a harmonious fluid grid using a mobile-first approach, and impeccable polish in every detail. Twenty Sixteen will make your WordPress look beautiful everywhere.

-', - 'wporg' => false, + 'description' => 'Twenty Sixteen is a modernized take on an ever-popular WordPress layout — the horizontal masthead with an optional right sidebar that works perfectly for blogs and websites. It has custom color options with beautiful default color schemes, a harmonious fluid grid using a mobile-first approach, and impeccable polish in every detail. Twenty Sixteen will make your WordPress look beautiful everywhere.', + 'requires' => '4.4', + 'requires_php' => '5.2.4', + 'wporg' => true, ), 72 => array ( 'name' => 'Twenty Fifteen', - 'slug' => 'twenty-fifteen', - 'preview_url' => 'https://wordpress.org/themes/twentyfifteen/', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2018/11/cropped-twentyfifteen.png', + 'slug' => 'twentyfifteen', + 'version' => '3.0', + 'preview_url' => 'https://wp-themes.com/twentyfifteen/', + 'author' => + array ( + 'user_nicename' => 'wordpressdotorg', + 'profile' => 'https://profiles.wordpress.org/wordpressdotorg', + 'avatar' => 'https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g', + 'display_name' => 'WordPress.org', + 'author' => 'the WordPress team', + 'author_url' => 'https://wordpress.org/', + ), + 'screenshot_url' => '//ts.w.org/wp-content/themes/twentyfifteen/screenshot.png?ver=3.0', + 'rating' => 88, + 'num_ratings' => 50, 'homepage' => 'https://wordpress.org/themes/twentyfifteen/', - 'description' => ' - - -

Our 2015 default theme is clean, blog-focused, and designed for clarity. Twenty Fifteen’s simple, straightforward typography is readable on a wide variety of screen sizes, and suitable for multiple languages. We designed it using a mobile-first approach, meaning your content takes center-stage, regardless of whether your visitors arrive by smartphone, tablet, laptop, or desktop computer.

-', - 'wporg' => false, + 'description' => 'Our 2015 default theme is clean, blog-focused, and designed for clarity. Twenty Fifteen\'s simple, straightforward typography is readable on a wide variety of screen sizes, and suitable for multiple languages. We designed it using a mobile-first approach, meaning your content takes center-stage, regardless of whether your visitors arrive by smartphone, tablet, laptop, or desktop computer.', + 'requires' => false, + 'requires_php' => '5.2.4', + 'wporg' => true, ), ); \ No newline at end of file From e240f4475401ef222a1a84a23f0d81eb6015b0f2 Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Thu, 21 Oct 2021 16:28:55 -0700 Subject: [PATCH 061/105] Prevent rectangular images from being stretched into a square plugin icons --- assets/css/src/amp-admin.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/assets/css/src/amp-admin.css b/assets/css/src/amp-admin.css index b8b14d90b46..8420aff4e84 100644 --- a/assets/css/src/amp-admin.css +++ b/assets/css/src/amp-admin.css @@ -1,3 +1,7 @@ +.plugin-icon { + object-fit: contain; /* Account for non-square icons being used. */ +} + .extension-card-px-message { text-align: center; padding: 7px 20px; From cbd8cabc66374710f4e1e9f0c5a89c1a121c3573 Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Thu, 21 Oct 2021 16:38:37 -0700 Subject: [PATCH 062/105] Remove AMP logo from theme/plugin directory tabs --- assets/src/admin/amp-theme-install.js | 4 ---- src/Admin/AMPPlugins.php | 2 +- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/assets/src/admin/amp-theme-install.js b/assets/src/admin/amp-theme-install.js index 8fabc3eebd3..74bfc0f3bc5 100644 --- a/assets/src/admin/amp-theme-install.js +++ b/assets/src/admin/amp-theme-install.js @@ -30,11 +30,7 @@ const ampThemeInstall = { const listItem = document.createElement( 'li' ); const anchorElement = document.createElement( 'a' ); - const spanElement = document.createElement( 'span' ); - spanElement.classList.add( 'amp-logo-icon' ); - anchorElement.append( spanElement ); - anchorElement.append( ' ' ); anchorElement.append( __( 'AMP Compatible', 'amp' ) ); anchorElement.setAttribute( 'href', '#' ); anchorElement.setAttribute( 'data-sort', 'amp-compatible' ); diff --git a/src/Admin/AMPPlugins.php b/src/Admin/AMPPlugins.php index b1b9490631f..61320bf04f6 100644 --- a/src/Admin/AMPPlugins.php +++ b/src/Admin/AMPPlugins.php @@ -215,7 +215,7 @@ public function add_tab( $tabs ) { return array_merge( [ - 'amp-compatible' => ' ' . esc_html__( 'AMP Compatible', 'amp' ), + 'amp-compatible' => esc_html__( 'AMP Compatible', 'amp' ), ], $tabs ); From 2514c1cfbe9cda6d5edd41dc55a7fa8f25a8320f Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Thu, 21 Oct 2021 16:42:08 -0700 Subject: [PATCH 063/105] Add AMP Compatible tab to end instead of beginning --- assets/src/admin/amp-theme-install.js | 2 +- src/Admin/AMPPlugins.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/assets/src/admin/amp-theme-install.js b/assets/src/admin/amp-theme-install.js index 74bfc0f3bc5..e7e2746d031 100644 --- a/assets/src/admin/amp-theme-install.js +++ b/assets/src/admin/amp-theme-install.js @@ -37,7 +37,7 @@ const ampThemeInstall = { listItem.appendChild( anchorElement ); - filterLinks.prepend( listItem ); + filterLinks.appendChild( listItem ); }, /** diff --git a/src/Admin/AMPPlugins.php b/src/Admin/AMPPlugins.php index 61320bf04f6..32323b51029 100644 --- a/src/Admin/AMPPlugins.php +++ b/src/Admin/AMPPlugins.php @@ -214,10 +214,10 @@ public function enqueue_scripts() { public function add_tab( $tabs ) { return array_merge( + $tabs, [ 'amp-compatible' => esc_html__( 'AMP Compatible', 'amp' ), - ], - $tabs + ] ); } From 6d923e7f8a3b1f4b8ae23dd600dd22f886e6e075 Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Mon, 25 Oct 2021 12:22:37 +0530 Subject: [PATCH 064/105] Remove additional info from plugin card in AMP Compatible tab --- assets/src/admin/amp-plugin-install.js | 17 ++++++----------- src/Admin/AMPPlugins.php | 11 +---------- 2 files changed, 7 insertions(+), 21 deletions(-) diff --git a/assets/src/admin/amp-plugin-install.js b/assets/src/admin/amp-plugin-install.js index 7b8aa87a2e5..84340fbf279 100644 --- a/assets/src/admin/amp-plugin-install.js +++ b/assets/src/admin/amp-plugin-install.js @@ -7,7 +7,7 @@ import { __ } from '@wordpress/i18n'; /** * External dependencies */ -import { AMP_PLUGINS, NONE_WPORG_PLUGINS } from 'amp-plugins'; // From WP inline script. +import { AMP_PLUGINS } from 'amp-plugins'; // From WP inline script. import { debounce } from 'lodash'; const ampPluginInstall = { @@ -74,19 +74,14 @@ const ampPluginInstall = { }, /** - * Remove the additional info from plugin card if plugin is none wporg plugin. + * Remove the additional info from plugin card in "AMP Compatible" tab. */ removeAdditionalInfo() { - for ( const pluginSlug of NONE_WPORG_PLUGINS ) { - const pluginCardElement = document.querySelector( `.plugin-card.plugin-card-${ pluginSlug }` ); - - if ( ! pluginCardElement ) { - continue; - } + const pluginCardBottom = document.querySelectorAll( '.plugin-install-tab-amp-compatible .plugin-card-bottom' ); - const pluginCardBottom = pluginCardElement.querySelector( '.plugin-card-bottom' ); - if ( pluginCardBottom ) { - pluginCardBottom.remove(); + if ( pluginCardBottom ) { + for ( const elementNode of pluginCardBottom ) { + elementNode.remove(); } } }, diff --git a/src/Admin/AMPPlugins.php b/src/Admin/AMPPlugins.php index 32323b51029..bc133412a35 100644 --- a/src/Admin/AMPPlugins.php +++ b/src/Admin/AMPPlugins.php @@ -181,17 +181,8 @@ public function enqueue_scripts() { AMP__VERSION ); - $none_wporg = []; - - foreach ( $this->get_plugins() as $plugin ) { - if ( true !== $plugin['wporg'] ) { - $none_wporg[] = $plugin['slug']; - } - } - $js_data = [ - 'AMP_PLUGINS' => wp_list_pluck( $this->get_plugins(), 'slug' ), - 'NONE_WPORG_PLUGINS' => $none_wporg, + 'AMP_PLUGINS' => wp_list_pluck( $this->get_plugins(), 'slug' ), ]; wp_add_inline_script( From 65bfa8b9f595318a44af608ba4d3f73404fec09e Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Mon, 25 Oct 2021 14:41:19 +0530 Subject: [PATCH 065/105] Omit extra field being stored for AMP plugins and themes. --- bin/update-extension-files.js | 22 +- includes/ecosystem-data/plugins.php | 1655 +-------------------------- includes/ecosystem-data/themes.php | 711 +----------- package-lock.json | 12 +- 4 files changed, 43 insertions(+), 2357 deletions(-) diff --git a/bin/update-extension-files.js b/bin/update-extension-files.js index 11c1f00c9ae..7b71f82a0ae 100644 --- a/bin/update-extension-files.js +++ b/bin/update-extension-files.js @@ -191,8 +191,15 @@ class UpdateExtensionFiles { for ( const item of items ) { if ( slug === item.slug ) { - item.wporg = true; - return item; + return { + name: item.name, + slug: item.slug, + preview_url: item.preview_url, + screenshot_url: item.screenshot_url, + homepage: item.homepage, + description: item.description, + wporg: true, + }; } } @@ -267,8 +274,15 @@ class UpdateExtensionFiles { for ( const item of items ) { if ( slug === item.slug ) { - item.wporg = true; - return item; + return { + name: item.name, + slug: item.slug, + homepage: item.homepage, + short_description: item.short_description, + description: item.description, + icons: item.icons, + wporg: true, + }; } } diff --git a/includes/ecosystem-data/plugins.php b/includes/ecosystem-data/plugins.php index ee0d6182ea1..fd006cf0c59 100644 --- a/includes/ecosystem-data/plugins.php +++ b/includes/ecosystem-data/plugins.php @@ -14,40 +14,8 @@ array ( 'name' => 'Podcast Player – Your Podcasting Companion', 'slug' => 'podcast-player', - 'version' => '5.2.2', - 'author' => 'vedathemes', - 'author_profile' => 'https://profiles.wordpress.org/vedathemes', - 'requires' => '4.9', - 'tested' => '5.8.1', - 'requires_php' => '5.6', - 'rating' => 98, - 'ratings' => - array ( - 1 => 0, - 2 => 1, - 3 => 0, - 4 => 2, - 5 => 46, - ), - 'num_ratings' => 49, - 'support_threads' => 6, - 'support_threads_resolved' => 6, - 'active_installs' => 8000, - 'downloaded' => 128982, - 'last_updated' => '2021-10-14 9:56am GMT', - 'added' => '2019-02-06', 'homepage' => 'https://vedathemes.com/podcast-player/', 'short_description' => 'Showcase your podcast only using podcasting feed url. Use custom widget, shortcode or editor block…', - 'download_link' => 'https://downloads.wordpress.org/plugin/podcast-player.5.2.2.zip', - 'tags' => - array ( - 'feed-to-audio' => 'feed to audio', - 'podcast' => 'podcast', - 'podcaster' => 'podcaster', - 'podcasting' => 'podcasting', - 'rss-feed' => 'rss feed', - ), - 'donate_link' => '', 'icons' => array ( '1x' => 'https://ps.w.org/podcast-player/assets/icon-256x256.png?rev=2025683', @@ -59,35 +27,8 @@ array ( 'name' => 'WPSSO Schema JSON-LD Markup', 'slug' => 'wpsso-schema-json-ld', - 'version' => '5.1.0', - 'author' => 'JS Morisset', - 'author_profile' => 'https://profiles.wordpress.org/jsmoriss', - 'requires' => '5.0', - 'tested' => '5.8.1', - 'requires_php' => '7.0', - 'rating' => 90, - 'ratings' => - array ( - 1 => 5, - 2 => 2, - 3 => 1, - 4 => 1, - 5 => 55, - ), - 'num_ratings' => 64, - 'support_threads' => 4, - 'support_threads_resolved' => 4, - 'active_installs' => 4000, - 'downloaded' => 291686, - 'last_updated' => '2021-10-19 3:30pm GMT', - 'added' => '2016-02-14', 'homepage' => 'https://wpsso.com/extend/plugins/wpsso-schema-json-ld/', 'short_description' => 'Discontinued / deprecated add-on: The features of this plugin were merged into WPSSO Core v9.0.0.', - 'download_link' => 'https://downloads.wordpress.org/plugin/wpsso-schema-json-ld.zip', - 'tags' => - array ( - ), - 'donate_link' => '', 'icons' => array ( 'default' => 'https://s.w.org/plugins/geopattern-icon/wpsso-schema-json-ld.svg', @@ -98,40 +39,8 @@ array ( 'name' => 'ShortPixel Image Optimizer', 'slug' => 'shortpixel-image-optimiser', - 'version' => '4.22.6', - 'author' => 'ShortPixel', - 'author_profile' => 'https://profiles.wordpress.org/shortpixel', - 'requires' => '4.2.0', - 'tested' => '5.8.1', - 'requires_php' => '5.6', - 'rating' => 92, - 'ratings' => - array ( - 1 => 53, - 2 => 12, - 3 => 8, - 4 => 12, - 5 => 546, - ), - 'num_ratings' => 631, - 'support_threads' => 11, - 'support_threads_resolved' => 7, - 'active_installs' => 300000, - 'downloaded' => 7112124, - 'last_updated' => '2021-10-11 2:44pm GMT', - 'added' => '2014-11-05', 'homepage' => 'https://shortpixel.com/', 'short_description' => 'Speed up your website & boost your SEO by compressing old & new images and PDFs. Optimize and convert WebP & AVIF.', - 'download_link' => 'https://downloads.wordpress.org/plugin/shortpixel-image-optimiser.4.22.6.zip', - 'tags' => - array ( - 'compressor' => 'compressor', - 'convert-webp' => 'convert webp', - 'image-optimization' => 'image optimization', - 'optimize-images' => 'optimize images', - 'resize' => 'resize', - ), - 'donate_link' => '', 'icons' => array ( '1x' => 'https://ps.w.org/shortpixel-image-optimiser/assets/icon-128x128.png?rev=1038819', @@ -143,40 +52,8 @@ array ( 'name' => 'Theme Kit for Twenty Twenty-One & Twenty Twenty (Customization, Gutenberg Blocks, Templates) – Twentig', 'slug' => 'twentig', - 'version' => '1.3.6', - 'author' => 'Twentig', - 'author_profile' => 'https://profiles.wordpress.org/twentig', - 'requires' => '5.5', - 'tested' => '5.8.1', - 'requires_php' => '5.6', - 'rating' => 100, - 'ratings' => - array ( - 1 => 0, - 2 => 0, - 3 => 0, - 4 => 2, - 5 => 110, - ), - 'num_ratings' => 112, - 'support_threads' => 40, - 'support_threads_resolved' => 31, - 'active_installs' => 10000, - 'downloaded' => 152096, - 'last_updated' => '2021-09-15 2:23pm GMT', - 'added' => '2019-05-29', 'homepage' => 'https://twentig.com', 'short_description' => 'Supercharge your WordPress theme (Twenty Twenty-One & Twenty Twenty) with customization options, enhanced Gutenberg blocks,…', - 'download_link' => 'https://downloads.wordpress.org/plugin/twentig.1.3.6.zip', - 'tags' => - array ( - 'gutenberg' => 'gutenberg', - 'gutenberg-blocks' => 'gutenberg blocks', - 'templates' => 'templates', - 'theme' => 'theme', - 'twenty-twenty-one' => 'twenty-twenty-one', - ), - 'donate_link' => 'https://www.paypal.com/donate?hosted_button_id=JTBTPQAFEA94E', 'icons' => array ( '1x' => 'https://ps.w.org/twentig/assets/icon.svg?rev=2569439', @@ -189,40 +66,8 @@ array ( 'name' => 'Custom Post Type UI', 'slug' => 'custom-post-type-ui', - 'version' => '1.10.0', - 'author' => 'WebDevStudios', - 'author_profile' => 'https://profiles.wordpress.org/williamsba1', - 'requires' => '5.5', - 'tested' => '5.8.1', - 'requires_php' => '5.6', - 'rating' => 94, - 'ratings' => - array ( - 1 => 12, - 2 => 3, - 3 => 6, - 4 => 9, - 5 => 205, - ), - 'num_ratings' => 235, - 'support_threads' => 59, - 'support_threads_resolved' => 29, - 'active_installs' => 1000000, - 'downloaded' => 9068055, - 'last_updated' => '2021-10-05 1:54am GMT', - 'added' => '2010-02-26', 'homepage' => 'https://github.com/WebDevStudios/custom-post-type-ui/', 'short_description' => 'Admin UI for creating custom post types and custom taxonomies for WordPress', - 'download_link' => 'https://downloads.wordpress.org/plugin/custom-post-type-ui.1.10.0.zip', - 'tags' => - array ( - 'cms' => 'cms', - 'cpt' => 'cpt', - 'custom-post-types' => 'custom post types', - 'post' => 'post', - 'types' => 'types', - ), - 'donate_link' => 'https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=3084056', 'icons' => array ( '1x' => 'https://ps.w.org/custom-post-type-ui/assets/icon-128x128.png?rev=2549362', @@ -234,40 +79,8 @@ array ( 'name' => 'Flex Posts – Widget and Gutenberg Block', 'slug' => 'flex-posts', - 'version' => '1.8.1', - 'author' => 'Tajam', - 'author_profile' => 'https://profiles.wordpress.org/tajam', - 'requires' => '5.2', - 'tested' => '5.8.1', - 'requires_php' => false, - 'rating' => 100, - 'ratings' => - array ( - 1 => 0, - 2 => 0, - 3 => 0, - 4 => 0, - 5 => 17, - ), - 'num_ratings' => 17, - 'support_threads' => 3, - 'support_threads_resolved' => 1, - 'active_installs' => 3000, - 'downloaded' => 25520, - 'last_updated' => '2021-07-29 10:41am GMT', - 'added' => '2018-05-10', 'homepage' => 'https://tajam.id/flex-posts/', - 'short_description' => 'A widget to display posts with thumbnails in various layouts. Fits nicely in any widget area size.', - 'download_link' => 'https://downloads.wordpress.org/plugin/flex-posts.zip', - 'tags' => - array ( - 'category-posts' => 'category posts', - 'grid' => 'grid', - 'magazine' => 'magazine', - 'news' => 'news', - 'responsive' => 'responsive', - ), - 'donate_link' => 'https://tajam.id/', + 'short_description' => 'A widget to display posts with thumbnails in various layouts. Fits nicely in any widget…', 'icons' => array ( '1x' => 'https://ps.w.org/flex-posts/assets/icon-128x128.png?rev=1871802', @@ -278,40 +91,8 @@ array ( 'name' => 'YARPP – Yet Another Related Posts Plugin', 'slug' => 'yet-another-related-posts-plugin', - 'version' => '5.27.6', - 'author' => 'YARPP', - 'author_profile' => 'https://profiles.wordpress.org/jeffparker', - 'requires' => '3.7', - 'tested' => '5.8.1', - 'requires_php' => '5.3', - 'rating' => 94, - 'ratings' => - array ( - 1 => 33, - 2 => 2, - 3 => 14, - 4 => 45, - 5 => 654, - ), - 'num_ratings' => 748, - 'support_threads' => 21, - 'support_threads_resolved' => 6, - 'active_installs' => 100000, - 'downloaded' => 6604837, - 'last_updated' => '2021-10-12 3:43pm GMT', - 'added' => '2008-01-02', 'homepage' => 'https://yarpp.com/', 'short_description' => 'The best WordPress plugin for displaying related posts. Simple and flexible, with a powerful proven…', - 'download_link' => 'https://downloads.wordpress.org/plugin/yet-another-related-posts-plugin.5.27.6.zip', - 'tags' => - array ( - 'contextual-related-posts' => 'contextual related posts', - 'posts' => 'posts', - 'related-posts' => 'related posts', - 'seo' => 'seo', - 'similar-posts' => 'similar posts', - ), - 'donate_link' => 'https://yarpp.com', 'icons' => array ( '1x' => 'https://ps.w.org/yet-another-related-posts-plugin/assets/icon-128x128.png?rev=2549977', @@ -323,39 +104,8 @@ array ( 'name' => 'Superb WordPress Table (SEO Optimized Tables With Schema)', 'slug' => 'superb-tables', - 'version' => '1.0.9', - 'author' => 'SuPlugins', - 'author_profile' => 'https://profiles.wordpress.org/suplugins', - 'requires' => '3.0.1', - 'tested' => '5.8.1', - 'requires_php' => '5.2.4', - 'rating' => 86, - 'ratings' => - array ( - 1 => 0, - 2 => 1, - 3 => 0, - 4 => 0, - 5 => 3, - ), - 'num_ratings' => 4, - 'support_threads' => 1, - 'support_threads_resolved' => 1, - 'active_installs' => 4000, - 'downloaded' => 37393, - 'last_updated' => '2021-10-01 9:37am GMT', - 'added' => '2019-03-05', 'homepage' => 'https://superbthemes.com/plugins/superb-tables/', 'short_description' => 'Responsive & SEO Optimized tables. Get your Google Featured Snippets. Different table designs, table shortcodes…', - 'download_link' => 'https://downloads.wordpress.org/plugin/superb-tables.1.0.9.zip', - 'tags' => - array ( - 'content-tables' => 'content tables', - 'responsive-tables' => 'responsive tables', - 'table' => 'table', - 'tables' => 'tables', - ), - 'donate_link' => '', 'icons' => array ( '1x' => 'https://ps.w.org/superb-tables/assets/icon-256x256.png?rev=2044672', @@ -367,40 +117,8 @@ array ( 'name' => 'Floating Button', 'slug' => 'floating-button', - 'version' => '5.1', - 'author' => 'Wow-Company', - 'author_profile' => 'https://profiles.wordpress.org/wpcalc', - 'requires' => '3.2', - 'tested' => '5.8.1', - 'requires_php' => '5.3', - 'rating' => 80, - 'ratings' => - array ( - 1 => 1, - 2 => 1, - 3 => 0, - 4 => 0, - 5 => 5, - ), - 'num_ratings' => 7, - 'support_threads' => 1, - 'support_threads_resolved' => 0, - 'active_installs' => 2000, - 'downloaded' => 35884, - 'last_updated' => '2021-10-12 9:08am GMT', - 'added' => '2018-09-08', 'homepage' => 'https://wordpress.org/plugins/floating-button/', 'short_description' => 'Easily create a custom sticky floating buttons. The Floating Button will be the effective solution…', - 'download_link' => 'https://downloads.wordpress.org/plugin/floating-button.5.1.zip', - 'tags' => - array ( - 'circle-menu' => 'circle menu', - 'float-menu' => 'float menu', - 'floating-button' => 'floating button', - 'floating-menu' => 'floating menu', - 'sticky-button' => 'sticky button', - ), - 'donate_link' => 'https://wow-estore.com/item/floating-button-pro/', 'icons' => array ( '1x' => 'https://ps.w.org/floating-button/assets/icon-128x128.png?rev=2533016', @@ -412,40 +130,8 @@ array ( 'name' => 'Breadcrumb NavXT', 'slug' => 'breadcrumb-navxt', - 'version' => '6.6.0', - 'author' => 'John Havlik', - 'author_profile' => 'https://profiles.wordpress.org/mtekk', - 'requires' => '4.9', - 'tested' => '5.7.3', - 'requires_php' => '5.5', - 'rating' => 94, - 'ratings' => - array ( - 1 => 5, - 2 => 2, - 3 => 4, - 4 => 7, - 5 => 104, - ), - 'num_ratings' => 122, - 'support_threads' => 8, - 'support_threads_resolved' => 3, - 'active_installs' => 900000, - 'downloaded' => 10202613, - 'last_updated' => '2021-04-01 2:13am GMT', - 'added' => '2007-12-01', 'homepage' => 'http://mtekk.us/code/breadcrumb-navxt/', - 'short_description' => 'Breadcrumb NavXT, the successor to the popular WordPress plugin Breadcrumb Navigation XT, was written from…', - 'download_link' => 'https://downloads.wordpress.org/plugin/breadcrumb-navxt.6.6.0.zip', - 'tags' => - array ( - 'breadcrumb' => 'breadcrumb', - 'breadcrumbs' => 'breadcrumbs', - 'menu' => 'menu', - 'navigation' => 'navigation', - 'trail' => 'trail', - ), - 'donate_link' => 'https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=FD5XEU783BR8U&lc=US&item_name=Breadcrumb%20NavXT%20Donation¤cy_code=USD&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted', + 'short_description' => 'Breadcrumb NavXT, the successor to the popular WordPress plugin Breadcrumb Navigation XT, was written from the ground up to be better than its ancesto …', 'icons' => array ( '1x' => 'https://ps.w.org/breadcrumb-navxt/assets/icon.svg?rev=1927103', @@ -458,40 +144,8 @@ array ( 'name' => 'WP Recipe Maker', 'slug' => 'wp-recipe-maker', - 'version' => '7.6.1', - 'author' => 'Bootstrapped Ventures', - 'author_profile' => 'https://profiles.wordpress.org/brechtvds', - 'requires' => '4.4', - 'tested' => '5.8.1', - 'requires_php' => '5.4', - 'rating' => 100, - 'ratings' => - array ( - 1 => 1, - 2 => 0, - 3 => 1, - 4 => 4, - 5 => 209, - ), - 'num_ratings' => 215, - 'support_threads' => 22, - 'support_threads_resolved' => 16, - 'active_installs' => 50000, - 'downloaded' => 1589648, - 'last_updated' => '2021-09-16 11:33am GMT', - 'added' => '2016-09-07', 'homepage' => 'http://bootstrapped.ventures/wp-recipe-maker/', - 'short_description' => 'The easy and user-friendly recipe plugin for everyone. Automatic JSON-LD metadata for food AND how-to…', - 'download_link' => 'https://downloads.wordpress.org/plugin/wp-recipe-maker.zip', - 'tags' => - array ( - 'cooking' => 'cooking', - 'food' => 'food', - 'ingredients' => 'ingredients', - 'recipe' => 'Recipe', - 'recipes' => 'recipes', - ), - 'donate_link' => 'https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QG7KZMGFU325Y', + 'short_description' => 'The easy and user-friendly recipe plugin for everyone. Automatic JSON-LD metadata for food AND how-to recipes will improve your SEO!', 'icons' => array ( '1x' => 'https://ps.w.org/wp-recipe-maker/assets/icon-128x128.png?rev=1491788', @@ -503,40 +157,8 @@ array ( 'name' => 'Slim SEO – Fast & Automated WordPress SEO Plugin', 'slug' => 'slim-seo', - 'version' => '3.10.2', - 'author' => 'eLightUp', - 'author_profile' => 'https://profiles.wordpress.org/rilwis', - 'requires' => '4.5', - 'tested' => '5.8.1', - 'requires_php' => '5.6', - 'rating' => 92, - 'ratings' => - array ( - 1 => 1, - 2 => 3, - 3 => 0, - 4 => 0, - 5 => 27, - ), - 'num_ratings' => 31, - 'support_threads' => 8, - 'support_threads_resolved' => 4, - 'active_installs' => 10000, - 'downloaded' => 180631, - 'last_updated' => '2021-09-27 6:47am GMT', - 'added' => '2018-12-31', 'homepage' => 'https://wpslimseo.com', 'short_description' => 'A full-featured SEO plugin for WordPress that's lightweight, blazing fast with minimum configuration. No bloats,…', - 'download_link' => 'https://downloads.wordpress.org/plugin/slim-seo.3.10.2.zip', - 'tags' => - array ( - 'google' => 'google', - 'schema' => 'schema', - 'search-engine-optimization' => 'search engine optimization', - 'seo' => 'seo', - 'sitemap' => 'sitemap', - ), - 'donate_link' => 'https://wpslimseo.com/pro/', 'icons' => array ( '1x' => 'https://ps.w.org/slim-seo/assets/icon.svg?rev=2005049', @@ -548,40 +170,8 @@ array ( 'name' => 'Schema & Structured Data for WP & AMP', 'slug' => 'schema-and-structured-data-for-wp', - 'version' => '1.9.86.1', - 'author' => 'Magazine3', - 'author_profile' => 'https://profiles.wordpress.org/magazine3', - 'requires' => '3.0', - 'tested' => '5.8.1', - 'requires_php' => false, - 'rating' => 94, - 'ratings' => - array ( - 1 => 13, - 2 => 1, - 3 => 2, - 4 => 10, - 5 => 185, - ), - 'num_ratings' => 211, - 'support_threads' => 34, - 'support_threads_resolved' => 11, - 'active_installs' => 80000, - 'downloaded' => 2466353, - 'last_updated' => '2021-10-20 2:42am GMT', - 'added' => '2018-08-06', 'homepage' => '', - 'short_description' => 'Schema & Structured Data for WP & AMP adds Google Rich Snippets markup according to Schema.org guidelines to structure your site for SEO.', - 'download_link' => 'https://downloads.wordpress.org/plugin/schema-and-structured-data-for-wp.1.9.86.1.zip', - 'tags' => - array ( - 'google-snippets' => 'google snippets', - 'rich-snippets' => 'rich snippets', - 'schema' => 'schema', - 'schema-org' => 'schema.org', - 'structured-data' => 'structured data', - ), - 'donate_link' => '', + 'short_description' => 'Schema & Structured Data for WP & AMP adds Google Rich Snippets markup according to…', 'icons' => array ( '1x' => 'https://ps.w.org/schema-and-structured-data-for-wp/assets/icon-128x128.png?rev=1922284', @@ -593,40 +183,8 @@ array ( 'name' => 'GenerateBlocks', 'slug' => 'generateblocks', - 'version' => '1.3.5', - 'author' => 'Tom Usborne', - 'author_profile' => 'https://profiles.wordpress.org/edge22', - 'requires' => '5.4', - 'tested' => '5.8.1', - 'requires_php' => '5.6', - 'rating' => 98, - 'ratings' => - array ( - 1 => 0, - 2 => 0, - 3 => 2, - 4 => 1, - 5 => 72, - ), - 'num_ratings' => 75, - 'support_threads' => 17, - 'support_threads_resolved' => 5, - 'active_installs' => 60000, - 'downloaded' => 255570, - 'last_updated' => '2021-07-19 6:12pm GMT', - 'added' => '2020-05-19', 'homepage' => 'https://generateblocks.com', 'short_description' => 'A small collection of lightweight WordPress blocks that can accomplish nearly anything.', - 'download_link' => 'https://downloads.wordpress.org/plugin/generateblocks.1.3.5.zip', - 'tags' => - array ( - 'blocks' => 'blocks', - 'container' => 'container', - 'grid' => 'grid', - 'gutenberg' => 'gutenberg', - 'headline' => 'headline', - ), - 'donate_link' => 'https://generateblocks.com', 'icons' => array ( '1x' => 'https://ps.w.org/generateblocks/assets/icon-128x128.png?rev=2336822', @@ -638,40 +196,8 @@ array ( 'name' => 'Blackhole for Bad Bots', 'slug' => 'blackhole-bad-bots', - 'version' => '3.2', - 'author' => 'Jeff Starr', - 'author_profile' => 'https://profiles.wordpress.org/specialk', - 'requires' => '4.1', - 'tested' => '5.8.1', - 'requires_php' => '5.6.20', - 'rating' => 98, - 'ratings' => - array ( - 1 => 2, - 2 => 0, - 3 => 3, - 4 => 2, - 5 => 108, - ), - 'num_ratings' => 115, - 'support_threads' => 7, - 'support_threads_resolved' => 7, - 'active_installs' => 30000, - 'downloaded' => 311747, - 'last_updated' => '2021-07-19 8:41pm GMT', - 'added' => '2016-02-18', 'homepage' => 'https://perishablepress.com/blackhole-bad-bots/', - 'short_description' => 'Blackhole is a WordPress security plugin that detects and traps bad bots in a virtual black hole, where they are denied access to your entire site.', - 'download_link' => 'https://downloads.wordpress.org/plugin/blackhole-bad-bots.3.2.zip', - 'tags' => - array ( - 'anti-spam' => 'anti-spam', - 'bad-bots' => 'bad bots', - 'blackhole' => 'blackhole', - 'honeypot' => 'honeypot', - 'security' => 'security', - ), - 'donate_link' => 'https://monzillamedia.com/donate.html', + 'short_description' => 'Blackhole is a WordPress security plugin that detects and traps bad bots in a virtual…', 'icons' => array ( '1x' => 'https://ps.w.org/blackhole-bad-bots/assets/icon-128x128.png?rev=1471215', @@ -683,40 +209,8 @@ array ( 'name' => 'Page View Count', 'slug' => 'page-views-count', - 'version' => '2.4.12', - 'author' => 'a3rev Software', - 'author_profile' => 'https://profiles.wordpress.org/a3rev', - 'requires' => '5.0', - 'tested' => '5.8.1', - 'requires_php' => false, - 'rating' => 78, - 'ratings' => - array ( - 1 => 8, - 2 => 5, - 3 => 2, - 4 => 3, - 5 => 30, - ), - 'num_ratings' => 48, - 'support_threads' => 4, - 'support_threads_resolved' => 0, - 'active_installs' => 20000, - 'downloaded' => 407980, - 'last_updated' => '2021-07-19 10:48am GMT', - 'added' => '2012-12-21', 'homepage' => '', - 'short_description' => 'Places an icon, all time views count and views today count at the bottom of posts, pages and custom post types on any WordPress website.', - 'download_link' => 'https://downloads.wordpress.org/plugin/page-views-count.2.4.12.zip', - 'tags' => - array ( - 'gutenberg' => 'gutenberg', - 'page-view-count' => 'page view count', - 'post-view-count' => 'post view count', - 'post-views' => 'post views', - 'wordpress-page-view' => 'wordpress page view', - ), - 'donate_link' => '', + 'short_description' => 'Places an icon, all time views count and views today count at the bottom of…', 'icons' => array ( '1x' => 'https://ps.w.org/page-views-count/assets/icon.svg?rev=986301', @@ -744,40 +238,8 @@ array ( 'name' => 'Newspack Newsletters', 'slug' => 'newspack-newsletters', - 'version' => '1.34.0', - 'author' => 'Automattic', - 'author_profile' => 'https://profiles.wordpress.org/automattic', - 'requires' => '5.3', - 'tested' => '5.8.0', - 'requires_php' => '5.6', - 'rating' => 0, - 'ratings' => - array ( - 1 => 0, - 2 => 0, - 3 => 0, - 4 => 0, - 5 => 0, - ), - 'num_ratings' => 0, - 'support_threads' => 1, - 'support_threads_resolved' => 1, - 'active_installs' => 600, - 'downloaded' => 3519, - 'last_updated' => '2021-10-19 8:03pm GMT', - 'added' => '2021-02-15', 'homepage' => 'https://newspack.pub', 'short_description' => 'Create email newsletters with the Gutenberg editor and distribute them with your Mailchimp or Constant…', - 'download_link' => 'https://downloads.wordpress.org/plugin/newspack-newsletters.zip', - 'tags' => - array ( - 'constant-contact' => 'constant contact', - 'mailchimp' => 'mailchimp', - 'newsletters' => 'newsletters', - 'newspack' => 'Newspack', - 'wordpress-com' => 'WordPress.com', - ), - 'donate_link' => '', 'icons' => array ( '1x' => 'https://ps.w.org/newspack-newsletters/assets/icon.svg?rev=2475195', @@ -790,40 +252,8 @@ array ( 'name' => 'Web Stories', 'slug' => 'web-stories', - 'version' => '1.13.0', - 'author' => 'Google', - 'author_profile' => 'https://profiles.wordpress.org/google', - 'requires' => '5.5', - 'tested' => '5.8.1', - 'requires_php' => '7.0', - 'rating' => 86, - 'ratings' => - array ( - 1 => 5, - 2 => 2, - 3 => 2, - 4 => 4, - 5 => 33, - ), - 'num_ratings' => 46, - 'support_threads' => 134, - 'support_threads_resolved' => 100, - 'active_installs' => 30000, - 'downloaded' => 383662, - 'last_updated' => '2021-10-12 10:17pm GMT', - 'added' => '2020-09-22', 'homepage' => 'https://wp.stories.google/', - 'short_description' => 'Web Stories are a visual storytelling format for the open web which immerses your readers in fast-loading, full-screen, and visually rich experiences.', - 'download_link' => 'https://downloads.wordpress.org/plugin/web-stories.1.13.0.zip', - 'tags' => - array ( - 'amp' => 'amp', - 'google' => 'google', - 'stories' => 'stories', - 'storytelling' => 'storytelling', - 'web-stories' => 'web stories', - ), - 'donate_link' => '', + 'short_description' => 'Web Stories are a visual storytelling format for the open web which immerses your readers…', 'icons' => array ( '1x' => 'https://ps.w.org/web-stories/assets/icon.svg?rev=2386543', @@ -836,40 +266,8 @@ array ( 'name' => 'Jetpack – WP Security, Backup, Speed, & Growth', 'slug' => 'jetpack', - 'version' => '10.2.1', - 'author' => 'Automattic', - 'author_profile' => 'https://profiles.wordpress.org/automattic', - 'requires' => '5.7', - 'tested' => '5.8.1', - 'requires_php' => '5.6', - 'rating' => 78, - 'ratings' => - array ( - 1 => 321, - 2 => 80, - 3 => 82, - 4 => 138, - 5 => 1032, - ), - 'num_ratings' => 1653, - 'support_threads' => 298, - 'support_threads_resolved' => 275, - 'active_installs' => 5000000, - 'downloaded' => 250091201, - 'last_updated' => '2021-10-19 3:50pm GMT', - 'added' => '2011-01-20', 'homepage' => 'https://jetpack.com', - 'short_description' => 'Improve your WP security with powerful one-click tools like backup and malware scan. Get essential…', - 'download_link' => 'https://downloads.wordpress.org/plugin/jetpack.10.2.1.zip', - 'tags' => - array ( - 'backup' => 'backup', - 'malware' => 'malware', - 'scan' => 'scan', - 'security' => 'security', - 'woo' => 'woo', - ), - 'donate_link' => '', + 'short_description' => 'Improve your WP security with powerful one-click tools like backup and malware scan. Get essential free tools including stats, CDN and social sharing.', 'icons' => array ( '1x' => 'https://ps.w.org/jetpack/assets/icon.svg?rev=2394525', @@ -882,40 +280,8 @@ array ( 'name' => 'Easy Notification Bar', 'slug' => 'easy-notification-bar', - 'version' => '1.4.3', - 'author' => 'WPExplorer', - 'author_profile' => 'https://profiles.wordpress.org/wpexplorer', - 'requires' => '5.2.0', - 'tested' => '5.8.1', - 'requires_php' => '5.6.2', - 'rating' => 82, - 'ratings' => - array ( - 1 => 0, - 2 => 1, - 3 => 1, - 4 => 1, - 5 => 4, - ), - 'num_ratings' => 7, - 'support_threads' => 5, - 'support_threads_resolved' => 3, - 'active_installs' => 4000, - 'downloaded' => 38350, - 'last_updated' => '2021-09-28 3:14am GMT', - 'added' => '2019-06-20', 'homepage' => 'https://wordpress.org/plugins/easy-notification-bar/', - 'short_description' => 'Easily add a custom top bar notification message to on your site with live customization options via the WordPress customizer.', - 'download_link' => 'https://downloads.wordpress.org/plugin/easy-notification-bar.zip', - 'tags' => - array ( - 'notice' => 'notice', - 'notice-bar' => 'notice bar', - 'notification' => 'notification', - 'notification-bar' => 'notification bar', - 'top-bar' => 'top bar', - ), - 'donate_link' => '', + 'short_description' => 'Easily add a custom top bar notification message to on your site with live customization…', 'icons' => array ( '1x' => 'https://ps.w.org/easy-notification-bar/assets/icon-128x128.png?rev=2515988', @@ -927,40 +293,8 @@ array ( 'name' => 'Antispam Bee', 'slug' => 'antispam-bee', - 'version' => '2.10.0', - 'author' => 'pluginkollektiv', - 'author_profile' => 'https://profiles.wordpress.org/pluginkollektiv', - 'requires' => '4.5', - 'tested' => '5.8.1', - 'requires_php' => '5.2', - 'rating' => 96, - 'ratings' => - array ( - 1 => 7, - 2 => 1, - 3 => 1, - 4 => 2, - 5 => 174, - ), - 'num_ratings' => 185, - 'support_threads' => 5, - 'support_threads_resolved' => 5, - 'active_installs' => 700000, - 'downloaded' => 5138783, - 'last_updated' => '2021-07-29 11:15am GMT', - 'added' => '2009-01-10', 'homepage' => 'https://antispambee.pluginkollektiv.org/', - 'short_description' => 'Antispam plugin with a sophisticated tool set for effective day to day comment and trackback…', - 'download_link' => 'https://downloads.wordpress.org/plugin/antispam-bee.2.10.0.zip', - 'tags' => - array ( - 'anti-spam' => 'anti-spam', - 'antispam' => 'antispam', - 'block-spam' => 'block spam', - 'comment' => 'comment', - 'comments' => 'comments', - ), - 'donate_link' => 'https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=TD4AMD2D8EMZW', + 'short_description' => 'Antispam plugin with a sophisticated tool set for effective day to day comment and trackback spam-fighting. Build with data protection and privacy in …', 'icons' => array ( '1x' => 'https://ps.w.org/antispam-bee/assets/icon-128x128.png?rev=977629', @@ -972,40 +306,8 @@ array ( 'name' => 'SimpleTOC – Table of Contents Block', 'slug' => 'simpletoc', - 'version' => '4.8', - 'author' => 'Marc Tönsing', - 'author_profile' => 'https://profiles.wordpress.org/marcdk', - 'requires' => '5.0', - 'tested' => '5.8.1', - 'requires_php' => false, - 'rating' => 100, - 'ratings' => - array ( - 1 => 0, - 2 => 0, - 3 => 0, - 4 => 0, - 5 => 24, - ), - 'num_ratings' => 24, - 'support_threads' => 5, - 'support_threads_resolved' => 4, - 'active_installs' => 2000, - 'downloaded' => 22220, - 'last_updated' => '2021-07-29 9:07pm GMT', - 'added' => '2020-04-14', 'homepage' => 'https://marc.tv/simpletoc-wordpress-inhaltsverzeichnis-plugin-gutenberg/', 'short_description' => 'Adds a custom Table of Contents Gutenberg block.', - 'download_link' => 'https://downloads.wordpress.org/plugin/simpletoc.4.8.zip', - 'tags' => - array ( - 'amp' => 'amp', - 'block' => 'block', - 'gutenberg' => 'gutenberg', - 'table-of-contents' => 'table of contents', - 'toc' => 'toc', - ), - 'donate_link' => 'https://marc.tv/out/donate', 'icons' => array ( '1x' => 'https://ps.w.org/simpletoc/assets/icon.svg?rev=2451408', @@ -1018,40 +320,8 @@ array ( 'name' => 'Log in with Google', 'slug' => 'login-with-google', - 'version' => '1.2.1', - 'author' => 'rtCamp', - 'author_profile' => 'https://profiles.wordpress.org/rtcamp', - 'requires' => '5.4.2', - 'tested' => '5.7.3', - 'requires_php' => '7.3', - 'rating' => 100, - 'ratings' => - array ( - 1 => 0, - 2 => 0, - 3 => 0, - 4 => 0, - 5 => 6, - ), - 'num_ratings' => 6, - 'support_threads' => 2, - 'support_threads_resolved' => 0, - 'active_installs' => 400, - 'downloaded' => 3461, - 'last_updated' => '2021-07-23 10:00pm GMT', - 'added' => '2020-10-01', 'homepage' => '', 'short_description' => 'Minimal plugin that allows WordPress users to log in using Google.', - 'download_link' => 'https://downloads.wordpress.org/plugin/login-with-google.1.2.1.zip', - 'tags' => - array ( - 'authentication' => 'authentication', - 'google-login' => 'Google Login', - 'oauth' => 'oauth', - 'sign-in' => 'sign in', - 'sso' => 'sso', - ), - 'donate_link' => 'https://rtcamp.com/', 'icons' => array ( '1x' => 'https://ps.w.org/login-with-google/assets/icon-128x128.png?rev=2402713', @@ -1063,40 +333,8 @@ array ( 'name' => 'Search with Google', 'slug' => 'search-with-google', - 'version' => '1.0', - 'author' => 'rtCamp', - 'author_profile' => 'https://profiles.wordpress.org/rtcamp', - 'requires' => '4.8', - 'tested' => '5.5.6', - 'requires_php' => '7.0', - 'rating' => 60, - 'ratings' => - array ( - 1 => 1, - 2 => 0, - 3 => 0, - 4 => 0, - 5 => 1, - ), - 'num_ratings' => 2, - 'support_threads' => 1, - 'support_threads_resolved' => 0, - 'active_installs' => 20, - 'downloaded' => 308, - 'last_updated' => '2020-10-19 5:28pm GMT', - 'added' => '2020-10-19', 'homepage' => '', 'short_description' => 'Replace WordPress default search with server-side rendered Google Custom Search results.', - 'download_link' => 'https://downloads.wordpress.org/plugin/search-with-google.zip', - 'tags' => - array ( - 'cse' => 'cse', - 'custom-search-engine' => 'custom search engine', - 'google' => 'google', - 'programmable-search' => 'programmable search', - 'search' => 'search', - ), - 'donate_link' => 'https://rtcamp.com/', 'icons' => array ( '1x' => 'https://ps.w.org/search-with-google/assets/icon-128x128.png?rev=2402707', @@ -1108,40 +346,8 @@ array ( 'name' => 'Page Builder Gutenberg Blocks – CoBlocks', 'slug' => 'coblocks', - 'version' => '2.18.0', - 'author' => 'GoDaddy', - 'author_profile' => 'https://profiles.wordpress.org/godaddy', - 'requires' => '5.0', - 'tested' => '5.8.1', - 'requires_php' => '5.6', - 'rating' => 88, - 'ratings' => - array ( - 1 => 7, - 2 => 3, - 3 => 4, - 4 => 5, - 5 => 63, - ), - 'num_ratings' => 82, - 'support_threads' => 15, - 'support_threads_resolved' => 2, - 'active_installs' => 500000, - 'downloaded' => 5816889, - 'last_updated' => '2021-10-20 6:56pm GMT', - 'added' => '2018-04-19', 'homepage' => '', 'short_description' => 'CoBlocks is a suite of page builder WordPress blocks for Gutenberg, with 10+ new blocks and a true page builder experience with rows and columns.', - 'download_link' => 'https://downloads.wordpress.org/plugin/coblocks.2.18.0.zip', - 'tags' => - array ( - 'blocks' => 'blocks', - 'gutenberg' => 'gutenberg', - 'gutenberg-blocks' => 'gutenberg blocks', - 'page-builder' => 'page builder', - 'wordpress-blocks' => 'wordpress blocks', - ), - 'donate_link' => '', 'icons' => array ( '1x' => 'https://ps.w.org/coblocks/assets/icon-128x128.jpg?rev=2243972', @@ -1153,40 +359,8 @@ array ( 'name' => 'Simple Author Box', 'slug' => 'simple-author-box', - 'version' => '2.42', - 'author' => 'WebFactory Ltd', - 'author_profile' => 'https://profiles.wordpress.org/webfactory', - 'requires' => '4.6', - 'tested' => '5.8.1', - 'requires_php' => '5.6', - 'rating' => 88, - 'ratings' => - array ( - 1 => 9, - 2 => 0, - 3 => 5, - 4 => 8, - 5 => 75, - ), - 'num_ratings' => 97, - 'support_threads' => 4, - 'support_threads_resolved' => 4, - 'active_installs' => 50000, - 'downloaded' => 910341, - 'last_updated' => '2021-08-13 8:08am GMT', - 'added' => '2014-08-08', 'homepage' => 'https://wpauthorbox.com/', - 'short_description' => 'Add a responsive author box with social icons to any post. Great author box for any site!', - 'download_link' => 'https://downloads.wordpress.org/plugin/simple-author-box.2.42.zip', - 'tags' => - array ( - 'author-bio' => 'author bio', - 'author-box' => 'author box', - 'author-profile-fields' => 'author profile fields', - 'author-social-icons' => 'author social icons', - 'responsive-author-box' => 'responsive author box', - ), - 'donate_link' => '', + 'short_description' => 'Add a responsive author box with social icons to any post. Great author box for…', 'icons' => array ( '1x' => 'https://ps.w.org/simple-author-box/assets/icon-128x128.jpg?rev=1821054', @@ -1197,40 +371,8 @@ array ( 'name' => 'Genesis Blocks', 'slug' => 'genesis-blocks', - 'version' => '1.3.0', - 'author' => 'StudioPress', - 'author_profile' => 'https://profiles.wordpress.org/studiopress', - 'requires' => '5.3', - 'tested' => '5.8.1', - 'requires_php' => '7.1', - 'rating' => 90, - 'ratings' => - array ( - 1 => 1, - 2 => 0, - 3 => 1, - 4 => 0, - 5 => 10, - ), - 'num_ratings' => 12, - 'support_threads' => 8, - 'support_threads_resolved' => 1, - 'active_installs' => 40000, - 'downloaded' => 238666, - 'last_updated' => '2021-09-23 6:49pm GMT', - 'added' => '2020-08-25', 'homepage' => 'https://studiopress.com/genesis-pro/', 'short_description' => 'A collection of content blocks, sections, & full-page layouts for the block editor.', - 'download_link' => 'https://downloads.wordpress.org/plugin/genesis-blocks.1.3.0.zip', - 'tags' => - array ( - 'blocks' => 'blocks', - 'editor' => 'editor', - 'gutenberg' => 'gutenberg', - 'gutenberg-blocks' => 'gutenberg blocks', - 'page-builder' => 'page builder', - ), - 'donate_link' => 'https://studiopress.com', 'icons' => array ( '1x' => 'https://ps.w.org/genesis-blocks/assets/icon-128x128.png?rev=2368839', @@ -1242,40 +384,8 @@ array ( 'name' => 'MathML Block', 'slug' => 'mathml-block', - 'version' => '1.2.1', - 'author' => 'adamsilverstein', - 'author_profile' => 'https://profiles.wordpress.org/adamsilverstein', - 'requires' => '5.0', - 'tested' => '5.8.1', - 'requires_php' => '5.6', - 'rating' => 90, - 'ratings' => - array ( - 1 => 0, - 2 => 0, - 3 => 0, - 4 => 1, - 5 => 1, - ), - 'num_ratings' => 2, - 'support_threads' => 1, - 'support_threads_resolved' => 0, - 'active_installs' => 500, - 'downloaded' => 8202, - 'last_updated' => '2021-09-11 2:30pm GMT', - 'added' => '2018-12-28', 'homepage' => '', 'short_description' => 'A MathML block for the WordPress block editor (Gutenberg).', - 'download_link' => 'https://downloads.wordpress.org/plugin/mathml-block.zip', - 'tags' => - array ( - 'block' => 'block', - 'block-editor' => 'block-editor', - 'gutenberg' => 'gutenberg', - 'math' => 'math', - 'mathml' => 'mathml', - ), - 'donate_link' => '', 'icons' => array ( '1x' => 'https://ps.w.org/mathml-block/assets/icon-128x128.png?rev=2002452', @@ -1287,40 +397,8 @@ array ( 'name' => 'Calculated Fields Form', 'slug' => 'calculated-fields-form', - 'version' => '1.1.31', - 'author' => 'CodePeople', - 'author_profile' => 'https://profiles.wordpress.org/codepeople', - 'requires' => '3.0.5', - 'tested' => '5.8.1', - 'requires_php' => false, - 'rating' => 96, - 'ratings' => - array ( - 1 => 20, - 2 => 2, - 3 => 4, - 4 => 27, - 5 => 687, - ), - 'num_ratings' => 740, - 'support_threads' => 106, - 'support_threads_resolved' => 105, - 'active_installs' => 60000, - 'downloaded' => 3659853, - 'last_updated' => '2021-10-20 11:31am GMT', - 'added' => '2013-03-12', 'homepage' => 'https://cff.dwbooster.com', 'short_description' => 'Calculated Fields Form allows you to create both simple and rich forms, quickly like a…', - 'download_link' => 'https://downloads.wordpress.org/plugin/calculated-fields-form.zip', - 'tags' => - array ( - 'calculator' => 'calculator', - 'contact-form' => 'contact form', - 'form' => 'form', - 'form-builder' => 'form builder', - 'quote-form' => 'quote form', - ), - 'donate_link' => 'http://cff.dwbooster.com', 'icons' => array ( '1x' => 'https://ps.w.org/calculated-fields-form/assets/icon-128x128.jpg?rev=1734377', @@ -1332,40 +410,8 @@ array ( 'name' => 'All in One SEO – Best WordPress SEO Plugin – Easily Improve SEO Rankings & Increase Traffic', 'slug' => 'all-in-one-seo-pack', - 'version' => '4.1.4.4', - 'author' => 'All in One SEO Team', - 'author_profile' => 'https://profiles.wordpress.org/smub', - 'requires' => '4.9', - 'tested' => '5.8.1', - 'requires_php' => '5.4', - 'rating' => 92, - 'ratings' => - array ( - 1 => 166, - 2 => 22, - 3 => 15, - 4 => 60, - 5 => 1572, - ), - 'num_ratings' => 1835, - 'support_threads' => 133, - 'support_threads_resolved' => 126, - 'active_installs' => 2000000, - 'downloaded' => 86071844, - 'last_updated' => '2021-09-22 3:46pm GMT', - 'added' => '2007-03-30', 'homepage' => 'https://aioseo.com/', 'short_description' => 'The original WordPress SEO plugin. Improve your WordPress SEO rankings and traffic with our comprehensive SEO tools and smart SEO optimizations.', - 'download_link' => 'https://downloads.wordpress.org/plugin/all-in-one-seo-pack.4.1.4.4.zip', - 'tags' => - array ( - 'google-search-console' => 'google search console', - 'meta-description' => 'meta description', - 'schema' => 'schema', - 'seo' => 'seo', - 'xml-sitemap' => 'xml sitemap', - ), - 'donate_link' => '', 'icons' => array ( '1x' => 'https://ps.w.org/all-in-one-seo-pack/assets/icon.svg?rev=2443290', @@ -1378,40 +424,8 @@ array ( 'name' => 'Weglot Translate – Translate your WordPress website and go multilingual', 'slug' => 'weglot', - 'version' => '3.4', - 'author' => 'Weglot Translate team', - 'author_profile' => 'https://profiles.wordpress.org/remyb92', - 'requires' => '4.5', - 'tested' => '5.8.1', - 'requires_php' => '5.6', - 'rating' => 96, - 'ratings' => - array ( - 1 => 40, - 2 => 7, - 3 => 6, - 4 => 27, - 5 => 1226, - ), - 'num_ratings' => 1306, - 'support_threads' => 5, - 'support_threads_resolved' => 4, - 'active_installs' => 40000, - 'downloaded' => 1241835, - 'last_updated' => '2021-09-24 3:41pm GMT', - 'added' => '2015-09-27', 'homepage' => 'http://wordpress.org/plugins/weglot/', 'short_description' => 'Translate your WordPress website in 110+ languages within minutes with Weglot Translate, without any coding.', - 'download_link' => 'https://downloads.wordpress.org/plugin/weglot.3.4.zip', - 'tags' => - array ( - 'language' => 'language', - 'localization' => 'localization', - 'multilingual' => 'multilingual', - 'translate' => 'translate', - 'translation' => 'translation', - ), - 'donate_link' => '', 'icons' => array ( '1x' => 'https://ps.w.org/weglot/assets/icon-128x128.png?rev=2186774', @@ -1423,40 +437,8 @@ array ( 'name' => 'Rank Math SEO – Best SEO Plugin For WordPress To Increase Your SEO Traffic', 'slug' => 'seo-by-rank-math', - 'version' => '1.0.74', - 'author' => 'Rank Math', - 'author_profile' => 'https://profiles.wordpress.org/rankmath', - 'requires' => '5.6', - 'tested' => '5.8.1', - 'requires_php' => '7.2', - 'rating' => 98, - 'ratings' => - array ( - 1 => 75, - 2 => 17, - 3 => 21, - 4 => 53, - 5 => 3563, - ), - 'num_ratings' => 3729, - 'support_threads' => 126, - 'support_threads_resolved' => 119, - 'active_installs' => 1000000, - 'downloaded' => 21567612, - 'last_updated' => '2021-10-13 8:38am GMT', - 'added' => '2018-11-19', 'homepage' => 'https://s.rankmath.com/home', - 'short_description' => 'Rank Math SEO is the Best WordPress SEO plugin combines the features of many SEO tools in a single package & helps you multiply your SEO traffic.', - 'download_link' => 'https://downloads.wordpress.org/plugin/seo-by-rank-math.1.0.74.zip', - 'tags' => - array ( - 'google-search-console' => 'google search console', - 'redirection' => 'redirection', - 'schema' => 'schema', - 'seo' => 'seo', - 'sitemap' => 'sitemap', - ), - 'donate_link' => '', + 'short_description' => 'Rank Math SEO is the Best WordPress SEO plugin combines the features of many SEO…', 'icons' => array ( '1x' => 'https://ps.w.org/seo-by-rank-math/assets/icon.svg?rev=2348086', @@ -1469,40 +451,8 @@ array ( 'name' => 'Head, Footer and Post Injections', 'slug' => 'header-footer', - 'version' => '3.2.2', - 'author' => 'Stefano Lissa', - 'author_profile' => 'https://profiles.wordpress.org/satollo', - 'requires' => '4.0', - 'tested' => '5.7.3', - 'requires_php' => '5.6', - 'rating' => 98, - 'ratings' => - array ( - 1 => 3, - 2 => 2, - 3 => 4, - 4 => 13, - 5 => 627, - ), - 'num_ratings' => 649, - 'support_threads' => 1, - 'support_threads_resolved' => 0, - 'active_installs' => 300000, - 'downloaded' => 2809693, - 'last_updated' => '2021-03-17 1:26pm GMT', - 'added' => '2008-04-07', 'homepage' => 'https://www.satollo.net/plugins/header-footer', - 'short_description' => 'Header and Footer plugin let you to add html code to the head and footer sections of your blog... and more!', - 'download_link' => 'https://downloads.wordpress.org/plugin/header-footer.3.2.2.zip', - 'tags' => - array ( - 'blog' => 'blog', - 'footer' => 'footer', - 'header' => 'header', - 'page' => 'page', - 'single' => 'single', - ), - 'donate_link' => 'http://www.satollo.net/donations', + 'short_description' => 'Header and Footer plugin let you to add html code to the head and footer…', 'icons' => array ( '1x' => 'https://ps.w.org/header-footer/assets/icon-256x256.png?rev=1064219', @@ -1529,40 +479,8 @@ array ( 'name' => 'Statify', 'slug' => 'statify', - 'version' => '1.8.3', - 'author' => 'pluginkollektiv', - 'author_profile' => 'https://profiles.wordpress.org/pluginkollektiv', - 'requires' => '4.7', - 'tested' => '5.8.1', - 'requires_php' => '5.2', - 'rating' => 94, - 'ratings' => - array ( - 1 => 2, - 2 => 0, - 3 => 0, - 4 => 3, - 5 => 33, - ), - 'num_ratings' => 38, - 'support_threads' => 2, - 'support_threads_resolved' => 1, - 'active_installs' => 200000, - 'downloaded' => 1525226, - 'last_updated' => '2021-07-17 8:46am GMT', - 'added' => '2011-03-16', 'homepage' => 'https://statify.pluginkollektiv.org/', 'short_description' => 'Visitor statistics for WordPress with focus on data protection, transparency and clarity. Perfect as a widget in your WordPress Dashboard.', - 'download_link' => 'https://downloads.wordpress.org/plugin/statify.1.8.3.zip', - 'tags' => - array ( - 'analytics' => 'analytics', - 'dashboard' => 'dashboard', - 'pageviews' => 'pageviews', - 'privacy' => 'privacy', - 'statistics' => 'statistics', - ), - 'donate_link' => 'https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=TD4AMD2D8EMZW', 'icons' => array ( '1x' => 'https://ps.w.org/statify/assets/icon-128x128.png?rev=2355063', @@ -1574,40 +492,8 @@ array ( 'name' => 'LIQUID BLOCKS GALLERY 37+ Free Designs', 'slug' => 'liquid-blocks', - 'version' => '1.1.1', - 'author' => 'LIQUID DESIGN Ltd.', - 'author_profile' => 'https://profiles.wordpress.org/lqd', - 'requires' => '5.2', - 'tested' => '5.8.1', - 'requires_php' => false, - 'rating' => 100, - 'ratings' => - array ( - 1 => 0, - 2 => 0, - 3 => 0, - 4 => 0, - 5 => 1, - ), - 'num_ratings' => 1, - 'support_threads' => 1, - 'support_threads_resolved' => 0, - 'active_installs' => 4000, - 'downloaded' => 21097, - 'last_updated' => '2021-07-22 6:55am GMT', - 'added' => '2019-10-18', 'homepage' => 'https://lqd.jp/wp/plugin.html', 'short_description' => 'If you’re looking to create block page sections that look great give LIQUID BLOCKS a…', - 'download_link' => 'https://downloads.wordpress.org/plugin/liquid-blocks.zip', - 'tags' => - array ( - 'block' => 'block', - 'block-editor' => 'block-editor', - 'blocks' => 'blocks', - 'editor' => 'editor', - 'gutenberg' => 'gutenberg', - ), - 'donate_link' => 'https://lqd.jp/wp/plugin.html', 'icons' => array ( '1x' => 'https://ps.w.org/liquid-blocks/assets/icon-128x128.png?rev=2175390', @@ -1618,40 +504,8 @@ array ( 'name' => 'Schema', 'slug' => 'schema', - 'version' => '1.7.9.3', - 'author' => 'Hesham', - 'author_profile' => 'https://profiles.wordpress.org/hishaman', - 'requires' => '4.0', - 'tested' => '5.8.1', - 'requires_php' => '5.4', - 'rating' => 90, - 'ratings' => - array ( - 1 => 15, - 2 => 6, - 3 => 4, - 4 => 8, - 5 => 163, - ), - 'num_ratings' => 196, - 'support_threads' => 8, - 'support_threads_resolved' => 1, - 'active_installs' => 60000, - 'downloaded' => 1110498, - 'last_updated' => '2021-10-13 3:10pm GMT', - 'added' => '2016-05-11', 'homepage' => 'https://schema.press', 'short_description' => 'Get the next generation of Schema Structured Data to enhance your WordPress site presentation in Google search results.', - 'download_link' => 'https://downloads.wordpress.org/plugin/schema.zip', - 'tags' => - array ( - 'json-ld' => 'JSON-LD', - 'rich-snippets' => 'rich snippets', - 'schema' => 'schema', - 'schema-org' => 'schema.org', - 'structured-data' => 'structured data', - ), - 'donate_link' => 'https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=NGVUBT2QXN7YL', 'icons' => array ( '1x' => 'https://ps.w.org/schema/assets/icon-128x128.png?rev=1750172', @@ -1663,40 +517,8 @@ array ( 'name' => 'Iframely – rich media embeds for 2000+ publishers', 'slug' => 'iframely', - 'version' => '0.7.2', - 'author' => 'Itteco Corp.', - 'author_profile' => 'https://profiles.wordpress.org/ivanp', - 'requires' => '3.5.1', - 'tested' => '5.4.7', - 'requires_php' => false, - 'rating' => 80, - 'ratings' => - array ( - 1 => 2, - 2 => 0, - 3 => 1, - 4 => 0, - 5 => 7, - ), - 'num_ratings' => 10, - 'support_threads' => 2, - 'support_threads_resolved' => 1, - 'active_installs' => 3000, - 'downloaded' => 97566, - 'last_updated' => '2020-05-22 5:21pm GMT', - 'added' => '2013-10-03', 'homepage' => 'http://wordpress.org/plugins/iframely/', 'short_description' => 'Iframely extends WordPress default rich media embeds and adds support of over 2000 more providers…', - 'download_link' => 'https://downloads.wordpress.org/plugin/iframely.zip', - 'tags' => - array ( - 'embed' => 'embed', - 'embed-code' => 'embed code', - 'iframely' => 'iframely', - 'oembed' => 'oembed', - 'responsive' => 'responsive', - ), - 'donate_link' => '', 'icons' => array ( 'default' => 'https://s.w.org/plugins/geopattern-icon/iframely.svg', @@ -1707,40 +529,8 @@ array ( 'name' => 'Pym.js Embeds', 'slug' => 'pym-shortcode', - 'version' => '1.3.2.4', - 'author' => 'INN Labs', - 'author_profile' => 'https://profiles.wordpress.org/automattic', - 'requires' => '3.0.1', - 'tested' => '5.4.7', - 'requires_php' => '5.3', - 'rating' => 0, - 'ratings' => - array ( - 1 => 0, - 2 => 0, - 3 => 0, - 4 => 0, - 5 => 0, - ), - 'num_ratings' => 0, - 'support_threads' => 1, - 'support_threads_resolved' => 0, - 'active_installs' => 100, - 'downloaded' => 2353, - 'last_updated' => '2020-03-26 6:09pm GMT', - 'added' => '2016-06-17', 'homepage' => 'https://github.com/INN/pym-shortcode', - 'short_description' => 'A WordPress block and shortcode for embedding iframes that are responsive horizontally and vertically, using…', - 'download_link' => 'https://downloads.wordpress.org/plugin/pym-shortcode.1.3.2.4.zip', - 'tags' => - array ( - 'embeds' => 'Embeds', - 'iframe' => 'iframe', - 'javascript' => 'javascript', - 'responsive' => 'responsive', - 'shortcode' => 'shortcode', - ), - 'donate_link' => 'https://inn.org/donate', + 'short_description' => 'A WordPress block and shortcode for embedding iframes that are responsive horizontally and vertically, using the NPR Visuals Team's Pym.js.', 'icons' => array ( '1x' => 'https://ps.w.org/pym-shortcode/assets/icon.svg?rev=1944461', @@ -1752,40 +542,8 @@ array ( 'name' => 'PWA', 'slug' => 'pwa', - 'version' => '0.6.0', - 'author' => 'PWA Plugin Contributors', - 'author_profile' => 'https://profiles.wordpress.org/westonruter', - 'requires' => '5.5', - 'tested' => '5.8.1', - 'requires_php' => '5.6', - 'rating' => 86, - 'ratings' => - array ( - 1 => 3, - 2 => 0, - 3 => 0, - 4 => 0, - 5 => 13, - ), - 'num_ratings' => 16, - 'support_threads' => 11, - 'support_threads_resolved' => 6, - 'active_installs' => 40000, - 'downloaded' => 301949, - 'last_updated' => '2021-09-21 7:17pm GMT', - 'added' => '2018-07-12', 'homepage' => 'https://github.com/GoogleChromeLabs/pwa-wp', 'short_description' => 'WordPress feature plugin to bring Progressive Web App (PWA) capabilities to Core', - 'download_link' => 'https://downloads.wordpress.org/plugin/pwa.0.6.0.zip', - 'tags' => - array ( - 'https' => 'https', - 'progressive-web-apps' => 'progressive web apps', - 'pwa' => 'pwa', - 'service-workers' => 'service-workers.', - 'web-app-manifest' => 'web app manifest', - ), - 'donate_link' => '', 'icons' => array ( '1x' => 'https://ps.w.org/pwa/assets/icon.svg?rev=1908485', @@ -1798,40 +556,8 @@ array ( 'name' => 'MC4WP: Mailchimp for WordPress', 'slug' => 'mailchimp-for-wp', - 'version' => '4.8.6', - 'author' => 'ibericode', - 'author_profile' => 'https://profiles.wordpress.org/dvankooten', - 'requires' => '4.6', - 'tested' => '5.8.1', - 'requires_php' => '5.3', - 'rating' => 96, - 'ratings' => - array ( - 1 => 36, - 2 => 10, - 3 => 16, - 4 => 35, - 5 => 1286, - ), - 'num_ratings' => 1383, - 'support_threads' => 31, - 'support_threads_resolved' => 30, - 'active_installs' => 2000000, - 'downloaded' => 36079873, - 'last_updated' => '2021-08-04 7:14am GMT', - 'added' => '2013-06-19', 'homepage' => 'https://www.mc4wp.com/#utm_source=wp-plugin&utm_medium=mailchimp-for-wp&utm_campaign=plugins-page', 'short_description' => 'Mailchimp for WordPress, the #1 unofficial Mailchimp plugin.', - 'download_link' => 'https://downloads.wordpress.org/plugin/mailchimp-for-wp.4.8.6.zip', - 'tags' => - array ( - 'email' => 'email', - 'mailchimp' => 'mailchimp', - 'marketing' => 'marketing', - 'mc4wp' => 'mc4wp', - 'newsletter' => 'newsletter', - ), - 'donate_link' => 'https://www.mc4wp.com/#utm_source=wp-plugin-repo&utm_medium=mailchimp-for-wp&utm_campaign=donate-link', 'icons' => array ( '1x' => 'https://ps.w.org/mailchimp-for-wp/assets/icon-128x128.png?rev=1224577', @@ -1874,40 +600,8 @@ array ( 'name' => 'Advanced Ads – Ad Manager & AdSense', 'slug' => 'advanced-ads', - 'version' => '1.29.1', - 'author' => 'Thomas Maier, Advanced Ads GmbH', - 'author_profile' => 'https://profiles.wordpress.org/webzunft', - 'requires' => '4.9', - 'tested' => '5.8.1', - 'requires_php' => '5.6', - 'rating' => 98, - 'ratings' => - array ( - 1 => 17, - 2 => 1, - 3 => 9, - 4 => 21, - 5 => 1195, - ), - 'num_ratings' => 1243, - 'support_threads' => 71, - 'support_threads_resolved' => 66, - 'active_installs' => 100000, - 'downloaded' => 5347793, - 'last_updated' => '2021-10-14 10:40am GMT', - 'added' => '2014-06-23', 'homepage' => 'https://wpadvancedads.com', - 'short_description' => 'Manage and optimize all ad types. Support for Google AdSense Auto ads, Amazon, image banners,…', - 'download_link' => 'https://downloads.wordpress.org/plugin/advanced-ads.1.29.1.zip', - 'tags' => - array ( - 'ad-manager' => 'ad manager', - 'ad-rotation' => 'ad rotation', - 'ads' => 'ads', - 'adsense' => 'adsense', - 'banner' => 'banner', - ), - 'donate_link' => '', + 'short_description' => 'Manage and optimize all ad types. Support for Google AdSense Auto ads, Amazon, image banners, HTML, page builder, ad widget, ad rotations, ads.txt', 'icons' => array ( '1x' => 'https://ps.w.org/advanced-ads/assets/icon-128x128.gif?rev=2293174', @@ -1919,40 +613,8 @@ array ( 'name' => 'Syntax-highlighting Code Block (with Server-side Rendering)', 'slug' => 'syntax-highlighting-code-block', - 'version' => '1.3.1', - 'author' => 'Weston Ruter', - 'author_profile' => 'https://profiles.wordpress.org/westonruter', - 'requires' => '5.5', - 'tested' => '5.8.1', - 'requires_php' => '5.6', - 'rating' => 100, - 'ratings' => - array ( - 1 => 0, - 2 => 0, - 3 => 0, - 4 => 0, - 5 => 18, - ), - 'num_ratings' => 18, - 'support_threads' => 3, - 'support_threads_resolved' => 2, - 'active_installs' => 1000, - 'downloaded' => 12496, - 'last_updated' => '2021-09-21 7:11pm GMT', - 'added' => '2019-07-30', 'homepage' => 'https://github.com/westonruter/syntax-highlighting-code-block', 'short_description' => 'Extending the Code block with syntax highlighting rendered on the server, thus being AMP-compatible and…', - 'download_link' => 'https://downloads.wordpress.org/plugin/syntax-highlighting-code-block.1.3.1.zip', - 'tags' => - array ( - 'block' => 'block', - 'code' => 'code', - 'code-highlighting' => 'code highlighting', - 'code-syntax' => 'code syntax', - 'syntax-highlight' => 'syntax highlight', - ), - 'donate_link' => '', 'icons' => array ( '1x' => 'https://ps.w.org/syntax-highlighting-code-block/assets/icon.svg?rev=2131108', @@ -1965,40 +627,8 @@ array ( 'name' => 'Contact Form by WPForms – Drag & Drop Form Builder for WordPress', 'slug' => 'wpforms-lite', - 'version' => '1.7.0', - 'author' => 'WPForms', - 'author_profile' => 'https://profiles.wordpress.org/jaredatch', - 'requires' => '4.9', - 'tested' => '5.8.1', - 'requires_php' => '5.5', - 'rating' => 98, - 'ratings' => - array ( - 1 => 218, - 2 => 47, - 3 => 57, - 4 => 226, - 5 => 9831, - ), - 'num_ratings' => 10379, - 'support_threads' => 91, - 'support_threads_resolved' => 74, - 'active_installs' => 5000000, - 'downloaded' => 84795141, - 'last_updated' => '2021-10-07 11:02am GMT', - 'added' => '2016-03-14', 'homepage' => 'https://wpforms.com', 'short_description' => 'The best WordPress contact form plugin. Drag & Drop online form builder that helps you create beautiful contact forms with just a few clicks.', - 'download_link' => 'https://downloads.wordpress.org/plugin/wpforms-lite.1.7.0.zip', - 'tags' => - array ( - 'contact-form' => 'contact form', - 'contact-form-plugin' => 'contact form plugin', - 'custom-form' => 'custom form', - 'form-builder' => 'form builder', - 'forms' => 'forms', - ), - 'donate_link' => '', 'icons' => array ( '1x' => 'https://ps.w.org/wpforms-lite/assets/icon.svg?rev=2574198', @@ -2011,40 +641,8 @@ array ( 'name' => 'MonsterInsights – Google Analytics Dashboard for WordPress (Website Stats Made Easy)', 'slug' => 'google-analytics-for-wordpress', - 'version' => '8.1.0', - 'author' => 'MonsterInsights', - 'author_profile' => 'https://profiles.wordpress.org/chriscct7', - 'requires' => '4.8.0', - 'tested' => '5.8.1', - 'requires_php' => '5.5', - 'rating' => 92, - 'ratings' => - array ( - 1 => 194, - 2 => 39, - 3 => 35, - 4 => 77, - 5 => 2104, - ), - 'num_ratings' => 2449, - 'support_threads' => 11, - 'support_threads_resolved' => 9, - 'active_installs' => 3000000, - 'downloaded' => 101860874, - 'last_updated' => '2021-09-30 7:56am GMT', - 'added' => '2007-09-14', 'homepage' => 'https://www.monsterinsights.com/?utm_source=liteplugin&utm_medium=pluginheader&utm_campaign=pluginurl&utm_content=7%2E0%2E0', 'short_description' => 'The best free Google Analytics plugin for WordPress. See how visitors find and use your website, so you can grow your business.', - 'download_link' => 'https://downloads.wordpress.org/plugin/google-analytics-for-wordpress.8.1.0.zip', - 'tags' => - array ( - 'google-analytics' => 'google analytics', - 'google-analytics-dashboard' => 'google analytics dashboard', - 'google-analytics-widget' => 'google analytics widget', - 'woocommerce-stats' => 'WooCommerce stats', - 'wordpress-analytics' => 'WordPress analytics', - ), - 'donate_link' => 'http://www.wpbeginner.com/wpbeginner-needs-your-help/', 'icons' => array ( '1x' => 'https://ps.w.org/google-analytics-for-wordpress/assets/icon.svg?rev=1598927', @@ -2057,40 +655,8 @@ array ( 'name' => 'Atomic Blocks – Gutenberg Blocks Collection', 'slug' => 'atomic-blocks', - 'version' => '2.9.0', - 'author' => 'atomicblocks', - 'author_profile' => 'https://profiles.wordpress.org/atomicblocks', - 'requires' => '5.3', - 'tested' => '5.5.6', - 'requires_php' => '5.6', - 'rating' => 86, - 'ratings' => - array ( - 1 => 5, - 2 => 0, - 3 => 1, - 4 => 6, - 5 => 31, - ), - 'num_ratings' => 43, - 'support_threads' => 1, - 'support_threads_resolved' => 0, - 'active_installs' => 40000, - 'downloaded' => 999902, - 'last_updated' => '2020-10-28 4:53pm GMT', - 'added' => '2018-03-26', 'homepage' => 'https://atomicblocks.com', 'short_description' => 'A collection of beautiful, customizable Gutenberg blocks for the new block editor.', - 'download_link' => 'https://downloads.wordpress.org/plugin/atomic-blocks.2.9.0.zip', - 'tags' => - array ( - 'blocks' => 'blocks', - 'editor' => 'editor', - 'gutenberg' => 'gutenberg', - 'gutenberg-blocks' => 'gutenberg blocks', - 'page-builder' => 'page builder', - ), - 'donate_link' => 'https://atomicblocks.com', 'icons' => array ( '1x' => 'https://ps.w.org/atomic-blocks/assets/icon-128x128.jpg?rev=1914920', @@ -2102,40 +668,8 @@ array ( 'name' => 'Akismet Spam Protection', 'slug' => 'akismet', - 'version' => '4.2.1', - 'author' => 'Automattic', - 'author_profile' => 'https://profiles.wordpress.org/automattic', - 'requires' => '5.0', - 'tested' => '5.8.1', - 'requires_php' => false, - 'rating' => 94, - 'ratings' => - array ( - 1 => 40, - 2 => 10, - 3 => 13, - 4 => 45, - 5 => 815, - ), - 'num_ratings' => 923, - 'support_threads' => 13, - 'support_threads_resolved' => 8, - 'active_installs' => 5000000, - 'downloaded' => 221385630, - 'last_updated' => '2021-10-01 6:28pm GMT', - 'added' => '2005-10-20', 'homepage' => 'https://akismet.com/', 'short_description' => 'The best anti-spam protection to block spam comments and spam in a contact form. The most trusted antispam solution for WordPress and WooCommerce.', - 'download_link' => 'https://downloads.wordpress.org/plugin/akismet.4.2.1.zip', - 'tags' => - array ( - 'anti-spam' => 'anti-spam', - 'antispam' => 'antispam', - 'comments' => 'comments', - 'contact-form' => 'contact form', - 'spam' => 'spam', - ), - 'donate_link' => '', 'icons' => array ( '1x' => 'https://ps.w.org/akismet/assets/icon-128x128.png?rev=969272', @@ -2147,40 +681,8 @@ array ( 'name' => 'WP GDPR Cookie Notice', 'slug' => 'wp-gdpr-cookie-notice', - 'version' => '1.0.0-rc.1', - 'author' => 'Felix Arntz', - 'author_profile' => 'https://profiles.wordpress.org/flixos90', - 'requires' => '4.9.6', - 'tested' => '5.7.3', - 'requires_php' => '7.0', - 'rating' => 76, - 'ratings' => - array ( - 1 => 4, - 2 => 0, - 3 => 0, - 4 => 0, - 5 => 9, - ), - 'num_ratings' => 13, - 'support_threads' => 1, - 'support_threads_resolved' => 0, - 'active_installs' => 700, - 'downloaded' => 6164, - 'last_updated' => '2021-04-02 11:51pm GMT', - 'added' => '2019-03-01', 'homepage' => 'https://wordpress.org/plugins/wp-gdpr-cookie-notice/', 'short_description' => 'Simple performant cookie consent notice that supports AMP, Web Stories, granular cookie control and live…', - 'download_link' => 'https://downloads.wordpress.org/plugin/wp-gdpr-cookie-notice.1.0.0-rc.1.zip', - 'tags' => - array ( - 'amp' => 'amp', - 'cookie-consent' => 'cookie consent', - 'cookie-notice' => 'cookie notice', - 'gdpr' => 'GDPR', - 'web-stories' => 'web stories', - ), - 'donate_link' => '', 'icons' => array ( '1x' => 'https://ps.w.org/wp-gdpr-cookie-notice/assets/icon-128x128.png?rev=2042024', @@ -2192,40 +694,8 @@ array ( 'name' => 'WordPress Share Buttons Plugin – AddThis', 'slug' => 'addthis', - 'version' => '6.2.6', - 'author' => 'The AddThis Team', - 'author_profile' => 'https://profiles.wordpress.org/arnavarro', - 'requires' => '3.0', - 'tested' => '5.2.12', - 'requires_php' => false, - 'rating' => 84, - 'ratings' => - array ( - 1 => 75, - 2 => 25, - 3 => 22, - 4 => 46, - 5 => 444, - ), - 'num_ratings' => 612, - 'support_threads' => 1, - 'support_threads_resolved' => 0, - 'active_installs' => 100000, - 'downloaded' => 5078017, - 'last_updated' => '2019-07-10 5:19pm GMT', - 'added' => '2008-12-23', 'homepage' => 'https://wordpress.org/plugins/addthis/', - 'short_description' => 'Now compatible with the AMP Plugin! Free Share Buttons from AddThis. Share to Messenger, WhatsApp,…', - 'download_link' => 'https://downloads.wordpress.org/plugin/addthis.6.2.6.zip', - 'tags' => - array ( - 'share-buttons' => 'share buttons', - 'social' => 'social', - 'social-marketing' => 'Social Marketing', - 'social-share' => 'social share', - 'social-sharing' => 'social sharing', - ), - 'donate_link' => '', + 'short_description' => 'Now compatible with the AMP Plugin! Free Share Buttons from AddThis. Share to Messenger, WhatsApp, Facebook, Twitter, Pinterest and many more.', 'icons' => array ( '1x' => 'https://ps.w.org/addthis/assets/icon-128x128.png?rev=1223867', @@ -2237,40 +707,8 @@ array ( 'name' => 'BigCommerce For WordPress', 'slug' => 'bigcommerce', - 'version' => '4.19.0', - 'author' => 'BigCommerce', - 'author_profile' => 'https://profiles.wordpress.org/bigcommerce', - 'requires' => '5.2', - 'tested' => '5.8.1', - 'requires_php' => '7.4.0', - 'rating' => 80, - 'ratings' => - array ( - 1 => 8, - 2 => 1, - 3 => 0, - 4 => 3, - 5 => 27, - ), - 'num_ratings' => 39, - 'support_threads' => 8, - 'support_threads_resolved' => 1, - 'active_installs' => 1000, - 'downloaded' => 61140, - 'last_updated' => '2021-10-20 1:43pm GMT', - 'added' => '2018-11-16', 'homepage' => '', - 'short_description' => 'Scale your ecommerce business with WordPress on the front-end and BigCommerce on the back end. Free up server resources from things like catalog manag …', - 'download_link' => 'https://downloads.wordpress.org/plugin/bigcommerce.4.19.0.zip', - 'tags' => - array ( - 'ecommerce' => 'ecommerce', - 'online-store' => 'online store', - 'retail' => 'retail', - 'sell-online' => 'sell online', - 'storefront' => 'storefront', - ), - 'donate_link' => '', + 'short_description' => 'Scale your ecommerce business with WordPress on the front-end and BigCommerce on the back end.…', 'icons' => array ( '1x' => 'https://ps.w.org/bigcommerce/assets/icon-256x256.png?rev=2141502', @@ -2282,40 +720,8 @@ array ( 'name' => 'Yoast SEO', 'slug' => 'wordpress-seo', - 'version' => '17.4', - 'author' => 'Team Yoast', - 'author_profile' => 'https://profiles.wordpress.org/joostdevalk', - 'requires' => '5.6', - 'tested' => '5.8.1', - 'requires_php' => '5.6.20', - 'rating' => 96, - 'ratings' => - array ( - 1 => 722, - 2 => 125, - 3 => 175, - 4 => 619, - 5 => 25763, - ), - 'num_ratings' => 27404, - 'support_threads' => 497, - 'support_threads_resolved' => 439, - 'active_installs' => 5000000, - 'downloaded' => 367252970, - 'last_updated' => '2021-10-19 6:48am GMT', - 'added' => '2010-10-11', 'homepage' => 'https://yoa.st/1uj', 'short_description' => 'Improve your WordPress SEO: Write better content and have a fully optimized WordPress site using the Yoast SEO plugin.', - 'download_link' => 'https://downloads.wordpress.org/plugin/wordpress-seo.17.4.zip', - 'tags' => - array ( - 'content-analysis' => 'Content analysis', - 'readability' => 'Readability', - 'schema' => 'schema', - 'seo' => 'seo', - 'xml-sitemap' => 'xml sitemap', - ), - 'donate_link' => 'https://yoa.st/1up', 'icons' => array ( '1x' => 'https://ps.w.org/wordpress-seo/assets/icon.svg?rev=2363699', @@ -2328,35 +734,8 @@ array ( 'name' => 'Gutenberg', 'slug' => 'gutenberg', - 'version' => '11.7.1', - 'author' => 'Gutenberg Team', - 'author_profile' => 'https://profiles.wordpress.org/matveb', - 'requires' => '5.7', - 'tested' => '5.8.1', - 'requires_php' => '5.6', - 'rating' => 42, - 'ratings' => - array ( - 1 => 2281, - 2 => 202, - 3 => 128, - 4 => 135, - 5 => 710, - ), - 'num_ratings' => 3456, - 'support_threads' => 61, - 'support_threads_resolved' => 33, - 'active_installs' => 300000, - 'downloaded' => 25167399, - 'last_updated' => '2021-10-20 10:13pm GMT', - 'added' => '2017-06-16', 'homepage' => 'https://github.com/WordPress/gutenberg', 'short_description' => 'The Gutenberg plugin provides editing, customization, and site building features to WordPress. This beta plugin allows you to test bleeding-edge featu …', - 'download_link' => 'https://downloads.wordpress.org/plugin/gutenberg.v11.7.1.zip', - 'tags' => - array ( - ), - 'donate_link' => '', 'icons' => array ( '1x' => 'https://ps.w.org/gutenberg/assets/icon-128x128.jpg?rev=1776042', diff --git a/includes/ecosystem-data/themes.php b/includes/ecosystem-data/themes.php index dd5f2f49adf..1581e1c9043 100644 --- a/includes/ecosystem-data/themes.php +++ b/includes/ecosystem-data/themes.php @@ -14,264 +14,110 @@ array ( 'name' => 'ExS', 'slug' => 'exs', - 'version' => '1.7.6', 'preview_url' => 'https://wp-themes.com/exs/', - 'author' => - array ( - 'user_nicename' => 'exstheme', - 'profile' => 'https://profiles.wordpress.org/exstheme', - 'avatar' => 'https://secure.gravatar.com/avatar/1823b8571e6996048b616b6602b21358?s=96&d=monsterid&r=g', - 'display_name' => 'exstheme', - 'author' => 'the ExS team', - 'author_url' => 'https://exsthemewp.com/about/', - ), 'screenshot_url' => '//ts.w.org/wp-content/themes/exs/screenshot.png?ver=1.7.6', - 'rating' => 100, - 'num_ratings' => 5, 'homepage' => 'https://wordpress.org/themes/exs/', 'description' => 'ExS theme is a fastest and smallest multipurpose Gutenberg compatible highly customizable theme without 3rd party dependencies. It is designed to have 100% Google Page and LightHouse speed. It has an extra small size of CSS (70kB) and JS (3kB) assets, 100% SEO optimised and valid code and it is 100% mobile friendly. It also has a WooCommerce and Easy Digital Downloads (EDD) plugin support so it will be perfect solution for your online store and e-commerce business. bbPress extended support makes ExS theme perfect for your forum. BuddyPress and Ultimate member support will help to create your social network with ExS theme. WP Job manager and Simple Job Board support will help you to create your job board. The Events Calendar advanced support will help you to create your events site. LearnPress plugin advanced support will help you to create a online courses and online school site. It has unlimited color options, headers and footers layouts, 15+ blog layouts, separate layouts for each category and many more super useful features that you can set up directly in your Customizer with live preview. ExS theme has builtin multiple page templates to perfectly work with any page builder such as Elementor, Beaver Builder, WPBackery, Brizy etc. ExS uses WordPress starter content feature so you can setup your pages immediately after WordPress and theme installation by simply going to Customizer and publish your changes. Theme Demo: https://exsthemewp.com/demo/.', - 'requires' => '5.5', - 'requires_php' => '5.6', 'wporg' => true, ), 1 => array ( 'name' => 'Sydney', 'slug' => 'sydney', - 'version' => '1.83', 'preview_url' => 'https://wp-themes.com/sydney/', - 'author' => - array ( - 'user_nicename' => 'athemes', - 'profile' => 'https://profiles.wordpress.org/athemes', - 'avatar' => 'https://secure.gravatar.com/avatar/0fe6c4dee6e201e81783d8a0ee12d83b?s=96&d=monsterid&r=g', - 'display_name' => 'athemes', - 'author' => 'aThemes', - 'author_url' => 'https://athemes.com', - ), 'screenshot_url' => '//ts.w.org/wp-content/themes/sydney/screenshot.png?ver=1.83', - 'rating' => 98, - 'num_ratings' => 511, 'homepage' => 'https://wordpress.org/themes/sydney/', 'description' => 'Sydney is a powerful business theme that provides a fast way for companies or freelancers to create an awesome online presence. As well as being fully compatible with Elementor, Sydney brings plenty of customization possibilities like access to all Google Fonts, full color control, layout control, logo upload, full screen slider, header image, sticky navigation and much more. Also, Sydney provides all the construction blocks you need to rapidly create an engaging front page. Looking for a quick start with Sydney? With just a few clicks, you can import one of our existing demos (https://athemes.com/sydney-demos/)', - 'requires' => false, - 'requires_php' => '5.6', 'wporg' => true, ), 2 => array ( 'name' => 'Really Simple', 'slug' => 'really-simple', - 'version' => '1.0.7', 'preview_url' => 'https://wp-themes.com/really-simple/', - 'author' => - array ( - 'user_nicename' => 'flauberthenriques', - 'profile' => 'https://profiles.wordpress.org/flauberthenriques', - 'avatar' => 'https://secure.gravatar.com/avatar/d524eb0811fa44be90481509b000c779?s=96&d=monsterid&r=g', - 'display_name' => 'Flaubert Henriques', - 'author' => 'Flaubert Henriques', - 'author_url' => 'https://profiles.wordpress.org/flauberthenriques/', - ), 'screenshot_url' => '//ts.w.org/wp-content/themes/really-simple/screenshot.png?ver=1.0.7', - 'rating' => 0, - 'num_ratings' => 0, 'homepage' => 'https://wordpress.org/themes/really-simple/', 'description' => 'Really Simple is a theme for bloggers and writers who need a ultra light and fast theme. The theme focuses on simplicity and loading speed. Yes, Really Simple Theme is also fully AMP compatible. Check the readme.txt file and leave the sidebar perfect after WordPress 5.8 update.', - 'requires' => '5.3', - 'requires_php' => '7.0', 'wporg' => true, ), 3 => array ( 'name' => 'Artpop', 'slug' => 'artpop', - 'version' => '1.0.8', 'preview_url' => 'https://wp-themes.com/artpop/', - 'author' => - array ( - 'user_nicename' => 'designlabthemes', - 'profile' => 'https://profiles.wordpress.org/designlabthemes', - 'avatar' => 'https://secure.gravatar.com/avatar/956873f77232371cb89d8a0d7a516354?s=96&d=monsterid&r=g', - 'display_name' => 'designlabthemes', - 'author' => 'Design Lab', - 'author_url' => 'https://www.designlabthemes.com/', - ), 'screenshot_url' => '//ts.w.org/wp-content/themes/artpop/screenshot.png?ver=1.0.8', - 'rating' => 100, - 'num_ratings' => 1, 'homepage' => 'https://wordpress.org/themes/artpop/', 'description' => 'Artpop is a beautiful Gutenberg-first WordPress theme, carefully designed to help you build your online brand. Unleash your creativity, Artpop takes care of the rest! Well documented and easy to use even for WordPress beginners, Artpop is perfect for a blog, personal portfolio, small business website, and WooCommerce storefront. Easily set your logo, change colors, and create awesome layouts to give your website a truly unique look.', - 'requires' => '4.7', - 'requires_php' => '5.6', 'wporg' => true, ), 4 => array ( 'name' => 'Michelle', 'slug' => 'michelle', - 'version' => '1.2.0', 'preview_url' => 'https://wp-themes.com/michelle/', - 'author' => - array ( - 'user_nicename' => 'webmandesign', - 'profile' => 'https://profiles.wordpress.org/webmandesign', - 'avatar' => 'https://secure.gravatar.com/avatar/f4a334f9f5af61b2bd22fcaadb04dd06?s=96&d=monsterid&r=g', - 'display_name' => 'WebMan Design | Oliver Juhas', - 'author' => 'WebMan Design', - 'author_url' => 'https://www.webmandesign.eu/', - ), 'screenshot_url' => '//ts.w.org/wp-content/themes/michelle/screenshot.png?ver=1.2.0', - 'rating' => 100, - 'num_ratings' => 3, 'homepage' => 'https://wordpress.org/themes/michelle/', 'description' => 'Michelle is accessibility ready WordPress theme for creating inclusive websites easily and with fun using block editor. Useful block patterns, block styles, templates and featured posts functionality allow you to build an eyecatching website in no time. Customize site footer and error 404 page content with block editor! The theme also works with Beaver Builder, Elementor, or any other page builder. It also supports theme builders! Michelle elevates your business, eCommerce, portfolio, or blog website. Check out the demo at https://themedemos.webmandesign.eu/michelle/ and documentation at https://webmandesign.github.io/docs/michelle/', - 'requires' => '5.5', - 'requires_php' => '7.0', 'wporg' => true, ), 5 => array ( 'name' => 'Miniva', 'slug' => 'miniva', - 'version' => '1.6.3', 'preview_url' => 'https://wp-themes.com/miniva/', - 'author' => - array ( - 'user_nicename' => 'tajam', - 'profile' => 'https://profiles.wordpress.org/tajam', - 'avatar' => 'https://secure.gravatar.com/avatar/378d4e715829ccf6f1fbe6dfef6eb539?s=96&d=monsterid&r=g', - 'display_name' => 'Tajam', - 'author' => 'Tajam', - 'author_url' => 'https://tajam.id/', - ), 'screenshot_url' => '//ts.w.org/wp-content/themes/miniva/screenshot.png?ver=1.6.3', - 'rating' => 100, - 'num_ratings' => 6, 'homepage' => 'https://wordpress.org/themes/miniva/', 'description' => 'A fast, lightweight, and mobile-friendly WordPress theme for bloggers. Miniva is built with simplicity, accessibility and performance in mind. The clean and minimal design helps readers focus on your content. It supports AMP and several Jetpack modules including featured content, infinite scroll, content options and social menu. See the theme demo at https://tajam.id/miniva-demo/', - 'requires' => '4.5', - 'requires_php' => '5.3', 'wporg' => true, ), 6 => array ( 'name' => 'Iknow', 'slug' => 'iknow', - 'version' => '1.2.6', 'preview_url' => 'https://wp-themes.com/iknow/', - 'author' => - array ( - 'user_nicename' => 'wpcalc', - 'profile' => 'https://profiles.wordpress.org/wpcalc', - 'avatar' => 'https://secure.gravatar.com/avatar/64ca4933fab3d5e50383f0b514acd5f6?s=96&d=monsterid&r=g', - 'display_name' => 'Wow-Company', - 'author' => 'Wow-Company', - 'author_url' => 'https://wow-company.com', - ), 'screenshot_url' => '//ts.w.org/wp-content/themes/iknow/screenshot.png?ver=1.2.6', - 'rating' => 98, - 'num_ratings' => 9, 'homepage' => 'https://wordpress.org/themes/iknow/', 'description' => 'Iknow WordPress Theme has a minimalistic, responsive and mobile-friendly design. Easy and fast theme. The theme is perfect for creating Knowledge Base, Helpdesk, Wiki and FAQ websites. Ability to set custom icons for each category and tag. Manage the display of categories on the main page of the site. The integrated post rating system VoteUp/VoteDown. Breadcrumbs for easy site navigation. Custom widget to display the current navigation in a category and in a separate post. You can view the appearance and features of the theme on the site https://wow-company.com/wp-theme-iknow/. Documentation https://wow-company.com/faq/category/wow-themes/iknow/', - 'requires' => false, - 'requires_php' => '5.6', 'wporg' => true, ), 7 => array ( 'name' => 'Kadence', 'slug' => 'kadence', - 'version' => '1.1.7', 'preview_url' => 'https://wp-themes.com/kadence/', - 'author' => - array ( - 'user_nicename' => 'britner', - 'profile' => 'https://profiles.wordpress.org/britner', - 'avatar' => 'https://secure.gravatar.com/avatar/3276133b8df529e6e1e58586ab1a309e?s=96&d=monsterid&r=g', - 'display_name' => 'Ben Ritner - Kadence WP', - 'author' => 'Kadence WP', - 'author_url' => 'https://www.kadencewp.com/', - ), - 'screenshot_url' => '//ts.w.org/wp-content/themes/kadence/screenshot.png?ver=1.1.7', - 'rating' => 98, - 'num_ratings' => 142, + 'screenshot_url' => '//ts.w.org/wp-content/themes/kadence/screenshot.png?ver=1.1.8', 'homepage' => 'https://wordpress.org/themes/kadence/', 'description' => 'Kadence Theme is a lightweight yet full featured WordPress theme for creating beautiful fast loading and accessible websites, easier than ever. It features an easy to use drag and drop header and footer builder to build any type of header in minutes. It features a full library of gorgeous starter templates that are easy to modify with our intelligent global font and color controls. With extensive integration with the most popular 3rd party plugins, you can quickly build impressive ecommerce websites, course websites, business websites, and more.', - 'requires' => '5.0', - 'requires_php' => '7.0', 'wporg' => true, ), 8 => array ( 'name' => 'Izo', 'slug' => 'izo', - 'version' => '1.0.12', 'preview_url' => 'https://wp-themes.com/izo/', - 'author' => - array ( - 'user_nicename' => 'elfwp', - 'profile' => 'https://profiles.wordpress.org/elfwp', - 'avatar' => 'https://secure.gravatar.com/avatar/1cfedf4555fea4d8fbba2947635586ea?s=96&d=monsterid&r=g', - 'display_name' => 'elfwp', - 'author' => 'elfWP', - 'author_url' => 'https://elfwp.com', - ), 'screenshot_url' => '//ts.w.org/wp-content/themes/izo/screenshot.png?ver=1.0.12', - 'rating' => 90, - 'num_ratings' => 2, 'homepage' => 'https://wordpress.org/themes/izo/', 'description' => 'Izo a fast, lightweight, native AMP and fully customizable multipurpose WordPress theme. Features include compatibility with many popular plugins like Elementor and other page builders, WooCommerce, WPML, LifterLMS and more. There is also full support for the new WordPress block editor. Izo is fully responsive and our users can take advantage of the many customizer options to easily change styles. Also, if you\'re looking for a quick start, we\'re offering a bunch of free starter sites, ready to easily import.', - 'requires' => false, - 'requires_php' => '5.6', 'wporg' => true, ), 9 => array ( 'name' => 'OceanWP', 'slug' => 'oceanwp', - 'version' => '3.0.7', 'preview_url' => 'https://wp-themes.com/oceanwp/', - 'author' => - array ( - 'user_nicename' => 'oceanwp', - 'profile' => 'https://profiles.wordpress.org/oceanwp', - 'avatar' => 'https://secure.gravatar.com/avatar/05f8d3fe2ccb6479bac14e4d40b406dd?s=96&d=monsterid&r=g', - 'display_name' => 'oceanwp', - 'author' => 'Nick', - 'author_url' => 'https://oceanwp.org/about-me/', - ), 'screenshot_url' => '//ts.w.org/wp-content/themes/oceanwp/screenshot.png?ver=3.0.7', - 'rating' => 98, - 'num_ratings' => 4976, 'homepage' => 'https://wordpress.org/themes/oceanwp/', 'description' => 'OceanWP is the perfect theme for your project. Lightweight and highly extendable, it will enable you to create almost any type of website such a blog, portfolio, business website and WooCommerce storefront with a beautiful & professional design. Very fast, responsive, RTL & translation ready, best SEO practices, unique WooCommerce features to increase conversion and much more. You can even edit the settings on tablet & mobile so your site looks good on every device. Work with the most popular page builders as Elementor, Beaver Builder, Brizy, Visual Composer, Divi, SiteOrigin, etc... Developers will love his extensible codebase making it a joy to customize and extend. Best friend of Elementor & WooCommerce. Looking for a Multi-Purpose theme? Look no further! Check the demos to realize that it\'s the only theme you will ever need: https://oceanwp.org/demos/', - 'requires' => '5.3', - 'requires_php' => '7.2', 'wporg' => true, ), 10 => array ( 'name' => 'Twenty Twenty-One', 'slug' => 'twentytwentyone', - 'version' => '1.4', 'preview_url' => 'https://wp-themes.com/twentytwentyone/', - 'author' => - array ( - 'user_nicename' => 'wordpressdotorg', - 'profile' => 'https://profiles.wordpress.org/wordpressdotorg', - 'avatar' => 'https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g', - 'display_name' => 'WordPress.org', - 'author' => 'the WordPress team', - 'author_url' => 'https://wordpress.org/', - ), 'screenshot_url' => '//ts.w.org/wp-content/themes/twentytwentyone/screenshot.png?ver=1.4', - 'rating' => 82, - 'num_ratings' => 35, 'homepage' => 'https://wordpress.org/themes/twentytwentyone/', 'description' => 'Twenty Twenty-One is a blank canvas for your ideas and it makes the block editor your best brush. With new block patterns, which allow you to create a beautiful layout in a matter of seconds, this theme’s soft colors and eye-catching — yet timeless — design will let your work shine. Take it for a spin! See how Twenty Twenty-One elevates your portfolio, business website, or personal blog.', - 'requires' => '5.3', - 'requires_php' => '5.6', 'wporg' => true, ), 11 => @@ -292,384 +138,160 @@ array ( 'name' => 'Tortuga', 'slug' => 'tortuga', - 'version' => '2.3.4', 'preview_url' => 'https://wp-themes.com/tortuga/', - 'author' => - array ( - 'user_nicename' => 'themezee', - 'profile' => 'https://profiles.wordpress.org/themezee', - 'avatar' => 'https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g', - 'display_name' => 'ThemeZee', - 'author' => 'ThemeZee', - 'author_url' => 'https://themezee.com', - ), 'screenshot_url' => '//ts.w.org/wp-content/themes/tortuga/screenshot.jpg?ver=2.3.4', - 'rating' => 96, - 'num_ratings' => 19, 'homepage' => 'https://wordpress.org/themes/tortuga/', 'description' => 'Tortuga is a highly flexible and adventurous WordPress theme for your pirate magazine or any news related website. It supports three different post layouts, two sidebar schemes and a Magazine Homepage template based on widgets. Other highlights of Tortuga are the beautiful post slider and header widgets area. Arrr!', - 'requires' => '5.2', - 'requires_php' => '5.6', 'wporg' => true, ), 13 => array ( 'name' => 'Treville', 'slug' => 'treville', - 'version' => '2.1.4', 'preview_url' => 'https://wp-themes.com/treville/', - 'author' => - array ( - 'user_nicename' => 'themezee', - 'profile' => 'https://profiles.wordpress.org/themezee', - 'avatar' => 'https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g', - 'display_name' => 'ThemeZee', - 'author' => 'ThemeZee', - 'author_url' => 'https://themezee.com', - ), 'screenshot_url' => '//ts.w.org/wp-content/themes/treville/screenshot.jpg?ver=2.1.4', - 'rating' => 0, - 'num_ratings' => 0, 'homepage' => 'https://wordpress.org/themes/treville/', 'description' => 'An elegant Blogging & Magazine WordPress Theme with subtle colors and great typography. Treville supports two navigation menus, advanced post settings and a post slider with fullscreen images!', - 'requires' => '5.2', - 'requires_php' => '5.6', 'wporg' => true, ), 14 => array ( 'name' => 'Wellington', 'slug' => 'wellington', - 'version' => '2.1.4', 'preview_url' => 'https://wp-themes.com/wellington/', - 'author' => - array ( - 'user_nicename' => 'themezee', - 'profile' => 'https://profiles.wordpress.org/themezee', - 'avatar' => 'https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g', - 'display_name' => 'ThemeZee', - 'author' => 'ThemeZee', - 'author_url' => 'https://themezee.com', - ), 'screenshot_url' => '//ts.w.org/wp-content/themes/wellington/screenshot.jpg?ver=2.1.4', - 'rating' => 100, - 'num_ratings' => 12, 'homepage' => 'https://wordpress.org/themes/wellington/', 'description' => 'Wellington is a clean and simple Magazine WordPress theme with beautiful typography and subtle colors. The theme includes two different post layouts, a featured post slider and thoughtful theme settings in the Customizer.', - 'requires' => '5.2', - 'requires_php' => '5.6', 'wporg' => true, ), 15 => array ( 'name' => 'Poseidon', 'slug' => 'poseidon', - 'version' => '2.3.4', 'preview_url' => 'https://wp-themes.com/poseidon/', - 'author' => - array ( - 'user_nicename' => 'themezee', - 'profile' => 'https://profiles.wordpress.org/themezee', - 'avatar' => 'https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g', - 'display_name' => 'ThemeZee', - 'author' => 'ThemeZee', - 'author_url' => 'https://themezee.com', - ), 'screenshot_url' => '//ts.w.org/wp-content/themes/poseidon/screenshot.jpg?ver=2.3.4', - 'rating' => 96, - 'num_ratings' => 16, 'homepage' => 'https://wordpress.org/themes/poseidon/', 'description' => 'Poseidon is an elegant designed WordPress theme featuring a splendid fullscreen image slideshow. The clean typography and spacious white layout makes it great to share your stories. You can use the theme as simple blog or easily create a news website with the widget-based Magazine Homepage template.', - 'requires' => '5.2', - 'requires_php' => '5.6', 'wporg' => true, ), 16 => array ( 'name' => 'Napoli', 'slug' => 'napoli', - 'version' => '2.2.4', 'preview_url' => 'https://wp-themes.com/napoli/', - 'author' => - array ( - 'user_nicename' => 'themezee', - 'profile' => 'https://profiles.wordpress.org/themezee', - 'avatar' => 'https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g', - 'display_name' => 'ThemeZee', - 'author' => 'ThemeZee', - 'author_url' => 'https://themezee.com', - ), 'screenshot_url' => '//ts.w.org/wp-content/themes/napoli/screenshot.jpg?ver=2.2.4', - 'rating' => 100, - 'num_ratings' => 4, 'homepage' => 'https://wordpress.org/themes/napoli/', 'description' => 'Napoli is a beautiful WordPress theme perfectly suited for a food magazine. It features a great featured post slider, smooth typography and a grid-layout for posts. Bon appetit!', - 'requires' => '5.2', - 'requires_php' => '5.6', 'wporg' => true, ), 17 => array ( 'name' => 'Mercia', 'slug' => 'mercia', - 'version' => '1.9.7', 'preview_url' => 'https://wp-themes.com/mercia/', - 'author' => - array ( - 'user_nicename' => 'themezee', - 'profile' => 'https://profiles.wordpress.org/themezee', - 'avatar' => 'https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g', - 'display_name' => 'ThemeZee', - 'author' => 'ThemeZee', - 'author_url' => 'https://themezee.com', - ), 'screenshot_url' => '//ts.w.org/wp-content/themes/mercia/screenshot.jpg?ver=1.9.7', - 'rating' => 100, - 'num_ratings' => 1, 'homepage' => 'https://wordpress.org/themes/mercia/', 'description' => 'Mercia is a flexible and versatile theme perfect for lifestyle, travel, or fashion magazines. It features a modern and minimalist design with great typropaphy. Of course it works on all screen sizes. With multiple blog layouts and powerful Magazine widgets, you can easily create a stunning and dynamic news website in just a few minutes.', - 'requires' => '5.2', - 'requires_php' => '5.6', 'wporg' => true, ), 18 => array ( 'name' => 'Maxwell', 'slug' => 'maxwell', - 'version' => '2.3.4', 'preview_url' => 'https://wp-themes.com/maxwell/', - 'author' => - array ( - 'user_nicename' => 'themezee', - 'profile' => 'https://profiles.wordpress.org/themezee', - 'avatar' => 'https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g', - 'display_name' => 'ThemeZee', - 'author' => 'ThemeZee', - 'author_url' => 'https://themezee.com', - ), 'screenshot_url' => '//ts.w.org/wp-content/themes/maxwell/screenshot.jpg?ver=2.3.4', - 'rating' => 100, - 'num_ratings' => 7, 'homepage' => 'https://wordpress.org/themes/maxwell/', 'description' => 'Maxwell is a minimalistic and elegant WordPress theme featuring an ultra clean magazine layout. With a beautiful typography, various post layouts and a gorgeous featured posts slideshow Maxwell truly helps you to stand out.', - 'requires' => '5.2', - 'requires_php' => '5.6', 'wporg' => true, ), 19 => array ( 'name' => 'Harrison', 'slug' => 'harrison', - 'version' => '1.3.4', 'preview_url' => 'https://wp-themes.com/harrison/', - 'author' => - array ( - 'user_nicename' => 'themezee', - 'profile' => 'https://profiles.wordpress.org/themezee', - 'avatar' => 'https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g', - 'display_name' => 'ThemeZee', - 'author' => 'ThemeZee', - 'author_url' => 'https://themezee.com/', - ), 'screenshot_url' => '//ts.w.org/wp-content/themes/harrison/screenshot.jpg?ver=1.3.4', - 'rating' => 80, - 'num_ratings' => 1, 'homepage' => 'https://wordpress.org/themes/harrison/', 'description' => 'Harrison is a highly versatile WordPress Theme and was specially designed for use with the new WordPress Block Editor. The theme supports the latest Gutenberg features and provides different blog layouts and extensive post settings. The clean and elegant design is perfect to create all kinds of websites. You should really try it!', - 'requires' => '5.2', - 'requires_php' => '5.6', 'wporg' => true, ), 20 => array ( 'name' => 'Gridbox', 'slug' => 'gridbox', - 'version' => '2.3.4', 'preview_url' => 'https://wp-themes.com/gridbox/', - 'author' => - array ( - 'user_nicename' => 'themezee', - 'profile' => 'https://profiles.wordpress.org/themezee', - 'avatar' => 'https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g', - 'display_name' => 'ThemeZee', - 'author' => 'ThemeZee', - 'author_url' => 'https://themezee.com', - ), 'screenshot_url' => '//ts.w.org/wp-content/themes/gridbox/screenshot.jpg?ver=2.3.4', - 'rating' => 74, - 'num_ratings' => 6, 'homepage' => 'https://wordpress.org/themes/gridbox/', 'description' => 'Gridbox is a clean and solid WordPress theme featuring a three-column grid-layout for posts. The theme works out of the box and does not require any complicated setup. It is perfectly suited for a simple magazine, blog or portfolio website.', - 'requires' => '5.2', - 'requires_php' => '5.6', 'wporg' => true, ), 21 => array ( 'name' => 'Chronus', 'slug' => 'chronus', - 'version' => '2.0.5', 'preview_url' => 'https://wp-themes.com/chronus/', - 'author' => - array ( - 'user_nicename' => 'themezee', - 'profile' => 'https://profiles.wordpress.org/themezee', - 'avatar' => 'https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g', - 'display_name' => 'ThemeZee', - 'author' => 'ThemeZee', - 'author_url' => 'https://themezee.com', - ), 'screenshot_url' => '//ts.w.org/wp-content/themes/chronus/screenshot.jpg?ver=2.0.5', - 'rating' => 80, - 'num_ratings' => 5, 'homepage' => 'https://wordpress.org/themes/chronus/', 'description' => 'Chronus is a fast and lightweight WordPress Theme created for magazines, news websites and personal blogs. The Featured Content section and flexible Magazine Widgets give you the ability to highlight your most important posts on the home page. The minimalistic and responsive design focuses on your content and looks great on any screen size.', - 'requires' => '5.2', - 'requires_php' => '5.6', 'wporg' => true, ), 22 => array ( 'name' => 'Donovan', 'slug' => 'donovan', - 'version' => '1.8.4', 'preview_url' => 'https://wp-themes.com/donovan/', - 'author' => - array ( - 'user_nicename' => 'themezee', - 'profile' => 'https://profiles.wordpress.org/themezee', - 'avatar' => 'https://secure.gravatar.com/avatar/aac621a334e6ba145c76d224b28435bb?s=96&d=monsterid&r=g', - 'display_name' => 'ThemeZee', - 'author' => 'ThemeZee', - 'author_url' => 'https://themezee.com', - ), 'screenshot_url' => '//ts.w.org/wp-content/themes/donovan/screenshot.jpg?ver=1.8.4', - 'rating' => 96, - 'num_ratings' => 16, 'homepage' => 'https://wordpress.org/themes/donovan/', 'description' => 'Donovan is a flexible, yet easy-to-use blogging theme with a clean and modern design. It features an elegant mobile-first design, three different blog layouts and extensive post settings. Donovan is perfect for your personal blog or for any content-focused website.', - 'requires' => '5.2', - 'requires_php' => '5.6', 'wporg' => true, ), 23 => array ( 'name' => 'Yosemite Lite', 'slug' => 'yosemite-lite', - 'version' => '1.2.1', 'preview_url' => 'https://wp-themes.com/yosemite-lite/', - 'author' => - array ( - 'user_nicename' => 'gretathemes', - 'profile' => 'https://profiles.wordpress.org/gretathemes', - 'avatar' => 'https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g', - 'display_name' => 'GretaThemes', - 'author' => false, - 'author_url' => 'https://gretathemes.com', - ), 'screenshot_url' => '//ts.w.org/wp-content/themes/yosemite-lite/screenshot.jpg?ver=1.2.1', - 'rating' => 60, - 'num_ratings' => 2, 'homepage' => 'https://wordpress.org/themes/yosemite-lite/', 'description' => 'Yosemite is a beautiful WordPress blog theme for personal blogs. Yosemite has a modern, clean and elegant look and lots of customization for bloggers. Built on the latest technology of WordPress, Yosemite is lightweight, fast and optimized for all mobile phones.', - 'requires' => false, - 'requires_php' => false, 'wporg' => true, ), 24 => array ( 'name' => 'Justread', 'slug' => 'justread', - 'version' => '1.3.0', 'preview_url' => 'https://wp-themes.com/justread/', - 'author' => - array ( - 'user_nicename' => 'gretathemes', - 'profile' => 'https://profiles.wordpress.org/gretathemes', - 'avatar' => 'https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g', - 'display_name' => 'GretaThemes', - 'author' => false, - 'author_url' => 'https://gretathemes.com', - ), 'screenshot_url' => '//ts.w.org/wp-content/themes/justread/screenshot.jpg?ver=1.3.0', - 'rating' => 100, - 'num_ratings' => 5, 'homepage' => 'https://wordpress.org/themes/justread/', 'description' => 'Justread is a clean and modern WordPress theme that focuses on reading experience. Justread has a grid layout with single column content. The theme uses system fonts and SVG for fast loading. Enjoy reading long content with comfortability.', - 'requires' => false, - 'requires_php' => '5.6', 'wporg' => true, ), 25 => array ( 'name' => 'Floral Lite', 'slug' => 'floral-lite', - 'version' => '1.4', 'preview_url' => 'https://wp-themes.com/floral-lite/', - 'author' => - array ( - 'user_nicename' => 'gretathemes', - 'profile' => 'https://profiles.wordpress.org/gretathemes', - 'avatar' => 'https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g', - 'display_name' => 'GretaThemes', - 'author' => false, - 'author_url' => 'https://gretathemes.com', - ), 'screenshot_url' => '//ts.w.org/wp-content/themes/floral-lite/screenshot.jpg?ver=1.4', - 'rating' => 0, - 'num_ratings' => 0, 'homepage' => 'https://wordpress.org/themes/floral-lite/', 'description' => 'Floral is a beautiful WordPress blog theme for personal blogs. Floral has a modern, clean and elegant look and lots of customization for bloggers. Built on the latest technology of WordPress, Floral is lightweight, fast and optimized for all mobile phones.', - 'requires' => '4.5', - 'requires_php' => '5.6', 'wporg' => true, ), 26 => array ( 'name' => 'EightyDays Lite', 'slug' => 'eightydays-lite', - 'version' => '2.2.7', 'preview_url' => 'https://wp-themes.com/eightydays-lite/', - 'author' => - array ( - 'user_nicename' => 'gretathemes', - 'profile' => 'https://profiles.wordpress.org/gretathemes', - 'avatar' => 'https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g', - 'display_name' => 'GretaThemes', - 'author' => false, - 'author_url' => 'http://gretathemes.com', - ), 'screenshot_url' => '//ts.w.org/wp-content/themes/eightydays-lite/screenshot.png?ver=2.2.7', - 'rating' => 90, - 'num_ratings' => 4, 'homepage' => 'https://wordpress.org/themes/eightydays-lite/', 'description' => 'EightyDays is a beautiful WordPress travel theme for travel blogs or magazines. EightyDays has a modern, clean and elegant look and lots of customization for bloggers. Built on the latest technology of WordPress, EightyDays is lightweight, fast and optimized for all mobile phones.', - 'requires' => false, - 'requires_php' => false, 'wporg' => true, ), 27 => array ( 'name' => 'eStar', 'slug' => 'estar', - 'version' => '1.3.4', 'preview_url' => 'https://wp-themes.com/estar/', - 'author' => - array ( - 'user_nicename' => 'gretathemes', - 'profile' => 'https://profiles.wordpress.org/gretathemes', - 'avatar' => 'https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g', - 'display_name' => 'GretaThemes', - 'author' => false, - 'author_url' => 'https://gretathemes.com', - ), 'screenshot_url' => '//ts.w.org/wp-content/themes/estar/screenshot.png?ver=1.3.4', - 'rating' => 100, - 'num_ratings' => 4, 'homepage' => 'https://wordpress.org/themes/estar/', 'description' => 'eStar is a super fast, lightweight (less than 10KB on the front end), responsive and highly customizable WordPress theme suitable for blog, personal portfolio and business websites. It works perfectly with Gutenberg and all WordPress blocks. You can also pair it with any page builder plugin like Elementor, Beaver Builder, Visual Composer, SiteOrigin, Divi, Thrive Architect, Brizy and more. eStar is written from scratch with performance, extensibility, usability and SEO in mind. The theme follows best practices, well-coded and follows the latest web standards (HTML5, SVG, JavaScript). Some of the other features: microdata integration, widget areas, sidebar layouts, custom colors, custom Google fonts, translation ready. Looking for a perfect base theme? Look no further. eStar is fast, fully customizable WordPress theme that you can use for building any kind of website like business agencies, corporate, portfolio, education, university portal, consulting, church, restaurant, medical and so on. Learn more about the theme at https://gretathemes.com/wordpress-themes/estar/', - 'requires' => false, - 'requires_php' => '5.6', 'wporg' => true, ), 28 => @@ -886,179 +508,60 @@ array ( 'name' => 'Activation', 'slug' => 'activation', - 'version' => '1.2.2', 'preview_url' => 'https://wp-themes.com/activation/', - 'author' => - array ( - 'user_nicename' => 'godaddy', - 'profile' => 'https://profiles.wordpress.org/godaddy', - 'avatar' => 'https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g', - 'display_name' => 'GoDaddy', - 'author' => false, - 'author_url' => 'https://www.godaddy.com/', - ), 'screenshot_url' => '//ts.w.org/wp-content/themes/activation/screenshot.png?ver=1.2.2', - 'rating' => 100, - 'num_ratings' => 1, 'homepage' => 'https://wordpress.org/themes/activation/', 'description' => 'Activation is a Primer child theme with a colorful, fitness-focused design.', - 'template' => 'primer', - 'parent' => - array ( - 'slug' => 'primer', - 'name' => 'Primer', - 'homepage' => 'https://wordpress.org/themes/primer/', - ), - 'requires' => '4.4', - 'requires_php' => false, 'wporg' => true, ), 44 => array ( 'name' => 'Velux', 'slug' => 'velux', - 'version' => '1.1.3', 'preview_url' => 'https://wp-themes.com/velux/', - 'author' => - array ( - 'user_nicename' => 'godaddy', - 'profile' => 'https://profiles.wordpress.org/godaddy', - 'avatar' => 'https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g', - 'display_name' => 'GoDaddy', - 'author' => false, - 'author_url' => 'https://www.godaddy.com/', - ), 'screenshot_url' => '//ts.w.org/wp-content/themes/velux/screenshot.png?ver=1.1.3', - 'rating' => 0, - 'num_ratings' => 0, 'homepage' => 'https://wordpress.org/themes/velux/', 'description' => 'Velux is a Primer child theme with a clean, professional, and upscale design.', - 'template' => 'primer', - 'parent' => - array ( - 'slug' => 'primer', - 'name' => 'Primer', - 'homepage' => 'https://wordpress.org/themes/primer/', - ), - 'requires' => '4.4', - 'requires_php' => '5.6.0', 'wporg' => true, ), 45 => array ( 'name' => 'Scribbles', 'slug' => 'scribbles', - 'version' => '1.1.2', 'preview_url' => 'https://wp-themes.com/scribbles/', - 'author' => - array ( - 'user_nicename' => 'godaddy', - 'profile' => 'https://profiles.wordpress.org/godaddy', - 'avatar' => 'https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g', - 'display_name' => 'GoDaddy', - 'author' => false, - 'author_url' => 'https://www.godaddy.com/', - ), 'screenshot_url' => '//ts.w.org/wp-content/themes/scribbles/screenshot.png?ver=1.1.2', - 'rating' => 0, - 'num_ratings' => 0, 'homepage' => 'https://wordpress.org/themes/scribbles/', 'description' => 'Scribbles is a Primer child theme with a playful and fun mood.', - 'template' => 'primer', - 'parent' => - array ( - 'slug' => 'primer', - 'name' => 'Primer', - 'homepage' => 'https://wordpress.org/themes/primer/', - ), - 'requires' => '4.1', - 'requires_php' => false, 'wporg' => true, ), 46 => array ( 'name' => 'Ascension', 'slug' => 'ascension', - 'version' => '1.1.5', 'preview_url' => 'https://wp-themes.com/ascension/', - 'author' => - array ( - 'user_nicename' => 'godaddy', - 'profile' => 'https://profiles.wordpress.org/godaddy', - 'avatar' => 'https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g', - 'display_name' => 'GoDaddy', - 'author' => false, - 'author_url' => 'https://www.godaddy.com/', - ), 'screenshot_url' => '//ts.w.org/wp-content/themes/ascension/screenshot.png?ver=1.1.5', - 'rating' => 0, - 'num_ratings' => 0, 'homepage' => 'https://wordpress.org/themes/ascension/', 'description' => 'Ascension is a Primer child theme with a business-oriented design.', - 'template' => 'primer', - 'parent' => - array ( - 'slug' => 'primer', - 'name' => 'Primer', - 'homepage' => 'https://wordpress.org/themes/primer/', - ), - 'requires' => '4.4', - 'requires_php' => '5.6.0', 'wporg' => true, ), 47 => array ( 'name' => 'Uptown Style', 'slug' => 'uptown-style', - 'version' => '1.1.3', 'preview_url' => 'https://wp-themes.com/uptown-style/', - 'author' => - array ( - 'user_nicename' => 'godaddy', - 'profile' => 'https://profiles.wordpress.org/godaddy', - 'avatar' => 'https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g', - 'display_name' => 'GoDaddy', - 'author' => false, - 'author_url' => 'https://www.godaddy.com/', - ), 'screenshot_url' => '//ts.w.org/wp-content/themes/uptown-style/screenshot.png?ver=1.1.3', - 'rating' => 100, - 'num_ratings' => 3, 'homepage' => 'https://wordpress.org/themes/uptown-style/', 'description' => 'Uptown Style is a Primer child theme with elegance and class.', - 'template' => 'primer', - 'parent' => - array ( - 'slug' => 'primer', - 'name' => 'Primer', - 'homepage' => 'https://wordpress.org/themes/primer/', - ), - 'requires' => '4.4', - 'requires_php' => '5.6.0', 'wporg' => true, ), 48 => array ( 'name' => 'Go', 'slug' => 'go', - 'version' => '1.5.0', 'preview_url' => 'https://wp-themes.com/go/', - 'author' => - array ( - 'user_nicename' => 'godaddy', - 'profile' => 'https://profiles.wordpress.org/godaddy', - 'avatar' => 'https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g', - 'display_name' => 'GoDaddy', - 'author' => 'GoDaddy', - 'author_url' => 'https://www.godaddy.com', - ), - 'screenshot_url' => '//ts.w.org/wp-content/themes/go/screenshot.png?ver=1.5.0', - 'rating' => 94, - 'num_ratings' => 14, + 'screenshot_url' => '//ts.w.org/wp-content/themes/go/screenshot.png?ver=1.5.1', 'homepage' => 'https://wordpress.org/themes/go/', 'description' => 'Go is an innovative, Gutenberg-first WordPress theme, hyper-focused on empowering makers to build beautifully rich websites with WordPress.', - 'requires' => false, - 'requires_php' => '5.6', 'wporg' => true, ), 49 => @@ -1079,24 +582,10 @@ array ( 'name' => 'Memory', 'slug' => 'memory', - 'version' => '2.0.1', 'preview_url' => 'https://wp-themes.com/memory/', - 'author' => - array ( - 'user_nicename' => 'gretathemes', - 'profile' => 'https://profiles.wordpress.org/gretathemes', - 'avatar' => 'https://secure.gravatar.com/avatar/294e31c6b732da3de991882e91351c3b?s=96&d=monsterid&r=g', - 'display_name' => 'GretaThemes', - 'author' => false, - 'author_url' => 'https://gretathemes.com', - ), 'screenshot_url' => '//ts.w.org/wp-content/themes/memory/screenshot.png?ver=2.0.1', - 'rating' => 60, - 'num_ratings' => 1, 'homepage' => 'https://wordpress.org/themes/memory/', 'description' => 'Clean and beautiful personal blog theme.', - 'requires' => '4.5', - 'requires_php' => '5.2', 'wporg' => true, ), 51 => @@ -1187,48 +676,20 @@ array ( 'name' => 'Twenty Twenty', 'slug' => 'twentytwenty', - 'version' => '1.8', 'preview_url' => 'https://wp-themes.com/twentytwenty/', - 'author' => - array ( - 'user_nicename' => 'wordpressdotorg', - 'profile' => 'https://profiles.wordpress.org/wordpressdotorg', - 'avatar' => 'https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g', - 'display_name' => 'WordPress.org', - 'author' => 'the WordPress team', - 'author_url' => 'https://wordpress.org/', - ), 'screenshot_url' => '//ts.w.org/wp-content/themes/twentytwenty/screenshot.png?ver=1.8', - 'rating' => 88, - 'num_ratings' => 61, 'homepage' => 'https://wordpress.org/themes/twentytwenty/', 'description' => 'Our default theme for 2020 is designed to take full advantage of the flexibility of the block editor. Organizations and businesses have the ability to create dynamic landing pages with endless layouts using the group and column blocks. The centered content column and fine-tuned typography also makes it perfect for traditional blogs. Complete editor styles give you a good idea of what your content will look like, even before you publish. You can give your site a personal touch by changing the background colors and the accent color in the Customizer. The colors of all elements on your site are automatically calculated based on the colors you pick, ensuring a high, accessible color contrast for your visitors.', - 'requires' => '4.7', - 'requires_php' => '5.2.4', 'wporg' => true, ), 58 => array ( 'name' => 'Primer', 'slug' => 'primer', - 'version' => '1.8.9', 'preview_url' => 'https://wp-themes.com/primer/', - 'author' => - array ( - 'user_nicename' => 'godaddy', - 'profile' => 'https://profiles.wordpress.org/godaddy', - 'avatar' => 'https://secure.gravatar.com/avatar/a43a268c6df3aa2a9d4a358673880050?s=96&d=monsterid&r=g', - 'display_name' => 'GoDaddy', - 'author' => false, - 'author_url' => 'https://www.godaddy.com/', - ), 'screenshot_url' => '//ts.w.org/wp-content/themes/primer/screenshot.png?ver=1.8.9', - 'rating' => 90, - 'num_ratings' => 15, 'homepage' => 'https://wordpress.org/themes/primer/', 'description' => 'Primer is a powerful theme that brings clarity to your content in a fresh design.', - 'requires' => false, - 'requires_php' => false, 'wporg' => true, ), 59 => @@ -1263,288 +724,120 @@ array ( 'name' => 'Twenty Fourteen', 'slug' => 'twentyfourteen', - 'version' => '3.2', 'preview_url' => 'https://wp-themes.com/twentyfourteen/', - 'author' => - array ( - 'user_nicename' => 'wordpressdotorg', - 'profile' => 'https://profiles.wordpress.org/wordpressdotorg', - 'avatar' => 'https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g', - 'display_name' => 'WordPress.org', - 'author' => 'the WordPress team', - 'author_url' => 'https://wordpress.org/', - ), 'screenshot_url' => '//ts.w.org/wp-content/themes/twentyfourteen/screenshot.png?ver=3.2', - 'rating' => 88, - 'num_ratings' => 94, 'homepage' => 'https://wordpress.org/themes/twentyfourteen/', 'description' => 'In 2014, our default theme lets you create a responsive magazine website with a sleek, modern design. Feature your favorite homepage content in either a grid or a slider. Use the three widget areas to customize your website, and change your content\'s layout with a full-width page template and a contributor page to show off your authors. Creating a magazine website with WordPress has never been easier.', - 'requires' => false, - 'requires_php' => '5.2.4', 'wporg' => true, ), 62 => array ( 'name' => 'Twenty Thirteen', 'slug' => 'twentythirteen', - 'version' => '3.4', 'preview_url' => 'https://wp-themes.com/twentythirteen/', - 'author' => - array ( - 'user_nicename' => 'wordpressdotorg', - 'profile' => 'https://profiles.wordpress.org/wordpressdotorg', - 'avatar' => 'https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g', - 'display_name' => 'WordPress.org', - 'author' => 'the WordPress team', - 'author_url' => 'https://wordpress.org/', - ), 'screenshot_url' => '//ts.w.org/wp-content/themes/twentythirteen/screenshot.png?ver=3.4', - 'rating' => 82, - 'num_ratings' => 62, 'homepage' => 'https://wordpress.org/themes/twentythirteen/', 'description' => 'The 2013 theme for WordPress takes us back to the blog, featuring a full range of post formats, each displayed beautifully in their own unique way. Design details abound, starting with a vibrant color scheme and matching header images, beautiful typography and icons, and a flexible layout that looks great on any device, big or small.', - 'requires' => '3.6', - 'requires_php' => '5.2.4', 'wporg' => true, ), 63 => array ( 'name' => 'Twenty Eleven', 'slug' => 'twentyeleven', - 'version' => '3.9', 'preview_url' => 'https://wp-themes.com/twentyeleven/', - 'author' => - array ( - 'user_nicename' => 'wordpressdotorg', - 'profile' => 'https://profiles.wordpress.org/wordpressdotorg', - 'avatar' => 'https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g', - 'display_name' => 'WordPress.org', - 'author' => 'the WordPress team', - 'author_url' => 'https://wordpress.org/', - ), 'screenshot_url' => '//ts.w.org/wp-content/themes/twentyeleven/screenshot.png?ver=3.9', - 'rating' => 92, - 'num_ratings' => 49, 'homepage' => 'https://wordpress.org/themes/twentyeleven/', 'description' => 'The 2011 theme for WordPress is sophisticated, lightweight, and adaptable. Make it yours with a custom menu, header image, and background -- then go further with available theme options for light or dark color scheme, custom link colors, and three layout choices. Twenty Eleven comes equipped with a Showcase page template that transforms your front page into a showcase to show off your best content, widget support galore (sidebar, three footer areas, and a Showcase page widget area), and a custom "Ephemera" widget to display your Aside, Link, Quote, or Status posts. Included are styles for print and for the admin editor, support for featured images (as custom header images on posts and pages and as large images on featured "sticky" posts), and special styles for six different post formats.', - 'requires' => false, - 'requires_php' => '5.2.4', 'wporg' => true, ), 64 => array ( 'name' => 'Twenty Ten', 'slug' => 'twentyten', - 'version' => '3.5', 'preview_url' => 'https://wp-themes.com/twentyten/', - 'author' => - array ( - 'user_nicename' => 'wordpressdotorg', - 'profile' => 'https://profiles.wordpress.org/wordpressdotorg', - 'avatar' => 'https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g', - 'display_name' => 'WordPress.org', - 'author' => 'the WordPress team', - 'author_url' => 'https://wordpress.org/', - ), 'screenshot_url' => '//ts.w.org/wp-content/themes/twentyten/screenshot.png?ver=3.5', - 'rating' => 94, - 'num_ratings' => 50, 'homepage' => 'https://wordpress.org/themes/twentyten/', 'description' => 'The 2010 theme for WordPress is stylish, customizable, simple, and readable -- make it yours with a custom menu, header image, and background. Twenty Ten supports six widgetized areas (two in the sidebar, four in the footer) and featured images (thumbnails for gallery posts and custom header images for posts and pages). It includes stylesheets for print and the admin Visual Editor, special styles for posts in the "Asides" and "Gallery" categories, and has an optional one-column page template that removes the sidebar.', - 'requires' => '3.0', - 'requires_php' => '5.2.4', 'wporg' => true, ), 65 => array ( 'name' => 'Zakra', 'slug' => 'zakra', - 'version' => '2.0.5', 'preview_url' => 'https://wp-themes.com/zakra/', - 'author' => - array ( - 'user_nicename' => 'themegrill', - 'profile' => 'https://profiles.wordpress.org/themegrill', - 'avatar' => 'https://secure.gravatar.com/avatar/fa3cda768036cc3983458ed23394a43d?s=96&d=monsterid&r=g', - 'display_name' => 'ThemeGrill', - 'author' => 'ThemeGrill', - 'author_url' => 'https://themegrill.com', - ), 'screenshot_url' => '//ts.w.org/wp-content/themes/zakra/screenshot.jpg?ver=2.0.5', - 'rating' => 100, - 'num_ratings' => 483, 'homepage' => 'https://wordpress.org/themes/zakra/', 'description' => 'Zakra is flexible, fast, lightweight and modern multipurpose theme that comes with many starter free sites (currently 10+ free starter sites and more will be added later) that you can use to make your site beautiful and professional. Check all the starter sites at https://zakratheme.com/demos. Suitable for personal blog, portfolio, WooCommerce stores, business websites and niche-based sites (like Cafe, Spa, Charity, Yoga, Wedding, Dentist, Education etc) as well. Works with Elementor plus other major page builders so you can create any layout you want. The theme is responsive, Gutenberg compatible, SEO friendly, translation ready and major WordPress plugins compatible.', - 'requires' => false, - 'requires_php' => '5.6', 'wporg' => true, ), 66 => array ( 'name' => 'Neve', 'slug' => 'neve', - 'version' => '3.0.6', 'preview_url' => 'https://wp-themes.com/neve/', - 'author' => - array ( - 'user_nicename' => 'themeisle', - 'profile' => 'https://profiles.wordpress.org/themeisle', - 'avatar' => 'https://secure.gravatar.com/avatar/a0ec097eaf5f30933eb00c1175d4bd55?s=96&d=monsterid&r=g', - 'display_name' => 'Themeisle', - 'author' => 'ThemeIsle', - 'author_url' => 'https://themeisle.com', - ), 'screenshot_url' => '//ts.w.org/wp-content/themes/neve/screenshot.png?ver=3.0.6', - 'rating' => 96, - 'num_ratings' => 834, 'homepage' => 'https://wordpress.org/themes/neve/', 'description' => 'Neve is a super fast, easily customizable, multi-purpose theme. It’s perfect for blogs, small business, startups, agencies, firms, e-commerce shops (WooCommerce storefront) as well as personal portfolio sites and most types of projects. A fully AMP optimized and responsive theme, Neve will load in mere seconds and adapt perfectly on any viewing device. While it is lightweight and has a minimalist design, the theme is highly extendable, it has a highly SEO optimized code, resulting in top rankings in Google search results. Neve works perfectly with Gutenberg and the most popular page builders (Elementor, Brizy, Beaver Builder, Visual Composer, SiteOrigin, Divi). Neve is also WooCommerce ready, responsive, RTL & translation ready. Look no further. Neve is the perfect theme for you!', - 'requires' => '5.4', - 'requires_php' => '7.0', 'wporg' => true, ), 67 => array ( 'name' => 'Astra', 'slug' => 'astra', - 'version' => '3.7.3', 'preview_url' => 'https://wp-themes.com/astra/', - 'author' => - array ( - 'user_nicename' => 'brainstormforce', - 'profile' => 'https://profiles.wordpress.org/brainstormforce', - 'avatar' => 'https://secure.gravatar.com/avatar/9f4255d653745eaa037105cd5eab2295?s=96&d=monsterid&r=g', - 'display_name' => 'Brainstorm Force', - 'author' => 'Brainstorm Force', - 'author_url' => 'https://wpastra.com/about/', - ), 'screenshot_url' => '//ts.w.org/wp-content/themes/astra/screenshot.jpg?ver=3.7.3', - 'rating' => 98, - 'num_ratings' => 5005, 'homepage' => 'https://wordpress.org/themes/astra/', 'description' => 'Astra is fast, fully customizable & beautiful WordPress theme suitable for blog, personal portfolio, business website and WooCommerce storefront. It is very lightweight (less than 50KB on frontend) and offers unparalleled speed. Built with SEO in mind, Astra comes with Schema.org code integrated and is Native AMP ready so search engines will love your site. It offers special features and templates so it works perfectly with all page builders like Elementor, Beaver Builder, Visual Composer, SiteOrigin, Divi, etc. Some of the other features: # WooCommerce Ready # Responsive # RTL & Translation Ready # Extendible with premium addons # Regularly updated # Designed, Developed, Maintained & Supported by Brainstorm Force. Looking for a perfect base theme? Look no further. Astra is fast, fully customizable and WooCommerce ready theme that you can use for building any kind of website!', - 'requires' => '5.3', - 'requires_php' => '5.3', 'wporg' => true, ), 68 => array ( 'name' => 'Twenty Twelve', 'slug' => 'twentytwelve', - 'version' => '3.5', 'preview_url' => 'https://wp-themes.com/twentytwelve/', - 'author' => - array ( - 'user_nicename' => 'wordpressdotorg', - 'profile' => 'https://profiles.wordpress.org/wordpressdotorg', - 'avatar' => 'https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g', - 'display_name' => 'WordPress.org', - 'author' => 'the WordPress team', - 'author_url' => 'https://wordpress.org/', - ), 'screenshot_url' => '//ts.w.org/wp-content/themes/twentytwelve/screenshot.png?ver=3.5', - 'rating' => 92, - 'num_ratings' => 155, 'homepage' => 'https://wordpress.org/themes/twentytwelve/', 'description' => 'The 2012 theme for WordPress is a fully responsive theme that looks great on any device. Features include a front page template with its own widgets, an optional display font, styling for post formats on both index and single views, and an optional no-sidebar page template. Make it yours with a custom menu, header image, and background.', - 'requires' => '3.5', - 'requires_php' => '5.2.4', 'wporg' => true, ), 69 => array ( 'name' => 'Twenty Nineteen', 'slug' => 'twentynineteen', - 'version' => '2.1', 'preview_url' => 'https://wp-themes.com/twentynineteen/', - 'author' => - array ( - 'user_nicename' => 'wordpressdotorg', - 'profile' => 'https://profiles.wordpress.org/wordpressdotorg', - 'avatar' => 'https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g', - 'display_name' => 'WordPress.org', - 'author' => 'the WordPress team', - 'author_url' => 'https://wordpress.org/', - ), 'screenshot_url' => '//ts.w.org/wp-content/themes/twentynineteen/screenshot.png?ver=2.1', - 'rating' => 74, - 'num_ratings' => 59, 'homepage' => 'https://wordpress.org/themes/twentynineteen/', 'description' => 'Our 2019 default theme is designed to show off the power of the block editor. It features custom styles for all the default blocks, and is built so that what you see in the editor looks like what you\'ll see on your website. Twenty Nineteen is designed to be adaptable to a wide range of websites, whether you’re running a photo blog, launching a new business, or supporting a non-profit. Featuring ample whitespace and modern sans-serif headlines paired with classic serif body text, it\'s built to be beautiful on all screen sizes.', - 'requires' => '4.9.6', - 'requires_php' => '5.2.4', 'wporg' => true, ), 70 => array ( 'name' => 'Twenty Seventeen', 'slug' => 'twentyseventeen', - 'version' => '2.8', 'preview_url' => 'https://wp-themes.com/twentyseventeen/', - 'author' => - array ( - 'user_nicename' => 'wordpressdotorg', - 'profile' => 'https://profiles.wordpress.org/wordpressdotorg', - 'avatar' => 'https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g', - 'display_name' => 'WordPress.org', - 'author' => 'the WordPress team', - 'author_url' => 'https://wordpress.org/', - ), 'screenshot_url' => '//ts.w.org/wp-content/themes/twentyseventeen/screenshot.png?ver=2.8', - 'rating' => 88, - 'num_ratings' => 114, 'homepage' => 'https://wordpress.org/themes/twentyseventeen/', 'description' => 'Twenty Seventeen brings your site to life with header video and immersive featured images. With a focus on business sites, it features multiple sections on the front page as well as widgets, navigation and social menus, a logo, and more. Personalize its asymmetrical grid with a custom color scheme and showcase your multimedia content with post formats. Our default theme for 2017 works great in many languages, for any abilities, and on any device.', - 'requires' => '4.7', - 'requires_php' => '5.2.4', 'wporg' => true, ), 71 => array ( 'name' => 'Twenty Sixteen', 'slug' => 'twentysixteen', - 'version' => '2.5', 'preview_url' => 'https://wp-themes.com/twentysixteen/', - 'author' => - array ( - 'user_nicename' => 'wordpressdotorg', - 'profile' => 'https://profiles.wordpress.org/wordpressdotorg', - 'avatar' => 'https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g', - 'display_name' => 'WordPress.org', - 'author' => 'the WordPress team', - 'author_url' => 'https://wordpress.org/', - ), 'screenshot_url' => '//ts.w.org/wp-content/themes/twentysixteen/screenshot.png?ver=2.5', - 'rating' => 82, - 'num_ratings' => 79, 'homepage' => 'https://wordpress.org/themes/twentysixteen/', 'description' => 'Twenty Sixteen is a modernized take on an ever-popular WordPress layout — the horizontal masthead with an optional right sidebar that works perfectly for blogs and websites. It has custom color options with beautiful default color schemes, a harmonious fluid grid using a mobile-first approach, and impeccable polish in every detail. Twenty Sixteen will make your WordPress look beautiful everywhere.', - 'requires' => '4.4', - 'requires_php' => '5.2.4', 'wporg' => true, ), 72 => array ( 'name' => 'Twenty Fifteen', 'slug' => 'twentyfifteen', - 'version' => '3.0', 'preview_url' => 'https://wp-themes.com/twentyfifteen/', - 'author' => - array ( - 'user_nicename' => 'wordpressdotorg', - 'profile' => 'https://profiles.wordpress.org/wordpressdotorg', - 'avatar' => 'https://secure.gravatar.com/avatar/61ee2579b8905e62b4b4045bdc92c11a?s=96&d=monsterid&r=g', - 'display_name' => 'WordPress.org', - 'author' => 'the WordPress team', - 'author_url' => 'https://wordpress.org/', - ), 'screenshot_url' => '//ts.w.org/wp-content/themes/twentyfifteen/screenshot.png?ver=3.0', - 'rating' => 88, - 'num_ratings' => 50, 'homepage' => 'https://wordpress.org/themes/twentyfifteen/', 'description' => 'Our 2015 default theme is clean, blog-focused, and designed for clarity. Twenty Fifteen\'s simple, straightforward typography is readable on a wide variety of screen sizes, and suitable for multiple languages. We designed it using a mobile-first approach, meaning your content takes center-stage, regardless of whether your visitors arrive by smartphone, tablet, laptop, or desktop computer.', - 'requires' => false, - 'requires_php' => '5.2.4', 'wporg' => true, ), ); \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 21affaff9b0..603e862207d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3673,12 +3673,6 @@ "requires": { "type-fest": "^0.8.1" } - }, - "prettier": { - "version": "npm:wp-prettier@2.2.1-beta-1", - "resolved": "https://registry.npmjs.org/wp-prettier/-/wp-prettier-2.2.1-beta-1.tgz", - "integrity": "sha512-+JHkqs9LC/JPp51yy1hzs3lQ7qeuWCwOcSzpQNeeY/G7oSpnF61vxt7hRh87zNRTr6ob2ndy0W8rVzhgrcA+Gw==", - "dev": true } } }, @@ -16036,6 +16030,12 @@ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, + "prettier": { + "version": "npm:wp-prettier@2.2.1-beta-1", + "resolved": "https://registry.npmjs.org/wp-prettier/-/wp-prettier-2.2.1-beta-1.tgz", + "integrity": "sha512-+JHkqs9LC/JPp51yy1hzs3lQ7qeuWCwOcSzpQNeeY/G7oSpnF61vxt7hRh87zNRTr6ob2ndy0W8rVzhgrcA+Gw==", + "dev": true + }, "prettier-linter-helpers": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", From 112a7722deca834dbd778a1836f1154ff01057aa Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Mon, 25 Oct 2021 16:00:11 +0530 Subject: [PATCH 066/105] Prevent showing AMP compatibility message in AMP compatible tab --- assets/css/src/amp-admin.css | 4 ++++ assets/src/admin/amp-plugin-install.js | 27 ++++++++++++++++++++++---- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/assets/css/src/amp-admin.css b/assets/css/src/amp-admin.css index 8420aff4e84..2c126273657 100644 --- a/assets/css/src/amp-admin.css +++ b/assets/css/src/amp-admin.css @@ -34,6 +34,10 @@ vertical-align: top; } +.plugin-install-tab-amp-compatible .plugin-card-bottom { + display: none; +} + .extension-card-px-message .tooltiptext { visibility: hidden; width: 60%; diff --git a/assets/src/admin/amp-plugin-install.js b/assets/src/admin/amp-plugin-install.js index 84340fbf279..4a56339658b 100644 --- a/assets/src/admin/amp-plugin-install.js +++ b/assets/src/admin/amp-plugin-install.js @@ -21,6 +21,14 @@ const ampPluginInstall = { this.addAMPMessageInSearchResult(); }, + /** + * Check if "AMP Compatible" tab is open or not. + */ + isAMPCompatibleTab() { + const queryString = window.location.search; + return ( queryString && -1 !== queryString.indexOf( 'tab=amp-compatible' ) ); + }, + /** * Add message for AMP Compatibility in AMP-compatible plugins card after search result comes in. */ @@ -31,6 +39,11 @@ const ampPluginInstall = { const callback = debounce( () => { if ( 'undefined' !== typeof wp.updates.searchRequest ) { wp.updates.searchRequest.done( () => { + const wrap = document.querySelector( '.plugin-install-tab-amp-compatible' ); + if ( wrap ) { + wrap.classList.remove( 'plugin-install-tab-amp-compatible' ); + wrap.classList.add( 'plugin-install-tab-search-result' ); + } this.addAmpMessage(); } ); } @@ -45,6 +58,10 @@ const ampPluginInstall = { * Add message for AMP Compatibility in AMP-compatible plugins card. */ addAmpMessage() { + if ( this.isAMPCompatibleTab() ) { + return; + } + for ( const pluginSlug of AMP_PLUGINS ) { const pluginCardElement = document.querySelector( `.plugin-card.plugin-card-${ pluginSlug }` ); @@ -77,11 +94,13 @@ const ampPluginInstall = { * Remove the additional info from plugin card in "AMP Compatible" tab. */ removeAdditionalInfo() { - const pluginCardBottom = document.querySelectorAll( '.plugin-install-tab-amp-compatible .plugin-card-bottom' ); + if ( this.isAMPCompatibleTab() ) { + const pluginCardBottom = document.querySelectorAll( '.plugin-install-tab-amp-compatible .plugin-card-bottom' ); - if ( pluginCardBottom ) { - for ( const elementNode of pluginCardBottom ) { - elementNode.remove(); + if ( pluginCardBottom ) { + for ( const elementNode of pluginCardBottom ) { + elementNode.remove(); + } } } }, From a0514ddda83374110ffca1262d76733232f264f6 Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 26 Oct 2021 17:48:51 -0700 Subject: [PATCH 067/105] Speed up update-extension-files by requesting ecosystem data with links embedded --- bin/update-extension-files.js | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/bin/update-extension-files.js b/bin/update-extension-files.js index 7b71f82a0ae..a97f606a064 100644 --- a/bin/update-extension-files.js +++ b/bin/update-extension-files.js @@ -32,7 +32,7 @@ class UpdateExtensionFiles { let totalPage; const pluginTerm = 552; const themeTerm = 245; - const url = 'https://amp-wp.org/wp-json/wp/v2/ecosystem'; + const url = 'https://amp-wp.org/wp-json/wp/v2/ecosystem?_embed'; const queryParams = { ecosystem_types: [ themeTerm, pluginTerm ], @@ -139,7 +139,7 @@ class UpdateExtensionFiles { // Plugin data for amp-wp.org if ( null === matches || null === plugin ) { - plugin = await this.preparePluginData( item ); + plugin = this.preparePluginData( item ); } delete plugin.description; @@ -164,7 +164,7 @@ class UpdateExtensionFiles { // Theme data for amp-wp.org if ( null === matches || null === theme ) { - theme = await this.prepareThemeData( item ); + theme = this.prepareThemeData( item ); } return theme; @@ -233,15 +233,14 @@ class UpdateExtensionFiles { * Transform theme data fetched from amp-wp.org to compatible with theme install screen. * * @param {Object} item Theme object. - * @return {Promise} Theme object compatible for theme install screen. + * @return {Object} Theme object compatible for theme install screen. */ - async prepareThemeData( item ) { - const imageRequestUrl = item._links[ 'wp:featuredmedia' ][ 0 ].href; - // eslint-disable-next-line no-console - console.log( `Fetching theme data: ${ imageRequestUrl }` ); - let attachment = await axios.get( imageRequestUrl ); - attachment = attachment.data; + prepareThemeData( item ) { + if ( ! item._embedded?.[ 'wp:featuredmedia' ]?.[ 0 ] ) { + throw new Error( `Missing featured image for theme '${ item.slug }'` ); + } + const attachment = item._embedded[ 'wp:featuredmedia' ][ 0 ]; return { name: item.title.rendered, slug: item.slug, @@ -316,15 +315,14 @@ class UpdateExtensionFiles { * Transform plugin data fetched from amp-wp.org to compatible with theme install screen. * * @param {Object} item Plugin object. - * @return {Promise} Plugin object compatible for plugin install screen. + * @return {Object} Plugin object compatible for plugin install screen. */ - async preparePluginData( item ) { - const imageRequestUrl = item._links[ 'wp:featuredmedia' ][ 0 ].href; - // eslint-disable-next-line no-console - console.log( `Fetching theme data: ${ imageRequestUrl }` ); - let attachment = await axios.get( imageRequestUrl ); - attachment = attachment.data; + preparePluginData( item ) { + if ( ! item._embedded?.[ 'wp:featuredmedia' ]?.[ 0 ] ) { + throw new Error( `Missing featured image for ${ item.slug }` ); + } + const attachment = item._embedded[ 'wp:featuredmedia' ][ 0 ]; return { name: item.title.rendered, slug: item.slug, From 917174803a5431f64e787a8f21cb2b7ac0ad66f3 Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 26 Oct 2021 21:08:40 -0700 Subject: [PATCH 068/105] Regenerate ecosystem data after data entry fixes on amp-wp.org --- includes/ecosystem-data/plugins.php | 70 ++++++++++++++--------------- includes/ecosystem-data/themes.php | 50 ++++++++++----------- 2 files changed, 56 insertions(+), 64 deletions(-) diff --git a/includes/ecosystem-data/plugins.php b/includes/ecosystem-data/plugins.php index fd006cf0c59..c47f314e408 100644 --- a/includes/ecosystem-data/plugins.php +++ b/includes/ecosystem-data/plugins.php @@ -15,7 +15,7 @@ 'name' => 'Podcast Player – Your Podcasting Companion', 'slug' => 'podcast-player', 'homepage' => 'https://vedathemes.com/podcast-player/', - 'short_description' => 'Showcase your podcast only using podcasting feed url. Use custom widget, shortcode or editor block…', + 'short_description' => 'Showcase your podcast only using podcasting feed url. Use custom widget, shortcode or editor block to display podcast player anywhere on your site.', 'icons' => array ( '1x' => 'https://ps.w.org/podcast-player/assets/icon-256x256.png?rev=2025683', @@ -40,7 +40,7 @@ 'name' => 'ShortPixel Image Optimizer', 'slug' => 'shortpixel-image-optimiser', 'homepage' => 'https://shortpixel.com/', - 'short_description' => 'Speed up your website & boost your SEO by compressing old & new images and PDFs. Optimize and convert WebP & AVIF.', + 'short_description' => 'Speed up your website & boost your SEO by compressing old & new images and…', 'icons' => array ( '1x' => 'https://ps.w.org/shortpixel-image-optimiser/assets/icon-128x128.png?rev=1038819', @@ -92,7 +92,7 @@ 'name' => 'YARPP – Yet Another Related Posts Plugin', 'slug' => 'yet-another-related-posts-plugin', 'homepage' => 'https://yarpp.com/', - 'short_description' => 'The best WordPress plugin for displaying related posts. Simple and flexible, with a powerful proven…', + 'short_description' => 'The best WordPress plugin for displaying related posts. Simple and flexible, with a powerful proven algorithm and inbuilt caching.', 'icons' => array ( '1x' => 'https://ps.w.org/yet-another-related-posts-plugin/assets/icon-128x128.png?rev=2549977', @@ -118,7 +118,7 @@ 'name' => 'Floating Button', 'slug' => 'floating-button', 'homepage' => 'https://wordpress.org/plugins/floating-button/', - 'short_description' => 'Easily create a custom sticky floating buttons. The Floating Button will be the effective solution…', + 'short_description' => 'Easily create a custom sticky floating buttons. The Floating Button will be the effective solution for increasing the recognition of your web resource', 'icons' => array ( '1x' => 'https://ps.w.org/floating-button/assets/icon-128x128.png?rev=2533016', @@ -145,7 +145,7 @@ 'name' => 'WP Recipe Maker', 'slug' => 'wp-recipe-maker', 'homepage' => 'http://bootstrapped.ventures/wp-recipe-maker/', - 'short_description' => 'The easy and user-friendly recipe plugin for everyone. Automatic JSON-LD metadata for food AND how-to recipes will improve your SEO!', + 'short_description' => 'The easy and user-friendly recipe plugin for everyone. Automatic JSON-LD metadata for food AND how-to…', 'icons' => array ( '1x' => 'https://ps.w.org/wp-recipe-maker/assets/icon-128x128.png?rev=1491788', @@ -158,7 +158,7 @@ 'name' => 'Slim SEO – Fast & Automated WordPress SEO Plugin', 'slug' => 'slim-seo', 'homepage' => 'https://wpslimseo.com', - 'short_description' => 'A full-featured SEO plugin for WordPress that's lightweight, blazing fast with minimum configuration. No bloats,…', + 'short_description' => 'A full-featured SEO plugin for WordPress that's lightweight, blazing fast with minimum configuration. No bloats, no ads and just works!', 'icons' => array ( '1x' => 'https://ps.w.org/slim-seo/assets/icon.svg?rev=2005049', @@ -197,7 +197,7 @@ 'name' => 'Blackhole for Bad Bots', 'slug' => 'blackhole-bad-bots', 'homepage' => 'https://perishablepress.com/blackhole-bad-bots/', - 'short_description' => 'Blackhole is a WordPress security plugin that detects and traps bad bots in a virtual…', + 'short_description' => 'Blackhole is a WordPress security plugin that detects and traps bad bots in a virtual black hole, where they are denied access to your entire site.', 'icons' => array ( '1x' => 'https://ps.w.org/blackhole-bad-bots/assets/icon-128x128.png?rev=1471215', @@ -210,7 +210,7 @@ 'name' => 'Page View Count', 'slug' => 'page-views-count', 'homepage' => '', - 'short_description' => 'Places an icon, all time views count and views today count at the bottom of…', + 'short_description' => 'Places an icon, all time views count and views today count at the bottom of posts, pages and custom post types on any WordPress website.', 'icons' => array ( '1x' => 'https://ps.w.org/page-views-count/assets/icon.svg?rev=986301', @@ -239,7 +239,7 @@ 'name' => 'Newspack Newsletters', 'slug' => 'newspack-newsletters', 'homepage' => 'https://newspack.pub', - 'short_description' => 'Create email newsletters with the Gutenberg editor and distribute them with your Mailchimp or Constant…', + 'short_description' => 'Create email newsletters with the Gutenberg editor and distribute them with your Mailchimp or Constant Contact mailing lists.', 'icons' => array ( '1x' => 'https://ps.w.org/newspack-newsletters/assets/icon.svg?rev=2475195', @@ -253,7 +253,7 @@ 'name' => 'Web Stories', 'slug' => 'web-stories', 'homepage' => 'https://wp.stories.google/', - 'short_description' => 'Web Stories are a visual storytelling format for the open web which immerses your readers…', + 'short_description' => 'Web Stories are a visual storytelling format for the open web which immerses your readers in fast-loading, full-screen, and visually rich experiences.', 'icons' => array ( '1x' => 'https://ps.w.org/web-stories/assets/icon.svg?rev=2386543', @@ -267,7 +267,7 @@ 'name' => 'Jetpack – WP Security, Backup, Speed, & Growth', 'slug' => 'jetpack', 'homepage' => 'https://jetpack.com', - 'short_description' => 'Improve your WP security with powerful one-click tools like backup and malware scan. Get essential free tools including stats, CDN and social sharing.', + 'short_description' => 'Improve your WP security with powerful one-click tools like backup and malware scan. Get essential…', 'icons' => array ( '1x' => 'https://ps.w.org/jetpack/assets/icon.svg?rev=2394525', @@ -294,7 +294,7 @@ 'name' => 'Antispam Bee', 'slug' => 'antispam-bee', 'homepage' => 'https://antispambee.pluginkollektiv.org/', - 'short_description' => 'Antispam plugin with a sophisticated tool set for effective day to day comment and trackback spam-fighting. Build with data protection and privacy in …', + 'short_description' => 'Antispam plugin with a sophisticated tool set for effective day to day comment and trackback…', 'icons' => array ( '1x' => 'https://ps.w.org/antispam-bee/assets/icon-128x128.png?rev=977629', @@ -347,7 +347,7 @@ 'name' => 'Page Builder Gutenberg Blocks – CoBlocks', 'slug' => 'coblocks', 'homepage' => '', - 'short_description' => 'CoBlocks is a suite of page builder WordPress blocks for Gutenberg, with 10+ new blocks and a true page builder experience with rows and columns.', + 'short_description' => 'CoBlocks is a suite of page builder WordPress blocks for Gutenberg, with 10+ new blocks…', 'icons' => array ( '1x' => 'https://ps.w.org/coblocks/assets/icon-128x128.jpg?rev=2243972', @@ -438,7 +438,7 @@ 'name' => 'Rank Math SEO – Best SEO Plugin For WordPress To Increase Your SEO Traffic', 'slug' => 'seo-by-rank-math', 'homepage' => 'https://s.rankmath.com/home', - 'short_description' => 'Rank Math SEO is the Best WordPress SEO plugin combines the features of many SEO…', + 'short_description' => 'Rank Math SEO is the Best WordPress SEO plugin combines the features of many SEO tools in a single package & helps you multiply your SEO traffic.', 'icons' => array ( '1x' => 'https://ps.w.org/seo-by-rank-math/assets/icon.svg?rev=2348086', @@ -452,7 +452,7 @@ 'name' => 'Head, Footer and Post Injections', 'slug' => 'header-footer', 'homepage' => 'https://www.satollo.net/plugins/header-footer', - 'short_description' => 'Header and Footer plugin let you to add html code to the head and footer…', + 'short_description' => 'Header and Footer plugin let you to add html code to the head and footer sections of your blog... and more!', 'icons' => array ( '1x' => 'https://ps.w.org/header-footer/assets/icon-256x256.png?rev=1064219', @@ -505,7 +505,7 @@ 'name' => 'Schema', 'slug' => 'schema', 'homepage' => 'https://schema.press', - 'short_description' => 'Get the next generation of Schema Structured Data to enhance your WordPress site presentation in Google search results.', + 'short_description' => 'Get the next generation of Schema Structured Data to enhance your WordPress site presentation in…', 'icons' => array ( '1x' => 'https://ps.w.org/schema/assets/icon-128x128.png?rev=1750172', @@ -530,7 +530,7 @@ 'name' => 'Pym.js Embeds', 'slug' => 'pym-shortcode', 'homepage' => 'https://github.com/INN/pym-shortcode', - 'short_description' => 'A WordPress block and shortcode for embedding iframes that are responsive horizontally and vertically, using the NPR Visuals Team's Pym.js.', + 'short_description' => 'A WordPress block and shortcode for embedding iframes that are responsive horizontally and vertically, using…', 'icons' => array ( '1x' => 'https://ps.w.org/pym-shortcode/assets/icon.svg?rev=1944461', @@ -567,19 +567,16 @@ ), 42 => array ( - 'name' => 'Site Kit by Google', + 'name' => 'Site Kit by Google – Analytics, Search Console, AdSense, Speed', 'slug' => 'google-site-kit', - 'homepage' => 'https://sitekit.withgoogle.com/', - 'short_description' => '

Site Kit is the official WordPress plugin from Google for insights about how people find and use your site. Site Kit is the one-stop solution to deploy, manage, and get insights from critical Google tools to make the site successful on the web. It provides authoritative, up-to-date insights from multiple Google products directly on the

- -', + 'homepage' => 'https://sitekit.withgoogle.com', + 'short_description' => 'Site Kit is a one-stop solution for WordPress users to use everything Google has to offer to make them successful on the web.', 'icons' => array ( - '1x' => 'https://amp-wp.org/wp-content/uploads/2019/12/site-kit-by-google-logo-285x160.png', - '2x' => 'https://amp-wp.org/wp-content/uploads/2019/12/site-kit-by-google-logo-372x209.png', - 'svg' => '', + '1x' => 'https://ps.w.org/google-site-kit/assets/icon-128x128.png?rev=2181376', + '2x' => 'https://ps.w.org/google-site-kit/assets/icon-256x256.png?rev=2181376', ), - 'wporg' => false, + 'wporg' => true, ), 43 => array ( @@ -682,7 +679,7 @@ 'name' => 'WP GDPR Cookie Notice', 'slug' => 'wp-gdpr-cookie-notice', 'homepage' => 'https://wordpress.org/plugins/wp-gdpr-cookie-notice/', - 'short_description' => 'Simple performant cookie consent notice that supports AMP, Web Stories, granular cookie control and live…', + 'short_description' => 'Simple performant cookie consent notice that supports AMP, Web Stories, granular cookie control and live preview customization.', 'icons' => array ( '1x' => 'https://ps.w.org/wp-gdpr-cookie-notice/assets/icon-128x128.png?rev=2042024', @@ -695,7 +692,7 @@ 'name' => 'WordPress Share Buttons Plugin – AddThis', 'slug' => 'addthis', 'homepage' => 'https://wordpress.org/plugins/addthis/', - 'short_description' => 'Now compatible with the AMP Plugin! Free Share Buttons from AddThis. Share to Messenger, WhatsApp, Facebook, Twitter, Pinterest and many more.', + 'short_description' => 'Now compatible with the AMP Plugin! Free Share Buttons from AddThis. Share to Messenger, WhatsApp,…', 'icons' => array ( '1x' => 'https://ps.w.org/addthis/assets/icon-128x128.png?rev=1223867', @@ -735,7 +732,7 @@ 'name' => 'Gutenberg', 'slug' => 'gutenberg', 'homepage' => 'https://github.com/WordPress/gutenberg', - 'short_description' => 'The Gutenberg plugin provides editing, customization, and site building features to WordPress. This beta plugin allows you to test bleeding-edge featu …', + 'short_description' => 'The Gutenberg plugin provides editing, customization, and site building features to WordPress. This beta plugin…', 'icons' => array ( '1x' => 'https://ps.w.org/gutenberg/assets/icon-128x128.jpg?rev=1776042', @@ -745,17 +742,16 @@ ), 55 => array ( - 'name' => 'Setka Editor', + 'name' => 'Page-Builder for Content Experience – Setka Editor', 'slug' => 'setka-editor', - 'homepage' => 'https://setka.io/', - 'short_description' => '

Setka Editor is the first WYSIWYG plugin with page builder functionality.

-', + 'homepage' => 'https://editor.setka.io/', + 'short_description' => 'A WordPress plugin for beautiful content that converts. The editor you’ve been waiting for to design your…', 'icons' => array ( - '1x' => 'https://amp-wp.org/wp-content/uploads/2018/11/Setka-Banner-285x160.jpg', - '2x' => 'https://amp-wp.org/wp-content/uploads/2018/11/Setka-Banner-372x209.jpg', - 'svg' => '', + '1x' => 'https://ps.w.org/setka-editor/assets/icon.svg?rev=2408232', + '2x' => 'https://ps.w.org/setka-editor/assets/icon-256x256.png?rev=2408232', + 'svg' => 'https://ps.w.org/setka-editor/assets/icon.svg?rev=2408232', ), - 'wporg' => false, + 'wporg' => true, ), ); \ No newline at end of file diff --git a/includes/ecosystem-data/themes.php b/includes/ecosystem-data/themes.php index 1581e1c9043..64911bfb3f6 100644 --- a/includes/ecosystem-data/themes.php +++ b/includes/ecosystem-data/themes.php @@ -124,15 +124,11 @@ array ( 'name' => 'Occasio', 'slug' => 'occasio', - 'preview_url' => 'https://themezee.com/themes/occasio/', - 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/12/occasio.jpg', - 'homepage' => 'https://themezee.com/themes/occasio/', - 'description' => ' - - -

A sleek and modern Blogging & Magazine theme, carefully designed for writers using the Gutenberg Block Editor.

-', - 'wporg' => false, + 'preview_url' => 'https://wp-themes.com/occasio/', + 'screenshot_url' => '//ts.w.org/wp-content/themes/occasio/screenshot.jpg?ver=1.0.7', + 'homepage' => 'https://wordpress.org/themes/occasio/', + 'description' => 'Occasio is a sleek and modern Blogging & Magazine WordPress Theme, carefully designed for writers using the Gutenberg Block Editor. The theme supports several blog layouts, extensive post settings and various page templates. It is also AMP-ready and accessible. Start your blog now!', + 'wporg' => true, ), 12 => array ( @@ -297,7 +293,7 @@ 28 => array ( 'name' => 'Stow', - 'slug' => 'stow-2', + 'slug' => 'stow', 'preview_url' => 'https://wordpress.com/theme/stow', 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/08/stow.jpg', 'homepage' => 'https://wordpress.com/theme/stow', @@ -325,7 +321,7 @@ 30 => array ( 'name' => 'Rivington', - 'slug' => 'rivington-2', + 'slug' => 'rivington', 'preview_url' => 'https://wordpress.com/theme/rivington', 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/08/rivington.jpg', 'homepage' => 'https://wordpress.com/theme/rivington', @@ -339,7 +335,7 @@ 31 => array ( 'name' => 'Redhill', - 'slug' => 'redhill-2', + 'slug' => 'redhill', 'preview_url' => 'https://wordpress.com/theme/redhill', 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/08/redhill.jpg', 'homepage' => 'https://wordpress.com/theme/redhill', @@ -353,7 +349,7 @@ 32 => array ( 'name' => 'Morden', - 'slug' => 'morden-2', + 'slug' => 'morden', 'preview_url' => 'https://wordpress.com/theme/morden', 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/08/morden.jpg', 'homepage' => 'https://wordpress.com/theme/morden', @@ -367,7 +363,7 @@ 33 => array ( 'name' => 'Maywood', - 'slug' => 'maywood-2', + 'slug' => 'maywood', 'preview_url' => 'https://wordpress.com/theme/maywood', 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/08/maywood.jpg', 'homepage' => 'https://wordpress.com/theme/maywood', @@ -395,7 +391,7 @@ 35 => array ( 'name' => 'Leven', - 'slug' => 'leven-2', + 'slug' => 'leven', 'preview_url' => 'https://wordpress.com/theme/leven', 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/08/leven.jpg', 'homepage' => 'https://wordpress.com/theme/leven', @@ -409,7 +405,7 @@ 36 => array ( 'name' => 'Hever', - 'slug' => 'hever-2', + 'slug' => 'hever', 'preview_url' => 'https://wordpress.com/theme/hever', 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/08/hever.jpg', 'homepage' => 'https://wordpress.com/theme/hever', @@ -423,7 +419,7 @@ 37 => array ( 'name' => 'Exford', - 'slug' => 'exford-2', + 'slug' => 'exford', 'preview_url' => 'https://wordpress.com/theme/exford', 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/08/exford.jpg', 'homepage' => 'https://wordpress.com/theme/exford', @@ -437,7 +433,7 @@ 38 => array ( 'name' => 'Brompton', - 'slug' => 'brompton-2', + 'slug' => 'brompton', 'preview_url' => 'https://wordpress.com/theme/brompton', 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/08/brompton.jpg', 'homepage' => 'https://wordpress.com/theme/brompton', @@ -451,7 +447,7 @@ 39 => array ( 'name' => 'Barnsbury', - 'slug' => 'barnsbury-2', + 'slug' => 'barnsbury', 'preview_url' => 'https://wordpress.com/theme/barnsbury', 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/08/Barnsbury.jpg', 'homepage' => 'https://wordpress.com/theme/barnsbury', @@ -465,7 +461,7 @@ 40 => array ( 'name' => 'Balasana', - 'slug' => 'balasana-2', + 'slug' => 'balasana', 'preview_url' => 'https://wordpress.com/theme/balasana', 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/08/Balasana.jpg', 'homepage' => 'https://wordpress.com/theme/balasana', @@ -479,7 +475,7 @@ 41 => array ( 'name' => 'Alves', - 'slug' => 'alves-2', + 'slug' => 'alves', 'preview_url' => 'https://wordpress.com/theme/alves', 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/08/Alves.jpg', 'homepage' => 'https://wordpress.com/theme/alves', @@ -493,7 +489,7 @@ 42 => array ( 'name' => 'Varia', - 'slug' => 'varia-2', + 'slug' => 'varia', 'preview_url' => 'https://wordpress.com/theme/varia', 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/08/varia.jpg', 'homepage' => 'https://wordpress.com/theme/varia', @@ -605,7 +601,7 @@ 52 => array ( 'name' => 'Scott', - 'slug' => 'scott-2', + 'slug' => 'scott', 'preview_url' => 'https://github.com/Automattic/newspack-theme/releases', 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/01/scott.jpg', 'homepage' => 'https://github.com/Automattic/newspack-theme/releases', @@ -619,7 +615,7 @@ 53 => array ( 'name' => 'Katharine', - 'slug' => 'katharine-2', + 'slug' => 'katharine', 'preview_url' => 'https://github.com/Automattic/newspack-theme/releases', 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/01/katharine.jpg', 'homepage' => 'https://github.com/Automattic/newspack-theme/releases', @@ -633,7 +629,7 @@ 54 => array ( 'name' => 'Joseph', - 'slug' => 'joseph-2', + 'slug' => 'joseph', 'preview_url' => 'https://github.com/Automattic/newspack-theme/releases', 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/01/joseph-1.jpg', 'homepage' => 'https://github.com/Automattic/newspack-theme/releases', @@ -647,7 +643,7 @@ 55 => array ( 'name' => 'Nelson', - 'slug' => 'nelson-2', + 'slug' => 'nelson', 'preview_url' => 'https://github.com/Automattic/newspack-theme/releases', 'screenshot_url' => 'https://amp-wp.org/wp-content/uploads/2020/01/nelson.jpg', 'homepage' => 'https://github.com/Automattic/newspack-theme/releases', @@ -775,7 +771,7 @@ 'name' => 'Neve', 'slug' => 'neve', 'preview_url' => 'https://wp-themes.com/neve/', - 'screenshot_url' => '//ts.w.org/wp-content/themes/neve/screenshot.png?ver=3.0.6', + 'screenshot_url' => '//ts.w.org/wp-content/themes/neve/screenshot.png?ver=3.0.9', 'homepage' => 'https://wordpress.org/themes/neve/', 'description' => 'Neve is a super fast, easily customizable, multi-purpose theme. It’s perfect for blogs, small business, startups, agencies, firms, e-commerce shops (WooCommerce storefront) as well as personal portfolio sites and most types of projects. A fully AMP optimized and responsive theme, Neve will load in mere seconds and adapt perfectly on any viewing device. While it is lightweight and has a minimalist design, the theme is highly extendable, it has a highly SEO optimized code, resulting in top rankings in Google search results. Neve works perfectly with Gutenberg and the most popular page builders (Elementor, Brizy, Beaver Builder, Visual Composer, SiteOrigin, Divi). Neve is also WooCommerce ready, responsive, RTL & translation ready. Look no further. Neve is the perfect theme for you!', 'wporg' => true, From 5318ec1fc323971c3da63a8588c47a732683113b Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Fri, 29 Oct 2021 12:37:26 +0530 Subject: [PATCH 069/105] Move AMP compatible message from bottom to top left corner --- assets/css/src/amp-admin.css | 32 ++++++++++++-------- assets/src/admin/amp-plugin-install.js | 3 +- assets/src/admin/amp-theme-install.js | 4 +-- assets/src/admin/theme-install/view/theme.js | 5 ++- 4 files changed, 23 insertions(+), 21 deletions(-) diff --git a/assets/css/src/amp-admin.css b/assets/css/src/amp-admin.css index 2c126273657..bc9760ff919 100644 --- a/assets/css/src/amp-admin.css +++ b/assets/css/src/amp-admin.css @@ -2,24 +2,31 @@ object-fit: contain; /* Account for non-square icons being used. */ } +.plugin-card { + position: relative; +} + .extension-card-px-message { text-align: center; - padding: 7px 20px; + padding: 0; clear: both; - background-color: #e7e7e7; - border-top: 2px solid #dcdcde; + background-color: #fff; color: #3c434a; - position: relative; + position: absolute; + top: -10px; + left: -10px; + border-radius: 15px; } .amp-logo-icon { background-image: url("../images/amp-logo-icon.svg"); background-color: transparent; - background-size: 20px 20px; - height: 20px; - width: 20px; + background-size: 30px; + height: 30px; + width: 30px; display: inline-block; vertical-align: middle; + cursor: pointer; } .amp-logo-icon.small { @@ -48,19 +55,18 @@ padding: 5px; position: absolute; z-index: 1; - bottom: 100%; - left: 20%; + left: 40px; + min-width: 200px; } .tooltiptext::after { content: ""; position: absolute; - top: 100%; - left: 50%; - margin-left: -7px; + top: 10px; + right: 100%; border-width: 7px; border-style: solid; - border-color: rgba(0, 0, 0, 0.8) transparent transparent transparent; + border-color: transparent rgba(0, 0, 0, 0.8) transparent transparent; } .extension-card-px-message:hover .tooltiptext { diff --git a/assets/src/admin/amp-plugin-install.js b/assets/src/admin/amp-plugin-install.js index 4a56339658b..a0d69419ff3 100644 --- a/assets/src/admin/amp-plugin-install.js +++ b/assets/src/admin/amp-plugin-install.js @@ -84,14 +84,13 @@ const ampPluginInstall = { messageElement.append( iconElement ); messageElement.append( tooltipElement ); messageElement.append( ' ' ); - messageElement.append( __( 'AMP Compatible', 'amp' ) ); pluginCardElement.appendChild( messageElement ); } }, /** - * Remove the additional info from plugin card in "AMP Compatible" tab. + * Remove the additional info from the plugin card in the "AMP Compatible" tab. */ removeAdditionalInfo() { if ( this.isAMPCompatibleTab() ) { diff --git a/assets/src/admin/amp-theme-install.js b/assets/src/admin/amp-theme-install.js index e7e2746d031..0314043b8b3 100644 --- a/assets/src/admin/amp-theme-install.js +++ b/assets/src/admin/amp-theme-install.js @@ -2,7 +2,6 @@ * WordPress dependencies */ import domReady from '@wordpress/dom-ready'; -import { __ } from '@wordpress/i18n'; /** * Internal dependencies @@ -20,7 +19,7 @@ const ampThemeInstall = { }, /** - * Add new tab for PX Enhanced theme in theme install page. + * Add a new tab for PX Enhanced theme in theme install page. */ addTab() { const filterLinks = document.querySelector( '.filter-links' ); @@ -31,7 +30,6 @@ const ampThemeInstall = { const listItem = document.createElement( 'li' ); const anchorElement = document.createElement( 'a' ); - anchorElement.append( __( 'AMP Compatible', 'amp' ) ); anchorElement.setAttribute( 'href', '#' ); anchorElement.setAttribute( 'data-sort', 'amp-compatible' ); diff --git a/assets/src/admin/theme-install/view/theme.js b/assets/src/admin/theme-install/view/theme.js index f8ede519983..5c8337a0720 100644 --- a/assets/src/admin/theme-install/view/theme.js +++ b/assets/src/admin/theme-install/view/theme.js @@ -49,7 +49,6 @@ export default wpThemeView.extend( { messageElement.append( iconElement ); messageElement.append( tooltipElement ); messageElement.append( ' ' ); - messageElement.append( __( 'AMP Compatible', 'amp' ) ); element.appendChild( messageElement ); } @@ -102,7 +101,7 @@ export default wpThemeView.extend( { }, /** - * Check if theme is AMP compatible or not. + * Check if a theme is AMP compatible or not. * * @param {string} slug Theme slug. * @return {boolean} True if theme is AMP compatible, Otherwise False. @@ -112,7 +111,7 @@ export default wpThemeView.extend( { }, /** - * Check if theme is from WordPress org or not. + * Check if a theme is from WordPress org or not. * * @param {string} slug Theme slug. * @return {boolean} True if theme is listed in WordPress org, Otherwise False. From 2fbad0ea8cc0b38f2fa80a20c5731fd567b2c5b5 Mon Sep 17 00:00:00 2001 From: Dhaval Parekh Date: Fri, 29 Oct 2021 15:02:23 +0530 Subject: [PATCH 070/105] Update package-lock.json --- package-lock.json | 50610 +++++++++++++++++++++++++++++++++++++++----- 1 file changed, 44837 insertions(+), 5773 deletions(-) diff --git a/package-lock.json b/package-lock.json index 603e862207d..a66b1673017 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,58 +1,152 @@ { "name": "amp-wp", + "lockfileVersion": 2, "requires": true, - "lockfileVersion": 1, - "dependencies": { - "@actions/github": { + "packages": { + "": { + "name": "amp-wp", + "license": "GPL-2.0-or-later", + "dependencies": { + "@wordpress/api-fetch": "5.2.3", + "@wordpress/autop": "3.2.2", + "@wordpress/components": "18.0.0", + "@wordpress/compose": "5.0.3", + "@wordpress/date": "4.2.2", + "@wordpress/dom-ready": "3.2.2", + "@wordpress/editor": "12.0.0", + "@wordpress/element": "4.0.2", + "@wordpress/escape-html": "2.2.2", + "@wordpress/html-entities": "3.2.2", + "@wordpress/i18n": "4.2.3", + "@wordpress/icons": "6.0.0", + "@wordpress/is-shallow-equal": "4.2.0", + "@wordpress/url": "3.2.3", + "classnames": "2.3.1", + "clipboard": "2.0.8", + "prop-types": "15.7.2", + "react": "17.0.2", + "react-dom": "17.0.2", + "uuid": "8.3.2" + }, + "devDependencies": { + "@actions/github": "5.0.0", + "@babel/core": "7.15.8", + "@babel/plugin-proposal-class-properties": "7.14.5", + "@wordpress/babel-preset-default": "6.3.3", + "@wordpress/block-editor": "7.0.3", + "@wordpress/blocks": "11.1.1", + "@wordpress/browserslist-config": "4.1.0", + "@wordpress/data": "6.1.1", + "@wordpress/dependency-extraction-webpack-plugin": "3.2.1", + "@wordpress/e2e-test-utils": "5.4.4", + "@wordpress/edit-post": "5.0.3", + "@wordpress/eslint-plugin": "9.2.0", + "@wordpress/hooks": "3.2.1", + "@wordpress/jest-puppeteer-axe": "3.1.0", + "@wordpress/plugins": "4.0.3", + "@wordpress/scripts": "18.1.0", + "axios": "0.21.1", + "babel-plugin-inline-react-svg": "2.0.1", + "babel-plugin-transform-react-remove-prop-types": "0.4.24", + "child_process": "1.0.2", + "copy-webpack-plugin": "9.0.1", + "cross-env": "7.0.3", + "css-minimizer-webpack-plugin": "3.1.1", + "enzyme": "3.11.0", + "eslint": "7.32.0", + "eslint-plugin-eslint-comments": "3.2.0", + "eslint-plugin-import": "2.24.2", + "eslint-plugin-jest": "24.5.0", + "eslint-plugin-jsdoc": "36.1.1", + "eslint-plugin-react": "7.26.1", + "eslint-plugin-react-hooks": "4.2.0", + "fs": "0.0.1-security", + "grunt": "1.4.1", + "grunt-contrib-clean": "2.0.0", + "grunt-contrib-copy": "1.0.0", + "grunt-shell": "3.0.1", + "grunt-wp-deploy": "2.1.2", + "jest-silent-reporter": "0.5.0", + "lint-staged": "11.2.3", + "lodash": "4.17.21", + "moment": "2.29.1", + "npm-run-all": "4.1.5", + "postcss": "8.3.9", + "postcss-import": "14.0.2", + "postcss-loader": "4.3.0", + "postcss-nested": "5.0.1", + "postcss-preset-env": "6.7.0", + "react-test-renderer": "17.0.2", + "rtlcss-webpack-plugin": "4.0.6", + "svgo": "2.7.0", + "webpackbar": "5.0.0-3", + "wporg-api-client": "1.0.1" + }, + "engines": { + "node": ">= 14", + "npm": ">= 6.14" + } + }, + "node_modules/@actions/github": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/@actions/github/-/github-5.0.0.tgz", "integrity": "sha512-QvE9eAAfEsS+yOOk0cylLBIO/d6WyWIOvsxxzdrPFaud39G6BOkUwScXZn1iBzQzHyu9SBkkLSWlohDWdsasAQ==", "dev": true, - "requires": { + "dependencies": { "@actions/http-client": "^1.0.11", "@octokit/core": "^3.4.0", "@octokit/plugin-paginate-rest": "^2.13.3", "@octokit/plugin-rest-endpoint-methods": "^5.1.1" } }, - "@actions/http-client": { + "node_modules/@actions/http-client": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-1.0.11.tgz", "integrity": "sha512-VRYHGQV1rqnROJqdMvGUbY/Kn8vriQe/F9HR2AlYHzmKuM/p3kjNuXhmdBfcVgsvRWTz5C5XW5xvndZrVBuAYg==", "dev": true, - "requires": { + "dependencies": { "tunnel": "0.0.6" } }, - "@axe-core/puppeteer": { + "node_modules/@axe-core/puppeteer": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/@axe-core/puppeteer/-/puppeteer-4.3.1.tgz", "integrity": "sha512-ojZzd2koeMFj4Crz842g54gU9MEosZA2Vzq8zoRBsT7lQ+EwjASNUfNKQHDhJaO53oEMC7xZv9Y2bhDrAhJRlg==", "dev": true, - "requires": { + "dependencies": { "axe-core": "^4.3.3" + }, + "engines": { + "node": ">=6.4.0" + }, + "peerDependencies": { + "puppeteer": ">=1.10.0 <= 10" } }, - "@babel/code-frame": { + "node_modules/@babel/code-frame": { "version": "7.15.8", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", - "requires": { + "dependencies": { "@babel/highlight": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/compat-data": { + "node_modules/@babel/compat-data": { "version": "7.15.0", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==", - "dev": true + "engines": { + "node": ">=6.9.0" + } }, - "@babel/core": { + "node_modules/@babel/core": { "version": "7.15.8", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.8.tgz", "integrity": "sha512-3UG9dsxvYBMYwRv+gS41WKHno4K60/9GPy1CJaH6xy3Elq8CTtvtjT5R5jmNhXfCYLX2mTw+7/aq5ak/gOE0og==", - "dev": true, - "requires": { + "dependencies": { "@babel/code-frame": "^7.15.8", "@babel/generator": "^7.15.8", "@babel/helper-compilation-targets": "^7.15.4", @@ -68,80 +162,112 @@ "json5": "^2.1.2", "semver": "^6.3.0", "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "@babel/generator": { + "node_modules/@babel/generator": { "version": "7.15.8", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz", "integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==", - "dev": true, - "requires": { + "dependencies": { "@babel/types": "^7.15.6", "jsesc": "^2.5.1", "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-annotate-as-pure": { + "node_modules/@babel/helper-annotate-as-pure": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz", "integrity": "sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA==", "dev": true, - "requires": { + "dependencies": { "@babel/types": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-builder-binary-assignment-operator-visitor": { + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.15.4.tgz", "integrity": "sha512-P8o7JP2Mzi0SdC6eWr1zF+AEYvrsZa7GSY1lTayjF5XJhVH0kjLYUZPvTMflP7tBgZoe9gIhTa60QwFpqh/E0Q==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-explode-assignable-expression": "^7.15.4", "@babel/types": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-compilation-targets": { + "node_modules/@babel/helper-compilation-targets": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz", "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==", - "dev": true, - "requires": { + "dependencies": { "@babel/compat-data": "^7.15.0", "@babel/helper-validator-option": "^7.14.5", "browserslist": "^4.16.6", "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "@babel/helper-create-class-features-plugin": { + "node_modules/@babel/helper-create-class-features-plugin": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.15.4.tgz", "integrity": "sha512-7ZmzFi+DwJx6A7mHRwbuucEYpyBwmh2Ca0RvI6z2+WLZYCqV0JOaLb+u0zbtmDicebgKBZgqbYfLaKNqSgv5Pw==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-annotate-as-pure": "^7.15.4", "@babel/helper-function-name": "^7.15.4", "@babel/helper-member-expression-to-functions": "^7.15.4", "@babel/helper-optimise-call-expression": "^7.15.4", "@babel/helper-replace-supers": "^7.15.4", "@babel/helper-split-export-declaration": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "@babel/helper-create-regexp-features-plugin": { + "node_modules/@babel/helper-create-regexp-features-plugin": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz", "integrity": "sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-annotate-as-pure": "^7.14.5", "regexpu-core": "^4.7.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "@babel/helper-define-polyfill-provider": { + "node_modules/@babel/helper-define-polyfill-provider": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz", "integrity": "sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-compilation-targets": "^7.13.0", "@babel/helper-module-imports": "^7.12.13", "@babel/helper-plugin-utils": "^7.13.0", @@ -150,69 +276,85 @@ "lodash.debounce": "^4.0.8", "resolve": "^1.14.2", "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" } }, - "@babel/helper-explode-assignable-expression": { + "node_modules/@babel/helper-explode-assignable-expression": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.15.4.tgz", "integrity": "sha512-J14f/vq8+hdC2KoWLIQSsGrC9EFBKE4NFts8pfMpymfApds+fPqR30AOUWc4tyr56h9l/GA1Sxv2q3dLZWbQ/g==", "dev": true, - "requires": { + "dependencies": { "@babel/types": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-function-name": { + "node_modules/@babel/helper-function-name": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", - "dev": true, - "requires": { + "dependencies": { "@babel/helper-get-function-arity": "^7.15.4", "@babel/template": "^7.15.4", "@babel/types": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-get-function-arity": { + "node_modules/@babel/helper-get-function-arity": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", - "dev": true, - "requires": { + "dependencies": { "@babel/types": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-hoist-variables": { + "node_modules/@babel/helper-hoist-variables": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", - "dev": true, - "requires": { + "dependencies": { "@babel/types": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-member-expression-to-functions": { + "node_modules/@babel/helper-member-expression-to-functions": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", - "dev": true, - "requires": { + "dependencies": { "@babel/types": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-module-imports": { + "node_modules/@babel/helper-module-imports": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", - "requires": { + "dependencies": { "@babel/types": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-module-transforms": { + "node_modules/@babel/helper-module-transforms": { "version": "7.15.8", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz", "integrity": "sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg==", - "dev": true, - "requires": { + "dependencies": { "@babel/helper-module-imports": "^7.15.4", "@babel/helper-replace-supers": "^7.15.4", "@babel/helper-simple-access": "^7.15.4", @@ -221,496 +363,723 @@ "@babel/template": "^7.15.4", "@babel/traverse": "^7.15.4", "@babel/types": "^7.15.6" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-optimise-call-expression": { + "node_modules/@babel/helper-optimise-call-expression": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", - "dev": true, - "requires": { + "dependencies": { "@babel/types": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-plugin-utils": { + "node_modules/@babel/helper-plugin-utils": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", - "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==" + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "engines": { + "node": ">=6.9.0" + } }, - "@babel/helper-remap-async-to-generator": { + "node_modules/@babel/helper-remap-async-to-generator": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.15.4.tgz", "integrity": "sha512-v53MxgvMK/HCwckJ1bZrq6dNKlmwlyRNYM6ypaRTdXWGOE2c1/SCa6dL/HimhPulGhZKw9W0QhREM583F/t0vQ==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-annotate-as-pure": "^7.15.4", "@babel/helper-wrap-function": "^7.15.4", "@babel/types": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-replace-supers": { + "node_modules/@babel/helper-replace-supers": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", - "dev": true, - "requires": { + "dependencies": { "@babel/helper-member-expression-to-functions": "^7.15.4", "@babel/helper-optimise-call-expression": "^7.15.4", "@babel/traverse": "^7.15.4", "@babel/types": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-simple-access": { + "node_modules/@babel/helper-simple-access": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", - "dev": true, - "requires": { + "dependencies": { "@babel/types": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-skip-transparent-expression-wrappers": { + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.15.4.tgz", "integrity": "sha512-BMRLsdh+D1/aap19TycS4eD1qELGrCBJwzaY9IE8LrpJtJb+H7rQkPIdsfgnMtLBA6DJls7X9z93Z4U8h7xw0A==", "dev": true, - "requires": { + "dependencies": { "@babel/types": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-split-export-declaration": { + "node_modules/@babel/helper-split-export-declaration": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", - "dev": true, - "requires": { + "dependencies": { "@babel/types": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-validator-identifier": { + "node_modules/@babel/helper-validator-identifier": { "version": "7.15.7", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", - "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==" + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "engines": { + "node": ">=6.9.0" + } }, - "@babel/helper-validator-option": { + "node_modules/@babel/helper-validator-option": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", - "dev": true + "engines": { + "node": ">=6.9.0" + } }, - "@babel/helper-wrap-function": { + "node_modules/@babel/helper-wrap-function": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.15.4.tgz", "integrity": "sha512-Y2o+H/hRV5W8QhIfTpRIBwl57y8PrZt6JM3V8FOo5qarjshHItyH5lXlpMfBfmBefOqSCpKZs/6Dxqp0E/U+uw==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-function-name": "^7.15.4", "@babel/template": "^7.15.4", "@babel/traverse": "^7.15.4", "@babel/types": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helpers": { + "node_modules/@babel/helpers": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", - "dev": true, - "requires": { + "dependencies": { "@babel/template": "^7.15.4", "@babel/traverse": "^7.15.4", "@babel/types": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/highlight": { + "node_modules/@babel/highlight": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "requires": { + "dependencies": { "@babel/helper-validator-identifier": "^7.14.5", "chalk": "^2.0.0", "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/parser": { + "node_modules/@babel/parser": { "version": "7.15.8", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==", - "dev": true + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } }, - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.15.4.tgz", "integrity": "sha512-eBnpsl9tlhPhpI10kU06JHnrYXwg3+V6CaP2idsCXNef0aeslpqyITXQ74Vfk5uHgY7IG7XP0yIH8b42KSzHog==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.14.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.15.4", "@babel/plugin-proposal-optional-chaining": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" } }, - "@babel/plugin-proposal-async-generator-functions": { + "node_modules/@babel/plugin-proposal-async-generator-functions": { "version": "7.15.8", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.15.8.tgz", "integrity": "sha512-2Z5F2R2ibINTc63mY7FLqGfEbmofrHU9FitJW1Q7aPaKFhiPvSq6QEt/BoWN5oME3GVyjcRuNNSRbb9LC0CSWA==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.14.5", "@babel/helper-remap-async-to-generator": "^7.15.4", "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-proposal-class-properties": { + "node_modules/@babel/plugin-proposal-class-properties": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz", "integrity": "sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-create-class-features-plugin": "^7.14.5", "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-proposal-class-static-block": { + "node_modules/@babel/plugin-proposal-class-static-block": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.15.4.tgz", "integrity": "sha512-M682XWrrLNk3chXCjoPUQWOyYsB93B9z3mRyjtqqYJWDf2mfCdIYgDrA11cgNVhAQieaq6F2fn2f3wI0U4aTjA==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-create-class-features-plugin": "^7.15.4", "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" } }, - "@babel/plugin-proposal-dynamic-import": { + "node_modules/@babel/plugin-proposal-dynamic-import": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz", "integrity": "sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-proposal-export-namespace-from": { + "node_modules/@babel/plugin-proposal-export-namespace-from": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.5.tgz", "integrity": "sha512-g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-proposal-json-strings": { + "node_modules/@babel/plugin-proposal-json-strings": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz", "integrity": "sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-proposal-logical-assignment-operators": { + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.5.tgz", "integrity": "sha512-YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-proposal-nullish-coalescing-operator": { + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz", "integrity": "sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-proposal-numeric-separator": { + "node_modules/@babel/plugin-proposal-numeric-separator": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz", "integrity": "sha512-yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-proposal-object-rest-spread": { + "node_modules/@babel/plugin-proposal-object-rest-spread": { "version": "7.15.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.15.6.tgz", "integrity": "sha512-qtOHo7A1Vt+O23qEAX+GdBpqaIuD3i9VRrWgCJeq7WO6H2d14EK3q11urj5Te2MAeK97nMiIdRpwd/ST4JFbNg==", "dev": true, - "requires": { + "dependencies": { "@babel/compat-data": "^7.15.0", "@babel/helper-compilation-targets": "^7.15.4", "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-transform-parameters": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-proposal-optional-catch-binding": { + "node_modules/@babel/plugin-proposal-optional-catch-binding": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz", "integrity": "sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-proposal-optional-chaining": { + "node_modules/@babel/plugin-proposal-optional-chaining": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz", "integrity": "sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.14.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5", "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-proposal-private-methods": { + "node_modules/@babel/plugin-proposal-private-methods": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz", "integrity": "sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-create-class-features-plugin": "^7.14.5", "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-proposal-private-property-in-object": { + "node_modules/@babel/plugin-proposal-private-property-in-object": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.15.4.tgz", "integrity": "sha512-X0UTixkLf0PCCffxgu5/1RQyGGbgZuKoI+vXP4iSbJSYwPb7hu06omsFGBvQ9lJEvwgrxHdS8B5nbfcd8GyUNA==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-annotate-as-pure": "^7.15.4", "@babel/helper-create-class-features-plugin": "^7.15.4", "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-proposal-unicode-property-regex": { + "node_modules/@babel/plugin-proposal-unicode-property-regex": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz", "integrity": "sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.14.5", "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-async-generators": { + "node_modules/@babel/plugin-syntax-async-generators": { "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-bigint": { + "node_modules/@babel/plugin-syntax-bigint": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-class-properties": { + "node_modules/@babel/plugin-syntax-class-properties": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-class-static-block": { + "node_modules/@babel/plugin-syntax-class-static-block": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-dynamic-import": { + "node_modules/@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-export-namespace-from": { + "node_modules/@babel/plugin-syntax-export-namespace-from": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-import-meta": { + "node_modules/@babel/plugin-syntax-import-meta": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-json-strings": { + "node_modules/@babel/plugin-syntax-json-strings": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-jsx": { + "node_modules/@babel/plugin-syntax-jsx": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz", "integrity": "sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw==", - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-logical-assignment-operators": { + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-nullish-coalescing-operator": { + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-numeric-separator": { + "node_modules/@babel/plugin-syntax-numeric-separator": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-object-rest-spread": { + "node_modules/@babel/plugin-syntax-object-rest-spread": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-optional-catch-binding": { + "node_modules/@babel/plugin-syntax-optional-catch-binding": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-optional-chaining": { + "node_modules/@babel/plugin-syntax-optional-chaining": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-private-property-in-object": { + "node_modules/@babel/plugin-syntax-private-property-in-object": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-top-level-await": { + "node_modules/@babel/plugin-syntax-top-level-await": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-typescript": { + "node_modules/@babel/plugin-syntax-typescript": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz", "integrity": "sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-arrow-functions": { + "node_modules/@babel/plugin-transform-arrow-functions": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz", "integrity": "sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-async-to-generator": { + "node_modules/@babel/plugin-transform-async-to-generator": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz", "integrity": "sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-module-imports": "^7.14.5", "@babel/helper-plugin-utils": "^7.14.5", "@babel/helper-remap-async-to-generator": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-block-scoped-functions": { + "node_modules/@babel/plugin-transform-block-scoped-functions": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz", "integrity": "sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-block-scoping": { + "node_modules/@babel/plugin-transform-block-scoping": { "version": "7.15.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.15.3.tgz", "integrity": "sha512-nBAzfZwZb4DkaGtOes1Up1nOAp9TDRRFw4XBzBBSG9QK7KVFmYzgj9o9sbPv7TX5ofL4Auq4wZnxCoPnI/lz2Q==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-classes": { + "node_modules/@babel/plugin-transform-classes": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.15.4.tgz", "integrity": "sha512-Yjvhex8GzBmmPQUvpXRPWQ9WnxXgAFuZSrqOK/eJlOGIXwvv8H3UEdUigl1gb/bnjTrln+e8bkZUYCBt/xYlBg==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-annotate-as-pure": "^7.15.4", "@babel/helper-function-name": "^7.15.4", "@babel/helper-optimise-call-expression": "^7.15.4", @@ -718,348 +1087,558 @@ "@babel/helper-replace-supers": "^7.15.4", "@babel/helper-split-export-declaration": "^7.15.4", "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-computed-properties": { + "node_modules/@babel/plugin-transform-computed-properties": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz", "integrity": "sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-destructuring": { + "node_modules/@babel/plugin-transform-destructuring": { "version": "7.14.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz", "integrity": "sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-dotall-regex": { + "node_modules/@babel/plugin-transform-dotall-regex": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz", "integrity": "sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.14.5", "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-duplicate-keys": { + "node_modules/@babel/plugin-transform-duplicate-keys": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz", "integrity": "sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-exponentiation-operator": { + "node_modules/@babel/plugin-transform-exponentiation-operator": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz", "integrity": "sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.14.5", "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-for-of": { + "node_modules/@babel/plugin-transform-for-of": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.15.4.tgz", "integrity": "sha512-DRTY9fA751AFBDh2oxydvVm4SYevs5ILTWLs6xKXps4Re/KG5nfUkr+TdHCrRWB8C69TlzVgA9b3RmGWmgN9LA==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-function-name": { + "node_modules/@babel/plugin-transform-function-name": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz", "integrity": "sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-function-name": "^7.14.5", "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-literals": { + "node_modules/@babel/plugin-transform-literals": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz", "integrity": "sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-member-expression-literals": { + "node_modules/@babel/plugin-transform-member-expression-literals": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz", "integrity": "sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-modules-amd": { + "node_modules/@babel/plugin-transform-modules-amd": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz", "integrity": "sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-module-transforms": "^7.14.5", "@babel/helper-plugin-utils": "^7.14.5", "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-modules-commonjs": { + "node_modules/@babel/plugin-transform-modules-commonjs": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.15.4.tgz", "integrity": "sha512-qg4DPhwG8hKp4BbVDvX1s8cohM8a6Bvptu4l6Iingq5rW+yRUAhe/YRup/YcW2zCOlrysEWVhftIcKzrEZv3sA==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-module-transforms": "^7.15.4", "@babel/helper-plugin-utils": "^7.14.5", "@babel/helper-simple-access": "^7.15.4", "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-modules-systemjs": { + "node_modules/@babel/plugin-transform-modules-systemjs": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.15.4.tgz", "integrity": "sha512-fJUnlQrl/mezMneR72CKCgtOoahqGJNVKpompKwzv3BrEXdlPspTcyxrZ1XmDTIr9PpULrgEQo3qNKp6dW7ssw==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-hoist-variables": "^7.15.4", "@babel/helper-module-transforms": "^7.15.4", "@babel/helper-plugin-utils": "^7.14.5", "@babel/helper-validator-identifier": "^7.14.9", "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-modules-umd": { + "node_modules/@babel/plugin-transform-modules-umd": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz", "integrity": "sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-module-transforms": "^7.14.5", "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-named-capturing-groups-regex": { + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { "version": "7.14.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.9.tgz", "integrity": "sha512-l666wCVYO75mlAtGFfyFwnWmIXQm3kSH0C3IRnJqWcZbWkoihyAdDhFm2ZWaxWTqvBvhVFfJjMRQ0ez4oN1yYA==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "@babel/plugin-transform-new-target": { + "node_modules/@babel/plugin-transform-new-target": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz", "integrity": "sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-object-super": { + "node_modules/@babel/plugin-transform-object-super": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz", "integrity": "sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.14.5", "@babel/helper-replace-supers": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-parameters": { + "node_modules/@babel/plugin-transform-parameters": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.15.4.tgz", "integrity": "sha512-9WB/GUTO6lvJU3XQsSr6J/WKvBC2hcs4Pew8YxZagi6GkTdniyqp8On5kqdK8MN0LMeu0mGbhPN+O049NV/9FQ==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-property-literals": { + "node_modules/@babel/plugin-transform-property-literals": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz", "integrity": "sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-react-constant-elements": { + "node_modules/@babel/plugin-transform-react-constant-elements": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.14.5.tgz", "integrity": "sha512-NBqLEx1GxllIOXJInJAQbrnwwYJsV3WaMHIcOwD8rhYS0AabTWn7kHdHgPgu5RmHLU0q4DMxhAMu8ue/KampgQ==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-react-display-name": { + "node_modules/@babel/plugin-transform-react-display-name": { "version": "7.15.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.15.1.tgz", "integrity": "sha512-yQZ/i/pUCJAHI/LbtZr413S3VT26qNrEm0M5RRxQJA947/YNYwbZbBaXGDrq6CG5QsZycI1VIP6d7pQaBfP+8Q==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-react-jsx": { + "node_modules/@babel/plugin-transform-react-jsx": { "version": "7.14.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.14.9.tgz", "integrity": "sha512-30PeETvS+AeD1f58i1OVyoDlVYQhap/K20ZrMjLmmzmC2AYR/G43D4sdJAaDAqCD3MYpSWbmrz3kES158QSLjw==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-annotate-as-pure": "^7.14.5", "@babel/helper-module-imports": "^7.14.5", "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-jsx": "^7.14.5", "@babel/types": "^7.14.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-react-jsx-development": { + "node_modules/@babel/plugin-transform-react-jsx-development": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.14.5.tgz", "integrity": "sha512-rdwG/9jC6QybWxVe2UVOa7q6cnTpw8JRRHOxntG/h6g/guAOe6AhtQHJuJh5FwmnXIT1bdm5vC2/5huV8ZOorQ==", "dev": true, - "requires": { + "dependencies": { "@babel/plugin-transform-react-jsx": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-react-pure-annotations": { + "node_modules/@babel/plugin-transform-react-pure-annotations": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.14.5.tgz", "integrity": "sha512-3X4HpBJimNxW4rhUy/SONPyNQHp5YRr0HhJdT2OH1BRp0of7u3Dkirc7x9FRJMKMqTBI079VZ1hzv7Ouuz///g==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-annotate-as-pure": "^7.14.5", "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-regenerator": { + "node_modules/@babel/plugin-transform-regenerator": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.14.5.tgz", "integrity": "sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg==", "dev": true, - "requires": { + "dependencies": { "regenerator-transform": "^0.14.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-reserved-words": { + "node_modules/@babel/plugin-transform-reserved-words": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz", "integrity": "sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-runtime": { + "node_modules/@babel/plugin-transform-runtime": { "version": "7.15.8", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.15.8.tgz", "integrity": "sha512-+6zsde91jMzzvkzuEA3k63zCw+tm/GvuuabkpisgbDMTPQsIMHllE3XczJFFtEHLjjhKQFZmGQVRdELetlWpVw==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-module-imports": "^7.15.4", "@babel/helper-plugin-utils": "^7.14.5", "babel-plugin-polyfill-corejs2": "^0.2.2", "babel-plugin-polyfill-corejs3": "^0.2.5", "babel-plugin-polyfill-regenerator": "^0.2.2", "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-shorthand-properties": { + "node_modules/@babel/plugin-transform-shorthand-properties": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz", "integrity": "sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-spread": { + "node_modules/@babel/plugin-transform-spread": { "version": "7.15.8", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.15.8.tgz", "integrity": "sha512-/daZ8s2tNaRekl9YJa9X4bzjpeRZLt122cpgFnQPLGUe61PH8zMEBmYqKkW5xF5JUEh5buEGXJoQpqBmIbpmEQ==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.14.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-sticky-regex": { + "node_modules/@babel/plugin-transform-sticky-regex": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz", "integrity": "sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-template-literals": { + "node_modules/@babel/plugin-transform-template-literals": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz", "integrity": "sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-typeof-symbol": { + "node_modules/@babel/plugin-transform-typeof-symbol": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz", "integrity": "sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-typescript": { + "node_modules/@babel/plugin-transform-typescript": { "version": "7.15.8", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.15.8.tgz", "integrity": "sha512-ZXIkJpbaf6/EsmjeTbiJN/yMxWPFWvlr7sEG1P95Xb4S4IBcrf2n7s/fItIhsAmOf8oSh3VJPDppO6ExfAfKRQ==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-create-class-features-plugin": "^7.15.4", "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-typescript": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-unicode-escapes": { + "node_modules/@babel/plugin-transform-unicode-escapes": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz", "integrity": "sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-unicode-regex": { + "node_modules/@babel/plugin-transform-unicode-regex": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz", "integrity": "sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.14.5", "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/preset-env": { + "node_modules/@babel/preset-env": { "version": "7.15.8", "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.15.8.tgz", "integrity": "sha512-rCC0wH8husJgY4FPbHsiYyiLxSY8oMDJH7Rl6RQMknbN9oDDHhM9RDFvnGM2MgkbUJzSQB4gtuwygY5mCqGSsA==", "dev": true, - "requires": { + "dependencies": { "@babel/compat-data": "^7.15.0", "@babel/helper-compilation-targets": "^7.15.4", "@babel/helper-plugin-utils": "^7.14.5", @@ -1133,81 +1712,109 @@ "babel-plugin-polyfill-regenerator": "^0.2.2", "core-js-compat": "^3.16.0", "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/preset-modules": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", - "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "node_modules/@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", "dev": true, - "requires": { + "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" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/preset-react": { + "node_modules/@babel/preset-react": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.14.5.tgz", "integrity": "sha512-XFxBkjyObLvBaAvkx1Ie95Iaq4S/GUEIrejyrntQ/VCMKUYvKLoyKxOBzJ2kjA3b6rC9/KL6KXfDC2GqvLiNqQ==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.14.5", "@babel/helper-validator-option": "^7.14.5", "@babel/plugin-transform-react-display-name": "^7.14.5", "@babel/plugin-transform-react-jsx": "^7.14.5", "@babel/plugin-transform-react-jsx-development": "^7.14.5", "@babel/plugin-transform-react-pure-annotations": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/preset-typescript": { + "node_modules/@babel/preset-typescript": { "version": "7.15.0", "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.15.0.tgz", "integrity": "sha512-lt0Y/8V3y06Wq/8H/u0WakrqciZ7Fz7mwPDHWUJAXlABL5hiUG42BNlRXiELNjeWjO5rWmnNKlx+yzJvxezHow==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.14.5", "@babel/helper-validator-option": "^7.14.5", "@babel/plugin-transform-typescript": "^7.15.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/runtime": { + "node_modules/@babel/runtime": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.4.tgz", "integrity": "sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==", - "requires": { + "dependencies": { "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/runtime-corejs3": { + "node_modules/@babel/runtime-corejs3": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.15.4.tgz", "integrity": "sha512-lWcAqKeB624/twtTc3w6w/2o9RqJPaNBhPGK6DKLSiwuVWC7WFkypWyNg+CpZoyJH0jVzv1uMtXZ/5/lQOLtCg==", "dev": true, - "requires": { + "dependencies": { "core-js-pure": "^3.16.0", "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/template": { + "node_modules/@babel/template": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", - "dev": true, - "requires": { + "dependencies": { "@babel/code-frame": "^7.14.5", "@babel/parser": "^7.15.4", "@babel/types": "^7.15.4" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/traverse": { + "node_modules/@babel/traverse": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", - "dev": true, - "requires": { + "dependencies": { "@babel/code-frame": "^7.14.5", "@babel/generator": "^7.15.4", "@babel/helper-function-name": "^7.15.4", @@ -1217,59 +1824,86 @@ "@babel/types": "^7.15.4", "debug": "^4.1.0", "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/types": { + "node_modules/@babel/types": { "version": "7.15.6", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "requires": { + "dependencies": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "@bcoe/v8-coverage": { + "node_modules/@bcoe/v8-coverage": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, - "@choojs/findup": { + "node_modules/@choojs/findup": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/@choojs/findup/-/findup-0.2.1.tgz", "integrity": "sha512-YstAqNb0MCN8PjdLCDfRsBcGVRN41f3vgLvaI0IrIcBp4AqILRSS0DeWNGkicC+f/zRIPJLc+9RURVSepwvfBw==", "dev": true, - "requires": { + "dependencies": { "commander": "^2.15.1" + }, + "bin": { + "findup": "bin/findup.js" } }, - "@cnakazawa/watch": { + "node_modules/@choojs/findup/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/@cnakazawa/watch": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", "dev": true, - "requires": { + "dependencies": { "exec-sh": "^0.3.2", "minimist": "^1.2.0" + }, + "bin": { + "watch": "cli.js" + }, + "engines": { + "node": ">=0.1.95" } }, - "@csstools/convert-colors": { + "node_modules/@csstools/convert-colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz", "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==", - "dev": true + "dev": true, + "engines": { + "node": ">=4.0.0" + } }, - "@discoveryjs/json-ext": { + "node_modules/@discoveryjs/json-ext": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.5.tgz", "integrity": "sha512-6nFkfkmSeV/rqSaS4oWHgmpnYw194f6hmWF5is6b0J1naJZoiD0NTc9AiUwPHvWsowkjuHErCZT1wa0jg+BLIA==", - "dev": true + "dev": true, + "engines": { + "node": ">=10.0.0" + } }, - "@emotion/babel-plugin": { + "node_modules/@emotion/babel-plugin": { "version": "11.3.0", "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.3.0.tgz", "integrity": "sha512-UZKwBV2rADuhRp+ZOGgNWg2eYgbzKzQXfQPtJbu/PLy8onurxlNCLvxMQEvlr1/GudguPI5IU9qIY1+2z1M5bA==", - "requires": { + "dependencies": { "@babel/helper-module-imports": "^7.12.13", "@babel/plugin-syntax-jsx": "^7.12.13", "@babel/runtime": "^7.13.10", @@ -1282,69 +1916,92 @@ "find-root": "^1.1.0", "source-map": "^0.5.7", "stylis": "^4.0.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "@emotion/cache": { - "version": "11.4.0", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.4.0.tgz", - "integrity": "sha512-Zx70bjE7LErRO9OaZrhf22Qye1y4F7iDl+ITjet0J+i+B88PrAOBkKvaAWhxsZf72tDLajwCgfCjJ2dvH77C3g==", - "requires": { + "node_modules/@emotion/cache": { + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.5.0.tgz", + "integrity": "sha512-mAZ5QRpLriBtaj/k2qyrXwck6yeoz1V5lMt/jfj6igWU35yYlNKs2LziXVgvH81gnJZ+9QQNGelSsnuoAy6uIw==", + "dependencies": { "@emotion/memoize": "^0.7.4", - "@emotion/sheet": "^1.0.0", + "@emotion/sheet": "^1.0.3", "@emotion/utils": "^1.0.0", "@emotion/weak-memoize": "^0.2.5", - "stylis": "^4.0.3" + "stylis": "^4.0.10" } }, - "@emotion/css": { - "version": "11.1.3", - "resolved": "https://registry.npmjs.org/@emotion/css/-/css-11.1.3.tgz", - "integrity": "sha512-RSQP59qtCNTf5NWD6xM08xsQdCZmVYnX/panPYvB6LQAPKQB6GL49Njf0EMbS3CyDtrlWsBcmqBtysFvfWT3rA==", - "requires": { + "node_modules/@emotion/css": { + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/@emotion/css/-/css-11.5.0.tgz", + "integrity": "sha512-mqjz/3aqR9rp40M+pvwdKYWxlQK4Nj3cnNjo3Tx6SM14dSsEn7q/4W2/I7PlgG+mb27iITHugXuBIHH/QwUBVQ==", + "dependencies": { "@emotion/babel-plugin": "^11.0.0", - "@emotion/cache": "^11.1.3", + "@emotion/cache": "^11.5.0", "@emotion/serialize": "^1.0.0", - "@emotion/sheet": "^1.0.0", + "@emotion/sheet": "^1.0.3", "@emotion/utils": "^1.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + } } }, - "@emotion/hash": { + "node_modules/@emotion/hash": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" }, - "@emotion/is-prop-valid": { + "node_modules/@emotion/is-prop-valid": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.1.0.tgz", "integrity": "sha512-9RkilvXAufQHsSsjQ3PIzSns+pxuX4EW8EbGeSPjZMHuMx6z/MOzb9LpqNieQX4F3mre3NWS2+X3JNRHTQztUQ==", - "requires": { + "dependencies": { "@emotion/memoize": "^0.7.4" } }, - "@emotion/memoize": { + "node_modules/@emotion/memoize": { "version": "0.7.5", "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.5.tgz", "integrity": "sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ==" }, - "@emotion/react": { - "version": "11.4.1", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.4.1.tgz", - "integrity": "sha512-pRegcsuGYj4FCdZN6j5vqCALkNytdrKw3TZMekTzNXixRg4wkLsU5QEaBG5LC6l01Vppxlp7FE3aTHpIG5phLg==", - "requires": { + "node_modules/@emotion/react": { + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.5.0.tgz", + "integrity": "sha512-MYq/bzp3rYbee4EMBORCn4duPQfgpiEB5XzrZEBnUZAL80Qdfr7CEv/T80jwaTl/dnZmt9SnTa8NkTrwFNpLlw==", + "dependencies": { "@babel/runtime": "^7.13.10", - "@emotion/cache": "^11.4.0", + "@emotion/cache": "^11.5.0", "@emotion/serialize": "^1.0.2", - "@emotion/sheet": "^1.0.2", + "@emotion/sheet": "^1.0.3", "@emotion/utils": "^1.0.0", "@emotion/weak-memoize": "^0.2.5", "hoist-non-react-statics": "^3.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@types/react": { + "optional": true + } } }, - "@emotion/serialize": { + "node_modules/@emotion/serialize": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.0.2.tgz", "integrity": "sha512-95MgNJ9+/ajxU7QIAruiOAdYNjxZX7G2mhgrtDWswA21VviYIRP1R5QilZ/bDY42xiKsaktP4egJb3QdYQZi1A==", - "requires": { + "dependencies": { "@emotion/hash": "^0.8.0", "@emotion/memoize": "^0.7.4", "@emotion/unitless": "^0.7.5", @@ -1352,63 +2009,80 @@ "csstype": "^3.0.2" } }, - "@emotion/sheet": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.0.2.tgz", - "integrity": "sha512-QQPB1B70JEVUHuNtzjHftMGv6eC3Y9wqavyarj4x4lg47RACkeSfNo5pxIOKizwS9AEFLohsqoaxGQj4p0vSIw==" + "node_modules/@emotion/sheet": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.0.3.tgz", + "integrity": "sha512-YoX5GyQ4db7LpbmXHMuc8kebtBGP6nZfRC5Z13OKJMixBEwdZrJ914D6yJv/P+ZH/YY3F5s89NYX2hlZAf3SRQ==" }, - "@emotion/styled": { + "node_modules/@emotion/styled": { "version": "11.3.0", "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.3.0.tgz", "integrity": "sha512-fUoLcN3BfMiLlRhJ8CuPUMEyKkLEoM+n+UyAbnqGEsCd5IzKQ7VQFLtzpJOaCD2/VR2+1hXQTnSZXVJeiTNltA==", - "requires": { + "dependencies": { "@babel/runtime": "^7.13.10", "@emotion/babel-plugin": "^11.3.0", "@emotion/is-prop-valid": "^1.1.0", "@emotion/serialize": "^1.0.2", "@emotion/utils": "^1.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@emotion/react": "^11.0.0-rc.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@types/react": { + "optional": true + } } }, - "@emotion/unitless": { + "node_modules/@emotion/unitless": { "version": "0.7.5", "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" }, - "@emotion/utils": { + "node_modules/@emotion/utils": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.0.0.tgz", "integrity": "sha512-mQC2b3XLDs6QCW+pDQDiyO/EdGZYOygE8s5N5rrzjSI4M3IejPE/JPndCBwRT9z982aqQNi6beWs1UeayrQxxA==" }, - "@emotion/weak-memoize": { + "node_modules/@emotion/weak-memoize": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz", "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==" }, - "@es-joy/jsdoccomment": { + "node_modules/@es-joy/jsdoccomment": { "version": "0.10.8", "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.10.8.tgz", "integrity": "sha512-3P1JiGL4xaR9PoTKUHa2N/LKwa2/eUdRqGwijMWWgBqbFEqJUVpmaOi2TcjcemrsRMgFLBzQCK4ToPhrSVDiFQ==", "dev": true, - "requires": { + "dependencies": { "comment-parser": "1.2.4", "esquery": "^1.4.0", "jsdoc-type-pratt-parser": "1.1.1" }, - "dependencies": { - "jsdoc-type-pratt-parser": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-1.1.1.tgz", - "integrity": "sha512-uelRmpghNwPBuZScwgBG/OzodaFk5RbO5xaivBdsAY70icWfShwZ7PCMO0x1zSkOa8T1FzHThmrdoyg/0AwV5g==", - "dev": true - } + "engines": { + "node": "^12 || ^14 || ^16" } }, - "@eslint/eslintrc": { + "node_modules/@es-joy/jsdoccomment/node_modules/jsdoc-type-pratt-parser": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-1.1.1.tgz", + "integrity": "sha512-uelRmpghNwPBuZScwgBG/OzodaFk5RbO5xaivBdsAY70icWfShwZ7PCMO0x1zSkOa8T1FzHThmrdoyg/0AwV5g==", + "dev": true, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@eslint/eslintrc": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", "dev": true, - "requires": { + "dependencies": { "ajv": "^6.12.4", "debug": "^4.1.1", "espree": "^7.3.0", @@ -1419,2510 +2093,37880 @@ "minimatch": "^3.0.4", "strip-json-comments": "^3.1.1" }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", + "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", + "dev": true, "dependencies": { - "globals": { - "version": "13.11.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz", - "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - } + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "@hapi/hoek": { + "node_modules/@eslint/eslintrc/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@hapi/hoek": { "version": "9.2.1", "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.1.tgz", "integrity": "sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw==", "dev": true }, - "@hapi/topo": { + "node_modules/@hapi/topo": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", "dev": true, - "requires": { + "dependencies": { "@hapi/hoek": "^9.0.0" } }, - "@humanwhocodes/config-array": { + "node_modules/@humanwhocodes/config-array": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", "dev": true, - "requires": { + "dependencies": { "@humanwhocodes/object-schema": "^1.2.0", "debug": "^4.1.1", "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" } }, - "@humanwhocodes/object-schema": { + "node_modules/@humanwhocodes/object-schema": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", "dev": true }, - "@istanbuljs/load-nyc-config": { + "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, - "requires": { + "dependencies": { "camelcase": "^5.3.1", "find-up": "^4.1.0", "get-package-type": "^0.1.0", "js-yaml": "^3.13.1", "resolve-from": "^5.0.0" }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - } + "engines": { + "node": ">=8" } }, - "@istanbuljs/schema": { + "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@istanbuljs/schema": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "@jest/console": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz", - "integrity": "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==", + "node_modules/@jest/console": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.3.1.tgz", + "integrity": "sha512-RkFNWmv0iui+qsOr/29q9dyfKTTT5DCuP31kUwg7rmOKPT/ozLeGLKJKVIiOfbiKyleUZKIrHwhmiZWVe8IMdw==", "dev": true, - "requires": { - "@jest/types": "^26.6.2", + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^26.6.2", - "jest-util": "^26.6.2", + "jest-message-util": "^27.3.1", + "jest-util": "^27.3.1", "slash": "^3.0.0" }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/console/node_modules/@jest/types": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", + "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", + "dev": true, + "peer": true, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "@jest/core": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz", - "integrity": "sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==", + "node_modules/@jest/console/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", "dev": true, - "requires": { - "@jest/console": "^26.6.2", - "@jest/reporters": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", + "peer": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/console/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/console/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/console/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/console/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "peer": true + }, + "node_modules/@jest/console/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console/node_modules/jest-util": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", + "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.4", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/console/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.3.1.tgz", + "integrity": "sha512-DMNE90RR5QKx0EA+wqe3/TNEwiRpOkhshKNxtLxd4rt3IZpCt+RSL+FoJsGeblRZmqdK4upHA/mKKGPPRAifhg==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/console": "^27.3.1", + "@jest/reporters": "^27.3.1", + "@jest/test-result": "^27.3.1", + "@jest/transform": "^27.3.1", + "@jest/types": "^27.2.5", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", + "emittery": "^0.8.1", "exit": "^0.1.2", "graceful-fs": "^4.2.4", - "jest-changed-files": "^26.6.2", - "jest-config": "^26.6.3", - "jest-haste-map": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-resolve": "^26.6.2", - "jest-resolve-dependencies": "^26.6.3", - "jest-runner": "^26.6.3", - "jest-runtime": "^26.6.3", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "jest-watcher": "^26.6.2", - "micromatch": "^4.0.2", - "p-each-series": "^2.1.0", + "jest-changed-files": "^27.3.0", + "jest-config": "^27.3.1", + "jest-haste-map": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-regex-util": "^27.0.6", + "jest-resolve": "^27.3.1", + "jest-resolve-dependencies": "^27.3.1", + "jest-runner": "^27.3.1", + "jest-runtime": "^27.3.1", + "jest-snapshot": "^27.3.1", + "jest-util": "^27.3.1", + "jest-validate": "^27.3.1", + "jest-watcher": "^27.3.1", + "micromatch": "^4.0.4", "rimraf": "^3.0.0", "slash": "^3.0.0", "strip-ansi": "^6.0.0" }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true } } }, - "@jest/environment": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz", - "integrity": "sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==", + "node_modules/@jest/core/node_modules/@jest/transform": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.3.1.tgz", + "integrity": "sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==", "dev": true, - "requires": { - "@jest/fake-timers": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "jest-mock": "^26.6.2" + "peer": true, + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.2.5", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.3.1", + "jest-regex-util": "^27.0.6", + "jest-util": "^27.3.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "@jest/fake-timers": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz", - "integrity": "sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==", + "node_modules/@jest/core/node_modules/@jest/types": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", + "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", "dev": true, - "requires": { - "@jest/types": "^26.6.2", - "@sinonjs/fake-timers": "^6.0.1", + "peer": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "jest-message-util": "^26.6.2", - "jest-mock": "^26.6.2", - "jest-util": "^26.6.2" + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "@jest/globals": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz", - "integrity": "sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==", + "node_modules/@jest/core/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", "dev": true, - "requires": { - "@jest/environment": "^26.6.2", - "@jest/types": "^26.6.2", - "expect": "^26.6.2" + "peer": true, + "dependencies": { + "@types/yargs-parser": "*" } }, - "@jest/reporters": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-26.6.2.tgz", - "integrity": "sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==", + "node_modules/@jest/core/node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, - "requires": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.2.4", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^4.0.3", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "jest-haste-map": "^26.6.2", - "jest-resolve": "^26.6.2", - "jest-util": "^26.6.2", - "jest-worker": "^26.6.2", - "node-notifier": "^8.0.0", - "slash": "^3.0.0", - "source-map": "^0.6.0", - "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^7.0.0" + "peer": true, + "dependencies": { + "type-fest": "^0.21.3" }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@jest/core/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "peer": true, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "@jest/source-map": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz", - "integrity": "sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==", + "node_modules/@jest/core/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "requires": { - "callsites": "^3.0.0", - "graceful-fs": "^4.2.4", - "source-map": "^0.6.0" - }, + "peer": true, "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "@jest/test-result": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz", - "integrity": "sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==", + "node_modules/@jest/core/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "requires": { - "@jest/console": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "@jest/test-sequencer": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz", - "integrity": "sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==", + "node_modules/@jest/core/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, - "requires": { - "@jest/test-result": "^26.6.2", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^26.6.2", - "jest-runner": "^26.6.3", - "jest-runtime": "^26.6.3" + "peer": true + }, + "node_modules/@jest/core/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" } }, - "@jest/transform": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz", - "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==", + "node_modules/@jest/core/node_modules/jest-haste-map": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", + "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", "dev": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^26.6.2", - "babel-plugin-istanbul": "^6.0.0", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", "graceful-fs": "^4.2.4", - "jest-haste-map": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-util": "^26.6.2", - "micromatch": "^4.0.2", - "pirates": "^4.0.1", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" + "jest-regex-util": "^27.0.6", + "jest-serializer": "^27.0.6", + "jest-util": "^27.3.1", + "jest-worker": "^27.3.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/@jest/core/node_modules/jest-regex-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", + "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", + "dev": true, + "peer": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/core/node_modules/jest-serializer": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", + "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", + "dev": true, + "peer": true, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "@types/node": "*", + "graceful-fs": "^4.2.4" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "@jest/types": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", - "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "node_modules/@jest/core/node_modules/jest-util": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", + "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", "@types/node": "*", - "@types/yargs": "^15.0.0", - "chalk": "^4.0.0" + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.4", + "picomatch": "^2.2.3" }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/core/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "peer": true, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "node_modules/@jest/core/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "peer": true, + "engines": { + "node": ">=0.10.0" } }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true + "node_modules/@jest/core/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "node_modules/@jest/core/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "@octokit/auth-token": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", - "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", + "node_modules/@jest/environment": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz", + "integrity": "sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==", "dev": true, - "requires": { - "@octokit/types": "^6.0.3" + "dependencies": { + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" } }, - "@octokit/core": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.5.1.tgz", - "integrity": "sha512-omncwpLVxMP+GLpLPgeGJBF6IWJFjXDS5flY5VbppePYX9XehevbDykRH9PdCdvqt9TS5AOTiDide7h0qrkHjw==", + "node_modules/@jest/fake-timers": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz", + "integrity": "sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==", "dev": true, - "requires": { - "@octokit/auth-token": "^2.4.4", - "@octokit/graphql": "^4.5.8", - "@octokit/request": "^5.6.0", - "@octokit/request-error": "^2.0.5", - "@octokit/types": "^6.0.3", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" + "dependencies": { + "@jest/types": "^26.6.2", + "@sinonjs/fake-timers": "^6.0.1", + "@types/node": "*", + "jest-message-util": "^26.6.2", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" } }, - "@octokit/endpoint": { - "version": "6.0.12", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", - "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", + "node_modules/@jest/fake-timers/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "requires": { - "@octokit/types": "^6.0.3", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "@octokit/graphql": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", - "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", + "node_modules/@jest/fake-timers/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "requires": { - "@octokit/request": "^5.6.0", - "@octokit/types": "^6.0.3", - "universal-user-agent": "^6.0.0" + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "@octokit/openapi-types": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-11.2.0.tgz", - "integrity": "sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA==", + "node_modules/@jest/fake-timers/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/fake-timers/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "@octokit/plugin-paginate-rest": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.17.0.tgz", - "integrity": "sha512-tzMbrbnam2Mt4AhuyCHvpRkS0oZ5MvwwcQPYGtMv4tUa5kkzG58SVB0fcsLulOZQeRnOgdkZWkRUiyBlh0Bkyw==", + "node_modules/@jest/fake-timers/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "requires": { - "@octokit/types": "^6.34.0" + "engines": { + "node": ">=8" } }, - "@octokit/plugin-rest-endpoint-methods": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.13.0.tgz", - "integrity": "sha512-uJjMTkN1KaOIgNtUPMtIXDOjx6dGYysdIFhgA52x4xSadQCz3b/zJexvITDVpANnfKPW/+E0xkOvLntqMYpviA==", + "node_modules/@jest/fake-timers/node_modules/jest-message-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", + "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", "dev": true, - "requires": { - "@octokit/types": "^6.34.0", - "deprecation": "^2.3.1" + "dependencies": { + "@babel/code-frame": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2", + "slash": "^3.0.0", + "stack-utils": "^2.0.2" + }, + "engines": { + "node": ">= 10.14.2" } }, - "@octokit/request": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.2.tgz", - "integrity": "sha512-je66CvSEVf0jCpRISxkUcCa0UkxmFs6eGDRSbfJtAVwbLH5ceqF+YEyC8lj8ystKyZTy8adWr0qmkY52EfOeLA==", + "node_modules/@jest/fake-timers/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "requires": { - "@octokit/endpoint": "^6.0.1", - "@octokit/request-error": "^2.1.0", - "@octokit/types": "^6.16.1", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.1", - "universal-user-agent": "^6.0.0" + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "@octokit/request-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", - "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "node_modules/@jest/globals": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.3.1.tgz", + "integrity": "sha512-Q651FWiWQAIFiN+zS51xqhdZ8g9b88nGCobC87argAxA7nMfNQq0Q0i9zTfQYgLa6qFXk2cGANEqfK051CZ8Pg==", "dev": true, - "requires": { - "@octokit/types": "^6.0.3", - "deprecation": "^2.0.0", - "once": "^1.4.0" + "peer": true, + "dependencies": { + "@jest/environment": "^27.3.1", + "@jest/types": "^27.2.5", + "expect": "^27.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "@octokit/types": { - "version": "6.34.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz", - "integrity": "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==", + "node_modules/@jest/globals/node_modules/@jest/environment": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.3.1.tgz", + "integrity": "sha512-BCKCj4mOVLme6Tanoyc9k0ultp3pnmuyHw73UHRPeeZxirsU/7E3HC4le/VDb/SMzE1JcPnto+XBKFOcoiJzVw==", "dev": true, - "requires": { - "@octokit/openapi-types": "^11.2.0" + "peer": true, + "dependencies": { + "@jest/fake-timers": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/node": "*", + "jest-mock": "^27.3.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "@polka/url": { - "version": "1.0.0-next.21", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", - "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==", - "dev": true - }, - "@popperjs/core": { - "version": "2.10.2", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.10.2.tgz", - "integrity": "sha512-IXf3XA7+XyN7CP9gGh/XB0UxVMlvARGEgGXLubFICsUMGz6Q+DU+i4gGlpOxTjKvXjkJDJC8YdqdKkDj9qZHEQ==" - }, - "@react-spring/animated": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@react-spring/animated/-/animated-9.3.0.tgz", - "integrity": "sha512-QvuyW77eDvLhdJyO6FFldlWlvnuKK2cpOx4+Zr962RyT/0IO1tbNDRO6G1vM8va6mbv6tmfYmRGKmKYePN3kVg==", - "requires": { - "@react-spring/shared": "~9.3.0", - "@react-spring/types": "~9.3.0" + "node_modules/@jest/globals/node_modules/@jest/fake-timers": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.3.1.tgz", + "integrity": "sha512-M3ZFgwwlqJtWZ+QkBG5NmC23A9w+A6ZxNsO5nJxJsKYt4yguBd3i8TpjQz5NfCX91nEve1KqD9RA2Q+Q1uWqoA==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.3.1", + "jest-mock": "^27.3.0", + "jest-util": "^27.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "@react-spring/core": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@react-spring/core/-/core-9.3.0.tgz", - "integrity": "sha512-SZQOIX7wkIagmucAi7zxqGGIb9A60o9n5922UrWo8Kl3FdG7FgrNwqr0kOI43/pMFeL70/PXwFhBatB03N5ctw==", - "requires": { - "@react-spring/animated": "~9.3.0", - "@react-spring/shared": "~9.3.0", - "@react-spring/types": "~9.3.0" + "node_modules/@jest/globals/node_modules/@jest/types": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", + "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", + "dev": true, + "peer": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "@react-spring/rafz": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@react-spring/rafz/-/rafz-9.3.0.tgz", - "integrity": "sha512-FD04d2TNb3xOZ6+04qwDmC3d0H4X6gvhsxU71/nSm4PPYRqFzZEolcVPmrHlbGzco3bvXKI+Kp2pIrpXLPUJFA==" - }, - "@react-spring/shared": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@react-spring/shared/-/shared-9.3.0.tgz", - "integrity": "sha512-7ZFY2Blu/wxbLGcYvQavyLUVi9bK/is1bsn11qZ9AaZb4iucRyIf2jgjBfKZFCq4qgi7S/7QmDQG7sucUyLELg==", - "requires": { - "@react-spring/rafz": "~9.3.0", - "@react-spring/types": "~9.3.0" + "node_modules/@jest/globals/node_modules/@sinonjs/fake-timers": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz", + "integrity": "sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==", + "dev": true, + "peer": true, + "dependencies": { + "@sinonjs/commons": "^1.7.0" } }, - "@react-spring/types": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@react-spring/types/-/types-9.3.0.tgz", - "integrity": "sha512-q4cDr2RSPblXMD3Rxvk6qcC7nmhhfV2izEBP06hb8ZCXznA6qJirG3RMpi29kBtEQiw1lWR59hAXKhauaPtbOA==" + "node_modules/@jest/globals/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "peer": true, + "dependencies": { + "@types/yargs-parser": "*" + } }, - "@react-spring/web": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@react-spring/web/-/web-9.3.0.tgz", - "integrity": "sha512-OTAGKRdyz6fLRR1tABFyw9KMpytyATIndQrj0O6RG47GfjiInpf4+WZKxo763vpS7z1OlnkI81WLUm/sqOqAnA==", - "requires": { - "@react-spring/animated": "~9.3.0", - "@react-spring/core": "~9.3.0", - "@react-spring/shared": "~9.3.0", - "@react-spring/types": "~9.3.0" + "node_modules/@jest/globals/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "@sideway/address": { + "node_modules/@jest/globals/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.2.tgz", - "integrity": "sha512-idTz8ibqWFrPU8kMirL0CoPH/A29XOzzAzpyN3zQ4kAWnzmNfFmRaoMNN6VI8ske5M73HZyhIaW4OuSFIdM4oA==", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "requires": { - "@hapi/hoek": "^9.0.0" + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "@sideway/formula": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", - "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==", - "dev": true + "node_modules/@jest/globals/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } }, - "@sideway/pinpoint": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", - "dev": true + "node_modules/@jest/globals/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "peer": true }, - "@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "node_modules/@jest/globals/node_modules/diff-sequences": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", + "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==", "dev": true, - "requires": { - "type-detect": "4.0.8" + "peer": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "@sinonjs/fake-timers": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", - "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", + "node_modules/@jest/globals/node_modules/expect": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.3.1.tgz", + "integrity": "sha512-MrNXV2sL9iDRebWPGOGFdPQRl2eDQNu/uhxIMShjjx74T6kC6jFIkmQ6OqXDtevjGUkyB2IT56RzDBqXf/QPCg==", "dev": true, - "requires": { - "@sinonjs/commons": "^1.7.0" + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", + "ansi-styles": "^5.0.0", + "jest-get-type": "^27.3.1", + "jest-matcher-utils": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-regex-util": "^27.0.6" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "@stylelint/postcss-css-in-js": { - "version": "0.37.2", - "resolved": "https://registry.npmjs.org/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.2.tgz", - "integrity": "sha512-nEhsFoJurt8oUmieT8qy4nk81WRHmJynmVwn/Vts08PL9fhgIsMhk1GId5yAN643OzqEEb5S/6At2TZW7pqPDA==", + "node_modules/@jest/globals/node_modules/expect/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, - "requires": { - "@babel/core": ">=7.9.0" + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "@stylelint/postcss-markdown": { - "version": "0.36.2", - "resolved": "https://registry.npmjs.org/@stylelint/postcss-markdown/-/postcss-markdown-0.36.2.tgz", - "integrity": "sha512-2kGbqUVJUGE8dM+bMzXG/PYUWKkjLIkRLWNh39OaADkiabDRdw8ATFCgbMz5xdIcvwspPAluSL7uY+ZiTWdWmQ==", + "node_modules/@jest/globals/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "requires": { - "remark": "^13.0.0", - "unist-util-find-all-after": "^3.0.2" + "peer": true, + "engines": { + "node": ">=8" } }, - "@svgr/babel-plugin-add-jsx-attribute": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz", - "integrity": "sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==", - "dev": true - }, - "@svgr/babel-plugin-remove-jsx-attribute": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz", - "integrity": "sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==", - "dev": true + "node_modules/@jest/globals/node_modules/jest-diff": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.3.1.tgz", + "integrity": "sha512-PCeuAH4AWUo2O5+ksW4pL9v5xJAcIKPUPfIhZBcG1RKv/0+dvaWTQK1Nrau8d67dp65fOqbeMdoil+6PedyEPQ==", + "dev": true, + "peer": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^27.0.6", + "jest-get-type": "^27.3.1", + "pretty-format": "^27.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } }, - "@svgr/babel-plugin-remove-jsx-empty-expression": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz", - "integrity": "sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==", - "dev": true + "node_modules/@jest/globals/node_modules/jest-get-type": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.3.1.tgz", + "integrity": "sha512-+Ilqi8hgHSAdhlQ3s12CAVNd8H96ZkQBfYoXmArzZnOfAtVAJEiPDBirjByEblvG/4LPJmkL+nBqPO3A1YJAEg==", + "dev": true, + "peer": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } }, - "@svgr/babel-plugin-replace-jsx-attribute-value": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz", - "integrity": "sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==", - "dev": true + "node_modules/@jest/globals/node_modules/jest-matcher-utils": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.3.1.tgz", + "integrity": "sha512-hX8N7zXS4k+8bC1Aj0OWpGb7D3gIXxYvPNK1inP5xvE4ztbz3rc4AkI6jGVaerepBnfWB17FL5lWFJT3s7qo8w==", + "dev": true, + "peer": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^27.3.1", + "jest-get-type": "^27.3.1", + "pretty-format": "^27.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } }, - "@svgr/babel-plugin-svg-dynamic-title": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz", - "integrity": "sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==", - "dev": true + "node_modules/@jest/globals/node_modules/jest-mock": { + "version": "27.3.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.3.0.tgz", + "integrity": "sha512-ziZiLk0elZOQjD08bLkegBzv5hCABu/c8Ytx45nJKkysQwGaonvmTxwjLqEA4qGdasq9o2I8/HtdGMNnVsMTGw==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", + "@types/node": "*" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } }, - "@svgr/babel-plugin-svg-em-dimensions": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz", - "integrity": "sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==", - "dev": true + "node_modules/@jest/globals/node_modules/jest-regex-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", + "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", + "dev": true, + "peer": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } }, - "@svgr/babel-plugin-transform-react-native-svg": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz", - "integrity": "sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==", - "dev": true + "node_modules/@jest/globals/node_modules/jest-util": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", + "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.4", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } }, - "@svgr/babel-plugin-transform-svg-component": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz", - "integrity": "sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==", - "dev": true + "node_modules/@jest/globals/node_modules/pretty-format": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz", + "integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } }, - "@svgr/babel-preset": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz", - "integrity": "sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==", + "node_modules/@jest/globals/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, - "requires": { - "@svgr/babel-plugin-add-jsx-attribute": "^5.4.0", - "@svgr/babel-plugin-remove-jsx-attribute": "^5.4.0", - "@svgr/babel-plugin-remove-jsx-empty-expression": "^5.0.1", - "@svgr/babel-plugin-replace-jsx-attribute-value": "^5.0.1", - "@svgr/babel-plugin-svg-dynamic-title": "^5.4.0", - "@svgr/babel-plugin-svg-em-dimensions": "^5.4.0", - "@svgr/babel-plugin-transform-react-native-svg": "^5.4.0", - "@svgr/babel-plugin-transform-svg-component": "^5.5.0" + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "@svgr/core": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz", - "integrity": "sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==", + "node_modules/@jest/globals/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "requires": { - "@svgr/plugin-jsx": "^5.5.0", - "camelcase": "^6.2.0", - "cosmiconfig": "^7.0.0" + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.3.1.tgz", + "integrity": "sha512-m2YxPmL9Qn1emFVgZGEiMwDntDxRRQ2D58tiDQlwYTg5GvbFOKseYCcHtn0WsI8CG4vzPglo3nqbOiT8ySBT/w==", + "dev": true, + "peer": true, "dependencies": { - "camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", - "dev": true - }, - "cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", - "dev": true, - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - } + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^27.3.1", + "@jest/test-result": "^27.3.1", + "@jest/transform": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.4", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "jest-haste-map": "^27.3.1", + "jest-resolve": "^27.3.1", + "jest-util": "^27.3.1", + "jest-worker": "^27.3.1", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^8.1.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true } } }, - "@svgr/hast-util-to-babel-ast": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz", - "integrity": "sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==", + "node_modules/@jest/reporters/node_modules/@jest/transform": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.3.1.tgz", + "integrity": "sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==", "dev": true, - "requires": { - "@babel/types": "^7.12.6" + "peer": true, + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.2.5", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.3.1", + "jest-regex-util": "^27.0.6", + "jest-util": "^27.3.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "@svgr/plugin-jsx": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz", - "integrity": "sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==", + "node_modules/@jest/reporters/node_modules/@jest/types": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", + "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", "dev": true, - "requires": { - "@babel/core": "^7.12.3", - "@svgr/babel-preset": "^5.5.0", - "@svgr/hast-util-to-babel-ast": "^5.5.0", - "svg-parser": "^2.0.2" + "peer": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "@svgr/plugin-svgo": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz", - "integrity": "sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==", + "node_modules/@jest/reporters/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", "dev": true, - "requires": { - "cosmiconfig": "^7.0.0", - "deepmerge": "^4.2.2", - "svgo": "^1.2.2" - }, + "peer": true, "dependencies": { - "cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", - "dev": true, - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - } - }, - "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true - }, - "svgo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", - "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", - "dev": true, - "requires": { - "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" - } - } + "@types/yargs-parser": "*" } }, - "@svgr/webpack": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz", - "integrity": "sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==", + "node_modules/@jest/reporters/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "requires": { - "@babel/core": "^7.12.3", - "@babel/plugin-transform-react-constant-elements": "^7.12.1", - "@babel/preset-env": "^7.12.1", - "@babel/preset-react": "^7.12.5", - "@svgr/core": "^5.5.0", - "@svgr/plugin-jsx": "^5.5.0", - "@svgr/plugin-svgo": "^5.5.0", - "loader-utils": "^2.0.0" + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "@tannin/compile": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@tannin/compile/-/compile-1.1.0.tgz", - "integrity": "sha512-n8m9eNDfoNZoxdvWiTfW/hSPhehzLJ3zW7f8E7oT6mCROoMNWCB4TYtv041+2FMAxweiE0j7i1jubQU4MEC/Gg==", - "requires": { - "@tannin/evaluate": "^1.2.0", - "@tannin/postfix": "^1.1.0" + "node_modules/@jest/reporters/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "@tannin/evaluate": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@tannin/evaluate/-/evaluate-1.2.0.tgz", - "integrity": "sha512-3ioXvNowbO/wSrxsDG5DKIMxC81P0QrQTYai8zFNY+umuoHWRPbQ/TuuDEOju9E+jQDXmj6yI5GyejNuh8I+eg==" - }, - "@tannin/plural-forms": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@tannin/plural-forms/-/plural-forms-1.1.0.tgz", - "integrity": "sha512-xl9R2mDZO/qiHam1AgMnAES6IKIg7OBhcXqy6eDsRCdXuxAFPcjrej9HMjyCLE0DJ/8cHf0i5OQTstuBRhpbHw==", - "requires": { - "@tannin/compile": "^1.1.0" + "node_modules/@jest/reporters/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "@tannin/postfix": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@tannin/postfix/-/postfix-1.1.0.tgz", - "integrity": "sha512-oocsqY7g0cR+Gur5jRQLSrX2OtpMLMse1I10JQBm8CdGMrDkh1Mg2gjsiquMHRtBs4Qwu5wgEp5GgIYHk4SNPw==" + "node_modules/@jest/reporters/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "peer": true }, - "@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true + "node_modules/@jest/reporters/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } }, - "@trysound/sax": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", - "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", - "dev": true + "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } }, - "@types/babel__core": { - "version": "7.1.16", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.16.tgz", - "integrity": "sha512-EAEHtisTMM+KaKwfWdC3oyllIqswlznXCIVCt7/oRNrh+DhgT4UEBNC/jlADNjvw7UnfbcdkGQcPVZ1xYiLcrQ==", + "node_modules/@jest/reporters/node_modules/jest-haste-map": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", + "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", "dev": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^27.0.6", + "jest-serializer": "^27.0.6", + "jest-util": "^27.3.1", + "jest-worker": "^27.3.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "@types/babel__generator": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.3.tgz", - "integrity": "sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==", + "node_modules/@jest/reporters/node_modules/jest-regex-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", + "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", "dev": true, - "requires": { - "@babel/types": "^7.0.0" + "peer": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "node_modules/@jest/reporters/node_modules/jest-serializer": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", + "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", "dev": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" + "peer": true, + "dependencies": { + "@types/node": "*", + "graceful-fs": "^4.2.4" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "@types/babel__traverse": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz", - "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==", + "node_modules/@jest/reporters/node_modules/jest-util": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", + "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", "dev": true, - "requires": { - "@babel/types": "^7.3.0" + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.4", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "@types/cheerio": { - "version": "0.22.30", - "resolved": "https://registry.npmjs.org/@types/cheerio/-/cheerio-0.22.30.tgz", - "integrity": "sha512-t7ZVArWZlq3dFa9Yt33qFBQIK4CQd1Q3UJp0V+UhP6vgLWLM6Qug7vZuRSGXg45zXeB1Fm5X2vmBkEX58LV2Tw==", + "node_modules/@jest/reporters/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "requires": { - "@types/node": "*" + "peer": true, + "engines": { + "node": ">=0.10.0" } }, - "@types/eslint": { - "version": "7.28.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.28.1.tgz", - "integrity": "sha512-XhZKznR3i/W5dXqUhgU9fFdJekufbeBd5DALmkuXoeFcjbQcPk+2cL+WLHf6Q81HWAnM2vrslIHpGVyCAviRwg==", + "node_modules/@jest/reporters/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "requires": { - "@types/estree": "*", - "@types/json-schema": "*" + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "@types/eslint-scope": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.1.tgz", - "integrity": "sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g==", + "node_modules/@jest/source-map": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.0.6.tgz", + "integrity": "sha512-Fek4mi5KQrqmlY07T23JRi0e7Z9bXTOOD86V/uS0EIW4PClvPDqZOyFlLpNJheS6QI0FNX1CgmPjtJ4EA/2M+g==", "dev": true, - "requires": { - "@types/eslint": "*", - "@types/estree": "*" + "peer": true, + "dependencies": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.4", + "source-map": "^0.6.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "@types/estree": { - "version": "0.0.50", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", - "dev": true + "node_modules/@jest/source-map/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } }, - "@types/glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA==", + "node_modules/@jest/test-result": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.3.1.tgz", + "integrity": "sha512-mLn6Thm+w2yl0opM8J/QnPTqrfS4FoXsXF2WIWJb2O/GBSyResL71BRuMYbYRsGt7ELwS5JGcEcGb52BNrumgg==", "dev": true, - "requires": { - "@types/minimatch": "*", - "@types/node": "*" + "peer": true, + "dependencies": { + "@jest/console": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "@types/graceful-fs": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", - "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "node_modules/@jest/test-result/node_modules/@jest/types": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", + "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", "dev": true, - "requires": { - "@types/node": "*" + "peer": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "@types/istanbul-lib-coverage": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", - "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", - "dev": true + "node_modules/@jest/test-result/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "peer": true, + "dependencies": { + "@types/yargs-parser": "*" + } }, - "@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "node_modules/@jest/test-result/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*" + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "node_modules/@jest/test-result/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "requires": { - "@types/istanbul-lib-report": "*" + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", - "dev": true + "node_modules/@jest/test-result/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } }, - "@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", - "dev": true + "node_modules/@jest/test-result/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "peer": true }, - "@types/lodash": { - "version": "4.14.175", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.175.tgz", - "integrity": "sha512-XmdEOrKQ8a1Y/yxQFOMbC47G/V2VDO1GvMRnl4O75M4GW/abC5tnfzadQYkqEveqRM1dEJGFFegfPNA2vvx2iw==" + "node_modules/@jest/test-result/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } }, - "@types/mdast": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", - "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", + "node_modules/@jest/test-result/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "requires": { - "@types/unist": "*" + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "@types/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", - "dev": true + "node_modules/@jest/test-sequencer": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.3.1.tgz", + "integrity": "sha512-siySLo07IMEdSjA4fqEnxfIX8lB/lWYsBPwNFtkOvsFQvmBrL3yj3k3uFNZv/JDyApTakRpxbKLJ3CT8UGVCrA==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/test-result": "^27.3.1", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.3.1", + "jest-runtime": "^27.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } }, - "@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", - "dev": true + "node_modules/@jest/test-sequencer/node_modules/@jest/types": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", + "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", + "dev": true, + "peer": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } }, - "@types/mousetrap": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/@types/mousetrap/-/mousetrap-1.6.8.tgz", - "integrity": "sha512-zTqjvgCUT5EoXqbqmd8iJMb4NJqyV/V7pK7AIKq7qcaAsJIpGlTVJS1HQM6YkdHCdnkNSbhcQI7MXYxFfE3iCA==" + "node_modules/@jest/test-sequencer/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "peer": true, + "dependencies": { + "@types/yargs-parser": "*" + } }, - "@types/node": { - "version": "16.10.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.10.9.tgz", - "integrity": "sha512-H9ReOt+yqIJPCutkTYjFjlyK6WEMQYT9hLZMlWtOjFQY2ItppsWZ6RJf8Aw+jz5qTYceuHvFgPIaKOHtLAEWBw==", - "dev": true + "node_modules/@jest/test-sequencer/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } }, - "@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", - "dev": true - }, - "@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" - }, - "@types/prettier": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.1.tgz", - "integrity": "sha512-Fo79ojj3vdEZOHg3wR9ksAMRz4P3S5fDB5e/YWZiFnyFQI1WY2Vftu9XoXVVtJfxB7Bpce/QTqWSSntkz2Znrw==", - "dev": true - }, - "@types/prop-types": { - "version": "15.7.4", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz", - "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==" - }, - "@types/q": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", - "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==", - "dev": true - }, - "@types/react": { - "version": "16.14.17", - "resolved": "https://registry.npmjs.org/@types/react/-/react-16.14.17.tgz", - "integrity": "sha512-pMLc/7+7SEdQa9A+hN9ujI8blkjFqYAZVqh3iNXqdZ0cQ8TIR502HMkNJniaOGv9SAgc47jxVKoiBJ7c0AakvQ==", - "requires": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" + "node_modules/@jest/test-sequencer/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "@types/react-dom": { - "version": "16.9.14", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.14.tgz", - "integrity": "sha512-FIX2AVmPTGP30OUJ+0vadeIFJJ07Mh1m+U0rxfgyW34p3rTlXI+nlenvAxNn4BP36YyI9IJ/+UJ7Wu22N1pI7A==", - "requires": { - "@types/react": "^16" + "node_modules/@jest/test-sequencer/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "@types/scheduler": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" - }, - "@types/source-list-map": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", - "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==", - "dev": true - }, - "@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "dev": true + "node_modules/@jest/test-sequencer/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "peer": true }, - "@types/tapable": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.8.tgz", - "integrity": "sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ==", - "dev": true + "node_modules/@jest/test-sequencer/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } }, - "@types/uglify-js": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.13.1.tgz", - "integrity": "sha512-O3MmRAk6ZuAKa9CHgg0Pr0+lUOqoMLpc9AS4R8ano2auvsg7IE8syF3Xh/NPr26TWklxYcqoEEFdzLLs1fV9PQ==", + "node_modules/@jest/test-sequencer/node_modules/jest-haste-map": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", + "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", "dev": true, - "requires": { - "source-map": "^0.6.1" - }, + "peer": true, "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "@jest/types": "^27.2.5", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^27.0.6", + "jest-serializer": "^27.0.6", + "jest-util": "^27.3.1", + "jest-worker": "^27.3.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "@types/unist": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", - "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", - "dev": true + "node_modules/@jest/test-sequencer/node_modules/jest-regex-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", + "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", + "dev": true, + "peer": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } }, - "@types/webpack": { - "version": "4.41.31", - "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.31.tgz", - "integrity": "sha512-/i0J7sepXFIp1ZT7FjUGi1eXMCg8HCCzLJEQkKsOtbJFontsJLolBcDC+3qxn5pPwiCt1G0ZdRmYRzNBtvpuGQ==", + "node_modules/@jest/test-sequencer/node_modules/jest-serializer": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", + "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", "dev": true, - "requires": { + "peer": true, + "dependencies": { "@types/node": "*", - "@types/tapable": "^1", - "@types/uglify-js": "*", - "@types/webpack-sources": "*", - "anymatch": "^3.0.0", - "source-map": "^0.6.0" + "graceful-fs": "^4.2.4" }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "@types/webpack-sources": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-3.2.0.tgz", - "integrity": "sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg==", + "node_modules/@jest/test-sequencer/node_modules/jest-util": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", + "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", "dev": true, - "requires": { + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", "@types/node": "*", - "@types/source-list-map": "*", - "source-map": "^0.7.3" + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.4", + "picomatch": "^2.2.3" }, - "dependencies": { - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - } + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "@types/yargs": { - "version": "15.0.14", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", - "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", + "node_modules/@jest/test-sequencer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "requires": { - "@types/yargs-parser": "*" + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "@types/yargs-parser": { - "version": "20.2.1", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", - "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", - "dev": true + "node_modules/@jest/transform": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz", + "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/types": "^26.6.2", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-util": "^26.6.2", + "micromatch": "^4.0.2", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } }, - "@types/yauzl": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.2.tgz", - "integrity": "sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==", + "node_modules/@jest/transform/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "optional": true, - "requires": { - "@types/node": "*" + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "@typescript-eslint/eslint-plugin": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", - "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", + "node_modules/@jest/transform/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "requires": { - "@typescript-eslint/experimental-utils": "4.33.0", - "@typescript-eslint/scope-manager": "4.33.0", - "debug": "^4.3.1", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", - "regexpp": "^3.1.0", - "semver": "^7.3.5", - "tsutils": "^3.21.0" + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/transform/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "dependencies": { - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "@typescript-eslint/experimental-utils": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", - "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==", + "node_modules/@jest/transform/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/transform/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "requires": { - "@types/json-schema": "^7.0.7", - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" + "engines": { + "node": ">=8" } }, - "@typescript-eslint/parser": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", - "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", + "node_modules/@jest/transform/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "debug": "^4.3.1" + "engines": { + "node": ">=0.10.0" } }, - "@typescript-eslint/scope-manager": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", - "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", + "node_modules/@jest/transform/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "requires": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0" + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "@typescript-eslint/types": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", - "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", - "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", + "node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", "dev": true, - "requires": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, "dependencies": { - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" } }, - "@typescript-eslint/visitor-keys": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", - "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", + "node_modules/@jest/types/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "requires": { - "@typescript-eslint/types": "4.33.0", - "eslint-visitor-keys": "^2.0.0" + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "node_modules/@jest/types/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "requires": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", - "dev": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", - "dev": true - }, - "@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "node_modules/@jest/types/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "node_modules/@jest/types/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "node_modules/@jest/types/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" + "engines": { + "node": ">=8" } }, - "@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "node_modules/@jest/types/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "requires": { - "@xtuc/ieee754": "^1.2.0" + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, - "requires": { - "@xtuc/long": "4.2.2" + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" } }, - "@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", - "dev": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" + "engines": { + "node": ">= 8" } }, - "@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" } }, - "@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "node_modules/@octokit/auth-token": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", + "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" + "dependencies": { + "@octokit/types": "^6.0.3" } }, - "@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "node_modules/@octokit/core": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.5.1.tgz", + "integrity": "sha512-omncwpLVxMP+GLpLPgeGJBF6IWJFjXDS5flY5VbppePYX9XehevbDykRH9PdCdvqt9TS5AOTiDide7h0qrkHjw==", "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "dependencies": { + "@octokit/auth-token": "^2.4.4", + "@octokit/graphql": "^4.5.8", + "@octokit/request": "^5.6.0", + "@octokit/request-error": "^2.0.5", + "@octokit/types": "^6.0.3", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" } }, - "@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "node_modules/@octokit/endpoint": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", + "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" + "dependencies": { + "@octokit/types": "^6.0.3", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" } }, - "@webpack-cli/configtest": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.0.tgz", - "integrity": "sha512-ttOkEkoalEHa7RaFYpM0ErK1xc4twg3Am9hfHhL7MVqlHebnkYd2wuI/ZqTDj0cVzZho6PdinY0phFZV3O0Mzg==", - "dev": true - }, - "@webpack-cli/info": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.0.tgz", - "integrity": "sha512-F6b+Man0rwE4n0409FyAJHStYA5OIZERxmnUfLVwv0mc0V1wLad3V7jqRlMkgKBeAq07jUvglacNaa6g9lOpuw==", + "node_modules/@octokit/graphql": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", + "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", "dev": true, - "requires": { - "envinfo": "^7.7.3" + "dependencies": { + "@octokit/request": "^5.6.0", + "@octokit/types": "^6.0.3", + "universal-user-agent": "^6.0.0" } }, - "@webpack-cli/serve": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.0.tgz", - "integrity": "sha512-ZkVeqEmRpBV2GHvjjUZqEai2PpUbuq8Bqd//vEYsp63J8WyexI8ppCqVS3Zs0QADf6aWuPdU+0XsPI647PVlQA==", + "node_modules/@octokit/openapi-types": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-11.2.0.tgz", + "integrity": "sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA==", "dev": true }, - "@wojtekmaj/enzyme-adapter-react-17": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/@wojtekmaj/enzyme-adapter-react-17/-/enzyme-adapter-react-17-0.6.3.tgz", - "integrity": "sha512-Kp1ZJxtHkKEnUksaWrcMABNTOgL4wOt8VI6k2xOek2aH9PtZcWRXJNUEgnKrdJrqg5UqIjRslbVF9uUqwQJtFg==", + "node_modules/@octokit/plugin-paginate-rest": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.17.0.tgz", + "integrity": "sha512-tzMbrbnam2Mt4AhuyCHvpRkS0oZ5MvwwcQPYGtMv4tUa5kkzG58SVB0fcsLulOZQeRnOgdkZWkRUiyBlh0Bkyw==", "dev": true, - "requires": { - "@wojtekmaj/enzyme-adapter-utils": "^0.1.1", - "enzyme-shallow-equal": "^1.0.0", - "has": "^1.0.0", - "object.assign": "^4.1.0", - "object.values": "^1.1.0", - "prop-types": "^15.7.0", - "react-is": "^17.0.2", - "react-test-renderer": "^17.0.0" - }, "dependencies": { - "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - } + "@octokit/types": "^6.34.0" + }, + "peerDependencies": { + "@octokit/core": ">=2" } }, - "@wojtekmaj/enzyme-adapter-utils": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@wojtekmaj/enzyme-adapter-utils/-/enzyme-adapter-utils-0.1.1.tgz", - "integrity": "sha512-bNPWtN/d8huKOkC6j1E3EkSamnRrHHT7YuR6f9JppAQqtoAm3v4/vERe4J14jQKmHLCyEBHXrlgb7H6l817hVg==", + "node_modules/@octokit/plugin-rest-endpoint-methods": { + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.13.0.tgz", + "integrity": "sha512-uJjMTkN1KaOIgNtUPMtIXDOjx6dGYysdIFhgA52x4xSadQCz3b/zJexvITDVpANnfKPW/+E0xkOvLntqMYpviA==", "dev": true, - "requires": { - "function.prototype.name": "^1.1.0", - "has": "^1.0.0", - "object.assign": "^4.1.0", - "object.fromentries": "^2.0.0", - "prop-types": "^15.7.0" + "dependencies": { + "@octokit/types": "^6.34.0", + "deprecation": "^2.3.1" + }, + "peerDependencies": { + "@octokit/core": ">=3" } }, - "@wordpress/a11y": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@wordpress/a11y/-/a11y-3.2.3.tgz", - "integrity": "sha512-s6ghUetvxRPDyC3fohaXtOeoTQeA1JPYPNSic616LWLWvx/bOCY4RibfwxS7p7prY1+0Px2VhxsPIM2kZuR/wA==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/dom-ready": "^3.2.2", - "@wordpress/i18n": "^4.2.3" + "node_modules/@octokit/request": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.2.tgz", + "integrity": "sha512-je66CvSEVf0jCpRISxkUcCa0UkxmFs6eGDRSbfJtAVwbLH5ceqF+YEyC8lj8ystKyZTy8adWr0qmkY52EfOeLA==", + "dev": true, + "dependencies": { + "@octokit/endpoint": "^6.0.1", + "@octokit/request-error": "^2.1.0", + "@octokit/types": "^6.16.1", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.1", + "universal-user-agent": "^6.0.0" } }, - "@wordpress/api-fetch": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-5.2.3.tgz", - "integrity": "sha512-hEGn9vXk76ejdvei1pBX/kaQ3xnKlE2dwtCXszgem8PdDF5GYzgESEwYaWvfgPAfJs7xF283FN1QsNzA4M+N9A==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/i18n": "^4.2.3", - "@wordpress/url": "^3.2.3" + "node_modules/@octokit/request-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", + "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "dev": true, + "dependencies": { + "@octokit/types": "^6.0.3", + "deprecation": "^2.0.0", + "once": "^1.4.0" } }, - "@wordpress/autop": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@wordpress/autop/-/autop-3.2.2.tgz", - "integrity": "sha512-lfw7yZs1PeWVdPnKaV5rPMGIhkwPmdnKaviIbQV48E8irQOcPaT3NgWQksizr1Qlersm6aNBkXZfM1idRzzcgA==", - "requires": { - "@babel/runtime": "^7.13.10" + "node_modules/@octokit/types": { + "version": "6.34.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz", + "integrity": "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==", + "dev": true, + "dependencies": { + "@octokit/openapi-types": "^11.2.0" } }, - "@wordpress/babel-plugin-import-jsx-pragma": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@wordpress/babel-plugin-import-jsx-pragma/-/babel-plugin-import-jsx-pragma-3.1.0.tgz", - "integrity": "sha512-518mL3goaSeXtJCQcPK9OYHUUiA0sjXuoGWHBwRalkyTIQZZy5ZZzlwrlSc9ESZcOw9BZ+Uo8CJRjV2OWnx+Zw==", + "node_modules/@polka/url": { + "version": "1.0.0-next.21", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", + "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==", "dev": true }, - "@wordpress/babel-preset-default": { - "version": "6.3.3", - "resolved": "https://registry.npmjs.org/@wordpress/babel-preset-default/-/babel-preset-default-6.3.3.tgz", - "integrity": "sha512-sMP7LgBmYaF5Cz+FZ4EXS5Qu4Tecv3JFIYEVbPLmn+/AIA+fzrEELn2BuEcHmd0q7VogAAmhU1iw2Fndj29bgw==", - "dev": true, - "requires": { - "@babel/core": "^7.13.10", - "@babel/plugin-transform-react-jsx": "^7.12.7", - "@babel/plugin-transform-runtime": "^7.13.10", - "@babel/preset-env": "^7.13.10", - "@babel/preset-typescript": "^7.13.0", - "@babel/runtime": "^7.13.10", - "@wordpress/babel-plugin-import-jsx-pragma": "^3.1.0", - "@wordpress/browserslist-config": "^4.1.0", - "@wordpress/element": "^4.0.2", - "@wordpress/warning": "^2.2.2", - "browserslist": "^4.16.6", - "core-js": "^3.12.1" + "node_modules/@popperjs/core": { + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.10.2.tgz", + "integrity": "sha512-IXf3XA7+XyN7CP9gGh/XB0UxVMlvARGEgGXLubFICsUMGz6Q+DU+i4gGlpOxTjKvXjkJDJC8YdqdKkDj9qZHEQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" } }, - "@wordpress/base-styles": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@wordpress/base-styles/-/base-styles-4.0.1.tgz", - "integrity": "sha512-fwwDtCO2bt6v+kYE2iNrYaVg1u6iPgipWozS3OrMnZGdT6kmx8K7IGSP+s2zjfrtmJKfdRiJqRnGtKnbcJdxuQ==", - "dev": true + "node_modules/@react-spring/animated": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@react-spring/animated/-/animated-9.3.0.tgz", + "integrity": "sha512-QvuyW77eDvLhdJyO6FFldlWlvnuKK2cpOx4+Zr962RyT/0IO1tbNDRO6G1vM8va6mbv6tmfYmRGKmKYePN3kVg==", + "dependencies": { + "@react-spring/shared": "~9.3.0", + "@react-spring/types": "~9.3.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0" + } }, - "@wordpress/blob": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@wordpress/blob/-/blob-3.2.1.tgz", - "integrity": "sha512-qD8wZ6n+hjoshV2dp9eGH3VismOM0kvrJn5cSe4PaoYDREqUhioJIDXktZxaohnvgWOq6xfJH6rS4Or8W0r9ew==", - "requires": { - "@babel/runtime": "^7.13.10" + "node_modules/@react-spring/core": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@react-spring/core/-/core-9.3.0.tgz", + "integrity": "sha512-SZQOIX7wkIagmucAi7zxqGGIb9A60o9n5922UrWo8Kl3FdG7FgrNwqr0kOI43/pMFeL70/PXwFhBatB03N5ctw==", + "hasInstallScript": true, + "dependencies": { + "@react-spring/animated": "~9.3.0", + "@react-spring/shared": "~9.3.0", + "@react-spring/types": "~9.3.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0" } }, - "@wordpress/block-editor": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/@wordpress/block-editor/-/block-editor-7.0.3.tgz", - "integrity": "sha512-rCPth+v+Nu5JiIkOgUaCgiVkub+VWd8fXzek/vtk5T+VXDJ7jJA6dLcuR8zLigWEkyMuZ5nG0RADGgldy9WqxA==", - "requires": { - "@babel/runtime": "^7.13.10", - "@react-spring/web": "^9.2.4", - "@wordpress/a11y": "^3.2.3", - "@wordpress/api-fetch": "^5.2.3", - "@wordpress/blob": "^3.2.1", - "@wordpress/block-serialization-default-parser": "^4.2.2", - "@wordpress/blocks": "^11.1.1", - "@wordpress/components": "^18.0.0", - "@wordpress/compose": "^5.0.3", - "@wordpress/data": "^6.1.1", - "@wordpress/data-controls": "^2.2.4", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.4", - "@wordpress/element": "^4.0.2", - "@wordpress/hooks": "^3.2.1", - "@wordpress/html-entities": "^3.2.2", - "@wordpress/i18n": "^4.2.3", - "@wordpress/icons": "^6.0.0", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keyboard-shortcuts": "^3.0.3", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/notices": "^3.2.4", - "@wordpress/rich-text": "^5.0.3", - "@wordpress/shortcode": "^3.2.2", - "@wordpress/token-list": "^2.2.1", - "@wordpress/url": "^3.2.3", - "@wordpress/warning": "^2.2.2", - "@wordpress/wordcount": "^3.2.2", - "classnames": "^2.3.1", - "colord": "^2.7.0", - "css-mediaquery": "^0.1.2", - "diff": "^4.0.2", - "dom-scroll-into-view": "^1.2.1", - "inherits": "^2.0.3", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "react-autosize-textarea": "^7.1.0", - "react-easy-crop": "^3.0.0", - "redux-multi": "^0.1.12", - "rememo": "^3.0.0", - "traverse": "^0.6.6" + "node_modules/@react-spring/rafz": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@react-spring/rafz/-/rafz-9.3.0.tgz", + "integrity": "sha512-FD04d2TNb3xOZ6+04qwDmC3d0H4X6gvhsxU71/nSm4PPYRqFzZEolcVPmrHlbGzco3bvXKI+Kp2pIrpXLPUJFA==" + }, + "node_modules/@react-spring/shared": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@react-spring/shared/-/shared-9.3.0.tgz", + "integrity": "sha512-7ZFY2Blu/wxbLGcYvQavyLUVi9bK/is1bsn11qZ9AaZb4iucRyIf2jgjBfKZFCq4qgi7S/7QmDQG7sucUyLELg==", + "dependencies": { + "@react-spring/rafz": "~9.3.0", + "@react-spring/types": "~9.3.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0" } }, - "@wordpress/block-library": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@wordpress/block-library/-/block-library-6.0.1.tgz", - "integrity": "sha512-KrfvAtW+radrMI6/MsLPyoC8JAlu9hCxd3Re/aHRDTsy2UZRDm5aBOVwg+d5bcP0EBELauIGBrgII9+66OBnDw==", + "node_modules/@react-spring/types": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@react-spring/types/-/types-9.3.0.tgz", + "integrity": "sha512-q4cDr2RSPblXMD3Rxvk6qcC7nmhhfV2izEBP06hb8ZCXznA6qJirG3RMpi29kBtEQiw1lWR59hAXKhauaPtbOA==" + }, + "node_modules/@react-spring/web": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@react-spring/web/-/web-9.3.0.tgz", + "integrity": "sha512-OTAGKRdyz6fLRR1tABFyw9KMpytyATIndQrj0O6RG47GfjiInpf4+WZKxo763vpS7z1OlnkI81WLUm/sqOqAnA==", + "dependencies": { + "@react-spring/animated": "~9.3.0", + "@react-spring/core": "~9.3.0", + "@react-spring/shared": "~9.3.0", + "@react-spring/types": "~9.3.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + } + }, + "node_modules/@sideway/address": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.2.tgz", + "integrity": "sha512-idTz8ibqWFrPU8kMirL0CoPH/A29XOzzAzpyN3zQ4kAWnzmNfFmRaoMNN6VI8ske5M73HZyhIaW4OuSFIdM4oA==", "dev": true, - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/a11y": "^3.2.3", - "@wordpress/api-fetch": "^5.2.3", - "@wordpress/autop": "^3.2.2", - "@wordpress/blob": "^3.2.1", - "@wordpress/block-editor": "^7.0.3", - "@wordpress/blocks": "^11.1.1", - "@wordpress/components": "^18.0.0", - "@wordpress/compose": "^5.0.3", - "@wordpress/core-data": "^4.0.3", - "@wordpress/data": "^6.1.1", - "@wordpress/date": "^4.2.2", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.4", - "@wordpress/element": "^4.0.2", - "@wordpress/escape-html": "^2.2.2", - "@wordpress/hooks": "^3.2.1", - "@wordpress/html-entities": "^3.2.2", - "@wordpress/i18n": "^4.2.3", - "@wordpress/icons": "^6.0.0", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/notices": "^3.2.4", - "@wordpress/primitives": "^3.0.2", - "@wordpress/reusable-blocks": "^3.0.3", - "@wordpress/rich-text": "^5.0.3", - "@wordpress/server-side-render": "^3.0.3", - "@wordpress/url": "^3.2.3", - "@wordpress/viewport": "^4.0.3", - "classnames": "^2.3.1", - "colord": "^2.7.0", - "fast-average-color": "4.3.0", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "micromodal": "^0.4.6", - "moment": "^2.22.1" + "dependencies": { + "@hapi/hoek": "^9.0.0" } }, - "@wordpress/block-serialization-default-parser": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@wordpress/block-serialization-default-parser/-/block-serialization-default-parser-4.2.2.tgz", - "integrity": "sha512-XLig548y+chFJTmjrJptiEwZuMHpz7azIpoZssedGxP1ibffo8GV1VnKzGtr/P+Z/1PHt1L00pQgxtAZmKKBag==", - "requires": { - "@babel/runtime": "^7.13.10" + "node_modules/@sideway/formula": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", + "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==", + "dev": true + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "dev": true + }, + "node_modules/@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" } }, - "@wordpress/blocks": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/@wordpress/blocks/-/blocks-11.1.1.tgz", - "integrity": "sha512-Pzk3A4UDQSy1Ay80x/fyrg27efLwfkKyzIHY2XtQrXGlDAT+oGwgJYmqgYff1SYhqFEjq5a7fkN2hGBaYXk+yQ==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/autop": "^3.2.2", - "@wordpress/blob": "^3.2.1", - "@wordpress/block-serialization-default-parser": "^4.2.2", - "@wordpress/compose": "^5.0.3", - "@wordpress/data": "^6.1.1", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.4", - "@wordpress/element": "^4.0.2", - "@wordpress/hooks": "^3.2.1", - "@wordpress/html-entities": "^3.2.2", - "@wordpress/i18n": "^4.2.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/shortcode": "^3.2.2", - "colord": "^2.7.0", - "hpq": "^1.3.0", - "lodash": "^4.17.21", - "rememo": "^3.0.0", - "showdown": "^1.9.1", - "simple-html-tokenizer": "^0.5.7", - "uuid": "^8.3.0" + "node_modules/@sinonjs/fake-timers": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", + "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^1.7.0" } }, - "@wordpress/browserslist-config": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@wordpress/browserslist-config/-/browserslist-config-4.1.0.tgz", - "integrity": "sha512-RSJhgY2xmz6yAdDNhz/NvAO6JS+91vv9cVL7VDG2CftbyjTXBef05vWt3FzZhfeF0xUrYdpZL1PVpxmJiKvbEg==", - "dev": true - }, - "@wordpress/components": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/@wordpress/components/-/components-18.0.0.tgz", - "integrity": "sha512-0KWlm3AXHVd1EeEd8K1Q/aH9ieTZCHdcSyH2m9p4s0mpxl7Ddk0ly9PPAMt6HVliqapYuxAf2gb1UHO9pFyRCw==", - "requires": { - "@babel/runtime": "^7.13.10", - "@emotion/cache": "^11.4.0", - "@emotion/css": "^11.1.3", - "@emotion/react": "^11.4.1", - "@emotion/styled": "^11.3.0", - "@emotion/utils": "1.0.0", - "@wordpress/a11y": "^3.2.3", - "@wordpress/compose": "^5.0.3", - "@wordpress/date": "^4.2.2", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.4", - "@wordpress/element": "^4.0.2", - "@wordpress/hooks": "^3.2.1", - "@wordpress/i18n": "^4.2.3", - "@wordpress/icons": "^6.0.0", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/primitives": "^3.0.2", - "@wordpress/rich-text": "^5.0.3", - "@wordpress/warning": "^2.2.2", - "classnames": "^2.3.1", - "colord": "^2.7.0", - "dom-scroll-into-view": "^1.2.1", - "downshift": "^6.0.15", - "framer-motion": "^4.1.17", - "gradient-parser": "^0.1.5", - "highlight-words-core": "^1.2.2", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "moment": "^2.22.1", - "re-resizable": "^6.4.0", - "react-colorful": "^5.3.1", - "react-dates": "^17.1.1", - "react-resize-aware": "^3.1.0", - "react-use-gesture": "^9.0.0", - "reakit": "^1.3.8", - "rememo": "^3.0.0", - "tinycolor2": "^1.4.2", - "uuid": "^8.3.0" + "node_modules/@svgr/babel-plugin-add-jsx-attribute": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz", + "integrity": "sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" } }, - "@wordpress/compose": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.0.3.tgz", - "integrity": "sha512-uRd4tBp2+FWorLuoec3CyoizgnlbrxvAyPx+it7+OmzP+/Lz6rRYkymaFDA/XTh2umkjYT8pK7FQP1H8+DfqVA==", - "requires": { - "@babel/runtime": "^7.13.10", - "@types/lodash": "^4.14.172", - "@types/mousetrap": "^1.6.8", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.4", - "@wordpress/element": "^4.0.2", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/priority-queue": "^2.2.2", - "clipboard": "^2.0.8", - "lodash": "^4.17.21", - "mousetrap": "^1.6.5", - "react-resize-aware": "^3.1.0", - "use-memo-one": "^1.1.1" + "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz", + "integrity": "sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" } }, - "@wordpress/core-data": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@wordpress/core-data/-/core-data-4.0.3.tgz", - "integrity": "sha512-6wMJfVH+YpISmF7QJG0oXLNkqnJ7lUygGuX3ng8gsRug4jn0HrdB99LSQu9xtS5JNHNKKEMnqi6/3FIcunWLhQ==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/api-fetch": "^5.2.3", - "@wordpress/blocks": "^11.1.1", - "@wordpress/data": "^6.1.1", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/element": "^4.0.2", - "@wordpress/html-entities": "^3.2.2", - "@wordpress/i18n": "^4.2.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/url": "^3.2.3", - "equivalent-key-map": "^0.2.2", - "lodash": "^4.17.21", - "rememo": "^3.0.0", - "uuid": "^8.3.0" + "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz", + "integrity": "sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" } }, - "@wordpress/data": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.1.1.tgz", - "integrity": "sha512-I+kvY2aMA4Ec62rZCS4vUKRalZ01qiBTkEQXash+usYH3Lsyi6rULekwUZ9zcisVpWYbaLZsrmmarCusS65KTg==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/compose": "^5.0.3", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/element": "^4.0.2", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/priority-queue": "^2.2.2", - "@wordpress/redux-routine": "^4.2.1", - "equivalent-key-map": "^0.2.2", - "is-promise": "^4.0.0", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "turbo-combine-reducers": "^1.0.2", - "use-memo-one": "^1.1.1" + "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz", + "integrity": "sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" } }, - "@wordpress/data-controls": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@wordpress/data-controls/-/data-controls-2.2.4.tgz", - "integrity": "sha512-JG8vJIEdmDfbdUpKaz4AyTlQNe/oV1i6dteCIKk5VI6QE+Zl9nWkDJMYpsqrD3TG+F7tdHLcMJCZC/NtGWgQBQ==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/api-fetch": "^5.2.3", - "@wordpress/data": "^6.1.1", - "@wordpress/deprecated": "^3.2.2" + "node_modules/@svgr/babel-plugin-svg-dynamic-title": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz", + "integrity": "sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" } }, - "@wordpress/date": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@wordpress/date/-/date-4.2.2.tgz", - "integrity": "sha512-sYcMvFwrVoYv5lL9NsYLVd29hfuqgf1L1WsIjDV8hMna1eqr9f8xCrZSLgBKkDBmVWiIcleYGP5uDdrKpu6EiA==", - "requires": { - "@babel/runtime": "^7.13.10", - "moment": "^2.22.1", - "moment-timezone": "^0.5.31" + "node_modules/@svgr/babel-plugin-svg-em-dimensions": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz", + "integrity": "sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" } }, - "@wordpress/dependency-extraction-webpack-plugin": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@wordpress/dependency-extraction-webpack-plugin/-/dependency-extraction-webpack-plugin-3.2.1.tgz", - "integrity": "sha512-Ltd+1CJb7PMh6iN2Mse+3yN/oMORug5qXSj/3xmuZERzZO2SO6xNEJGml8yK9ev747cbHktEpitK4H+8VO3Ekg==", + "node_modules/@svgr/babel-plugin-transform-react-native-svg": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz", + "integrity": "sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==", "dev": true, - "requires": { - "json2php": "^0.0.4", - "webpack-sources": "^2.2.0" + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" } }, - "@wordpress/deprecated": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.2.2.tgz", - "integrity": "sha512-htsu2zJUuGYG1+jejAi0r25bQQOT3bB0MGjoSixqZ0sRkFMRIdjmMLrSbpGrl0s5IRK2/w/slsStPFmm3reJtA==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/hooks": "^3.2.1" + "node_modules/@svgr/babel-plugin-transform-svg-component": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz", + "integrity": "sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" } }, - "@wordpress/dom": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.2.4.tgz", - "integrity": "sha512-VQ7ZCyP7/cSWK8QdqQnrgaiM32/kFm/geN4F84AkFj9ZyYuhI13I631uoe5SDXtn1PD3Mr6JNTyLXcJFWbnY2g==", - "requires": { - "@babel/runtime": "^7.13.10", - "lodash": "^4.17.21" + "node_modules/@svgr/babel-preset": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz", + "integrity": "sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==", + "dev": true, + "dependencies": { + "@svgr/babel-plugin-add-jsx-attribute": "^5.4.0", + "@svgr/babel-plugin-remove-jsx-attribute": "^5.4.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "^5.0.1", + "@svgr/babel-plugin-replace-jsx-attribute-value": "^5.0.1", + "@svgr/babel-plugin-svg-dynamic-title": "^5.4.0", + "@svgr/babel-plugin-svg-em-dimensions": "^5.4.0", + "@svgr/babel-plugin-transform-react-native-svg": "^5.4.0", + "@svgr/babel-plugin-transform-svg-component": "^5.5.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" } }, - "@wordpress/dom-ready": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@wordpress/dom-ready/-/dom-ready-3.2.2.tgz", - "integrity": "sha512-yCpm/vG3GanhhACnpbc7GZ2sv6oSHIkTxNPgejA5Z8cr0mEc6irsWDzhEHKcP3OhSina++IZ9ZidO7JH7eE2Xg==", - "requires": { - "@babel/runtime": "^7.13.10" + "node_modules/@svgr/core": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz", + "integrity": "sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==", + "dev": true, + "dependencies": { + "@svgr/plugin-jsx": "^5.5.0", + "camelcase": "^6.2.0", + "cosmiconfig": "^7.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" } }, - "@wordpress/e2e-test-utils": { - "version": "5.4.4", - "resolved": "https://registry.npmjs.org/@wordpress/e2e-test-utils/-/e2e-test-utils-5.4.4.tgz", - "integrity": "sha512-llAWmQXyGFqEc58NHLX2SX1I03VRLCfdrZ2TWRK+qYY6QZns4wsJP4Lg2c1SsXIzUUB9u95Kzx3LvGcZcqLTfw==", + "node_modules/@svgr/hast-util-to-babel-ast": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz", + "integrity": "sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==", "dev": true, - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/api-fetch": "^5.2.3", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/url": "^3.2.3", - "form-data": "^4.0.0", - "lodash": "^4.17.21", - "node-fetch": "^2.6.0" + "dependencies": { + "@babel/types": "^7.12.6" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" } }, - "@wordpress/edit-post": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@wordpress/edit-post/-/edit-post-5.0.3.tgz", - "integrity": "sha512-/DNgi6LqDqBQoGzwYdDIKN++cu2Ry5Zev99sQMN1pnVhlmXXt6nQVUXeJ53Rfi1/baK1VB4okDwKYD84UdZT5Q==", + "node_modules/@svgr/plugin-jsx": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz", + "integrity": "sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==", "dev": true, - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/a11y": "^3.2.3", - "@wordpress/api-fetch": "^5.2.3", - "@wordpress/block-editor": "^7.0.3", - "@wordpress/block-library": "^6.0.1", - "@wordpress/blocks": "^11.1.1", - "@wordpress/components": "^18.0.0", - "@wordpress/compose": "^5.0.3", - "@wordpress/core-data": "^4.0.3", - "@wordpress/data": "^6.1.1", - "@wordpress/data-controls": "^2.2.4", - "@wordpress/editor": "^12.0.0", - "@wordpress/element": "^4.0.2", - "@wordpress/hooks": "^3.2.1", - "@wordpress/i18n": "^4.2.3", - "@wordpress/icons": "^6.0.0", - "@wordpress/interface": "^4.1.1", - "@wordpress/keyboard-shortcuts": "^3.0.3", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/media-utils": "^3.0.2", - "@wordpress/notices": "^3.2.4", - "@wordpress/plugins": "^4.0.3", - "@wordpress/primitives": "^3.0.2", - "@wordpress/url": "^3.2.3", - "@wordpress/viewport": "^4.0.3", - "@wordpress/warning": "^2.2.2", - "classnames": "^2.3.1", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "rememo": "^3.0.0", - "uuid": "8.3.0" - }, "dependencies": { - "uuid": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.0.tgz", - "integrity": "sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ==", - "dev": true - } + "@babel/core": "^7.12.3", + "@svgr/babel-preset": "^5.5.0", + "@svgr/hast-util-to-babel-ast": "^5.5.0", + "svg-parser": "^2.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" } }, - "@wordpress/editor": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@wordpress/editor/-/editor-12.0.0.tgz", - "integrity": "sha512-o2MD1eAaIk5pmuZ/MzBO0Mz3ogoOcuugQ4cZpvVl2lZsu8AzVK3PfhrWWgkLFlu5pho5UCBbCKQjwJoAJkyd4Q==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/a11y": "^3.2.3", - "@wordpress/api-fetch": "^5.2.3", - "@wordpress/autop": "^3.2.2", - "@wordpress/blob": "^3.2.1", - "@wordpress/block-editor": "^7.0.3", - "@wordpress/blocks": "^11.1.1", - "@wordpress/components": "^18.0.0", - "@wordpress/compose": "^5.0.3", - "@wordpress/core-data": "^4.0.3", - "@wordpress/data": "^6.1.1", - "@wordpress/data-controls": "^2.2.4", - "@wordpress/date": "^4.2.2", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/element": "^4.0.2", - "@wordpress/hooks": "^3.2.1", - "@wordpress/html-entities": "^3.2.2", - "@wordpress/i18n": "^4.2.3", - "@wordpress/icons": "^6.0.0", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keyboard-shortcuts": "^3.0.3", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/media-utils": "^3.0.2", - "@wordpress/notices": "^3.2.4", - "@wordpress/reusable-blocks": "^3.0.3", - "@wordpress/rich-text": "^5.0.3", - "@wordpress/server-side-render": "^3.0.3", - "@wordpress/url": "^3.2.3", - "@wordpress/wordcount": "^3.2.2", - "classnames": "^2.3.1", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "react-autosize-textarea": "^7.1.0", - "rememo": "^3.0.0" + "node_modules/@svgr/plugin-svgo": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz", + "integrity": "sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==", + "dev": true, + "dependencies": { + "cosmiconfig": "^7.0.0", + "deepmerge": "^4.2.2", + "svgo": "^1.2.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" } }, - "@wordpress/element": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.2.tgz", - "integrity": "sha512-qBNpkLb7Hh3r9aSwBOBMwRUevScbN5iR1M5B8/ZOuSZbeXYNcgWxX4WqVrt5Y52CNm8WwoQTdqcuIziNN6lhig==", - "requires": { - "@babel/runtime": "^7.13.10", - "@types/react": "^16.9.0", - "@types/react-dom": "^16.9.0", - "@wordpress/escape-html": "^2.2.2", - "lodash": "^4.17.21", - "react": "^17.0.1", - "react-dom": "^17.0.1" + "node_modules/@svgr/plugin-svgo/node_modules/css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" } }, - "@wordpress/escape-html": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-2.2.2.tgz", - "integrity": "sha512-NuPury2dyaqF7zpDaUOKaoM0FrEuqaDE1c3j7rM6kceJ4ZFDHnCLf5NivwchOLo7Xs0oVtqBdDza/dcSQaLFGg==", - "requires": { - "@babel/runtime": "^7.13.10" + "node_modules/@svgr/plugin-svgo/node_modules/css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" } }, - "@wordpress/eslint-plugin": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/@wordpress/eslint-plugin/-/eslint-plugin-9.2.0.tgz", - "integrity": "sha512-x0vI4EWeG20TyewXdiyUhGSJRqXR8vw47WZjzdmL8iuitDCoyWkKe73wtEs/mWLDrSNms8S0bTnp0dK6UAMXJw==", + "node_modules/@svgr/plugin-svgo/node_modules/css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", "dev": true, - "requires": { - "@typescript-eslint/eslint-plugin": "^4.31.0", - "@typescript-eslint/parser": "^4.31.0", - "@wordpress/prettier-config": "^1.1.1", - "babel-eslint": "^10.1.0", - "cosmiconfig": "^7.0.0", - "eslint-config-prettier": "^7.1.0", - "eslint-plugin-import": "^2.23.4", - "eslint-plugin-jest": "^24.1.3", - "eslint-plugin-jsdoc": "^36.0.8", - "eslint-plugin-jsx-a11y": "^6.4.1", - "eslint-plugin-prettier": "^3.3.0", - "eslint-plugin-react": "^7.22.0", - "eslint-plugin-react-hooks": "^4.2.0", - "globals": "^12.0.0", - "prettier": "npm:wp-prettier@2.2.1-beta-1", - "requireindex": "^1.2.0" + "engines": { + "node": ">= 6" }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/@svgr/plugin-svgo/node_modules/dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, "dependencies": { - "cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", - "dev": true, - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - } - }, - "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", - "dev": true, - "requires": { - "type-fest": "^0.8.1" - } - } + "domelementtype": "^2.0.1", + "entities": "^2.0.0" } }, - "@wordpress/hooks": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-3.2.1.tgz", - "integrity": "sha512-yI8MHs6UsvgJdDsOnXGkY7/7hrOCEv/M7vwdEVA5r6nGzgJaJxf8pjBqzRkCq3nVaWqxoNZgCMHJSul6Q8RR2g==", - "requires": { - "@babel/runtime": "^7.13.10" + "node_modules/@svgr/plugin-svgo/node_modules/domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "dependencies": { + "dom-serializer": "0", + "domelementtype": "1" } }, - "@wordpress/html-entities": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@wordpress/html-entities/-/html-entities-3.2.2.tgz", - "integrity": "sha512-MsmB1wtDMFfvNQiKMVMW+1ie2P3+tBZiHESkDPnXw34Dt4Tk0+QY7eYCR9krNcjJImWYJcxL+4n4M1OF9oQv0Q==", - "requires": { - "@babel/runtime": "^7.13.10" + "node_modules/@svgr/plugin-svgo/node_modules/domutils/node_modules/domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "node_modules/@svgr/plugin-svgo/node_modules/mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", + "dev": true + }, + "node_modules/@svgr/plugin-svgo/node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" } }, - "@wordpress/i18n": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.2.3.tgz", - "integrity": "sha512-iaL7WVmFBVLyUJR0FVeaI0YJK3BiYg6Ir+s3PoJN3ppm+YsZUGThstHL8zSfQFMF0WaQ0OFWjnDqNl1th2annA==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/hooks": "^3.2.1", - "gettext-parser": "^1.3.1", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "sprintf-js": "^1.1.1", - "tannin": "^1.2.0" + "node_modules/@svgr/plugin-svgo/node_modules/nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "dependencies": { + "boolbase": "~1.0.0" } }, - "@wordpress/icons": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@wordpress/icons/-/icons-6.0.0.tgz", - "integrity": "sha512-dLr7O2mu6JlCQhM3uSIRJHFyv1AeYpRosrcWF9+zlhUy7RBczfLfhf7lXO6gVxhyuUEiWYfvesB5pNha4HxsVg==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/element": "^4.0.2", - "@wordpress/primitives": "^3.0.2" + "node_modules/@svgr/plugin-svgo/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, - "@wordpress/interface": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@wordpress/interface/-/interface-4.1.1.tgz", - "integrity": "sha512-O5lNIDOez8y8ywIX7udgrm1hmVPRZ7QkuW0qa826FuFFSVvgWrdI/hXBaUlWfjfJHJQEuDTkeG3Vtc8kRPPR2A==", + "node_modules/@svgr/plugin-svgo/node_modules/svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "deprecated": "This SVGO version is no longer supported. Upgrade to v2.x.x.", "dev": true, - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/a11y": "^3.2.3", - "@wordpress/components": "^18.0.0", - "@wordpress/compose": "^5.0.3", - "@wordpress/data": "^6.1.1", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/element": "^4.0.2", - "@wordpress/i18n": "^4.2.3", - "@wordpress/icons": "^6.0.0", - "@wordpress/plugins": "^4.0.3", - "@wordpress/viewport": "^4.0.3", - "classnames": "^2.3.1", - "lodash": "^4.17.21" + "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" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=4.0.0" } }, - "@wordpress/is-shallow-equal": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-4.2.0.tgz", - "integrity": "sha512-9Oy7f3HFLMNfry4LLwYmfx4tROmusPAOfanv9F/MgzSBfMH7eyxU2JZd4KrP7IbPb59UfoUa8GhaLsnqKm66og==", - "requires": { - "@babel/runtime": "^7.13.10" + "node_modules/@svgr/webpack": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz", + "integrity": "sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/plugin-transform-react-constant-elements": "^7.12.1", + "@babel/preset-env": "^7.12.1", + "@babel/preset-react": "^7.12.5", + "@svgr/core": "^5.5.0", + "@svgr/plugin-jsx": "^5.5.0", + "@svgr/plugin-svgo": "^5.5.0", + "loader-utils": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" } }, - "@wordpress/jest-console": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@wordpress/jest-console/-/jest-console-4.1.0.tgz", - "integrity": "sha512-MAbEfYUH+odlYYtPNKoKnWzSZKZjSc2r2kvFJ7FR920ZdteEgSAPIOvjyv4r4UbJy3ZuKemnXHuVtcTAKca5Tw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.13.10", - "jest-matcher-utils": "^26.6.2", - "lodash": "^4.17.21" + "node_modules/@tannin/compile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@tannin/compile/-/compile-1.1.0.tgz", + "integrity": "sha512-n8m9eNDfoNZoxdvWiTfW/hSPhehzLJ3zW7f8E7oT6mCROoMNWCB4TYtv041+2FMAxweiE0j7i1jubQU4MEC/Gg==", + "dependencies": { + "@tannin/evaluate": "^1.2.0", + "@tannin/postfix": "^1.1.0" } }, - "@wordpress/jest-preset-default": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@wordpress/jest-preset-default/-/jest-preset-default-7.1.1.tgz", - "integrity": "sha512-925Ern0GAABF2/2B25svi8GFHJqPWLJlwndJcCfwbx8CRNXeXu3YfYAtZrDE6vDRBxKJQEk8j9upptiZrV8rJw==", + "node_modules/@tannin/evaluate": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@tannin/evaluate/-/evaluate-1.2.0.tgz", + "integrity": "sha512-3ioXvNowbO/wSrxsDG5DKIMxC81P0QrQTYai8zFNY+umuoHWRPbQ/TuuDEOju9E+jQDXmj6yI5GyejNuh8I+eg==" + }, + "node_modules/@tannin/plural-forms": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@tannin/plural-forms/-/plural-forms-1.1.0.tgz", + "integrity": "sha512-xl9R2mDZO/qiHam1AgMnAES6IKIg7OBhcXqy6eDsRCdXuxAFPcjrej9HMjyCLE0DJ/8cHf0i5OQTstuBRhpbHw==", + "dependencies": { + "@tannin/compile": "^1.1.0" + } + }, + "node_modules/@tannin/postfix": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@tannin/postfix/-/postfix-1.1.0.tgz", + "integrity": "sha512-oocsqY7g0cR+Gur5jRQLSrX2OtpMLMse1I10JQBm8CdGMrDkh1Mg2gjsiquMHRtBs4Qwu5wgEp5GgIYHk4SNPw==" + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", "dev": true, - "requires": { - "@wojtekmaj/enzyme-adapter-react-17": "^0.6.1", - "@wordpress/jest-console": "^4.1.0", - "babel-jest": "^26.6.3", - "enzyme": "^3.11.0", - "enzyme-to-json": "^3.4.4" + "engines": { + "node": ">= 6" } }, - "@wordpress/jest-puppeteer-axe": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@wordpress/jest-puppeteer-axe/-/jest-puppeteer-axe-3.1.0.tgz", - "integrity": "sha512-XdxXI9nKSAyPWMMjWObfEuumcbZG0wSvlGzNl/qlTjcxwVNaCIxzBBfMxbcxNLcXHasNr/PowbxVqMCEaMfpcA==", + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", "dev": true, - "requires": { - "@axe-core/puppeteer": "^4.0.0", - "@babel/runtime": "^7.13.10" + "engines": { + "node": ">=10.13.0" } }, - "@wordpress/keyboard-shortcuts": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@wordpress/keyboard-shortcuts/-/keyboard-shortcuts-3.0.3.tgz", - "integrity": "sha512-GAISgZGQYjilfiHGawIpKDtgL6EbsLrzlZzLal7XHVFNDAkFfXG+RbWvSgH5gFmoS0fF8rbU2U7+W38MCU90Gw==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/compose": "^5.0.3", - "@wordpress/data": "^6.1.1", - "@wordpress/element": "^4.0.2", - "@wordpress/keycodes": "^3.2.3", - "lodash": "^4.17.21", - "rememo": "^3.0.0" + "node_modules/@types/babel__core": { + "version": "7.1.16", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.16.tgz", + "integrity": "sha512-EAEHtisTMM+KaKwfWdC3oyllIqswlznXCIVCt7/oRNrh+DhgT4UEBNC/jlADNjvw7UnfbcdkGQcPVZ1xYiLcrQ==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" } }, - "@wordpress/keycodes": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@wordpress/keycodes/-/keycodes-3.2.3.tgz", - "integrity": "sha512-1ClhtTbOSijLsyubbTlg1Df++W4CmjjRj88L7rzGX63iEHfBX6SSvui2pWVlQigDNdLNoaYGOaWm5eqDnvxkeQ==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/i18n": "^4.2.3", - "lodash": "^4.17.21" + "node_modules/@types/babel__generator": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.3.tgz", + "integrity": "sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" } }, - "@wordpress/media-utils": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@wordpress/media-utils/-/media-utils-3.0.2.tgz", - "integrity": "sha512-z/bN8nDB7AmGrMEOHwhp54UvoeyCcRrVmxiJxmke4VeYvCbSRlYwNVEiH8Cg13WhDrJEAIemqjmUdkRL+6c42Q==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/api-fetch": "^5.2.3", - "@wordpress/blob": "^3.2.1", - "@wordpress/element": "^4.0.2", - "@wordpress/i18n": "^4.2.3", - "lodash": "^4.17.21" + "node_modules/@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" } }, - "@wordpress/notices": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@wordpress/notices/-/notices-3.2.4.tgz", - "integrity": "sha512-YpzgJwKwoO6SwCwu33jAr5FzaI9EezTKSu1VMZ/CQh4HNlnZxUSx/H+JDoUzHQWdHF3Z7EWiPBy8rZQVzFVaLw==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/a11y": "^3.2.3", - "@wordpress/data": "^6.1.1", - "lodash": "^4.17.21" + "node_modules/@types/babel__traverse": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz", + "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.3.0" } }, - "@wordpress/npm-package-json-lint-config": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@wordpress/npm-package-json-lint-config/-/npm-package-json-lint-config-4.1.0.tgz", - "integrity": "sha512-FjXL5GbpmI/wXXcpCf2sKosVIVuWjUuHmDbwcMzd0SClcudo9QjDRdVe35We+js8eQLPgB9hsG4Cty6cAFFxsQ==", - "dev": true + "node_modules/@types/cheerio": { + "version": "0.22.30", + "resolved": "https://registry.npmjs.org/@types/cheerio/-/cheerio-0.22.30.tgz", + "integrity": "sha512-t7ZVArWZlq3dFa9Yt33qFBQIK4CQd1Q3UJp0V+UhP6vgLWLM6Qug7vZuRSGXg45zXeB1Fm5X2vmBkEX58LV2Tw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } }, - "@wordpress/plugins": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@wordpress/plugins/-/plugins-4.0.3.tgz", - "integrity": "sha512-NRmnuaoj0AlMz+APYLWpDUpfl2ammVsUjZLGgTJykjREQhsb6U5FY6DI3pHyJ79kMTtgpioGk8cD7bGiG4PVYA==", + "node_modules/@types/eslint": { + "version": "7.28.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.28.2.tgz", + "integrity": "sha512-KubbADPkfoU75KgKeKLsFHXnU4ipH7wYg0TRT33NK3N3yiu7jlFAAoygIWBV+KbuHx/G+AvuGX6DllnK35gfJA==", "dev": true, - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/compose": "^5.0.3", - "@wordpress/element": "^4.0.2", - "@wordpress/hooks": "^3.2.1", - "@wordpress/icons": "^6.0.0", - "lodash": "^4.17.21", - "memize": "^1.1.0" + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" } }, - "@wordpress/postcss-plugins-preset": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@wordpress/postcss-plugins-preset/-/postcss-plugins-preset-3.2.2.tgz", - "integrity": "sha512-E2dha01KOX6feGL3XLXL5aMfakYZpUl1be/LC3B2puaidCz73GK/mqxATJhHzMbr8zzwtqSJ2asj0WOiPwz8+A==", + "node_modules/@types/eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g==", "dev": true, - "requires": { - "@wordpress/base-styles": "^4.0.1", - "autoprefixer": "^10.2.5" + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" } }, - "@wordpress/prettier-config": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@wordpress/prettier-config/-/prettier-config-1.1.1.tgz", - "integrity": "sha512-qjpBK5KB2ieCLv+1fGNKRW4urf5tFN1eUn3Qy+JINxNwAx6Jj9uhfXA4AldCSnD+WkzsN2UgBvgAj5/SWwzRZQ==", + "node_modules/@types/estree": { + "version": "0.0.50", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", "dev": true }, - "@wordpress/primitives": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@wordpress/primitives/-/primitives-3.0.2.tgz", - "integrity": "sha512-/r7EuKEyzM8aPhjGS/NC1+lgr3Dk/mCbICndAh7sZP86OmWqoSpnh0VPZp/DxT4JdGiCa/NycXdOiP7ylngG6A==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/element": "^4.0.2", - "classnames": "^2.3.1" + "node_modules/@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" } }, - "@wordpress/priority-queue": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@wordpress/priority-queue/-/priority-queue-2.2.2.tgz", - "integrity": "sha512-28zPQ1jIhM+9w0xfLzL8xoHIEyG0ORjIi4A8j3aWBYXHYH9f/7oVAtJRXgVTJ9iJFyiUTL8sDiaZQ6aTFV78Tg==", - "requires": { - "@babel/runtime": "^7.13.10" + "node_modules/@types/graceful-fs": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", + "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "dev": true, + "dependencies": { + "@types/node": "*" } }, - "@wordpress/redux-routine": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@wordpress/redux-routine/-/redux-routine-4.2.1.tgz", - "integrity": "sha512-u//4vdeKzYvu4YBRmSUsIbnUazai+PybEnquLPqxQdaF4JqVN1D5OPWHSeFtmaXR1c78I+lUf40Q7dnmA2waXw==", - "requires": { - "@babel/runtime": "^7.13.10", - "is-promise": "^4.0.0", - "lodash": "^4.17.21", - "redux": "^4.1.0", - "rungen": "^0.3.2" - } + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", + "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", + "dev": true }, - "@wordpress/reusable-blocks": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@wordpress/reusable-blocks/-/reusable-blocks-3.0.3.tgz", - "integrity": "sha512-d1AegLrCrI/mc5p0BaDtx14gqYX67UxcekHbnahGiFUB8vByEtuMgGlb3zZh9MyR3NjqLwpZPyg6wk13YitEYA==", - "requires": { - "@wordpress/block-editor": "^7.0.3", - "@wordpress/blocks": "^11.1.1", - "@wordpress/components": "^18.0.0", - "@wordpress/compose": "^5.0.3", - "@wordpress/core-data": "^4.0.3", - "@wordpress/data": "^6.1.1", - "@wordpress/element": "^4.0.2", - "@wordpress/i18n": "^4.2.3", - "@wordpress/icons": "^6.0.0", - "@wordpress/notices": "^3.2.4", - "@wordpress/url": "^3.2.3", - "lodash": "^4.17.21" + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" } }, - "@wordpress/rich-text": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@wordpress/rich-text/-/rich-text-5.0.3.tgz", - "integrity": "sha512-aGd69Cx0awYTXVbtQ2htxo3Eud7G7kT5GCPFRkHHFyynMtUzN1WGoOJyuolgT1XecGw0H7bJLYnhEuRrvs+o3A==", - "requires": { + "node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "dev": true + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "dev": true + }, + "node_modules/@types/lodash": { + "version": "4.14.176", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.176.tgz", + "integrity": "sha512-xZmuPTa3rlZoIbtDUyJKZQimJV3bxCmzMIO2c9Pz9afyDro6kr7R79GwcB6mRhuoPmV2p1Vb66WOJH7F886WKQ==" + }, + "node_modules/@types/mdast": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", + "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", + "dev": true, + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true + }, + "node_modules/@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "dev": true + }, + "node_modules/@types/mousetrap": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@types/mousetrap/-/mousetrap-1.6.8.tgz", + "integrity": "sha512-zTqjvgCUT5EoXqbqmd8iJMb4NJqyV/V7pK7AIKq7qcaAsJIpGlTVJS1HQM6YkdHCdnkNSbhcQI7MXYxFfE3iCA==" + }, + "node_modules/@types/node": { + "version": "16.11.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.6.tgz", + "integrity": "sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==", + "dev": true + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "dev": true + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + }, + "node_modules/@types/prettier": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.1.tgz", + "integrity": "sha512-Fo79ojj3vdEZOHg3wR9ksAMRz4P3S5fDB5e/YWZiFnyFQI1WY2Vftu9XoXVVtJfxB7Bpce/QTqWSSntkz2Znrw==", + "dev": true + }, + "node_modules/@types/prop-types": { + "version": "15.7.4", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz", + "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==" + }, + "node_modules/@types/q": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", + "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==", + "dev": true + }, + "node_modules/@types/react": { + "version": "16.14.20", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.14.20.tgz", + "integrity": "sha512-SV7TaVc8e9E/5Xuv6TIyJ5VhQpZoVFJqX6IZgj5HZoFCtIDCArE3qXkcHlc6O/Ud4UwcMoX+tlvDA95YrKdLgA==", + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "16.9.14", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.14.tgz", + "integrity": "sha512-FIX2AVmPTGP30OUJ+0vadeIFJJ07Mh1m+U0rxfgyW34p3rTlXI+nlenvAxNn4BP36YyI9IJ/+UJ7Wu22N1pI7A==", + "dependencies": { + "@types/react": "^16" + } + }, + "node_modules/@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" + }, + "node_modules/@types/source-list-map": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", + "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==", + "dev": true + }, + "node_modules/@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, + "node_modules/@types/tapable": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.8.tgz", + "integrity": "sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ==", + "dev": true + }, + "node_modules/@types/uglify-js": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.13.1.tgz", + "integrity": "sha512-O3MmRAk6ZuAKa9CHgg0Pr0+lUOqoMLpc9AS4R8ano2auvsg7IE8syF3Xh/NPr26TWklxYcqoEEFdzLLs1fV9PQ==", + "dev": true, + "dependencies": { + "source-map": "^0.6.1" + } + }, + "node_modules/@types/uglify-js/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@types/unist": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", + "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", + "dev": true + }, + "node_modules/@types/webpack": { + "version": "4.41.31", + "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.31.tgz", + "integrity": "sha512-/i0J7sepXFIp1ZT7FjUGi1eXMCg8HCCzLJEQkKsOtbJFontsJLolBcDC+3qxn5pPwiCt1G0ZdRmYRzNBtvpuGQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/tapable": "^1", + "@types/uglify-js": "*", + "@types/webpack-sources": "*", + "anymatch": "^3.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/@types/webpack-sources": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-3.2.0.tgz", + "integrity": "sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/source-list-map": "*", + "source-map": "^0.7.3" + } + }, + "node_modules/@types/webpack-sources/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@types/webpack/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@types/yargs": { + "version": "15.0.14", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", + "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", + "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", + "dev": true + }, + "node_modules/@types/yauzl": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.2.tgz", + "integrity": "sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==", + "dev": true, + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", + "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", + "dev": true, + "dependencies": { + "@typescript-eslint/experimental-utils": "4.33.0", + "@typescript-eslint/scope-manager": "4.33.0", + "debug": "^4.3.1", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.1.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^4.0.0", + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@typescript-eslint/experimental-utils": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", + "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.7", + "@typescript-eslint/scope-manager": "4.33.0", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/typescript-estree": "4.33.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + } + }, + "node_modules/@typescript-eslint/experimental-utils/node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", + "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "4.33.0", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/typescript-estree": "4.33.0", + "debug": "^4.3.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", + "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", + "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", + "dev": true, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", + "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0", + "debug": "^4.3.1", + "globby": "^11.0.3", + "is-glob": "^4.0.1", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", + "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.33.0", + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.0.tgz", + "integrity": "sha512-ttOkEkoalEHa7RaFYpM0ErK1xc4twg3Am9hfHhL7MVqlHebnkYd2wuI/ZqTDj0cVzZho6PdinY0phFZV3O0Mzg==", + "dev": true, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x", + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.0.tgz", + "integrity": "sha512-F6b+Man0rwE4n0409FyAJHStYA5OIZERxmnUfLVwv0mc0V1wLad3V7jqRlMkgKBeAq07jUvglacNaa6g9lOpuw==", + "dev": true, + "dependencies": { + "envinfo": "^7.7.3" + }, + "peerDependencies": { + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.0.tgz", + "integrity": "sha512-ZkVeqEmRpBV2GHvjjUZqEai2PpUbuq8Bqd//vEYsp63J8WyexI8ppCqVS3Zs0QADf6aWuPdU+0XsPI647PVlQA==", + "dev": true, + "peerDependencies": { + "webpack-cli": "4.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@wojtekmaj/enzyme-adapter-react-17": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@wojtekmaj/enzyme-adapter-react-17/-/enzyme-adapter-react-17-0.6.5.tgz", + "integrity": "sha512-ChIObUiXXYUiqzXPqOai+p6KF5dlbItpDDYsftUOQiAiygbMDlLeJIjynC6ZrJIa2U2MpRp4YJmtR2GQyIHjgA==", + "dev": true, + "dependencies": { + "@wojtekmaj/enzyme-adapter-utils": "^0.1.1", + "enzyme-shallow-equal": "^1.0.0", + "has": "^1.0.0", + "object.assign": "^4.1.0", + "object.values": "^1.1.0", + "prop-types": "^15.7.0", + "react-is": "^17.0.2", + "react-test-renderer": "^17.0.0" + }, + "peerDependencies": { + "enzyme": "^3.0.0", + "react": "^17.0.0-0", + "react-dom": "^17.0.0-0" + } + }, + "node_modules/@wojtekmaj/enzyme-adapter-utils": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@wojtekmaj/enzyme-adapter-utils/-/enzyme-adapter-utils-0.1.1.tgz", + "integrity": "sha512-bNPWtN/d8huKOkC6j1E3EkSamnRrHHT7YuR6f9JppAQqtoAm3v4/vERe4J14jQKmHLCyEBHXrlgb7H6l817hVg==", + "dev": true, + "dependencies": { + "function.prototype.name": "^1.1.0", + "has": "^1.0.0", + "object.assign": "^4.1.0", + "object.fromentries": "^2.0.0", + "prop-types": "^15.7.0" + }, + "peerDependencies": { + "react": "^17.0.0-0" + } + }, + "node_modules/@wordpress/a11y": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@wordpress/a11y/-/a11y-3.2.3.tgz", + "integrity": "sha512-s6ghUetvxRPDyC3fohaXtOeoTQeA1JPYPNSic616LWLWvx/bOCY4RibfwxS7p7prY1+0Px2VhxsPIM2kZuR/wA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@wordpress/dom-ready": "^3.2.2", + "@wordpress/i18n": "^4.2.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/api-fetch": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-5.2.3.tgz", + "integrity": "sha512-hEGn9vXk76ejdvei1pBX/kaQ3xnKlE2dwtCXszgem8PdDF5GYzgESEwYaWvfgPAfJs7xF283FN1QsNzA4M+N9A==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@wordpress/i18n": "^4.2.3", + "@wordpress/url": "^3.2.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/autop": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@wordpress/autop/-/autop-3.2.2.tgz", + "integrity": "sha512-lfw7yZs1PeWVdPnKaV5rPMGIhkwPmdnKaviIbQV48E8irQOcPaT3NgWQksizr1Qlersm6aNBkXZfM1idRzzcgA==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/babel-plugin-import-jsx-pragma": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@wordpress/babel-plugin-import-jsx-pragma/-/babel-plugin-import-jsx-pragma-3.1.0.tgz", + "integrity": "sha512-518mL3goaSeXtJCQcPK9OYHUUiA0sjXuoGWHBwRalkyTIQZZy5ZZzlwrlSc9ESZcOw9BZ+Uo8CJRjV2OWnx+Zw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "@babel/core": "^7.12.9" + } + }, + "node_modules/@wordpress/babel-preset-default": { + "version": "6.3.3", + "resolved": "https://registry.npmjs.org/@wordpress/babel-preset-default/-/babel-preset-default-6.3.3.tgz", + "integrity": "sha512-sMP7LgBmYaF5Cz+FZ4EXS5Qu4Tecv3JFIYEVbPLmn+/AIA+fzrEELn2BuEcHmd0q7VogAAmhU1iw2Fndj29bgw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.13.10", + "@babel/plugin-transform-react-jsx": "^7.12.7", + "@babel/plugin-transform-runtime": "^7.13.10", + "@babel/preset-env": "^7.13.10", + "@babel/preset-typescript": "^7.13.0", + "@babel/runtime": "^7.13.10", + "@wordpress/babel-plugin-import-jsx-pragma": "^3.1.0", + "@wordpress/browserslist-config": "^4.1.0", + "@wordpress/element": "^4.0.2", + "@wordpress/warning": "^2.2.2", + "browserslist": "^4.16.6", + "core-js": "^3.12.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/base-styles": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@wordpress/base-styles/-/base-styles-4.0.2.tgz", + "integrity": "sha512-0eESCFwdITSsWR+goVaWe3LZ/7s+GprNwANKF+1xm8gMxlHQks5gYDMvNdh0Q1yTHlK/vtg1VC7Bj1gydqmlxw==", + "dev": true + }, + "node_modules/@wordpress/blob": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@wordpress/blob/-/blob-3.2.1.tgz", + "integrity": "sha512-qD8wZ6n+hjoshV2dp9eGH3VismOM0kvrJn5cSe4PaoYDREqUhioJIDXktZxaohnvgWOq6xfJH6rS4Or8W0r9ew==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/block-editor": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@wordpress/block-editor/-/block-editor-7.0.3.tgz", + "integrity": "sha512-rCPth+v+Nu5JiIkOgUaCgiVkub+VWd8fXzek/vtk5T+VXDJ7jJA6dLcuR8zLigWEkyMuZ5nG0RADGgldy9WqxA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@react-spring/web": "^9.2.4", + "@wordpress/a11y": "^3.2.3", + "@wordpress/api-fetch": "^5.2.3", + "@wordpress/blob": "^3.2.1", + "@wordpress/block-serialization-default-parser": "^4.2.2", + "@wordpress/blocks": "^11.1.1", + "@wordpress/components": "^18.0.0", + "@wordpress/compose": "^5.0.3", + "@wordpress/data": "^6.1.1", + "@wordpress/data-controls": "^2.2.4", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.4", + "@wordpress/element": "^4.0.2", + "@wordpress/hooks": "^3.2.1", + "@wordpress/html-entities": "^3.2.2", + "@wordpress/i18n": "^4.2.3", + "@wordpress/icons": "^6.0.0", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keyboard-shortcuts": "^3.0.3", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/notices": "^3.2.4", + "@wordpress/rich-text": "^5.0.3", + "@wordpress/shortcode": "^3.2.2", + "@wordpress/token-list": "^2.2.1", + "@wordpress/url": "^3.2.3", + "@wordpress/warning": "^2.2.2", + "@wordpress/wordcount": "^3.2.2", + "classnames": "^2.3.1", + "colord": "^2.7.0", + "css-mediaquery": "^0.1.2", + "diff": "^4.0.2", + "dom-scroll-into-view": "^1.2.1", + "inherits": "^2.0.3", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "react-autosize-textarea": "^7.1.0", + "react-easy-crop": "^3.0.0", + "redux-multi": "^0.1.12", + "rememo": "^3.0.0", + "traverse": "^0.6.6" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/block-editor/node_modules/react": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", + "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@wordpress/block-editor/node_modules/react-autosize-textarea": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/react-autosize-textarea/-/react-autosize-textarea-7.1.0.tgz", + "integrity": "sha512-BHpjCDkuOlllZn3nLazY2F8oYO1tS2jHnWhcjTWQdcKiiMU6gHLNt/fzmqMSyerR0eTdKtfSIqtSeTtghNwS+g==", + "dependencies": { + "autosize": "^4.0.2", + "line-height": "^0.3.1", + "prop-types": "^15.5.6" + }, + "peerDependencies": { + "react": "^0.14.0 || ^15.0.0 || ^16.0.0", + "react-dom": "^0.14.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@wordpress/block-editor/node_modules/react-dom": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", + "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" + }, + "peerDependencies": { + "react": "^16.14.0" + } + }, + "node_modules/@wordpress/block-editor/node_modules/scheduler": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "node_modules/@wordpress/block-library": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@wordpress/block-library/-/block-library-6.0.2.tgz", + "integrity": "sha512-zC5IzQ7t+Y6GkeceorlI69zE4/pFw0klWhdvsltuZSDuIg4h76HyElHE+rmZYXCAiwMU+K9/WYoWjLf6BsrGLg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@wordpress/a11y": "^3.2.3", + "@wordpress/api-fetch": "^5.2.4", + "@wordpress/autop": "^3.2.2", + "@wordpress/blob": "^3.2.1", + "@wordpress/block-editor": "^7.0.4", + "@wordpress/blocks": "^11.1.2", + "@wordpress/components": "^19.0.0", + "@wordpress/compose": "^5.0.4", + "@wordpress/core-data": "^4.0.4", + "@wordpress/data": "^6.1.2", + "@wordpress/date": "^4.2.2", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.5", + "@wordpress/element": "^4.0.3", + "@wordpress/escape-html": "^2.2.2", + "@wordpress/hooks": "^3.2.1", + "@wordpress/html-entities": "^3.2.2", + "@wordpress/i18n": "^4.2.3", + "@wordpress/icons": "^6.0.1", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/notices": "^3.2.5", + "@wordpress/primitives": "^3.0.3", + "@wordpress/reusable-blocks": "^3.0.4", + "@wordpress/rich-text": "^5.0.4", + "@wordpress/server-side-render": "^3.0.4", + "@wordpress/url": "^3.2.3", + "@wordpress/viewport": "^4.0.4", + "classnames": "^2.3.1", + "colord": "^2.7.0", + "fast-average-color": "4.3.0", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "micromodal": "^0.4.6", + "moment": "^2.22.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/block-library/node_modules/@wordpress/api-fetch": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-5.2.4.tgz", + "integrity": "sha512-8vMm08L3MMUynhD6sxe9VhRcfi3qGE3m9j7LpC9yAIxt70DaMRxHWEmGIbgO2F3INkqACdLWnDQmsHDKOSWQsQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@wordpress/i18n": "^4.2.3", + "@wordpress/url": "^3.2.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/block-library/node_modules/@wordpress/block-editor": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/@wordpress/block-editor/-/block-editor-7.0.4.tgz", + "integrity": "sha512-crnKOzGrqe9YZOFRbEsJhfm5sGNoCK8oHDTTO8TeTlKw4tGbvTUK3aayxTr9cd2Uu3J3Cy13d3M9qJC8ebXhbQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@react-spring/web": "^9.2.4", + "@wordpress/a11y": "^3.2.3", + "@wordpress/api-fetch": "^5.2.4", + "@wordpress/blob": "^3.2.1", + "@wordpress/block-serialization-default-parser": "^4.2.2", + "@wordpress/blocks": "^11.1.2", + "@wordpress/components": "^19.0.0", + "@wordpress/compose": "^5.0.4", + "@wordpress/data": "^6.1.2", + "@wordpress/data-controls": "^2.2.5", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.5", + "@wordpress/element": "^4.0.3", + "@wordpress/hooks": "^3.2.1", + "@wordpress/html-entities": "^3.2.2", + "@wordpress/i18n": "^4.2.3", + "@wordpress/icons": "^6.0.1", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keyboard-shortcuts": "^3.0.4", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/notices": "^3.2.5", + "@wordpress/rich-text": "^5.0.4", + "@wordpress/shortcode": "^3.2.2", + "@wordpress/token-list": "^2.2.1", + "@wordpress/url": "^3.2.3", + "@wordpress/warning": "^2.2.2", + "@wordpress/wordcount": "^3.2.2", + "classnames": "^2.3.1", + "colord": "^2.7.0", + "css-mediaquery": "^0.1.2", + "diff": "^4.0.2", + "dom-scroll-into-view": "^1.2.1", + "inherits": "^2.0.3", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "react-autosize-textarea": "^7.1.0", + "react-easy-crop": "^3.0.0", + "redux-multi": "^0.1.12", + "rememo": "^3.0.0", + "traverse": "^0.6.6" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/block-library/node_modules/@wordpress/block-editor/node_modules/react": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", + "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", + "dev": true, + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@wordpress/block-library/node_modules/@wordpress/block-editor/node_modules/react-autosize-textarea": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/react-autosize-textarea/-/react-autosize-textarea-7.1.0.tgz", + "integrity": "sha512-BHpjCDkuOlllZn3nLazY2F8oYO1tS2jHnWhcjTWQdcKiiMU6gHLNt/fzmqMSyerR0eTdKtfSIqtSeTtghNwS+g==", + "dev": true, + "dependencies": { + "autosize": "^4.0.2", + "line-height": "^0.3.1", + "prop-types": "^15.5.6" + }, + "peerDependencies": { + "react": "^0.14.0 || ^15.0.0 || ^16.0.0", + "react-dom": "^0.14.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@wordpress/block-library/node_modules/@wordpress/block-editor/node_modules/react-dom": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", + "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", + "dev": true, + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" + }, + "peerDependencies": { + "react": "^16.14.0" + } + }, + "node_modules/@wordpress/block-library/node_modules/@wordpress/blocks": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/@wordpress/blocks/-/blocks-11.1.2.tgz", + "integrity": "sha512-xVvC/RXj9GXNRkQcGnmjWeS54intybON4Ol2vCVfreJtA5Cra5yRapRJwz3at1sgDD4q06k1sj98SemMEanazw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@wordpress/autop": "^3.2.2", + "@wordpress/blob": "^3.2.1", + "@wordpress/block-serialization-default-parser": "^4.2.2", + "@wordpress/compose": "^5.0.4", + "@wordpress/data": "^6.1.2", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.5", + "@wordpress/element": "^4.0.3", + "@wordpress/hooks": "^3.2.1", + "@wordpress/html-entities": "^3.2.2", + "@wordpress/i18n": "^4.2.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/shortcode": "^3.2.2", + "colord": "^2.7.0", + "hpq": "^1.3.0", + "lodash": "^4.17.21", + "rememo": "^3.0.0", + "showdown": "^1.9.1", + "simple-html-tokenizer": "^0.5.7", + "uuid": "^8.3.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/block-library/node_modules/@wordpress/components": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/@wordpress/components/-/components-19.0.0.tgz", + "integrity": "sha512-foFC+jJ3nu6PZ2pnjdszi7R17CQRquXkCPaydlOCsuDbsKm0dowR264jAdK0HJWepttj+kh3amWEhzajX6AYtg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@emotion/cache": "^11.4.0", + "@emotion/css": "^11.1.3", + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "@emotion/utils": "1.0.0", + "@wordpress/a11y": "^3.2.3", + "@wordpress/compose": "^5.0.4", + "@wordpress/date": "^4.2.2", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.5", + "@wordpress/element": "^4.0.3", + "@wordpress/hooks": "^3.2.1", + "@wordpress/i18n": "^4.2.3", + "@wordpress/icons": "^6.0.1", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/primitives": "^3.0.3", + "@wordpress/rich-text": "^5.0.4", + "@wordpress/warning": "^2.2.2", + "classnames": "^2.3.1", + "colord": "^2.7.0", + "dom-scroll-into-view": "^1.2.1", + "downshift": "^6.0.15", + "framer-motion": "^4.1.17", + "gradient-parser": "^0.1.5", + "highlight-words-core": "^1.2.2", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "moment": "^2.22.1", + "re-resizable": "^6.4.0", + "react-colorful": "^5.3.1", + "react-dates": "^17.1.1", + "react-resize-aware": "^3.1.0", + "react-use-gesture": "^9.0.0", + "reakit": "^1.3.8", + "rememo": "^3.0.0", + "uuid": "^8.3.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "reakit-utils": "^0.15.1" + } + }, + "node_modules/@wordpress/block-library/node_modules/@wordpress/components/node_modules/airbnb-prop-types": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz", + "integrity": "sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg==", + "dev": true, + "dependencies": { + "array.prototype.find": "^2.1.1", + "function.prototype.name": "^1.1.2", + "is-regex": "^1.1.0", + "object-is": "^1.1.2", + "object.assign": "^4.1.0", + "object.entries": "^1.1.2", + "prop-types": "^15.7.2", + "prop-types-exact": "^1.2.0", + "react-is": "^16.13.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "peerDependencies": { + "react": "^0.14 || ^15.0.0 || ^16.0.0-alpha" + } + }, + "node_modules/@wordpress/block-library/node_modules/@wordpress/components/node_modules/react": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", + "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", + "dev": true, + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@wordpress/block-library/node_modules/@wordpress/components/node_modules/react-dates": { + "version": "17.2.0", + "resolved": "https://registry.npmjs.org/react-dates/-/react-dates-17.2.0.tgz", + "integrity": "sha512-RDlerU8DdRRrlYS0MQ7Z9igPWABGLDwz6+ykBNff67RM3Sset2TDqeuOr+R5o00Ggn5U47GeLsGcSDxlZd9cHw==", + "dev": true, + "dependencies": { + "airbnb-prop-types": "^2.10.0", + "consolidated-events": "^1.1.1 || ^2.0.0", + "is-touch-device": "^1.0.1", + "lodash": "^4.1.1", + "object.assign": "^4.1.0", + "object.values": "^1.0.4", + "prop-types": "^15.6.1", + "react-addons-shallow-compare": "^15.6.2", + "react-moment-proptypes": "^1.6.0", + "react-outside-click-handler": "^1.2.0", + "react-portal": "^4.1.5", + "react-with-styles": "^3.2.0", + "react-with-styles-interface-css": "^4.0.2" + }, + "peerDependencies": { + "moment": "^2.18.1", + "react": "^0.14 || ^15.5.4 || ^16.1.1", + "react-dom": "^0.14 || ^15.5.4 || ^16.1.1" + } + }, + "node_modules/@wordpress/block-library/node_modules/@wordpress/components/node_modules/react-dom": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", + "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", + "dev": true, + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" + }, + "peerDependencies": { + "react": "^16.14.0" + } + }, + "node_modules/@wordpress/block-library/node_modules/@wordpress/components/node_modules/react-outside-click-handler": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/react-outside-click-handler/-/react-outside-click-handler-1.3.0.tgz", + "integrity": "sha512-Te/7zFU0oHpAnctl//pP3hEAeobfeHMyygHB8MnjP6sX5OR8KHT1G3jmLsV3U9RnIYo+Yn+peJYWu+D5tUS8qQ==", + "dev": true, + "dependencies": { + "airbnb-prop-types": "^2.15.0", + "consolidated-events": "^1.1.1 || ^2.0.0", + "document.contains": "^1.0.1", + "object.values": "^1.1.0", + "prop-types": "^15.7.2" + }, + "peerDependencies": { + "react": "^0.14 || >=15", + "react-dom": "^0.14 || >=15" + } + }, + "node_modules/@wordpress/block-library/node_modules/@wordpress/components/node_modules/react-portal": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/react-portal/-/react-portal-4.2.1.tgz", + "integrity": "sha512-fE9kOBagwmTXZ3YGRYb4gcMy+kSA+yLO0xnPankjRlfBv4uCpFXqKPfkpsGQQR15wkZ9EssnvTOl1yMzbkxhPQ==", + "dev": true, + "dependencies": { + "prop-types": "^15.5.8" + }, + "peerDependencies": { + "react": "^15.0.0-0 || ^16.0.0-0 || ^17.0.0-0" + } + }, + "node_modules/@wordpress/block-library/node_modules/@wordpress/components/node_modules/react-with-direction": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/react-with-direction/-/react-with-direction-1.4.0.tgz", + "integrity": "sha512-ybHNPiAmaJpoWwugwqry9Hd1Irl2hnNXlo/2SXQBwbLn/jGMauMS2y9jw+ydyX5V9ICryCqObNSthNt5R94xpg==", + "dev": true, + "dependencies": { + "airbnb-prop-types": "^2.16.0", + "brcast": "^2.0.2", + "deepmerge": "^1.5.2", + "direction": "^1.0.4", + "hoist-non-react-statics": "^3.3.2", + "object.assign": "^4.1.2", + "object.values": "^1.1.5", + "prop-types": "^15.7.2" + }, + "peerDependencies": { + "react": "^0.14 || ^15 || ^16", + "react-dom": "^0.14 || ^15 || ^16" + } + }, + "node_modules/@wordpress/block-library/node_modules/@wordpress/components/node_modules/react-with-styles": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/react-with-styles/-/react-with-styles-3.2.3.tgz", + "integrity": "sha512-MTI1UOvMHABRLj5M4WpODfwnveHaip6X7QUMI2x6zovinJiBXxzhA9AJP7MZNaKqg1JRFtHPXZdroUC8KcXwlQ==", + "dev": true, + "dependencies": { + "hoist-non-react-statics": "^3.2.1", + "object.assign": "^4.1.0", + "prop-types": "^15.6.2", + "react-with-direction": "^1.3.0" + }, + "peerDependencies": { + "react": ">=0.14", + "react-with-direction": "^1.1.0" + } + }, + "node_modules/@wordpress/block-library/node_modules/@wordpress/components/node_modules/react-with-styles-interface-css": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/react-with-styles-interface-css/-/react-with-styles-interface-css-4.0.3.tgz", + "integrity": "sha512-wE43PIyjal2dexxyyx4Lhbcb+E42amoYPnkunRZkb9WTA+Z+9LagbyxwsI352NqMdFmghR0opg29dzDO4/YXbw==", + "dev": true, + "dependencies": { + "array.prototype.flat": "^1.2.1", + "global-cache": "^1.2.1" + }, + "peerDependencies": { + "react-with-styles": "^3.0.0" + } + }, + "node_modules/@wordpress/block-library/node_modules/@wordpress/compose": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.0.4.tgz", + "integrity": "sha512-gRpQgsxF1AnmrJnkmJOixsTtSmimFzasiXZlm0BwhsdeJEEqVO3Mt7ua59bLPHjnUmiyDfMWY9Ongn/2cSCRKQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@types/lodash": "^4.14.172", + "@types/mousetrap": "^1.6.8", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.5", + "@wordpress/element": "^4.0.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/priority-queue": "^2.2.2", + "clipboard": "^2.0.8", + "lodash": "^4.17.21", + "mousetrap": "^1.6.5", + "react-resize-aware": "^3.1.0", + "use-memo-one": "^1.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/block-library/node_modules/@wordpress/data": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.1.2.tgz", + "integrity": "sha512-Ro4CGmGBgk+7gDOkoB/u/HFPjmObNTZvN1q1vb75gfHOjVmXFt6AZSialELc+AuYODZEedrvHRk7qMBPxsgTVQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@wordpress/compose": "^5.0.4", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/element": "^4.0.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/priority-queue": "^2.2.2", + "@wordpress/redux-routine": "^4.2.1", + "equivalent-key-map": "^0.2.2", + "is-promise": "^4.0.0", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "turbo-combine-reducers": "^1.0.2", + "use-memo-one": "^1.1.1" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "redux": "^4.1.0" + } + }, + "node_modules/@wordpress/block-library/node_modules/@wordpress/element": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.3.tgz", + "integrity": "sha512-uFL8Xx0Uq/C+nCL5aM4Fb6YVub//1wuHyQK9VDtKwYg9UBELrexSCHo1XaesYRiGUqVW0o837qC7RCP2NLUBJw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@types/react": "^16.9.0", + "@types/react-dom": "^16.9.0", + "@wordpress/escape-html": "^2.2.2", + "lodash": "^4.17.21", + "react": "^17.0.1", + "react-dom": "^17.0.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/block-library/node_modules/@wordpress/icons": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@wordpress/icons/-/icons-6.0.1.tgz", + "integrity": "sha512-YAtnWquaWWM49hpoRJwaZRBTnnkwqOY0TuK8a6m0gXE2Xm3uoO/J4c6tLqKiFv3FG9Hmc/CB1WCmx+uM1TX0vw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@wordpress/element": "^4.0.3", + "@wordpress/primitives": "^3.0.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/block-library/node_modules/deepmerge": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", + "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@wordpress/block-library/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "node_modules/@wordpress/block-library/node_modules/scheduler": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "dev": true, + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "node_modules/@wordpress/block-serialization-default-parser": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@wordpress/block-serialization-default-parser/-/block-serialization-default-parser-4.2.2.tgz", + "integrity": "sha512-XLig548y+chFJTmjrJptiEwZuMHpz7azIpoZssedGxP1ibffo8GV1VnKzGtr/P+Z/1PHt1L00pQgxtAZmKKBag==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/blocks": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/@wordpress/blocks/-/blocks-11.1.1.tgz", + "integrity": "sha512-Pzk3A4UDQSy1Ay80x/fyrg27efLwfkKyzIHY2XtQrXGlDAT+oGwgJYmqgYff1SYhqFEjq5a7fkN2hGBaYXk+yQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@wordpress/autop": "^3.2.2", + "@wordpress/blob": "^3.2.1", + "@wordpress/block-serialization-default-parser": "^4.2.2", + "@wordpress/compose": "^5.0.3", + "@wordpress/data": "^6.1.1", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.4", + "@wordpress/element": "^4.0.2", + "@wordpress/hooks": "^3.2.1", + "@wordpress/html-entities": "^3.2.2", + "@wordpress/i18n": "^4.2.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/shortcode": "^3.2.2", + "colord": "^2.7.0", + "hpq": "^1.3.0", + "lodash": "^4.17.21", + "rememo": "^3.0.0", + "showdown": "^1.9.1", + "simple-html-tokenizer": "^0.5.7", + "uuid": "^8.3.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/browserslist-config": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@wordpress/browserslist-config/-/browserslist-config-4.1.0.tgz", + "integrity": "sha512-RSJhgY2xmz6yAdDNhz/NvAO6JS+91vv9cVL7VDG2CftbyjTXBef05vWt3FzZhfeF0xUrYdpZL1PVpxmJiKvbEg==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/components": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/@wordpress/components/-/components-18.0.0.tgz", + "integrity": "sha512-0KWlm3AXHVd1EeEd8K1Q/aH9ieTZCHdcSyH2m9p4s0mpxl7Ddk0ly9PPAMt6HVliqapYuxAf2gb1UHO9pFyRCw==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@emotion/cache": "^11.4.0", + "@emotion/css": "^11.1.3", + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "@emotion/utils": "1.0.0", + "@wordpress/a11y": "^3.2.3", + "@wordpress/compose": "^5.0.3", + "@wordpress/date": "^4.2.2", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.4", + "@wordpress/element": "^4.0.2", + "@wordpress/hooks": "^3.2.1", + "@wordpress/i18n": "^4.2.3", + "@wordpress/icons": "^6.0.0", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/primitives": "^3.0.2", + "@wordpress/rich-text": "^5.0.3", + "@wordpress/warning": "^2.2.2", + "classnames": "^2.3.1", + "colord": "^2.7.0", + "dom-scroll-into-view": "^1.2.1", + "downshift": "^6.0.15", + "framer-motion": "^4.1.17", + "gradient-parser": "^0.1.5", + "highlight-words-core": "^1.2.2", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "moment": "^2.22.1", + "re-resizable": "^6.4.0", + "react-colorful": "^5.3.1", + "react-dates": "^17.1.1", + "react-resize-aware": "^3.1.0", + "react-use-gesture": "^9.0.0", + "reakit": "^1.3.8", + "rememo": "^3.0.0", + "tinycolor2": "^1.4.2", + "uuid": "^8.3.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "reakit-utils": "^0.15.1" + } + }, + "node_modules/@wordpress/components/node_modules/airbnb-prop-types": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz", + "integrity": "sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg==", + "dependencies": { + "array.prototype.find": "^2.1.1", + "function.prototype.name": "^1.1.2", + "is-regex": "^1.1.0", + "object-is": "^1.1.2", + "object.assign": "^4.1.0", + "object.entries": "^1.1.2", + "prop-types": "^15.7.2", + "prop-types-exact": "^1.2.0", + "react-is": "^16.13.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "peerDependencies": { + "react": "^0.14 || ^15.0.0 || ^16.0.0-alpha" + } + }, + "node_modules/@wordpress/components/node_modules/deepmerge": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", + "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@wordpress/components/node_modules/react": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", + "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@wordpress/components/node_modules/react-dates": { + "version": "17.2.0", + "resolved": "https://registry.npmjs.org/react-dates/-/react-dates-17.2.0.tgz", + "integrity": "sha512-RDlerU8DdRRrlYS0MQ7Z9igPWABGLDwz6+ykBNff67RM3Sset2TDqeuOr+R5o00Ggn5U47GeLsGcSDxlZd9cHw==", + "dependencies": { + "airbnb-prop-types": "^2.10.0", + "consolidated-events": "^1.1.1 || ^2.0.0", + "is-touch-device": "^1.0.1", + "lodash": "^4.1.1", + "object.assign": "^4.1.0", + "object.values": "^1.0.4", + "prop-types": "^15.6.1", + "react-addons-shallow-compare": "^15.6.2", + "react-moment-proptypes": "^1.6.0", + "react-outside-click-handler": "^1.2.0", + "react-portal": "^4.1.5", + "react-with-styles": "^3.2.0", + "react-with-styles-interface-css": "^4.0.2" + }, + "peerDependencies": { + "moment": "^2.18.1", + "react": "^0.14 || ^15.5.4 || ^16.1.1", + "react-dom": "^0.14 || ^15.5.4 || ^16.1.1" + } + }, + "node_modules/@wordpress/components/node_modules/react-dom": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", + "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" + }, + "peerDependencies": { + "react": "^16.14.0" + } + }, + "node_modules/@wordpress/components/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/@wordpress/components/node_modules/react-outside-click-handler": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/react-outside-click-handler/-/react-outside-click-handler-1.3.0.tgz", + "integrity": "sha512-Te/7zFU0oHpAnctl//pP3hEAeobfeHMyygHB8MnjP6sX5OR8KHT1G3jmLsV3U9RnIYo+Yn+peJYWu+D5tUS8qQ==", + "dependencies": { + "airbnb-prop-types": "^2.15.0", + "consolidated-events": "^1.1.1 || ^2.0.0", + "document.contains": "^1.0.1", + "object.values": "^1.1.0", + "prop-types": "^15.7.2" + }, + "peerDependencies": { + "react": "^0.14 || >=15", + "react-dom": "^0.14 || >=15" + } + }, + "node_modules/@wordpress/components/node_modules/react-portal": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/react-portal/-/react-portal-4.2.1.tgz", + "integrity": "sha512-fE9kOBagwmTXZ3YGRYb4gcMy+kSA+yLO0xnPankjRlfBv4uCpFXqKPfkpsGQQR15wkZ9EssnvTOl1yMzbkxhPQ==", + "dependencies": { + "prop-types": "^15.5.8" + }, + "peerDependencies": { + "react": "^15.0.0-0 || ^16.0.0-0 || ^17.0.0-0" + } + }, + "node_modules/@wordpress/components/node_modules/react-with-direction": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/react-with-direction/-/react-with-direction-1.4.0.tgz", + "integrity": "sha512-ybHNPiAmaJpoWwugwqry9Hd1Irl2hnNXlo/2SXQBwbLn/jGMauMS2y9jw+ydyX5V9ICryCqObNSthNt5R94xpg==", + "dependencies": { + "airbnb-prop-types": "^2.16.0", + "brcast": "^2.0.2", + "deepmerge": "^1.5.2", + "direction": "^1.0.4", + "hoist-non-react-statics": "^3.3.2", + "object.assign": "^4.1.2", + "object.values": "^1.1.5", + "prop-types": "^15.7.2" + }, + "peerDependencies": { + "react": "^0.14 || ^15 || ^16", + "react-dom": "^0.14 || ^15 || ^16" + } + }, + "node_modules/@wordpress/components/node_modules/react-with-styles": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/react-with-styles/-/react-with-styles-3.2.3.tgz", + "integrity": "sha512-MTI1UOvMHABRLj5M4WpODfwnveHaip6X7QUMI2x6zovinJiBXxzhA9AJP7MZNaKqg1JRFtHPXZdroUC8KcXwlQ==", + "dependencies": { + "hoist-non-react-statics": "^3.2.1", + "object.assign": "^4.1.0", + "prop-types": "^15.6.2", + "react-with-direction": "^1.3.0" + }, + "peerDependencies": { + "react": ">=0.14", + "react-with-direction": "^1.1.0" + } + }, + "node_modules/@wordpress/components/node_modules/react-with-styles-interface-css": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/react-with-styles-interface-css/-/react-with-styles-interface-css-4.0.3.tgz", + "integrity": "sha512-wE43PIyjal2dexxyyx4Lhbcb+E42amoYPnkunRZkb9WTA+Z+9LagbyxwsI352NqMdFmghR0opg29dzDO4/YXbw==", + "dependencies": { + "array.prototype.flat": "^1.2.1", + "global-cache": "^1.2.1" + }, + "peerDependencies": { + "react-with-styles": "^3.0.0" + } + }, + "node_modules/@wordpress/components/node_modules/scheduler": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "node_modules/@wordpress/compose": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.0.3.tgz", + "integrity": "sha512-uRd4tBp2+FWorLuoec3CyoizgnlbrxvAyPx+it7+OmzP+/Lz6rRYkymaFDA/XTh2umkjYT8pK7FQP1H8+DfqVA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@types/lodash": "^4.14.172", + "@types/mousetrap": "^1.6.8", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.4", + "@wordpress/element": "^4.0.2", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/priority-queue": "^2.2.2", + "clipboard": "^2.0.8", + "lodash": "^4.17.21", + "mousetrap": "^1.6.5", + "react-resize-aware": "^3.1.0", + "use-memo-one": "^1.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/core-data": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@wordpress/core-data/-/core-data-4.0.4.tgz", + "integrity": "sha512-8oEDlOImHDw7eeqAh3dF3bl33iPZKaezAi8IgAfhoRwFs1z9KdbVE4+8RHAtv1qjAPrFMhYBgYn+Rw5XsLrghA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@wordpress/api-fetch": "^5.2.4", + "@wordpress/blocks": "^11.1.2", + "@wordpress/data": "^6.1.2", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/element": "^4.0.3", + "@wordpress/html-entities": "^3.2.2", + "@wordpress/i18n": "^4.2.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/url": "^3.2.3", + "equivalent-key-map": "^0.2.2", + "lodash": "^4.17.21", + "rememo": "^3.0.0", + "uuid": "^8.3.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/core-data/node_modules/@wordpress/api-fetch": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-5.2.4.tgz", + "integrity": "sha512-8vMm08L3MMUynhD6sxe9VhRcfi3qGE3m9j7LpC9yAIxt70DaMRxHWEmGIbgO2F3INkqACdLWnDQmsHDKOSWQsQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@wordpress/i18n": "^4.2.3", + "@wordpress/url": "^3.2.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/core-data/node_modules/@wordpress/blocks": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/@wordpress/blocks/-/blocks-11.1.2.tgz", + "integrity": "sha512-xVvC/RXj9GXNRkQcGnmjWeS54intybON4Ol2vCVfreJtA5Cra5yRapRJwz3at1sgDD4q06k1sj98SemMEanazw==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@wordpress/autop": "^3.2.2", + "@wordpress/blob": "^3.2.1", + "@wordpress/block-serialization-default-parser": "^4.2.2", + "@wordpress/compose": "^5.0.4", + "@wordpress/data": "^6.1.2", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.5", + "@wordpress/element": "^4.0.3", + "@wordpress/hooks": "^3.2.1", + "@wordpress/html-entities": "^3.2.2", + "@wordpress/i18n": "^4.2.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/shortcode": "^3.2.2", + "colord": "^2.7.0", + "hpq": "^1.3.0", + "lodash": "^4.17.21", + "rememo": "^3.0.0", + "showdown": "^1.9.1", + "simple-html-tokenizer": "^0.5.7", + "uuid": "^8.3.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/core-data/node_modules/@wordpress/compose": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.0.4.tgz", + "integrity": "sha512-gRpQgsxF1AnmrJnkmJOixsTtSmimFzasiXZlm0BwhsdeJEEqVO3Mt7ua59bLPHjnUmiyDfMWY9Ongn/2cSCRKQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@types/lodash": "^4.14.172", + "@types/mousetrap": "^1.6.8", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.5", + "@wordpress/element": "^4.0.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/priority-queue": "^2.2.2", + "clipboard": "^2.0.8", + "lodash": "^4.17.21", + "mousetrap": "^1.6.5", + "react-resize-aware": "^3.1.0", + "use-memo-one": "^1.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/core-data/node_modules/@wordpress/data": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.1.2.tgz", + "integrity": "sha512-Ro4CGmGBgk+7gDOkoB/u/HFPjmObNTZvN1q1vb75gfHOjVmXFt6AZSialELc+AuYODZEedrvHRk7qMBPxsgTVQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@wordpress/compose": "^5.0.4", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/element": "^4.0.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/priority-queue": "^2.2.2", + "@wordpress/redux-routine": "^4.2.1", + "equivalent-key-map": "^0.2.2", + "is-promise": "^4.0.0", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "turbo-combine-reducers": "^1.0.2", + "use-memo-one": "^1.1.1" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "redux": "^4.1.0" + } + }, + "node_modules/@wordpress/core-data/node_modules/@wordpress/element": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.3.tgz", + "integrity": "sha512-uFL8Xx0Uq/C+nCL5aM4Fb6YVub//1wuHyQK9VDtKwYg9UBELrexSCHo1XaesYRiGUqVW0o837qC7RCP2NLUBJw==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@types/react": "^16.9.0", + "@types/react-dom": "^16.9.0", + "@wordpress/escape-html": "^2.2.2", + "lodash": "^4.17.21", + "react": "^17.0.1", + "react-dom": "^17.0.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/data": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.1.1.tgz", + "integrity": "sha512-I+kvY2aMA4Ec62rZCS4vUKRalZ01qiBTkEQXash+usYH3Lsyi6rULekwUZ9zcisVpWYbaLZsrmmarCusS65KTg==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@wordpress/compose": "^5.0.3", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/element": "^4.0.2", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/priority-queue": "^2.2.2", + "@wordpress/redux-routine": "^4.2.1", + "equivalent-key-map": "^0.2.2", + "is-promise": "^4.0.0", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "turbo-combine-reducers": "^1.0.2", + "use-memo-one": "^1.1.1" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "redux": "^4.1.0" + } + }, + "node_modules/@wordpress/data-controls": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@wordpress/data-controls/-/data-controls-2.2.5.tgz", + "integrity": "sha512-kA01JYKze3CSmnjTwkvMPiRkKZfvbZFuNbUOyLmD6WTK1CCahGmD2ro/wv0TyUC7K3Z1w03Ekb+Y9PJA7VACvg==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@wordpress/api-fetch": "^5.2.4", + "@wordpress/data": "^6.1.2", + "@wordpress/deprecated": "^3.2.2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/data-controls/node_modules/@wordpress/api-fetch": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-5.2.4.tgz", + "integrity": "sha512-8vMm08L3MMUynhD6sxe9VhRcfi3qGE3m9j7LpC9yAIxt70DaMRxHWEmGIbgO2F3INkqACdLWnDQmsHDKOSWQsQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@wordpress/i18n": "^4.2.3", + "@wordpress/url": "^3.2.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/data-controls/node_modules/@wordpress/compose": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.0.4.tgz", + "integrity": "sha512-gRpQgsxF1AnmrJnkmJOixsTtSmimFzasiXZlm0BwhsdeJEEqVO3Mt7ua59bLPHjnUmiyDfMWY9Ongn/2cSCRKQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@types/lodash": "^4.14.172", + "@types/mousetrap": "^1.6.8", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.5", + "@wordpress/element": "^4.0.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/priority-queue": "^2.2.2", + "clipboard": "^2.0.8", + "lodash": "^4.17.21", + "mousetrap": "^1.6.5", + "react-resize-aware": "^3.1.0", + "use-memo-one": "^1.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/data-controls/node_modules/@wordpress/data": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.1.2.tgz", + "integrity": "sha512-Ro4CGmGBgk+7gDOkoB/u/HFPjmObNTZvN1q1vb75gfHOjVmXFt6AZSialELc+AuYODZEedrvHRk7qMBPxsgTVQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@wordpress/compose": "^5.0.4", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/element": "^4.0.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/priority-queue": "^2.2.2", + "@wordpress/redux-routine": "^4.2.1", + "equivalent-key-map": "^0.2.2", + "is-promise": "^4.0.0", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "turbo-combine-reducers": "^1.0.2", + "use-memo-one": "^1.1.1" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "redux": "^4.1.0" + } + }, + "node_modules/@wordpress/data-controls/node_modules/@wordpress/element": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.3.tgz", + "integrity": "sha512-uFL8Xx0Uq/C+nCL5aM4Fb6YVub//1wuHyQK9VDtKwYg9UBELrexSCHo1XaesYRiGUqVW0o837qC7RCP2NLUBJw==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@types/react": "^16.9.0", + "@types/react-dom": "^16.9.0", + "@wordpress/escape-html": "^2.2.2", + "lodash": "^4.17.21", + "react": "^17.0.1", + "react-dom": "^17.0.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/date": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@wordpress/date/-/date-4.2.2.tgz", + "integrity": "sha512-sYcMvFwrVoYv5lL9NsYLVd29hfuqgf1L1WsIjDV8hMna1eqr9f8xCrZSLgBKkDBmVWiIcleYGP5uDdrKpu6EiA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "moment": "^2.22.1", + "moment-timezone": "^0.5.31" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/dependency-extraction-webpack-plugin": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@wordpress/dependency-extraction-webpack-plugin/-/dependency-extraction-webpack-plugin-3.2.1.tgz", + "integrity": "sha512-Ltd+1CJb7PMh6iN2Mse+3yN/oMORug5qXSj/3xmuZERzZO2SO6xNEJGml8yK9ev747cbHktEpitK4H+8VO3Ekg==", + "dev": true, + "dependencies": { + "json2php": "^0.0.4", + "webpack-sources": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "webpack": "^4.8.3 || ^5.0.0" + } + }, + "node_modules/@wordpress/deprecated": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.2.2.tgz", + "integrity": "sha512-htsu2zJUuGYG1+jejAi0r25bQQOT3bB0MGjoSixqZ0sRkFMRIdjmMLrSbpGrl0s5IRK2/w/slsStPFmm3reJtA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@wordpress/hooks": "^3.2.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/dom": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.2.5.tgz", + "integrity": "sha512-V/P3w8DH8shSpKB/lq6R39IbV944ztPGCG+H6+HxXWDcfk+x5PCd1tuy2Jx+F+gjsahlkJOufrBh7u2+PmJwgQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "lodash": "^4.17.21" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/dom-ready": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@wordpress/dom-ready/-/dom-ready-3.2.2.tgz", + "integrity": "sha512-yCpm/vG3GanhhACnpbc7GZ2sv6oSHIkTxNPgejA5Z8cr0mEc6irsWDzhEHKcP3OhSina++IZ9ZidO7JH7eE2Xg==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/e2e-test-utils": { + "version": "5.4.4", + "resolved": "https://registry.npmjs.org/@wordpress/e2e-test-utils/-/e2e-test-utils-5.4.4.tgz", + "integrity": "sha512-llAWmQXyGFqEc58NHLX2SX1I03VRLCfdrZ2TWRK+qYY6QZns4wsJP4Lg2c1SsXIzUUB9u95Kzx3LvGcZcqLTfw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@wordpress/api-fetch": "^5.2.3", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/url": "^3.2.3", + "form-data": "^4.0.0", + "lodash": "^4.17.21", + "node-fetch": "^2.6.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "jest": ">=26", + "puppeteer": ">=1.19.0" + } + }, + "node_modules/@wordpress/edit-post": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@wordpress/edit-post/-/edit-post-5.0.3.tgz", + "integrity": "sha512-/DNgi6LqDqBQoGzwYdDIKN++cu2Ry5Zev99sQMN1pnVhlmXXt6nQVUXeJ53Rfi1/baK1VB4okDwKYD84UdZT5Q==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@wordpress/a11y": "^3.2.3", + "@wordpress/api-fetch": "^5.2.3", + "@wordpress/block-editor": "^7.0.3", + "@wordpress/block-library": "^6.0.1", + "@wordpress/blocks": "^11.1.1", + "@wordpress/components": "^18.0.0", + "@wordpress/compose": "^5.0.3", + "@wordpress/core-data": "^4.0.3", + "@wordpress/data": "^6.1.1", + "@wordpress/data-controls": "^2.2.4", + "@wordpress/editor": "^12.0.0", + "@wordpress/element": "^4.0.2", + "@wordpress/hooks": "^3.2.1", + "@wordpress/i18n": "^4.2.3", + "@wordpress/icons": "^6.0.0", + "@wordpress/interface": "^4.1.1", + "@wordpress/keyboard-shortcuts": "^3.0.3", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/media-utils": "^3.0.2", + "@wordpress/notices": "^3.2.4", + "@wordpress/plugins": "^4.0.3", + "@wordpress/primitives": "^3.0.2", + "@wordpress/url": "^3.2.3", + "@wordpress/viewport": "^4.0.3", + "@wordpress/warning": "^2.2.2", + "classnames": "^2.3.1", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "rememo": "^3.0.0", + "uuid": "8.3.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/edit-post/node_modules/uuid": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.0.tgz", + "integrity": "sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@wordpress/editor": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@wordpress/editor/-/editor-12.0.0.tgz", + "integrity": "sha512-o2MD1eAaIk5pmuZ/MzBO0Mz3ogoOcuugQ4cZpvVl2lZsu8AzVK3PfhrWWgkLFlu5pho5UCBbCKQjwJoAJkyd4Q==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@wordpress/a11y": "^3.2.3", + "@wordpress/api-fetch": "^5.2.3", + "@wordpress/autop": "^3.2.2", + "@wordpress/blob": "^3.2.1", + "@wordpress/block-editor": "^7.0.3", + "@wordpress/blocks": "^11.1.1", + "@wordpress/components": "^18.0.0", + "@wordpress/compose": "^5.0.3", + "@wordpress/core-data": "^4.0.3", + "@wordpress/data": "^6.1.1", + "@wordpress/data-controls": "^2.2.4", + "@wordpress/date": "^4.2.2", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/element": "^4.0.2", + "@wordpress/hooks": "^3.2.1", + "@wordpress/html-entities": "^3.2.2", + "@wordpress/i18n": "^4.2.3", + "@wordpress/icons": "^6.0.0", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keyboard-shortcuts": "^3.0.3", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/media-utils": "^3.0.2", + "@wordpress/notices": "^3.2.4", + "@wordpress/reusable-blocks": "^3.0.3", + "@wordpress/rich-text": "^5.0.3", + "@wordpress/server-side-render": "^3.0.3", + "@wordpress/url": "^3.2.3", + "@wordpress/wordcount": "^3.2.2", + "classnames": "^2.3.1", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "react-autosize-textarea": "^7.1.0", + "rememo": "^3.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/editor/node_modules/react": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", + "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@wordpress/editor/node_modules/react-autosize-textarea": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/react-autosize-textarea/-/react-autosize-textarea-7.1.0.tgz", + "integrity": "sha512-BHpjCDkuOlllZn3nLazY2F8oYO1tS2jHnWhcjTWQdcKiiMU6gHLNt/fzmqMSyerR0eTdKtfSIqtSeTtghNwS+g==", + "dependencies": { + "autosize": "^4.0.2", + "line-height": "^0.3.1", + "prop-types": "^15.5.6" + }, + "peerDependencies": { + "react": "^0.14.0 || ^15.0.0 || ^16.0.0", + "react-dom": "^0.14.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@wordpress/editor/node_modules/react-dom": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", + "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" + }, + "peerDependencies": { + "react": "^16.14.0" + } + }, + "node_modules/@wordpress/editor/node_modules/scheduler": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "node_modules/@wordpress/element": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.2.tgz", + "integrity": "sha512-qBNpkLb7Hh3r9aSwBOBMwRUevScbN5iR1M5B8/ZOuSZbeXYNcgWxX4WqVrt5Y52CNm8WwoQTdqcuIziNN6lhig==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@types/react": "^16.9.0", + "@types/react-dom": "^16.9.0", + "@wordpress/escape-html": "^2.2.2", + "lodash": "^4.17.21", + "react": "^17.0.1", + "react-dom": "^17.0.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/escape-html": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-2.2.2.tgz", + "integrity": "sha512-NuPury2dyaqF7zpDaUOKaoM0FrEuqaDE1c3j7rM6kceJ4ZFDHnCLf5NivwchOLo7Xs0oVtqBdDza/dcSQaLFGg==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/eslint-plugin": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/@wordpress/eslint-plugin/-/eslint-plugin-9.2.0.tgz", + "integrity": "sha512-x0vI4EWeG20TyewXdiyUhGSJRqXR8vw47WZjzdmL8iuitDCoyWkKe73wtEs/mWLDrSNms8S0bTnp0dK6UAMXJw==", + "dev": true, + "dependencies": { + "@typescript-eslint/eslint-plugin": "^4.31.0", + "@typescript-eslint/parser": "^4.31.0", + "@wordpress/prettier-config": "^1.1.1", + "babel-eslint": "^10.1.0", + "cosmiconfig": "^7.0.0", + "eslint-config-prettier": "^7.1.0", + "eslint-plugin-import": "^2.23.4", + "eslint-plugin-jest": "^24.1.3", + "eslint-plugin-jsdoc": "^36.0.8", + "eslint-plugin-jsx-a11y": "^6.4.1", + "eslint-plugin-prettier": "^3.3.0", + "eslint-plugin-react": "^7.22.0", + "eslint-plugin-react-hooks": "^4.2.0", + "globals": "^12.0.0", + "prettier": "npm:wp-prettier@2.2.1-beta-1", + "requireindex": "^1.2.0" + }, + "engines": { + "node": ">=12", + "npm": ">=6.9" + }, + "peerDependencies": { + "eslint": "^6 || ^7", + "typescript": "^4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@wordpress/eslint-plugin/node_modules/globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "dependencies": { + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@wordpress/eslint-plugin/node_modules/prettier": { + "name": "wp-prettier", + "version": "2.2.1-beta-1", + "resolved": "https://registry.npmjs.org/wp-prettier/-/wp-prettier-2.2.1-beta-1.tgz", + "integrity": "sha512-+JHkqs9LC/JPp51yy1hzs3lQ7qeuWCwOcSzpQNeeY/G7oSpnF61vxt7hRh87zNRTr6ob2ndy0W8rVzhgrcA+Gw==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@wordpress/eslint-plugin/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@wordpress/hooks": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-3.2.1.tgz", + "integrity": "sha512-yI8MHs6UsvgJdDsOnXGkY7/7hrOCEv/M7vwdEVA5r6nGzgJaJxf8pjBqzRkCq3nVaWqxoNZgCMHJSul6Q8RR2g==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/html-entities": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@wordpress/html-entities/-/html-entities-3.2.2.tgz", + "integrity": "sha512-MsmB1wtDMFfvNQiKMVMW+1ie2P3+tBZiHESkDPnXw34Dt4Tk0+QY7eYCR9krNcjJImWYJcxL+4n4M1OF9oQv0Q==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/i18n": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.2.3.tgz", + "integrity": "sha512-iaL7WVmFBVLyUJR0FVeaI0YJK3BiYg6Ir+s3PoJN3ppm+YsZUGThstHL8zSfQFMF0WaQ0OFWjnDqNl1th2annA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@wordpress/hooks": "^3.2.1", + "gettext-parser": "^1.3.1", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "sprintf-js": "^1.1.1", + "tannin": "^1.2.0" + }, + "bin": { + "pot-to-php": "tools/pot-to-php.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/icons": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@wordpress/icons/-/icons-6.0.0.tgz", + "integrity": "sha512-dLr7O2mu6JlCQhM3uSIRJHFyv1AeYpRosrcWF9+zlhUy7RBczfLfhf7lXO6gVxhyuUEiWYfvesB5pNha4HxsVg==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@wordpress/element": "^4.0.2", + "@wordpress/primitives": "^3.0.2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/interface": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@wordpress/interface/-/interface-4.1.2.tgz", + "integrity": "sha512-v4sxmuBwgpTHmGmrYwd8pkTtDclzS2xercESCW1r5NNRuRrzzLBJwtA43WugB5Y9D6YCdctJWHaEcvGugPes9g==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@wordpress/a11y": "^3.2.3", + "@wordpress/components": "^19.0.0", + "@wordpress/compose": "^5.0.4", + "@wordpress/data": "^6.1.2", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/element": "^4.0.3", + "@wordpress/i18n": "^4.2.3", + "@wordpress/icons": "^6.0.1", + "@wordpress/plugins": "^4.0.4", + "@wordpress/viewport": "^4.0.4", + "classnames": "^2.3.1", + "lodash": "^4.17.21" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/interface/node_modules/@wordpress/components": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/@wordpress/components/-/components-19.0.0.tgz", + "integrity": "sha512-foFC+jJ3nu6PZ2pnjdszi7R17CQRquXkCPaydlOCsuDbsKm0dowR264jAdK0HJWepttj+kh3amWEhzajX6AYtg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@emotion/cache": "^11.4.0", + "@emotion/css": "^11.1.3", + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "@emotion/utils": "1.0.0", + "@wordpress/a11y": "^3.2.3", + "@wordpress/compose": "^5.0.4", + "@wordpress/date": "^4.2.2", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.5", + "@wordpress/element": "^4.0.3", + "@wordpress/hooks": "^3.2.1", + "@wordpress/i18n": "^4.2.3", + "@wordpress/icons": "^6.0.1", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/primitives": "^3.0.3", + "@wordpress/rich-text": "^5.0.4", + "@wordpress/warning": "^2.2.2", + "classnames": "^2.3.1", + "colord": "^2.7.0", + "dom-scroll-into-view": "^1.2.1", + "downshift": "^6.0.15", + "framer-motion": "^4.1.17", + "gradient-parser": "^0.1.5", + "highlight-words-core": "^1.2.2", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "moment": "^2.22.1", + "re-resizable": "^6.4.0", + "react-colorful": "^5.3.1", + "react-dates": "^17.1.1", + "react-resize-aware": "^3.1.0", + "react-use-gesture": "^9.0.0", + "reakit": "^1.3.8", + "rememo": "^3.0.0", + "uuid": "^8.3.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "reakit-utils": "^0.15.1" + } + }, + "node_modules/@wordpress/interface/node_modules/@wordpress/components/node_modules/airbnb-prop-types": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz", + "integrity": "sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg==", + "dev": true, + "dependencies": { + "array.prototype.find": "^2.1.1", + "function.prototype.name": "^1.1.2", + "is-regex": "^1.1.0", + "object-is": "^1.1.2", + "object.assign": "^4.1.0", + "object.entries": "^1.1.2", + "prop-types": "^15.7.2", + "prop-types-exact": "^1.2.0", + "react-is": "^16.13.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "peerDependencies": { + "react": "^0.14 || ^15.0.0 || ^16.0.0-alpha" + } + }, + "node_modules/@wordpress/interface/node_modules/@wordpress/components/node_modules/react": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", + "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", + "dev": true, + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@wordpress/interface/node_modules/@wordpress/components/node_modules/react-dates": { + "version": "17.2.0", + "resolved": "https://registry.npmjs.org/react-dates/-/react-dates-17.2.0.tgz", + "integrity": "sha512-RDlerU8DdRRrlYS0MQ7Z9igPWABGLDwz6+ykBNff67RM3Sset2TDqeuOr+R5o00Ggn5U47GeLsGcSDxlZd9cHw==", + "dev": true, + "dependencies": { + "airbnb-prop-types": "^2.10.0", + "consolidated-events": "^1.1.1 || ^2.0.0", + "is-touch-device": "^1.0.1", + "lodash": "^4.1.1", + "object.assign": "^4.1.0", + "object.values": "^1.0.4", + "prop-types": "^15.6.1", + "react-addons-shallow-compare": "^15.6.2", + "react-moment-proptypes": "^1.6.0", + "react-outside-click-handler": "^1.2.0", + "react-portal": "^4.1.5", + "react-with-styles": "^3.2.0", + "react-with-styles-interface-css": "^4.0.2" + }, + "peerDependencies": { + "moment": "^2.18.1", + "react": "^0.14 || ^15.5.4 || ^16.1.1", + "react-dom": "^0.14 || ^15.5.4 || ^16.1.1" + } + }, + "node_modules/@wordpress/interface/node_modules/@wordpress/components/node_modules/react-dom": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", + "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", + "dev": true, + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" + }, + "peerDependencies": { + "react": "^16.14.0" + } + }, + "node_modules/@wordpress/interface/node_modules/@wordpress/components/node_modules/react-outside-click-handler": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/react-outside-click-handler/-/react-outside-click-handler-1.3.0.tgz", + "integrity": "sha512-Te/7zFU0oHpAnctl//pP3hEAeobfeHMyygHB8MnjP6sX5OR8KHT1G3jmLsV3U9RnIYo+Yn+peJYWu+D5tUS8qQ==", + "dev": true, + "dependencies": { + "airbnb-prop-types": "^2.15.0", + "consolidated-events": "^1.1.1 || ^2.0.0", + "document.contains": "^1.0.1", + "object.values": "^1.1.0", + "prop-types": "^15.7.2" + }, + "peerDependencies": { + "react": "^0.14 || >=15", + "react-dom": "^0.14 || >=15" + } + }, + "node_modules/@wordpress/interface/node_modules/@wordpress/components/node_modules/react-portal": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/react-portal/-/react-portal-4.2.1.tgz", + "integrity": "sha512-fE9kOBagwmTXZ3YGRYb4gcMy+kSA+yLO0xnPankjRlfBv4uCpFXqKPfkpsGQQR15wkZ9EssnvTOl1yMzbkxhPQ==", + "dev": true, + "dependencies": { + "prop-types": "^15.5.8" + }, + "peerDependencies": { + "react": "^15.0.0-0 || ^16.0.0-0 || ^17.0.0-0" + } + }, + "node_modules/@wordpress/interface/node_modules/@wordpress/components/node_modules/react-with-direction": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/react-with-direction/-/react-with-direction-1.4.0.tgz", + "integrity": "sha512-ybHNPiAmaJpoWwugwqry9Hd1Irl2hnNXlo/2SXQBwbLn/jGMauMS2y9jw+ydyX5V9ICryCqObNSthNt5R94xpg==", + "dev": true, + "dependencies": { + "airbnb-prop-types": "^2.16.0", + "brcast": "^2.0.2", + "deepmerge": "^1.5.2", + "direction": "^1.0.4", + "hoist-non-react-statics": "^3.3.2", + "object.assign": "^4.1.2", + "object.values": "^1.1.5", + "prop-types": "^15.7.2" + }, + "peerDependencies": { + "react": "^0.14 || ^15 || ^16", + "react-dom": "^0.14 || ^15 || ^16" + } + }, + "node_modules/@wordpress/interface/node_modules/@wordpress/components/node_modules/react-with-styles": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/react-with-styles/-/react-with-styles-3.2.3.tgz", + "integrity": "sha512-MTI1UOvMHABRLj5M4WpODfwnveHaip6X7QUMI2x6zovinJiBXxzhA9AJP7MZNaKqg1JRFtHPXZdroUC8KcXwlQ==", + "dev": true, + "dependencies": { + "hoist-non-react-statics": "^3.2.1", + "object.assign": "^4.1.0", + "prop-types": "^15.6.2", + "react-with-direction": "^1.3.0" + }, + "peerDependencies": { + "react": ">=0.14", + "react-with-direction": "^1.1.0" + } + }, + "node_modules/@wordpress/interface/node_modules/@wordpress/components/node_modules/react-with-styles-interface-css": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/react-with-styles-interface-css/-/react-with-styles-interface-css-4.0.3.tgz", + "integrity": "sha512-wE43PIyjal2dexxyyx4Lhbcb+E42amoYPnkunRZkb9WTA+Z+9LagbyxwsI352NqMdFmghR0opg29dzDO4/YXbw==", + "dev": true, + "dependencies": { + "array.prototype.flat": "^1.2.1", + "global-cache": "^1.2.1" + }, + "peerDependencies": { + "react-with-styles": "^3.0.0" + } + }, + "node_modules/@wordpress/interface/node_modules/@wordpress/compose": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.0.4.tgz", + "integrity": "sha512-gRpQgsxF1AnmrJnkmJOixsTtSmimFzasiXZlm0BwhsdeJEEqVO3Mt7ua59bLPHjnUmiyDfMWY9Ongn/2cSCRKQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@types/lodash": "^4.14.172", + "@types/mousetrap": "^1.6.8", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.5", + "@wordpress/element": "^4.0.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/priority-queue": "^2.2.2", + "clipboard": "^2.0.8", + "lodash": "^4.17.21", + "mousetrap": "^1.6.5", + "react-resize-aware": "^3.1.0", + "use-memo-one": "^1.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/interface/node_modules/@wordpress/data": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.1.2.tgz", + "integrity": "sha512-Ro4CGmGBgk+7gDOkoB/u/HFPjmObNTZvN1q1vb75gfHOjVmXFt6AZSialELc+AuYODZEedrvHRk7qMBPxsgTVQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@wordpress/compose": "^5.0.4", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/element": "^4.0.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/priority-queue": "^2.2.2", + "@wordpress/redux-routine": "^4.2.1", + "equivalent-key-map": "^0.2.2", + "is-promise": "^4.0.0", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "turbo-combine-reducers": "^1.0.2", + "use-memo-one": "^1.1.1" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "redux": "^4.1.0" + } + }, + "node_modules/@wordpress/interface/node_modules/@wordpress/element": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.3.tgz", + "integrity": "sha512-uFL8Xx0Uq/C+nCL5aM4Fb6YVub//1wuHyQK9VDtKwYg9UBELrexSCHo1XaesYRiGUqVW0o837qC7RCP2NLUBJw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@types/react": "^16.9.0", + "@types/react-dom": "^16.9.0", + "@wordpress/escape-html": "^2.2.2", + "lodash": "^4.17.21", + "react": "^17.0.1", + "react-dom": "^17.0.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/interface/node_modules/@wordpress/icons": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@wordpress/icons/-/icons-6.0.1.tgz", + "integrity": "sha512-YAtnWquaWWM49hpoRJwaZRBTnnkwqOY0TuK8a6m0gXE2Xm3uoO/J4c6tLqKiFv3FG9Hmc/CB1WCmx+uM1TX0vw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@wordpress/element": "^4.0.3", + "@wordpress/primitives": "^3.0.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/interface/node_modules/@wordpress/plugins": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@wordpress/plugins/-/plugins-4.0.4.tgz", + "integrity": "sha512-B2BdGbnt8zF8Ne+mJJsGE5cb6k1w7vG28PNozoCfJfyOEjunqpDtM+C7HaY7ml5qz3h1Q0kifubI96B/eZJGsQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@wordpress/compose": "^5.0.4", + "@wordpress/element": "^4.0.3", + "@wordpress/hooks": "^3.2.1", + "@wordpress/icons": "^6.0.1", + "lodash": "^4.17.21", + "memize": "^1.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/interface/node_modules/deepmerge": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", + "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@wordpress/interface/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "node_modules/@wordpress/interface/node_modules/scheduler": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "dev": true, + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "node_modules/@wordpress/is-shallow-equal": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-4.2.0.tgz", + "integrity": "sha512-9Oy7f3HFLMNfry4LLwYmfx4tROmusPAOfanv9F/MgzSBfMH7eyxU2JZd4KrP7IbPb59UfoUa8GhaLsnqKm66og==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/jest-console": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@wordpress/jest-console/-/jest-console-4.1.0.tgz", + "integrity": "sha512-MAbEfYUH+odlYYtPNKoKnWzSZKZjSc2r2kvFJ7FR920ZdteEgSAPIOvjyv4r4UbJy3ZuKemnXHuVtcTAKca5Tw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "jest-matcher-utils": "^26.6.2", + "lodash": "^4.17.21" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "jest": ">=26" + } + }, + "node_modules/@wordpress/jest-preset-default": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@wordpress/jest-preset-default/-/jest-preset-default-7.1.2.tgz", + "integrity": "sha512-TzrGj+eBrOQJxMLNh+gh+ImfFaK3caHLu7U4xF8UCGh6N+OuOTz5W9YHG/lqOuxDLdFhVkiHTytM2uFylGGRsg==", + "dev": true, + "dependencies": { + "@wojtekmaj/enzyme-adapter-react-17": "^0.6.1", + "@wordpress/jest-console": "^4.1.0", + "babel-jest": "^26.6.3", + "enzyme": "^3.11.0", + "enzyme-to-json": "^3.4.4" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "jest": ">=26" + } + }, + "node_modules/@wordpress/jest-puppeteer-axe": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@wordpress/jest-puppeteer-axe/-/jest-puppeteer-axe-3.1.0.tgz", + "integrity": "sha512-XdxXI9nKSAyPWMMjWObfEuumcbZG0wSvlGzNl/qlTjcxwVNaCIxzBBfMxbcxNLcXHasNr/PowbxVqMCEaMfpcA==", + "dev": true, + "dependencies": { + "@axe-core/puppeteer": "^4.0.0", + "@babel/runtime": "^7.13.10" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "jest": ">=26", + "puppeteer": ">=1.19.0" + } + }, + "node_modules/@wordpress/keyboard-shortcuts": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@wordpress/keyboard-shortcuts/-/keyboard-shortcuts-3.0.4.tgz", + "integrity": "sha512-nGYW9d4qiK5pKA4zs/0Ym5SqgUccaCQ/D5qODDlUS9Ba427BiR74L7ANfgN4QH3NPIlSCwrJGFI2UjE1TTyN+Q==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@wordpress/compose": "^5.0.4", + "@wordpress/data": "^6.1.2", + "@wordpress/element": "^4.0.3", + "@wordpress/keycodes": "^3.2.3", + "lodash": "^4.17.21", + "rememo": "^3.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/keyboard-shortcuts/node_modules/@wordpress/compose": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.0.4.tgz", + "integrity": "sha512-gRpQgsxF1AnmrJnkmJOixsTtSmimFzasiXZlm0BwhsdeJEEqVO3Mt7ua59bLPHjnUmiyDfMWY9Ongn/2cSCRKQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@types/lodash": "^4.14.172", + "@types/mousetrap": "^1.6.8", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.5", + "@wordpress/element": "^4.0.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/priority-queue": "^2.2.2", + "clipboard": "^2.0.8", + "lodash": "^4.17.21", + "mousetrap": "^1.6.5", + "react-resize-aware": "^3.1.0", + "use-memo-one": "^1.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/keyboard-shortcuts/node_modules/@wordpress/data": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.1.2.tgz", + "integrity": "sha512-Ro4CGmGBgk+7gDOkoB/u/HFPjmObNTZvN1q1vb75gfHOjVmXFt6AZSialELc+AuYODZEedrvHRk7qMBPxsgTVQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@wordpress/compose": "^5.0.4", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/element": "^4.0.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/priority-queue": "^2.2.2", + "@wordpress/redux-routine": "^4.2.1", + "equivalent-key-map": "^0.2.2", + "is-promise": "^4.0.0", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "turbo-combine-reducers": "^1.0.2", + "use-memo-one": "^1.1.1" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "redux": "^4.1.0" + } + }, + "node_modules/@wordpress/keyboard-shortcuts/node_modules/@wordpress/element": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.3.tgz", + "integrity": "sha512-uFL8Xx0Uq/C+nCL5aM4Fb6YVub//1wuHyQK9VDtKwYg9UBELrexSCHo1XaesYRiGUqVW0o837qC7RCP2NLUBJw==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@types/react": "^16.9.0", + "@types/react-dom": "^16.9.0", + "@wordpress/escape-html": "^2.2.2", + "lodash": "^4.17.21", + "react": "^17.0.1", + "react-dom": "^17.0.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/keycodes": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@wordpress/keycodes/-/keycodes-3.2.3.tgz", + "integrity": "sha512-1ClhtTbOSijLsyubbTlg1Df++W4CmjjRj88L7rzGX63iEHfBX6SSvui2pWVlQigDNdLNoaYGOaWm5eqDnvxkeQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@wordpress/i18n": "^4.2.3", + "lodash": "^4.17.21" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/media-utils": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@wordpress/media-utils/-/media-utils-3.0.3.tgz", + "integrity": "sha512-6elIJ8aNnLCWC6uKqCilgUHNOpOw9gnMJ2IFlyKbPrrXJhAhp744Nd9GUkiM1f4UDppWyIv2ik/ve6zx4O3cjg==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@wordpress/api-fetch": "^5.2.4", + "@wordpress/blob": "^3.2.1", + "@wordpress/element": "^4.0.3", + "@wordpress/i18n": "^4.2.3", + "lodash": "^4.17.21" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/media-utils/node_modules/@wordpress/api-fetch": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-5.2.4.tgz", + "integrity": "sha512-8vMm08L3MMUynhD6sxe9VhRcfi3qGE3m9j7LpC9yAIxt70DaMRxHWEmGIbgO2F3INkqACdLWnDQmsHDKOSWQsQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@wordpress/i18n": "^4.2.3", + "@wordpress/url": "^3.2.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/media-utils/node_modules/@wordpress/element": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.3.tgz", + "integrity": "sha512-uFL8Xx0Uq/C+nCL5aM4Fb6YVub//1wuHyQK9VDtKwYg9UBELrexSCHo1XaesYRiGUqVW0o837qC7RCP2NLUBJw==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@types/react": "^16.9.0", + "@types/react-dom": "^16.9.0", + "@wordpress/escape-html": "^2.2.2", + "lodash": "^4.17.21", + "react": "^17.0.1", + "react-dom": "^17.0.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/notices": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/@wordpress/notices/-/notices-3.2.5.tgz", + "integrity": "sha512-kyj6iN0yRboOEf+/TfqeW3FSq937Tg443i1UdLGv5mZEMYpi0d+0zEORLLjAnwJmWCp6yglaKOIGlSXqTVQ4sg==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@wordpress/a11y": "^3.2.3", + "@wordpress/data": "^6.1.2", + "lodash": "^4.17.21" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/notices/node_modules/@wordpress/compose": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.0.4.tgz", + "integrity": "sha512-gRpQgsxF1AnmrJnkmJOixsTtSmimFzasiXZlm0BwhsdeJEEqVO3Mt7ua59bLPHjnUmiyDfMWY9Ongn/2cSCRKQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@types/lodash": "^4.14.172", + "@types/mousetrap": "^1.6.8", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.5", + "@wordpress/element": "^4.0.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/priority-queue": "^2.2.2", + "clipboard": "^2.0.8", + "lodash": "^4.17.21", + "mousetrap": "^1.6.5", + "react-resize-aware": "^3.1.0", + "use-memo-one": "^1.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/notices/node_modules/@wordpress/data": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.1.2.tgz", + "integrity": "sha512-Ro4CGmGBgk+7gDOkoB/u/HFPjmObNTZvN1q1vb75gfHOjVmXFt6AZSialELc+AuYODZEedrvHRk7qMBPxsgTVQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@wordpress/compose": "^5.0.4", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/element": "^4.0.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/priority-queue": "^2.2.2", + "@wordpress/redux-routine": "^4.2.1", + "equivalent-key-map": "^0.2.2", + "is-promise": "^4.0.0", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "turbo-combine-reducers": "^1.0.2", + "use-memo-one": "^1.1.1" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "redux": "^4.1.0" + } + }, + "node_modules/@wordpress/notices/node_modules/@wordpress/element": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.3.tgz", + "integrity": "sha512-uFL8Xx0Uq/C+nCL5aM4Fb6YVub//1wuHyQK9VDtKwYg9UBELrexSCHo1XaesYRiGUqVW0o837qC7RCP2NLUBJw==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@types/react": "^16.9.0", + "@types/react-dom": "^16.9.0", + "@wordpress/escape-html": "^2.2.2", + "lodash": "^4.17.21", + "react": "^17.0.1", + "react-dom": "^17.0.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/npm-package-json-lint-config": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@wordpress/npm-package-json-lint-config/-/npm-package-json-lint-config-4.1.0.tgz", + "integrity": "sha512-FjXL5GbpmI/wXXcpCf2sKosVIVuWjUuHmDbwcMzd0SClcudo9QjDRdVe35We+js8eQLPgB9hsG4Cty6cAFFxsQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "npm-package-json-lint": ">=3.6.0" + } + }, + "node_modules/@wordpress/plugins": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@wordpress/plugins/-/plugins-4.0.3.tgz", + "integrity": "sha512-NRmnuaoj0AlMz+APYLWpDUpfl2ammVsUjZLGgTJykjREQhsb6U5FY6DI3pHyJ79kMTtgpioGk8cD7bGiG4PVYA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@wordpress/compose": "^5.0.3", + "@wordpress/element": "^4.0.2", + "@wordpress/hooks": "^3.2.1", + "@wordpress/icons": "^6.0.0", + "lodash": "^4.17.21", + "memize": "^1.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/postcss-plugins-preset": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@wordpress/postcss-plugins-preset/-/postcss-plugins-preset-3.2.3.tgz", + "integrity": "sha512-l7JDUDVnS0me3TjAzEEWO+OVumw2YHfEFhgwBCiLsXRRXOui8h64GCiIT71aiLpX6NG8Sn0AgBzKEfTotZZyAw==", + "dev": true, + "dependencies": { + "@wordpress/base-styles": "^4.0.2", + "autoprefixer": "^10.2.5" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/postcss-plugins-preset/node_modules/autoprefixer": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.0.tgz", + "integrity": "sha512-7FdJ1ONtwzV1G43GDD0kpVMn/qbiNqyOPMFTX5nRffI+7vgWoFEc6DcXOxHJxrWNDXrZh18eDsZjvZGUljSRGA==", + "dev": true, + "dependencies": { + "browserslist": "^4.17.5", + "caniuse-lite": "^1.0.30001272", + "fraction.js": "^4.1.1", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.1.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/@wordpress/prettier-config": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@wordpress/prettier-config/-/prettier-config-1.1.1.tgz", + "integrity": "sha512-qjpBK5KB2ieCLv+1fGNKRW4urf5tFN1eUn3Qy+JINxNwAx6Jj9uhfXA4AldCSnD+WkzsN2UgBvgAj5/SWwzRZQ==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/primitives": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@wordpress/primitives/-/primitives-3.0.3.tgz", + "integrity": "sha512-eG1UE5d9xnML7PCr1DpP1PEliwLM4KIuEFieHVpW1HkiybyENeTl33HdqXalOSuNAdYrnYa4KifThbjcTdzP2Q==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@wordpress/element": "^4.0.3", + "classnames": "^2.3.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/primitives/node_modules/@wordpress/element": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.3.tgz", + "integrity": "sha512-uFL8Xx0Uq/C+nCL5aM4Fb6YVub//1wuHyQK9VDtKwYg9UBELrexSCHo1XaesYRiGUqVW0o837qC7RCP2NLUBJw==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@types/react": "^16.9.0", + "@types/react-dom": "^16.9.0", + "@wordpress/escape-html": "^2.2.2", + "lodash": "^4.17.21", + "react": "^17.0.1", + "react-dom": "^17.0.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/priority-queue": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@wordpress/priority-queue/-/priority-queue-2.2.2.tgz", + "integrity": "sha512-28zPQ1jIhM+9w0xfLzL8xoHIEyG0ORjIi4A8j3aWBYXHYH9f/7oVAtJRXgVTJ9iJFyiUTL8sDiaZQ6aTFV78Tg==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/redux-routine": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@wordpress/redux-routine/-/redux-routine-4.2.1.tgz", + "integrity": "sha512-u//4vdeKzYvu4YBRmSUsIbnUazai+PybEnquLPqxQdaF4JqVN1D5OPWHSeFtmaXR1c78I+lUf40Q7dnmA2waXw==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "is-promise": "^4.0.0", + "lodash": "^4.17.21", + "redux": "^4.1.0", + "rungen": "^0.3.2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/reusable-blocks": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@wordpress/reusable-blocks/-/reusable-blocks-3.0.4.tgz", + "integrity": "sha512-q1yfd/jF9Hu6axhzP4NWjry1eOaVUilSu0e9FSkCxzMkI6jS2Heb1oRv3YQKVhV0vCD1WkGI6XLpHRZuXSYUIg==", + "dependencies": { + "@wordpress/block-editor": "^7.0.4", + "@wordpress/blocks": "^11.1.2", + "@wordpress/components": "^19.0.0", + "@wordpress/compose": "^5.0.4", + "@wordpress/core-data": "^4.0.4", + "@wordpress/data": "^6.1.2", + "@wordpress/element": "^4.0.3", + "@wordpress/i18n": "^4.2.3", + "@wordpress/icons": "^6.0.1", + "@wordpress/notices": "^3.2.5", + "@wordpress/url": "^3.2.3", + "lodash": "^4.17.21" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/reusable-blocks/node_modules/@wordpress/api-fetch": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-5.2.4.tgz", + "integrity": "sha512-8vMm08L3MMUynhD6sxe9VhRcfi3qGE3m9j7LpC9yAIxt70DaMRxHWEmGIbgO2F3INkqACdLWnDQmsHDKOSWQsQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@wordpress/i18n": "^4.2.3", + "@wordpress/url": "^3.2.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/reusable-blocks/node_modules/@wordpress/block-editor": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/@wordpress/block-editor/-/block-editor-7.0.4.tgz", + "integrity": "sha512-crnKOzGrqe9YZOFRbEsJhfm5sGNoCK8oHDTTO8TeTlKw4tGbvTUK3aayxTr9cd2Uu3J3Cy13d3M9qJC8ebXhbQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@react-spring/web": "^9.2.4", + "@wordpress/a11y": "^3.2.3", + "@wordpress/api-fetch": "^5.2.4", + "@wordpress/blob": "^3.2.1", + "@wordpress/block-serialization-default-parser": "^4.2.2", + "@wordpress/blocks": "^11.1.2", + "@wordpress/components": "^19.0.0", + "@wordpress/compose": "^5.0.4", + "@wordpress/data": "^6.1.2", + "@wordpress/data-controls": "^2.2.5", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.5", + "@wordpress/element": "^4.0.3", + "@wordpress/hooks": "^3.2.1", + "@wordpress/html-entities": "^3.2.2", + "@wordpress/i18n": "^4.2.3", + "@wordpress/icons": "^6.0.1", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keyboard-shortcuts": "^3.0.4", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/notices": "^3.2.5", + "@wordpress/rich-text": "^5.0.4", + "@wordpress/shortcode": "^3.2.2", + "@wordpress/token-list": "^2.2.1", + "@wordpress/url": "^3.2.3", + "@wordpress/warning": "^2.2.2", + "@wordpress/wordcount": "^3.2.2", + "classnames": "^2.3.1", + "colord": "^2.7.0", + "css-mediaquery": "^0.1.2", + "diff": "^4.0.2", + "dom-scroll-into-view": "^1.2.1", + "inherits": "^2.0.3", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "react-autosize-textarea": "^7.1.0", + "react-easy-crop": "^3.0.0", + "redux-multi": "^0.1.12", + "rememo": "^3.0.0", + "traverse": "^0.6.6" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/reusable-blocks/node_modules/@wordpress/block-editor/node_modules/react": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", + "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@wordpress/reusable-blocks/node_modules/@wordpress/block-editor/node_modules/react-autosize-textarea": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/react-autosize-textarea/-/react-autosize-textarea-7.1.0.tgz", + "integrity": "sha512-BHpjCDkuOlllZn3nLazY2F8oYO1tS2jHnWhcjTWQdcKiiMU6gHLNt/fzmqMSyerR0eTdKtfSIqtSeTtghNwS+g==", + "dependencies": { + "autosize": "^4.0.2", + "line-height": "^0.3.1", + "prop-types": "^15.5.6" + }, + "peerDependencies": { + "react": "^0.14.0 || ^15.0.0 || ^16.0.0", + "react-dom": "^0.14.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@wordpress/reusable-blocks/node_modules/@wordpress/block-editor/node_modules/react-dom": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", + "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" + }, + "peerDependencies": { + "react": "^16.14.0" + } + }, + "node_modules/@wordpress/reusable-blocks/node_modules/@wordpress/blocks": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/@wordpress/blocks/-/blocks-11.1.2.tgz", + "integrity": "sha512-xVvC/RXj9GXNRkQcGnmjWeS54intybON4Ol2vCVfreJtA5Cra5yRapRJwz3at1sgDD4q06k1sj98SemMEanazw==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@wordpress/autop": "^3.2.2", + "@wordpress/blob": "^3.2.1", + "@wordpress/block-serialization-default-parser": "^4.2.2", + "@wordpress/compose": "^5.0.4", + "@wordpress/data": "^6.1.2", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.5", + "@wordpress/element": "^4.0.3", + "@wordpress/hooks": "^3.2.1", + "@wordpress/html-entities": "^3.2.2", + "@wordpress/i18n": "^4.2.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/shortcode": "^3.2.2", + "colord": "^2.7.0", + "hpq": "^1.3.0", + "lodash": "^4.17.21", + "rememo": "^3.0.0", + "showdown": "^1.9.1", + "simple-html-tokenizer": "^0.5.7", + "uuid": "^8.3.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/reusable-blocks/node_modules/@wordpress/components": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/@wordpress/components/-/components-19.0.0.tgz", + "integrity": "sha512-foFC+jJ3nu6PZ2pnjdszi7R17CQRquXkCPaydlOCsuDbsKm0dowR264jAdK0HJWepttj+kh3amWEhzajX6AYtg==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@emotion/cache": "^11.4.0", + "@emotion/css": "^11.1.3", + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "@emotion/utils": "1.0.0", + "@wordpress/a11y": "^3.2.3", + "@wordpress/compose": "^5.0.4", + "@wordpress/date": "^4.2.2", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.5", + "@wordpress/element": "^4.0.3", + "@wordpress/hooks": "^3.2.1", + "@wordpress/i18n": "^4.2.3", + "@wordpress/icons": "^6.0.1", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/primitives": "^3.0.3", + "@wordpress/rich-text": "^5.0.4", + "@wordpress/warning": "^2.2.2", + "classnames": "^2.3.1", + "colord": "^2.7.0", + "dom-scroll-into-view": "^1.2.1", + "downshift": "^6.0.15", + "framer-motion": "^4.1.17", + "gradient-parser": "^0.1.5", + "highlight-words-core": "^1.2.2", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "moment": "^2.22.1", + "re-resizable": "^6.4.0", + "react-colorful": "^5.3.1", + "react-dates": "^17.1.1", + "react-resize-aware": "^3.1.0", + "react-use-gesture": "^9.0.0", + "reakit": "^1.3.8", + "rememo": "^3.0.0", + "uuid": "^8.3.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "reakit-utils": "^0.15.1" + } + }, + "node_modules/@wordpress/reusable-blocks/node_modules/@wordpress/components/node_modules/airbnb-prop-types": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz", + "integrity": "sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg==", + "dependencies": { + "array.prototype.find": "^2.1.1", + "function.prototype.name": "^1.1.2", + "is-regex": "^1.1.0", + "object-is": "^1.1.2", + "object.assign": "^4.1.0", + "object.entries": "^1.1.2", + "prop-types": "^15.7.2", + "prop-types-exact": "^1.2.0", + "react-is": "^16.13.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "peerDependencies": { + "react": "^0.14 || ^15.0.0 || ^16.0.0-alpha" + } + }, + "node_modules/@wordpress/reusable-blocks/node_modules/@wordpress/components/node_modules/react": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", + "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@wordpress/reusable-blocks/node_modules/@wordpress/components/node_modules/react-dates": { + "version": "17.2.0", + "resolved": "https://registry.npmjs.org/react-dates/-/react-dates-17.2.0.tgz", + "integrity": "sha512-RDlerU8DdRRrlYS0MQ7Z9igPWABGLDwz6+ykBNff67RM3Sset2TDqeuOr+R5o00Ggn5U47GeLsGcSDxlZd9cHw==", + "dependencies": { + "airbnb-prop-types": "^2.10.0", + "consolidated-events": "^1.1.1 || ^2.0.0", + "is-touch-device": "^1.0.1", + "lodash": "^4.1.1", + "object.assign": "^4.1.0", + "object.values": "^1.0.4", + "prop-types": "^15.6.1", + "react-addons-shallow-compare": "^15.6.2", + "react-moment-proptypes": "^1.6.0", + "react-outside-click-handler": "^1.2.0", + "react-portal": "^4.1.5", + "react-with-styles": "^3.2.0", + "react-with-styles-interface-css": "^4.0.2" + }, + "peerDependencies": { + "moment": "^2.18.1", + "react": "^0.14 || ^15.5.4 || ^16.1.1", + "react-dom": "^0.14 || ^15.5.4 || ^16.1.1" + } + }, + "node_modules/@wordpress/reusable-blocks/node_modules/@wordpress/components/node_modules/react-dom": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", + "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" + }, + "peerDependencies": { + "react": "^16.14.0" + } + }, + "node_modules/@wordpress/reusable-blocks/node_modules/@wordpress/components/node_modules/react-outside-click-handler": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/react-outside-click-handler/-/react-outside-click-handler-1.3.0.tgz", + "integrity": "sha512-Te/7zFU0oHpAnctl//pP3hEAeobfeHMyygHB8MnjP6sX5OR8KHT1G3jmLsV3U9RnIYo+Yn+peJYWu+D5tUS8qQ==", + "dependencies": { + "airbnb-prop-types": "^2.15.0", + "consolidated-events": "^1.1.1 || ^2.0.0", + "document.contains": "^1.0.1", + "object.values": "^1.1.0", + "prop-types": "^15.7.2" + }, + "peerDependencies": { + "react": "^0.14 || >=15", + "react-dom": "^0.14 || >=15" + } + }, + "node_modules/@wordpress/reusable-blocks/node_modules/@wordpress/components/node_modules/react-portal": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/react-portal/-/react-portal-4.2.1.tgz", + "integrity": "sha512-fE9kOBagwmTXZ3YGRYb4gcMy+kSA+yLO0xnPankjRlfBv4uCpFXqKPfkpsGQQR15wkZ9EssnvTOl1yMzbkxhPQ==", + "dependencies": { + "prop-types": "^15.5.8" + }, + "peerDependencies": { + "react": "^15.0.0-0 || ^16.0.0-0 || ^17.0.0-0" + } + }, + "node_modules/@wordpress/reusable-blocks/node_modules/@wordpress/components/node_modules/react-with-direction": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/react-with-direction/-/react-with-direction-1.4.0.tgz", + "integrity": "sha512-ybHNPiAmaJpoWwugwqry9Hd1Irl2hnNXlo/2SXQBwbLn/jGMauMS2y9jw+ydyX5V9ICryCqObNSthNt5R94xpg==", + "dependencies": { + "airbnb-prop-types": "^2.16.0", + "brcast": "^2.0.2", + "deepmerge": "^1.5.2", + "direction": "^1.0.4", + "hoist-non-react-statics": "^3.3.2", + "object.assign": "^4.1.2", + "object.values": "^1.1.5", + "prop-types": "^15.7.2" + }, + "peerDependencies": { + "react": "^0.14 || ^15 || ^16", + "react-dom": "^0.14 || ^15 || ^16" + } + }, + "node_modules/@wordpress/reusable-blocks/node_modules/@wordpress/components/node_modules/react-with-styles": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/react-with-styles/-/react-with-styles-3.2.3.tgz", + "integrity": "sha512-MTI1UOvMHABRLj5M4WpODfwnveHaip6X7QUMI2x6zovinJiBXxzhA9AJP7MZNaKqg1JRFtHPXZdroUC8KcXwlQ==", + "dependencies": { + "hoist-non-react-statics": "^3.2.1", + "object.assign": "^4.1.0", + "prop-types": "^15.6.2", + "react-with-direction": "^1.3.0" + }, + "peerDependencies": { + "react": ">=0.14", + "react-with-direction": "^1.1.0" + } + }, + "node_modules/@wordpress/reusable-blocks/node_modules/@wordpress/components/node_modules/react-with-styles-interface-css": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/react-with-styles-interface-css/-/react-with-styles-interface-css-4.0.3.tgz", + "integrity": "sha512-wE43PIyjal2dexxyyx4Lhbcb+E42amoYPnkunRZkb9WTA+Z+9LagbyxwsI352NqMdFmghR0opg29dzDO4/YXbw==", + "dependencies": { + "array.prototype.flat": "^1.2.1", + "global-cache": "^1.2.1" + }, + "peerDependencies": { + "react-with-styles": "^3.0.0" + } + }, + "node_modules/@wordpress/reusable-blocks/node_modules/@wordpress/compose": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.0.4.tgz", + "integrity": "sha512-gRpQgsxF1AnmrJnkmJOixsTtSmimFzasiXZlm0BwhsdeJEEqVO3Mt7ua59bLPHjnUmiyDfMWY9Ongn/2cSCRKQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@types/lodash": "^4.14.172", + "@types/mousetrap": "^1.6.8", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.5", + "@wordpress/element": "^4.0.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/priority-queue": "^2.2.2", + "clipboard": "^2.0.8", + "lodash": "^4.17.21", + "mousetrap": "^1.6.5", + "react-resize-aware": "^3.1.0", + "use-memo-one": "^1.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/reusable-blocks/node_modules/@wordpress/data": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.1.2.tgz", + "integrity": "sha512-Ro4CGmGBgk+7gDOkoB/u/HFPjmObNTZvN1q1vb75gfHOjVmXFt6AZSialELc+AuYODZEedrvHRk7qMBPxsgTVQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@wordpress/compose": "^5.0.4", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/element": "^4.0.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/priority-queue": "^2.2.2", + "@wordpress/redux-routine": "^4.2.1", + "equivalent-key-map": "^0.2.2", + "is-promise": "^4.0.0", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "turbo-combine-reducers": "^1.0.2", + "use-memo-one": "^1.1.1" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "redux": "^4.1.0" + } + }, + "node_modules/@wordpress/reusable-blocks/node_modules/@wordpress/element": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.3.tgz", + "integrity": "sha512-uFL8Xx0Uq/C+nCL5aM4Fb6YVub//1wuHyQK9VDtKwYg9UBELrexSCHo1XaesYRiGUqVW0o837qC7RCP2NLUBJw==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@types/react": "^16.9.0", + "@types/react-dom": "^16.9.0", + "@wordpress/escape-html": "^2.2.2", + "lodash": "^4.17.21", + "react": "^17.0.1", + "react-dom": "^17.0.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/reusable-blocks/node_modules/@wordpress/icons": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@wordpress/icons/-/icons-6.0.1.tgz", + "integrity": "sha512-YAtnWquaWWM49hpoRJwaZRBTnnkwqOY0TuK8a6m0gXE2Xm3uoO/J4c6tLqKiFv3FG9Hmc/CB1WCmx+uM1TX0vw==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@wordpress/element": "^4.0.3", + "@wordpress/primitives": "^3.0.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/reusable-blocks/node_modules/deepmerge": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", + "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@wordpress/reusable-blocks/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/@wordpress/reusable-blocks/node_modules/scheduler": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "node_modules/@wordpress/rich-text": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@wordpress/rich-text/-/rich-text-5.0.4.tgz", + "integrity": "sha512-a+eIKav2kNfaG2R1LUbI+nB4uUH8HLh/YSGjjRaMRvBQb6Tdu3+ELttqk2DnzjREVrSFYb6h7WvdTlCpN0Q/1g==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@wordpress/compose": "^5.0.4", + "@wordpress/data": "^6.1.2", + "@wordpress/dom": "^3.2.5", + "@wordpress/element": "^4.0.3", + "@wordpress/escape-html": "^2.2.2", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keycodes": "^3.2.3", + "classnames": "^2.3.1", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "rememo": "^3.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/rich-text/node_modules/@wordpress/compose": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.0.4.tgz", + "integrity": "sha512-gRpQgsxF1AnmrJnkmJOixsTtSmimFzasiXZlm0BwhsdeJEEqVO3Mt7ua59bLPHjnUmiyDfMWY9Ongn/2cSCRKQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@types/lodash": "^4.14.172", + "@types/mousetrap": "^1.6.8", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.5", + "@wordpress/element": "^4.0.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/priority-queue": "^2.2.2", + "clipboard": "^2.0.8", + "lodash": "^4.17.21", + "mousetrap": "^1.6.5", + "react-resize-aware": "^3.1.0", + "use-memo-one": "^1.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/rich-text/node_modules/@wordpress/data": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.1.2.tgz", + "integrity": "sha512-Ro4CGmGBgk+7gDOkoB/u/HFPjmObNTZvN1q1vb75gfHOjVmXFt6AZSialELc+AuYODZEedrvHRk7qMBPxsgTVQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@wordpress/compose": "^5.0.4", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/element": "^4.0.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/priority-queue": "^2.2.2", + "@wordpress/redux-routine": "^4.2.1", + "equivalent-key-map": "^0.2.2", + "is-promise": "^4.0.0", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "turbo-combine-reducers": "^1.0.2", + "use-memo-one": "^1.1.1" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "redux": "^4.1.0" + } + }, + "node_modules/@wordpress/rich-text/node_modules/@wordpress/element": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.3.tgz", + "integrity": "sha512-uFL8Xx0Uq/C+nCL5aM4Fb6YVub//1wuHyQK9VDtKwYg9UBELrexSCHo1XaesYRiGUqVW0o837qC7RCP2NLUBJw==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@types/react": "^16.9.0", + "@types/react-dom": "^16.9.0", + "@wordpress/escape-html": "^2.2.2", + "lodash": "^4.17.21", + "react": "^17.0.1", + "react-dom": "^17.0.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/scripts": { + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/@wordpress/scripts/-/scripts-18.1.0.tgz", + "integrity": "sha512-hSRGfnRpGyr3Ec//XfMDCoC3M85nX+KyNAqIBJpLAIYo/gs5x9Gw2fX9ac4ts+hx9VIa7d0RmH5+Gqsxupzp+g==", + "dev": true, + "dependencies": { + "@svgr/webpack": "^5.5.0", + "@wordpress/babel-preset-default": "^6.3.3", + "@wordpress/browserslist-config": "^4.1.0", + "@wordpress/dependency-extraction-webpack-plugin": "^3.2.1", + "@wordpress/eslint-plugin": "^9.2.0", + "@wordpress/jest-preset-default": "^7.1.1", + "@wordpress/npm-package-json-lint-config": "^4.1.0", + "@wordpress/postcss-plugins-preset": "^3.2.2", + "@wordpress/prettier-config": "^1.1.1", + "@wordpress/stylelint-config": "^19.1.0", + "babel-jest": "^26.6.3", + "babel-loader": "^8.2.2", + "browserslist": "^4.16.6", + "chalk": "^4.0.0", + "check-node-version": "^4.1.0", + "clean-webpack-plugin": "^3.0.0", + "cross-spawn": "^5.1.0", + "css-loader": "^6.2.0", + "cssnano": "^5.0.7", + "cwd": "^0.10.0", + "dir-glob": "^3.0.1", + "eslint": "^7.17.0", + "eslint-plugin-markdown": "^2.2.0", + "expect-puppeteer": "^4.4.0", + "filenamify": "^4.2.0", + "jest": "^26.6.3", + "jest-circus": "^26.6.3", + "jest-dev-server": "^5.0.3", + "jest-environment-node": "^26.6.2", + "markdownlint": "^0.23.1", + "markdownlint-cli": "^0.27.1", + "merge-deep": "^3.0.3", + "mini-css-extract-plugin": "^2.1.0", + "minimist": "^1.2.0", + "npm-package-json-lint": "^5.0.0", + "postcss": "^8.2.15", + "postcss-loader": "^6.1.1", + "prettier": "npm:wp-prettier@2.2.1-beta-1", + "puppeteer-core": "^10.1.0", + "read-pkg-up": "^1.0.1", + "resolve-bin": "^0.4.0", + "sass": "^1.35.2", + "sass-loader": "^12.1.0", + "source-map-loader": "^3.0.0", + "stylelint": "^13.8.0", + "terser-webpack-plugin": "^5.1.4", + "url-loader": "^4.1.1", + "webpack": "^5.47.1", + "webpack-bundle-analyzer": "^4.4.2", + "webpack-cli": "^4.7.2", + "webpack-livereload-plugin": "^3.0.1" + }, + "bin": { + "wp-scripts": "bin/wp-scripts.js" + }, + "engines": { + "node": ">=12.13", + "npm": ">=6.9" + } + }, + "node_modules/@wordpress/scripts/node_modules/@jest/console": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz", + "integrity": "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^26.6.2", + "jest-util": "^26.6.2", + "slash": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@wordpress/scripts/node_modules/@jest/core": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz", + "integrity": "sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==", + "dev": true, + "dependencies": { + "@jest/console": "^26.6.2", + "@jest/reporters": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-changed-files": "^26.6.2", + "jest-config": "^26.6.3", + "jest-haste-map": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-resolve-dependencies": "^26.6.3", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "jest-watcher": "^26.6.2", + "micromatch": "^4.0.2", + "p-each-series": "^2.1.0", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@wordpress/scripts/node_modules/@jest/globals": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz", + "integrity": "sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==", + "dev": true, + "dependencies": { + "@jest/environment": "^26.6.2", + "@jest/types": "^26.6.2", + "expect": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@wordpress/scripts/node_modules/@jest/reporters": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-26.6.2.tgz", + "integrity": "sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.4", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "jest-haste-map": "^26.6.2", + "jest-resolve": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^7.0.0" + }, + "engines": { + "node": ">= 10.14.2" + }, + "optionalDependencies": { + "node-notifier": "^8.0.0" + } + }, + "node_modules/@wordpress/scripts/node_modules/@jest/source-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz", + "integrity": "sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.4", + "source-map": "^0.6.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@wordpress/scripts/node_modules/@jest/test-result": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz", + "integrity": "sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==", + "dev": true, + "dependencies": { + "@jest/console": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@wordpress/scripts/node_modules/@jest/test-sequencer": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz", + "integrity": "sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==", + "dev": true, + "dependencies": { + "@jest/test-result": "^26.6.2", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@wordpress/scripts/node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@wordpress/scripts/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@wordpress/scripts/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@wordpress/scripts/node_modules/cjs-module-lexer": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz", + "integrity": "sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==", + "dev": true + }, + "node_modules/@wordpress/scripts/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/@wordpress/scripts/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@wordpress/scripts/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@wordpress/scripts/node_modules/css-declaration-sorter": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.1.3.tgz", + "integrity": "sha512-SvjQjNRZgh4ULK1LDJ2AduPKUKxIqmtU7ZAyi47BTV+M90Qvxr9AB6lKlLbDUfXqI9IQeYA8LbAsCZPpJEV3aA==", + "dev": true, + "dependencies": { + "timsort": "^0.3.0" + }, + "engines": { + "node": ">= 10" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/@wordpress/scripts/node_modules/cssnano": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.0.8.tgz", + "integrity": "sha512-Lda7geZU0Yu+RZi2SGpjYuQz4HI4/1Y+BhdD0jL7NXAQ5larCzVn+PUGuZbDMYz904AXXCOgO5L1teSvgu7aFg==", + "dev": true, + "dependencies": { + "cssnano-preset-default": "^5.1.4", + "is-resolvable": "^1.1.0", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/@wordpress/scripts/node_modules/cssnano-preset-default": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.1.4.tgz", + "integrity": "sha512-sPpQNDQBI3R/QsYxQvfB4mXeEcWuw0wGtKtmS5eg8wudyStYMgKOQT39G07EbW1LB56AOYrinRS9f0ig4Y3MhQ==", + "dev": true, + "dependencies": { + "css-declaration-sorter": "^6.0.3", + "cssnano-utils": "^2.0.1", + "postcss-calc": "^8.0.0", + "postcss-colormin": "^5.2.0", + "postcss-convert-values": "^5.0.1", + "postcss-discard-comments": "^5.0.1", + "postcss-discard-duplicates": "^5.0.1", + "postcss-discard-empty": "^5.0.1", + "postcss-discard-overridden": "^5.0.1", + "postcss-merge-longhand": "^5.0.2", + "postcss-merge-rules": "^5.0.2", + "postcss-minify-font-values": "^5.0.1", + "postcss-minify-gradients": "^5.0.2", + "postcss-minify-params": "^5.0.1", + "postcss-minify-selectors": "^5.1.0", + "postcss-normalize-charset": "^5.0.1", + "postcss-normalize-display-values": "^5.0.1", + "postcss-normalize-positions": "^5.0.1", + "postcss-normalize-repeat-style": "^5.0.1", + "postcss-normalize-string": "^5.0.1", + "postcss-normalize-timing-functions": "^5.0.1", + "postcss-normalize-unicode": "^5.0.1", + "postcss-normalize-url": "^5.0.2", + "postcss-normalize-whitespace": "^5.0.1", + "postcss-ordered-values": "^5.0.2", + "postcss-reduce-initial": "^5.0.1", + "postcss-reduce-transforms": "^5.0.1", + "postcss-svgo": "^5.0.2", + "postcss-unique-selectors": "^5.0.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/@wordpress/scripts/node_modules/cssnano-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-2.0.1.tgz", + "integrity": "sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/@wordpress/scripts/node_modules/emittery": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz", + "integrity": "sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/@wordpress/scripts/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/@wordpress/scripts/node_modules/execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/@wordpress/scripts/node_modules/execa/node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@wordpress/scripts/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@wordpress/scripts/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@wordpress/scripts/node_modules/human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true, + "engines": { + "node": ">=8.12.0" + } + }, + "node_modules/@wordpress/scripts/node_modules/istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@wordpress/scripts/node_modules/jest": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.3.tgz", + "integrity": "sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==", + "dev": true, + "dependencies": { + "@jest/core": "^26.6.3", + "import-local": "^3.0.2", + "jest-cli": "^26.6.3" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@wordpress/scripts/node_modules/jest-changed-files": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.6.2.tgz", + "integrity": "sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "execa": "^4.0.0", + "throat": "^5.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@wordpress/scripts/node_modules/jest-cli": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz", + "integrity": "sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==", + "dev": true, + "dependencies": { + "@jest/core": "^26.6.3", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "import-local": "^3.0.2", + "is-ci": "^2.0.0", + "jest-config": "^26.6.3", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "prompts": "^2.0.1", + "yargs": "^15.4.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@wordpress/scripts/node_modules/jest-config": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz", + "integrity": "sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^26.6.3", + "@jest/types": "^26.6.2", + "babel-jest": "^26.6.3", + "chalk": "^4.0.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.4", + "jest-environment-jsdom": "^26.6.2", + "jest-environment-node": "^26.6.2", + "jest-get-type": "^26.3.0", + "jest-jasmine2": "^26.6.3", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + }, + "peerDependencies": { + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + } + } + }, + "node_modules/@wordpress/scripts/node_modules/jest-docblock": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz", + "integrity": "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==", + "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@wordpress/scripts/node_modules/jest-environment-jsdom": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz", + "integrity": "sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==", + "dev": true, + "dependencies": { + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2", + "jsdom": "^16.4.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@wordpress/scripts/node_modules/jest-jasmine2": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz", + "integrity": "sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^26.6.2", + "@jest/source-map": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^26.6.2", + "is-generator-fn": "^2.0.0", + "jest-each": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "pretty-format": "^26.6.2", + "throat": "^5.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@wordpress/scripts/node_modules/jest-leak-detector": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz", + "integrity": "sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==", + "dev": true, + "dependencies": { + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@wordpress/scripts/node_modules/jest-message-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", + "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2", + "slash": "^3.0.0", + "stack-utils": "^2.0.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@wordpress/scripts/node_modules/jest-resolve": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", + "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@wordpress/scripts/node_modules/jest-resolve-dependencies": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz", + "integrity": "sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-snapshot": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@wordpress/scripts/node_modules/jest-resolve/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@wordpress/scripts/node_modules/jest-resolve/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@wordpress/scripts/node_modules/jest-runner": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz", + "integrity": "sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==", + "dev": true, + "dependencies": { + "@jest/console": "^26.6.2", + "@jest/environment": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.7.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-config": "^26.6.3", + "jest-docblock": "^26.0.0", + "jest-haste-map": "^26.6.2", + "jest-leak-detector": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", + "jest-runtime": "^26.6.3", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "source-map-support": "^0.5.6", + "throat": "^5.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@wordpress/scripts/node_modules/jest-runtime": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz", + "integrity": "sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==", + "dev": true, + "dependencies": { + "@jest/console": "^26.6.2", + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/globals": "^26.6.2", + "@jest/source-map": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0", + "cjs-module-lexer": "^0.6.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.4", + "jest-config": "^26.6.3", + "jest-haste-map": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-mock": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "slash": "^3.0.0", + "strip-bom": "^4.0.0", + "yargs": "^15.4.1" + }, + "bin": { + "jest-runtime": "bin/jest-runtime.js" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@wordpress/scripts/node_modules/jest-snapshot": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz", + "integrity": "sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.0.0", + "chalk": "^4.0.0", + "expect": "^26.6.2", + "graceful-fs": "^4.2.4", + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "jest-haste-map": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", + "natural-compare": "^1.4.0", + "pretty-format": "^26.6.2", + "semver": "^7.3.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@wordpress/scripts/node_modules/jest-snapshot/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@wordpress/scripts/node_modules/jest-validate": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", + "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "camelcase": "^6.0.0", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "leven": "^3.1.0", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@wordpress/scripts/node_modules/jest-watcher": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz", + "integrity": "sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==", + "dev": true, + "dependencies": { + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^26.6.2", + "string-length": "^4.0.1" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@wordpress/scripts/node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/@wordpress/scripts/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@wordpress/scripts/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@wordpress/scripts/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@wordpress/scripts/node_modules/postcss-calc": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.0.0.tgz", + "integrity": "sha512-5NglwDrcbiy8XXfPM11F3HeC6hoT9W7GUH/Zi5U/p7u3Irv4rHhdDcIZwG0llHXV4ftsBjpfWMXAnXNl4lnt8g==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + }, + "peerDependencies": { + "postcss": "^8.2.2" + } + }, + "node_modules/@wordpress/scripts/node_modules/postcss-colormin": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.0.tgz", + "integrity": "sha512-+HC6GfWU3upe5/mqmxuqYZ9B2Wl4lcoUUNkoaX59nEWV4EtADCMiBqui111Bu8R8IvaZTmqmxrqOAqjbHIwXPw==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "colord": "^2.0.1", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/@wordpress/scripts/node_modules/postcss-convert-values": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.1.tgz", + "integrity": "sha512-C3zR1Do2BkKkCgC0g3sF8TS0koF2G+mN8xxayZx3f10cIRmTaAnpgpRQZjNekTZxM2ciSPoh2IWJm0VZx8NoQg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/@wordpress/scripts/node_modules/postcss-discard-comments": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz", + "integrity": "sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/@wordpress/scripts/node_modules/postcss-discard-duplicates": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz", + "integrity": "sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/@wordpress/scripts/node_modules/postcss-discard-empty": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz", + "integrity": "sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/@wordpress/scripts/node_modules/postcss-discard-overridden": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz", + "integrity": "sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/@wordpress/scripts/node_modules/postcss-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.0.tgz", + "integrity": "sha512-H9hv447QjQJVDbHj3OUdciyAXY3v5+UDduzEytAlZCVHCpNAAg/mCSwhYYqZr9BiGYhmYspU8QXxZwiHTLn3yA==", + "dev": true, + "dependencies": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.4", + "semver": "^7.3.5" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "node_modules/@wordpress/scripts/node_modules/postcss-loader/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@wordpress/scripts/node_modules/postcss-merge-longhand": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.0.2.tgz", + "integrity": "sha512-BMlg9AXSI5G9TBT0Lo/H3PfUy63P84rVz3BjCFE9e9Y9RXQZD3+h3YO1kgTNsNJy7bBc1YQp8DmSnwLIW5VPcw==", + "dev": true, + "dependencies": { + "css-color-names": "^1.0.1", + "postcss-value-parser": "^4.1.0", + "stylehacks": "^5.0.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/@wordpress/scripts/node_modules/postcss-merge-rules": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.0.2.tgz", + "integrity": "sha512-5K+Md7S3GwBewfB4rjDeol6V/RZ8S+v4B66Zk2gChRqLTCC8yjnHQ601omj9TKftS19OPGqZ/XzoqpzNQQLwbg==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^2.0.1", + "postcss-selector-parser": "^6.0.5", + "vendors": "^1.0.3" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/@wordpress/scripts/node_modules/postcss-minify-font-values": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.0.1.tgz", + "integrity": "sha512-7JS4qIsnqaxk+FXY1E8dHBDmraYFWmuL6cgt0T1SWGRO5bzJf8sUoelwa4P88LEWJZweHevAiDKxHlofuvtIoA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/@wordpress/scripts/node_modules/postcss-minify-gradients": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.2.tgz", + "integrity": "sha512-7Do9JP+wqSD6Prittitt2zDLrfzP9pqKs2EcLX7HJYxsxCOwrrcLt4x/ctQTsiOw+/8HYotAoqNkrzItL19SdQ==", + "dev": true, + "dependencies": { + "colord": "^2.6", + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/@wordpress/scripts/node_modules/postcss-minify-params": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.0.1.tgz", + "integrity": "sha512-4RUC4k2A/Q9mGco1Z8ODc7h+A0z7L7X2ypO1B6V8057eVK6mZ6xwz6QN64nHuHLbqbclkX1wyzRnIrdZehTEHw==", + "dev": true, + "dependencies": { + "alphanum-sort": "^1.0.2", + "browserslist": "^4.16.0", + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0", + "uniqs": "^2.0.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/@wordpress/scripts/node_modules/postcss-minify-selectors": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.1.0.tgz", + "integrity": "sha512-NzGBXDa7aPsAcijXZeagnJBKBPMYLaJJzB8CQh6ncvyl2sIndLVWfbcDi0SBjRWk5VqEjXvf8tYwzoKf4Z07og==", + "dev": true, + "dependencies": { + "alphanum-sort": "^1.0.2", + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/@wordpress/scripts/node_modules/postcss-normalize-charset": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz", + "integrity": "sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/@wordpress/scripts/node_modules/postcss-normalize-display-values": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.1.tgz", + "integrity": "sha512-uupdvWk88kLDXi5HEyI9IaAJTE3/Djbcrqq8YgjvAVuzgVuqIk3SuJWUisT2gaJbZm1H9g5k2w1xXilM3x8DjQ==", + "dev": true, + "dependencies": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/@wordpress/scripts/node_modules/postcss-normalize-positions": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.0.1.tgz", + "integrity": "sha512-rvzWAJai5xej9yWqlCb1OWLd9JjW2Ex2BCPzUJrbaXmtKtgfL8dBMOOMTX6TnvQMtjk3ei1Lswcs78qKO1Skrg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/@wordpress/scripts/node_modules/postcss-normalize-repeat-style": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.1.tgz", + "integrity": "sha512-syZ2itq0HTQjj4QtXZOeefomckiV5TaUO6ReIEabCh3wgDs4Mr01pkif0MeVwKyU/LHEkPJnpwFKRxqWA/7O3w==", + "dev": true, + "dependencies": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/@wordpress/scripts/node_modules/postcss-normalize-string": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.0.1.tgz", + "integrity": "sha512-Ic8GaQ3jPMVl1OEn2U//2pm93AXUcF3wz+OriskdZ1AOuYV25OdgS7w9Xu2LO5cGyhHCgn8dMXh9bO7vi3i9pA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/@wordpress/scripts/node_modules/postcss-normalize-timing-functions": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.1.tgz", + "integrity": "sha512-cPcBdVN5OsWCNEo5hiXfLUnXfTGtSFiBU9SK8k7ii8UD7OLuznzgNRYkLZow11BkQiiqMcgPyh4ZqXEEUrtQ1Q==", + "dev": true, + "dependencies": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/@wordpress/scripts/node_modules/postcss-normalize-unicode": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.1.tgz", + "integrity": "sha512-kAtYD6V3pK0beqrU90gpCQB7g6AOfP/2KIPCVBKJM2EheVsBQmx/Iof+9zR9NFKLAx4Pr9mDhogB27pmn354nA==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.0", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/@wordpress/scripts/node_modules/postcss-normalize-url": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.2.tgz", + "integrity": "sha512-k4jLTPUxREQ5bpajFQZpx8bCF2UrlqOTzP9kEqcEnOfwsRshWs2+oAFIHfDQB8GO2PaUaSE0NlTAYtbluZTlHQ==", + "dev": true, + "dependencies": { + "is-absolute-url": "^3.0.3", + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/@wordpress/scripts/node_modules/postcss-normalize-whitespace": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.1.tgz", + "integrity": "sha512-iPklmI5SBnRvwceb/XH568yyzK0qRVuAG+a1HFUsFRf11lEJTiQQa03a4RSCQvLKdcpX7XsI1Gen9LuLoqwiqA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/@wordpress/scripts/node_modules/postcss-ordered-values": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.0.2.tgz", + "integrity": "sha512-8AFYDSOYWebJYLyJi3fyjl6CqMEG/UVworjiyK1r573I56kb3e879sCJLGvR3merj+fAdPpVplXKQZv+ey6CgQ==", + "dev": true, + "dependencies": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/@wordpress/scripts/node_modules/postcss-reduce-initial": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.0.1.tgz", + "integrity": "sha512-zlCZPKLLTMAqA3ZWH57HlbCjkD55LX9dsRyxlls+wfuRfqCi5mSlZVan0heX5cHr154Dq9AfbH70LyhrSAezJw==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.0", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/@wordpress/scripts/node_modules/postcss-reduce-transforms": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.1.tgz", + "integrity": "sha512-a//FjoPeFkRuAguPscTVmRQUODP+f3ke2HqFNgGPwdYnpeC29RZdCBvGRGTsKpMURb/I3p6jdKoBQ2zI+9Q7kA==", + "dev": true, + "dependencies": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/@wordpress/scripts/node_modules/postcss-svgo": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.0.2.tgz", + "integrity": "sha512-YzQuFLZu3U3aheizD+B1joQ94vzPfE6BNUcSYuceNxlVnKKsOtdo6hL9/zyC168Q8EwfLSgaDSalsUGa9f2C0A==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.1.0", + "svgo": "^2.3.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/@wordpress/scripts/node_modules/postcss-unique-selectors": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.0.1.tgz", + "integrity": "sha512-gwi1NhHV4FMmPn+qwBNuot1sG1t2OmacLQ/AX29lzyggnjd+MnVD5uqQmpXO3J17KGL2WAxQruj1qTd3H0gG/w==", + "dev": true, + "dependencies": { + "alphanum-sort": "^1.0.2", + "postcss-selector-parser": "^6.0.5", + "uniqs": "^2.0.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/@wordpress/scripts/node_modules/prettier": { + "name": "wp-prettier", + "version": "2.2.1-beta-1", + "resolved": "https://registry.npmjs.org/wp-prettier/-/wp-prettier-2.2.1-beta-1.tgz", + "integrity": "sha512-+JHkqs9LC/JPp51yy1hzs3lQ7qeuWCwOcSzpQNeeY/G7oSpnF61vxt7hRh87zNRTr6ob2ndy0W8rVzhgrcA+Gw==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@wordpress/scripts/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@wordpress/scripts/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@wordpress/scripts/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@wordpress/scripts/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@wordpress/scripts/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@wordpress/scripts/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@wordpress/scripts/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@wordpress/scripts/node_modules/stylehacks": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.0.1.tgz", + "integrity": "sha512-Es0rVnHIqbWzveU1b24kbw92HsebBepxfcqe5iix7t9j0PQqhs0IxXVXv0pY2Bxa08CgMkzD6OWql7kbGOuEdA==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.0", + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/@wordpress/scripts/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@wordpress/scripts/node_modules/throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", + "dev": true + }, + "node_modules/@wordpress/scripts/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@wordpress/scripts/node_modules/v8-to-istanbul": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz", + "integrity": "sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@wordpress/scripts/node_modules/v8-to-istanbul/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@wordpress/scripts/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@wordpress/scripts/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@wordpress/scripts/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "node_modules/@wordpress/scripts/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@wordpress/scripts/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "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" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@wordpress/server-side-render": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@wordpress/server-side-render/-/server-side-render-3.0.4.tgz", + "integrity": "sha512-/LxybA6D/deSvhDXqD33NIHFL2o7QNQzmwXKiHn5DiTnuPGVXyyYoQ1LYyoH9pqq1MOjydtx3W4vA5y2REVYgw==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@wordpress/api-fetch": "^5.2.4", + "@wordpress/blocks": "^11.1.2", + "@wordpress/components": "^19.0.0", + "@wordpress/compose": "^5.0.4", + "@wordpress/data": "^6.1.2", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/element": "^4.0.3", + "@wordpress/i18n": "^4.2.3", + "@wordpress/url": "^3.2.3", + "lodash": "^4.17.21" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/server-side-render/node_modules/@wordpress/api-fetch": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-5.2.4.tgz", + "integrity": "sha512-8vMm08L3MMUynhD6sxe9VhRcfi3qGE3m9j7LpC9yAIxt70DaMRxHWEmGIbgO2F3INkqACdLWnDQmsHDKOSWQsQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@wordpress/i18n": "^4.2.3", + "@wordpress/url": "^3.2.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/server-side-render/node_modules/@wordpress/blocks": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/@wordpress/blocks/-/blocks-11.1.2.tgz", + "integrity": "sha512-xVvC/RXj9GXNRkQcGnmjWeS54intybON4Ol2vCVfreJtA5Cra5yRapRJwz3at1sgDD4q06k1sj98SemMEanazw==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@wordpress/autop": "^3.2.2", + "@wordpress/blob": "^3.2.1", + "@wordpress/block-serialization-default-parser": "^4.2.2", + "@wordpress/compose": "^5.0.4", + "@wordpress/data": "^6.1.2", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.5", + "@wordpress/element": "^4.0.3", + "@wordpress/hooks": "^3.2.1", + "@wordpress/html-entities": "^3.2.2", + "@wordpress/i18n": "^4.2.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/shortcode": "^3.2.2", + "colord": "^2.7.0", + "hpq": "^1.3.0", + "lodash": "^4.17.21", + "rememo": "^3.0.0", + "showdown": "^1.9.1", + "simple-html-tokenizer": "^0.5.7", + "uuid": "^8.3.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/server-side-render/node_modules/@wordpress/components": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/@wordpress/components/-/components-19.0.0.tgz", + "integrity": "sha512-foFC+jJ3nu6PZ2pnjdszi7R17CQRquXkCPaydlOCsuDbsKm0dowR264jAdK0HJWepttj+kh3amWEhzajX6AYtg==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@emotion/cache": "^11.4.0", + "@emotion/css": "^11.1.3", + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "@emotion/utils": "1.0.0", + "@wordpress/a11y": "^3.2.3", + "@wordpress/compose": "^5.0.4", + "@wordpress/date": "^4.2.2", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.5", + "@wordpress/element": "^4.0.3", + "@wordpress/hooks": "^3.2.1", + "@wordpress/i18n": "^4.2.3", + "@wordpress/icons": "^6.0.1", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/primitives": "^3.0.3", + "@wordpress/rich-text": "^5.0.4", + "@wordpress/warning": "^2.2.2", + "classnames": "^2.3.1", + "colord": "^2.7.0", + "dom-scroll-into-view": "^1.2.1", + "downshift": "^6.0.15", + "framer-motion": "^4.1.17", + "gradient-parser": "^0.1.5", + "highlight-words-core": "^1.2.2", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "moment": "^2.22.1", + "re-resizable": "^6.4.0", + "react-colorful": "^5.3.1", + "react-dates": "^17.1.1", + "react-resize-aware": "^3.1.0", + "react-use-gesture": "^9.0.0", + "reakit": "^1.3.8", + "rememo": "^3.0.0", + "uuid": "^8.3.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "reakit-utils": "^0.15.1" + } + }, + "node_modules/@wordpress/server-side-render/node_modules/@wordpress/components/node_modules/airbnb-prop-types": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz", + "integrity": "sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg==", + "dependencies": { + "array.prototype.find": "^2.1.1", + "function.prototype.name": "^1.1.2", + "is-regex": "^1.1.0", + "object-is": "^1.1.2", + "object.assign": "^4.1.0", + "object.entries": "^1.1.2", + "prop-types": "^15.7.2", + "prop-types-exact": "^1.2.0", + "react-is": "^16.13.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "peerDependencies": { + "react": "^0.14 || ^15.0.0 || ^16.0.0-alpha" + } + }, + "node_modules/@wordpress/server-side-render/node_modules/@wordpress/components/node_modules/react": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", + "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@wordpress/server-side-render/node_modules/@wordpress/components/node_modules/react-dates": { + "version": "17.2.0", + "resolved": "https://registry.npmjs.org/react-dates/-/react-dates-17.2.0.tgz", + "integrity": "sha512-RDlerU8DdRRrlYS0MQ7Z9igPWABGLDwz6+ykBNff67RM3Sset2TDqeuOr+R5o00Ggn5U47GeLsGcSDxlZd9cHw==", + "dependencies": { + "airbnb-prop-types": "^2.10.0", + "consolidated-events": "^1.1.1 || ^2.0.0", + "is-touch-device": "^1.0.1", + "lodash": "^4.1.1", + "object.assign": "^4.1.0", + "object.values": "^1.0.4", + "prop-types": "^15.6.1", + "react-addons-shallow-compare": "^15.6.2", + "react-moment-proptypes": "^1.6.0", + "react-outside-click-handler": "^1.2.0", + "react-portal": "^4.1.5", + "react-with-styles": "^3.2.0", + "react-with-styles-interface-css": "^4.0.2" + }, + "peerDependencies": { + "moment": "^2.18.1", + "react": "^0.14 || ^15.5.4 || ^16.1.1", + "react-dom": "^0.14 || ^15.5.4 || ^16.1.1" + } + }, + "node_modules/@wordpress/server-side-render/node_modules/@wordpress/components/node_modules/react-dom": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", + "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" + }, + "peerDependencies": { + "react": "^16.14.0" + } + }, + "node_modules/@wordpress/server-side-render/node_modules/@wordpress/components/node_modules/react-outside-click-handler": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/react-outside-click-handler/-/react-outside-click-handler-1.3.0.tgz", + "integrity": "sha512-Te/7zFU0oHpAnctl//pP3hEAeobfeHMyygHB8MnjP6sX5OR8KHT1G3jmLsV3U9RnIYo+Yn+peJYWu+D5tUS8qQ==", + "dependencies": { + "airbnb-prop-types": "^2.15.0", + "consolidated-events": "^1.1.1 || ^2.0.0", + "document.contains": "^1.0.1", + "object.values": "^1.1.0", + "prop-types": "^15.7.2" + }, + "peerDependencies": { + "react": "^0.14 || >=15", + "react-dom": "^0.14 || >=15" + } + }, + "node_modules/@wordpress/server-side-render/node_modules/@wordpress/components/node_modules/react-portal": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/react-portal/-/react-portal-4.2.1.tgz", + "integrity": "sha512-fE9kOBagwmTXZ3YGRYb4gcMy+kSA+yLO0xnPankjRlfBv4uCpFXqKPfkpsGQQR15wkZ9EssnvTOl1yMzbkxhPQ==", + "dependencies": { + "prop-types": "^15.5.8" + }, + "peerDependencies": { + "react": "^15.0.0-0 || ^16.0.0-0 || ^17.0.0-0" + } + }, + "node_modules/@wordpress/server-side-render/node_modules/@wordpress/components/node_modules/react-with-direction": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/react-with-direction/-/react-with-direction-1.4.0.tgz", + "integrity": "sha512-ybHNPiAmaJpoWwugwqry9Hd1Irl2hnNXlo/2SXQBwbLn/jGMauMS2y9jw+ydyX5V9ICryCqObNSthNt5R94xpg==", + "dependencies": { + "airbnb-prop-types": "^2.16.0", + "brcast": "^2.0.2", + "deepmerge": "^1.5.2", + "direction": "^1.0.4", + "hoist-non-react-statics": "^3.3.2", + "object.assign": "^4.1.2", + "object.values": "^1.1.5", + "prop-types": "^15.7.2" + }, + "peerDependencies": { + "react": "^0.14 || ^15 || ^16", + "react-dom": "^0.14 || ^15 || ^16" + } + }, + "node_modules/@wordpress/server-side-render/node_modules/@wordpress/components/node_modules/react-with-styles": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/react-with-styles/-/react-with-styles-3.2.3.tgz", + "integrity": "sha512-MTI1UOvMHABRLj5M4WpODfwnveHaip6X7QUMI2x6zovinJiBXxzhA9AJP7MZNaKqg1JRFtHPXZdroUC8KcXwlQ==", + "dependencies": { + "hoist-non-react-statics": "^3.2.1", + "object.assign": "^4.1.0", + "prop-types": "^15.6.2", + "react-with-direction": "^1.3.0" + }, + "peerDependencies": { + "react": ">=0.14", + "react-with-direction": "^1.1.0" + } + }, + "node_modules/@wordpress/server-side-render/node_modules/@wordpress/components/node_modules/react-with-styles-interface-css": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/react-with-styles-interface-css/-/react-with-styles-interface-css-4.0.3.tgz", + "integrity": "sha512-wE43PIyjal2dexxyyx4Lhbcb+E42amoYPnkunRZkb9WTA+Z+9LagbyxwsI352NqMdFmghR0opg29dzDO4/YXbw==", + "dependencies": { + "array.prototype.flat": "^1.2.1", + "global-cache": "^1.2.1" + }, + "peerDependencies": { + "react-with-styles": "^3.0.0" + } + }, + "node_modules/@wordpress/server-side-render/node_modules/@wordpress/compose": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.0.4.tgz", + "integrity": "sha512-gRpQgsxF1AnmrJnkmJOixsTtSmimFzasiXZlm0BwhsdeJEEqVO3Mt7ua59bLPHjnUmiyDfMWY9Ongn/2cSCRKQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@types/lodash": "^4.14.172", + "@types/mousetrap": "^1.6.8", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.5", + "@wordpress/element": "^4.0.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/priority-queue": "^2.2.2", + "clipboard": "^2.0.8", + "lodash": "^4.17.21", + "mousetrap": "^1.6.5", + "react-resize-aware": "^3.1.0", + "use-memo-one": "^1.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/server-side-render/node_modules/@wordpress/data": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.1.2.tgz", + "integrity": "sha512-Ro4CGmGBgk+7gDOkoB/u/HFPjmObNTZvN1q1vb75gfHOjVmXFt6AZSialELc+AuYODZEedrvHRk7qMBPxsgTVQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@wordpress/compose": "^5.0.4", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/element": "^4.0.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/priority-queue": "^2.2.2", + "@wordpress/redux-routine": "^4.2.1", + "equivalent-key-map": "^0.2.2", + "is-promise": "^4.0.0", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "turbo-combine-reducers": "^1.0.2", + "use-memo-one": "^1.1.1" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "redux": "^4.1.0" + } + }, + "node_modules/@wordpress/server-side-render/node_modules/@wordpress/element": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.3.tgz", + "integrity": "sha512-uFL8Xx0Uq/C+nCL5aM4Fb6YVub//1wuHyQK9VDtKwYg9UBELrexSCHo1XaesYRiGUqVW0o837qC7RCP2NLUBJw==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@types/react": "^16.9.0", + "@types/react-dom": "^16.9.0", + "@wordpress/escape-html": "^2.2.2", + "lodash": "^4.17.21", + "react": "^17.0.1", + "react-dom": "^17.0.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/server-side-render/node_modules/@wordpress/icons": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@wordpress/icons/-/icons-6.0.1.tgz", + "integrity": "sha512-YAtnWquaWWM49hpoRJwaZRBTnnkwqOY0TuK8a6m0gXE2Xm3uoO/J4c6tLqKiFv3FG9Hmc/CB1WCmx+uM1TX0vw==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@wordpress/element": "^4.0.3", + "@wordpress/primitives": "^3.0.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/server-side-render/node_modules/deepmerge": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", + "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@wordpress/server-side-render/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/@wordpress/server-side-render/node_modules/scheduler": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "node_modules/@wordpress/shortcode": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@wordpress/shortcode/-/shortcode-3.2.2.tgz", + "integrity": "sha512-Im3z6C/+0IYepBg7w3m+2wyAEQfNLoWN3yQ1czNPsGHMAbELvAZjhd9S1hkJXgdyS9wQnamIQhu9wGB20qeh9A==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "lodash": "^4.17.21", + "memize": "^1.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/stylelint-config": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/@wordpress/stylelint-config/-/stylelint-config-19.1.0.tgz", + "integrity": "sha512-K/wB9rhB+pH5WvDh3fV3DN5C3Bud+jPGXmnPY8fOXKMYI3twCFozK/j6sVuaJHqGp/0kKEF0hkkGh+HhD30KGQ==", + "dev": true, + "dependencies": { + "stylelint-config-recommended": "^3.0.0", + "stylelint-config-recommended-scss": "^4.2.0", + "stylelint-scss": "^3.17.2" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "stylelint": "^13.7.0" + } + }, + "node_modules/@wordpress/token-list": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@wordpress/token-list/-/token-list-2.2.1.tgz", + "integrity": "sha512-SBFATG3F6WcnRzcuu396KhesXI36qkzq21JV653+4XOwLsSVSEVbec2cFHw5WCvrj3Oe7Sv7hRK9Ia/wBW7bzA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "lodash": "^4.17.21" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/url": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@wordpress/url/-/url-3.2.3.tgz", + "integrity": "sha512-sepFDMcshaLBEPHDuHDAsXWsrRInyOa3an3Y8OfqLFwAoMZGAKJTClx1k4DnJwRRGhjv03veTl0IqxTdMH/CiA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "lodash": "^4.17.21" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/viewport": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@wordpress/viewport/-/viewport-4.0.4.tgz", + "integrity": "sha512-vLvMpvY0PTOBToP4DqgsnmhFCbikqEhpRMPE0WhKjt8BThGqFyzXspWQNd5+Unau3mqFFMRn3apVe7yRRp8Ibg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@wordpress/compose": "^5.0.4", + "@wordpress/data": "^6.1.2", + "lodash": "^4.17.21" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/viewport/node_modules/@wordpress/compose": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.0.4.tgz", + "integrity": "sha512-gRpQgsxF1AnmrJnkmJOixsTtSmimFzasiXZlm0BwhsdeJEEqVO3Mt7ua59bLPHjnUmiyDfMWY9Ongn/2cSCRKQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@types/lodash": "^4.14.172", + "@types/mousetrap": "^1.6.8", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.5", + "@wordpress/element": "^4.0.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/priority-queue": "^2.2.2", + "clipboard": "^2.0.8", + "lodash": "^4.17.21", + "mousetrap": "^1.6.5", + "react-resize-aware": "^3.1.0", + "use-memo-one": "^1.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/viewport/node_modules/@wordpress/data": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.1.2.tgz", + "integrity": "sha512-Ro4CGmGBgk+7gDOkoB/u/HFPjmObNTZvN1q1vb75gfHOjVmXFt6AZSialELc+AuYODZEedrvHRk7qMBPxsgTVQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@wordpress/compose": "^5.0.4", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/element": "^4.0.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/priority-queue": "^2.2.2", + "@wordpress/redux-routine": "^4.2.1", + "equivalent-key-map": "^0.2.2", + "is-promise": "^4.0.0", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "turbo-combine-reducers": "^1.0.2", + "use-memo-one": "^1.1.1" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "redux": "^4.1.0" + } + }, + "node_modules/@wordpress/viewport/node_modules/@wordpress/element": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.3.tgz", + "integrity": "sha512-uFL8Xx0Uq/C+nCL5aM4Fb6YVub//1wuHyQK9VDtKwYg9UBELrexSCHo1XaesYRiGUqVW0o837qC7RCP2NLUBJw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@types/react": "^16.9.0", + "@types/react-dom": "^16.9.0", + "@wordpress/escape-html": "^2.2.2", + "lodash": "^4.17.21", + "react": "^17.0.1", + "react-dom": "^17.0.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/warning": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-2.2.2.tgz", + "integrity": "sha512-iG1Hq56RK3N6AJqAD1sRLWRIJatfYn+NrPyrfqRNZNYXHM8Vj/s7ABNMbIU0Y99vXkBE83rvCdbMkugNoI2jXA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/wordcount": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@wordpress/wordcount/-/wordcount-3.2.2.tgz", + "integrity": "sha512-lb0gpBmdbGhaVET8eUqa/PwVOlFcJc0gtsiOzUGq2GlDSqoC/ouE5dj1R9Dw68ybiD1pmEPDRArU4fF0JSNsfA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "lodash": "^4.17.21" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/abab": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "dev": true + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, + "dependencies": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true, + "peerDependencies": { + "ajv": ">=5.0.0" + } + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "dev": true + }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/argparse/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "node_modules/aria-query": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", + "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.10.2", + "@babel/runtime-corejs3": "^7.10.2" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-includes": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", + "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array.prototype.filter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array.prototype.filter/-/array.prototype.filter-1.0.1.tgz", + "integrity": "sha512-Dk3Ty7N42Odk7PjU/Ci3zT4pLj20YvuVnneG/58ICM6bt4Ij5kZaJTVQ9TSaWaIECX2sFyz4KItkVZqHNnciqw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.find": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.1.2.tgz", + "integrity": "sha512-00S1O4ewO95OmmJW7EesWfQlrCrLEL8kZ40w3+GkLX2yTt0m2ggcePPa2uHPJ9KUmJvwRq+lCV9bD8Yim23x/Q==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz", + "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz", + "integrity": "sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", + "dev": true + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true, + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/autoprefixer": { + "version": "9.8.8", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", + "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", + "dev": true, + "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" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + } + }, + "node_modules/autoprefixer/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/autoprefixer/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/autoprefixer/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/autosize": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/autosize/-/autosize-4.0.4.tgz", + "integrity": "sha512-5yxLQ22O0fCRGoxGfeLSNt3J8LB1v+umtpMnPW6XjkTWXKoN0AmXAIhelJcDtFT/Y/wYWmfE+oqU10Q0b8FhaQ==" + }, + "node_modules/axe-core": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.3.4.tgz", + "integrity": "sha512-4Hk6iSA/H90rtiPoCpSkeJxNWCPBf7szwVvaUqrPdxo0j2Y04suHK9jPKXaE3WI7OET6wBSwsWw7FDc1DBq7iQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/axios": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", + "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.10.0" + } + }, + "node_modules/axobject-query": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", + "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", + "dev": true + }, + "node_modules/babel-eslint": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", + "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", + "deprecated": "babel-eslint is now @babel/eslint-parser. This package will no longer receive updates.", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + }, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "eslint": ">= 4.12.1" + } + }, + "node_modules/babel-eslint/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/babel-jest": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-26.6.3.tgz", + "integrity": "sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==", + "dev": true, + "dependencies": { + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/babel__core": "^7.1.7", + "babel-plugin-istanbul": "^6.0.0", + "babel-preset-jest": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "slash": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/babel-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/babel-jest/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/babel-jest/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/babel-jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-loader": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.3.tgz", + "integrity": "sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw==", + "dev": true, + "dependencies": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^1.4.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "engines": { + "node": ">= 8.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" + } + }, + "node_modules/babel-loader/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/babel-loader/node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "dependencies": { + "object.assign": "^4.1.0" + } + }, + "node_modules/babel-plugin-inline-react-svg": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-inline-react-svg/-/babel-plugin-inline-react-svg-2.0.1.tgz", + "integrity": "sha512-aD4gy2G3gNVDaw97LtoixzWbaOcSEnOb4KJPe8kZedSeqxY3v71KsBs8DGmButGZtEloCRhRRuU2TpW1hIPXig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/parser": "^7.0.0", + "lodash.isplainobject": "^4.0.6", + "resolve": "^1.20.0", + "svgo": "^2.0.3" + }, + "engines": { + "node": ">=10.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz", + "integrity": "sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/babel-plugin-macros": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", + "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "cosmiconfig": "^6.0.0", + "resolve": "^1.12.0" + } + }, + "node_modules/babel-plugin-macros/node_modules/cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz", + "integrity": "sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.2.2", + "semver": "^6.1.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.5.tgz", + "integrity": "sha512-ninF5MQNwAX9Z7c9ED+H2pGt1mXdP4TqzlHKyPIYmJIYz0N+++uwdM7RnJukklhzJ54Q84vA4ZJkgs7lu5vqcw==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.2.2", + "core-js-compat": "^3.16.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz", + "integrity": "sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.2.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-transform-react-remove-prop-types": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", + "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==", + "dev": true + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@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-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz", + "integrity": "sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^26.6.2", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": ">= 10.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-runtime": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.25.0.tgz", + "integrity": "sha1-M7mOql1IK7AajRqmtDetKwGuxBw=", + "dev": true, + "dependencies": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.10.0" + } + }, + "node_modules/babel-runtime/node_modules/core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "deprecated": "core-js@<3.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.", + "dev": true, + "hasInstallScript": true + }, + "node_modules/babel-runtime/node_modules/regenerator-runtime": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", + "dev": true + }, + "node_modules/bail": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", + "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "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" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/before-after-hook": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz", + "integrity": "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==", + "dev": true + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/body": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/body/-/body-5.1.0.tgz", + "integrity": "sha1-5LoM5BCkaTYyM2dgnstOZVMSUGk=", + "dev": true, + "dependencies": { + "continuable-cache": "^0.3.1", + "error": "^7.0.0", + "raw-body": "~1.1.0", + "safe-json-parse": "~1.0.1" + } + }, + "node_modules/body-scroll-lock": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/body-scroll-lock/-/body-scroll-lock-3.1.5.tgz", + "integrity": "sha512-Yi1Xaml0EvNA0OYWxXiYNqY24AfWkbA6w5vxE7GWxtKfzIbZM+Qw+aSmkgsbWzbHiy/RCSkUZBplVxTA+E4jJg==" + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brcast": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brcast/-/brcast-2.0.2.tgz", + "integrity": "sha512-Tfn5JSE7hrUlFcOoaLzVvkbgIemIorMIyoMr3TgvszWW7jFt2C9PdeMLtysYD9RU0MmU17b69+XJG1eRY2OBRg==" + }, + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "node_modules/browserslist": { + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.5.tgz", + "integrity": "sha512-I3ekeB92mmpctWBoLXe0d5wPS2cBuRvvW0JyyJHMrk9/HmP2ZjrTboNAZ8iuGqaEIlKguljbQY32OkOJIRrgoA==", + "dependencies": { + "caniuse-lite": "^1.0.30001271", + "electron-to-chromium": "^1.3.878", + "escalade": "^3.1.1", + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz", + "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=", + "dev": true + }, + "node_modules/cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "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" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/camelcase-keys/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001272", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001272.tgz", + "integrity": "sha512-DV1j9Oot5dydyH1v28g25KoVm7l8MTxazwuiH3utWiAS6iL/9Nh//TGwqFEeqqN8nnWYQ8HHhUq+o4QPt9kvYw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/capture-exit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", + "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", + "dev": true, + "dependencies": { + "rsvp": "^4.8.4" + }, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "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" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "node_modules/check-node-version": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/check-node-version/-/check-node-version-4.1.0.tgz", + "integrity": "sha512-TSXGsyfW5/xY2QseuJn8/hleO2AU7HxVCdkc900jp1vcfzF840GkjvRT7CHl8sRtWn23n3X3k0cwH9RXeRwhfw==", + "dev": true, + "dependencies": { + "chalk": "^3.0.0", + "map-values": "^1.0.1", + "minimist": "^1.2.0", + "object-filter": "^1.0.2", + "run-parallel": "^1.1.4", + "semver": "^6.3.0" + }, + "bin": { + "check-node-version": "bin.js" + }, + "engines": { + "node": ">=8.3.0" + } + }, + "node_modules/check-node-version/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/check-node-version/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/check-node-version/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/check-node-version/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/check-node-version/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/check-node-version/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cheerio": { + "version": "1.0.0-rc.10", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz", + "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==", + "dev": true, + "dependencies": { + "cheerio-select": "^1.5.0", + "dom-serializer": "^1.3.2", + "domhandler": "^4.2.0", + "htmlparser2": "^6.1.0", + "parse5": "^6.0.1", + "parse5-htmlparser2-tree-adapter": "^6.0.1", + "tslib": "^2.2.0" + }, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.5.0.tgz", + "integrity": "sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg==", + "dev": true, + "dependencies": { + "css-select": "^4.1.3", + "css-what": "^5.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0", + "domutils": "^2.7.0" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/child_process": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/child_process/-/child_process-1.0.2.tgz", + "integrity": "sha1-sffn/HPSXn/R1FWtyU4UODAYK1o=", + "dev": true + }, + "node_modules/chokidar": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "dev": true, + "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" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", + "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", + "dev": true + }, + "node_modules/cjs-module-lexer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", + "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "dev": true, + "peer": true + }, + "node_modules/class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/classnames": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz", + "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==" + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/clean-webpack-plugin": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-3.0.0.tgz", + "integrity": "sha512-MciirUH5r+cYLGCOL5JX/ZLzOZbVr1ot3Fw+KcvbhUb6PM+yycqd9ZhIlcigQ5gl+XhppNmw3bEFuaaMNyLj3A==", + "dev": true, + "dependencies": { + "@types/webpack": "^4.4.31", + "del": "^4.1.1" + }, + "engines": { + "node": ">=8.9.0" + }, + "peerDependencies": { + "webpack": "*" + } + }, + "node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "dependencies": { + "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "dependencies": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/cli-truncate/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "dev": true + }, + "node_modules/clipboard": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.8.tgz", + "integrity": "sha512-Y6WO0unAIQp5bLmk1zdThRhgJt/x3ks6f30s3oE3H1mgIEU33XyQjEf8gsf6DxC7NPX8Y1SsNWjUjL/ywLnnbQ==", + "dependencies": { + "good-listener": "^1.2.2", + "select": "^1.1.2", + "tiny-emitter": "^2.0.0" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "peer": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "peer": true + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "peer": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/clone-deep": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.2.4.tgz", + "integrity": "sha1-TnPdCen7lxzDhnDF3O2cGJZIHMY=", + "dev": true, + "dependencies": { + "for-own": "^0.1.3", + "is-plain-object": "^2.0.1", + "kind-of": "^3.0.2", + "lazy-cache": "^1.0.3", + "shallow-clone": "^0.1.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clone-deep/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clone-regexp": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-2.2.0.tgz", + "integrity": "sha512-beMpP7BOtTipFuW8hrJvREQ2DrRu3BE7by0ZpibtfBA+qfHYvMGTc2Yb1JMYPKg/JUw0CHYvpg796aNTSW9z7Q==", + "dev": true, + "dependencies": { + "is-regexp": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clone-regexp/node_modules/is-regexp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-2.1.0.tgz", + "integrity": "sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "dev": true, + "dependencies": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, + "node_modules/collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "node_modules/colord": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.1.tgz", + "integrity": "sha512-4LBMSt09vR0uLnPVkOUBnmxgoaeN4ewRbx801wY/bXcltXfpR/G46OdWn96XpYmCWuYvO46aBZP4NgX8HpNAcw==" + }, + "node_modules/colorette": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", + "dev": true + }, + "node_modules/colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/comment-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.2.4.tgz", + "integrity": "sha512-pm0b+qv+CkWNriSTMsfnjChF9kH0kxz55y44Wo5le9qLxMj5xDQAaEd9ZN1ovSuk9CsrncWaFwgpOMg7ClJwkw==", + "dev": true, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "node_modules/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "node_modules/compute-scroll-into-view": { + "version": "1.0.17", + "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.17.tgz", + "integrity": "sha512-j4dx+Fb0URmzbwwMUrhqWM2BEWHdFGx+qZ9qqASHRPqvTYdqvWnHg0H1hIbcyLnvgnoNAVMlwkepyqM3DaIFUg==" + }, + "node_modules/computed-style": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/computed-style/-/computed-style-0.1.4.tgz", + "integrity": "sha1-fzRP2FhLLkJb7cpKGvwOMAuwXXQ=" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/consola": { + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", + "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==", + "dev": true + }, + "node_modules/consolidated-events": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/consolidated-events/-/consolidated-events-2.0.2.tgz", + "integrity": "sha512-2/uRVMdRypf5z/TW/ncD/66l75P5hH2vM/GR8Jf8HLc2xnfJtmina6F6du8+v4Z2vTrMo7jC+W1tmEEuuELgkQ==" + }, + "node_modules/continuable-cache": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/continuable-cache/-/continuable-cache-0.3.1.tgz", + "integrity": "sha1-vXJ6f67XfnH/OYWskzUakSczrQ8=", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/copy-webpack-plugin": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-9.0.1.tgz", + "integrity": "sha512-14gHKKdYIxF84jCEgPgYXCPpldbwpxxLbCmA7LReY7gvbaT555DgeBWBgBZM116tv/fO6RRJrsivBqRyRlukhw==", + "dev": true, + "dependencies": { + "fast-glob": "^3.2.5", + "glob-parent": "^6.0.0", + "globby": "^11.0.3", + "normalize-path": "^3.0.0", + "p-limit": "^3.1.0", + "schema-utils": "^3.0.0", + "serialize-javascript": "^6.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/core-js": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.19.0.tgz", + "integrity": "sha512-L1TpFRWXZ76vH1yLM+z6KssLZrP8Z6GxxW4auoCj+XiViOzNPJCAuTIkn03BGdFe6Z5clX5t64wRIRypsZQrUg==", + "dev": true, + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.0.tgz", + "integrity": "sha512-R09rKZ56ccGBebjTLZHvzDxhz93YPT37gBm6qUhnwj3Kt7aCjjZWD1injyNbyeFHxNKfeZBSyds6O9n3MKq1sw==", + "dev": true, + "dependencies": { + "browserslist": "^4.17.5", + "semver": "7.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/core-js-pure": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.19.0.tgz", + "integrity": "sha512-UEQk8AxyCYvNAs6baNoPqDADv7BX0AmBLGxVsrAifPPx/C8EAzV4Q+2ZUJqVzfI2TQQEZITnwUkWcHpgc/IubQ==", + "dev": true, + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "dev": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/cross-env/node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cross-env/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cross-env/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cross-env/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cross-env/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "dependencies": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "node_modules/css-blank-pseudo": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz", + "integrity": "sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w==", + "dev": true, + "dependencies": { + "postcss": "^7.0.5" + }, + "bin": { + "css-blank-pseudo": "cli.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/css-blank-pseudo/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/css-blank-pseudo/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/css-blank-pseudo/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/css-color-names": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-1.0.1.tgz", + "integrity": "sha512-/loXYOch1qU1biStIFsHH8SxTmOseh1IJqFvy8IujXOm1h+QjUdDhkzOrR5HG8K8mlxREj0yfi8ewCHx0eMxzA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/css-has-pseudo": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz", + "integrity": "sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ==", + "dev": true, + "dependencies": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^5.0.0-rc.4" + }, + "bin": { + "css-has-pseudo": "cli.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/css-has-pseudo/node_modules/cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/css-has-pseudo/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/css-has-pseudo/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/css-has-pseudo/node_modules/postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "dev": true, + "dependencies": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/css-has-pseudo/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/css-loader": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.5.0.tgz", + "integrity": "sha512-VmuSdQa3K+wJsl39i7X3qGBM5+ZHmtTnv65fqMGI+fzmHoYmszTVvTqC1XN8JwWDViCB1a8wgNim5SV4fb37xg==", + "dev": true, + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.2.15", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.1.0", + "semver": "^7.3.5" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/css-loader/node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/css-loader/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/css-loader/node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/css-loader/node_modules/postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/css-loader/node_modules/postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/css-loader/node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/css-loader/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/css-loader/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/css-mediaquery": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/css-mediaquery/-/css-mediaquery-0.1.2.tgz", + "integrity": "sha1-aiw3NEkoYYYxxUvTPO3TAdoYvqA=" + }, + "node_modules/css-minimizer-webpack-plugin": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.1.1.tgz", + "integrity": "sha512-KlB8l5uoNcf9F7i5kXnkxoqJGd2BXH4f0+Lj2vSWSmuvMLYO1kNsJ1KHSzeDW8e45/whgSOPcKVT/3JopkT8dg==", + "dev": true, + "dependencies": { + "cssnano": "^5.0.6", + "jest-worker": "^27.0.2", + "p-limit": "^3.0.2", + "postcss": "^8.3.5", + "schema-utils": "^3.1.0", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "clean-css": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/css-declaration-sorter": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.1.3.tgz", + "integrity": "sha512-SvjQjNRZgh4ULK1LDJ2AduPKUKxIqmtU7ZAyi47BTV+M90Qvxr9AB6lKlLbDUfXqI9IQeYA8LbAsCZPpJEV3aA==", + "dev": true, + "dependencies": { + "timsort": "^0.3.0" + }, + "engines": { + "node": ">= 10" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/cssnano": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.0.8.tgz", + "integrity": "sha512-Lda7geZU0Yu+RZi2SGpjYuQz4HI4/1Y+BhdD0jL7NXAQ5larCzVn+PUGuZbDMYz904AXXCOgO5L1teSvgu7aFg==", + "dev": true, + "dependencies": { + "cssnano-preset-default": "^5.1.4", + "is-resolvable": "^1.1.0", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/cssnano-preset-default": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.1.4.tgz", + "integrity": "sha512-sPpQNDQBI3R/QsYxQvfB4mXeEcWuw0wGtKtmS5eg8wudyStYMgKOQT39G07EbW1LB56AOYrinRS9f0ig4Y3MhQ==", + "dev": true, + "dependencies": { + "css-declaration-sorter": "^6.0.3", + "cssnano-utils": "^2.0.1", + "postcss-calc": "^8.0.0", + "postcss-colormin": "^5.2.0", + "postcss-convert-values": "^5.0.1", + "postcss-discard-comments": "^5.0.1", + "postcss-discard-duplicates": "^5.0.1", + "postcss-discard-empty": "^5.0.1", + "postcss-discard-overridden": "^5.0.1", + "postcss-merge-longhand": "^5.0.2", + "postcss-merge-rules": "^5.0.2", + "postcss-minify-font-values": "^5.0.1", + "postcss-minify-gradients": "^5.0.2", + "postcss-minify-params": "^5.0.1", + "postcss-minify-selectors": "^5.1.0", + "postcss-normalize-charset": "^5.0.1", + "postcss-normalize-display-values": "^5.0.1", + "postcss-normalize-positions": "^5.0.1", + "postcss-normalize-repeat-style": "^5.0.1", + "postcss-normalize-string": "^5.0.1", + "postcss-normalize-timing-functions": "^5.0.1", + "postcss-normalize-unicode": "^5.0.1", + "postcss-normalize-url": "^5.0.2", + "postcss-normalize-whitespace": "^5.0.1", + "postcss-ordered-values": "^5.0.2", + "postcss-reduce-initial": "^5.0.1", + "postcss-reduce-transforms": "^5.0.1", + "postcss-svgo": "^5.0.2", + "postcss-unique-selectors": "^5.0.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/cssnano-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-2.0.1.tgz", + "integrity": "sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-calc": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.0.0.tgz", + "integrity": "sha512-5NglwDrcbiy8XXfPM11F3HeC6hoT9W7GUH/Zi5U/p7u3Irv4rHhdDcIZwG0llHXV4ftsBjpfWMXAnXNl4lnt8g==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + }, + "peerDependencies": { + "postcss": "^8.2.2" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-colormin": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.0.tgz", + "integrity": "sha512-+HC6GfWU3upe5/mqmxuqYZ9B2Wl4lcoUUNkoaX59nEWV4EtADCMiBqui111Bu8R8IvaZTmqmxrqOAqjbHIwXPw==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "colord": "^2.0.1", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-convert-values": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.1.tgz", + "integrity": "sha512-C3zR1Do2BkKkCgC0g3sF8TS0koF2G+mN8xxayZx3f10cIRmTaAnpgpRQZjNekTZxM2ciSPoh2IWJm0VZx8NoQg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-discard-comments": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz", + "integrity": "sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-discard-duplicates": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz", + "integrity": "sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-discard-empty": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz", + "integrity": "sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-discard-overridden": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz", + "integrity": "sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-merge-longhand": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.0.2.tgz", + "integrity": "sha512-BMlg9AXSI5G9TBT0Lo/H3PfUy63P84rVz3BjCFE9e9Y9RXQZD3+h3YO1kgTNsNJy7bBc1YQp8DmSnwLIW5VPcw==", + "dev": true, + "dependencies": { + "css-color-names": "^1.0.1", + "postcss-value-parser": "^4.1.0", + "stylehacks": "^5.0.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-merge-rules": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.0.2.tgz", + "integrity": "sha512-5K+Md7S3GwBewfB4rjDeol6V/RZ8S+v4B66Zk2gChRqLTCC8yjnHQ601omj9TKftS19OPGqZ/XzoqpzNQQLwbg==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^2.0.1", + "postcss-selector-parser": "^6.0.5", + "vendors": "^1.0.3" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-minify-font-values": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.0.1.tgz", + "integrity": "sha512-7JS4qIsnqaxk+FXY1E8dHBDmraYFWmuL6cgt0T1SWGRO5bzJf8sUoelwa4P88LEWJZweHevAiDKxHlofuvtIoA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-minify-gradients": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.2.tgz", + "integrity": "sha512-7Do9JP+wqSD6Prittitt2zDLrfzP9pqKs2EcLX7HJYxsxCOwrrcLt4x/ctQTsiOw+/8HYotAoqNkrzItL19SdQ==", + "dev": true, + "dependencies": { + "colord": "^2.6", + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-minify-params": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.0.1.tgz", + "integrity": "sha512-4RUC4k2A/Q9mGco1Z8ODc7h+A0z7L7X2ypO1B6V8057eVK6mZ6xwz6QN64nHuHLbqbclkX1wyzRnIrdZehTEHw==", + "dev": true, + "dependencies": { + "alphanum-sort": "^1.0.2", + "browserslist": "^4.16.0", + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0", + "uniqs": "^2.0.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-minify-selectors": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.1.0.tgz", + "integrity": "sha512-NzGBXDa7aPsAcijXZeagnJBKBPMYLaJJzB8CQh6ncvyl2sIndLVWfbcDi0SBjRWk5VqEjXvf8tYwzoKf4Z07og==", + "dev": true, + "dependencies": { + "alphanum-sort": "^1.0.2", + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-normalize-charset": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz", + "integrity": "sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-normalize-display-values": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.1.tgz", + "integrity": "sha512-uupdvWk88kLDXi5HEyI9IaAJTE3/Djbcrqq8YgjvAVuzgVuqIk3SuJWUisT2gaJbZm1H9g5k2w1xXilM3x8DjQ==", + "dev": true, + "dependencies": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-normalize-positions": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.0.1.tgz", + "integrity": "sha512-rvzWAJai5xej9yWqlCb1OWLd9JjW2Ex2BCPzUJrbaXmtKtgfL8dBMOOMTX6TnvQMtjk3ei1Lswcs78qKO1Skrg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-normalize-repeat-style": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.1.tgz", + "integrity": "sha512-syZ2itq0HTQjj4QtXZOeefomckiV5TaUO6ReIEabCh3wgDs4Mr01pkif0MeVwKyU/LHEkPJnpwFKRxqWA/7O3w==", + "dev": true, + "dependencies": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-normalize-string": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.0.1.tgz", + "integrity": "sha512-Ic8GaQ3jPMVl1OEn2U//2pm93AXUcF3wz+OriskdZ1AOuYV25OdgS7w9Xu2LO5cGyhHCgn8dMXh9bO7vi3i9pA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-normalize-timing-functions": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.1.tgz", + "integrity": "sha512-cPcBdVN5OsWCNEo5hiXfLUnXfTGtSFiBU9SK8k7ii8UD7OLuznzgNRYkLZow11BkQiiqMcgPyh4ZqXEEUrtQ1Q==", + "dev": true, + "dependencies": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-normalize-unicode": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.1.tgz", + "integrity": "sha512-kAtYD6V3pK0beqrU90gpCQB7g6AOfP/2KIPCVBKJM2EheVsBQmx/Iof+9zR9NFKLAx4Pr9mDhogB27pmn354nA==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.0", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-normalize-url": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.2.tgz", + "integrity": "sha512-k4jLTPUxREQ5bpajFQZpx8bCF2UrlqOTzP9kEqcEnOfwsRshWs2+oAFIHfDQB8GO2PaUaSE0NlTAYtbluZTlHQ==", + "dev": true, + "dependencies": { + "is-absolute-url": "^3.0.3", + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-normalize-whitespace": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.1.tgz", + "integrity": "sha512-iPklmI5SBnRvwceb/XH568yyzK0qRVuAG+a1HFUsFRf11lEJTiQQa03a4RSCQvLKdcpX7XsI1Gen9LuLoqwiqA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-ordered-values": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.0.2.tgz", + "integrity": "sha512-8AFYDSOYWebJYLyJi3fyjl6CqMEG/UVworjiyK1r573I56kb3e879sCJLGvR3merj+fAdPpVplXKQZv+ey6CgQ==", + "dev": true, + "dependencies": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-reduce-initial": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.0.1.tgz", + "integrity": "sha512-zlCZPKLLTMAqA3ZWH57HlbCjkD55LX9dsRyxlls+wfuRfqCi5mSlZVan0heX5cHr154Dq9AfbH70LyhrSAezJw==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.0", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-reduce-transforms": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.1.tgz", + "integrity": "sha512-a//FjoPeFkRuAguPscTVmRQUODP+f3ke2HqFNgGPwdYnpeC29RZdCBvGRGTsKpMURb/I3p6jdKoBQ2zI+9Q7kA==", + "dev": true, + "dependencies": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-svgo": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.0.2.tgz", + "integrity": "sha512-YzQuFLZu3U3aheizD+B1joQ94vzPfE6BNUcSYuceNxlVnKKsOtdo6hL9/zyC168Q8EwfLSgaDSalsUGa9f2C0A==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.1.0", + "svgo": "^2.3.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-unique-selectors": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.0.1.tgz", + "integrity": "sha512-gwi1NhHV4FMmPn+qwBNuot1sG1t2OmacLQ/AX29lzyggnjd+MnVD5uqQmpXO3J17KGL2WAxQruj1qTd3H0gG/w==", + "dev": true, + "dependencies": { + "alphanum-sort": "^1.0.2", + "postcss-selector-parser": "^6.0.5", + "uniqs": "^2.0.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/stylehacks": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.0.1.tgz", + "integrity": "sha512-Es0rVnHIqbWzveU1b24kbw92HsebBepxfcqe5iix7t9j0PQqhs0IxXVXv0pY2Bxa08CgMkzD6OWql7kbGOuEdA==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.0", + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/css-prefers-color-scheme": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz", + "integrity": "sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg==", + "dev": true, + "dependencies": { + "postcss": "^7.0.5" + }, + "bin": { + "css-prefers-color-scheme": "cli.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/css-prefers-color-scheme/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/css-prefers-color-scheme/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/css-prefers-color-scheme/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/css-select": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", + "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^5.0.0", + "domhandler": "^4.2.0", + "domutils": "^2.6.0", + "nth-check": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", + "dev": true + }, + "node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-tree/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/css-what": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", + "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssdb": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-4.4.0.tgz", + "integrity": "sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ==", + "dev": true + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "node_modules/csstype": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.9.tgz", + "integrity": "sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw==" + }, + "node_modules/cwd": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/cwd/-/cwd-0.10.0.tgz", + "integrity": "sha1-FyQAaUBXwioTsM8WFix+S3p/5Wc=", + "dev": true, + "dependencies": { + "find-pkg": "^0.1.2", + "fs-exists-sync": "^0.1.0" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz", + "integrity": "sha512-VvdQIPGdWP0SqFXghj79Wf/5LArmreyMsGLa6FG6iC4t3j7j5s71TrwWmT/4akbDQIqjfACkLZmjXhA7g2oUZw==", + "dev": true + }, + "node_modules/data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, + "dependencies": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "dev": true, + "dependencies": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decimal.js": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", + "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", + "dev": true + }, + "node_modules/decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "dev": true + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dev": true, + "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" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/del/node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del/node_modules/globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "dependencies": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del/node_modules/globby/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegate": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", + "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==" + }, + "node_modules/deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true + }, + "node_modules/detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/devtools-protocol": { + "version": "0.0.901419", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.901419.tgz", + "integrity": "sha512-4INMPwNm9XRpBukhNbF7OB6fNTTCaI8pzy/fXg0xQzAy5h3zL1P8xT3QazgKqBrb/hAYwIBizqDBZ7GtJE74QQ==", + "dev": true + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/diff-sequences": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", + "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", + "dev": true, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/direction": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/direction/-/direction-1.0.4.tgz", + "integrity": "sha512-GYqKi1aH7PJXxdhTeZBFrg8vUBeKXi+cNprXsC1kpJcbcVnV9wBsrOu1cQEdG0WeQwlfHiy3XvnKfIrJ2R0NzQ==", + "bin": { + "direction": "cli.js" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/discontinuous-range": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz", + "integrity": "sha1-44Mx8IRLukm5qctxx3FYWqsbxlo=", + "dev": true + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/document.contains": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/document.contains/-/document.contains-1.0.2.tgz", + "integrity": "sha512-YcvYFs15mX8m3AO1QNQy3BlIpSMfNRj3Ujk2BEJxsZG+HZf7/hZ6jr7mDpXrF8q+ff95Vef5yjhiZxm8CGJr6Q==", + "dependencies": { + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/dom-scroll-into-view": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/dom-scroll-into-view/-/dom-scroll-into-view-1.2.1.tgz", + "integrity": "sha1-6PNnMt0ImwIBqI14Fdw/iObWbH4=" + }, + "node_modules/dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "dev": true, + "dependencies": { + "webidl-conversions": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/domexception/node_modules/webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/domhandler": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz", + "integrity": "sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/downshift": { + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/downshift/-/downshift-6.1.7.tgz", + "integrity": "sha512-cVprZg/9Lvj/uhYRxELzlu1aezRcgPWBjTvspiGTVEU64gF5pRdSRKFVLcxqsZC637cLAGMbL40JavEfWnqgNg==", + "dependencies": { + "@babel/runtime": "^7.14.8", + "compute-scroll-into-view": "^1.0.17", + "prop-types": "^15.7.2", + "react-is": "^17.0.2", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "react": ">=16.12.0" + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.3.884", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.884.tgz", + "integrity": "sha512-kOaCAa+biA98PwH5BpCkeUeTL6mCeg8p3Q3OhqzPyqhu/5QUnWAN2wr/3IK8xMQxIV76kfoQpP+Bn/wij/jXrg==" + }, + "node_modules/emittery": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", + "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz", + "integrity": "sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/enzyme": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/enzyme/-/enzyme-3.11.0.tgz", + "integrity": "sha512-Dw8/Gs4vRjxY6/6i9wU0V+utmQO9kvh9XLnz3LIudviOnVYDEe2ec+0k+NQoMamn1VrjKgCUOWj5jG/5M5M0Qw==", + "dev": true, + "dependencies": { + "array.prototype.flat": "^1.2.3", + "cheerio": "^1.0.0-rc.3", + "enzyme-shallow-equal": "^1.0.1", + "function.prototype.name": "^1.1.2", + "has": "^1.0.3", + "html-element-map": "^1.2.0", + "is-boolean-object": "^1.0.1", + "is-callable": "^1.1.5", + "is-number-object": "^1.0.4", + "is-regex": "^1.0.5", + "is-string": "^1.0.5", + "is-subset": "^0.1.1", + "lodash.escape": "^4.0.1", + "lodash.isequal": "^4.5.0", + "object-inspect": "^1.7.0", + "object-is": "^1.0.2", + "object.assign": "^4.1.0", + "object.entries": "^1.1.1", + "object.values": "^1.1.1", + "raf": "^3.4.1", + "rst-selector-parser": "^2.2.3", + "string.prototype.trim": "^1.2.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/enzyme-shallow-equal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.4.tgz", + "integrity": "sha512-MttIwB8kKxypwHvRynuC3ahyNc+cFbR8mjVIltnmzQ0uKGqmsfO4bfBuLxb0beLNPhjblUEYvEbsg+VSygvF1Q==", + "dev": true, + "dependencies": { + "has": "^1.0.3", + "object-is": "^1.1.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/enzyme-to-json": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/enzyme-to-json/-/enzyme-to-json-3.6.2.tgz", + "integrity": "sha512-Ynm6Z6R6iwQ0g2g1YToz6DWhxVnt8Dy1ijR2zynRKxTyBGA8rCDXU3rs2Qc4OKvUvc2Qoe1bcFK6bnPs20TrTg==", + "dev": true, + "dependencies": { + "@types/cheerio": "^0.22.22", + "lodash": "^4.17.21", + "react-is": "^16.12.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "peerDependencies": { + "enzyme": "^3.4.0" + } + }, + "node_modules/enzyme-to-json/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "node_modules/equivalent-key-map": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/equivalent-key-map/-/equivalent-key-map-0.2.2.tgz", + "integrity": "sha512-xvHeyCDbZzkpN4VHQj/n+j2lOwL0VWszG30X4cOrc9Y7Tuo2qCdZK/0AMod23Z5dCtNUbaju6p0rwOhHUk05ew==" + }, + "node_modules/error": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/error/-/error-7.2.1.tgz", + "integrity": "sha512-fo9HBvWnx3NGUKMvMwB/CBCMMrfEJgbDTVDEkPygA3Bdd3lM1OyCd+rbQ8BwnpF6GdVeOLDNmyL4N5Bg80ZvdA==", + "dev": true, + "dependencies": { + "string-template": "~0.2.1" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", + "dev": true + }, + "node_modules/es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "dev": true, + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/escodegen/node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint": { + "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-7.2.0.tgz", + "integrity": "sha512-rV4Qu0C3nfJKPOAhFujFxB7RMP+URFyQqqOZW9DMRD7ZDTFyjaIlETU3xzHELt++4ugC0+Jm084HQYkkJe+Ivg==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", + "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "resolve": "^1.20.0" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.1.tgz", + "integrity": "sha512-fjoetBXQZq2tSTWZ9yWVl2KuFrTZZH3V+9iD1V1RfpDgxzJR+mPd/KZmMiA8gbPqdBzpNiEHOuT7IYEWxrH0zQ==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "find-up": "^2.1.0", + "pkg-dir": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-eslint-comments": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.2.0.tgz", + "integrity": "sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5", + "ignore": "^5.0.5" + }, + "engines": { + "node": ">=6.5.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" + } + }, + "node_modules/eslint-plugin-eslint-comments/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.24.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.24.2.tgz", + "integrity": "sha512-hNVtyhiEtZmpsabL4neEj+6M5DCLgpYyG9nzJY8lZQeQXEn5UPW1DpUdsMHMXsq98dbNm7nt1w9ZMSVpfJdi8Q==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.3", + "array.prototype.flat": "^1.2.4", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.6.2", + "find-up": "^2.0.0", + "has": "^1.0.3", + "is-core-module": "^2.6.0", + "minimatch": "^3.0.4", + "object.values": "^1.1.4", + "pkg-up": "^2.0.0", + "read-pkg-up": "^3.0.0", + "resolve": "^1.20.0", + "tsconfig-paths": "^3.11.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-import/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-import/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/eslint-plugin-import/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-import/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-import/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-import/node_modules/read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "dev": true, + "dependencies": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-jest": { + "version": "24.5.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-24.5.0.tgz", + "integrity": "sha512-Cm+XdX7Nms2UXGRnivHFVcM3ZmlKheHvc9VD78iZLO1XcqB59WbVjrMSiesCbHDlToxWjMJDiJMgc1CzFE13Vg==", + "dev": true, + "dependencies": { + "@typescript-eslint/experimental-utils": "^4.0.1" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": ">= 4", + "eslint": ">=5" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-jsdoc": { + "version": "36.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-36.1.1.tgz", + "integrity": "sha512-nuLDvH1EJaKx0PCa9oeQIxH6pACIhZd1gkalTUxZbaxxwokjs7TplqY0Q8Ew3CoZaf5aowm0g/Z3JGHCatt+gQ==", + "dev": true, + "dependencies": { + "@es-joy/jsdoccomment": "0.10.8", + "comment-parser": "1.2.4", + "debug": "^4.3.2", + "esquery": "^1.4.0", + "jsdoc-type-pratt-parser": "^1.1.1", + "lodash": "^4.17.21", + "regextras": "^0.8.0", + "semver": "^7.3.5", + "spdx-expression-parse": "^3.0.1" + }, + "engines": { + "node": "^12 || ^14 || ^16" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0" + } + }, + "node_modules/eslint-plugin-jsdoc/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-plugin-jsdoc/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-plugin-jsdoc/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz", + "integrity": "sha512-0rGPJBbwHoGNPU73/QCLP/vveMlM1b1Z9PponxO87jfr6tuH5ligXbDT6nHSSzBC8ovX2Z+BQu7Bk5D/Xgq9zg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.11.2", + "aria-query": "^4.2.2", + "array-includes": "^3.1.1", + "ast-types-flow": "^0.0.7", + "axe-core": "^4.0.2", + "axobject-query": "^2.2.0", + "damerau-levenshtein": "^1.0.6", + "emoji-regex": "^9.0.0", + "has": "^1.0.3", + "jsx-ast-utils": "^3.1.0", + "language-tags": "^1.0.5" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7" + } + }, + "node_modules/eslint-plugin-markdown": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-markdown/-/eslint-plugin-markdown-2.2.1.tgz", + "integrity": "sha512-FgWp4iyYvTFxPwfbxofTvXxgzPsDuSKHQy2S+a8Ve6savbujey+lgrFFbXQA0HPygISpRYWYBjooPzhYSF81iA==", + "dev": true, + "dependencies": { + "mdast-util-from-markdown": "^0.8.5" + }, + "engines": { + "node": "^8.10.0 || ^10.12.0 || >= 12.0.0" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz", + "integrity": "sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "peerDependencies": { + "eslint": ">=5.0.0", + "prettier": ">=1.13.0" + }, + "peerDependenciesMeta": { + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.26.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.26.1.tgz", + "integrity": "sha512-Lug0+NOFXeOE+ORZ5pbsh6mSKjBKXDXItUD2sQoT+5Yl0eoT82DqnXeTMfUare4QVCn9QwXbfzO/dBLjLXwVjQ==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.3", + "array.prototype.flatmap": "^1.2.4", + "doctrine": "^2.1.0", + "estraverse": "^5.2.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.0.4", + "object.entries": "^1.1.4", + "object.fromentries": "^2.0.4", + "object.hasown": "^1.0.0", + "object.values": "^1.1.4", + "prop-types": "^15.7.2", + "resolve": "^2.0.0-next.3", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.5" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.2.0.tgz", + "integrity": "sha512-623WEiZJqxR7VdxFCKLI6d6LLpwJkGPYKODnkH3D7WpOG5KM8yWueBd8TLsNAetEJNF5iJmolaAKO3F8yzyVBQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.3", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", + "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", + "dev": true, + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-scope/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/eslint/node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", + "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/eslint/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/eslint/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/esm": { + "version": "3.2.25", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", + "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "dependencies": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eventemitter2": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", + "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=", + "dev": true + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/exec-sh": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz", + "integrity": "sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==", + "dev": true + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/execa/node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/execa/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/execa/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/execa/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/execa/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/execa/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/execall": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/execall/-/execall-2.0.0.tgz", + "integrity": "sha512-0FU2hZ5Hh6iQnarpRtQurM/aAvp3RIbfvgLHrcqJYzhXyV2KFruhuChf9NC6waAhiUR7FFtlugkI4p7f2Fqlow==", + "dev": true, + "dependencies": { + "clone-regexp": "^2.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "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" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expect": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz", + "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-styles": "^4.0.0", + "jest-get-type": "^26.3.0", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-regex-util": "^26.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/expect-puppeteer": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/expect-puppeteer/-/expect-puppeteer-4.4.0.tgz", + "integrity": "sha512-6Ey4Xy2xvmuQu7z7YQtMsaMV0EHJRpVxIDOd5GRrm04/I3nkTKIutELfECsLp6le+b3SSa3cXhPiw6PgqzxYWA==", + "dev": true + }, + "node_modules/expect/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/expect/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/expect/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/expect/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/expect/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/expect/node_modules/jest-message-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", + "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2", + "slash": "^3.0.0", + "stack-utils": "^2.0.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/expect/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extend-shallow/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extend-shallow/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/external-editor/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "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" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/extract-zip/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fast-average-color": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/fast-average-color/-/fast-average-color-4.3.0.tgz", + "integrity": "sha512-k8FXd6+JeXoItmdNqB3hMwFgArryjdYBLuzEM8fRY/oztd/051yhSHU6GUrMOfIQU9dDHyFDcIAkGrQKlYtpDA==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "node_modules/fast-memoize": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz", + "integrity": "sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==" + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "dev": true, + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "dev": true, + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/file-sync-cmp": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz", + "integrity": "sha1-peeo/7+kk7Q7kju9TKiaU7Y7YSs=", + "dev": true + }, + "node_modules/filename-reserved-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", + "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/filenamify": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz", + "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==", + "dev": true, + "dependencies": { + "filename-reserved-regex": "^2.0.0", + "strip-outer": "^1.0.1", + "trim-repeated": "^1.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/find-cache-dir/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-file-up": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/find-file-up/-/find-file-up-0.1.3.tgz", + "integrity": "sha1-z2gJG8+fMApA2kEbN9pczlovvqA=", + "dev": true, + "dependencies": { + "fs-exists-sync": "^0.1.0", + "resolve-dir": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/find-parent-dir": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.1.tgz", + "integrity": "sha512-o4UcykWV/XN9wm+jMEtWLPlV8RXCZnMhQI6F6OdHeSez7iiJWePw8ijOlskJZMsaQoGR/b7dH6lO02HhaTN7+A==", + "dev": true + }, + "node_modules/find-pkg": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/find-pkg/-/find-pkg-0.1.2.tgz", + "integrity": "sha1-G9wiwG42NlUy4qJIBGhUuXiNpVc=", + "dev": true, + "dependencies": { + "find-file-up": "^0.1.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/find-process": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/find-process/-/find-process-1.4.5.tgz", + "integrity": "sha512-v11rJYYISUWn+s8qZzgGnBvlzRKf3bOtlGFM8H0kw56lGQtOmLuLCzuclA5kehA2j7S5sioOWdI4woT3jDavAw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "commander": "^5.1.0", + "debug": "^4.1.1" + }, + "bin": { + "find-process": "bin/find-process.js" + } + }, + "node_modules/find-process/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/find-process/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/find-process/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/find-process/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/find-process/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-process/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/findup-sync": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", + "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", + "dev": true, + "dependencies": { + "glob": "~5.0.0" + }, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/findup-sync/node_modules/glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "dependencies": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/fined": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", + "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/fined/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/flagged-respawn": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", + "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flat-cache/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/flatted": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", + "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", + "dev": true + }, + "node_modules/flatten": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", + "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==", + "deprecated": "flatten is deprecated in favor of utility frameworks such as lodash.", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.14.4", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz", + "integrity": "sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "dependencies": { + "for-in": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fraction.js": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.1.tgz", + "integrity": "sha512-MHOhvvxHTfRFpF1geTK9czMIZ6xclsEor2wkIGYYq+PxcQqT7vStJqjhe6S1TenZrMZzo+wlqOufBDVepUEgPg==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://www.patreon.com/infusion" + } + }, + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "dependencies": { + "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/framer-motion": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-4.1.17.tgz", + "integrity": "sha512-thx1wvKzblzbs0XaK2X0G1JuwIdARcoNOW7VVwjO8BUltzXPyONGAElLu6CiCScsOQRI7FIk/45YTFtJw5Yozw==", + "dependencies": { + "framesync": "5.3.0", + "hey-listen": "^1.0.8", + "popmotion": "9.3.6", + "style-value-types": "4.1.4", + "tslib": "^2.1.0" + }, + "optionalDependencies": { + "@emotion/is-prop-valid": "^0.8.2" + }, + "peerDependencies": { + "react": ">=16.8 || ^17.0.0", + "react-dom": ">=16.8 || ^17.0.0" + } + }, + "node_modules/framer-motion/node_modules/@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "optional": true, + "dependencies": { + "@emotion/memoize": "0.7.4" + } + }, + "node_modules/framer-motion/node_modules/@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "optional": true + }, + "node_modules/framesync": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/framesync/-/framesync-5.3.0.tgz", + "integrity": "sha512-oc5m68HDO/tuK2blj7ZcdEBRx3p1PjrgHazL8GYEpvULhrtGIFbQArN6cQS2QhW8mitffaB+VYzMjDqBxxQeoA==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/fs": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", + "integrity": "sha1-invTcYa23d84E/I4WLV+yq9eQdQ=", + "dev": true + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "node_modules/fs-exists-sync": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", + "integrity": "sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "node_modules/functions-have-names": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.2.tgz", + "integrity": "sha512-bLgc3asbWdwPbx2mNk2S49kmJCuQeu0nfmaOgbs8WIyzzkw3r4htszdIi9Q9EMezDPTYuJx2wvjZ/EwgAthpnA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", + "dev": true + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stdin": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", + "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/getobject": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/getobject/-/getobject-1.0.2.tgz", + "integrity": "sha512-2zblDBaFcb3rB4rF77XVnuINOE2h2k/OnqXAiy0IrTxUfV1iFp3la33oAQVY9pCpWU268WFYVt2t71hlMuLsOg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/gettext-parser": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/gettext-parser/-/gettext-parser-1.4.0.tgz", + "integrity": "sha512-sedZYLHlHeBop/gZ1jdg59hlUEcpcZJofLq2JFwJT1zTqAU3l2wFv6IsuwFHGqbiT9DWzMUW4/em2+hspnmMMA==", + "dependencies": { + "encoding": "^0.1.12", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/global-cache": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/global-cache/-/global-cache-1.2.1.tgz", + "integrity": "sha512-EOeUaup5DgWKlCMhA9YFqNRIlZwoxt731jCh47WBV9fQqHgXhr3Fa55hfgIUqilIcPsfdNKN7LHjrNY+Km40KA==", + "dependencies": { + "define-properties": "^1.1.2", + "is-symbol": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/global-modules": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz", + "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=", + "dev": true, + "dependencies": { + "global-prefix": "^0.1.4", + "is-windows": "^0.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-modules/node_modules/is-windows": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", + "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-prefix": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", + "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=", + "dev": true, + "dependencies": { + "homedir-polyfill": "^1.0.0", + "ini": "^1.3.4", + "is-windows": "^0.2.0", + "which": "^1.2.12" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-prefix/node_modules/is-windows": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", + "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globjoin": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", + "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=", + "dev": true + }, + "node_modules/gonzales-pe": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.3.0.tgz", + "integrity": "sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "gonzales": "bin/gonzales.js" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/good-listener": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", + "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=", + "dependencies": { + "delegate": "^3.1.2" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "dev": true + }, + "node_modules/gradient-parser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/gradient-parser/-/gradient-parser-0.1.5.tgz", + "integrity": "sha1-DH4heVWeXOfY1x9EI6+TcQCyJIw=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "dev": true, + "optional": true + }, + "node_modules/grunt": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.4.1.tgz", + "integrity": "sha512-ZXIYXTsAVrA7sM+jZxjQdrBOAg7DyMUplOMhTaspMRExei+fD0BTwdWXnn0W5SXqhb/Q/nlkzXclSi3IH55PIA==", + "dev": true, + "dependencies": { + "dateformat": "~3.0.3", + "eventemitter2": "~0.4.13", + "exit": "~0.1.2", + "findup-sync": "~0.3.0", + "glob": "~7.1.6", + "grunt-cli": "~1.4.2", + "grunt-known-options": "~2.0.0", + "grunt-legacy-log": "~3.0.0", + "grunt-legacy-util": "~2.0.1", + "iconv-lite": "~0.4.13", + "js-yaml": "~3.14.0", + "minimatch": "~3.0.4", + "mkdirp": "~1.0.4", + "nopt": "~3.0.6", + "rimraf": "~3.0.2" + }, + "bin": { + "grunt": "bin/grunt" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/grunt-cli": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.4.3.tgz", + "integrity": "sha512-9Dtx/AhVeB4LYzsViCjUQkd0Kw0McN2gYpdmGYKtE2a5Yt7v1Q+HYZVWhqXc/kGnxlMtqKDxSwotiGeFmkrCoQ==", + "dev": true, + "dependencies": { + "grunt-known-options": "~2.0.0", + "interpret": "~1.1.0", + "liftup": "~3.0.1", + "nopt": "~4.0.1", + "v8flags": "~3.2.0" + }, + "bin": { + "grunt": "bin/grunt" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/grunt-cli/node_modules/nopt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", + "dev": true, + "dependencies": { + "abbrev": "1", + "osenv": "^0.1.4" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, + "node_modules/grunt-contrib-clean": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-clean/-/grunt-contrib-clean-2.0.0.tgz", + "integrity": "sha512-g5ZD3ORk6gMa5ugZosLDQl3dZO7cI3R14U75hTM+dVLVxdMNJCPVmwf9OUt4v4eWgpKKWWoVK9DZc1amJp4nQw==", + "dev": true, + "dependencies": { + "async": "^2.6.1", + "rimraf": "^2.6.2" + }, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "grunt": ">=0.4.5" + } + }, + "node_modules/grunt-contrib-copy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-copy/-/grunt-contrib-copy-1.0.0.tgz", + "integrity": "sha1-cGDGWB6QS4qw0A8HbgqPbj58NXM=", + "dev": true, + "dependencies": { + "chalk": "^1.1.1", + "file-sync-cmp": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/grunt-contrib-copy/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/grunt-contrib-copy/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/grunt-contrib-copy/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/grunt-contrib-copy/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/grunt-contrib-copy/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/grunt-contrib-copy/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/grunt-known-options": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-2.0.0.tgz", + "integrity": "sha512-GD7cTz0I4SAede1/+pAbmJRG44zFLPipVtdL9o3vqx9IEyb7b4/Y3s7r6ofI3CchR5GvYJ+8buCSioDv5dQLiA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/grunt-legacy-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-3.0.0.tgz", + "integrity": "sha512-GHZQzZmhyq0u3hr7aHW4qUH0xDzwp2YXldLPZTCjlOeGscAOWWPftZG3XioW8MasGp+OBRIu39LFx14SLjXRcA==", + "dev": true, + "dependencies": { + "colors": "~1.1.2", + "grunt-legacy-log-utils": "~2.1.0", + "hooker": "~0.2.3", + "lodash": "~4.17.19" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/grunt-legacy-log-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.1.0.tgz", + "integrity": "sha512-lwquaPXJtKQk0rUM1IQAop5noEpwFqOXasVoedLeNzaibf/OPWjKYvvdqnEHNmU+0T0CaReAXIbGo747ZD+Aaw==", + "dev": true, + "dependencies": { + "chalk": "~4.1.0", + "lodash": "~4.17.19" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/grunt-legacy-log-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/grunt-legacy-log-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/grunt-legacy-log-utils/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/grunt-legacy-log-utils/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/grunt-legacy-log-utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/grunt-legacy-log-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/grunt-legacy-util": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-2.0.1.tgz", + "integrity": "sha512-2bQiD4fzXqX8rhNdXkAywCadeqiPiay0oQny77wA2F3WF4grPJXCvAcyoWUJV+po/b15glGkxuSiQCK299UC2w==", + "dev": true, + "dependencies": { + "async": "~3.2.0", + "exit": "~0.1.2", + "getobject": "~1.0.0", + "hooker": "~0.2.3", + "lodash": "~4.17.21", + "underscore.string": "~3.3.5", + "which": "~2.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/grunt-legacy-util/node_modules/async": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.2.tgz", + "integrity": "sha512-H0E+qZaDEfx/FY4t7iLRv1W2fFI6+pyCeTw1uN20AQPiwqwM6ojPxHxdLv4z8hi2DtnW9BOckSspLucW7pIE5g==", + "dev": true + }, + "node_modules/grunt-legacy-util/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/grunt-shell": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/grunt-shell/-/grunt-shell-3.0.1.tgz", + "integrity": "sha512-C8eR4frw/NmIFIwSvzSLS4wOQBUzC+z6QhrKPzwt/tlaIqlzH35i/O2MggVOBj2Sh1tbaAqpASWxGiGsi4JMIQ==", + "dev": true, + "dependencies": { + "chalk": "^2.4.1", + "npm-run-path": "^2.0.0", + "strip-ansi": "^5.0.0" + }, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "grunt": ">=1" + } + }, + "node_modules/grunt-shell/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/grunt-shell/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/grunt-wp-deploy": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/grunt-wp-deploy/-/grunt-wp-deploy-2.1.2.tgz", + "integrity": "sha512-n+x1WBCmLHF5P1aDY29CoF8jdLHnRKX4VDIZhiM0sbZ58vSBTFedajcZrP1CEqJ7suiv0/o/c6xmR1BiPEzaQg==", + "dev": true, + "dependencies": { + "inquirer": "^6.0.0" + }, + "engines": { + "node": ">= 0.8.0" + }, + "peerDependencies": { + "grunt": ">=0.4.1" + } + }, + "node_modules/grunt/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/grunt/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "dev": true, + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hey-listen": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", + "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==" + }, + "node_modules/highlight-words-core": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/highlight-words-core/-/highlight-words-core-1.2.2.tgz", + "integrity": "sha512-BXUKIkUuh6cmmxzi5OIbUJxrG8OAk2MqoL1DtO3Wo9D2faJg2ph5ntyuQeLqaHJmzER6H5tllCDA9ZnNe9BVGg==" + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "dependencies": { + "parse-passwd": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hooker": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", + "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/hpq": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/hpq/-/hpq-1.3.0.tgz", + "integrity": "sha512-fvYTvdCFOWQupGxqkahrkA+ERBuMdzkxwtUdKrxR6rmMd4Pfl+iZ1QiQYoaZ0B/v0y59MOMnz3XFUWbT50/NWA==" + }, + "node_modules/html-element-map": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/html-element-map/-/html-element-map-1.3.1.tgz", + "integrity": "sha512-6XMlxrAFX4UEEGxctfFnmrFaaZFNf9i5fNuV5wZ3WWQ4FVaNP1aX1LkX9j2mfEx1NpjeE/rL3nmgEn23GdFmrg==", + "dev": true, + "dependencies": { + "array.prototype.filter": "^1.0.0", + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dev": true, + "dependencies": { + "whatwg-encoding": "^1.0.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/html-tags": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz", + "integrity": "sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", + "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==", + "dev": true + }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.3.tgz", + "integrity": "sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/inquirer": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", + "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", + "dev": true, + "dependencies": { + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^2.0.0", + "lodash": "^4.17.12", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/inquirer/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/inquirer/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dependencies": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/interpret": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", + "dev": true + }, + "node_modules/irregular-plurals": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-3.3.0.tgz", + "integrity": "sha512-MVBLKUTangM3EfRPFROhmWQQKRDsrgI83J8GS3jXy+OwYqiR2/aoWndYQ5416jLE3uaGgLH7ncme3X9y09gZ3g==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "dependencies": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "dependencies": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-ci/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "node_modules/is-core-module": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", + "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-descriptor/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "optional": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", + "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "dev": true, + "dependencies": { + "is-path-inside": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "dev": true, + "dependencies": { + "path-is-inside": "^1.0.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==" + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, + "dependencies": { + "is-unc-path": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-subset": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz", + "integrity": "sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=", + "dev": true + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-touch-device": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-touch-device/-/is-touch-device-1.0.1.tgz", + "integrity": "sha512-LAYzo9kMT1b2p19L/1ATGt2XcSilnzNlyvq6c0pbPRVisLbAPpLqr53tIJS00kvrTkj0HtR8U7+u8X0yR8lPSw==" + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "node_modules/is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "dependencies": { + "unc-path-regex": "^0.1.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "node_modules/is-weakref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", + "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", + "dependencies": { + "call-bind": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "optional": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz", + "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-reports": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.5.tgz", + "integrity": "sha512-5+19PlhnGabNWB7kOFnuxT8H3T/iIyQzIbQMxXsURmmvKg86P2sbkrGOT77VnHw0Qr0gc2XzRaRfMZYYbSQCJQ==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.3.1.tgz", + "integrity": "sha512-U2AX0AgQGd5EzMsiZpYt8HyZ+nSVIh5ujQ9CPp9EQZJMjXIiSZpJNweZl0swatKRoqHWgGKM3zaSwm4Zaz87ng==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/core": "^27.3.1", + "import-local": "^3.0.2", + "jest-cli": "^27.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "27.3.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.3.0.tgz", + "integrity": "sha512-9DJs9garMHv4RhylUMZgbdCJ3+jHSkpL9aaVKp13xtXAD80qLTLrqcDZL1PHA9dYA0bCI86Nv2BhkLpLhrBcPg==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", + "execa": "^5.0.0", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-changed-files/node_modules/@jest/types": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", + "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", + "dev": true, + "peer": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-changed-files/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "peer": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-changed-files/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-changed-files/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-changed-files/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-changed-files/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "peer": true + }, + "node_modules/jest-changed-files/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-changed-files/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-circus": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-26.6.3.tgz", + "integrity": "sha512-ACrpWZGcQMpbv13XbzRzpytEJlilP/Su0JtNCi5r/xLpOUhnaIJr8leYYpLEMgPFURZISEHrnnpmB54Q/UziPw==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/babel__traverse": "^7.0.4", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^26.6.2", + "is-generator-fn": "^2.0.0", + "jest-each": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "pretty-format": "^26.6.2", + "stack-utils": "^2.0.2", + "throat": "^5.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-circus/node_modules/@jest/console": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz", + "integrity": "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^26.6.2", + "jest-util": "^26.6.2", + "slash": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-circus/node_modules/@jest/globals": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz", + "integrity": "sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==", + "dev": true, + "dependencies": { + "@jest/environment": "^26.6.2", + "@jest/types": "^26.6.2", + "expect": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-circus/node_modules/@jest/source-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz", + "integrity": "sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.4", + "source-map": "^0.6.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-circus/node_modules/@jest/test-result": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz", + "integrity": "sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==", + "dev": true, + "dependencies": { + "@jest/console": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-circus/node_modules/@jest/test-sequencer": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz", + "integrity": "sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==", + "dev": true, + "dependencies": { + "@jest/test-result": "^26.6.2", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-circus/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-circus/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-circus/node_modules/cjs-module-lexer": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz", + "integrity": "sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==", + "dev": true + }, + "node_modules/jest-circus/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/jest-circus/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-circus/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-circus/node_modules/emittery": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz", + "integrity": "sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/jest-circus/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/jest-circus/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-circus/node_modules/jest-config": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz", + "integrity": "sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^26.6.3", + "@jest/types": "^26.6.2", + "babel-jest": "^26.6.3", + "chalk": "^4.0.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.4", + "jest-environment-jsdom": "^26.6.2", + "jest-environment-node": "^26.6.2", + "jest-get-type": "^26.3.0", + "jest-jasmine2": "^26.6.3", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + }, + "peerDependencies": { + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-circus/node_modules/jest-docblock": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz", + "integrity": "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==", + "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-circus/node_modules/jest-environment-jsdom": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz", + "integrity": "sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==", + "dev": true, + "dependencies": { + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2", + "jsdom": "^16.4.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-circus/node_modules/jest-jasmine2": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz", + "integrity": "sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^26.6.2", + "@jest/source-map": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^26.6.2", + "is-generator-fn": "^2.0.0", + "jest-each": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "pretty-format": "^26.6.2", + "throat": "^5.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-circus/node_modules/jest-leak-detector": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz", + "integrity": "sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==", + "dev": true, + "dependencies": { + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-circus/node_modules/jest-message-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", + "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2", + "slash": "^3.0.0", + "stack-utils": "^2.0.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-circus/node_modules/jest-resolve": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", + "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-circus/node_modules/jest-runner": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz", + "integrity": "sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==", + "dev": true, + "dependencies": { + "@jest/console": "^26.6.2", + "@jest/environment": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.7.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-config": "^26.6.3", + "jest-docblock": "^26.0.0", + "jest-haste-map": "^26.6.2", + "jest-leak-detector": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", + "jest-runtime": "^26.6.3", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "source-map-support": "^0.5.6", + "throat": "^5.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-circus/node_modules/jest-runtime": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz", + "integrity": "sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==", + "dev": true, + "dependencies": { + "@jest/console": "^26.6.2", + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/globals": "^26.6.2", + "@jest/source-map": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0", + "cjs-module-lexer": "^0.6.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.4", + "jest-config": "^26.6.3", + "jest-haste-map": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-mock": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "slash": "^3.0.0", + "strip-bom": "^4.0.0", + "yargs": "^15.4.1" + }, + "bin": { + "jest-runtime": "bin/jest-runtime.js" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-circus/node_modules/jest-snapshot": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz", + "integrity": "sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.0.0", + "chalk": "^4.0.0", + "expect": "^26.6.2", + "graceful-fs": "^4.2.4", + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "jest-haste-map": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", + "natural-compare": "^1.4.0", + "pretty-format": "^26.6.2", + "semver": "^7.3.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-circus/node_modules/jest-validate": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", + "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "camelcase": "^6.0.0", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "leven": "^3.1.0", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-circus/node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-circus/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-circus/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-circus/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-circus/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-circus/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-circus/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-circus/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-circus/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-circus/node_modules/throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", + "dev": true + }, + "node_modules/jest-circus/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-circus/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-circus/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "node_modules/jest-circus/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/jest-circus/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "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" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-cli": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.3.1.tgz", + "integrity": "sha512-WHnCqpfK+6EvT62me6WVs8NhtbjAS4/6vZJnk7/2+oOr50cwAzG4Wxt6RXX0hu6m1169ZGMlhYYUNeKBXCph/Q==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/core": "^27.3.1", + "@jest/test-result": "^27.3.1", + "@jest/types": "^27.2.5", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "import-local": "^3.0.2", + "jest-config": "^27.3.1", + "jest-util": "^27.3.1", + "jest-validate": "^27.3.1", + "prompts": "^2.0.1", + "yargs": "^16.2.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-cli/node_modules/@jest/types": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", + "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", + "dev": true, + "peer": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-cli/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "peer": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-cli/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-cli/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "peer": true + }, + "node_modules/jest-cli/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-cli/node_modules/jest-util": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", + "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.4", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-cli/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.3.1.tgz", + "integrity": "sha512-KY8xOIbIACZ/vdYCKSopL44I0xboxC751IX+DXL2+Wx6DKNycyEfV3rryC3BPm5Uq/BBqDoMrKuqLEUNJmMKKg==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^27.3.1", + "@jest/types": "^27.2.5", + "babel-jest": "^27.3.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.4", + "jest-circus": "^27.3.1", + "jest-environment-jsdom": "^27.3.1", + "jest-environment-node": "^27.3.1", + "jest-get-type": "^27.3.1", + "jest-jasmine2": "^27.3.1", + "jest-regex-util": "^27.0.6", + "jest-resolve": "^27.3.1", + "jest-runner": "^27.3.1", + "jest-util": "^27.3.1", + "jest-validate": "^27.3.1", + "micromatch": "^4.0.4", + "pretty-format": "^27.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-config/node_modules/@jest/environment": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.3.1.tgz", + "integrity": "sha512-BCKCj4mOVLme6Tanoyc9k0ultp3pnmuyHw73UHRPeeZxirsU/7E3HC4le/VDb/SMzE1JcPnto+XBKFOcoiJzVw==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/fake-timers": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/node": "*", + "jest-mock": "^27.3.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-config/node_modules/@jest/fake-timers": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.3.1.tgz", + "integrity": "sha512-M3ZFgwwlqJtWZ+QkBG5NmC23A9w+A6ZxNsO5nJxJsKYt4yguBd3i8TpjQz5NfCX91nEve1KqD9RA2Q+Q1uWqoA==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.3.1", + "jest-mock": "^27.3.0", + "jest-util": "^27.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-config/node_modules/@jest/transform": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.3.1.tgz", + "integrity": "sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.2.5", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.3.1", + "jest-regex-util": "^27.0.6", + "jest-util": "^27.3.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-config/node_modules/@jest/types": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", + "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", + "dev": true, + "peer": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-config/node_modules/@sinonjs/fake-timers": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz", + "integrity": "sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==", + "dev": true, + "peer": true, + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, + "node_modules/jest-config/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "peer": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-config/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/babel-jest": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.3.1.tgz", + "integrity": "sha512-SjIF8hh/ir0peae2D6S6ZKRhUy7q/DnpH7k/V6fT4Bgs/LXXUztOpX4G2tCgq8mLo5HA9mN6NmlFMeYtKmIsTQ==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/transform": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.0.0", + "babel-preset-jest": "^27.2.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/jest-config/node_modules/babel-plugin-jest-hoist": { + "version": "27.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.2.0.tgz", + "integrity": "sha512-TOux9khNKdi64mW+0OIhcmbAn75tTlzKhxmiNXevQaPbrBYK7YKjP1jl6NHTJ6XR5UgUrJbCnWlKVnJn29dfjw==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-config/node_modules/babel-preset-jest": { + "version": "27.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.2.0.tgz", + "integrity": "sha512-z7MgQ3peBwN5L5aCqBKnF6iqdlvZvFUQynEhu0J+X9nHLU72jO3iY331lcYrg+AssJ8q7xsv5/3AICzVmJ/wvg==", + "dev": true, + "peer": true, + "dependencies": { + "babel-plugin-jest-hoist": "^27.2.0", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/jest-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-config/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "peer": true + }, + "node_modules/jest-config/node_modules/diff-sequences": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", + "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==", + "dev": true, + "peer": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-config/node_modules/expect": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.3.1.tgz", + "integrity": "sha512-MrNXV2sL9iDRebWPGOGFdPQRl2eDQNu/uhxIMShjjx74T6kC6jFIkmQ6OqXDtevjGUkyB2IT56RzDBqXf/QPCg==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", + "ansi-styles": "^5.0.0", + "jest-get-type": "^27.3.1", + "jest-matcher-utils": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-regex-util": "^27.0.6" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-config/node_modules/expect/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config/node_modules/jest-circus": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.3.1.tgz", + "integrity": "sha512-v1dsM9II6gvXokgqq6Yh2jHCpfg7ZqV4jWY66u7npz24JnhP3NHxI0sKT7+ZMQ7IrOWHYAaeEllOySbDbWsiXw==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/environment": "^27.3.1", + "@jest/test-result": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^27.3.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.3.1", + "jest-matcher-utils": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-runtime": "^27.3.1", + "jest-snapshot": "^27.3.1", + "jest-util": "^27.3.1", + "pretty-format": "^27.3.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-config/node_modules/jest-diff": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.3.1.tgz", + "integrity": "sha512-PCeuAH4AWUo2O5+ksW4pL9v5xJAcIKPUPfIhZBcG1RKv/0+dvaWTQK1Nrau8d67dp65fOqbeMdoil+6PedyEPQ==", + "dev": true, + "peer": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^27.0.6", + "jest-get-type": "^27.3.1", + "pretty-format": "^27.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-config/node_modules/jest-each": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.3.1.tgz", + "integrity": "sha512-E4SwfzKJWYcvOYCjOxhZcxwL+AY0uFMvdCOwvzgutJiaiodFjkxQQDxHm8FQBeTqDnSmKsQWn7ldMRzTn2zJaQ==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", + "chalk": "^4.0.0", + "jest-get-type": "^27.3.1", + "jest-util": "^27.3.1", + "pretty-format": "^27.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-config/node_modules/jest-environment-node": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.3.1.tgz", + "integrity": "sha512-T89F/FgkE8waqrTSA7/ydMkcc52uYPgZZ6q8OaZgyiZkJb5QNNCF6oPZjH9IfPFfcc9uBWh1574N0kY0pSvTXw==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/environment": "^27.3.1", + "@jest/fake-timers": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/node": "*", + "jest-mock": "^27.3.0", + "jest-util": "^27.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-config/node_modules/jest-get-type": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.3.1.tgz", + "integrity": "sha512-+Ilqi8hgHSAdhlQ3s12CAVNd8H96ZkQBfYoXmArzZnOfAtVAJEiPDBirjByEblvG/4LPJmkL+nBqPO3A1YJAEg==", + "dev": true, + "peer": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-config/node_modules/jest-haste-map": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", + "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^27.0.6", + "jest-serializer": "^27.0.6", + "jest-util": "^27.3.1", + "jest-worker": "^27.3.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-config/node_modules/jest-matcher-utils": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.3.1.tgz", + "integrity": "sha512-hX8N7zXS4k+8bC1Aj0OWpGb7D3gIXxYvPNK1inP5xvE4ztbz3rc4AkI6jGVaerepBnfWB17FL5lWFJT3s7qo8w==", + "dev": true, + "peer": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^27.3.1", + "jest-get-type": "^27.3.1", + "pretty-format": "^27.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-config/node_modules/jest-mock": { + "version": "27.3.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.3.0.tgz", + "integrity": "sha512-ziZiLk0elZOQjD08bLkegBzv5hCABu/c8Ytx45nJKkysQwGaonvmTxwjLqEA4qGdasq9o2I8/HtdGMNnVsMTGw==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", + "@types/node": "*" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-config/node_modules/jest-regex-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", + "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", + "dev": true, + "peer": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-config/node_modules/jest-serializer": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", + "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", + "dev": true, + "peer": true, + "dependencies": { + "@types/node": "*", + "graceful-fs": "^4.2.4" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-config/node_modules/jest-util": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", + "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.4", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-config/node_modules/pretty-format": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz", + "integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-config/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-config/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-dev-server": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/jest-dev-server/-/jest-dev-server-5.0.3.tgz", + "integrity": "sha512-aJR3a5KdY18Lsz+VbREKwx2HM3iukiui+J9rlv9o6iYTwZCSsJazSTStcD9K1q0AIF3oA+FqLOKDyo/sc7+fJw==", + "dev": true, + "dependencies": { + "chalk": "^4.1.1", + "cwd": "^0.10.0", + "find-process": "^1.4.4", + "prompts": "^2.4.1", + "spawnd": "^5.0.0", + "tree-kill": "^1.2.2", + "wait-on": "^5.3.0" + } + }, + "node_modules/jest-dev-server/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-dev-server/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-dev-server/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-dev-server/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-dev-server/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-dev-server/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", + "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-diff/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-diff/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-docblock": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.0.6.tgz", + "integrity": "sha512-Fid6dPcjwepTFraz0YxIMCi7dejjJ/KL9FBjPYhBp4Sv1Y9PdhImlKZqYU555BlN4TQKaTc+F2Av1z+anVyGkA==", + "dev": true, + "peer": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-each": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-26.6.2.tgz", + "integrity": "sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "jest-util": "^26.6.2", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-each/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-each/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-each/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-each/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-each/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-each/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-environment-jsdom": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.3.1.tgz", + "integrity": "sha512-3MOy8qMzIkQlfb3W1TfrD7uZHj+xx8Olix5vMENkj5djPmRqndMaXtpnaZkxmxM+Qc3lo+yVzJjzuXbCcZjAlg==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/environment": "^27.3.1", + "@jest/fake-timers": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/node": "*", + "jest-mock": "^27.3.0", + "jest-util": "^27.3.1", + "jsdom": "^16.6.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/@jest/environment": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.3.1.tgz", + "integrity": "sha512-BCKCj4mOVLme6Tanoyc9k0ultp3pnmuyHw73UHRPeeZxirsU/7E3HC4le/VDb/SMzE1JcPnto+XBKFOcoiJzVw==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/fake-timers": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/node": "*", + "jest-mock": "^27.3.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/@jest/fake-timers": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.3.1.tgz", + "integrity": "sha512-M3ZFgwwlqJtWZ+QkBG5NmC23A9w+A6ZxNsO5nJxJsKYt4yguBd3i8TpjQz5NfCX91nEve1KqD9RA2Q+Q1uWqoA==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.3.1", + "jest-mock": "^27.3.0", + "jest-util": "^27.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/@jest/types": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", + "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", + "dev": true, + "peer": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/@sinonjs/fake-timers": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz", + "integrity": "sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==", + "dev": true, + "peer": true, + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "peer": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-environment-jsdom/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-environment-jsdom/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-environment-jsdom/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "peer": true + }, + "node_modules/jest-environment-jsdom/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-environment-jsdom/node_modules/jest-mock": { + "version": "27.3.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.3.0.tgz", + "integrity": "sha512-ziZiLk0elZOQjD08bLkegBzv5hCABu/c8Ytx45nJKkysQwGaonvmTxwjLqEA4qGdasq9o2I8/HtdGMNnVsMTGw==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", + "@types/node": "*" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/jest-util": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", + "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.4", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-environment-node": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.6.2.tgz", + "integrity": "sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==", + "dev": true, + "dependencies": { + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "dev": true, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-haste-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz", + "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^26.0.0", + "jest-serializer": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "micromatch": "^4.0.2", + "sane": "^4.0.3", + "walker": "^1.0.7" + }, + "engines": { + "node": ">= 10.14.2" + }, + "optionalDependencies": { + "fsevents": "^2.1.2" + } + }, + "node_modules/jest-haste-map/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-haste-map/node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-haste-map/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-jasmine2": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.3.1.tgz", + "integrity": "sha512-WK11ZUetDQaC09w4/j7o4FZDUIp+4iYWH/Lik34Pv7ukL+DuXFGdnmmi7dT58J2ZYKFB5r13GyE0z3NPeyJmsg==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^27.3.1", + "@jest/source-map": "^27.0.6", + "@jest/test-result": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^27.3.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.3.1", + "jest-matcher-utils": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-runtime": "^27.3.1", + "jest-snapshot": "^27.3.1", + "jest-util": "^27.3.1", + "pretty-format": "^27.3.1", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/@jest/environment": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.3.1.tgz", + "integrity": "sha512-BCKCj4mOVLme6Tanoyc9k0ultp3pnmuyHw73UHRPeeZxirsU/7E3HC4le/VDb/SMzE1JcPnto+XBKFOcoiJzVw==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/fake-timers": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/node": "*", + "jest-mock": "^27.3.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/@jest/fake-timers": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.3.1.tgz", + "integrity": "sha512-M3ZFgwwlqJtWZ+QkBG5NmC23A9w+A6ZxNsO5nJxJsKYt4yguBd3i8TpjQz5NfCX91nEve1KqD9RA2Q+Q1uWqoA==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.3.1", + "jest-mock": "^27.3.0", + "jest-util": "^27.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/@jest/types": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", + "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", + "dev": true, + "peer": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/@sinonjs/fake-timers": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz", + "integrity": "sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==", + "dev": true, + "peer": true, + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, + "node_modules/jest-jasmine2/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "peer": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-jasmine2/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-jasmine2/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-jasmine2/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "peer": true + }, + "node_modules/jest-jasmine2/node_modules/diff-sequences": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", + "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==", + "dev": true, + "peer": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/expect": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.3.1.tgz", + "integrity": "sha512-MrNXV2sL9iDRebWPGOGFdPQRl2eDQNu/uhxIMShjjx74T6kC6jFIkmQ6OqXDtevjGUkyB2IT56RzDBqXf/QPCg==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", + "ansi-styles": "^5.0.0", + "jest-get-type": "^27.3.1", + "jest-matcher-utils": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-regex-util": "^27.0.6" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/expect/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-jasmine2/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-jasmine2/node_modules/jest-diff": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.3.1.tgz", + "integrity": "sha512-PCeuAH4AWUo2O5+ksW4pL9v5xJAcIKPUPfIhZBcG1RKv/0+dvaWTQK1Nrau8d67dp65fOqbeMdoil+6PedyEPQ==", + "dev": true, + "peer": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^27.0.6", + "jest-get-type": "^27.3.1", + "pretty-format": "^27.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/jest-each": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.3.1.tgz", + "integrity": "sha512-E4SwfzKJWYcvOYCjOxhZcxwL+AY0uFMvdCOwvzgutJiaiodFjkxQQDxHm8FQBeTqDnSmKsQWn7ldMRzTn2zJaQ==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", + "chalk": "^4.0.0", + "jest-get-type": "^27.3.1", + "jest-util": "^27.3.1", + "pretty-format": "^27.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/jest-get-type": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.3.1.tgz", + "integrity": "sha512-+Ilqi8hgHSAdhlQ3s12CAVNd8H96ZkQBfYoXmArzZnOfAtVAJEiPDBirjByEblvG/4LPJmkL+nBqPO3A1YJAEg==", + "dev": true, + "peer": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/jest-matcher-utils": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.3.1.tgz", + "integrity": "sha512-hX8N7zXS4k+8bC1Aj0OWpGb7D3gIXxYvPNK1inP5xvE4ztbz3rc4AkI6jGVaerepBnfWB17FL5lWFJT3s7qo8w==", + "dev": true, + "peer": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^27.3.1", + "jest-get-type": "^27.3.1", + "pretty-format": "^27.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/jest-mock": { + "version": "27.3.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.3.0.tgz", + "integrity": "sha512-ziZiLk0elZOQjD08bLkegBzv5hCABu/c8Ytx45nJKkysQwGaonvmTxwjLqEA4qGdasq9o2I8/HtdGMNnVsMTGw==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", + "@types/node": "*" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/jest-regex-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", + "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", + "dev": true, + "peer": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/jest-util": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", + "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.4", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/pretty-format": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz", + "integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-jasmine2/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-leak-detector": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.3.1.tgz", + "integrity": "sha512-78QstU9tXbaHzwlRlKmTpjP9k4Pvre5l0r8Spo4SbFFVy/4Abg9I6ZjHwjg2QyKEAMg020XcjP+UgLZIY50yEg==", + "dev": true, + "peer": true, + "dependencies": { + "jest-get-type": "^27.3.1", + "pretty-format": "^27.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-leak-detector/node_modules/@jest/types": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", + "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", + "dev": true, + "peer": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-leak-detector/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "peer": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-leak-detector/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-leak-detector/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-leak-detector/node_modules/chalk/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-leak-detector/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-leak-detector/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "peer": true + }, + "node_modules/jest-leak-detector/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-leak-detector/node_modules/jest-get-type": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.3.1.tgz", + "integrity": "sha512-+Ilqi8hgHSAdhlQ3s12CAVNd8H96ZkQBfYoXmArzZnOfAtVAJEiPDBirjByEblvG/4LPJmkL+nBqPO3A1YJAEg==", + "dev": true, + "peer": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-leak-detector/node_modules/pretty-format": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz", + "integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-leak-detector/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-matcher-utils": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz", + "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-matcher-utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-matcher-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.3.1.tgz", + "integrity": "sha512-bh3JEmxsTZ/9rTm0jQrPElbY2+y48Rw2t47uMfByNyUVR+OfPh4anuyKsGqsNkXk/TI4JbLRZx+7p7Hdt6q1yg==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.2.5", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.4", + "pretty-format": "^27.3.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-message-util/node_modules/@jest/types": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", + "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", + "dev": true, + "peer": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-message-util/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "peer": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-message-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-message-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "peer": true + }, + "node_modules/jest-message-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util/node_modules/pretty-format": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz", + "integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-message-util/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-mock": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz", + "integrity": "sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "@types/node": "*" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", + "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", + "dev": true, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-resolve": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.3.1.tgz", + "integrity": "sha512-Dfzt25CFSPo3Y3GCbxynRBZzxq9AdyNN+x/v2IqYx6KVT5Z6me2Z/PsSGFSv3cOSUZqJ9pHxilao/I/m9FouLw==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.3.1", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^27.3.1", + "jest-validate": "^27.3.1", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.3.1.tgz", + "integrity": "sha512-X7iLzY8pCiYOnvYo2YrK3P9oSE8/3N2f4pUZMJ8IUcZnT81vlSonya1KTO9ZfKGuC+svE6FHK/XOb8SsoRUV1A==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", + "jest-regex-util": "^27.0.6", + "jest-snapshot": "^27.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve-dependencies/node_modules/@jest/types": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", + "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", + "dev": true, + "peer": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve-dependencies/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "peer": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-resolve-dependencies/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-resolve-dependencies/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-resolve-dependencies/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-resolve-dependencies/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "peer": true + }, + "node_modules/jest-resolve-dependencies/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-resolve-dependencies/node_modules/jest-regex-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", + "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", + "dev": true, + "peer": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve-dependencies/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-resolve/node_modules/@jest/types": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", + "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", + "dev": true, + "peer": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "peer": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-resolve/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-resolve/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-resolve/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-resolve/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "peer": true + }, + "node_modules/jest-resolve/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-resolve/node_modules/jest-haste-map": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", + "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^27.0.6", + "jest-serializer": "^27.0.6", + "jest-util": "^27.3.1", + "jest-worker": "^27.3.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-resolve/node_modules/jest-regex-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", + "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", + "dev": true, + "peer": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve/node_modules/jest-serializer": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", + "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", + "dev": true, + "peer": true, + "dependencies": { + "@types/node": "*", + "graceful-fs": "^4.2.4" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve/node_modules/jest-util": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", + "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.4", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.3.1.tgz", + "integrity": "sha512-r4W6kBn6sPr3TBwQNmqE94mPlYVn7fLBseeJfo4E2uCTmAyDFm2O5DYAQAFP7Q3YfiA/bMwg8TVsciP7k0xOww==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/console": "^27.3.1", + "@jest/environment": "^27.3.1", + "@jest/test-result": "^27.3.1", + "@jest/transform": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-docblock": "^27.0.6", + "jest-environment-jsdom": "^27.3.1", + "jest-environment-node": "^27.3.1", + "jest-haste-map": "^27.3.1", + "jest-leak-detector": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-resolve": "^27.3.1", + "jest-runtime": "^27.3.1", + "jest-util": "^27.3.1", + "jest-worker": "^27.3.1", + "source-map-support": "^0.5.6", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runner/node_modules/@jest/environment": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.3.1.tgz", + "integrity": "sha512-BCKCj4mOVLme6Tanoyc9k0ultp3pnmuyHw73UHRPeeZxirsU/7E3HC4le/VDb/SMzE1JcPnto+XBKFOcoiJzVw==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/fake-timers": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/node": "*", + "jest-mock": "^27.3.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runner/node_modules/@jest/fake-timers": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.3.1.tgz", + "integrity": "sha512-M3ZFgwwlqJtWZ+QkBG5NmC23A9w+A6ZxNsO5nJxJsKYt4yguBd3i8TpjQz5NfCX91nEve1KqD9RA2Q+Q1uWqoA==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.3.1", + "jest-mock": "^27.3.0", + "jest-util": "^27.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runner/node_modules/@jest/transform": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.3.1.tgz", + "integrity": "sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.2.5", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.3.1", + "jest-regex-util": "^27.0.6", + "jest-util": "^27.3.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runner/node_modules/@jest/types": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", + "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", + "dev": true, + "peer": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runner/node_modules/@sinonjs/fake-timers": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz", + "integrity": "sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==", + "dev": true, + "peer": true, + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, + "node_modules/jest-runner/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "peer": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-runner/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-runner/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-runner/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-runner/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "peer": true + }, + "node_modules/jest-runner/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner/node_modules/jest-environment-node": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.3.1.tgz", + "integrity": "sha512-T89F/FgkE8waqrTSA7/ydMkcc52uYPgZZ6q8OaZgyiZkJb5QNNCF6oPZjH9IfPFfcc9uBWh1574N0kY0pSvTXw==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/environment": "^27.3.1", + "@jest/fake-timers": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/node": "*", + "jest-mock": "^27.3.0", + "jest-util": "^27.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runner/node_modules/jest-haste-map": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", + "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^27.0.6", + "jest-serializer": "^27.0.6", + "jest-util": "^27.3.1", + "jest-worker": "^27.3.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-runner/node_modules/jest-mock": { + "version": "27.3.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.3.0.tgz", + "integrity": "sha512-ziZiLk0elZOQjD08bLkegBzv5hCABu/c8Ytx45nJKkysQwGaonvmTxwjLqEA4qGdasq9o2I8/HtdGMNnVsMTGw==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", + "@types/node": "*" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runner/node_modules/jest-regex-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", + "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", + "dev": true, + "peer": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runner/node_modules/jest-serializer": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", + "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", + "dev": true, + "peer": true, + "dependencies": { + "@types/node": "*", + "graceful-fs": "^4.2.4" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runner/node_modules/jest-util": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", + "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.4", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runner/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-runner/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.3.1.tgz", + "integrity": "sha512-qtO6VxPbS8umqhEDpjA4pqTkKQ1Hy4ZSi9mDVeE9Za7LKBo2LdW2jmT+Iod3XFaJqINikZQsn2wEi0j9wPRbLg==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/console": "^27.3.1", + "@jest/environment": "^27.3.1", + "@jest/globals": "^27.3.1", + "@jest/source-map": "^27.0.6", + "@jest/test-result": "^27.3.1", + "@jest/transform": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-mock": "^27.3.0", + "jest-regex-util": "^27.0.6", + "jest-resolve": "^27.3.1", + "jest-snapshot": "^27.3.1", + "jest-util": "^27.3.1", + "jest-validate": "^27.3.1", + "slash": "^3.0.0", + "strip-bom": "^4.0.0", + "yargs": "^16.2.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runtime/node_modules/@jest/environment": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.3.1.tgz", + "integrity": "sha512-BCKCj4mOVLme6Tanoyc9k0ultp3pnmuyHw73UHRPeeZxirsU/7E3HC4le/VDb/SMzE1JcPnto+XBKFOcoiJzVw==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/fake-timers": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/node": "*", + "jest-mock": "^27.3.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runtime/node_modules/@jest/fake-timers": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.3.1.tgz", + "integrity": "sha512-M3ZFgwwlqJtWZ+QkBG5NmC23A9w+A6ZxNsO5nJxJsKYt4yguBd3i8TpjQz5NfCX91nEve1KqD9RA2Q+Q1uWqoA==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.3.1", + "jest-mock": "^27.3.0", + "jest-util": "^27.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runtime/node_modules/@jest/transform": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.3.1.tgz", + "integrity": "sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.2.5", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.3.1", + "jest-regex-util": "^27.0.6", + "jest-util": "^27.3.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runtime/node_modules/@jest/types": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", + "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", + "dev": true, + "peer": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runtime/node_modules/@sinonjs/fake-timers": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz", + "integrity": "sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==", + "dev": true, + "peer": true, + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, + "node_modules/jest-runtime/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "peer": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-runtime/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-runtime/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-runtime/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-runtime/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "peer": true + }, + "node_modules/jest-runtime/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime/node_modules/jest-haste-map": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", + "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^27.0.6", + "jest-serializer": "^27.0.6", + "jest-util": "^27.3.1", + "jest-worker": "^27.3.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-runtime/node_modules/jest-mock": { + "version": "27.3.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.3.0.tgz", + "integrity": "sha512-ziZiLk0elZOQjD08bLkegBzv5hCABu/c8Ytx45nJKkysQwGaonvmTxwjLqEA4qGdasq9o2I8/HtdGMNnVsMTGw==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", + "@types/node": "*" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runtime/node_modules/jest-regex-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", + "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", + "dev": true, + "peer": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runtime/node_modules/jest-serializer": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", + "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", + "dev": true, + "peer": true, + "dependencies": { + "@types/node": "*", + "graceful-fs": "^4.2.4" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runtime/node_modules/jest-util": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", + "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.4", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runtime/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-runtime/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-serializer": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz", + "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==", + "dev": true, + "dependencies": { + "@types/node": "*", + "graceful-fs": "^4.2.4" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-silent-reporter": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jest-silent-reporter/-/jest-silent-reporter-0.5.0.tgz", + "integrity": "sha512-epdLt8Oj0a1AyRiR6F8zx/1SVT1Mi7VU3y4wB2uOBHs/ohIquC7v2eeja7UN54uRPyHInIKWdL+RdG228n5pJQ==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-util": "^26.0.0" + } + }, + "node_modules/jest-silent-reporter/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-silent-reporter/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-silent-reporter/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-silent-reporter/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-silent-reporter/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-silent-reporter/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-snapshot": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.3.1.tgz", + "integrity": "sha512-APZyBvSgQgOT0XumwfFu7X3G5elj6TGhCBLbBdn3R1IzYustPGPE38F51dBWMQ8hRXa9je0vAdeVDtqHLvB6lg==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/core": "^7.7.2", + "@babel/generator": "^7.7.2", + "@babel/parser": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.0.0", + "@jest/transform": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^27.3.1", + "graceful-fs": "^4.2.4", + "jest-diff": "^27.3.1", + "jest-get-type": "^27.3.1", + "jest-haste-map": "^27.3.1", + "jest-matcher-utils": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-resolve": "^27.3.1", + "jest-util": "^27.3.1", + "natural-compare": "^1.4.0", + "pretty-format": "^27.3.1", + "semver": "^7.3.2" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/@jest/transform": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.3.1.tgz", + "integrity": "sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.2.5", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.3.1", + "jest-regex-util": "^27.0.6", + "jest-util": "^27.3.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/@jest/types": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", + "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", + "dev": true, + "peer": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "peer": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-snapshot/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "peer": true + }, + "node_modules/jest-snapshot/node_modules/diff-sequences": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", + "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==", + "dev": true, + "peer": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/expect": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.3.1.tgz", + "integrity": "sha512-MrNXV2sL9iDRebWPGOGFdPQRl2eDQNu/uhxIMShjjx74T6kC6jFIkmQ6OqXDtevjGUkyB2IT56RzDBqXf/QPCg==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", + "ansi-styles": "^5.0.0", + "jest-get-type": "^27.3.1", + "jest-matcher-utils": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-regex-util": "^27.0.6" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/expect/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-snapshot/node_modules/jest-diff": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.3.1.tgz", + "integrity": "sha512-PCeuAH4AWUo2O5+ksW4pL9v5xJAcIKPUPfIhZBcG1RKv/0+dvaWTQK1Nrau8d67dp65fOqbeMdoil+6PedyEPQ==", + "dev": true, + "peer": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^27.0.6", + "jest-get-type": "^27.3.1", + "pretty-format": "^27.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/jest-get-type": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.3.1.tgz", + "integrity": "sha512-+Ilqi8hgHSAdhlQ3s12CAVNd8H96ZkQBfYoXmArzZnOfAtVAJEiPDBirjByEblvG/4LPJmkL+nBqPO3A1YJAEg==", + "dev": true, + "peer": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/jest-haste-map": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", + "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^27.0.6", + "jest-serializer": "^27.0.6", + "jest-util": "^27.3.1", + "jest-worker": "^27.3.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-snapshot/node_modules/jest-matcher-utils": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.3.1.tgz", + "integrity": "sha512-hX8N7zXS4k+8bC1Aj0OWpGb7D3gIXxYvPNK1inP5xvE4ztbz3rc4AkI6jGVaerepBnfWB17FL5lWFJT3s7qo8w==", + "dev": true, + "peer": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^27.3.1", + "jest-get-type": "^27.3.1", + "pretty-format": "^27.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/jest-regex-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", + "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", + "dev": true, + "peer": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/jest-serializer": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", + "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", + "dev": true, + "peer": true, + "dependencies": { + "@types/node": "*", + "graceful-fs": "^4.2.4" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/jest-util": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", + "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.4", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "peer": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-snapshot/node_modules/pretty-format": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz", + "integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "peer": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-snapshot/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-snapshot/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-snapshot/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "peer": true + }, + "node_modules/jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.3.1.tgz", + "integrity": "sha512-3H0XCHDFLA9uDII67Bwi1Vy7AqwA5HqEEjyy934lgVhtJ3eisw6ShOF1MDmRPspyikef5MyExvIm0/TuLzZ86Q==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.3.1", + "leven": "^3.1.0", + "pretty-format": "^27.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-validate/node_modules/@jest/types": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", + "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", + "dev": true, + "peer": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-validate/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "peer": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-validate/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-validate/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "peer": true + }, + "node_modules/jest-validate/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate/node_modules/jest-get-type": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.3.1.tgz", + "integrity": "sha512-+Ilqi8hgHSAdhlQ3s12CAVNd8H96ZkQBfYoXmArzZnOfAtVAJEiPDBirjByEblvG/4LPJmkL+nBqPO3A1YJAEg==", + "dev": true, + "peer": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-validate/node_modules/pretty-format": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz", + "integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-validate/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.3.1.tgz", + "integrity": "sha512-9/xbV6chABsGHWh9yPaAGYVVKurWoP3ZMCv6h+O1v9/+pkOroigs6WzZ0e9gLP/njokUwM7yQhr01LKJVMkaZA==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/test-result": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^27.3.1", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-watcher/node_modules/@jest/types": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", + "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", + "dev": true, + "peer": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-watcher/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "peer": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-watcher/node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "peer": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watcher/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-watcher/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-watcher/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-watcher/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "peer": true + }, + "node_modules/jest-watcher/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher/node_modules/jest-util": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", + "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.4", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-watcher/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-worker": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.3.1.tgz", + "integrity": "sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/joi": { + "version": "17.4.2", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.4.2.tgz", + "integrity": "sha512-Lm56PP+n0+Z2A2rfRvsfWVDXGEWjXxatPopkQ8qQ5mxCEhwHG+Ettgg5o98FFaxilOxozoa14cFhrE/hOzh/Nw==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.0", + "@sideway/formula": "^3.0.0", + "@sideway/pinpoint": "^2.0.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsdoc-type-pratt-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-1.2.0.tgz", + "integrity": "sha512-4STjeF14jp4bqha44nKMY1OUI6d2/g6uclHWUCZ7B4DoLzaB5bmpTkQrpqU+vSVzMD0LsKAOskcnI3I3VfIpmg==", + "dev": true, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "dev": true, + "dependencies": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsdom/node_modules/acorn": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz", + "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/jsdom/node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "node_modules/json2php": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/json2php/-/json2php-0.0.4.tgz", + "integrity": "sha1-a9haHdpqXdfpECK7JEA8wbfC7jQ=", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", + "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", + "dev": true + }, + "node_modules/jsx-ast-utils": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz", + "integrity": "sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.3", + "object.assign": "^4.1.2" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/klona": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", + "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/known-css-properties": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.21.0.tgz", + "integrity": "sha512-sZLUnTqimCkvkgRS+kbPlYW5o8q5w1cu+uIisKpEWkj31I8mx8kNG162DwRav8Zirkva6N5uoFsm9kzK4mUXjw==", + "dev": true + }, + "node_modules/language-subtag-registry": { + "version": "0.3.21", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz", + "integrity": "sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==", + "dev": true + }, + "node_modules/language-tags": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", + "integrity": "sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=", + "dev": true, + "dependencies": { + "language-subtag-registry": "~0.3.2" + } + }, + "node_modules/lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/liftup": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/liftup/-/liftup-3.0.1.tgz", + "integrity": "sha512-yRHaiQDizWSzoXk3APcA71eOI/UuhEkNN9DiW2Tt44mhYzX4joFoCZlxsSOF7RyeLlfqzFLQI1ngFq3ggMPhOw==", + "dev": true, + "dependencies": { + "extend": "^3.0.2", + "findup-sync": "^4.0.0", + "fined": "^1.2.0", + "flagged-respawn": "^1.0.1", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.1", + "rechoir": "^0.7.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/liftup/node_modules/findup-sync": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-4.0.0.tgz", + "integrity": "sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==", + "dev": true, + "dependencies": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^4.0.2", + "resolve-dir": "^1.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/liftup/node_modules/global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "dependencies": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/liftup/node_modules/global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/liftup/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/liftup/node_modules/resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lilconfig": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.3.tgz", + "integrity": "sha512-EHKqr/+ZvdKCifpNrJCKxBTgk5XupZA3y/aCPY9mxfgBzmgh93Mt/WqjjQ38oMxXuvDokaKiM3lAgvSH2sjtHg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/line-height": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/line-height/-/line-height-0.3.1.tgz", + "integrity": "sha1-SxIF7d4YKHKl76PI9iCzGHqcVMk=", + "dependencies": { + "computed-style": "~0.1.3" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" + }, + "node_modules/linkify-it": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", + "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", + "dev": true, + "dependencies": { + "uc.micro": "^1.0.1" + } + }, + "node_modules/lint-staged": { + "version": "11.2.3", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-11.2.3.tgz", + "integrity": "sha512-Tfmhk8O2XFMD25EswHPv+OYhUjsijy5D7liTdxeXvhG2rsadmOLFtyj8lmlfoFFXY8oXWAIOKpoI+lJe1DB1mw==", + "dev": true, + "dependencies": { + "cli-truncate": "2.1.0", + "colorette": "^1.4.0", + "commander": "^8.2.0", + "cosmiconfig": "^7.0.1", + "debug": "^4.3.2", + "enquirer": "^2.3.6", + "execa": "^5.1.1", + "listr2": "^3.12.2", + "micromatch": "^4.0.4", + "normalize-path": "^3.0.0", + "please-upgrade-node": "^3.2.0", + "string-argv": "0.3.1", + "stringify-object": "3.3.0", + "supports-color": "8.1.1" + }, + "bin": { + "lint-staged": "bin/lint-staged.js" + }, + "funding": { + "url": "https://opencollective.com/lint-staged" + } + }, + "node_modules/lint-staged/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/lint-staged/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/lint-staged/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/listr2": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.13.1.tgz", + "integrity": "sha512-pk4YBDA2cxtpM8iLHbz6oEsfZieJKHf6Pt19NlKaHZZVpqHyVs/Wqr7RfBBCeAFCJchGO7WQHVkUPZTvJMHk8w==", + "dev": true, + "dependencies": { + "cli-truncate": "^2.1.0", + "colorette": "^2.0.16", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rxjs": "^6.6.7", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "enquirer": ">= 2.3.0 < 3" + } + }, + "node_modules/listr2/node_modules/colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "dev": true + }, + "node_modules/listr2/node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/livereload-js": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.4.0.tgz", + "integrity": "sha512-XPQH8Z2GDP/Hwz2PCDrh2mth4yFejwA1OZ/81Ti3LgKyhDcEjsSsqFWZojHG0va/duGd+WyosY7eXLDoOyqcPw==", + "dev": true + }, + "node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/loader-runner": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", + "dev": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, + "node_modules/lodash.differencewith": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.differencewith/-/lodash.differencewith-4.5.0.tgz", + "integrity": "sha1-uvr7yRi1UVTheRdqALsK76rIVLc=", + "dev": true + }, + "node_modules/lodash.escape": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz", + "integrity": "sha1-yQRGkMIeBClL6qUXcS/e0fqI3pg=", + "dev": true + }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", + "dev": true + }, + "node_modules/lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", + "dev": true + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", + "dev": true + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", + "dev": true + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", + "dev": true + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-update/node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-update/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-update/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/log-update/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/log-update/node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-update/node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/log-update/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-update/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/longest-streak": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", + "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/make-iterator/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/map-values": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-values/-/map-values-1.0.1.tgz", + "integrity": "sha1-douOecAJvytk/ugG4ip7HEGQyZA=", + "dev": true + }, + "node_modules/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/markdown-it": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.0.4.tgz", + "integrity": "sha512-34RwOXZT8kyuOJy25oJNJoulO8L0bTHYWXcdZBYZqFnjIy3NgjeoM3FmPXIOFQ26/lSHYMr8oc62B6adxXcb3Q==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1", + "entities": "~2.1.0", + "linkify-it": "^3.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "bin": { + "markdown-it": "bin/markdown-it.js" + } + }, + "node_modules/markdown-it/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/markdown-it/node_modules/entities": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/markdownlint": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.23.1.tgz", + "integrity": "sha512-iOEwhDfNmq2IJlaA8mzEkHYUi/Hwoa6Ss+HO5jkwUR6wQ4quFr0WzSx+Z9rsWZKUaPbyirIdL1zGmJRkWawr4Q==", + "dev": true, + "dependencies": { + "markdown-it": "12.0.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/markdownlint-cli": { + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/markdownlint-cli/-/markdownlint-cli-0.27.1.tgz", + "integrity": "sha512-p1VV6aSbGrDlpUWzHizAnSNEQAweVR3qUI/AIUubxW7BGPXziSXkIED+uRtSohUlRS/jmqp3Wi4es5j6fIrdeQ==", + "dev": true, + "dependencies": { + "commander": "~7.1.0", + "deep-extend": "~0.6.0", + "get-stdin": "~8.0.0", + "glob": "~7.1.6", + "ignore": "~5.1.8", + "js-yaml": "^4.0.0", + "jsonc-parser": "~3.0.0", + "lodash.differencewith": "~4.5.0", + "lodash.flatten": "~4.4.0", + "markdownlint": "~0.23.1", + "markdownlint-rule-helpers": "~0.14.0", + "minimatch": "~3.0.4", + "minimist": "~1.2.5", + "rc": "~1.2.8" + }, + "bin": { + "markdownlint": "markdownlint.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/markdownlint-cli/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/markdownlint-cli/node_modules/commander": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.1.0.tgz", + "integrity": "sha512-pRxBna3MJe6HKnBGsDyMv8ETbptw3axEdYHoqNh7gu5oDcew8fs0xnivZGm06Ogk8zGAJ9VX+OPEr2GXEQK4dg==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/markdownlint-cli/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/markdownlint-rule-helpers": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/markdownlint-rule-helpers/-/markdownlint-rule-helpers-0.14.0.tgz", + "integrity": "sha512-vRTPqSU4JK8vVXmjICHSBhwXUvbfh/VJo+j7hvxqe15tLJyomv3FLgFdFgb8kpj0Fe8SsJa/TZUAXv7/sN+N7A==", + "dev": true + }, + "node_modules/mathml-tag-names": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", + "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", + "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-to-string": "^2.0.0", + "micromark": "~2.11.0", + "parse-entities": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", + "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "longest-streak": "^2.0.0", + "mdast-util-to-string": "^2.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.0.0", + "zwitch": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "node_modules/mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", + "dev": true + }, + "node_modules/memize": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/memize/-/memize-1.1.0.tgz", + "integrity": "sha512-K4FcPETOMTwe7KL2LK0orMhpOmWD2wRGwWWpbZy0fyArwsyIKR8YJVz8+efBAh3BO4zPqlSICu4vsLTRRqtFAg==" + }, + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/meow": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-6.1.1.tgz", + "integrity": "sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==", + "dev": true, + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "^4.0.2", + "normalize-package-data": "^2.5.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.13.1", + "yargs-parser": "^18.1.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/merge-deep": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/merge-deep/-/merge-deep-3.0.3.tgz", + "integrity": "sha512-qtmzAS6t6grwEkNrunqTBdn0qKwFgNWvlxUbAV8es9M7Ot1EbyApytCnvE0jALPa46ZpKDUo527kKiaWplmlFA==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "clone-deep": "^0.2.4", + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromark": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", + "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "debug": "^4.0.0", + "parse-entities": "^2.0.0" + } + }, + "node_modules/micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromodal": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/micromodal/-/micromodal-0.4.6.tgz", + "integrity": "sha512-2VDso2a22jWPpqwuWT/4RomVpoU3Bl9qF9D01xzwlNp5UVsImeA0gY4nSpF44vqcQtQOtkiMUV9EZkAJSRxBsg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/mime": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.50.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz", + "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.33", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz", + "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==", + "dev": true, + "dependencies": { + "mime-db": "1.50.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.4.3.tgz", + "integrity": "sha512-zekavl9mZuGyk7COjsfFY/f655AX61EKE0AthXPrmDk+oZyjZ9WzO4WPjXnnO9xl8obK2kmM6rAQrBEmk+WK1g==", + "dev": true, + "dependencies": { + "schema-utils": "^3.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "node_modules/minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, + "dependencies": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/minimist-options/node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/minimist-options/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mixin-deep/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mixin-deep/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mixin-object": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", + "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", + "dev": true, + "dependencies": { + "for-in": "^0.1.3", + "is-extendable": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mixin-object/node_modules/for-in": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", + "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/moment": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", + "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==", + "engines": { + "node": "*" + } + }, + "node_modules/moment-timezone": { + "version": "0.5.33", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.33.tgz", + "integrity": "sha512-PTc2vcT8K9J5/9rDEPe5czSIKgLoGsH8UNpA4qZTVw0Vd/Uz19geE9abbIOQKaAQFcnQ3v5YEXrbSc5BpshH+w==", + "dependencies": { + "moment": ">= 2.9.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/moo": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.1.tgz", + "integrity": "sha512-I1mnb5xn4fO80BH9BLcF0yLypy2UKl+Cb01Fu0hJRkJjlCRtxZMWkTdAtDd5ZqCOxtCkhmRwyI57vWT+1iZ67w==", + "dev": true + }, + "node_modules/mousetrap": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/mousetrap/-/mousetrap-1.6.5.tgz", + "integrity": "sha512-QNo4kEepaIBwiT8CDhP98umTetp+JNfQYBWvC1pc6/OAibuXtRcxZ58Qz8skvEHYvURne/7R8T5VoOI7rDsEUA==" + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "node_modules/nanocolors": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.1.12.tgz", + "integrity": "sha512-2nMHqg1x5PU+unxX7PGY7AuYxl2qDx7PSrTRjizr8sxdd3l/3hBuWWaki62qmtYm2U5i4Z5E7GbjlyDFhs9/EQ==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.1.30", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz", + "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "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" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "node_modules/nearley": { + "version": "2.20.1", + "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.20.1.tgz", + "integrity": "sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==", + "dev": true, + "dependencies": { + "commander": "^2.19.0", + "moo": "^0.5.0", + "railroad-diagrams": "^1.0.0", + "randexp": "0.4.6" + }, + "bin": { + "nearley-railroad": "bin/nearley-railroad.js", + "nearley-test": "bin/nearley-test.js", + "nearley-unparse": "bin/nearley-unparse.js", + "nearleyc": "bin/nearleyc.js" + }, + "funding": { + "type": "individual", + "url": "https://nearley.js.org/#give-to-nearley" + } + }, + "node_modules/nearley/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node_modules/node-fetch": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.5.tgz", + "integrity": "sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + } + }, + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "dev": true + }, + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "dev": true + }, + "node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, + "node_modules/node-modules-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", + "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/node-notifier": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.2.tgz", + "integrity": "sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg==", + "dev": true, + "optional": true, + "dependencies": { + "growly": "^1.3.0", + "is-wsl": "^2.2.0", + "semver": "^7.3.2", + "shellwords": "^0.1.1", + "uuid": "^8.3.0", + "which": "^2.0.2" + } + }, + "node_modules/node-notifier/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "optional": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-notifier/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "optional": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-notifier/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "optional": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/node-notifier/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "optional": true + }, + "node_modules/node-releases": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==" + }, + "node_modules/nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-selector": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/normalize-selector/-/normalize-selector-0.2.0.tgz", + "integrity": "sha1-0LFF62kRicY6eNIB3E/bEpPvDAM=", + "dev": true + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/normalize-wheel": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/normalize-wheel/-/normalize-wheel-1.0.1.tgz", + "integrity": "sha1-rsiGr/2wRQcNhWRH32Ls+GFG7EU=" + }, + "node_modules/npm-package-json-lint": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/npm-package-json-lint/-/npm-package-json-lint-5.4.1.tgz", + "integrity": "sha512-nFuijuczSzWEaNhjgvU2n1A3Gsn4CYZKZYum/oq2i+YOA/HB57CA6kpZrlnYf6bEKelMvsixjcN7SlUXDo0bTg==", + "dev": true, + "dependencies": { + "ajv": "^6.12.6", + "ajv-errors": "^1.0.1", + "chalk": "^4.1.2", + "cosmiconfig": "^7.0.1", + "debug": "^4.3.2", + "globby": "^11.0.4", + "ignore": "^5.1.8", + "is-plain-obj": "^3.0.0", + "jsonc-parser": "^3.0.0", + "log-symbols": "^4.1.0", + "meow": "^6.1.1", + "plur": "^4.0.0", + "semver": "^7.3.5", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "bin": { + "npmPkgJsonLint": "src/cli.js" + }, + "engines": { + "node": ">=10.0.0", + "npm": ">=6.0.0" + } + }, + "node_modules/npm-package-json-lint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/npm-package-json-lint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/npm-package-json-lint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/npm-package-json-lint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/npm-package-json-lint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm-package-json-lint/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-package-json-lint/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-package-json-lint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm-package-json-lint/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/npm-run-all": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "pidtree": "^0.3.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" + }, + "bin": { + "npm-run-all": "bin/npm-run-all/index.js", + "run-p": "bin/run-p/index.js", + "run-s": "bin/run-s/index.js" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/npm-run-all/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/npm-run-all/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/nth-check": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "node_modules/nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "dev": true + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-filter": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/object-filter/-/object-filter-1.0.2.tgz", + "integrity": "sha1-rwt5f/6+r4pSxmN87b6IFs/sG8g=", + "dev": true + }, + "node_modules/object-inspect": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "dependencies": { + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "dev": true, + "dependencies": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.defaults/node_modules/for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "dependencies": { + "for-in": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.entries": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", + "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", + "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.getownpropertydescriptors": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz", + "integrity": "sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.hasown": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz", + "integrity": "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", + "dev": true, + "dependencies": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.map/node_modules/for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "dependencies": { + "for-in": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.values": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", + "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true, + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "dependencies": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "node_modules/p-each-series": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", + "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-locate/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dev": true, + "dependencies": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "dev": true, + "dependencies": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dev": true, + "dependencies": { + "parse5": "^6.0.1" + } + }, + "node_modules/pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "dev": true, + "dependencies": { + "path-root-regex": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pidtree": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", + "dev": true, + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", + "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "dev": true, + "dependencies": { + "node-modules-regexp": "^1.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "dependencies": { + "find-up": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-dir/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", + "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", + "dev": true, + "dependencies": { + "find-up": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-up/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-up/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-up/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-up/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-up/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/please-upgrade-node": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", + "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", + "dev": true, + "dependencies": { + "semver-compare": "^1.0.0" + } + }, + "node_modules/plur": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/plur/-/plur-4.0.0.tgz", + "integrity": "sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg==", + "dev": true, + "dependencies": { + "irregular-plurals": "^3.2.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/popmotion": { + "version": "9.3.6", + "resolved": "https://registry.npmjs.org/popmotion/-/popmotion-9.3.6.tgz", + "integrity": "sha512-ZTbXiu6zIggXzIliMi8LGxXBF5ST+wkpXGEjeTUDUOCdSQ356hij/xjeUdv0F8zCQNeqB1+PR5/BB+gC+QLAPw==", + "dependencies": { + "framesync": "5.3.0", + "hey-listen": "^1.0.8", + "style-value-types": "4.1.4", + "tslib": "^2.1.0" + } + }, + "node_modules/portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "dev": true, + "dependencies": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/portfinder/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/portfinder/node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss": { + "version": "8.3.9", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.9.tgz", + "integrity": "sha512-f/ZFyAKh9Dnqytx5X62jgjhhzttjZS7hMsohcI7HEI5tjELX/HxCy3EFhsRxyzGvrzFF+82XPvCS8T9TFleVJw==", + "dev": true, + "dependencies": { + "nanoid": "^3.1.28", + "picocolors": "^0.2.1", + "source-map-js": "^0.6.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-attribute-case-insensitive": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz", + "integrity": "sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA==", + "dev": true, + "dependencies": { + "postcss": "^7.0.2", + "postcss-selector-parser": "^6.0.2" + } + }, + "node_modules/postcss-attribute-case-insensitive/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/postcss-attribute-case-insensitive/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-attribute-case-insensitive/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-color-functional-notation": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz", + "integrity": "sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g==", + "dev": true, + "dependencies": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-color-functional-notation/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/postcss-color-functional-notation/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-color-functional-notation/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-color-gray": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz", + "integrity": "sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw==", + "dev": true, + "dependencies": { + "@csstools/convert-colors": "^1.4.0", + "postcss": "^7.0.5", + "postcss-values-parser": "^2.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-color-gray/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/postcss-color-gray/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-color-gray/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-color-hex-alpha": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz", + "integrity": "sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw==", + "dev": true, + "dependencies": { + "postcss": "^7.0.14", + "postcss-values-parser": "^2.0.1" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-color-hex-alpha/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/postcss-color-hex-alpha/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-color-hex-alpha/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-color-mod-function": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz", + "integrity": "sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ==", + "dev": true, + "dependencies": { + "@csstools/convert-colors": "^1.4.0", + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-color-mod-function/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/postcss-color-mod-function/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-color-mod-function/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-color-rebeccapurple": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz", + "integrity": "sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g==", + "dev": true, + "dependencies": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-color-rebeccapurple/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/postcss-color-rebeccapurple/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-color-rebeccapurple/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-custom-media": { + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz", + "integrity": "sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg==", + "dev": true, + "dependencies": { + "postcss": "^7.0.14" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-custom-media/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/postcss-custom-media/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-custom-media/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-custom-properties": { + "version": "8.0.11", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz", + "integrity": "sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA==", + "dev": true, + "dependencies": { + "postcss": "^7.0.17", + "postcss-values-parser": "^2.0.1" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-custom-properties/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/postcss-custom-properties/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-custom-properties/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-custom-selectors": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz", + "integrity": "sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w==", + "dev": true, + "dependencies": { + "postcss": "^7.0.2", + "postcss-selector-parser": "^5.0.0-rc.3" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-custom-selectors/node_modules/cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-custom-selectors/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/postcss-custom-selectors/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-custom-selectors/node_modules/postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "dev": true, + "dependencies": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-custom-selectors/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-dir-pseudo-class": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz", + "integrity": "sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw==", + "dev": true, + "dependencies": { + "postcss": "^7.0.2", + "postcss-selector-parser": "^5.0.0-rc.3" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/postcss-dir-pseudo-class/node_modules/cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-dir-pseudo-class/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/postcss-dir-pseudo-class/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-dir-pseudo-class/node_modules/postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "dev": true, + "dependencies": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-dir-pseudo-class/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-double-position-gradients": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz", + "integrity": "sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA==", + "dev": true, + "dependencies": { + "postcss": "^7.0.5", + "postcss-values-parser": "^2.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-double-position-gradients/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/postcss-double-position-gradients/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-double-position-gradients/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-env-function": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-2.0.2.tgz", + "integrity": "sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw==", + "dev": true, + "dependencies": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-env-function/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/postcss-env-function/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-env-function/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-focus-visible": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz", + "integrity": "sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g==", + "dev": true, + "dependencies": { + "postcss": "^7.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-focus-visible/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/postcss-focus-visible/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-focus-visible/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-focus-within": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz", + "integrity": "sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w==", + "dev": true, + "dependencies": { + "postcss": "^7.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-focus-within/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/postcss-focus-within/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-focus-within/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-font-variant": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz", + "integrity": "sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA==", + "dev": true, + "dependencies": { + "postcss": "^7.0.2" + } + }, + "node_modules/postcss-font-variant/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/postcss-font-variant/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-font-variant/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-gap-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz", + "integrity": "sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg==", + "dev": true, + "dependencies": { + "postcss": "^7.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-gap-properties/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/postcss-gap-properties/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-gap-properties/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-image-set-function": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz", + "integrity": "sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw==", + "dev": true, + "dependencies": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-image-set-function/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/postcss-image-set-function/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-image-set-function/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-import": { + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.0.2.tgz", + "integrity": "sha512-BJ2pVK4KhUyMcqjuKs9RijV5tatNzNa73e/32aBVE/ejYPe37iH+6vAu9WvqUkB5OAYgLHzbSvzHnorybJCm9g==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-initial": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.4.tgz", + "integrity": "sha512-3RLn6DIpMsK1l5UUy9jxQvoDeUN4gP939tDcKUHD/kM8SGSKbFAnvkpFpj3Bhtz3HGk1jWY5ZNWX6mPta5M9fg==", + "dev": true, + "dependencies": { + "postcss": "^7.0.2" + } + }, + "node_modules/postcss-initial/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/postcss-initial/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-initial/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-lab-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz", + "integrity": "sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg==", + "dev": true, + "dependencies": { + "@csstools/convert-colors": "^1.4.0", + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-lab-function/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/postcss-lab-function/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-lab-function/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-less": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-3.1.4.tgz", + "integrity": "sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA==", + "dev": true, + "dependencies": { + "postcss": "^7.0.14" + }, + "engines": { + "node": ">=6.14.4" + } + }, + "node_modules/postcss-less/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/postcss-less/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-less/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-loader": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-4.3.0.tgz", + "integrity": "sha512-M/dSoIiNDOo8Rk0mUqoj4kpGq91gcxCfb9PoyZVdZ76/AuhxylHDYZblNE8o+EQ9AMSASeMFEKxZf5aU6wlx1Q==", + "dev": true, + "dependencies": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.4", + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0", + "semver": "^7.3.4" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/postcss-loader/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/postcss-loader/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/postcss-loader/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/postcss-loader/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/postcss-logical": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-3.0.0.tgz", + "integrity": "sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA==", + "dev": true, + "dependencies": { + "postcss": "^7.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-logical/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/postcss-logical/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-logical/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-media-minmax": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz", + "integrity": "sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw==", + "dev": true, + "dependencies": { + "postcss": "^7.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-media-minmax/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/postcss-media-minmax/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-media-minmax/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-media-query-parser": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", + "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=", + "dev": true + }, + "node_modules/postcss-nested": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.1.tgz", + "integrity": "sha512-ZHNSAoHrMtbEzjq+Qs4R0gHijpXc6F1YUv4TGmGaz7rtfMvVJBbu5hMOH+CrhEaljQpEmx5N/P8i1pXTkbVAmg==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-nesting": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-7.0.1.tgz", + "integrity": "sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg==", + "dev": true, + "dependencies": { + "postcss": "^7.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-nesting/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/postcss-nesting/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-nesting/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-overflow-shorthand": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz", + "integrity": "sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g==", + "dev": true, + "dependencies": { + "postcss": "^7.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-overflow-shorthand/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/postcss-overflow-shorthand/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-overflow-shorthand/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-page-break": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-2.0.0.tgz", + "integrity": "sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ==", + "dev": true, + "dependencies": { + "postcss": "^7.0.2" + } + }, + "node_modules/postcss-page-break/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/postcss-page-break/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-page-break/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-place": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-4.0.1.tgz", + "integrity": "sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg==", + "dev": true, + "dependencies": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-place/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/postcss-place/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-place/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-preset-env": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz", + "integrity": "sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg==", + "dev": true, + "dependencies": { + "autoprefixer": "^9.6.1", + "browserslist": "^4.6.4", + "caniuse-lite": "^1.0.30000981", + "css-blank-pseudo": "^0.1.4", + "css-has-pseudo": "^0.10.0", + "css-prefers-color-scheme": "^3.1.1", + "cssdb": "^4.4.0", + "postcss": "^7.0.17", + "postcss-attribute-case-insensitive": "^4.0.1", + "postcss-color-functional-notation": "^2.0.1", + "postcss-color-gray": "^5.0.0", + "postcss-color-hex-alpha": "^5.0.3", + "postcss-color-mod-function": "^3.0.3", + "postcss-color-rebeccapurple": "^4.0.1", + "postcss-custom-media": "^7.0.8", + "postcss-custom-properties": "^8.0.11", + "postcss-custom-selectors": "^5.1.2", + "postcss-dir-pseudo-class": "^5.0.0", + "postcss-double-position-gradients": "^1.0.0", + "postcss-env-function": "^2.0.2", + "postcss-focus-visible": "^4.0.0", + "postcss-focus-within": "^3.0.0", + "postcss-font-variant": "^4.0.0", + "postcss-gap-properties": "^2.0.0", + "postcss-image-set-function": "^3.0.1", + "postcss-initial": "^3.0.0", + "postcss-lab-function": "^2.0.1", + "postcss-logical": "^3.0.0", + "postcss-media-minmax": "^4.0.0", + "postcss-nesting": "^7.0.0", + "postcss-overflow-shorthand": "^2.0.0", + "postcss-page-break": "^2.0.0", + "postcss-place": "^4.0.1", + "postcss-pseudo-class-any-link": "^6.0.0", + "postcss-replace-overflow-wrap": "^3.0.0", + "postcss-selector-matches": "^4.0.0", + "postcss-selector-not": "^4.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-preset-env/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/postcss-preset-env/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-preset-env/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-pseudo-class-any-link": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz", + "integrity": "sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew==", + "dev": true, + "dependencies": { + "postcss": "^7.0.2", + "postcss-selector-parser": "^5.0.0-rc.3" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-pseudo-class-any-link/node_modules/cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-pseudo-class-any-link/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/postcss-pseudo-class-any-link/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-pseudo-class-any-link/node_modules/postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "dev": true, + "dependencies": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-pseudo-class-any-link/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-replace-overflow-wrap": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz", + "integrity": "sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw==", + "dev": true, + "dependencies": { + "postcss": "^7.0.2" + } + }, + "node_modules/postcss-replace-overflow-wrap/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/postcss-replace-overflow-wrap/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-replace-overflow-wrap/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-resolve-nested-selector": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", + "integrity": "sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=", + "dev": true + }, + "node_modules/postcss-safe-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz", + "integrity": "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==", + "dev": true, + "dependencies": { + "postcss": "^7.0.26" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-safe-parser/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/postcss-safe-parser/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-safe-parser/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-sass": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/postcss-sass/-/postcss-sass-0.4.4.tgz", + "integrity": "sha512-BYxnVYx4mQooOhr+zer0qWbSPYnarAy8ZT7hAQtbxtgVf8gy+LSLT/hHGe35h14/pZDTw1DsxdbrwxBN++H+fg==", + "dev": true, + "dependencies": { + "gonzales-pe": "^4.3.0", + "postcss": "^7.0.21" + } + }, + "node_modules/postcss-sass/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/postcss-sass/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-sass/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-scss": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-2.1.1.tgz", + "integrity": "sha512-jQmGnj0hSGLd9RscFw9LyuSVAa5Bl1/KBPqG1NQw9w8ND55nY4ZEsdlVuYJvLPpV+y0nwTV5v/4rHPzZRihQbA==", + "dev": true, + "dependencies": { + "postcss": "^7.0.6" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-scss/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/postcss-scss/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-scss/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-selector-matches": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz", + "integrity": "sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "postcss": "^7.0.2" + } + }, + "node_modules/postcss-selector-matches/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/postcss-selector-matches/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-selector-matches/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-selector-not": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-4.0.1.tgz", + "integrity": "sha512-YolvBgInEK5/79C+bdFMyzqTg6pkYqDbzZIST/PDMqa/o3qtXenD05apBG2jLgT0/BQ77d4U2UK12jWpilqMAQ==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "postcss": "^7.0.2" + } + }, + "node_modules/postcss-selector-not/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/postcss-selector-not/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-selector-not/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", + "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", + "dev": true + }, + "node_modules/postcss-values-parser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz", + "integrity": "sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg==", + "dev": true, + "dependencies": { + "flatten": "^1.0.2", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=6.14.4" + } + }, + "node_modules/postcss/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.4.1.tgz", + "integrity": "sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==", + "dev": true, + "peer": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/pretty-format/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/pretty-format/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/pretty-time": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz", + "integrity": "sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "node_modules/prop-types-exact": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/prop-types-exact/-/prop-types-exact-1.2.0.tgz", + "integrity": "sha512-K+Tk3Kd9V0odiXFP9fwDHUYRyvK3Nun3GVyPapSIs5OBkITAm15W0CPFD/YKTkMUAbc0b9CUwRQp2ybiBIq+eA==", + "dependencies": { + "has": "^1.0.3", + "object.assign": "^4.1.0", + "reflect.ownkeys": "^0.2.0" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "node_modules/psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/puppeteer": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-10.4.0.tgz", + "integrity": "sha512-2cP8mBoqnu5gzAVpbZ0fRaobBWZM8GEUF4I1F6WbgHrKV/rz7SX8PG2wMymZgD0wo0UBlg2FBPNxlF/xlqW6+w==", + "dev": true, + "hasInstallScript": true, + "peer": true, + "dependencies": { + "debug": "4.3.1", + "devtools-protocol": "0.0.901419", + "extract-zip": "2.0.1", + "https-proxy-agent": "5.0.0", + "node-fetch": "2.6.1", + "pkg-dir": "4.2.0", + "progress": "2.0.1", + "proxy-from-env": "1.1.0", + "rimraf": "3.0.2", + "tar-fs": "2.0.0", + "unbzip2-stream": "1.3.3", + "ws": "7.4.6" + }, + "engines": { + "node": ">=10.18.1" + } + }, + "node_modules/puppeteer-core": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-10.4.0.tgz", + "integrity": "sha512-KU8zyb7AIOqNjLCN3wkrFXxh+EVaG+zrs2P03ATNjc3iwSxHsu5/EvZiREpQ/IJiT9xfQbDVgKcsvRuzLCxglQ==", + "dev": true, + "dependencies": { + "debug": "4.3.1", + "devtools-protocol": "0.0.901419", + "extract-zip": "2.0.1", + "https-proxy-agent": "5.0.0", + "node-fetch": "2.6.1", + "pkg-dir": "4.2.0", + "progress": "2.0.1", + "proxy-from-env": "1.1.0", + "rimraf": "3.0.2", + "tar-fs": "2.0.0", + "unbzip2-stream": "1.3.3", + "ws": "7.4.6" + }, + "engines": { + "node": ">=10.18.1" + } + }, + "node_modules/puppeteer-core/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/puppeteer-core/node_modules/node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "dev": true, + "engines": { + "node": "4.x || >=6.0.0" + } + }, + "node_modules/puppeteer-core/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/puppeteer-core/node_modules/progress": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.1.tgz", + "integrity": "sha512-OE+a6vzqazc+K6LxJrX5UPyKFvGnL5CYmq2jFGNIBWHpc4QyE49/YOumcrpQFJpfejmvRtbJzgO1zPmMCqlbBg==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/puppeteer-core/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/puppeteer-core/node_modules/ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/puppeteer/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "peer": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/puppeteer/node_modules/node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "dev": true, + "peer": true, + "engines": { + "node": "4.x || >=6.0.0" + } + }, + "node_modules/puppeteer/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "peer": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/puppeteer/node_modules/progress": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.1.tgz", + "integrity": "sha512-OE+a6vzqazc+K6LxJrX5UPyKFvGnL5CYmq2jFGNIBWHpc4QyE49/YOumcrpQFJpfejmvRtbJzgO1zPmMCqlbBg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/puppeteer/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "peer": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/puppeteer/node_modules/ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true, + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/qs": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", + "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/raf": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", + "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", + "dev": true, + "dependencies": { + "performance-now": "^2.1.0" + } + }, + "node_modules/railroad-diagrams": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz", + "integrity": "sha1-635iZ1SN3t+4mcG5Dlc3RVnN234=", + "dev": true + }, + "node_modules/randexp": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz", + "integrity": "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==", + "dev": true, + "dependencies": { + "discontinuous-range": "1.0.0", + "ret": "~0.1.10" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/raw-body": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.1.7.tgz", + "integrity": "sha1-HQJ8K/oRasxmI7yo8AAWVyqH1CU=", + "dev": true, + "dependencies": { + "bytes": "1", + "string_decoder": "0.10" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/raw-body/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/re-resizable": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/re-resizable/-/re-resizable-6.9.1.tgz", + "integrity": "sha512-KRYAgr9/j1PJ3K+t+MBhlQ+qkkoLDJ1rs0z1heIWvYbCW/9Vq4djDU+QumJ3hQbwwtzXF6OInla6rOx6hhgRhQ==", + "dependencies": { + "fast-memoize": "^2.5.1" + }, + "peerDependencies": { + "react": "^16.13.1 || ^17.0.0", + "react-dom": "^16.13.1 || ^17.0.0" + } + }, + "node_modules/react": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-addons-shallow-compare": { + "version": "15.6.3", + "resolved": "https://registry.npmjs.org/react-addons-shallow-compare/-/react-addons-shallow-compare-15.6.3.tgz", + "integrity": "sha512-EDJbgKTtGRLhr3wiGDXK/+AEJ59yqGS+tKE6mue0aNXT6ZMR7VJbbzIiT6akotmHg1BLj46ElJSb+NBMp80XBg==", + "dependencies": { + "object-assign": "^4.1.0" + } + }, + "node_modules/react-colorful": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/react-colorful/-/react-colorful-5.5.0.tgz", + "integrity": "sha512-BuzrlrM0ylg7coPkXOrRqlf2BgHLw5L44sybbr9Lg4xy7w9e5N7fGYbojOO0s8J0nvrM3PERN2rVFkvSa24lnQ==", + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/react-dom": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", + "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "scheduler": "^0.20.2" + }, + "peerDependencies": { + "react": "17.0.2" + } + }, + "node_modules/react-easy-crop": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/react-easy-crop/-/react-easy-crop-3.5.3.tgz", + "integrity": "sha512-ApTbh+lzKAvKqYW81ihd5J6ZTNN3vPDwi6ncFuUrHPI4bko2DlYOESkRm+0NYoW0H8YLaD7bxox+Z3EvIzAbUA==", + "dependencies": { + "normalize-wheel": "^1.0.1", + "tslib": "2.0.1" + }, + "peerDependencies": { + "react": ">=16.4.0", + "react-dom": ">=16.4.0" + } + }, + "node_modules/react-easy-crop/node_modules/tslib": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz", + "integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==" + }, + "node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + }, + "node_modules/react-moment-proptypes": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/react-moment-proptypes/-/react-moment-proptypes-1.8.1.tgz", + "integrity": "sha512-Er940DxWoObfIqPrZNfwXKugjxMIuk1LAuEzn23gytzV6hKS/sw108wibi9QubfMN4h+nrlje8eUCSbQRJo2fQ==", + "dependencies": { + "moment": ">=1.6.0" + }, + "peerDependencies": { + "moment": ">=1.6.0" + } + }, + "node_modules/react-resize-aware": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/react-resize-aware/-/react-resize-aware-3.1.1.tgz", + "integrity": "sha512-M8IyVLBN8D6tEUss+bxQlWte3ZYtNEGhg7rBxtCVG8yEBjUlZwUo5EFLq6tnvTZXcgAbCLjsQn+NCoTJKumRYg==", + "peerDependencies": { + "react": "^16.8.0 || 17.x" + } + }, + "node_modules/react-shallow-renderer": { + "version": "16.14.1", + "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.14.1.tgz", + "integrity": "sha512-rkIMcQi01/+kxiTE9D3fdS959U1g7gs+/rborw++42m1O9FAQiNI/UNRZExVUoAOprn4umcXf+pFRou8i4zuBg==", + "dev": true, + "dependencies": { + "object-assign": "^4.1.1", + "react-is": "^16.12.0 || ^17.0.0" + }, + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0" + } + }, + "node_modules/react-test-renderer": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-17.0.2.tgz", + "integrity": "sha512-yaQ9cB89c17PUb0x6UfWRs7kQCorVdHlutU1boVPEsB8IDZH6n9tHxMacc3y0JoXOJUsZb/t/Mb8FUWMKaM7iQ==", + "dev": true, + "dependencies": { + "object-assign": "^4.1.1", + "react-is": "^17.0.2", + "react-shallow-renderer": "^16.13.1", + "scheduler": "^0.20.2" + }, + "peerDependencies": { + "react": "17.0.2" + } + }, + "node_modules/react-use-gesture": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/react-use-gesture/-/react-use-gesture-9.1.3.tgz", + "integrity": "sha512-CdqA2SmS/fj3kkS2W8ZU8wjTbVBAIwDWaRprX7OKaj7HlGwBasGEFggmk5qNklknqk9zK/h8D355bEJFTpqEMg==", + "deprecated": "This package is no longer maintained. Please use @use-gesture/react instead", + "peerDependencies": { + "react": ">= 16.8.0" + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", + "dev": true, + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/read-cache/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "dependencies": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-pkg-up/node_modules/find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "dependencies": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-pkg-up/node_modules/load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-pkg-up/node_modules/parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "dependencies": { + "error-ex": "^1.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-pkg-up/node_modules/path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "dependencies": { + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-pkg-up/node_modules/path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-pkg-up/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-pkg-up/node_modules/read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "dependencies": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-pkg-up/node_modules/strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "dependencies": { + "is-utf8": "^0.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-pkg/node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/reakit": { + "version": "1.3.10", + "resolved": "https://registry.npmjs.org/reakit/-/reakit-1.3.10.tgz", + "integrity": "sha512-HxHtnegMDwidGU4Ik/fKTZ3coihf4nKeycs0QSIFWcau77qL5wL6xnqZrAxcjjDDPOIANct3LxTiAlf+qGLOlw==", + "dependencies": { + "@popperjs/core": "^2.5.4", + "body-scroll-lock": "^3.1.5", + "reakit-system": "^0.15.2", + "reakit-utils": "^0.15.2", + "reakit-warning": "^0.6.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/reakit" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + } + }, + "node_modules/reakit-system": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/reakit-system/-/reakit-system-0.15.2.tgz", + "integrity": "sha512-TvRthEz0DmD0rcJkGamMYx+bATwnGNWJpe/lc8UV2Js8nnPvkaxrHk5fX9cVASFrWbaIyegZHCWUBfxr30bmmA==", + "dependencies": { + "reakit-utils": "^0.15.2" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + } + }, + "node_modules/reakit-utils": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/reakit-utils/-/reakit-utils-0.15.2.tgz", + "integrity": "sha512-i/RYkq+W6hvfFmXw5QW7zvfJJT/K8a4qZ0hjA79T61JAFPGt23DsfxwyBbyK91GZrJ9HMrXFVXWMovsKBc1qEQ==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + } + }, + "node_modules/reakit-warning": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/reakit-warning/-/reakit-warning-0.6.2.tgz", + "integrity": "sha512-z/3fvuc46DJyD3nJAUOto6inz2EbSQTjvI/KBQDqxwB0y02HDyeP8IWOJxvkuAUGkWpeSx+H3QWQFSNiPcHtmw==", + "dependencies": { + "reakit-utils": "^0.15.2" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0" + } + }, + "node_modules/rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "dev": true, + "dependencies": { + "resolve": "^1.9.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/redux": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.1.2.tgz", + "integrity": "sha512-SH8PglcebESbd/shgf6mii6EIoRM0zrQyjcuQ+ojmfxjTtE0z9Y8pa62iA/OJ58qjP6j27uyW4kUF4jl/jd6sw==", + "dependencies": { + "@babel/runtime": "^7.9.2" + } + }, + "node_modules/redux-multi": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/redux-multi/-/redux-multi-0.1.12.tgz", + "integrity": "sha1-KOH+XklnLLxb2KB/Cyrq8O+DVcI=" + }, + "node_modules/reflect.ownkeys": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz", + "integrity": "sha1-dJrO7H8/34tj+SegSAnpDFwLNGA=" + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", + "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + }, + "node_modules/regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", + "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/regexpu-core": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", + "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^9.0.0", + "regjsgen": "^0.5.2", + "regjsparser": "^0.7.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regextras": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regextras/-/regextras-0.8.0.tgz", + "integrity": "sha512-k519uI04Z3SaY0fLX843MRXnDeG2+vHOFsyhiPZvNLe7r8rD2YNRjq4BQLZZ0oAr2NrtvZlICsXysGNFPGa3CQ==", + "dev": true, + "engines": { + "node": ">=0.1.14" + } + }, + "node_modules/regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "node_modules/regjsparser": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", + "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/remark": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/remark/-/remark-13.0.0.tgz", + "integrity": "sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA==", + "dev": true, + "dependencies": { + "remark-parse": "^9.0.0", + "remark-stringify": "^9.0.0", + "unified": "^9.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz", + "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==", + "dev": true, + "dependencies": { + "mdast-util-from-markdown": "^0.8.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-stringify": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-9.0.1.tgz", + "integrity": "sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==", + "dev": true, + "dependencies": { + "mdast-util-to-markdown": "^0.6.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rememo": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/rememo/-/rememo-3.0.0.tgz", + "integrity": "sha512-eWtut/7pqMRnSccbexb647iPjN7ir6Tmf4RG92ZVlykFEkHqGYy9tWnpHH3I+FS+WQ6lQ1i1iDgarYzGKgTcRQ==" + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "node_modules/repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "node_modules/requireindex": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", + "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", + "dev": true, + "engines": { + "node": ">=0.10.5" + } + }, + "node_modules/resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-bin": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/resolve-bin/-/resolve-bin-0.4.3.tgz", + "integrity": "sha512-9u8TMpc+SEHXxQXblXHz5yRvRZERkCZimFN9oz85QI3uhkh7nqfjm6OGTLg+8vucpXGcY4jLK6WkylPmt7GSvw==", + "dev": true, + "dependencies": { + "find-parent-dir": "~0.3.0" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-dir": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz", + "integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=", + "dev": true, + "dependencies": { + "expand-tilde": "^1.2.2", + "global-modules": "^0.2.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-dir/node_modules/expand-tilde": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", + "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=", + "dev": true, + "dependencies": { + "os-homedir": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "deprecated": "https://github.com/lydell/resolve-url#deprecated", + "dev": true + }, + "node_modules/resolve.exports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", + "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/restore-cursor/node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/restore-cursor/node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/rst-selector-parser": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz", + "integrity": "sha1-gbIw6i/MYGbInjRy3nlChdmwPZE=", + "dev": true, + "dependencies": { + "lodash.flattendeep": "^4.4.0", + "nearley": "^2.7.10" + } + }, + "node_modules/rsvp": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", + "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", + "dev": true, + "engines": { + "node": "6.* || >= 7.*" + } + }, + "node_modules/rtlcss": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-2.6.2.tgz", + "integrity": "sha512-06LFAr+GAPo+BvaynsXRfoYTJvSaWRyOhURCQ7aeI1MKph9meM222F+Zkt3bDamyHHJuGi3VPtiRkpyswmQbGA==", + "dev": true, + "dependencies": { + "@choojs/findup": "^0.2.1", + "chalk": "^2.4.2", + "mkdirp": "^0.5.1", + "postcss": "^6.0.23", + "strip-json-comments": "^2.0.0" + }, + "bin": { + "rtlcss": "bin/rtlcss.js" + } + }, + "node_modules/rtlcss-webpack-plugin": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/rtlcss-webpack-plugin/-/rtlcss-webpack-plugin-4.0.6.tgz", + "integrity": "sha512-sWWr/SPVGckqniXpTXWZqh1tDh9LghlUygtnAeNKMrHEiq6xoPDWQo+/0NCZ8KPsju0hovWtvI+jS1kYjTDZwQ==", + "dev": true, + "dependencies": { + "babel-runtime": "~6.25.0", + "rtlcss": "^2.2.1" + } + }, + "node_modules/rtlcss/node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/rtlcss/node_modules/postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "dependencies": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/rtlcss/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rtlcss/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rungen": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/rungen/-/rungen-0.3.2.tgz", + "integrity": "sha1-QAwJ6+kU57F+C27zJjQA/Cq8fLM=" + }, + "node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/rxjs/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/safe-json-parse": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-json-parse/-/safe-json-parse-1.0.1.tgz", + "integrity": "sha1-PnZyPjjf3aE8mx0poeB//uSzC1c=", + "dev": true + }, + "node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sane": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", + "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", + "deprecated": "some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added", + "dev": true, + "dependencies": { + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" + }, + "bin": { + "sane": "src/cli.js" + }, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/sane/node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/sane/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "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" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/sane/node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "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" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/sane/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/sane/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "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" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/sane/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sass": { + "version": "1.43.4", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.43.4.tgz", + "integrity": "sha512-/ptG7KE9lxpGSYiXn7Ar+lKOv37xfWsZRtFYal2QHNigyVQDx685VFT/h7ejVr+R8w7H4tmUgtulsKl5YpveOg==", + "dev": true, + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/sass-loader": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.3.0.tgz", + "integrity": "sha512-6l9qwhdOb7qSrtOu96QQ81LVl8v6Dp9j1w3akOm0aWHyrTYtagDt5+kS32N4yq4hHk3M+rdqoRMH+lIdqvW6HA==", + "dev": true, + "dependencies": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0", + "sass": "^1.3.0", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + } + } + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/scheduler": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", + "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/select": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", + "integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=" + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", + "dev": true + }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shallow-clone": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz", + "integrity": "sha1-WQnodLp3EG1zrEFM/sH/yofZcGA=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.1", + "kind-of": "^2.0.1", + "lazy-cache": "^0.2.3", + "mixin-object": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shallow-clone/node_modules/kind-of": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", + "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=", + "dev": true, + "dependencies": { + "is-buffer": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shallow-clone/node_modules/lazy-cache": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", + "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shell-quote": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", + "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", + "dev": true + }, + "node_modules/shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true, + "optional": true + }, + "node_modules/showdown": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/showdown/-/showdown-1.9.1.tgz", + "integrity": "sha512-9cGuS382HcvExtf5AHk7Cb4pAeQQ+h0eTr33V1mu+crYWV4KvWAw6el92bDrqGEk5d46Ai/fhbEUwqJ/mTCNEA==", + "dependencies": { + "yargs": "^14.2" + }, + "bin": { + "showdown": "bin/showdown.js" + } + }, + "node_modules/showdown/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/showdown/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/showdown/node_modules/cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dependencies": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "node_modules/showdown/node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "node_modules/showdown/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/showdown/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "engines": { + "node": ">=4" + } + }, + "node_modules/showdown/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/showdown/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/showdown/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/showdown/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/showdown/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "engines": { + "node": ">=4" + } + }, + "node_modules/showdown/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/showdown/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/showdown/node_modules/wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dependencies": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/showdown/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "node_modules/showdown/node_modules/yargs": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz", + "integrity": "sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==", + "dependencies": { + "cliui": "^5.0.0", + "decamelize": "^1.2.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": "^15.0.1" + } + }, + "node_modules/showdown/node_modules/yargs-parser": { + "version": "15.0.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.3.tgz", + "integrity": "sha512-/MVEVjTXy/cGAjdtQf8dW3V9b97bPN7rNn8ETj6BmAQL7ibC7O1Q9SPJbGjgh3SlwoBNXMzj/ZGIj8mBgl12YA==", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz", + "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==", + "dev": true + }, + "node_modules/simple-html-tokenizer": { + "version": "0.5.11", + "resolved": "https://registry.npmjs.org/simple-html-tokenizer/-/simple-html-tokenizer-0.5.11.tgz", + "integrity": "sha512-C2WEK/Z3HoSFbYq8tI7ni3eOo/NneSPRoPpcM7WdLjFOArFuyXEjAoCdOC3DgMfRyziZQ1hCNR4mrNdWEvD0og==" + }, + "node_modules/sirv": { + "version": "1.0.18", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.18.tgz", + "integrity": "sha512-f2AOPogZmXgJ9Ma2M22ZEhc1dNtRIzcEkiflMFeVTRq+OViOZMvH1IPMVOwrKaxpSaHioBJiDR0SluRqGa7atA==", + "dev": true, + "dependencies": { + "@polka/url": "^1.0.0-next.20", + "mime": "^2.3.1", + "totalist": "^1.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/slice-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "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" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "dependencies": { + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", + "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.0.tgz", + "integrity": "sha512-GKGWqWvYr04M7tn8dryIWvb0s8YM41z82iQv01yBtIylgxax0CwvSy6gc2Y02iuXwEfGWRlMicH0nvms9UZphw==", + "dev": true, + "dependencies": { + "abab": "^2.0.5", + "iconv-lite": "^0.6.2", + "source-map-js": "^0.6.2" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "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" + } + }, + "node_modules/source-map-support": { + "version": "0.5.20", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz", + "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "dev": true + }, + "node_modules/spawnd": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/spawnd/-/spawnd-5.0.0.tgz", + "integrity": "sha512-28+AJr82moMVWolQvlAIv3JcYDkjkFTEmfDc503wxrF5l2rQ3dFz6DpbXp3kD4zmgGGldfM4xM4v1sFj/ZaIOA==", + "dev": true, + "dependencies": { + "exit": "^0.1.2", + "signal-exit": "^3.0.3", + "tree-kill": "^1.2.2", + "wait-port": "^0.2.9" + } + }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz", + "integrity": "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==", + "dev": true + }, + "node_modules/specificity": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/specificity/-/specificity-0.4.1.tgz", + "integrity": "sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg==", + "dev": true, + "bin": { + "specificity": "bin/specificity" + } + }, + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" + }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "node_modules/stack-utils": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", + "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/std-env": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-2.3.1.tgz", + "integrity": "sha512-eOsoKTWnr6C8aWrqJJ2KAReXoa7Vn5Ywyw6uCXgA/xDhxPoaIsBa5aNJmISY04dLwXPBnDHW4diGM7Sn5K4R/g==", + "dev": true, + "dependencies": { + "ci-info": "^3.1.1" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/string-argv": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", + "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", + "dev": true, + "engines": { + "node": ">=0.6.19" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-template": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz", + "integrity": "sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0=", + "dev": true + }, + "node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/string-width/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz", + "integrity": "sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1", + "get-intrinsic": "^1.1.1", + "has-symbols": "^1.0.2", + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.3.1", + "side-channel": "^1.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.padend": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.3.tgz", + "integrity": "sha512-jNIIeokznm8SD/TZISQsZKYu7RJyheFNt84DUPrh482GC8RVp2MKqm2O5oBRdGxbDQoXrhhWtPIWQOiy20svUg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.5.tgz", + "integrity": "sha512-Lnh17webJVsD6ECeovpVN17RlAKjmz4rF9S+8Y45CkMc/ufVpTkU3vZIyIC7sllQ1FCvObZnnCdNs/HXTUOTlg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "dev": true, + "dependencies": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-outer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", + "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-outer/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/style-search": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", + "integrity": "sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI=", + "dev": true + }, + "node_modules/style-value-types": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/style-value-types/-/style-value-types-4.1.4.tgz", + "integrity": "sha512-LCJL6tB+vPSUoxgUBt9juXIlNJHtBMy8jkXzUJSBzeHWdBu6lhzHqCvLVkXFGsFIlNa2ln1sQHya/gzaFmB2Lg==", + "dependencies": { + "hey-listen": "^1.0.8", + "tslib": "^2.1.0" + } + }, + "node_modules/stylelint": { + "version": "13.13.1", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.13.1.tgz", + "integrity": "sha512-Mv+BQr5XTUrKqAXmpqm6Ddli6Ief+AiPZkRsIrAoUKFuq/ElkUh9ZMYxXD0iQNZ5ADghZKLOWz1h7hTClB7zgQ==", + "dev": true, + "dependencies": { + "@stylelint/postcss-css-in-js": "^0.37.2", + "@stylelint/postcss-markdown": "^0.36.2", + "autoprefixer": "^9.8.6", + "balanced-match": "^2.0.0", + "chalk": "^4.1.1", + "cosmiconfig": "^7.0.0", + "debug": "^4.3.1", + "execall": "^2.0.0", + "fast-glob": "^3.2.5", + "fastest-levenshtein": "^1.0.12", + "file-entry-cache": "^6.0.1", + "get-stdin": "^8.0.0", + "global-modules": "^2.0.0", + "globby": "^11.0.3", + "globjoin": "^0.1.4", + "html-tags": "^3.1.0", + "ignore": "^5.1.8", + "import-lazy": "^4.0.0", + "imurmurhash": "^0.1.4", + "known-css-properties": "^0.21.0", + "lodash": "^4.17.21", + "log-symbols": "^4.1.0", + "mathml-tag-names": "^2.1.3", + "meow": "^9.0.0", + "micromatch": "^4.0.4", + "normalize-selector": "^0.2.0", + "postcss": "^7.0.35", + "postcss-html": "^0.36.0", + "postcss-less": "^3.1.4", + "postcss-media-query-parser": "^0.2.3", + "postcss-resolve-nested-selector": "^0.1.1", + "postcss-safe-parser": "^4.0.2", + "postcss-sass": "^0.4.4", + "postcss-scss": "^2.1.1", + "postcss-selector-parser": "^6.0.5", + "postcss-syntax": "^0.36.2", + "postcss-value-parser": "^4.1.0", + "resolve-from": "^5.0.0", + "slash": "^3.0.0", + "specificity": "^0.4.1", + "string-width": "^4.2.2", + "strip-ansi": "^6.0.0", + "style-search": "^0.1.0", + "sugarss": "^2.0.0", + "svg-tags": "^1.0.0", + "table": "^6.6.0", + "v8-compile-cache": "^2.3.0", + "write-file-atomic": "^3.0.3" + }, + "bin": { + "stylelint": "bin/stylelint.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/stylelint" + } + }, + "node_modules/stylelint-config-recommended": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-3.0.0.tgz", + "integrity": "sha512-F6yTRuc06xr1h5Qw/ykb2LuFynJ2IxkKfCMf+1xqPffkxh0S09Zc902XCffcsw/XMFq/OzQ1w54fLIDtmRNHnQ==", + "dev": true, + "peerDependencies": { + "stylelint": ">=10.1.0" + } + }, + "node_modules/stylelint-config-recommended-scss": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-4.3.0.tgz", + "integrity": "sha512-/noGjXlO8pJTr/Z3qGMoaRFK8n1BFfOqmAbX1RjTIcl4Yalr+LUb1zb9iQ7pRx1GsEBXOAm4g2z5/jou/pfMPg==", + "dev": true, + "dependencies": { + "stylelint-config-recommended": "^5.0.0" + }, + "peerDependencies": { + "stylelint": "^10.1.0 || ^11.0.0 || ^12.0.0 || ^13.0.0", + "stylelint-scss": "^3.0.0" + } + }, + "node_modules/stylelint-config-recommended-scss/node_modules/stylelint-config-recommended": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-5.0.0.tgz", + "integrity": "sha512-c8aubuARSu5A3vEHLBeOSJt1udOdS+1iue7BmJDTSXoCBmfEQmmWX+59vYIj3NQdJBY6a/QRv1ozVFpaB9jaqA==", + "dev": true, + "peerDependencies": { + "stylelint": "^13.13.0" + } + }, + "node_modules/stylelint-scss": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-3.21.0.tgz", + "integrity": "sha512-CMI2wSHL+XVlNExpauy/+DbUcB/oUZLARDtMIXkpV/5yd8nthzylYd1cdHeDMJVBXeYHldsnebUX6MoV5zPW4A==", + "dev": true, + "dependencies": { + "lodash": "^4.17.15", + "postcss-media-query-parser": "^0.2.3", + "postcss-resolve-nested-selector": "^0.1.1", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "stylelint": "^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0" + } + }, + "node_modules/stylelint/node_modules/@stylelint/postcss-css-in-js": { + "version": "0.37.2", + "resolved": "https://registry.npmjs.org/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.2.tgz", + "integrity": "sha512-nEhsFoJurt8oUmieT8qy4nk81WRHmJynmVwn/Vts08PL9fhgIsMhk1GId5yAN643OzqEEb5S/6At2TZW7pqPDA==", + "dev": true, + "dependencies": { + "@babel/core": ">=7.9.0" + }, + "peerDependencies": { + "postcss": ">=7.0.0", + "postcss-syntax": ">=0.36.2" + } + }, + "node_modules/stylelint/node_modules/@stylelint/postcss-markdown": { + "version": "0.36.2", + "resolved": "https://registry.npmjs.org/@stylelint/postcss-markdown/-/postcss-markdown-0.36.2.tgz", + "integrity": "sha512-2kGbqUVJUGE8dM+bMzXG/PYUWKkjLIkRLWNh39OaADkiabDRdw8ATFCgbMz5xdIcvwspPAluSL7uY+ZiTWdWmQ==", + "deprecated": "Use the original unforked package instead: postcss-markdown", + "dev": true, + "dependencies": { + "remark": "^13.0.0", + "unist-util-find-all-after": "^3.0.2" + }, + "peerDependencies": { + "postcss": ">=7.0.0", + "postcss-syntax": ">=0.36.2" + } + }, + "node_modules/stylelint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/stylelint/node_modules/balanced-match": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", + "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", + "dev": true + }, + "node_modules/stylelint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/stylelint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/stylelint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/stylelint/node_modules/dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + } + }, + "node_modules/stylelint/node_modules/dom-serializer/node_modules/domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/stylelint/node_modules/dom-serializer/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/stylelint/node_modules/domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "node_modules/stylelint/node_modules/domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "dependencies": { + "domelementtype": "1" + } + }, + "node_modules/stylelint/node_modules/domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "dependencies": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "node_modules/stylelint/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/stylelint/node_modules/entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "node_modules/stylelint/node_modules/global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dev": true, + "dependencies": { + "global-prefix": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/stylelint/node_modules/global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dev": true, + "dependencies": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/stylelint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/stylelint/node_modules/hosted-git-info": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", + "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stylelint/node_modules/htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "dependencies": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + } + }, + "node_modules/stylelint/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stylelint/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stylelint/node_modules/meow": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", + "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", + "dev": true, + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize": "^1.2.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylelint/node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stylelint/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/stylelint/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/stylelint/node_modules/postcss-html": { + "version": "0.36.0", + "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-0.36.0.tgz", + "integrity": "sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw==", + "dev": true, + "dependencies": { + "htmlparser2": "^3.10.0" + }, + "peerDependencies": { + "postcss": ">=5.0.0", + "postcss-syntax": ">=0.36.0" + } + }, + "node_modules/stylelint/node_modules/postcss-syntax": { + "version": "0.36.2", + "resolved": "https://registry.npmjs.org/postcss-syntax/-/postcss-syntax-0.36.2.tgz", + "integrity": "sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==", + "dev": true, + "peerDependencies": { + "postcss": ">=5.0.0" + } + }, + "node_modules/stylelint/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/stylelint/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylelint/node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/stylelint/node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/stylelint/node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/stylelint/node_modules/read-pkg/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/stylelint/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/stylelint/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stylelint/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stylelint/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/stylelint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/stylelint/node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylelint/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/stylelint/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/stylis": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.10.tgz", + "integrity": "sha512-m3k+dk7QeJw660eIKRRn3xPF6uuvHs/FFzjX3HQ5ove0qYsiygoAhwn5a3IYKaZPo5LrYD0rfVmtv1gNY1uYwg==" + }, + "node_modules/sugarss": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-2.0.0.tgz", + "integrity": "sha512-WfxjozUk0UVA4jm+U1d736AUpzSrNsQcIbyOkoE364GrtWmIrFdk5lksEupgWMD4VaT/0kVx1dobpiDumSgmJQ==", + "dev": true, + "dependencies": { + "postcss": "^7.0.2" + } + }, + "node_modules/sugarss/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/sugarss/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/sugarss/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-hyperlinks": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", + "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/svg-parser": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", + "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==", + "dev": true + }, + "node_modules/svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=", + "dev": true + }, + "node_modules/svgo": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.7.0.tgz", + "integrity": "sha512-aDLsGkre4fTDCWvolyW+fs8ZJFABpzLXbtdK1y71CKnHzAnpDxKXPj2mNKj+pyOXUCzFHzuxRJ94XOFygOWV3w==", + "dev": true, + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "nanocolors": "^0.1.12", + "stable": "^0.1.8" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/svgo/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "node_modules/table": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.2.tgz", + "integrity": "sha512-UFZK67uvyNivLeQbVtkiUs8Uuuxv24aSL4/Vil2PJVtMgU8Lx0CYkP12uCGa3kjyQzOSgV1+z9Wkb82fCGsO0g==", + "dev": true, + "dependencies": { + "ajv": "^8.0.1", + "lodash.clonedeep": "^4.5.0", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "8.6.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.3.tgz", + "integrity": "sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/table/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/table/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/table/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/table/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/table/node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/table/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tannin": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tannin/-/tannin-1.2.0.tgz", + "integrity": "sha512-U7GgX/RcSeUETbV7gYgoz8PD7Ni4y95pgIP/Z6ayI3CfhSujwKEBlGFTCRN+Aqnuyf4AN2yHL+L8x+TCGjb9uA==", + "dependencies": { + "@tannin/plural-forms": "^1.1.0" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar-fs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.0.tgz", + "integrity": "sha512-vaY0obB6Om/fso8a8vakQBzwholQ7v5+uy+tF3Ozvxv1KNezmVQAiWtcNmMHFSFPqL3dJA8ha6gdtFbfX9mcxA==", + "dev": true, + "dependencies": { + "chownr": "^1.1.1", + "mkdirp": "^0.5.1", + "pump": "^3.0.0", + "tar-stream": "^2.0.0" + } + }, + "node_modules/tar-fs/node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terminal-link/node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terminal-link/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terser": { + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz", + "integrity": "sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.2.4.tgz", + "integrity": "sha512-E2CkNMN+1cho04YpdANyRrn8CyN4yMy+WdFKZIySFZrGXZxJwJP6PMNGGc/Mcr6qygQHUUqRxnAPmi0M9f00XA==", + "dev": true, + "dependencies": { + "jest-worker": "^27.0.6", + "p-limit": "^3.1.0", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1", + "terser": "^5.7.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser-webpack-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "node_modules/throat": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", + "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", + "dev": true, + "peer": true + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "node_modules/timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "dev": true + }, + "node_modules/tiny-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" + }, + "node_modules/tiny-lr": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-1.1.1.tgz", + "integrity": "sha512-44yhA3tsaRoMOjQQ+5v5mVdqef+kH6Qze9jTpqtVufgYjYt08zyZAwNwwVBj3i1rJMnR52IxOW0LK0vBzgAkuA==", + "dev": true, + "dependencies": { + "body": "^5.1.0", + "debug": "^3.1.0", + "faye-websocket": "~0.10.0", + "livereload-js": "^2.3.0", + "object-assign": "^4.1.0", + "qs": "^6.4.0" + } + }, + "node_modules/tiny-lr/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/tinycolor2": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.2.tgz", + "integrity": "sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==", + "engines": { + "node": "*" + } + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/totalist": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz", + "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "dev": true, + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/traverse": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", + "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=" + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/trim-repeated/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/trough": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", + "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.11.0.tgz", + "integrity": "sha512-7ecdYDnIdmv639mmDwslG6KQg1Z9STTz1j7Gcz0xa+nshh/gKDAHcPxRbWOsA3SPp0tXP2leTcY9Kw+NAkfZzA==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.0", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "dev": true, + "engines": { + "node": ">=0.6.11 <=0.7.0 || >=0.7.3" + } + }, + "node_modules/turbo-combine-reducers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/turbo-combine-reducers/-/turbo-combine-reducers-1.0.2.tgz", + "integrity": "sha512-gHbdMZlA6Ym6Ur5pSH/UWrNQMIM9IqTH6SoL1DbHpqEdQ8i+cFunSmSlFykPt0eGQwZ4d/XTHOl74H0/kFBVWw==" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", + "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", + "dev": true, + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", + "dev": true + }, + "node_modules/unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dependencies": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unbzip2-stream": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz", + "integrity": "sha512-fUlAF7U9Ah1Q6EieQ4x4zLNejrRvDWUYmxXUpN3uziFYCHapjWFaCAnreY9bGgxzaMCFAPPpYNng57CypwJVhg==", + "dev": true, + "dependencies": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, + "node_modules/unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/underscore.string": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.5.tgz", + "integrity": "sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg==", + "dev": true, + "dependencies": { + "sprintf-js": "^1.0.3", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unified": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz", + "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==", + "dev": true, + "dependencies": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified/node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" + } + }, + "node_modules/unified/node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "node_modules/uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, + "node_modules/unist-util-find-all-after": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-3.0.2.tgz", + "integrity": "sha512-xaTC/AGZ0rIM2gM28YVRAFPIZpzbpDtU3dRmp7EXlNVA8ziQc4hY3H7BHXM1J49nEmiqc3svnqMReW+PGqbZKQ==", + "dev": true, + "dependencies": { + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", + "dev": true + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "dev": true + }, + "node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "deprecated": "Please see https://github.com/lydell/urix#deprecated", + "dev": true + }, + "node_modules/url-loader": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", + "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "mime-types": "^2.1.27", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "file-loader": "*", + "webpack": "^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "file-loader": { + "optional": true + } + } + }, + "node_modules/url-loader/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/use-memo-one": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-memo-one/-/use-memo-one-1.1.2.tgz", + "integrity": "sha512-u2qFKtxLsia/r8qG0ZKkbytbztzRb317XCkT7yP8wxL0tZ/CzK2G+WWie5vWvpyeP7+YoPIwbJoIHJ4Ba4k0oQ==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "node_modules/util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "node_modules/v8-to-istanbul": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.0.tgz", + "integrity": "sha512-/PRhfd8aTNp9Ggr62HPzXg2XasNFGy5PBt0Rp04du7/8GNNSgxFL6WBTkgMKSL9bFjH+8kKEG3f37FmxiTqUUA==", + "dev": true, + "peer": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/v8-to-istanbul/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/v8flags": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", + "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", + "dev": true, + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/vfile": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile/node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" + } + }, + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, + "dependencies": { + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/wait-on": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-5.3.0.tgz", + "integrity": "sha512-DwrHrnTK+/0QFaB9a8Ol5Lna3k7WvUR4jzSKmz0YaPBpuN2sACyiPVKVfj6ejnjcajAcvn3wlbTyMIn9AZouOg==", + "dev": true, + "dependencies": { + "axios": "^0.21.1", + "joi": "^17.3.0", + "lodash": "^4.17.21", + "minimist": "^1.2.5", + "rxjs": "^6.6.3" + }, + "bin": { + "wait-on": "bin/wait-on" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/wait-port": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/wait-port/-/wait-port-0.2.9.tgz", + "integrity": "sha512-hQ/cVKsNqGZ/UbZB/oakOGFqic00YAMM5/PEj3Bt4vKarv2jWIWzDbqlwT94qMs/exAQAsvMOq99sZblV92zxQ==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "commander": "^3.0.2", + "debug": "^4.1.1" + }, + "bin": { + "wait-port": "bin/wait-port.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wait-port/node_modules/commander": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", + "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", + "dev": true + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/watchpack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.2.0.tgz", + "integrity": "sha512-up4YAn/XHgZHIxFBVCdlMiWDj6WaLKpwVeGQk2I5thdYxF/KmF0aaz6TfJZ/hfl1h/XlcDr7k1KH7ThDagpFaA==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true, + "engines": { + "node": ">=10.4" + } + }, + "node_modules/webpack": { + "version": "5.60.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.60.0.tgz", + "integrity": "sha512-OL5GDYi2dKxnwJPSOg2tODgzDxAffN0osgWkZaBo/l3ikCxDFP+tuJT3uF7GyBE3SDBpKML/+a8EobyWAQO3DQ==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.0", + "@types/estree": "^0.0.50", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.8.3", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.4", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.2.0", + "webpack-sources": "^3.2.0" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-bundle-analyzer": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.5.0.tgz", + "integrity": "sha512-GUMZlM3SKwS8Z+CKeIFx7CVoHn3dXFcUAjT/dcZQQmfSZGvitPfMob2ipjai7ovFFqPvTqkEZ/leL4O0YOdAYQ==", + "dev": true, + "dependencies": { + "acorn": "^8.0.4", + "acorn-walk": "^8.0.0", + "chalk": "^4.1.0", + "commander": "^7.2.0", + "gzip-size": "^6.0.0", + "lodash": "^4.17.20", + "opener": "^1.5.2", + "sirv": "^1.0.7", + "ws": "^7.3.1" + }, + "bin": { + "webpack-bundle-analyzer": "lib/bin/analyzer.js" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/acorn": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz", + "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/webpack-bundle-analyzer/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-cli": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.1.tgz", + "integrity": "sha512-JYRFVuyFpzDxMDB+v/nanUdQYcZtqFPGzmlW4s+UkPMFhSpfRNmf1z4AwYcHJVdvEFAM7FFCQdNTpsBYhDLusQ==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.1.0", + "@webpack-cli/info": "^1.4.0", + "@webpack-cli/serve": "^1.6.0", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "execa": "^5.0.0", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "@webpack-cli/migrate": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "dev": true + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-cli/node_modules/interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/webpack-livereload-plugin": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/webpack-livereload-plugin/-/webpack-livereload-plugin-3.0.2.tgz", + "integrity": "sha512-5JeZ2dgsvSNG+clrkD/u2sEiPcNk4qwCVZZmW8KpqKcNlkGv7IJjdVrq13+etAmMZYaCF1EGXdHkVFuLgP4zfw==", + "dev": true, + "dependencies": { + "anymatch": "^3.1.1", + "portfinder": "^1.0.17", + "schema-utils": ">1.0.0", + "tiny-lr": "^1.1.1" + }, + "engines": { + "node": ">= 10.18.0" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-merge/node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-merge/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-merge/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-merge/node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-sources": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz", + "integrity": "sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==", + "dev": true, + "dependencies": { + "source-list-map": "^2.0.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-sources/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/acorn": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz", + "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/webpack/node_modules/acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "dev": true, + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack/node_modules/webpack-sources": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.1.tgz", + "integrity": "sha512-t6BMVLQ0AkjBOoRTZgqrWm7xbXMBzD+XDq2EZ96+vMfn3qKgsvdXZhbPZ4ElUOpdv4u+iiGe+w3+J75iy/bYGA==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpackbar": { + "version": "5.0.0-3", + "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-5.0.0-3.tgz", + "integrity": "sha512-viW6KCYjMb0NPoDrw2jAmLXU2dEOhRrtku28KmOfeE1vxbfwCYuTbTaMhnkrCZLFAFyY9Q49Z/jzYO80Dw5b8g==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.3.1", + "chalk": "^4.1.0", + "consola": "^2.15.0", + "figures": "^3.2.0", + "pretty-time": "^1.1.0", + "std-env": "^2.2.1", + "text-table": "^0.2.0", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "webpack": "3 || 4 || 5" + } + }, + "node_modules/webpackbar/node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/webpackbar/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/webpackbar/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/webpackbar/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/webpackbar/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/webpackbar/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/webpackbar/node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/webpackbar/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpackbar/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpackbar/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "dependencies": { + "iconv-lite": "0.4.24" + } + }, + "node_modules/whatwg-encoding/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, + "dependencies": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "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" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "node_modules/wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wporg-api-client": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wporg-api-client/-/wporg-api-client-1.0.1.tgz", + "integrity": "sha512-XdPnka1eUIZZVbzQuPQ4OXnxLVzAEcgSLZT/UU8er0g32GcTi5U5go6zXd19/RxESR0ftORO1if4+dLQY80/5w==", + "dev": true, + "dependencies": { + "axios": "^0.21.0", + "esm": "^3.2.25", + "lodash": "^4.17.20" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/ws": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz", + "integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "peer": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs-parser/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "peer": true + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "peer": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zwitch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", + "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + }, + "dependencies": { + "@actions/github": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@actions/github/-/github-5.0.0.tgz", + "integrity": "sha512-QvE9eAAfEsS+yOOk0cylLBIO/d6WyWIOvsxxzdrPFaud39G6BOkUwScXZn1iBzQzHyu9SBkkLSWlohDWdsasAQ==", + "dev": true, + "requires": { + "@actions/http-client": "^1.0.11", + "@octokit/core": "^3.4.0", + "@octokit/plugin-paginate-rest": "^2.13.3", + "@octokit/plugin-rest-endpoint-methods": "^5.1.1" + } + }, + "@actions/http-client": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-1.0.11.tgz", + "integrity": "sha512-VRYHGQV1rqnROJqdMvGUbY/Kn8vriQe/F9HR2AlYHzmKuM/p3kjNuXhmdBfcVgsvRWTz5C5XW5xvndZrVBuAYg==", + "dev": true, + "requires": { + "tunnel": "0.0.6" + } + }, + "@axe-core/puppeteer": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@axe-core/puppeteer/-/puppeteer-4.3.1.tgz", + "integrity": "sha512-ojZzd2koeMFj4Crz842g54gU9MEosZA2Vzq8zoRBsT7lQ+EwjASNUfNKQHDhJaO53oEMC7xZv9Y2bhDrAhJRlg==", + "dev": true, + "requires": { + "axe-core": "^4.3.3" + } + }, + "@babel/code-frame": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", + "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", + "requires": { + "@babel/highlight": "^7.14.5" + } + }, + "@babel/compat-data": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", + "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==" + }, + "@babel/core": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.8.tgz", + "integrity": "sha512-3UG9dsxvYBMYwRv+gS41WKHno4K60/9GPy1CJaH6xy3Elq8CTtvtjT5R5jmNhXfCYLX2mTw+7/aq5ak/gOE0og==", + "requires": { + "@babel/code-frame": "^7.15.8", + "@babel/generator": "^7.15.8", + "@babel/helper-compilation-targets": "^7.15.4", + "@babel/helper-module-transforms": "^7.15.8", + "@babel/helpers": "^7.15.4", + "@babel/parser": "^7.15.8", + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.6", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + } + }, + "@babel/generator": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz", + "integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==", + "requires": { + "@babel/types": "^7.15.6", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz", + "integrity": "sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.15.4.tgz", + "integrity": "sha512-P8o7JP2Mzi0SdC6eWr1zF+AEYvrsZa7GSY1lTayjF5XJhVH0kjLYUZPvTMflP7tBgZoe9gIhTa60QwFpqh/E0Q==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz", + "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==", + "requires": { + "@babel/compat-data": "^7.15.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.16.6", + "semver": "^6.3.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.15.4.tgz", + "integrity": "sha512-7ZmzFi+DwJx6A7mHRwbuucEYpyBwmh2Ca0RvI6z2+WLZYCqV0JOaLb+u0zbtmDicebgKBZgqbYfLaKNqSgv5Pw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.15.4", + "@babel/helper-function-name": "^7.15.4", + "@babel/helper-member-expression-to-functions": "^7.15.4", + "@babel/helper-optimise-call-expression": "^7.15.4", + "@babel/helper-replace-supers": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz", + "integrity": "sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.14.5", + "regexpu-core": "^4.7.1" + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz", + "integrity": "sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.15.4.tgz", + "integrity": "sha512-J14f/vq8+hdC2KoWLIQSsGrC9EFBKE4NFts8pfMpymfApds+fPqR30AOUWc4tyr56h9l/GA1Sxv2q3dLZWbQ/g==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-function-name": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", + "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "requires": { + "@babel/helper-get-function-arity": "^7.15.4", + "@babel/template": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", + "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", + "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", + "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-module-imports": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", + "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-module-transforms": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz", + "integrity": "sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg==", + "requires": { + "@babel/helper-module-imports": "^7.15.4", + "@babel/helper-replace-supers": "^7.15.4", + "@babel/helper-simple-access": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.6" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", + "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==" + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.15.4.tgz", + "integrity": "sha512-v53MxgvMK/HCwckJ1bZrq6dNKlmwlyRNYM6ypaRTdXWGOE2c1/SCa6dL/HimhPulGhZKw9W0QhREM583F/t0vQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.15.4", + "@babel/helper-wrap-function": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-replace-supers": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", + "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", + "requires": { + "@babel/helper-member-expression-to-functions": "^7.15.4", + "@babel/helper-optimise-call-expression": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-simple-access": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", + "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.15.4.tgz", + "integrity": "sha512-BMRLsdh+D1/aap19TycS4eD1qELGrCBJwzaY9IE8LrpJtJb+H7rQkPIdsfgnMtLBA6DJls7X9z93Z4U8h7xw0A==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", + "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==" + }, + "@babel/helper-validator-option": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==" + }, + "@babel/helper-wrap-function": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.15.4.tgz", + "integrity": "sha512-Y2o+H/hRV5W8QhIfTpRIBwl57y8PrZt6JM3V8FOo5qarjshHItyH5lXlpMfBfmBefOqSCpKZs/6Dxqp0E/U+uw==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.15.4", + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/helpers": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", + "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", + "requires": { + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", + "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==" + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.15.4.tgz", + "integrity": "sha512-eBnpsl9tlhPhpI10kU06JHnrYXwg3+V6CaP2idsCXNef0aeslpqyITXQ74Vfk5uHgY7IG7XP0yIH8b42KSzHog==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.15.4", + "@babel/plugin-proposal-optional-chaining": "^7.14.5" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.15.8.tgz", + "integrity": "sha512-2Z5F2R2ibINTc63mY7FLqGfEbmofrHU9FitJW1Q7aPaKFhiPvSq6QEt/BoWN5oME3GVyjcRuNNSRbb9LC0CSWA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.15.4", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz", + "integrity": "sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.15.4.tgz", + "integrity": "sha512-M682XWrrLNk3chXCjoPUQWOyYsB93B9z3mRyjtqqYJWDf2mfCdIYgDrA11cgNVhAQieaq6F2fn2f3wI0U4aTjA==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.15.4", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz", + "integrity": "sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.5.tgz", + "integrity": "sha512-g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz", + "integrity": "sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.5.tgz", + "integrity": "sha512-YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz", + "integrity": "sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz", + "integrity": "sha512-yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.15.6.tgz", + "integrity": "sha512-qtOHo7A1Vt+O23qEAX+GdBpqaIuD3i9VRrWgCJeq7WO6H2d14EK3q11urj5Te2MAeK97nMiIdRpwd/ST4JFbNg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.15.0", + "@babel/helper-compilation-targets": "^7.15.4", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.15.4" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz", + "integrity": "sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz", + "integrity": "sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz", + "integrity": "sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.15.4.tgz", + "integrity": "sha512-X0UTixkLf0PCCffxgu5/1RQyGGbgZuKoI+vXP4iSbJSYwPb7hu06omsFGBvQ9lJEvwgrxHdS8B5nbfcd8GyUNA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.15.4", + "@babel/helper-create-class-features-plugin": "^7.15.4", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz", + "integrity": "sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz", + "integrity": "sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz", + "integrity": "sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz", + "integrity": "sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz", + "integrity": "sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.14.5" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz", + "integrity": "sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.15.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.15.3.tgz", + "integrity": "sha512-nBAzfZwZb4DkaGtOes1Up1nOAp9TDRRFw4XBzBBSG9QK7KVFmYzgj9o9sbPv7TX5ofL4Auq4wZnxCoPnI/lz2Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.15.4.tgz", + "integrity": "sha512-Yjvhex8GzBmmPQUvpXRPWQ9WnxXgAFuZSrqOK/eJlOGIXwvv8H3UEdUigl1gb/bnjTrln+e8bkZUYCBt/xYlBg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.15.4", + "@babel/helper-function-name": "^7.15.4", + "@babel/helper-optimise-call-expression": "^7.15.4", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz", + "integrity": "sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz", + "integrity": "sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz", + "integrity": "sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz", + "integrity": "sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz", + "integrity": "sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.15.4.tgz", + "integrity": "sha512-DRTY9fA751AFBDh2oxydvVm4SYevs5ILTWLs6xKXps4Re/KG5nfUkr+TdHCrRWB8C69TlzVgA9b3RmGWmgN9LA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz", + "integrity": "sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz", + "integrity": "sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz", + "integrity": "sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz", + "integrity": "sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.15.4.tgz", + "integrity": "sha512-qg4DPhwG8hKp4BbVDvX1s8cohM8a6Bvptu4l6Iingq5rW+yRUAhe/YRup/YcW2zCOlrysEWVhftIcKzrEZv3sA==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.15.4", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-simple-access": "^7.15.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.15.4.tgz", + "integrity": "sha512-fJUnlQrl/mezMneR72CKCgtOoahqGJNVKpompKwzv3BrEXdlPspTcyxrZ1XmDTIr9PpULrgEQo3qNKp6dW7ssw==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.15.4", + "@babel/helper-module-transforms": "^7.15.4", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-identifier": "^7.14.9", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz", + "integrity": "sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.14.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.9.tgz", + "integrity": "sha512-l666wCVYO75mlAtGFfyFwnWmIXQm3kSH0C3IRnJqWcZbWkoihyAdDhFm2ZWaxWTqvBvhVFfJjMRQ0ez4oN1yYA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.14.5" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz", + "integrity": "sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz", + "integrity": "sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.14.5" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.15.4.tgz", + "integrity": "sha512-9WB/GUTO6lvJU3XQsSr6J/WKvBC2hcs4Pew8YxZagi6GkTdniyqp8On5kqdK8MN0LMeu0mGbhPN+O049NV/9FQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz", + "integrity": "sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-react-constant-elements": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.14.5.tgz", + "integrity": "sha512-NBqLEx1GxllIOXJInJAQbrnwwYJsV3WaMHIcOwD8rhYS0AabTWn7kHdHgPgu5RmHLU0q4DMxhAMu8ue/KampgQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-react-display-name": { + "version": "7.15.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.15.1.tgz", + "integrity": "sha512-yQZ/i/pUCJAHI/LbtZr413S3VT26qNrEm0M5RRxQJA947/YNYwbZbBaXGDrq6CG5QsZycI1VIP6d7pQaBfP+8Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.14.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.14.9.tgz", + "integrity": "sha512-30PeETvS+AeD1f58i1OVyoDlVYQhap/K20ZrMjLmmzmC2AYR/G43D4sdJAaDAqCD3MYpSWbmrz3kES158QSLjw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-jsx": "^7.14.5", + "@babel/types": "^7.14.9" + } + }, + "@babel/plugin-transform-react-jsx-development": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.14.5.tgz", + "integrity": "sha512-rdwG/9jC6QybWxVe2UVOa7q6cnTpw8JRRHOxntG/h6g/guAOe6AhtQHJuJh5FwmnXIT1bdm5vC2/5huV8ZOorQ==", + "dev": true, + "requires": { + "@babel/plugin-transform-react-jsx": "^7.14.5" + } + }, + "@babel/plugin-transform-react-pure-annotations": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.14.5.tgz", + "integrity": "sha512-3X4HpBJimNxW4rhUy/SONPyNQHp5YRr0HhJdT2OH1BRp0of7u3Dkirc7x9FRJMKMqTBI079VZ1hzv7Ouuz///g==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.14.5.tgz", + "integrity": "sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg==", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz", + "integrity": "sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.15.8.tgz", + "integrity": "sha512-+6zsde91jMzzvkzuEA3k63zCw+tm/GvuuabkpisgbDMTPQsIMHllE3XczJFFtEHLjjhKQFZmGQVRdELetlWpVw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.15.4", + "@babel/helper-plugin-utils": "^7.14.5", + "babel-plugin-polyfill-corejs2": "^0.2.2", + "babel-plugin-polyfill-corejs3": "^0.2.5", + "babel-plugin-polyfill-regenerator": "^0.2.2", + "semver": "^6.3.0" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz", + "integrity": "sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.15.8.tgz", + "integrity": "sha512-/daZ8s2tNaRekl9YJa9X4bzjpeRZLt122cpgFnQPLGUe61PH8zMEBmYqKkW5xF5JUEh5buEGXJoQpqBmIbpmEQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.15.4" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz", + "integrity": "sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz", + "integrity": "sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz", + "integrity": "sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-typescript": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.15.8.tgz", + "integrity": "sha512-ZXIkJpbaf6/EsmjeTbiJN/yMxWPFWvlr7sEG1P95Xb4S4IBcrf2n7s/fItIhsAmOf8oSh3VJPDppO6ExfAfKRQ==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.15.4", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-typescript": "^7.14.5" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz", + "integrity": "sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz", + "integrity": "sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/preset-env": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.15.8.tgz", + "integrity": "sha512-rCC0wH8husJgY4FPbHsiYyiLxSY8oMDJH7Rl6RQMknbN9oDDHhM9RDFvnGM2MgkbUJzSQB4gtuwygY5mCqGSsA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.15.0", + "@babel/helper-compilation-targets": "^7.15.4", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.15.4", + "@babel/plugin-proposal-async-generator-functions": "^7.15.8", + "@babel/plugin-proposal-class-properties": "^7.14.5", + "@babel/plugin-proposal-class-static-block": "^7.15.4", + "@babel/plugin-proposal-dynamic-import": "^7.14.5", + "@babel/plugin-proposal-export-namespace-from": "^7.14.5", + "@babel/plugin-proposal-json-strings": "^7.14.5", + "@babel/plugin-proposal-logical-assignment-operators": "^7.14.5", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5", + "@babel/plugin-proposal-numeric-separator": "^7.14.5", + "@babel/plugin-proposal-object-rest-spread": "^7.15.6", + "@babel/plugin-proposal-optional-catch-binding": "^7.14.5", + "@babel/plugin-proposal-optional-chaining": "^7.14.5", + "@babel/plugin-proposal-private-methods": "^7.14.5", + "@babel/plugin-proposal-private-property-in-object": "^7.15.4", + "@babel/plugin-proposal-unicode-property-regex": "^7.14.5", + "@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-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.14.5", + "@babel/plugin-transform-async-to-generator": "^7.14.5", + "@babel/plugin-transform-block-scoped-functions": "^7.14.5", + "@babel/plugin-transform-block-scoping": "^7.15.3", + "@babel/plugin-transform-classes": "^7.15.4", + "@babel/plugin-transform-computed-properties": "^7.14.5", + "@babel/plugin-transform-destructuring": "^7.14.7", + "@babel/plugin-transform-dotall-regex": "^7.14.5", + "@babel/plugin-transform-duplicate-keys": "^7.14.5", + "@babel/plugin-transform-exponentiation-operator": "^7.14.5", + "@babel/plugin-transform-for-of": "^7.15.4", + "@babel/plugin-transform-function-name": "^7.14.5", + "@babel/plugin-transform-literals": "^7.14.5", + "@babel/plugin-transform-member-expression-literals": "^7.14.5", + "@babel/plugin-transform-modules-amd": "^7.14.5", + "@babel/plugin-transform-modules-commonjs": "^7.15.4", + "@babel/plugin-transform-modules-systemjs": "^7.15.4", + "@babel/plugin-transform-modules-umd": "^7.14.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.14.9", + "@babel/plugin-transform-new-target": "^7.14.5", + "@babel/plugin-transform-object-super": "^7.14.5", + "@babel/plugin-transform-parameters": "^7.15.4", + "@babel/plugin-transform-property-literals": "^7.14.5", + "@babel/plugin-transform-regenerator": "^7.14.5", + "@babel/plugin-transform-reserved-words": "^7.14.5", + "@babel/plugin-transform-shorthand-properties": "^7.14.5", + "@babel/plugin-transform-spread": "^7.15.8", + "@babel/plugin-transform-sticky-regex": "^7.14.5", + "@babel/plugin-transform-template-literals": "^7.14.5", + "@babel/plugin-transform-typeof-symbol": "^7.14.5", + "@babel/plugin-transform-unicode-escapes": "^7.14.5", + "@babel/plugin-transform-unicode-regex": "^7.14.5", + "@babel/preset-modules": "^0.1.4", + "@babel/types": "^7.15.6", + "babel-plugin-polyfill-corejs2": "^0.2.2", + "babel-plugin-polyfill-corejs3": "^0.2.5", + "babel-plugin-polyfill-regenerator": "^0.2.2", + "core-js-compat": "^3.16.0", + "semver": "^6.3.0" + } + }, + "@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dev": true, + "requires": { + "@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/preset-react": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.14.5.tgz", + "integrity": "sha512-XFxBkjyObLvBaAvkx1Ie95Iaq4S/GUEIrejyrntQ/VCMKUYvKLoyKxOBzJ2kjA3b6rC9/KL6KXfDC2GqvLiNqQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-transform-react-display-name": "^7.14.5", + "@babel/plugin-transform-react-jsx": "^7.14.5", + "@babel/plugin-transform-react-jsx-development": "^7.14.5", + "@babel/plugin-transform-react-pure-annotations": "^7.14.5" + } + }, + "@babel/preset-typescript": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.15.0.tgz", + "integrity": "sha512-lt0Y/8V3y06Wq/8H/u0WakrqciZ7Fz7mwPDHWUJAXlABL5hiUG42BNlRXiELNjeWjO5rWmnNKlx+yzJvxezHow==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-transform-typescript": "^7.15.0" + } + }, + "@babel/runtime": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.4.tgz", + "integrity": "sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/runtime-corejs3": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.15.4.tgz", + "integrity": "sha512-lWcAqKeB624/twtTc3w6w/2o9RqJPaNBhPGK6DKLSiwuVWC7WFkypWyNg+CpZoyJH0jVzv1uMtXZ/5/lQOLtCg==", + "dev": true, + "requires": { + "core-js-pure": "^3.16.0", + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", + "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/traverse": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", + "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.15.4", + "@babel/helper-function-name": "^7.15.4", + "@babel/helper-hoist-variables": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", + "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + }, + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "@choojs/findup": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@choojs/findup/-/findup-0.2.1.tgz", + "integrity": "sha512-YstAqNb0MCN8PjdLCDfRsBcGVRN41f3vgLvaI0IrIcBp4AqILRSS0DeWNGkicC+f/zRIPJLc+9RURVSepwvfBw==", + "dev": true, + "requires": { + "commander": "^2.15.1" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + } + } + }, + "@cnakazawa/watch": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", + "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", + "dev": true, + "requires": { + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" + } + }, + "@csstools/convert-colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz", + "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==", + "dev": true + }, + "@discoveryjs/json-ext": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.5.tgz", + "integrity": "sha512-6nFkfkmSeV/rqSaS4oWHgmpnYw194f6hmWF5is6b0J1naJZoiD0NTc9AiUwPHvWsowkjuHErCZT1wa0jg+BLIA==", + "dev": true + }, + "@emotion/babel-plugin": { + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.3.0.tgz", + "integrity": "sha512-UZKwBV2rADuhRp+ZOGgNWg2eYgbzKzQXfQPtJbu/PLy8onurxlNCLvxMQEvlr1/GudguPI5IU9qIY1+2z1M5bA==", + "requires": { + "@babel/helper-module-imports": "^7.12.13", + "@babel/plugin-syntax-jsx": "^7.12.13", + "@babel/runtime": "^7.13.10", + "@emotion/hash": "^0.8.0", + "@emotion/memoize": "^0.7.5", + "@emotion/serialize": "^1.0.2", + "babel-plugin-macros": "^2.6.1", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "^4.0.3" + } + }, + "@emotion/cache": { + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.5.0.tgz", + "integrity": "sha512-mAZ5QRpLriBtaj/k2qyrXwck6yeoz1V5lMt/jfj6igWU35yYlNKs2LziXVgvH81gnJZ+9QQNGelSsnuoAy6uIw==", + "requires": { + "@emotion/memoize": "^0.7.4", + "@emotion/sheet": "^1.0.3", + "@emotion/utils": "^1.0.0", + "@emotion/weak-memoize": "^0.2.5", + "stylis": "^4.0.10" + } + }, + "@emotion/css": { + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/@emotion/css/-/css-11.5.0.tgz", + "integrity": "sha512-mqjz/3aqR9rp40M+pvwdKYWxlQK4Nj3cnNjo3Tx6SM14dSsEn7q/4W2/I7PlgG+mb27iITHugXuBIHH/QwUBVQ==", + "requires": { + "@emotion/babel-plugin": "^11.0.0", + "@emotion/cache": "^11.5.0", + "@emotion/serialize": "^1.0.0", + "@emotion/sheet": "^1.0.3", + "@emotion/utils": "^1.0.0" + } + }, + "@emotion/hash": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", + "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" + }, + "@emotion/is-prop-valid": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.1.0.tgz", + "integrity": "sha512-9RkilvXAufQHsSsjQ3PIzSns+pxuX4EW8EbGeSPjZMHuMx6z/MOzb9LpqNieQX4F3mre3NWS2+X3JNRHTQztUQ==", + "requires": { + "@emotion/memoize": "^0.7.4" + } + }, + "@emotion/memoize": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.5.tgz", + "integrity": "sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ==" + }, + "@emotion/react": { + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.5.0.tgz", + "integrity": "sha512-MYq/bzp3rYbee4EMBORCn4duPQfgpiEB5XzrZEBnUZAL80Qdfr7CEv/T80jwaTl/dnZmt9SnTa8NkTrwFNpLlw==", + "requires": { + "@babel/runtime": "^7.13.10", + "@emotion/cache": "^11.5.0", + "@emotion/serialize": "^1.0.2", + "@emotion/sheet": "^1.0.3", + "@emotion/utils": "^1.0.0", + "@emotion/weak-memoize": "^0.2.5", + "hoist-non-react-statics": "^3.3.1" + } + }, + "@emotion/serialize": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.0.2.tgz", + "integrity": "sha512-95MgNJ9+/ajxU7QIAruiOAdYNjxZX7G2mhgrtDWswA21VviYIRP1R5QilZ/bDY42xiKsaktP4egJb3QdYQZi1A==", + "requires": { + "@emotion/hash": "^0.8.0", + "@emotion/memoize": "^0.7.4", + "@emotion/unitless": "^0.7.5", + "@emotion/utils": "^1.0.0", + "csstype": "^3.0.2" + } + }, + "@emotion/sheet": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.0.3.tgz", + "integrity": "sha512-YoX5GyQ4db7LpbmXHMuc8kebtBGP6nZfRC5Z13OKJMixBEwdZrJ914D6yJv/P+ZH/YY3F5s89NYX2hlZAf3SRQ==" + }, + "@emotion/styled": { + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.3.0.tgz", + "integrity": "sha512-fUoLcN3BfMiLlRhJ8CuPUMEyKkLEoM+n+UyAbnqGEsCd5IzKQ7VQFLtzpJOaCD2/VR2+1hXQTnSZXVJeiTNltA==", + "requires": { + "@babel/runtime": "^7.13.10", + "@emotion/babel-plugin": "^11.3.0", + "@emotion/is-prop-valid": "^1.1.0", + "@emotion/serialize": "^1.0.2", + "@emotion/utils": "^1.0.0" + } + }, + "@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" + }, + "@emotion/utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.0.0.tgz", + "integrity": "sha512-mQC2b3XLDs6QCW+pDQDiyO/EdGZYOygE8s5N5rrzjSI4M3IejPE/JPndCBwRT9z982aqQNi6beWs1UeayrQxxA==" + }, + "@emotion/weak-memoize": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz", + "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==" + }, + "@es-joy/jsdoccomment": { + "version": "0.10.8", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.10.8.tgz", + "integrity": "sha512-3P1JiGL4xaR9PoTKUHa2N/LKwa2/eUdRqGwijMWWgBqbFEqJUVpmaOi2TcjcemrsRMgFLBzQCK4ToPhrSVDiFQ==", + "dev": true, + "requires": { + "comment-parser": "1.2.4", + "esquery": "^1.4.0", + "jsdoc-type-pratt-parser": "1.1.1" + }, + "dependencies": { + "jsdoc-type-pratt-parser": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-1.1.1.tgz", + "integrity": "sha512-uelRmpghNwPBuZScwgBG/OzodaFk5RbO5xaivBdsAY70icWfShwZ7PCMO0x1zSkOa8T1FzHThmrdoyg/0AwV5g==", + "dev": true + } + } + }, + "@eslint/eslintrc": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "globals": { + "version": "13.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", + "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + } + } + }, + "@hapi/hoek": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.1.tgz", + "integrity": "sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw==", + "dev": true + }, + "@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dev": true, + "requires": { + "@hapi/hoek": "^9.0.0" + } + }, + "@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/object-schema": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", + "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", + "dev": true + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + } + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true + }, + "@jest/console": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.3.1.tgz", + "integrity": "sha512-RkFNWmv0iui+qsOr/29q9dyfKTTT5DCuP31kUwg7rmOKPT/ozLeGLKJKVIiOfbiKyleUZKIrHwhmiZWVe8IMdw==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^27.3.1", + "jest-util": "^27.3.1", + "slash": "^3.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", + "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", + "dev": true, + "peer": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "peer": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "peer": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "peer": true + }, + "jest-util": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", + "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.4", + "picomatch": "^2.2.3" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/core": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.3.1.tgz", + "integrity": "sha512-DMNE90RR5QKx0EA+wqe3/TNEwiRpOkhshKNxtLxd4rt3IZpCt+RSL+FoJsGeblRZmqdK4upHA/mKKGPPRAifhg==", + "dev": true, + "peer": true, + "requires": { + "@jest/console": "^27.3.1", + "@jest/reporters": "^27.3.1", + "@jest/test-result": "^27.3.1", + "@jest/transform": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-changed-files": "^27.3.0", + "jest-config": "^27.3.1", + "jest-haste-map": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-regex-util": "^27.0.6", + "jest-resolve": "^27.3.1", + "jest-resolve-dependencies": "^27.3.1", + "jest-runner": "^27.3.1", + "jest-runtime": "^27.3.1", + "jest-snapshot": "^27.3.1", + "jest-util": "^27.3.1", + "jest-validate": "^27.3.1", + "jest-watcher": "^27.3.1", + "micromatch": "^4.0.4", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "@jest/transform": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.3.1.tgz", + "integrity": "sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==", + "dev": true, + "peer": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.2.5", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.3.1", + "jest-regex-util": "^27.0.6", + "jest-util": "^27.3.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + } + }, + "@jest/types": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", + "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", + "dev": true, + "peer": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "peer": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "peer": true, + "requires": { + "type-fest": "^0.21.3" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "peer": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "peer": true + }, + "jest-haste-map": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", + "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.2.5", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^27.0.6", + "jest-serializer": "^27.0.6", + "jest-util": "^27.3.1", + "jest-worker": "^27.3.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + } + }, + "jest-regex-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", + "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", + "dev": true, + "peer": true + }, + "jest-serializer": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", + "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", + "dev": true, + "peer": true, + "requires": { + "@types/node": "*", + "graceful-fs": "^4.2.4" + } + }, + "jest-util": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", + "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.4", + "picomatch": "^2.2.3" + } + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "peer": true, + "requires": { + "glob": "^7.1.3" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "peer": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "peer": true + } + } + }, + "@jest/environment": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz", + "integrity": "sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==", + "dev": true, + "requires": { + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2" + } + }, + "@jest/fake-timers": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz", + "integrity": "sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@sinonjs/fake-timers": "^6.0.1", + "@types/node": "*", + "jest-message-util": "^26.6.2", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "jest-message-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", + "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2", + "slash": "^3.0.0", + "stack-utils": "^2.0.2" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/globals": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.3.1.tgz", + "integrity": "sha512-Q651FWiWQAIFiN+zS51xqhdZ8g9b88nGCobC87argAxA7nMfNQq0Q0i9zTfQYgLa6qFXk2cGANEqfK051CZ8Pg==", + "dev": true, + "peer": true, + "requires": { + "@jest/environment": "^27.3.1", + "@jest/types": "^27.2.5", + "expect": "^27.3.1" + }, + "dependencies": { + "@jest/environment": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.3.1.tgz", + "integrity": "sha512-BCKCj4mOVLme6Tanoyc9k0ultp3pnmuyHw73UHRPeeZxirsU/7E3HC4le/VDb/SMzE1JcPnto+XBKFOcoiJzVw==", + "dev": true, + "peer": true, + "requires": { + "@jest/fake-timers": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/node": "*", + "jest-mock": "^27.3.0" + } + }, + "@jest/fake-timers": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.3.1.tgz", + "integrity": "sha512-M3ZFgwwlqJtWZ+QkBG5NmC23A9w+A6ZxNsO5nJxJsKYt4yguBd3i8TpjQz5NfCX91nEve1KqD9RA2Q+Q1uWqoA==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.2.5", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.3.1", + "jest-mock": "^27.3.0", + "jest-util": "^27.3.1" + } + }, + "@jest/types": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", + "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", + "dev": true, + "peer": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@sinonjs/fake-timers": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz", + "integrity": "sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==", + "dev": true, + "peer": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "peer": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "peer": true + }, + "diff-sequences": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", + "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==", + "dev": true, + "peer": true + }, + "expect": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.3.1.tgz", + "integrity": "sha512-MrNXV2sL9iDRebWPGOGFdPQRl2eDQNu/uhxIMShjjx74T6kC6jFIkmQ6OqXDtevjGUkyB2IT56RzDBqXf/QPCg==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.2.5", + "ansi-styles": "^5.0.0", + "jest-get-type": "^27.3.1", + "jest-matcher-utils": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-regex-util": "^27.0.6" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "peer": true + } + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "peer": true + }, + "jest-diff": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.3.1.tgz", + "integrity": "sha512-PCeuAH4AWUo2O5+ksW4pL9v5xJAcIKPUPfIhZBcG1RKv/0+dvaWTQK1Nrau8d67dp65fOqbeMdoil+6PedyEPQ==", + "dev": true, + "peer": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^27.0.6", + "jest-get-type": "^27.3.1", + "pretty-format": "^27.3.1" + } + }, + "jest-get-type": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.3.1.tgz", + "integrity": "sha512-+Ilqi8hgHSAdhlQ3s12CAVNd8H96ZkQBfYoXmArzZnOfAtVAJEiPDBirjByEblvG/4LPJmkL+nBqPO3A1YJAEg==", + "dev": true, + "peer": true + }, + "jest-matcher-utils": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.3.1.tgz", + "integrity": "sha512-hX8N7zXS4k+8bC1Aj0OWpGb7D3gIXxYvPNK1inP5xvE4ztbz3rc4AkI6jGVaerepBnfWB17FL5lWFJT3s7qo8w==", + "dev": true, + "peer": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^27.3.1", + "jest-get-type": "^27.3.1", + "pretty-format": "^27.3.1" + } + }, + "jest-mock": { + "version": "27.3.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.3.0.tgz", + "integrity": "sha512-ziZiLk0elZOQjD08bLkegBzv5hCABu/c8Ytx45nJKkysQwGaonvmTxwjLqEA4qGdasq9o2I8/HtdGMNnVsMTGw==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.2.5", + "@types/node": "*" + } + }, + "jest-regex-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", + "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", + "dev": true, + "peer": true + }, + "jest-util": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", + "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.4", + "picomatch": "^2.2.3" + } + }, + "pretty-format": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz", + "integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.2.5", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "peer": true + } + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/reporters": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.3.1.tgz", + "integrity": "sha512-m2YxPmL9Qn1emFVgZGEiMwDntDxRRQ2D58tiDQlwYTg5GvbFOKseYCcHtn0WsI8CG4vzPglo3nqbOiT8ySBT/w==", + "dev": true, + "peer": true, + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^27.3.1", + "@jest/test-result": "^27.3.1", + "@jest/transform": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.4", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "jest-haste-map": "^27.3.1", + "jest-resolve": "^27.3.1", + "jest-util": "^27.3.1", + "jest-worker": "^27.3.1", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^8.1.0" + }, + "dependencies": { + "@jest/transform": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.3.1.tgz", + "integrity": "sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==", + "dev": true, + "peer": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.2.5", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.3.1", + "jest-regex-util": "^27.0.6", + "jest-util": "^27.3.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + } + }, + "@jest/types": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", + "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", + "dev": true, + "peer": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "peer": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "peer": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "peer": true + }, + "istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "peer": true, + "requires": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + } + }, + "jest-haste-map": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", + "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.2.5", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^27.0.6", + "jest-serializer": "^27.0.6", + "jest-util": "^27.3.1", + "jest-worker": "^27.3.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + } + }, + "jest-regex-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", + "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", + "dev": true, + "peer": true + }, + "jest-serializer": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", + "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", + "dev": true, + "peer": true, + "requires": { + "@types/node": "*", + "graceful-fs": "^4.2.4" + } + }, + "jest-util": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", + "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.4", + "picomatch": "^2.2.3" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "peer": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/source-map": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.0.6.tgz", + "integrity": "sha512-Fek4mi5KQrqmlY07T23JRi0e7Z9bXTOOD86V/uS0EIW4PClvPDqZOyFlLpNJheS6QI0FNX1CgmPjtJ4EA/2M+g==", + "dev": true, + "peer": true, + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.4", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "peer": true + } + } + }, + "@jest/test-result": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.3.1.tgz", + "integrity": "sha512-mLn6Thm+w2yl0opM8J/QnPTqrfS4FoXsXF2WIWJb2O/GBSyResL71BRuMYbYRsGt7ELwS5JGcEcGb52BNrumgg==", + "dev": true, + "peer": true, + "requires": { + "@jest/console": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", + "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", + "dev": true, + "peer": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "peer": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "peer": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "peer": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/test-sequencer": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.3.1.tgz", + "integrity": "sha512-siySLo07IMEdSjA4fqEnxfIX8lB/lWYsBPwNFtkOvsFQvmBrL3yj3k3uFNZv/JDyApTakRpxbKLJ3CT8UGVCrA==", + "dev": true, + "peer": true, + "requires": { + "@jest/test-result": "^27.3.1", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.3.1", + "jest-runtime": "^27.3.1" + }, + "dependencies": { + "@jest/types": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", + "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", + "dev": true, + "peer": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "peer": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "peer": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "peer": true + }, + "jest-haste-map": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", + "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.2.5", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^27.0.6", + "jest-serializer": "^27.0.6", + "jest-util": "^27.3.1", + "jest-worker": "^27.3.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + } + }, + "jest-regex-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", + "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", + "dev": true, + "peer": true + }, + "jest-serializer": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", + "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", + "dev": true, + "peer": true, + "requires": { + "@types/node": "*", + "graceful-fs": "^4.2.4" + } + }, + "jest-util": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", + "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.4", + "picomatch": "^2.2.3" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/transform": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz", + "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^26.6.2", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-util": "^26.6.2", + "micromatch": "^4.0.2", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@octokit/auth-token": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", + "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", + "dev": true, + "requires": { + "@octokit/types": "^6.0.3" + } + }, + "@octokit/core": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.5.1.tgz", + "integrity": "sha512-omncwpLVxMP+GLpLPgeGJBF6IWJFjXDS5flY5VbppePYX9XehevbDykRH9PdCdvqt9TS5AOTiDide7h0qrkHjw==", + "dev": true, + "requires": { + "@octokit/auth-token": "^2.4.4", + "@octokit/graphql": "^4.5.8", + "@octokit/request": "^5.6.0", + "@octokit/request-error": "^2.0.5", + "@octokit/types": "^6.0.3", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/endpoint": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", + "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", + "dev": true, + "requires": { + "@octokit/types": "^6.0.3", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/graphql": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", + "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", + "dev": true, + "requires": { + "@octokit/request": "^5.6.0", + "@octokit/types": "^6.0.3", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/openapi-types": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-11.2.0.tgz", + "integrity": "sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA==", + "dev": true + }, + "@octokit/plugin-paginate-rest": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.17.0.tgz", + "integrity": "sha512-tzMbrbnam2Mt4AhuyCHvpRkS0oZ5MvwwcQPYGtMv4tUa5kkzG58SVB0fcsLulOZQeRnOgdkZWkRUiyBlh0Bkyw==", + "dev": true, + "requires": { + "@octokit/types": "^6.34.0" + } + }, + "@octokit/plugin-rest-endpoint-methods": { + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.13.0.tgz", + "integrity": "sha512-uJjMTkN1KaOIgNtUPMtIXDOjx6dGYysdIFhgA52x4xSadQCz3b/zJexvITDVpANnfKPW/+E0xkOvLntqMYpviA==", + "dev": true, + "requires": { + "@octokit/types": "^6.34.0", + "deprecation": "^2.3.1" + } + }, + "@octokit/request": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.2.tgz", + "integrity": "sha512-je66CvSEVf0jCpRISxkUcCa0UkxmFs6eGDRSbfJtAVwbLH5ceqF+YEyC8lj8ystKyZTy8adWr0qmkY52EfOeLA==", + "dev": true, + "requires": { + "@octokit/endpoint": "^6.0.1", + "@octokit/request-error": "^2.1.0", + "@octokit/types": "^6.16.1", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.1", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/request-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", + "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "dev": true, + "requires": { + "@octokit/types": "^6.0.3", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, + "@octokit/types": { + "version": "6.34.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz", + "integrity": "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==", + "dev": true, + "requires": { + "@octokit/openapi-types": "^11.2.0" + } + }, + "@polka/url": { + "version": "1.0.0-next.21", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", + "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==", + "dev": true + }, + "@popperjs/core": { + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.10.2.tgz", + "integrity": "sha512-IXf3XA7+XyN7CP9gGh/XB0UxVMlvARGEgGXLubFICsUMGz6Q+DU+i4gGlpOxTjKvXjkJDJC8YdqdKkDj9qZHEQ==" + }, + "@react-spring/animated": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@react-spring/animated/-/animated-9.3.0.tgz", + "integrity": "sha512-QvuyW77eDvLhdJyO6FFldlWlvnuKK2cpOx4+Zr962RyT/0IO1tbNDRO6G1vM8va6mbv6tmfYmRGKmKYePN3kVg==", + "requires": { + "@react-spring/shared": "~9.3.0", + "@react-spring/types": "~9.3.0" + } + }, + "@react-spring/core": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@react-spring/core/-/core-9.3.0.tgz", + "integrity": "sha512-SZQOIX7wkIagmucAi7zxqGGIb9A60o9n5922UrWo8Kl3FdG7FgrNwqr0kOI43/pMFeL70/PXwFhBatB03N5ctw==", + "requires": { + "@react-spring/animated": "~9.3.0", + "@react-spring/shared": "~9.3.0", + "@react-spring/types": "~9.3.0" + } + }, + "@react-spring/rafz": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@react-spring/rafz/-/rafz-9.3.0.tgz", + "integrity": "sha512-FD04d2TNb3xOZ6+04qwDmC3d0H4X6gvhsxU71/nSm4PPYRqFzZEolcVPmrHlbGzco3bvXKI+Kp2pIrpXLPUJFA==" + }, + "@react-spring/shared": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@react-spring/shared/-/shared-9.3.0.tgz", + "integrity": "sha512-7ZFY2Blu/wxbLGcYvQavyLUVi9bK/is1bsn11qZ9AaZb4iucRyIf2jgjBfKZFCq4qgi7S/7QmDQG7sucUyLELg==", + "requires": { + "@react-spring/rafz": "~9.3.0", + "@react-spring/types": "~9.3.0" + } + }, + "@react-spring/types": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@react-spring/types/-/types-9.3.0.tgz", + "integrity": "sha512-q4cDr2RSPblXMD3Rxvk6qcC7nmhhfV2izEBP06hb8ZCXznA6qJirG3RMpi29kBtEQiw1lWR59hAXKhauaPtbOA==" + }, + "@react-spring/web": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@react-spring/web/-/web-9.3.0.tgz", + "integrity": "sha512-OTAGKRdyz6fLRR1tABFyw9KMpytyATIndQrj0O6RG47GfjiInpf4+WZKxo763vpS7z1OlnkI81WLUm/sqOqAnA==", + "requires": { + "@react-spring/animated": "~9.3.0", + "@react-spring/core": "~9.3.0", + "@react-spring/shared": "~9.3.0", + "@react-spring/types": "~9.3.0" + } + }, + "@sideway/address": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.2.tgz", + "integrity": "sha512-idTz8ibqWFrPU8kMirL0CoPH/A29XOzzAzpyN3zQ4kAWnzmNfFmRaoMNN6VI8ske5M73HZyhIaW4OuSFIdM4oA==", + "dev": true, + "requires": { + "@hapi/hoek": "^9.0.0" + } + }, + "@sideway/formula": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", + "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==", + "dev": true + }, + "@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "dev": true + }, + "@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", + "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "@svgr/babel-plugin-add-jsx-attribute": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz", + "integrity": "sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==", + "dev": true + }, + "@svgr/babel-plugin-remove-jsx-attribute": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz", + "integrity": "sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==", + "dev": true + }, + "@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz", + "integrity": "sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==", + "dev": true + }, + "@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz", + "integrity": "sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==", + "dev": true + }, + "@svgr/babel-plugin-svg-dynamic-title": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz", + "integrity": "sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==", + "dev": true + }, + "@svgr/babel-plugin-svg-em-dimensions": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz", + "integrity": "sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==", + "dev": true + }, + "@svgr/babel-plugin-transform-react-native-svg": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz", + "integrity": "sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==", + "dev": true + }, + "@svgr/babel-plugin-transform-svg-component": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz", + "integrity": "sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==", + "dev": true + }, + "@svgr/babel-preset": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz", + "integrity": "sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==", + "dev": true, + "requires": { + "@svgr/babel-plugin-add-jsx-attribute": "^5.4.0", + "@svgr/babel-plugin-remove-jsx-attribute": "^5.4.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "^5.0.1", + "@svgr/babel-plugin-replace-jsx-attribute-value": "^5.0.1", + "@svgr/babel-plugin-svg-dynamic-title": "^5.4.0", + "@svgr/babel-plugin-svg-em-dimensions": "^5.4.0", + "@svgr/babel-plugin-transform-react-native-svg": "^5.4.0", + "@svgr/babel-plugin-transform-svg-component": "^5.5.0" + } + }, + "@svgr/core": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz", + "integrity": "sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==", + "dev": true, + "requires": { + "@svgr/plugin-jsx": "^5.5.0", + "camelcase": "^6.2.0", + "cosmiconfig": "^7.0.0" + } + }, + "@svgr/hast-util-to-babel-ast": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz", + "integrity": "sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==", + "dev": true, + "requires": { + "@babel/types": "^7.12.6" + } + }, + "@svgr/plugin-jsx": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz", + "integrity": "sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==", + "dev": true, + "requires": { + "@babel/core": "^7.12.3", + "@svgr/babel-preset": "^5.5.0", + "@svgr/hast-util-to-babel-ast": "^5.5.0", + "svg-parser": "^2.0.2" + } + }, + "@svgr/plugin-svgo": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz", + "integrity": "sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==", + "dev": true, + "requires": { + "cosmiconfig": "^7.0.0", + "deepmerge": "^4.2.2", + "svgo": "^1.2.2" + }, + "dependencies": { + "css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "dev": true, + "requires": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + } + }, + "css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "dev": true + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + }, + "dependencies": { + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + } + } + }, + "mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", + "dev": true + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "dev": true, + "requires": { + "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" + } + } + } + }, + "@svgr/webpack": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz", + "integrity": "sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==", + "dev": true, + "requires": { + "@babel/core": "^7.12.3", + "@babel/plugin-transform-react-constant-elements": "^7.12.1", + "@babel/preset-env": "^7.12.1", + "@babel/preset-react": "^7.12.5", + "@svgr/core": "^5.5.0", + "@svgr/plugin-jsx": "^5.5.0", + "@svgr/plugin-svgo": "^5.5.0", + "loader-utils": "^2.0.0" + } + }, + "@tannin/compile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@tannin/compile/-/compile-1.1.0.tgz", + "integrity": "sha512-n8m9eNDfoNZoxdvWiTfW/hSPhehzLJ3zW7f8E7oT6mCROoMNWCB4TYtv041+2FMAxweiE0j7i1jubQU4MEC/Gg==", + "requires": { + "@tannin/evaluate": "^1.2.0", + "@tannin/postfix": "^1.1.0" + } + }, + "@tannin/evaluate": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@tannin/evaluate/-/evaluate-1.2.0.tgz", + "integrity": "sha512-3ioXvNowbO/wSrxsDG5DKIMxC81P0QrQTYai8zFNY+umuoHWRPbQ/TuuDEOju9E+jQDXmj6yI5GyejNuh8I+eg==" + }, + "@tannin/plural-forms": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@tannin/plural-forms/-/plural-forms-1.1.0.tgz", + "integrity": "sha512-xl9R2mDZO/qiHam1AgMnAES6IKIg7OBhcXqy6eDsRCdXuxAFPcjrej9HMjyCLE0DJ/8cHf0i5OQTstuBRhpbHw==", + "requires": { + "@tannin/compile": "^1.1.0" + } + }, + "@tannin/postfix": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@tannin/postfix/-/postfix-1.1.0.tgz", + "integrity": "sha512-oocsqY7g0cR+Gur5jRQLSrX2OtpMLMse1I10JQBm8CdGMrDkh1Mg2gjsiquMHRtBs4Qwu5wgEp5GgIYHk4SNPw==" + }, + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true + }, + "@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true + }, + "@types/babel__core": { + "version": "7.1.16", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.16.tgz", + "integrity": "sha512-EAEHtisTMM+KaKwfWdC3oyllIqswlznXCIVCt7/oRNrh+DhgT4UEBNC/jlADNjvw7UnfbcdkGQcPVZ1xYiLcrQ==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.3.tgz", + "integrity": "sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz", + "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==", + "dev": true, + "requires": { + "@babel/types": "^7.3.0" + } + }, + "@types/cheerio": { + "version": "0.22.30", + "resolved": "https://registry.npmjs.org/@types/cheerio/-/cheerio-0.22.30.tgz", + "integrity": "sha512-t7ZVArWZlq3dFa9Yt33qFBQIK4CQd1Q3UJp0V+UhP6vgLWLM6Qug7vZuRSGXg45zXeB1Fm5X2vmBkEX58LV2Tw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/eslint": { + "version": "7.28.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.28.2.tgz", + "integrity": "sha512-KubbADPkfoU75KgKeKLsFHXnU4ipH7wYg0TRT33NK3N3yiu7jlFAAoygIWBV+KbuHx/G+AvuGX6DllnK35gfJA==", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g==", + "dev": true, + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "0.0.50", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", + "dev": true + }, + "@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/graceful-fs": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", + "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", + "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "dev": true + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "dev": true + }, + "@types/lodash": { + "version": "4.14.176", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.176.tgz", + "integrity": "sha512-xZmuPTa3rlZoIbtDUyJKZQimJV3bxCmzMIO2c9Pz9afyDro6kr7R79GwcB6mRhuoPmV2p1Vb66WOJH7F886WKQ==" + }, + "@types/mdast": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", + "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true + }, + "@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "dev": true + }, + "@types/mousetrap": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@types/mousetrap/-/mousetrap-1.6.8.tgz", + "integrity": "sha512-zTqjvgCUT5EoXqbqmd8iJMb4NJqyV/V7pK7AIKq7qcaAsJIpGlTVJS1HQM6YkdHCdnkNSbhcQI7MXYxFfE3iCA==" + }, + "@types/node": { + "version": "16.11.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.6.tgz", + "integrity": "sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==", + "dev": true + }, + "@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "dev": true + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + }, + "@types/prettier": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.1.tgz", + "integrity": "sha512-Fo79ojj3vdEZOHg3wR9ksAMRz4P3S5fDB5e/YWZiFnyFQI1WY2Vftu9XoXVVtJfxB7Bpce/QTqWSSntkz2Znrw==", + "dev": true + }, + "@types/prop-types": { + "version": "15.7.4", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz", + "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==" + }, + "@types/q": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", + "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==", + "dev": true + }, + "@types/react": { + "version": "16.14.20", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.14.20.tgz", + "integrity": "sha512-SV7TaVc8e9E/5Xuv6TIyJ5VhQpZoVFJqX6IZgj5HZoFCtIDCArE3qXkcHlc6O/Ud4UwcMoX+tlvDA95YrKdLgA==", + "requires": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "@types/react-dom": { + "version": "16.9.14", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.14.tgz", + "integrity": "sha512-FIX2AVmPTGP30OUJ+0vadeIFJJ07Mh1m+U0rxfgyW34p3rTlXI+nlenvAxNn4BP36YyI9IJ/+UJ7Wu22N1pI7A==", + "requires": { + "@types/react": "^16" + } + }, + "@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" + }, + "@types/source-list-map": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", + "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==", + "dev": true + }, + "@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, + "@types/tapable": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.8.tgz", + "integrity": "sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ==", + "dev": true + }, + "@types/uglify-js": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.13.1.tgz", + "integrity": "sha512-O3MmRAk6ZuAKa9CHgg0Pr0+lUOqoMLpc9AS4R8ano2auvsg7IE8syF3Xh/NPr26TWklxYcqoEEFdzLLs1fV9PQ==", + "dev": true, + "requires": { + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@types/unist": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", + "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", + "dev": true + }, + "@types/webpack": { + "version": "4.41.31", + "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.31.tgz", + "integrity": "sha512-/i0J7sepXFIp1ZT7FjUGi1eXMCg8HCCzLJEQkKsOtbJFontsJLolBcDC+3qxn5pPwiCt1G0ZdRmYRzNBtvpuGQ==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/tapable": "^1", + "@types/uglify-js": "*", + "@types/webpack-sources": "*", + "anymatch": "^3.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@types/webpack-sources": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-3.2.0.tgz", + "integrity": "sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/source-list-map": "*", + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } + } + }, + "@types/yargs": { + "version": "15.0.14", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", + "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", + "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", + "dev": true + }, + "@types/yauzl": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.2.tgz", + "integrity": "sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==", + "dev": true, + "optional": true, + "requires": { + "@types/node": "*" + } + }, + "@typescript-eslint/eslint-plugin": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", + "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "4.33.0", + "@typescript-eslint/scope-manager": "4.33.0", + "debug": "^4.3.1", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.1.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@typescript-eslint/experimental-utils": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", + "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.7", + "@typescript-eslint/scope-manager": "4.33.0", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/typescript-estree": "4.33.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "dependencies": { + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + } + } + } + }, + "@typescript-eslint/parser": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", + "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "4.33.0", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/typescript-estree": "4.33.0", + "debug": "^4.3.1" + } + }, + "@typescript-eslint/scope-manager": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", + "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0" + } + }, + "@typescript-eslint/types": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", + "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", + "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0", + "debug": "^4.3.1", + "globby": "^11.0.3", + "is-glob": "^4.0.1", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@typescript-eslint/visitor-keys": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", + "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.33.0", + "eslint-visitor-keys": "^2.0.0" + } + }, + "@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dev": true, + "requires": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "dev": true + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dev": true, + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@webpack-cli/configtest": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.0.tgz", + "integrity": "sha512-ttOkEkoalEHa7RaFYpM0ErK1xc4twg3Am9hfHhL7MVqlHebnkYd2wuI/ZqTDj0cVzZho6PdinY0phFZV3O0Mzg==", + "dev": true, + "requires": {} + }, + "@webpack-cli/info": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.0.tgz", + "integrity": "sha512-F6b+Man0rwE4n0409FyAJHStYA5OIZERxmnUfLVwv0mc0V1wLad3V7jqRlMkgKBeAq07jUvglacNaa6g9lOpuw==", + "dev": true, + "requires": { + "envinfo": "^7.7.3" + } + }, + "@webpack-cli/serve": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.0.tgz", + "integrity": "sha512-ZkVeqEmRpBV2GHvjjUZqEai2PpUbuq8Bqd//vEYsp63J8WyexI8ppCqVS3Zs0QADf6aWuPdU+0XsPI647PVlQA==", + "dev": true, + "requires": {} + }, + "@wojtekmaj/enzyme-adapter-react-17": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@wojtekmaj/enzyme-adapter-react-17/-/enzyme-adapter-react-17-0.6.5.tgz", + "integrity": "sha512-ChIObUiXXYUiqzXPqOai+p6KF5dlbItpDDYsftUOQiAiygbMDlLeJIjynC6ZrJIa2U2MpRp4YJmtR2GQyIHjgA==", + "dev": true, + "requires": { + "@wojtekmaj/enzyme-adapter-utils": "^0.1.1", + "enzyme-shallow-equal": "^1.0.0", + "has": "^1.0.0", + "object.assign": "^4.1.0", + "object.values": "^1.1.0", + "prop-types": "^15.7.0", + "react-is": "^17.0.2", + "react-test-renderer": "^17.0.0" + } + }, + "@wojtekmaj/enzyme-adapter-utils": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@wojtekmaj/enzyme-adapter-utils/-/enzyme-adapter-utils-0.1.1.tgz", + "integrity": "sha512-bNPWtN/d8huKOkC6j1E3EkSamnRrHHT7YuR6f9JppAQqtoAm3v4/vERe4J14jQKmHLCyEBHXrlgb7H6l817hVg==", + "dev": true, + "requires": { + "function.prototype.name": "^1.1.0", + "has": "^1.0.0", + "object.assign": "^4.1.0", + "object.fromentries": "^2.0.0", + "prop-types": "^15.7.0" + } + }, + "@wordpress/a11y": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@wordpress/a11y/-/a11y-3.2.3.tgz", + "integrity": "sha512-s6ghUetvxRPDyC3fohaXtOeoTQeA1JPYPNSic616LWLWvx/bOCY4RibfwxS7p7prY1+0Px2VhxsPIM2kZuR/wA==", + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/dom-ready": "^3.2.2", + "@wordpress/i18n": "^4.2.3" + } + }, + "@wordpress/api-fetch": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-5.2.3.tgz", + "integrity": "sha512-hEGn9vXk76ejdvei1pBX/kaQ3xnKlE2dwtCXszgem8PdDF5GYzgESEwYaWvfgPAfJs7xF283FN1QsNzA4M+N9A==", + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/i18n": "^4.2.3", + "@wordpress/url": "^3.2.3" + } + }, + "@wordpress/autop": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@wordpress/autop/-/autop-3.2.2.tgz", + "integrity": "sha512-lfw7yZs1PeWVdPnKaV5rPMGIhkwPmdnKaviIbQV48E8irQOcPaT3NgWQksizr1Qlersm6aNBkXZfM1idRzzcgA==", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@wordpress/babel-plugin-import-jsx-pragma": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@wordpress/babel-plugin-import-jsx-pragma/-/babel-plugin-import-jsx-pragma-3.1.0.tgz", + "integrity": "sha512-518mL3goaSeXtJCQcPK9OYHUUiA0sjXuoGWHBwRalkyTIQZZy5ZZzlwrlSc9ESZcOw9BZ+Uo8CJRjV2OWnx+Zw==", + "dev": true, + "requires": {} + }, + "@wordpress/babel-preset-default": { + "version": "6.3.3", + "resolved": "https://registry.npmjs.org/@wordpress/babel-preset-default/-/babel-preset-default-6.3.3.tgz", + "integrity": "sha512-sMP7LgBmYaF5Cz+FZ4EXS5Qu4Tecv3JFIYEVbPLmn+/AIA+fzrEELn2BuEcHmd0q7VogAAmhU1iw2Fndj29bgw==", + "dev": true, + "requires": { + "@babel/core": "^7.13.10", + "@babel/plugin-transform-react-jsx": "^7.12.7", + "@babel/plugin-transform-runtime": "^7.13.10", + "@babel/preset-env": "^7.13.10", + "@babel/preset-typescript": "^7.13.0", + "@babel/runtime": "^7.13.10", + "@wordpress/babel-plugin-import-jsx-pragma": "^3.1.0", + "@wordpress/browserslist-config": "^4.1.0", + "@wordpress/element": "^4.0.2", + "@wordpress/warning": "^2.2.2", + "browserslist": "^4.16.6", + "core-js": "^3.12.1" + } + }, + "@wordpress/base-styles": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@wordpress/base-styles/-/base-styles-4.0.2.tgz", + "integrity": "sha512-0eESCFwdITSsWR+goVaWe3LZ/7s+GprNwANKF+1xm8gMxlHQks5gYDMvNdh0Q1yTHlK/vtg1VC7Bj1gydqmlxw==", + "dev": true + }, + "@wordpress/blob": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@wordpress/blob/-/blob-3.2.1.tgz", + "integrity": "sha512-qD8wZ6n+hjoshV2dp9eGH3VismOM0kvrJn5cSe4PaoYDREqUhioJIDXktZxaohnvgWOq6xfJH6rS4Or8W0r9ew==", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@wordpress/block-editor": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@wordpress/block-editor/-/block-editor-7.0.3.tgz", + "integrity": "sha512-rCPth+v+Nu5JiIkOgUaCgiVkub+VWd8fXzek/vtk5T+VXDJ7jJA6dLcuR8zLigWEkyMuZ5nG0RADGgldy9WqxA==", + "requires": { + "@babel/runtime": "^7.13.10", + "@react-spring/web": "^9.2.4", + "@wordpress/a11y": "^3.2.3", + "@wordpress/api-fetch": "^5.2.3", + "@wordpress/blob": "^3.2.1", + "@wordpress/block-serialization-default-parser": "^4.2.2", + "@wordpress/blocks": "^11.1.1", + "@wordpress/components": "^18.0.0", + "@wordpress/compose": "^5.0.3", + "@wordpress/data": "^6.1.1", + "@wordpress/data-controls": "^2.2.4", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.4", + "@wordpress/element": "^4.0.2", + "@wordpress/hooks": "^3.2.1", + "@wordpress/html-entities": "^3.2.2", + "@wordpress/i18n": "^4.2.3", + "@wordpress/icons": "^6.0.0", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keyboard-shortcuts": "^3.0.3", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/notices": "^3.2.4", + "@wordpress/rich-text": "^5.0.3", + "@wordpress/shortcode": "^3.2.2", + "@wordpress/token-list": "^2.2.1", + "@wordpress/url": "^3.2.3", + "@wordpress/warning": "^2.2.2", + "@wordpress/wordcount": "^3.2.2", + "classnames": "^2.3.1", + "colord": "^2.7.0", + "css-mediaquery": "^0.1.2", + "diff": "^4.0.2", + "dom-scroll-into-view": "^1.2.1", + "inherits": "^2.0.3", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "react-autosize-textarea": "^7.1.0", + "react-easy-crop": "^3.0.0", + "redux-multi": "^0.1.12", + "rememo": "^3.0.0", + "traverse": "^0.6.6" + }, + "dependencies": { + "react": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", + "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", + "peer": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + } + }, + "react-autosize-textarea": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/react-autosize-textarea/-/react-autosize-textarea-7.1.0.tgz", + "integrity": "sha512-BHpjCDkuOlllZn3nLazY2F8oYO1tS2jHnWhcjTWQdcKiiMU6gHLNt/fzmqMSyerR0eTdKtfSIqtSeTtghNwS+g==", + "requires": { + "autosize": "^4.0.2", + "line-height": "^0.3.1", + "prop-types": "^15.5.6" + } + }, + "react-dom": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", + "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", + "peer": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" + } + }, + "scheduler": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "peer": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + } + } + }, + "@wordpress/block-library": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@wordpress/block-library/-/block-library-6.0.2.tgz", + "integrity": "sha512-zC5IzQ7t+Y6GkeceorlI69zE4/pFw0klWhdvsltuZSDuIg4h76HyElHE+rmZYXCAiwMU+K9/WYoWjLf6BsrGLg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/a11y": "^3.2.3", + "@wordpress/api-fetch": "^5.2.4", + "@wordpress/autop": "^3.2.2", + "@wordpress/blob": "^3.2.1", + "@wordpress/block-editor": "^7.0.4", + "@wordpress/blocks": "^11.1.2", + "@wordpress/components": "^19.0.0", + "@wordpress/compose": "^5.0.4", + "@wordpress/core-data": "^4.0.4", + "@wordpress/data": "^6.1.2", + "@wordpress/date": "^4.2.2", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.5", + "@wordpress/element": "^4.0.3", + "@wordpress/escape-html": "^2.2.2", + "@wordpress/hooks": "^3.2.1", + "@wordpress/html-entities": "^3.2.2", + "@wordpress/i18n": "^4.2.3", + "@wordpress/icons": "^6.0.1", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/notices": "^3.2.5", + "@wordpress/primitives": "^3.0.3", + "@wordpress/reusable-blocks": "^3.0.4", + "@wordpress/rich-text": "^5.0.4", + "@wordpress/server-side-render": "^3.0.4", + "@wordpress/url": "^3.2.3", + "@wordpress/viewport": "^4.0.4", + "classnames": "^2.3.1", + "colord": "^2.7.0", + "fast-average-color": "4.3.0", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "micromodal": "^0.4.6", + "moment": "^2.22.1" + }, + "dependencies": { + "@wordpress/api-fetch": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-5.2.4.tgz", + "integrity": "sha512-8vMm08L3MMUynhD6sxe9VhRcfi3qGE3m9j7LpC9yAIxt70DaMRxHWEmGIbgO2F3INkqACdLWnDQmsHDKOSWQsQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/i18n": "^4.2.3", + "@wordpress/url": "^3.2.3" + } + }, + "@wordpress/block-editor": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/@wordpress/block-editor/-/block-editor-7.0.4.tgz", + "integrity": "sha512-crnKOzGrqe9YZOFRbEsJhfm5sGNoCK8oHDTTO8TeTlKw4tGbvTUK3aayxTr9cd2Uu3J3Cy13d3M9qJC8ebXhbQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@react-spring/web": "^9.2.4", + "@wordpress/a11y": "^3.2.3", + "@wordpress/api-fetch": "^5.2.4", + "@wordpress/blob": "^3.2.1", + "@wordpress/block-serialization-default-parser": "^4.2.2", + "@wordpress/blocks": "^11.1.2", + "@wordpress/components": "^19.0.0", + "@wordpress/compose": "^5.0.4", + "@wordpress/data": "^6.1.2", + "@wordpress/data-controls": "^2.2.5", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.5", + "@wordpress/element": "^4.0.3", + "@wordpress/hooks": "^3.2.1", + "@wordpress/html-entities": "^3.2.2", + "@wordpress/i18n": "^4.2.3", + "@wordpress/icons": "^6.0.1", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keyboard-shortcuts": "^3.0.4", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/notices": "^3.2.5", + "@wordpress/rich-text": "^5.0.4", + "@wordpress/shortcode": "^3.2.2", + "@wordpress/token-list": "^2.2.1", + "@wordpress/url": "^3.2.3", + "@wordpress/warning": "^2.2.2", + "@wordpress/wordcount": "^3.2.2", + "classnames": "^2.3.1", + "colord": "^2.7.0", + "css-mediaquery": "^0.1.2", + "diff": "^4.0.2", + "dom-scroll-into-view": "^1.2.1", + "inherits": "^2.0.3", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "react-autosize-textarea": "^7.1.0", + "react-easy-crop": "^3.0.0", + "redux-multi": "^0.1.12", + "rememo": "^3.0.0", + "traverse": "^0.6.6" + }, + "dependencies": { + "react": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", + "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", + "dev": true, + "peer": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + } + }, + "react-autosize-textarea": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/react-autosize-textarea/-/react-autosize-textarea-7.1.0.tgz", + "integrity": "sha512-BHpjCDkuOlllZn3nLazY2F8oYO1tS2jHnWhcjTWQdcKiiMU6gHLNt/fzmqMSyerR0eTdKtfSIqtSeTtghNwS+g==", + "dev": true, + "requires": { + "autosize": "^4.0.2", + "line-height": "^0.3.1", + "prop-types": "^15.5.6" + } + }, + "react-dom": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", + "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", + "dev": true, + "peer": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" + } + } + } + }, + "@wordpress/blocks": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/@wordpress/blocks/-/blocks-11.1.2.tgz", + "integrity": "sha512-xVvC/RXj9GXNRkQcGnmjWeS54intybON4Ol2vCVfreJtA5Cra5yRapRJwz3at1sgDD4q06k1sj98SemMEanazw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/autop": "^3.2.2", + "@wordpress/blob": "^3.2.1", + "@wordpress/block-serialization-default-parser": "^4.2.2", + "@wordpress/compose": "^5.0.4", + "@wordpress/data": "^6.1.2", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.5", + "@wordpress/element": "^4.0.3", + "@wordpress/hooks": "^3.2.1", + "@wordpress/html-entities": "^3.2.2", + "@wordpress/i18n": "^4.2.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/shortcode": "^3.2.2", + "colord": "^2.7.0", + "hpq": "^1.3.0", + "lodash": "^4.17.21", + "rememo": "^3.0.0", + "showdown": "^1.9.1", + "simple-html-tokenizer": "^0.5.7", + "uuid": "^8.3.0" + } + }, + "@wordpress/components": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/@wordpress/components/-/components-19.0.0.tgz", + "integrity": "sha512-foFC+jJ3nu6PZ2pnjdszi7R17CQRquXkCPaydlOCsuDbsKm0dowR264jAdK0HJWepttj+kh3amWEhzajX6AYtg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@emotion/cache": "^11.4.0", + "@emotion/css": "^11.1.3", + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "@emotion/utils": "1.0.0", + "@wordpress/a11y": "^3.2.3", + "@wordpress/compose": "^5.0.4", + "@wordpress/date": "^4.2.2", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.5", + "@wordpress/element": "^4.0.3", + "@wordpress/hooks": "^3.2.1", + "@wordpress/i18n": "^4.2.3", + "@wordpress/icons": "^6.0.1", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/primitives": "^3.0.3", + "@wordpress/rich-text": "^5.0.4", + "@wordpress/warning": "^2.2.2", + "classnames": "^2.3.1", + "colord": "^2.7.0", + "dom-scroll-into-view": "^1.2.1", + "downshift": "^6.0.15", + "framer-motion": "^4.1.17", + "gradient-parser": "^0.1.5", + "highlight-words-core": "^1.2.2", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "moment": "^2.22.1", + "re-resizable": "^6.4.0", + "react-colorful": "^5.3.1", + "react-dates": "^17.1.1", + "react-resize-aware": "^3.1.0", + "react-use-gesture": "^9.0.0", + "reakit": "^1.3.8", + "rememo": "^3.0.0", + "uuid": "^8.3.0" + }, + "dependencies": { + "airbnb-prop-types": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz", + "integrity": "sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg==", + "dev": true, + "requires": { + "array.prototype.find": "^2.1.1", + "function.prototype.name": "^1.1.2", + "is-regex": "^1.1.0", + "object-is": "^1.1.2", + "object.assign": "^4.1.0", + "object.entries": "^1.1.2", + "prop-types": "^15.7.2", + "prop-types-exact": "^1.2.0", + "react-is": "^16.13.1" + } + }, + "react": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", + "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", + "dev": true, + "peer": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + } + }, + "react-dates": { + "version": "17.2.0", + "resolved": "https://registry.npmjs.org/react-dates/-/react-dates-17.2.0.tgz", + "integrity": "sha512-RDlerU8DdRRrlYS0MQ7Z9igPWABGLDwz6+ykBNff67RM3Sset2TDqeuOr+R5o00Ggn5U47GeLsGcSDxlZd9cHw==", + "dev": true, + "requires": { + "airbnb-prop-types": "^2.10.0", + "consolidated-events": "^1.1.1 || ^2.0.0", + "is-touch-device": "^1.0.1", + "lodash": "^4.1.1", + "object.assign": "^4.1.0", + "object.values": "^1.0.4", + "prop-types": "^15.6.1", + "react-addons-shallow-compare": "^15.6.2", + "react-moment-proptypes": "^1.6.0", + "react-outside-click-handler": "^1.2.0", + "react-portal": "^4.1.5", + "react-with-styles": "^3.2.0", + "react-with-styles-interface-css": "^4.0.2" + } + }, + "react-dom": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", + "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", + "dev": true, + "peer": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" + } + }, + "react-outside-click-handler": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/react-outside-click-handler/-/react-outside-click-handler-1.3.0.tgz", + "integrity": "sha512-Te/7zFU0oHpAnctl//pP3hEAeobfeHMyygHB8MnjP6sX5OR8KHT1G3jmLsV3U9RnIYo+Yn+peJYWu+D5tUS8qQ==", + "dev": true, + "requires": { + "airbnb-prop-types": "^2.15.0", + "consolidated-events": "^1.1.1 || ^2.0.0", + "document.contains": "^1.0.1", + "object.values": "^1.1.0", + "prop-types": "^15.7.2" + } + }, + "react-portal": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/react-portal/-/react-portal-4.2.1.tgz", + "integrity": "sha512-fE9kOBagwmTXZ3YGRYb4gcMy+kSA+yLO0xnPankjRlfBv4uCpFXqKPfkpsGQQR15wkZ9EssnvTOl1yMzbkxhPQ==", + "dev": true, + "requires": { + "prop-types": "^15.5.8" + } + }, + "react-with-direction": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/react-with-direction/-/react-with-direction-1.4.0.tgz", + "integrity": "sha512-ybHNPiAmaJpoWwugwqry9Hd1Irl2hnNXlo/2SXQBwbLn/jGMauMS2y9jw+ydyX5V9ICryCqObNSthNt5R94xpg==", + "dev": true, + "requires": { + "airbnb-prop-types": "^2.16.0", + "brcast": "^2.0.2", + "deepmerge": "^1.5.2", + "direction": "^1.0.4", + "hoist-non-react-statics": "^3.3.2", + "object.assign": "^4.1.2", + "object.values": "^1.1.5", + "prop-types": "^15.7.2" + } + }, + "react-with-styles": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/react-with-styles/-/react-with-styles-3.2.3.tgz", + "integrity": "sha512-MTI1UOvMHABRLj5M4WpODfwnveHaip6X7QUMI2x6zovinJiBXxzhA9AJP7MZNaKqg1JRFtHPXZdroUC8KcXwlQ==", + "dev": true, + "requires": { + "hoist-non-react-statics": "^3.2.1", + "object.assign": "^4.1.0", + "prop-types": "^15.6.2", + "react-with-direction": "^1.3.0" + } + }, + "react-with-styles-interface-css": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/react-with-styles-interface-css/-/react-with-styles-interface-css-4.0.3.tgz", + "integrity": "sha512-wE43PIyjal2dexxyyx4Lhbcb+E42amoYPnkunRZkb9WTA+Z+9LagbyxwsI352NqMdFmghR0opg29dzDO4/YXbw==", + "dev": true, + "requires": { + "array.prototype.flat": "^1.2.1", + "global-cache": "^1.2.1" + } + } + } + }, + "@wordpress/compose": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.0.4.tgz", + "integrity": "sha512-gRpQgsxF1AnmrJnkmJOixsTtSmimFzasiXZlm0BwhsdeJEEqVO3Mt7ua59bLPHjnUmiyDfMWY9Ongn/2cSCRKQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@types/lodash": "^4.14.172", + "@types/mousetrap": "^1.6.8", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.5", + "@wordpress/element": "^4.0.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/priority-queue": "^2.2.2", + "clipboard": "^2.0.8", + "lodash": "^4.17.21", + "mousetrap": "^1.6.5", + "react-resize-aware": "^3.1.0", + "use-memo-one": "^1.1.1" + } + }, + "@wordpress/data": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.1.2.tgz", + "integrity": "sha512-Ro4CGmGBgk+7gDOkoB/u/HFPjmObNTZvN1q1vb75gfHOjVmXFt6AZSialELc+AuYODZEedrvHRk7qMBPxsgTVQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/compose": "^5.0.4", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/element": "^4.0.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/priority-queue": "^2.2.2", + "@wordpress/redux-routine": "^4.2.1", + "equivalent-key-map": "^0.2.2", + "is-promise": "^4.0.0", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "turbo-combine-reducers": "^1.0.2", + "use-memo-one": "^1.1.1" + } + }, + "@wordpress/element": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.3.tgz", + "integrity": "sha512-uFL8Xx0Uq/C+nCL5aM4Fb6YVub//1wuHyQK9VDtKwYg9UBELrexSCHo1XaesYRiGUqVW0o837qC7RCP2NLUBJw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@types/react": "^16.9.0", + "@types/react-dom": "^16.9.0", + "@wordpress/escape-html": "^2.2.2", + "lodash": "^4.17.21", + "react": "^17.0.1", + "react-dom": "^17.0.1" + } + }, + "@wordpress/icons": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@wordpress/icons/-/icons-6.0.1.tgz", + "integrity": "sha512-YAtnWquaWWM49hpoRJwaZRBTnnkwqOY0TuK8a6m0gXE2Xm3uoO/J4c6tLqKiFv3FG9Hmc/CB1WCmx+uM1TX0vw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/element": "^4.0.3", + "@wordpress/primitives": "^3.0.3" + } + }, + "deepmerge": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", + "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", + "dev": true + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "scheduler": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "dev": true, + "peer": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + } + } + }, + "@wordpress/block-serialization-default-parser": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@wordpress/block-serialization-default-parser/-/block-serialization-default-parser-4.2.2.tgz", + "integrity": "sha512-XLig548y+chFJTmjrJptiEwZuMHpz7azIpoZssedGxP1ibffo8GV1VnKzGtr/P+Z/1PHt1L00pQgxtAZmKKBag==", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@wordpress/blocks": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/@wordpress/blocks/-/blocks-11.1.1.tgz", + "integrity": "sha512-Pzk3A4UDQSy1Ay80x/fyrg27efLwfkKyzIHY2XtQrXGlDAT+oGwgJYmqgYff1SYhqFEjq5a7fkN2hGBaYXk+yQ==", + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/autop": "^3.2.2", + "@wordpress/blob": "^3.2.1", + "@wordpress/block-serialization-default-parser": "^4.2.2", + "@wordpress/compose": "^5.0.3", + "@wordpress/data": "^6.1.1", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.4", + "@wordpress/element": "^4.0.2", + "@wordpress/hooks": "^3.2.1", + "@wordpress/html-entities": "^3.2.2", + "@wordpress/i18n": "^4.2.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/shortcode": "^3.2.2", + "colord": "^2.7.0", + "hpq": "^1.3.0", + "lodash": "^4.17.21", + "rememo": "^3.0.0", + "showdown": "^1.9.1", + "simple-html-tokenizer": "^0.5.7", + "uuid": "^8.3.0" + } + }, + "@wordpress/browserslist-config": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@wordpress/browserslist-config/-/browserslist-config-4.1.0.tgz", + "integrity": "sha512-RSJhgY2xmz6yAdDNhz/NvAO6JS+91vv9cVL7VDG2CftbyjTXBef05vWt3FzZhfeF0xUrYdpZL1PVpxmJiKvbEg==", + "dev": true + }, + "@wordpress/components": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/@wordpress/components/-/components-18.0.0.tgz", + "integrity": "sha512-0KWlm3AXHVd1EeEd8K1Q/aH9ieTZCHdcSyH2m9p4s0mpxl7Ddk0ly9PPAMt6HVliqapYuxAf2gb1UHO9pFyRCw==", + "requires": { + "@babel/runtime": "^7.13.10", + "@emotion/cache": "^11.4.0", + "@emotion/css": "^11.1.3", + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "@emotion/utils": "1.0.0", + "@wordpress/a11y": "^3.2.3", + "@wordpress/compose": "^5.0.3", + "@wordpress/date": "^4.2.2", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.4", + "@wordpress/element": "^4.0.2", + "@wordpress/hooks": "^3.2.1", + "@wordpress/i18n": "^4.2.3", + "@wordpress/icons": "^6.0.0", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/primitives": "^3.0.2", + "@wordpress/rich-text": "^5.0.3", + "@wordpress/warning": "^2.2.2", + "classnames": "^2.3.1", + "colord": "^2.7.0", + "dom-scroll-into-view": "^1.2.1", + "downshift": "^6.0.15", + "framer-motion": "^4.1.17", + "gradient-parser": "^0.1.5", + "highlight-words-core": "^1.2.2", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "moment": "^2.22.1", + "re-resizable": "^6.4.0", + "react-colorful": "^5.3.1", + "react-dates": "^17.1.1", + "react-resize-aware": "^3.1.0", + "react-use-gesture": "^9.0.0", + "reakit": "^1.3.8", + "rememo": "^3.0.0", + "tinycolor2": "^1.4.2", + "uuid": "^8.3.0" + }, + "dependencies": { + "airbnb-prop-types": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz", + "integrity": "sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg==", + "requires": { + "array.prototype.find": "^2.1.1", + "function.prototype.name": "^1.1.2", + "is-regex": "^1.1.0", + "object-is": "^1.1.2", + "object.assign": "^4.1.0", + "object.entries": "^1.1.2", + "prop-types": "^15.7.2", + "prop-types-exact": "^1.2.0", + "react-is": "^16.13.1" + } + }, + "deepmerge": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", + "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==" + }, + "react": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", + "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", + "peer": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + } + }, + "react-dates": { + "version": "17.2.0", + "resolved": "https://registry.npmjs.org/react-dates/-/react-dates-17.2.0.tgz", + "integrity": "sha512-RDlerU8DdRRrlYS0MQ7Z9igPWABGLDwz6+ykBNff67RM3Sset2TDqeuOr+R5o00Ggn5U47GeLsGcSDxlZd9cHw==", + "requires": { + "airbnb-prop-types": "^2.10.0", + "consolidated-events": "^1.1.1 || ^2.0.0", + "is-touch-device": "^1.0.1", + "lodash": "^4.1.1", + "object.assign": "^4.1.0", + "object.values": "^1.0.4", + "prop-types": "^15.6.1", + "react-addons-shallow-compare": "^15.6.2", + "react-moment-proptypes": "^1.6.0", + "react-outside-click-handler": "^1.2.0", + "react-portal": "^4.1.5", + "react-with-styles": "^3.2.0", + "react-with-styles-interface-css": "^4.0.2" + } + }, + "react-dom": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", + "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", + "peer": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "react-outside-click-handler": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/react-outside-click-handler/-/react-outside-click-handler-1.3.0.tgz", + "integrity": "sha512-Te/7zFU0oHpAnctl//pP3hEAeobfeHMyygHB8MnjP6sX5OR8KHT1G3jmLsV3U9RnIYo+Yn+peJYWu+D5tUS8qQ==", + "requires": { + "airbnb-prop-types": "^2.15.0", + "consolidated-events": "^1.1.1 || ^2.0.0", + "document.contains": "^1.0.1", + "object.values": "^1.1.0", + "prop-types": "^15.7.2" + } + }, + "react-portal": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/react-portal/-/react-portal-4.2.1.tgz", + "integrity": "sha512-fE9kOBagwmTXZ3YGRYb4gcMy+kSA+yLO0xnPankjRlfBv4uCpFXqKPfkpsGQQR15wkZ9EssnvTOl1yMzbkxhPQ==", + "requires": { + "prop-types": "^15.5.8" + } + }, + "react-with-direction": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/react-with-direction/-/react-with-direction-1.4.0.tgz", + "integrity": "sha512-ybHNPiAmaJpoWwugwqry9Hd1Irl2hnNXlo/2SXQBwbLn/jGMauMS2y9jw+ydyX5V9ICryCqObNSthNt5R94xpg==", + "requires": { + "airbnb-prop-types": "^2.16.0", + "brcast": "^2.0.2", + "deepmerge": "^1.5.2", + "direction": "^1.0.4", + "hoist-non-react-statics": "^3.3.2", + "object.assign": "^4.1.2", + "object.values": "^1.1.5", + "prop-types": "^15.7.2" + } + }, + "react-with-styles": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/react-with-styles/-/react-with-styles-3.2.3.tgz", + "integrity": "sha512-MTI1UOvMHABRLj5M4WpODfwnveHaip6X7QUMI2x6zovinJiBXxzhA9AJP7MZNaKqg1JRFtHPXZdroUC8KcXwlQ==", + "requires": { + "hoist-non-react-statics": "^3.2.1", + "object.assign": "^4.1.0", + "prop-types": "^15.6.2", + "react-with-direction": "^1.3.0" + } + }, + "react-with-styles-interface-css": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/react-with-styles-interface-css/-/react-with-styles-interface-css-4.0.3.tgz", + "integrity": "sha512-wE43PIyjal2dexxyyx4Lhbcb+E42amoYPnkunRZkb9WTA+Z+9LagbyxwsI352NqMdFmghR0opg29dzDO4/YXbw==", + "requires": { + "array.prototype.flat": "^1.2.1", + "global-cache": "^1.2.1" + } + }, + "scheduler": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "peer": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + } + } + }, + "@wordpress/compose": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.0.3.tgz", + "integrity": "sha512-uRd4tBp2+FWorLuoec3CyoizgnlbrxvAyPx+it7+OmzP+/Lz6rRYkymaFDA/XTh2umkjYT8pK7FQP1H8+DfqVA==", + "requires": { + "@babel/runtime": "^7.13.10", + "@types/lodash": "^4.14.172", + "@types/mousetrap": "^1.6.8", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.4", + "@wordpress/element": "^4.0.2", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/priority-queue": "^2.2.2", + "clipboard": "^2.0.8", + "lodash": "^4.17.21", + "mousetrap": "^1.6.5", + "react-resize-aware": "^3.1.0", + "use-memo-one": "^1.1.1" + } + }, + "@wordpress/core-data": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@wordpress/core-data/-/core-data-4.0.4.tgz", + "integrity": "sha512-8oEDlOImHDw7eeqAh3dF3bl33iPZKaezAi8IgAfhoRwFs1z9KdbVE4+8RHAtv1qjAPrFMhYBgYn+Rw5XsLrghA==", + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/api-fetch": "^5.2.4", + "@wordpress/blocks": "^11.1.2", + "@wordpress/data": "^6.1.2", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/element": "^4.0.3", + "@wordpress/html-entities": "^3.2.2", + "@wordpress/i18n": "^4.2.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/url": "^3.2.3", + "equivalent-key-map": "^0.2.2", + "lodash": "^4.17.21", + "rememo": "^3.0.0", + "uuid": "^8.3.0" + }, + "dependencies": { + "@wordpress/api-fetch": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-5.2.4.tgz", + "integrity": "sha512-8vMm08L3MMUynhD6sxe9VhRcfi3qGE3m9j7LpC9yAIxt70DaMRxHWEmGIbgO2F3INkqACdLWnDQmsHDKOSWQsQ==", + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/i18n": "^4.2.3", + "@wordpress/url": "^3.2.3" + } + }, + "@wordpress/blocks": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/@wordpress/blocks/-/blocks-11.1.2.tgz", + "integrity": "sha512-xVvC/RXj9GXNRkQcGnmjWeS54intybON4Ol2vCVfreJtA5Cra5yRapRJwz3at1sgDD4q06k1sj98SemMEanazw==", + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/autop": "^3.2.2", + "@wordpress/blob": "^3.2.1", + "@wordpress/block-serialization-default-parser": "^4.2.2", + "@wordpress/compose": "^5.0.4", + "@wordpress/data": "^6.1.2", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.5", + "@wordpress/element": "^4.0.3", + "@wordpress/hooks": "^3.2.1", + "@wordpress/html-entities": "^3.2.2", + "@wordpress/i18n": "^4.2.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/shortcode": "^3.2.2", + "colord": "^2.7.0", + "hpq": "^1.3.0", + "lodash": "^4.17.21", + "rememo": "^3.0.0", + "showdown": "^1.9.1", + "simple-html-tokenizer": "^0.5.7", + "uuid": "^8.3.0" + } + }, + "@wordpress/compose": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.0.4.tgz", + "integrity": "sha512-gRpQgsxF1AnmrJnkmJOixsTtSmimFzasiXZlm0BwhsdeJEEqVO3Mt7ua59bLPHjnUmiyDfMWY9Ongn/2cSCRKQ==", + "requires": { + "@babel/runtime": "^7.13.10", + "@types/lodash": "^4.14.172", + "@types/mousetrap": "^1.6.8", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.5", + "@wordpress/element": "^4.0.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/priority-queue": "^2.2.2", + "clipboard": "^2.0.8", + "lodash": "^4.17.21", + "mousetrap": "^1.6.5", + "react-resize-aware": "^3.1.0", + "use-memo-one": "^1.1.1" + } + }, + "@wordpress/data": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.1.2.tgz", + "integrity": "sha512-Ro4CGmGBgk+7gDOkoB/u/HFPjmObNTZvN1q1vb75gfHOjVmXFt6AZSialELc+AuYODZEedrvHRk7qMBPxsgTVQ==", + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/compose": "^5.0.4", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/element": "^4.0.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/priority-queue": "^2.2.2", + "@wordpress/redux-routine": "^4.2.1", + "equivalent-key-map": "^0.2.2", + "is-promise": "^4.0.0", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "turbo-combine-reducers": "^1.0.2", + "use-memo-one": "^1.1.1" + } + }, + "@wordpress/element": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.3.tgz", + "integrity": "sha512-uFL8Xx0Uq/C+nCL5aM4Fb6YVub//1wuHyQK9VDtKwYg9UBELrexSCHo1XaesYRiGUqVW0o837qC7RCP2NLUBJw==", + "requires": { + "@babel/runtime": "^7.13.10", + "@types/react": "^16.9.0", + "@types/react-dom": "^16.9.0", + "@wordpress/escape-html": "^2.2.2", + "lodash": "^4.17.21", + "react": "^17.0.1", + "react-dom": "^17.0.1" + } + } + } + }, + "@wordpress/data": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.1.1.tgz", + "integrity": "sha512-I+kvY2aMA4Ec62rZCS4vUKRalZ01qiBTkEQXash+usYH3Lsyi6rULekwUZ9zcisVpWYbaLZsrmmarCusS65KTg==", + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/compose": "^5.0.3", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/element": "^4.0.2", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/priority-queue": "^2.2.2", + "@wordpress/redux-routine": "^4.2.1", + "equivalent-key-map": "^0.2.2", + "is-promise": "^4.0.0", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "turbo-combine-reducers": "^1.0.2", + "use-memo-one": "^1.1.1" + } + }, + "@wordpress/data-controls": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@wordpress/data-controls/-/data-controls-2.2.5.tgz", + "integrity": "sha512-kA01JYKze3CSmnjTwkvMPiRkKZfvbZFuNbUOyLmD6WTK1CCahGmD2ro/wv0TyUC7K3Z1w03Ekb+Y9PJA7VACvg==", + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/api-fetch": "^5.2.4", + "@wordpress/data": "^6.1.2", + "@wordpress/deprecated": "^3.2.2" + }, + "dependencies": { + "@wordpress/api-fetch": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-5.2.4.tgz", + "integrity": "sha512-8vMm08L3MMUynhD6sxe9VhRcfi3qGE3m9j7LpC9yAIxt70DaMRxHWEmGIbgO2F3INkqACdLWnDQmsHDKOSWQsQ==", + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/i18n": "^4.2.3", + "@wordpress/url": "^3.2.3" + } + }, + "@wordpress/compose": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.0.4.tgz", + "integrity": "sha512-gRpQgsxF1AnmrJnkmJOixsTtSmimFzasiXZlm0BwhsdeJEEqVO3Mt7ua59bLPHjnUmiyDfMWY9Ongn/2cSCRKQ==", + "requires": { + "@babel/runtime": "^7.13.10", + "@types/lodash": "^4.14.172", + "@types/mousetrap": "^1.6.8", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.5", + "@wordpress/element": "^4.0.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/priority-queue": "^2.2.2", + "clipboard": "^2.0.8", + "lodash": "^4.17.21", + "mousetrap": "^1.6.5", + "react-resize-aware": "^3.1.0", + "use-memo-one": "^1.1.1" + } + }, + "@wordpress/data": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.1.2.tgz", + "integrity": "sha512-Ro4CGmGBgk+7gDOkoB/u/HFPjmObNTZvN1q1vb75gfHOjVmXFt6AZSialELc+AuYODZEedrvHRk7qMBPxsgTVQ==", + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/compose": "^5.0.4", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/element": "^4.0.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/priority-queue": "^2.2.2", + "@wordpress/redux-routine": "^4.2.1", + "equivalent-key-map": "^0.2.2", + "is-promise": "^4.0.0", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "turbo-combine-reducers": "^1.0.2", + "use-memo-one": "^1.1.1" + } + }, + "@wordpress/element": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.3.tgz", + "integrity": "sha512-uFL8Xx0Uq/C+nCL5aM4Fb6YVub//1wuHyQK9VDtKwYg9UBELrexSCHo1XaesYRiGUqVW0o837qC7RCP2NLUBJw==", + "requires": { + "@babel/runtime": "^7.13.10", + "@types/react": "^16.9.0", + "@types/react-dom": "^16.9.0", + "@wordpress/escape-html": "^2.2.2", + "lodash": "^4.17.21", + "react": "^17.0.1", + "react-dom": "^17.0.1" + } + } + } + }, + "@wordpress/date": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@wordpress/date/-/date-4.2.2.tgz", + "integrity": "sha512-sYcMvFwrVoYv5lL9NsYLVd29hfuqgf1L1WsIjDV8hMna1eqr9f8xCrZSLgBKkDBmVWiIcleYGP5uDdrKpu6EiA==", + "requires": { + "@babel/runtime": "^7.13.10", + "moment": "^2.22.1", + "moment-timezone": "^0.5.31" + } + }, + "@wordpress/dependency-extraction-webpack-plugin": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@wordpress/dependency-extraction-webpack-plugin/-/dependency-extraction-webpack-plugin-3.2.1.tgz", + "integrity": "sha512-Ltd+1CJb7PMh6iN2Mse+3yN/oMORug5qXSj/3xmuZERzZO2SO6xNEJGml8yK9ev747cbHktEpitK4H+8VO3Ekg==", + "dev": true, + "requires": { + "json2php": "^0.0.4", + "webpack-sources": "^2.2.0" + } + }, + "@wordpress/deprecated": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.2.2.tgz", + "integrity": "sha512-htsu2zJUuGYG1+jejAi0r25bQQOT3bB0MGjoSixqZ0sRkFMRIdjmMLrSbpGrl0s5IRK2/w/slsStPFmm3reJtA==", + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/hooks": "^3.2.1" + } + }, + "@wordpress/dom": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.2.5.tgz", + "integrity": "sha512-V/P3w8DH8shSpKB/lq6R39IbV944ztPGCG+H6+HxXWDcfk+x5PCd1tuy2Jx+F+gjsahlkJOufrBh7u2+PmJwgQ==", + "requires": { + "@babel/runtime": "^7.13.10", + "lodash": "^4.17.21" + } + }, + "@wordpress/dom-ready": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@wordpress/dom-ready/-/dom-ready-3.2.2.tgz", + "integrity": "sha512-yCpm/vG3GanhhACnpbc7GZ2sv6oSHIkTxNPgejA5Z8cr0mEc6irsWDzhEHKcP3OhSina++IZ9ZidO7JH7eE2Xg==", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@wordpress/e2e-test-utils": { + "version": "5.4.4", + "resolved": "https://registry.npmjs.org/@wordpress/e2e-test-utils/-/e2e-test-utils-5.4.4.tgz", + "integrity": "sha512-llAWmQXyGFqEc58NHLX2SX1I03VRLCfdrZ2TWRK+qYY6QZns4wsJP4Lg2c1SsXIzUUB9u95Kzx3LvGcZcqLTfw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/api-fetch": "^5.2.3", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/url": "^3.2.3", + "form-data": "^4.0.0", + "lodash": "^4.17.21", + "node-fetch": "^2.6.0" + } + }, + "@wordpress/edit-post": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@wordpress/edit-post/-/edit-post-5.0.3.tgz", + "integrity": "sha512-/DNgi6LqDqBQoGzwYdDIKN++cu2Ry5Zev99sQMN1pnVhlmXXt6nQVUXeJ53Rfi1/baK1VB4okDwKYD84UdZT5Q==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/a11y": "^3.2.3", + "@wordpress/api-fetch": "^5.2.3", + "@wordpress/block-editor": "^7.0.3", + "@wordpress/block-library": "^6.0.1", + "@wordpress/blocks": "^11.1.1", + "@wordpress/components": "^18.0.0", + "@wordpress/compose": "^5.0.3", + "@wordpress/core-data": "^4.0.3", + "@wordpress/data": "^6.1.1", + "@wordpress/data-controls": "^2.2.4", + "@wordpress/editor": "^12.0.0", + "@wordpress/element": "^4.0.2", + "@wordpress/hooks": "^3.2.1", + "@wordpress/i18n": "^4.2.3", + "@wordpress/icons": "^6.0.0", + "@wordpress/interface": "^4.1.1", + "@wordpress/keyboard-shortcuts": "^3.0.3", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/media-utils": "^3.0.2", + "@wordpress/notices": "^3.2.4", + "@wordpress/plugins": "^4.0.3", + "@wordpress/primitives": "^3.0.2", + "@wordpress/url": "^3.2.3", + "@wordpress/viewport": "^4.0.3", + "@wordpress/warning": "^2.2.2", + "classnames": "^2.3.1", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "rememo": "^3.0.0", + "uuid": "8.3.0" + }, + "dependencies": { + "uuid": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.0.tgz", + "integrity": "sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ==", + "dev": true + } + } + }, + "@wordpress/editor": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@wordpress/editor/-/editor-12.0.0.tgz", + "integrity": "sha512-o2MD1eAaIk5pmuZ/MzBO0Mz3ogoOcuugQ4cZpvVl2lZsu8AzVK3PfhrWWgkLFlu5pho5UCBbCKQjwJoAJkyd4Q==", + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/a11y": "^3.2.3", + "@wordpress/api-fetch": "^5.2.3", + "@wordpress/autop": "^3.2.2", + "@wordpress/blob": "^3.2.1", + "@wordpress/block-editor": "^7.0.3", + "@wordpress/blocks": "^11.1.1", + "@wordpress/components": "^18.0.0", + "@wordpress/compose": "^5.0.3", + "@wordpress/core-data": "^4.0.3", + "@wordpress/data": "^6.1.1", + "@wordpress/data-controls": "^2.2.4", + "@wordpress/date": "^4.2.2", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/element": "^4.0.2", + "@wordpress/hooks": "^3.2.1", + "@wordpress/html-entities": "^3.2.2", + "@wordpress/i18n": "^4.2.3", + "@wordpress/icons": "^6.0.0", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keyboard-shortcuts": "^3.0.3", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/media-utils": "^3.0.2", + "@wordpress/notices": "^3.2.4", + "@wordpress/reusable-blocks": "^3.0.3", + "@wordpress/rich-text": "^5.0.3", + "@wordpress/server-side-render": "^3.0.3", + "@wordpress/url": "^3.2.3", + "@wordpress/wordcount": "^3.2.2", + "classnames": "^2.3.1", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "react-autosize-textarea": "^7.1.0", + "rememo": "^3.0.0" + }, + "dependencies": { + "react": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", + "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", + "peer": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + } + }, + "react-autosize-textarea": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/react-autosize-textarea/-/react-autosize-textarea-7.1.0.tgz", + "integrity": "sha512-BHpjCDkuOlllZn3nLazY2F8oYO1tS2jHnWhcjTWQdcKiiMU6gHLNt/fzmqMSyerR0eTdKtfSIqtSeTtghNwS+g==", + "requires": { + "autosize": "^4.0.2", + "line-height": "^0.3.1", + "prop-types": "^15.5.6" + } + }, + "react-dom": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", + "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", + "peer": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" + } + }, + "scheduler": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "peer": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + } + } + }, + "@wordpress/element": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.2.tgz", + "integrity": "sha512-qBNpkLb7Hh3r9aSwBOBMwRUevScbN5iR1M5B8/ZOuSZbeXYNcgWxX4WqVrt5Y52CNm8WwoQTdqcuIziNN6lhig==", + "requires": { + "@babel/runtime": "^7.13.10", + "@types/react": "^16.9.0", + "@types/react-dom": "^16.9.0", + "@wordpress/escape-html": "^2.2.2", + "lodash": "^4.17.21", + "react": "^17.0.1", + "react-dom": "^17.0.1" + } + }, + "@wordpress/escape-html": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-2.2.2.tgz", + "integrity": "sha512-NuPury2dyaqF7zpDaUOKaoM0FrEuqaDE1c3j7rM6kceJ4ZFDHnCLf5NivwchOLo7Xs0oVtqBdDza/dcSQaLFGg==", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@wordpress/eslint-plugin": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/@wordpress/eslint-plugin/-/eslint-plugin-9.2.0.tgz", + "integrity": "sha512-x0vI4EWeG20TyewXdiyUhGSJRqXR8vw47WZjzdmL8iuitDCoyWkKe73wtEs/mWLDrSNms8S0bTnp0dK6UAMXJw==", + "dev": true, + "requires": { + "@typescript-eslint/eslint-plugin": "^4.31.0", + "@typescript-eslint/parser": "^4.31.0", + "@wordpress/prettier-config": "^1.1.1", + "babel-eslint": "^10.1.0", + "cosmiconfig": "^7.0.0", + "eslint-config-prettier": "^7.1.0", + "eslint-plugin-import": "^2.23.4", + "eslint-plugin-jest": "^24.1.3", + "eslint-plugin-jsdoc": "^36.0.8", + "eslint-plugin-jsx-a11y": "^6.4.1", + "eslint-plugin-prettier": "^3.3.0", + "eslint-plugin-react": "^7.22.0", + "eslint-plugin-react-hooks": "^4.2.0", + "globals": "^12.0.0", + "prettier": "npm:wp-prettier@2.2.1-beta-1", + "requireindex": "^1.2.0" + }, + "dependencies": { + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "prettier": { + "version": "npm:wp-prettier@2.2.1-beta-1", + "resolved": "https://registry.npmjs.org/wp-prettier/-/wp-prettier-2.2.1-beta-1.tgz", + "integrity": "sha512-+JHkqs9LC/JPp51yy1hzs3lQ7qeuWCwOcSzpQNeeY/G7oSpnF61vxt7hRh87zNRTr6ob2ndy0W8rVzhgrcA+Gw==", + "dev": true + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, + "@wordpress/hooks": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-3.2.1.tgz", + "integrity": "sha512-yI8MHs6UsvgJdDsOnXGkY7/7hrOCEv/M7vwdEVA5r6nGzgJaJxf8pjBqzRkCq3nVaWqxoNZgCMHJSul6Q8RR2g==", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@wordpress/html-entities": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@wordpress/html-entities/-/html-entities-3.2.2.tgz", + "integrity": "sha512-MsmB1wtDMFfvNQiKMVMW+1ie2P3+tBZiHESkDPnXw34Dt4Tk0+QY7eYCR9krNcjJImWYJcxL+4n4M1OF9oQv0Q==", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@wordpress/i18n": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.2.3.tgz", + "integrity": "sha512-iaL7WVmFBVLyUJR0FVeaI0YJK3BiYg6Ir+s3PoJN3ppm+YsZUGThstHL8zSfQFMF0WaQ0OFWjnDqNl1th2annA==", + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/hooks": "^3.2.1", + "gettext-parser": "^1.3.1", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "sprintf-js": "^1.1.1", + "tannin": "^1.2.0" + } + }, + "@wordpress/icons": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@wordpress/icons/-/icons-6.0.0.tgz", + "integrity": "sha512-dLr7O2mu6JlCQhM3uSIRJHFyv1AeYpRosrcWF9+zlhUy7RBczfLfhf7lXO6gVxhyuUEiWYfvesB5pNha4HxsVg==", + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/element": "^4.0.2", + "@wordpress/primitives": "^3.0.2" + } + }, + "@wordpress/interface": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@wordpress/interface/-/interface-4.1.2.tgz", + "integrity": "sha512-v4sxmuBwgpTHmGmrYwd8pkTtDclzS2xercESCW1r5NNRuRrzzLBJwtA43WugB5Y9D6YCdctJWHaEcvGugPes9g==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/a11y": "^3.2.3", + "@wordpress/components": "^19.0.0", + "@wordpress/compose": "^5.0.4", + "@wordpress/data": "^6.1.2", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/element": "^4.0.3", + "@wordpress/i18n": "^4.2.3", + "@wordpress/icons": "^6.0.1", + "@wordpress/plugins": "^4.0.4", + "@wordpress/viewport": "^4.0.4", + "classnames": "^2.3.1", + "lodash": "^4.17.21" + }, + "dependencies": { + "@wordpress/components": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/@wordpress/components/-/components-19.0.0.tgz", + "integrity": "sha512-foFC+jJ3nu6PZ2pnjdszi7R17CQRquXkCPaydlOCsuDbsKm0dowR264jAdK0HJWepttj+kh3amWEhzajX6AYtg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@emotion/cache": "^11.4.0", + "@emotion/css": "^11.1.3", + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "@emotion/utils": "1.0.0", + "@wordpress/a11y": "^3.2.3", + "@wordpress/compose": "^5.0.4", + "@wordpress/date": "^4.2.2", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.5", + "@wordpress/element": "^4.0.3", + "@wordpress/hooks": "^3.2.1", + "@wordpress/i18n": "^4.2.3", + "@wordpress/icons": "^6.0.1", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/primitives": "^3.0.3", + "@wordpress/rich-text": "^5.0.4", + "@wordpress/warning": "^2.2.2", + "classnames": "^2.3.1", + "colord": "^2.7.0", + "dom-scroll-into-view": "^1.2.1", + "downshift": "^6.0.15", + "framer-motion": "^4.1.17", + "gradient-parser": "^0.1.5", + "highlight-words-core": "^1.2.2", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "moment": "^2.22.1", + "re-resizable": "^6.4.0", + "react-colorful": "^5.3.1", + "react-dates": "^17.1.1", + "react-resize-aware": "^3.1.0", + "react-use-gesture": "^9.0.0", + "reakit": "^1.3.8", + "rememo": "^3.0.0", + "uuid": "^8.3.0" + }, + "dependencies": { + "airbnb-prop-types": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz", + "integrity": "sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg==", + "dev": true, + "requires": { + "array.prototype.find": "^2.1.1", + "function.prototype.name": "^1.1.2", + "is-regex": "^1.1.0", + "object-is": "^1.1.2", + "object.assign": "^4.1.0", + "object.entries": "^1.1.2", + "prop-types": "^15.7.2", + "prop-types-exact": "^1.2.0", + "react-is": "^16.13.1" + } + }, + "react": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", + "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", + "dev": true, + "peer": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + } + }, + "react-dates": { + "version": "17.2.0", + "resolved": "https://registry.npmjs.org/react-dates/-/react-dates-17.2.0.tgz", + "integrity": "sha512-RDlerU8DdRRrlYS0MQ7Z9igPWABGLDwz6+ykBNff67RM3Sset2TDqeuOr+R5o00Ggn5U47GeLsGcSDxlZd9cHw==", + "dev": true, + "requires": { + "airbnb-prop-types": "^2.10.0", + "consolidated-events": "^1.1.1 || ^2.0.0", + "is-touch-device": "^1.0.1", + "lodash": "^4.1.1", + "object.assign": "^4.1.0", + "object.values": "^1.0.4", + "prop-types": "^15.6.1", + "react-addons-shallow-compare": "^15.6.2", + "react-moment-proptypes": "^1.6.0", + "react-outside-click-handler": "^1.2.0", + "react-portal": "^4.1.5", + "react-with-styles": "^3.2.0", + "react-with-styles-interface-css": "^4.0.2" + } + }, + "react-dom": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", + "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", + "dev": true, + "peer": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" + } + }, + "react-outside-click-handler": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/react-outside-click-handler/-/react-outside-click-handler-1.3.0.tgz", + "integrity": "sha512-Te/7zFU0oHpAnctl//pP3hEAeobfeHMyygHB8MnjP6sX5OR8KHT1G3jmLsV3U9RnIYo+Yn+peJYWu+D5tUS8qQ==", + "dev": true, + "requires": { + "airbnb-prop-types": "^2.15.0", + "consolidated-events": "^1.1.1 || ^2.0.0", + "document.contains": "^1.0.1", + "object.values": "^1.1.0", + "prop-types": "^15.7.2" + } + }, + "react-portal": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/react-portal/-/react-portal-4.2.1.tgz", + "integrity": "sha512-fE9kOBagwmTXZ3YGRYb4gcMy+kSA+yLO0xnPankjRlfBv4uCpFXqKPfkpsGQQR15wkZ9EssnvTOl1yMzbkxhPQ==", + "dev": true, + "requires": { + "prop-types": "^15.5.8" + } + }, + "react-with-direction": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/react-with-direction/-/react-with-direction-1.4.0.tgz", + "integrity": "sha512-ybHNPiAmaJpoWwugwqry9Hd1Irl2hnNXlo/2SXQBwbLn/jGMauMS2y9jw+ydyX5V9ICryCqObNSthNt5R94xpg==", + "dev": true, + "requires": { + "airbnb-prop-types": "^2.16.0", + "brcast": "^2.0.2", + "deepmerge": "^1.5.2", + "direction": "^1.0.4", + "hoist-non-react-statics": "^3.3.2", + "object.assign": "^4.1.2", + "object.values": "^1.1.5", + "prop-types": "^15.7.2" + } + }, + "react-with-styles": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/react-with-styles/-/react-with-styles-3.2.3.tgz", + "integrity": "sha512-MTI1UOvMHABRLj5M4WpODfwnveHaip6X7QUMI2x6zovinJiBXxzhA9AJP7MZNaKqg1JRFtHPXZdroUC8KcXwlQ==", + "dev": true, + "requires": { + "hoist-non-react-statics": "^3.2.1", + "object.assign": "^4.1.0", + "prop-types": "^15.6.2", + "react-with-direction": "^1.3.0" + } + }, + "react-with-styles-interface-css": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/react-with-styles-interface-css/-/react-with-styles-interface-css-4.0.3.tgz", + "integrity": "sha512-wE43PIyjal2dexxyyx4Lhbcb+E42amoYPnkunRZkb9WTA+Z+9LagbyxwsI352NqMdFmghR0opg29dzDO4/YXbw==", + "dev": true, + "requires": { + "array.prototype.flat": "^1.2.1", + "global-cache": "^1.2.1" + } + } + } + }, + "@wordpress/compose": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.0.4.tgz", + "integrity": "sha512-gRpQgsxF1AnmrJnkmJOixsTtSmimFzasiXZlm0BwhsdeJEEqVO3Mt7ua59bLPHjnUmiyDfMWY9Ongn/2cSCRKQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@types/lodash": "^4.14.172", + "@types/mousetrap": "^1.6.8", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.5", + "@wordpress/element": "^4.0.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/priority-queue": "^2.2.2", + "clipboard": "^2.0.8", + "lodash": "^4.17.21", + "mousetrap": "^1.6.5", + "react-resize-aware": "^3.1.0", + "use-memo-one": "^1.1.1" + } + }, + "@wordpress/data": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.1.2.tgz", + "integrity": "sha512-Ro4CGmGBgk+7gDOkoB/u/HFPjmObNTZvN1q1vb75gfHOjVmXFt6AZSialELc+AuYODZEedrvHRk7qMBPxsgTVQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/compose": "^5.0.4", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/element": "^4.0.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/priority-queue": "^2.2.2", + "@wordpress/redux-routine": "^4.2.1", + "equivalent-key-map": "^0.2.2", + "is-promise": "^4.0.0", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "turbo-combine-reducers": "^1.0.2", + "use-memo-one": "^1.1.1" + } + }, + "@wordpress/element": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.3.tgz", + "integrity": "sha512-uFL8Xx0Uq/C+nCL5aM4Fb6YVub//1wuHyQK9VDtKwYg9UBELrexSCHo1XaesYRiGUqVW0o837qC7RCP2NLUBJw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@types/react": "^16.9.0", + "@types/react-dom": "^16.9.0", + "@wordpress/escape-html": "^2.2.2", + "lodash": "^4.17.21", + "react": "^17.0.1", + "react-dom": "^17.0.1" + } + }, + "@wordpress/icons": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@wordpress/icons/-/icons-6.0.1.tgz", + "integrity": "sha512-YAtnWquaWWM49hpoRJwaZRBTnnkwqOY0TuK8a6m0gXE2Xm3uoO/J4c6tLqKiFv3FG9Hmc/CB1WCmx+uM1TX0vw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/element": "^4.0.3", + "@wordpress/primitives": "^3.0.3" + } + }, + "@wordpress/plugins": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@wordpress/plugins/-/plugins-4.0.4.tgz", + "integrity": "sha512-B2BdGbnt8zF8Ne+mJJsGE5cb6k1w7vG28PNozoCfJfyOEjunqpDtM+C7HaY7ml5qz3h1Q0kifubI96B/eZJGsQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/compose": "^5.0.4", + "@wordpress/element": "^4.0.3", + "@wordpress/hooks": "^3.2.1", + "@wordpress/icons": "^6.0.1", + "lodash": "^4.17.21", + "memize": "^1.1.0" + } + }, + "deepmerge": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", + "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", + "dev": true + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "scheduler": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "dev": true, + "peer": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + } + } + }, + "@wordpress/is-shallow-equal": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-4.2.0.tgz", + "integrity": "sha512-9Oy7f3HFLMNfry4LLwYmfx4tROmusPAOfanv9F/MgzSBfMH7eyxU2JZd4KrP7IbPb59UfoUa8GhaLsnqKm66og==", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@wordpress/jest-console": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@wordpress/jest-console/-/jest-console-4.1.0.tgz", + "integrity": "sha512-MAbEfYUH+odlYYtPNKoKnWzSZKZjSc2r2kvFJ7FR920ZdteEgSAPIOvjyv4r4UbJy3ZuKemnXHuVtcTAKca5Tw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "jest-matcher-utils": "^26.6.2", + "lodash": "^4.17.21" + } + }, + "@wordpress/jest-preset-default": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@wordpress/jest-preset-default/-/jest-preset-default-7.1.2.tgz", + "integrity": "sha512-TzrGj+eBrOQJxMLNh+gh+ImfFaK3caHLu7U4xF8UCGh6N+OuOTz5W9YHG/lqOuxDLdFhVkiHTytM2uFylGGRsg==", + "dev": true, + "requires": { + "@wojtekmaj/enzyme-adapter-react-17": "^0.6.1", + "@wordpress/jest-console": "^4.1.0", + "babel-jest": "^26.6.3", + "enzyme": "^3.11.0", + "enzyme-to-json": "^3.4.4" + } + }, + "@wordpress/jest-puppeteer-axe": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@wordpress/jest-puppeteer-axe/-/jest-puppeteer-axe-3.1.0.tgz", + "integrity": "sha512-XdxXI9nKSAyPWMMjWObfEuumcbZG0wSvlGzNl/qlTjcxwVNaCIxzBBfMxbcxNLcXHasNr/PowbxVqMCEaMfpcA==", + "dev": true, + "requires": { + "@axe-core/puppeteer": "^4.0.0", + "@babel/runtime": "^7.13.10" + } + }, + "@wordpress/keyboard-shortcuts": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@wordpress/keyboard-shortcuts/-/keyboard-shortcuts-3.0.4.tgz", + "integrity": "sha512-nGYW9d4qiK5pKA4zs/0Ym5SqgUccaCQ/D5qODDlUS9Ba427BiR74L7ANfgN4QH3NPIlSCwrJGFI2UjE1TTyN+Q==", + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/compose": "^5.0.4", + "@wordpress/data": "^6.1.2", + "@wordpress/element": "^4.0.3", + "@wordpress/keycodes": "^3.2.3", + "lodash": "^4.17.21", + "rememo": "^3.0.0" + }, + "dependencies": { + "@wordpress/compose": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.0.4.tgz", + "integrity": "sha512-gRpQgsxF1AnmrJnkmJOixsTtSmimFzasiXZlm0BwhsdeJEEqVO3Mt7ua59bLPHjnUmiyDfMWY9Ongn/2cSCRKQ==", + "requires": { + "@babel/runtime": "^7.13.10", + "@types/lodash": "^4.14.172", + "@types/mousetrap": "^1.6.8", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.5", + "@wordpress/element": "^4.0.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/priority-queue": "^2.2.2", + "clipboard": "^2.0.8", + "lodash": "^4.17.21", + "mousetrap": "^1.6.5", + "react-resize-aware": "^3.1.0", + "use-memo-one": "^1.1.1" + } + }, + "@wordpress/data": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.1.2.tgz", + "integrity": "sha512-Ro4CGmGBgk+7gDOkoB/u/HFPjmObNTZvN1q1vb75gfHOjVmXFt6AZSialELc+AuYODZEedrvHRk7qMBPxsgTVQ==", + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/compose": "^5.0.4", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/element": "^4.0.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/priority-queue": "^2.2.2", + "@wordpress/redux-routine": "^4.2.1", + "equivalent-key-map": "^0.2.2", + "is-promise": "^4.0.0", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "turbo-combine-reducers": "^1.0.2", + "use-memo-one": "^1.1.1" + } + }, + "@wordpress/element": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.3.tgz", + "integrity": "sha512-uFL8Xx0Uq/C+nCL5aM4Fb6YVub//1wuHyQK9VDtKwYg9UBELrexSCHo1XaesYRiGUqVW0o837qC7RCP2NLUBJw==", + "requires": { + "@babel/runtime": "^7.13.10", + "@types/react": "^16.9.0", + "@types/react-dom": "^16.9.0", + "@wordpress/escape-html": "^2.2.2", + "lodash": "^4.17.21", + "react": "^17.0.1", + "react-dom": "^17.0.1" + } + } + } + }, + "@wordpress/keycodes": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@wordpress/keycodes/-/keycodes-3.2.3.tgz", + "integrity": "sha512-1ClhtTbOSijLsyubbTlg1Df++W4CmjjRj88L7rzGX63iEHfBX6SSvui2pWVlQigDNdLNoaYGOaWm5eqDnvxkeQ==", + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/i18n": "^4.2.3", + "lodash": "^4.17.21" + } + }, + "@wordpress/media-utils": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@wordpress/media-utils/-/media-utils-3.0.3.tgz", + "integrity": "sha512-6elIJ8aNnLCWC6uKqCilgUHNOpOw9gnMJ2IFlyKbPrrXJhAhp744Nd9GUkiM1f4UDppWyIv2ik/ve6zx4O3cjg==", + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/api-fetch": "^5.2.4", + "@wordpress/blob": "^3.2.1", + "@wordpress/element": "^4.0.3", + "@wordpress/i18n": "^4.2.3", + "lodash": "^4.17.21" + }, + "dependencies": { + "@wordpress/api-fetch": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-5.2.4.tgz", + "integrity": "sha512-8vMm08L3MMUynhD6sxe9VhRcfi3qGE3m9j7LpC9yAIxt70DaMRxHWEmGIbgO2F3INkqACdLWnDQmsHDKOSWQsQ==", + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/i18n": "^4.2.3", + "@wordpress/url": "^3.2.3" + } + }, + "@wordpress/element": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.3.tgz", + "integrity": "sha512-uFL8Xx0Uq/C+nCL5aM4Fb6YVub//1wuHyQK9VDtKwYg9UBELrexSCHo1XaesYRiGUqVW0o837qC7RCP2NLUBJw==", + "requires": { + "@babel/runtime": "^7.13.10", + "@types/react": "^16.9.0", + "@types/react-dom": "^16.9.0", + "@wordpress/escape-html": "^2.2.2", + "lodash": "^4.17.21", + "react": "^17.0.1", + "react-dom": "^17.0.1" + } + } + } + }, + "@wordpress/notices": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/@wordpress/notices/-/notices-3.2.5.tgz", + "integrity": "sha512-kyj6iN0yRboOEf+/TfqeW3FSq937Tg443i1UdLGv5mZEMYpi0d+0zEORLLjAnwJmWCp6yglaKOIGlSXqTVQ4sg==", + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/a11y": "^3.2.3", + "@wordpress/data": "^6.1.2", + "lodash": "^4.17.21" + }, + "dependencies": { + "@wordpress/compose": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.0.4.tgz", + "integrity": "sha512-gRpQgsxF1AnmrJnkmJOixsTtSmimFzasiXZlm0BwhsdeJEEqVO3Mt7ua59bLPHjnUmiyDfMWY9Ongn/2cSCRKQ==", + "requires": { + "@babel/runtime": "^7.13.10", + "@types/lodash": "^4.14.172", + "@types/mousetrap": "^1.6.8", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.5", + "@wordpress/element": "^4.0.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/priority-queue": "^2.2.2", + "clipboard": "^2.0.8", + "lodash": "^4.17.21", + "mousetrap": "^1.6.5", + "react-resize-aware": "^3.1.0", + "use-memo-one": "^1.1.1" + } + }, + "@wordpress/data": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.1.2.tgz", + "integrity": "sha512-Ro4CGmGBgk+7gDOkoB/u/HFPjmObNTZvN1q1vb75gfHOjVmXFt6AZSialELc+AuYODZEedrvHRk7qMBPxsgTVQ==", + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/compose": "^5.0.4", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/element": "^4.0.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/priority-queue": "^2.2.2", + "@wordpress/redux-routine": "^4.2.1", + "equivalent-key-map": "^0.2.2", + "is-promise": "^4.0.0", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "turbo-combine-reducers": "^1.0.2", + "use-memo-one": "^1.1.1" + } + }, + "@wordpress/element": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.3.tgz", + "integrity": "sha512-uFL8Xx0Uq/C+nCL5aM4Fb6YVub//1wuHyQK9VDtKwYg9UBELrexSCHo1XaesYRiGUqVW0o837qC7RCP2NLUBJw==", + "requires": { + "@babel/runtime": "^7.13.10", + "@types/react": "^16.9.0", + "@types/react-dom": "^16.9.0", + "@wordpress/escape-html": "^2.2.2", + "lodash": "^4.17.21", + "react": "^17.0.1", + "react-dom": "^17.0.1" + } + } + } + }, + "@wordpress/npm-package-json-lint-config": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@wordpress/npm-package-json-lint-config/-/npm-package-json-lint-config-4.1.0.tgz", + "integrity": "sha512-FjXL5GbpmI/wXXcpCf2sKosVIVuWjUuHmDbwcMzd0SClcudo9QjDRdVe35We+js8eQLPgB9hsG4Cty6cAFFxsQ==", + "dev": true, + "requires": {} + }, + "@wordpress/plugins": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@wordpress/plugins/-/plugins-4.0.3.tgz", + "integrity": "sha512-NRmnuaoj0AlMz+APYLWpDUpfl2ammVsUjZLGgTJykjREQhsb6U5FY6DI3pHyJ79kMTtgpioGk8cD7bGiG4PVYA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/compose": "^5.0.3", + "@wordpress/element": "^4.0.2", + "@wordpress/hooks": "^3.2.1", + "@wordpress/icons": "^6.0.0", + "lodash": "^4.17.21", + "memize": "^1.1.0" + } + }, + "@wordpress/postcss-plugins-preset": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@wordpress/postcss-plugins-preset/-/postcss-plugins-preset-3.2.3.tgz", + "integrity": "sha512-l7JDUDVnS0me3TjAzEEWO+OVumw2YHfEFhgwBCiLsXRRXOui8h64GCiIT71aiLpX6NG8Sn0AgBzKEfTotZZyAw==", + "dev": true, + "requires": { + "@wordpress/base-styles": "^4.0.2", + "autoprefixer": "^10.2.5" + }, + "dependencies": { + "autoprefixer": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.0.tgz", + "integrity": "sha512-7FdJ1ONtwzV1G43GDD0kpVMn/qbiNqyOPMFTX5nRffI+7vgWoFEc6DcXOxHJxrWNDXrZh18eDsZjvZGUljSRGA==", + "dev": true, + "requires": { + "browserslist": "^4.17.5", + "caniuse-lite": "^1.0.30001272", + "fraction.js": "^4.1.1", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.1.0" + } + } + } + }, + "@wordpress/prettier-config": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@wordpress/prettier-config/-/prettier-config-1.1.1.tgz", + "integrity": "sha512-qjpBK5KB2ieCLv+1fGNKRW4urf5tFN1eUn3Qy+JINxNwAx6Jj9uhfXA4AldCSnD+WkzsN2UgBvgAj5/SWwzRZQ==", + "dev": true + }, + "@wordpress/primitives": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@wordpress/primitives/-/primitives-3.0.3.tgz", + "integrity": "sha512-eG1UE5d9xnML7PCr1DpP1PEliwLM4KIuEFieHVpW1HkiybyENeTl33HdqXalOSuNAdYrnYa4KifThbjcTdzP2Q==", + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/element": "^4.0.3", + "classnames": "^2.3.1" + }, + "dependencies": { + "@wordpress/element": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.3.tgz", + "integrity": "sha512-uFL8Xx0Uq/C+nCL5aM4Fb6YVub//1wuHyQK9VDtKwYg9UBELrexSCHo1XaesYRiGUqVW0o837qC7RCP2NLUBJw==", + "requires": { + "@babel/runtime": "^7.13.10", + "@types/react": "^16.9.0", + "@types/react-dom": "^16.9.0", + "@wordpress/escape-html": "^2.2.2", + "lodash": "^4.17.21", + "react": "^17.0.1", + "react-dom": "^17.0.1" + } + } + } + }, + "@wordpress/priority-queue": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@wordpress/priority-queue/-/priority-queue-2.2.2.tgz", + "integrity": "sha512-28zPQ1jIhM+9w0xfLzL8xoHIEyG0ORjIi4A8j3aWBYXHYH9f/7oVAtJRXgVTJ9iJFyiUTL8sDiaZQ6aTFV78Tg==", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@wordpress/redux-routine": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@wordpress/redux-routine/-/redux-routine-4.2.1.tgz", + "integrity": "sha512-u//4vdeKzYvu4YBRmSUsIbnUazai+PybEnquLPqxQdaF4JqVN1D5OPWHSeFtmaXR1c78I+lUf40Q7dnmA2waXw==", + "requires": { + "@babel/runtime": "^7.13.10", + "is-promise": "^4.0.0", + "lodash": "^4.17.21", + "redux": "^4.1.0", + "rungen": "^0.3.2" + } + }, + "@wordpress/reusable-blocks": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@wordpress/reusable-blocks/-/reusable-blocks-3.0.4.tgz", + "integrity": "sha512-q1yfd/jF9Hu6axhzP4NWjry1eOaVUilSu0e9FSkCxzMkI6jS2Heb1oRv3YQKVhV0vCD1WkGI6XLpHRZuXSYUIg==", + "requires": { + "@wordpress/block-editor": "^7.0.4", + "@wordpress/blocks": "^11.1.2", + "@wordpress/components": "^19.0.0", + "@wordpress/compose": "^5.0.4", + "@wordpress/core-data": "^4.0.4", + "@wordpress/data": "^6.1.2", + "@wordpress/element": "^4.0.3", + "@wordpress/i18n": "^4.2.3", + "@wordpress/icons": "^6.0.1", + "@wordpress/notices": "^3.2.5", + "@wordpress/url": "^3.2.3", + "lodash": "^4.17.21" + }, + "dependencies": { + "@wordpress/api-fetch": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-5.2.4.tgz", + "integrity": "sha512-8vMm08L3MMUynhD6sxe9VhRcfi3qGE3m9j7LpC9yAIxt70DaMRxHWEmGIbgO2F3INkqACdLWnDQmsHDKOSWQsQ==", + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/i18n": "^4.2.3", + "@wordpress/url": "^3.2.3" + } + }, + "@wordpress/block-editor": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/@wordpress/block-editor/-/block-editor-7.0.4.tgz", + "integrity": "sha512-crnKOzGrqe9YZOFRbEsJhfm5sGNoCK8oHDTTO8TeTlKw4tGbvTUK3aayxTr9cd2Uu3J3Cy13d3M9qJC8ebXhbQ==", + "requires": { + "@babel/runtime": "^7.13.10", + "@react-spring/web": "^9.2.4", + "@wordpress/a11y": "^3.2.3", + "@wordpress/api-fetch": "^5.2.4", + "@wordpress/blob": "^3.2.1", + "@wordpress/block-serialization-default-parser": "^4.2.2", + "@wordpress/blocks": "^11.1.2", + "@wordpress/components": "^19.0.0", + "@wordpress/compose": "^5.0.4", + "@wordpress/data": "^6.1.2", + "@wordpress/data-controls": "^2.2.5", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.5", + "@wordpress/element": "^4.0.3", + "@wordpress/hooks": "^3.2.1", + "@wordpress/html-entities": "^3.2.2", + "@wordpress/i18n": "^4.2.3", + "@wordpress/icons": "^6.0.1", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keyboard-shortcuts": "^3.0.4", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/notices": "^3.2.5", + "@wordpress/rich-text": "^5.0.4", + "@wordpress/shortcode": "^3.2.2", + "@wordpress/token-list": "^2.2.1", + "@wordpress/url": "^3.2.3", + "@wordpress/warning": "^2.2.2", + "@wordpress/wordcount": "^3.2.2", + "classnames": "^2.3.1", + "colord": "^2.7.0", + "css-mediaquery": "^0.1.2", + "diff": "^4.0.2", + "dom-scroll-into-view": "^1.2.1", + "inherits": "^2.0.3", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "react-autosize-textarea": "^7.1.0", + "react-easy-crop": "^3.0.0", + "redux-multi": "^0.1.12", + "rememo": "^3.0.0", + "traverse": "^0.6.6" + }, + "dependencies": { + "react": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", + "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", + "peer": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + } + }, + "react-autosize-textarea": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/react-autosize-textarea/-/react-autosize-textarea-7.1.0.tgz", + "integrity": "sha512-BHpjCDkuOlllZn3nLazY2F8oYO1tS2jHnWhcjTWQdcKiiMU6gHLNt/fzmqMSyerR0eTdKtfSIqtSeTtghNwS+g==", + "requires": { + "autosize": "^4.0.2", + "line-height": "^0.3.1", + "prop-types": "^15.5.6" + } + }, + "react-dom": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", + "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", + "peer": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" + } + } + } + }, + "@wordpress/blocks": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/@wordpress/blocks/-/blocks-11.1.2.tgz", + "integrity": "sha512-xVvC/RXj9GXNRkQcGnmjWeS54intybON4Ol2vCVfreJtA5Cra5yRapRJwz3at1sgDD4q06k1sj98SemMEanazw==", + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/autop": "^3.2.2", + "@wordpress/blob": "^3.2.1", + "@wordpress/block-serialization-default-parser": "^4.2.2", + "@wordpress/compose": "^5.0.4", + "@wordpress/data": "^6.1.2", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.5", + "@wordpress/element": "^4.0.3", + "@wordpress/hooks": "^3.2.1", + "@wordpress/html-entities": "^3.2.2", + "@wordpress/i18n": "^4.2.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/shortcode": "^3.2.2", + "colord": "^2.7.0", + "hpq": "^1.3.0", + "lodash": "^4.17.21", + "rememo": "^3.0.0", + "showdown": "^1.9.1", + "simple-html-tokenizer": "^0.5.7", + "uuid": "^8.3.0" + } + }, + "@wordpress/components": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/@wordpress/components/-/components-19.0.0.tgz", + "integrity": "sha512-foFC+jJ3nu6PZ2pnjdszi7R17CQRquXkCPaydlOCsuDbsKm0dowR264jAdK0HJWepttj+kh3amWEhzajX6AYtg==", + "requires": { + "@babel/runtime": "^7.13.10", + "@emotion/cache": "^11.4.0", + "@emotion/css": "^11.1.3", + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "@emotion/utils": "1.0.0", + "@wordpress/a11y": "^3.2.3", + "@wordpress/compose": "^5.0.4", + "@wordpress/date": "^4.2.2", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.5", + "@wordpress/element": "^4.0.3", + "@wordpress/hooks": "^3.2.1", + "@wordpress/i18n": "^4.2.3", + "@wordpress/icons": "^6.0.1", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/primitives": "^3.0.3", + "@wordpress/rich-text": "^5.0.4", + "@wordpress/warning": "^2.2.2", + "classnames": "^2.3.1", + "colord": "^2.7.0", + "dom-scroll-into-view": "^1.2.1", + "downshift": "^6.0.15", + "framer-motion": "^4.1.17", + "gradient-parser": "^0.1.5", + "highlight-words-core": "^1.2.2", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "moment": "^2.22.1", + "re-resizable": "^6.4.0", + "react-colorful": "^5.3.1", + "react-dates": "^17.1.1", + "react-resize-aware": "^3.1.0", + "react-use-gesture": "^9.0.0", + "reakit": "^1.3.8", + "rememo": "^3.0.0", + "uuid": "^8.3.0" + }, + "dependencies": { + "airbnb-prop-types": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz", + "integrity": "sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg==", + "requires": { + "array.prototype.find": "^2.1.1", + "function.prototype.name": "^1.1.2", + "is-regex": "^1.1.0", + "object-is": "^1.1.2", + "object.assign": "^4.1.0", + "object.entries": "^1.1.2", + "prop-types": "^15.7.2", + "prop-types-exact": "^1.2.0", + "react-is": "^16.13.1" + } + }, + "react": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", + "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", + "peer": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + } + }, + "react-dates": { + "version": "17.2.0", + "resolved": "https://registry.npmjs.org/react-dates/-/react-dates-17.2.0.tgz", + "integrity": "sha512-RDlerU8DdRRrlYS0MQ7Z9igPWABGLDwz6+ykBNff67RM3Sset2TDqeuOr+R5o00Ggn5U47GeLsGcSDxlZd9cHw==", + "requires": { + "airbnb-prop-types": "^2.10.0", + "consolidated-events": "^1.1.1 || ^2.0.0", + "is-touch-device": "^1.0.1", + "lodash": "^4.1.1", + "object.assign": "^4.1.0", + "object.values": "^1.0.4", + "prop-types": "^15.6.1", + "react-addons-shallow-compare": "^15.6.2", + "react-moment-proptypes": "^1.6.0", + "react-outside-click-handler": "^1.2.0", + "react-portal": "^4.1.5", + "react-with-styles": "^3.2.0", + "react-with-styles-interface-css": "^4.0.2" + } + }, + "react-dom": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", + "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", + "peer": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" + } + }, + "react-outside-click-handler": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/react-outside-click-handler/-/react-outside-click-handler-1.3.0.tgz", + "integrity": "sha512-Te/7zFU0oHpAnctl//pP3hEAeobfeHMyygHB8MnjP6sX5OR8KHT1G3jmLsV3U9RnIYo+Yn+peJYWu+D5tUS8qQ==", + "requires": { + "airbnb-prop-types": "^2.15.0", + "consolidated-events": "^1.1.1 || ^2.0.0", + "document.contains": "^1.0.1", + "object.values": "^1.1.0", + "prop-types": "^15.7.2" + } + }, + "react-portal": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/react-portal/-/react-portal-4.2.1.tgz", + "integrity": "sha512-fE9kOBagwmTXZ3YGRYb4gcMy+kSA+yLO0xnPankjRlfBv4uCpFXqKPfkpsGQQR15wkZ9EssnvTOl1yMzbkxhPQ==", + "requires": { + "prop-types": "^15.5.8" + } + }, + "react-with-direction": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/react-with-direction/-/react-with-direction-1.4.0.tgz", + "integrity": "sha512-ybHNPiAmaJpoWwugwqry9Hd1Irl2hnNXlo/2SXQBwbLn/jGMauMS2y9jw+ydyX5V9ICryCqObNSthNt5R94xpg==", + "requires": { + "airbnb-prop-types": "^2.16.0", + "brcast": "^2.0.2", + "deepmerge": "^1.5.2", + "direction": "^1.0.4", + "hoist-non-react-statics": "^3.3.2", + "object.assign": "^4.1.2", + "object.values": "^1.1.5", + "prop-types": "^15.7.2" + } + }, + "react-with-styles": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/react-with-styles/-/react-with-styles-3.2.3.tgz", + "integrity": "sha512-MTI1UOvMHABRLj5M4WpODfwnveHaip6X7QUMI2x6zovinJiBXxzhA9AJP7MZNaKqg1JRFtHPXZdroUC8KcXwlQ==", + "requires": { + "hoist-non-react-statics": "^3.2.1", + "object.assign": "^4.1.0", + "prop-types": "^15.6.2", + "react-with-direction": "^1.3.0" + } + }, + "react-with-styles-interface-css": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/react-with-styles-interface-css/-/react-with-styles-interface-css-4.0.3.tgz", + "integrity": "sha512-wE43PIyjal2dexxyyx4Lhbcb+E42amoYPnkunRZkb9WTA+Z+9LagbyxwsI352NqMdFmghR0opg29dzDO4/YXbw==", + "requires": { + "array.prototype.flat": "^1.2.1", + "global-cache": "^1.2.1" + } + } + } + }, + "@wordpress/compose": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.0.4.tgz", + "integrity": "sha512-gRpQgsxF1AnmrJnkmJOixsTtSmimFzasiXZlm0BwhsdeJEEqVO3Mt7ua59bLPHjnUmiyDfMWY9Ongn/2cSCRKQ==", + "requires": { + "@babel/runtime": "^7.13.10", + "@types/lodash": "^4.14.172", + "@types/mousetrap": "^1.6.8", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.5", + "@wordpress/element": "^4.0.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/priority-queue": "^2.2.2", + "clipboard": "^2.0.8", + "lodash": "^4.17.21", + "mousetrap": "^1.6.5", + "react-resize-aware": "^3.1.0", + "use-memo-one": "^1.1.1" + } + }, + "@wordpress/data": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.1.2.tgz", + "integrity": "sha512-Ro4CGmGBgk+7gDOkoB/u/HFPjmObNTZvN1q1vb75gfHOjVmXFt6AZSialELc+AuYODZEedrvHRk7qMBPxsgTVQ==", + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/compose": "^5.0.4", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/element": "^4.0.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/priority-queue": "^2.2.2", + "@wordpress/redux-routine": "^4.2.1", + "equivalent-key-map": "^0.2.2", + "is-promise": "^4.0.0", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "turbo-combine-reducers": "^1.0.2", + "use-memo-one": "^1.1.1" + } + }, + "@wordpress/element": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.3.tgz", + "integrity": "sha512-uFL8Xx0Uq/C+nCL5aM4Fb6YVub//1wuHyQK9VDtKwYg9UBELrexSCHo1XaesYRiGUqVW0o837qC7RCP2NLUBJw==", + "requires": { + "@babel/runtime": "^7.13.10", + "@types/react": "^16.9.0", + "@types/react-dom": "^16.9.0", + "@wordpress/escape-html": "^2.2.2", + "lodash": "^4.17.21", + "react": "^17.0.1", + "react-dom": "^17.0.1" + } + }, + "@wordpress/icons": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@wordpress/icons/-/icons-6.0.1.tgz", + "integrity": "sha512-YAtnWquaWWM49hpoRJwaZRBTnnkwqOY0TuK8a6m0gXE2Xm3uoO/J4c6tLqKiFv3FG9Hmc/CB1WCmx+uM1TX0vw==", + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/element": "^4.0.3", + "@wordpress/primitives": "^3.0.3" + } + }, + "deepmerge": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", + "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==" + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "scheduler": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "peer": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + } + } + }, + "@wordpress/rich-text": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@wordpress/rich-text/-/rich-text-5.0.4.tgz", + "integrity": "sha512-a+eIKav2kNfaG2R1LUbI+nB4uUH8HLh/YSGjjRaMRvBQb6Tdu3+ELttqk2DnzjREVrSFYb6h7WvdTlCpN0Q/1g==", + "requires": { "@babel/runtime": "^7.13.10", - "@wordpress/compose": "^5.0.3", - "@wordpress/data": "^6.1.1", - "@wordpress/dom": "^3.2.4", - "@wordpress/element": "^4.0.2", + "@wordpress/compose": "^5.0.4", + "@wordpress/data": "^6.1.2", + "@wordpress/dom": "^3.2.5", + "@wordpress/element": "^4.0.3", "@wordpress/escape-html": "^2.2.2", "@wordpress/is-shallow-equal": "^4.2.0", "@wordpress/keycodes": "^3.2.3", @@ -3930,6 +39974,63 @@ "lodash": "^4.17.21", "memize": "^1.1.0", "rememo": "^3.0.0" + }, + "dependencies": { + "@wordpress/compose": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.0.4.tgz", + "integrity": "sha512-gRpQgsxF1AnmrJnkmJOixsTtSmimFzasiXZlm0BwhsdeJEEqVO3Mt7ua59bLPHjnUmiyDfMWY9Ongn/2cSCRKQ==", + "requires": { + "@babel/runtime": "^7.13.10", + "@types/lodash": "^4.14.172", + "@types/mousetrap": "^1.6.8", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.5", + "@wordpress/element": "^4.0.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/priority-queue": "^2.2.2", + "clipboard": "^2.0.8", + "lodash": "^4.17.21", + "mousetrap": "^1.6.5", + "react-resize-aware": "^3.1.0", + "use-memo-one": "^1.1.1" + } + }, + "@wordpress/data": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.1.2.tgz", + "integrity": "sha512-Ro4CGmGBgk+7gDOkoB/u/HFPjmObNTZvN1q1vb75gfHOjVmXFt6AZSialELc+AuYODZEedrvHRk7qMBPxsgTVQ==", + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/compose": "^5.0.4", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/element": "^4.0.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/priority-queue": "^2.2.2", + "@wordpress/redux-routine": "^4.2.1", + "equivalent-key-map": "^0.2.2", + "is-promise": "^4.0.0", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "turbo-combine-reducers": "^1.0.2", + "use-memo-one": "^1.1.1" + } + }, + "@wordpress/element": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.3.tgz", + "integrity": "sha512-uFL8Xx0Uq/C+nCL5aM4Fb6YVub//1wuHyQK9VDtKwYg9UBELrexSCHo1XaesYRiGUqVW0o837qC7RCP2NLUBJw==", + "requires": { + "@babel/runtime": "^7.13.10", + "@types/react": "^16.9.0", + "@types/react-dom": "^16.9.0", + "@wordpress/escape-html": "^2.2.2", + "lodash": "^4.17.21", + "react": "^17.0.1", + "react-dom": "^17.0.1" + } + } } }, "@wordpress/scripts": { @@ -3991,117 +40092,972 @@ "webpack-livereload-plugin": "^3.0.1" }, "dependencies": { + "@jest/console": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz", + "integrity": "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^26.6.2", + "jest-util": "^26.6.2", + "slash": "^3.0.0" + } + }, + "@jest/core": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz", + "integrity": "sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==", + "dev": true, + "requires": { + "@jest/console": "^26.6.2", + "@jest/reporters": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-changed-files": "^26.6.2", + "jest-config": "^26.6.3", + "jest-haste-map": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-resolve-dependencies": "^26.6.3", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "jest-watcher": "^26.6.2", + "micromatch": "^4.0.2", + "p-each-series": "^2.1.0", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "@jest/globals": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz", + "integrity": "sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==", + "dev": true, + "requires": { + "@jest/environment": "^26.6.2", + "@jest/types": "^26.6.2", + "expect": "^26.6.2" + } + }, + "@jest/reporters": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-26.6.2.tgz", + "integrity": "sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==", + "dev": true, + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.4", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "jest-haste-map": "^26.6.2", + "jest-resolve": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "node-notifier": "^8.0.0", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^7.0.0" + } + }, + "@jest/source-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz", + "integrity": "sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==", + "dev": true, + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.4", + "source-map": "^0.6.0" + } + }, + "@jest/test-result": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz", + "integrity": "sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==", + "dev": true, + "requires": { + "@jest/console": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } + }, + "@jest/test-sequencer": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz", + "integrity": "sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==", + "dev": true, + "requires": { + "@jest/test-result": "^26.6.2", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3" + } + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "color-convert": "^2.0.1" + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cjs-module-lexer": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz", + "integrity": "sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==", + "dev": true + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "css-declaration-sorter": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.1.3.tgz", + "integrity": "sha512-SvjQjNRZgh4ULK1LDJ2AduPKUKxIqmtU7ZAyi47BTV+M90Qvxr9AB6lKlLbDUfXqI9IQeYA8LbAsCZPpJEV3aA==", + "dev": true, + "requires": { + "timsort": "^0.3.0" + } + }, + "cssnano": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.0.8.tgz", + "integrity": "sha512-Lda7geZU0Yu+RZi2SGpjYuQz4HI4/1Y+BhdD0jL7NXAQ5larCzVn+PUGuZbDMYz904AXXCOgO5L1teSvgu7aFg==", + "dev": true, + "requires": { + "cssnano-preset-default": "^5.1.4", + "is-resolvable": "^1.1.0", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + } + }, + "cssnano-preset-default": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.1.4.tgz", + "integrity": "sha512-sPpQNDQBI3R/QsYxQvfB4mXeEcWuw0wGtKtmS5eg8wudyStYMgKOQT39G07EbW1LB56AOYrinRS9f0ig4Y3MhQ==", + "dev": true, + "requires": { + "css-declaration-sorter": "^6.0.3", + "cssnano-utils": "^2.0.1", + "postcss-calc": "^8.0.0", + "postcss-colormin": "^5.2.0", + "postcss-convert-values": "^5.0.1", + "postcss-discard-comments": "^5.0.1", + "postcss-discard-duplicates": "^5.0.1", + "postcss-discard-empty": "^5.0.1", + "postcss-discard-overridden": "^5.0.1", + "postcss-merge-longhand": "^5.0.2", + "postcss-merge-rules": "^5.0.2", + "postcss-minify-font-values": "^5.0.1", + "postcss-minify-gradients": "^5.0.2", + "postcss-minify-params": "^5.0.1", + "postcss-minify-selectors": "^5.1.0", + "postcss-normalize-charset": "^5.0.1", + "postcss-normalize-display-values": "^5.0.1", + "postcss-normalize-positions": "^5.0.1", + "postcss-normalize-repeat-style": "^5.0.1", + "postcss-normalize-string": "^5.0.1", + "postcss-normalize-timing-functions": "^5.0.1", + "postcss-normalize-unicode": "^5.0.1", + "postcss-normalize-url": "^5.0.2", + "postcss-normalize-whitespace": "^5.0.1", + "postcss-ordered-values": "^5.0.2", + "postcss-reduce-initial": "^5.0.1", + "postcss-reduce-transforms": "^5.0.1", + "postcss-svgo": "^5.0.2", + "postcss-unique-selectors": "^5.0.1" + } + }, + "cssnano-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-2.0.1.tgz", + "integrity": "sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ==", + "dev": true, + "requires": {} + }, + "emittery": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz", + "integrity": "sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + } + } + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "requires": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + } + }, + "jest": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.3.tgz", + "integrity": "sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==", + "dev": true, + "requires": { + "@jest/core": "^26.6.3", + "import-local": "^3.0.2", + "jest-cli": "^26.6.3" + } + }, + "jest-changed-files": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.6.2.tgz", + "integrity": "sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "execa": "^4.0.0", + "throat": "^5.0.0" + } + }, + "jest-cli": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz", + "integrity": "sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==", + "dev": true, + "requires": { + "@jest/core": "^26.6.3", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "import-local": "^3.0.2", + "is-ci": "^2.0.0", + "jest-config": "^26.6.3", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "prompts": "^2.0.1", + "yargs": "^15.4.1" + } + }, + "jest-config": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz", + "integrity": "sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^26.6.3", + "@jest/types": "^26.6.2", + "babel-jest": "^26.6.3", + "chalk": "^4.0.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.4", + "jest-environment-jsdom": "^26.6.2", + "jest-environment-node": "^26.6.2", + "jest-get-type": "^26.3.0", + "jest-jasmine2": "^26.6.3", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2" + } + }, + "jest-docblock": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz", + "integrity": "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==", + "dev": true, + "requires": { + "detect-newline": "^3.0.0" + } + }, + "jest-environment-jsdom": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz", + "integrity": "sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==", + "dev": true, + "requires": { + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2", + "jsdom": "^16.4.0" + } + }, + "jest-jasmine2": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz", + "integrity": "sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^26.6.2", + "@jest/source-map": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^26.6.2", + "is-generator-fn": "^2.0.0", + "jest-each": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "pretty-format": "^26.6.2", + "throat": "^5.0.0" + } + }, + "jest-leak-detector": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz", + "integrity": "sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==", + "dev": true, + "requires": { + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + } + }, + "jest-message-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", + "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2", + "slash": "^3.0.0", + "stack-utils": "^2.0.2" + } + }, + "jest-resolve": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", + "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" + }, + "dependencies": { + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } } }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "jest-resolve-dependencies": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz", + "integrity": "sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==", "dev": true, "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@jest/types": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-snapshot": "^26.6.2" } }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "jest-runner": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz", + "integrity": "sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==", "dev": true, "requires": { - "color-name": "~1.1.4" + "@jest/console": "^26.6.2", + "@jest/environment": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.7.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-config": "^26.6.3", + "jest-docblock": "^26.0.0", + "jest-haste-map": "^26.6.2", + "jest-leak-detector": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", + "jest-runtime": "^26.6.3", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "source-map-support": "^0.5.6", + "throat": "^5.0.0" } }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "jest-runtime": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz", + "integrity": "sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==", + "dev": true, + "requires": { + "@jest/console": "^26.6.2", + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/globals": "^26.6.2", + "@jest/source-map": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0", + "cjs-module-lexer": "^0.6.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.4", + "jest-config": "^26.6.3", + "jest-haste-map": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-mock": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "slash": "^3.0.0", + "strip-bom": "^4.0.0", + "yargs": "^15.4.1" + } }, - "cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "jest-snapshot": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz", + "integrity": "sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==", "dev": true, "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" + "@babel/types": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.0.0", + "chalk": "^4.0.0", + "expect": "^26.6.2", + "graceful-fs": "^4.2.4", + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "jest-haste-map": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", + "natural-compare": "^1.4.0", + "pretty-format": "^26.6.2", + "semver": "^7.3.2" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } } }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "jest-validate": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", + "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", "dev": true, "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" + "@jest/types": "^26.6.2", + "camelcase": "^6.0.0", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "leven": "^3.1.0", + "pretty-format": "^26.6.2" } }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "jest-watcher": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz", + "integrity": "sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==", + "dev": true, + "requires": { + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^26.6.2", + "string-length": "^4.0.1" + } + }, + "jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "postcss-calc": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.0.0.tgz", + "integrity": "sha512-5NglwDrcbiy8XXfPM11F3HeC6hoT9W7GUH/Zi5U/p7u3Irv4rHhdDcIZwG0llHXV4ftsBjpfWMXAnXNl4lnt8g==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + } + }, + "postcss-colormin": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.0.tgz", + "integrity": "sha512-+HC6GfWU3upe5/mqmxuqYZ9B2Wl4lcoUUNkoaX59nEWV4EtADCMiBqui111Bu8R8IvaZTmqmxrqOAqjbHIwXPw==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "colord": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-convert-values": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.1.tgz", + "integrity": "sha512-C3zR1Do2BkKkCgC0g3sF8TS0koF2G+mN8xxayZx3f10cIRmTaAnpgpRQZjNekTZxM2ciSPoh2IWJm0VZx8NoQg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-discard-comments": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz", + "integrity": "sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg==", + "dev": true, + "requires": {} + }, + "postcss-discard-duplicates": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz", + "integrity": "sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA==", + "dev": true, + "requires": {} + }, + "postcss-discard-empty": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz", + "integrity": "sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw==", + "dev": true, + "requires": {} + }, + "postcss-discard-overridden": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz", + "integrity": "sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q==", + "dev": true, + "requires": {} + }, + "postcss-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.0.tgz", + "integrity": "sha512-H9hv447QjQJVDbHj3OUdciyAXY3v5+UDduzEytAlZCVHCpNAAg/mCSwhYYqZr9BiGYhmYspU8QXxZwiHTLn3yA==", + "dev": true, + "requires": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.4", + "semver": "^7.3.5" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "postcss-merge-longhand": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.0.2.tgz", + "integrity": "sha512-BMlg9AXSI5G9TBT0Lo/H3PfUy63P84rVz3BjCFE9e9Y9RXQZD3+h3YO1kgTNsNJy7bBc1YQp8DmSnwLIW5VPcw==", + "dev": true, + "requires": { + "css-color-names": "^1.0.1", + "postcss-value-parser": "^4.1.0", + "stylehacks": "^5.0.1" + } + }, + "postcss-merge-rules": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.0.2.tgz", + "integrity": "sha512-5K+Md7S3GwBewfB4rjDeol6V/RZ8S+v4B66Zk2gChRqLTCC8yjnHQ601omj9TKftS19OPGqZ/XzoqpzNQQLwbg==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^2.0.1", + "postcss-selector-parser": "^6.0.5", + "vendors": "^1.0.3" + } + }, + "postcss-minify-font-values": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.0.1.tgz", + "integrity": "sha512-7JS4qIsnqaxk+FXY1E8dHBDmraYFWmuL6cgt0T1SWGRO5bzJf8sUoelwa4P88LEWJZweHevAiDKxHlofuvtIoA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-minify-gradients": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.2.tgz", + "integrity": "sha512-7Do9JP+wqSD6Prittitt2zDLrfzP9pqKs2EcLX7HJYxsxCOwrrcLt4x/ctQTsiOw+/8HYotAoqNkrzItL19SdQ==", + "dev": true, + "requires": { + "colord": "^2.6", + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-minify-params": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.0.1.tgz", + "integrity": "sha512-4RUC4k2A/Q9mGco1Z8ODc7h+A0z7L7X2ypO1B6V8057eVK6mZ6xwz6QN64nHuHLbqbclkX1wyzRnIrdZehTEHw==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.2", + "browserslist": "^4.16.0", + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0", + "uniqs": "^2.0.0" + } + }, + "postcss-minify-selectors": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.1.0.tgz", + "integrity": "sha512-NzGBXDa7aPsAcijXZeagnJBKBPMYLaJJzB8CQh6ncvyl2sIndLVWfbcDi0SBjRWk5VqEjXvf8tYwzoKf4Z07og==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.2", + "postcss-selector-parser": "^6.0.5" + } + }, + "postcss-normalize-charset": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz", + "integrity": "sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg==", + "dev": true, + "requires": {} + }, + "postcss-normalize-display-values": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.1.tgz", + "integrity": "sha512-uupdvWk88kLDXi5HEyI9IaAJTE3/Djbcrqq8YgjvAVuzgVuqIk3SuJWUisT2gaJbZm1H9g5k2w1xXilM3x8DjQ==", + "dev": true, + "requires": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-positions": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.0.1.tgz", + "integrity": "sha512-rvzWAJai5xej9yWqlCb1OWLd9JjW2Ex2BCPzUJrbaXmtKtgfL8dBMOOMTX6TnvQMtjk3ei1Lswcs78qKO1Skrg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-repeat-style": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.1.tgz", + "integrity": "sha512-syZ2itq0HTQjj4QtXZOeefomckiV5TaUO6ReIEabCh3wgDs4Mr01pkif0MeVwKyU/LHEkPJnpwFKRxqWA/7O3w==", + "dev": true, + "requires": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-string": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.0.1.tgz", + "integrity": "sha512-Ic8GaQ3jPMVl1OEn2U//2pm93AXUcF3wz+OriskdZ1AOuYV25OdgS7w9Xu2LO5cGyhHCgn8dMXh9bO7vi3i9pA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-timing-functions": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.1.tgz", + "integrity": "sha512-cPcBdVN5OsWCNEo5hiXfLUnXfTGtSFiBU9SK8k7ii8UD7OLuznzgNRYkLZow11BkQiiqMcgPyh4ZqXEEUrtQ1Q==", + "dev": true, + "requires": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-unicode": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.1.tgz", + "integrity": "sha512-kAtYD6V3pK0beqrU90gpCQB7g6AOfP/2KIPCVBKJM2EheVsBQmx/Iof+9zR9NFKLAx4Pr9mDhogB27pmn354nA==", + "dev": true, + "requires": { + "browserslist": "^4.16.0", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-url": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.2.tgz", + "integrity": "sha512-k4jLTPUxREQ5bpajFQZpx8bCF2UrlqOTzP9kEqcEnOfwsRshWs2+oAFIHfDQB8GO2PaUaSE0NlTAYtbluZTlHQ==", + "dev": true, + "requires": { + "is-absolute-url": "^3.0.3", + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-whitespace": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.1.tgz", + "integrity": "sha512-iPklmI5SBnRvwceb/XH568yyzK0qRVuAG+a1HFUsFRf11lEJTiQQa03a4RSCQvLKdcpX7XsI1Gen9LuLoqwiqA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-ordered-values": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.0.2.tgz", + "integrity": "sha512-8AFYDSOYWebJYLyJi3fyjl6CqMEG/UVworjiyK1r573I56kb3e879sCJLGvR3merj+fAdPpVplXKQZv+ey6CgQ==", + "dev": true, + "requires": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-reduce-initial": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.0.1.tgz", + "integrity": "sha512-zlCZPKLLTMAqA3ZWH57HlbCjkD55LX9dsRyxlls+wfuRfqCi5mSlZVan0heX5cHr154Dq9AfbH70LyhrSAezJw==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - }, - "dependencies": { - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - } + "browserslist": "^4.16.0", + "caniuse-api": "^3.0.0" } }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "postcss-reduce-transforms": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.1.tgz", + "integrity": "sha512-a//FjoPeFkRuAguPscTVmRQUODP+f3ke2HqFNgGPwdYnpeC29RZdCBvGRGTsKpMURb/I3p6jdKoBQ2zI+9Q7kA==", "dev": true, "requires": { - "pinkie-promise": "^2.0.0" + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" } }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true + "postcss-svgo": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.0.2.tgz", + "integrity": "sha512-YzQuFLZu3U3aheizD+B1joQ94vzPfE6BNUcSYuceNxlVnKKsOtdo6hL9/zyC168Q8EwfLSgaDSalsUGa9f2C0A==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.1.0", + "svgo": "^2.3.0" + } }, - "postcss-loader": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.0.tgz", - "integrity": "sha512-H9hv447QjQJVDbHj3OUdciyAXY3v5+UDduzEytAlZCVHCpNAAg/mCSwhYYqZr9BiGYhmYspU8QXxZwiHTLn3yA==", + "postcss-unique-selectors": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.0.1.tgz", + "integrity": "sha512-gwi1NhHV4FMmPn+qwBNuot1sG1t2OmacLQ/AX29lzyggnjd+MnVD5uqQmpXO3J17KGL2WAxQruj1qTd3H0gG/w==", "dev": true, "requires": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.4", - "semver": "^7.3.5" + "alphanum-sort": "^1.0.2", + "postcss-selector-parser": "^6.0.5", + "uniqs": "^2.0.0" } }, "prettier": { @@ -4111,55 +41067,74 @@ "dev": true }, "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" }, "dependencies": { - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true } } }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" + "glob": "^7.1.3" } }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "requires": { - "lru-cache": "^6.0.0" + "shebang-regex": "^3.0.0" } }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "requires": { - "is-utf8": "^0.2.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "stylehacks": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.0.1.tgz", + "integrity": "sha512-Es0rVnHIqbWzveU1b24kbw92HsebBepxfcqe5iix7t9j0PQqhs0IxXVXv0pY2Bxa08CgMkzD6OWql7kbGOuEdA==", + "dev": true, + "requires": { + "browserslist": "^4.16.0", + "postcss-selector-parser": "^6.0.4" } }, "supports-color": { @@ -4170,25 +41145,393 @@ "requires": { "has-flag": "^4.0.0" } + }, + "throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", + "dev": true + }, + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + }, + "v8-to-istanbul": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz", + "integrity": "sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "requires": { + "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" + } } } }, "@wordpress/server-side-render": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@wordpress/server-side-render/-/server-side-render-3.0.3.tgz", - "integrity": "sha512-MSnKcAePwyRS9jnkVQe+MImUAhr5d0G9BaCDp1RpLNEFB9yHX3WtsZhEAamWM3EsuDnDZqE1dD9zN+zsfT5G6Q==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@wordpress/server-side-render/-/server-side-render-3.0.4.tgz", + "integrity": "sha512-/LxybA6D/deSvhDXqD33NIHFL2o7QNQzmwXKiHn5DiTnuPGVXyyYoQ1LYyoH9pqq1MOjydtx3W4vA5y2REVYgw==", "requires": { "@babel/runtime": "^7.13.10", - "@wordpress/api-fetch": "^5.2.3", - "@wordpress/blocks": "^11.1.1", - "@wordpress/components": "^18.0.0", - "@wordpress/compose": "^5.0.3", - "@wordpress/data": "^6.1.1", + "@wordpress/api-fetch": "^5.2.4", + "@wordpress/blocks": "^11.1.2", + "@wordpress/components": "^19.0.0", + "@wordpress/compose": "^5.0.4", + "@wordpress/data": "^6.1.2", "@wordpress/deprecated": "^3.2.2", - "@wordpress/element": "^4.0.2", + "@wordpress/element": "^4.0.3", "@wordpress/i18n": "^4.2.3", "@wordpress/url": "^3.2.3", "lodash": "^4.17.21" + }, + "dependencies": { + "@wordpress/api-fetch": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-5.2.4.tgz", + "integrity": "sha512-8vMm08L3MMUynhD6sxe9VhRcfi3qGE3m9j7LpC9yAIxt70DaMRxHWEmGIbgO2F3INkqACdLWnDQmsHDKOSWQsQ==", + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/i18n": "^4.2.3", + "@wordpress/url": "^3.2.3" + } + }, + "@wordpress/blocks": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/@wordpress/blocks/-/blocks-11.1.2.tgz", + "integrity": "sha512-xVvC/RXj9GXNRkQcGnmjWeS54intybON4Ol2vCVfreJtA5Cra5yRapRJwz3at1sgDD4q06k1sj98SemMEanazw==", + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/autop": "^3.2.2", + "@wordpress/blob": "^3.2.1", + "@wordpress/block-serialization-default-parser": "^4.2.2", + "@wordpress/compose": "^5.0.4", + "@wordpress/data": "^6.1.2", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.5", + "@wordpress/element": "^4.0.3", + "@wordpress/hooks": "^3.2.1", + "@wordpress/html-entities": "^3.2.2", + "@wordpress/i18n": "^4.2.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/shortcode": "^3.2.2", + "colord": "^2.7.0", + "hpq": "^1.3.0", + "lodash": "^4.17.21", + "rememo": "^3.0.0", + "showdown": "^1.9.1", + "simple-html-tokenizer": "^0.5.7", + "uuid": "^8.3.0" + } + }, + "@wordpress/components": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/@wordpress/components/-/components-19.0.0.tgz", + "integrity": "sha512-foFC+jJ3nu6PZ2pnjdszi7R17CQRquXkCPaydlOCsuDbsKm0dowR264jAdK0HJWepttj+kh3amWEhzajX6AYtg==", + "requires": { + "@babel/runtime": "^7.13.10", + "@emotion/cache": "^11.4.0", + "@emotion/css": "^11.1.3", + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "@emotion/utils": "1.0.0", + "@wordpress/a11y": "^3.2.3", + "@wordpress/compose": "^5.0.4", + "@wordpress/date": "^4.2.2", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.5", + "@wordpress/element": "^4.0.3", + "@wordpress/hooks": "^3.2.1", + "@wordpress/i18n": "^4.2.3", + "@wordpress/icons": "^6.0.1", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/primitives": "^3.0.3", + "@wordpress/rich-text": "^5.0.4", + "@wordpress/warning": "^2.2.2", + "classnames": "^2.3.1", + "colord": "^2.7.0", + "dom-scroll-into-view": "^1.2.1", + "downshift": "^6.0.15", + "framer-motion": "^4.1.17", + "gradient-parser": "^0.1.5", + "highlight-words-core": "^1.2.2", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "moment": "^2.22.1", + "re-resizable": "^6.4.0", + "react-colorful": "^5.3.1", + "react-dates": "^17.1.1", + "react-resize-aware": "^3.1.0", + "react-use-gesture": "^9.0.0", + "reakit": "^1.3.8", + "rememo": "^3.0.0", + "uuid": "^8.3.0" + }, + "dependencies": { + "airbnb-prop-types": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz", + "integrity": "sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg==", + "requires": { + "array.prototype.find": "^2.1.1", + "function.prototype.name": "^1.1.2", + "is-regex": "^1.1.0", + "object-is": "^1.1.2", + "object.assign": "^4.1.0", + "object.entries": "^1.1.2", + "prop-types": "^15.7.2", + "prop-types-exact": "^1.2.0", + "react-is": "^16.13.1" + } + }, + "react": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", + "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", + "peer": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + } + }, + "react-dates": { + "version": "17.2.0", + "resolved": "https://registry.npmjs.org/react-dates/-/react-dates-17.2.0.tgz", + "integrity": "sha512-RDlerU8DdRRrlYS0MQ7Z9igPWABGLDwz6+ykBNff67RM3Sset2TDqeuOr+R5o00Ggn5U47GeLsGcSDxlZd9cHw==", + "requires": { + "airbnb-prop-types": "^2.10.0", + "consolidated-events": "^1.1.1 || ^2.0.0", + "is-touch-device": "^1.0.1", + "lodash": "^4.1.1", + "object.assign": "^4.1.0", + "object.values": "^1.0.4", + "prop-types": "^15.6.1", + "react-addons-shallow-compare": "^15.6.2", + "react-moment-proptypes": "^1.6.0", + "react-outside-click-handler": "^1.2.0", + "react-portal": "^4.1.5", + "react-with-styles": "^3.2.0", + "react-with-styles-interface-css": "^4.0.2" + } + }, + "react-dom": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", + "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", + "peer": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" + } + }, + "react-outside-click-handler": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/react-outside-click-handler/-/react-outside-click-handler-1.3.0.tgz", + "integrity": "sha512-Te/7zFU0oHpAnctl//pP3hEAeobfeHMyygHB8MnjP6sX5OR8KHT1G3jmLsV3U9RnIYo+Yn+peJYWu+D5tUS8qQ==", + "requires": { + "airbnb-prop-types": "^2.15.0", + "consolidated-events": "^1.1.1 || ^2.0.0", + "document.contains": "^1.0.1", + "object.values": "^1.1.0", + "prop-types": "^15.7.2" + } + }, + "react-portal": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/react-portal/-/react-portal-4.2.1.tgz", + "integrity": "sha512-fE9kOBagwmTXZ3YGRYb4gcMy+kSA+yLO0xnPankjRlfBv4uCpFXqKPfkpsGQQR15wkZ9EssnvTOl1yMzbkxhPQ==", + "requires": { + "prop-types": "^15.5.8" + } + }, + "react-with-direction": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/react-with-direction/-/react-with-direction-1.4.0.tgz", + "integrity": "sha512-ybHNPiAmaJpoWwugwqry9Hd1Irl2hnNXlo/2SXQBwbLn/jGMauMS2y9jw+ydyX5V9ICryCqObNSthNt5R94xpg==", + "requires": { + "airbnb-prop-types": "^2.16.0", + "brcast": "^2.0.2", + "deepmerge": "^1.5.2", + "direction": "^1.0.4", + "hoist-non-react-statics": "^3.3.2", + "object.assign": "^4.1.2", + "object.values": "^1.1.5", + "prop-types": "^15.7.2" + } + }, + "react-with-styles": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/react-with-styles/-/react-with-styles-3.2.3.tgz", + "integrity": "sha512-MTI1UOvMHABRLj5M4WpODfwnveHaip6X7QUMI2x6zovinJiBXxzhA9AJP7MZNaKqg1JRFtHPXZdroUC8KcXwlQ==", + "requires": { + "hoist-non-react-statics": "^3.2.1", + "object.assign": "^4.1.0", + "prop-types": "^15.6.2", + "react-with-direction": "^1.3.0" + } + }, + "react-with-styles-interface-css": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/react-with-styles-interface-css/-/react-with-styles-interface-css-4.0.3.tgz", + "integrity": "sha512-wE43PIyjal2dexxyyx4Lhbcb+E42amoYPnkunRZkb9WTA+Z+9LagbyxwsI352NqMdFmghR0opg29dzDO4/YXbw==", + "requires": { + "array.prototype.flat": "^1.2.1", + "global-cache": "^1.2.1" + } + } + } + }, + "@wordpress/compose": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.0.4.tgz", + "integrity": "sha512-gRpQgsxF1AnmrJnkmJOixsTtSmimFzasiXZlm0BwhsdeJEEqVO3Mt7ua59bLPHjnUmiyDfMWY9Ongn/2cSCRKQ==", + "requires": { + "@babel/runtime": "^7.13.10", + "@types/lodash": "^4.14.172", + "@types/mousetrap": "^1.6.8", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.5", + "@wordpress/element": "^4.0.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/priority-queue": "^2.2.2", + "clipboard": "^2.0.8", + "lodash": "^4.17.21", + "mousetrap": "^1.6.5", + "react-resize-aware": "^3.1.0", + "use-memo-one": "^1.1.1" + } + }, + "@wordpress/data": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.1.2.tgz", + "integrity": "sha512-Ro4CGmGBgk+7gDOkoB/u/HFPjmObNTZvN1q1vb75gfHOjVmXFt6AZSialELc+AuYODZEedrvHRk7qMBPxsgTVQ==", + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/compose": "^5.0.4", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/element": "^4.0.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/priority-queue": "^2.2.2", + "@wordpress/redux-routine": "^4.2.1", + "equivalent-key-map": "^0.2.2", + "is-promise": "^4.0.0", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "turbo-combine-reducers": "^1.0.2", + "use-memo-one": "^1.1.1" + } + }, + "@wordpress/element": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.3.tgz", + "integrity": "sha512-uFL8Xx0Uq/C+nCL5aM4Fb6YVub//1wuHyQK9VDtKwYg9UBELrexSCHo1XaesYRiGUqVW0o837qC7RCP2NLUBJw==", + "requires": { + "@babel/runtime": "^7.13.10", + "@types/react": "^16.9.0", + "@types/react-dom": "^16.9.0", + "@wordpress/escape-html": "^2.2.2", + "lodash": "^4.17.21", + "react": "^17.0.1", + "react-dom": "^17.0.1" + } + }, + "@wordpress/icons": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@wordpress/icons/-/icons-6.0.1.tgz", + "integrity": "sha512-YAtnWquaWWM49hpoRJwaZRBTnnkwqOY0TuK8a6m0gXE2Xm3uoO/J4c6tLqKiFv3FG9Hmc/CB1WCmx+uM1TX0vw==", + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/element": "^4.0.3", + "@wordpress/primitives": "^3.0.3" + } + }, + "deepmerge": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", + "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==" + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "scheduler": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "peer": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + } } }, "@wordpress/shortcode": { @@ -4231,15 +41574,75 @@ } }, "@wordpress/viewport": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@wordpress/viewport/-/viewport-4.0.3.tgz", - "integrity": "sha512-94bzvgnBHgMra+l0frbaP4X017aAeOBCQNpFF2FB6972niorWCA7sQscSH8xYyv+5htCWIYEKTH0gI7rPcxxmg==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@wordpress/viewport/-/viewport-4.0.4.tgz", + "integrity": "sha512-vLvMpvY0PTOBToP4DqgsnmhFCbikqEhpRMPE0WhKjt8BThGqFyzXspWQNd5+Unau3mqFFMRn3apVe7yRRp8Ibg==", "dev": true, "requires": { "@babel/runtime": "^7.13.10", - "@wordpress/compose": "^5.0.3", - "@wordpress/data": "^6.1.1", + "@wordpress/compose": "^5.0.4", + "@wordpress/data": "^6.1.2", "lodash": "^4.17.21" + }, + "dependencies": { + "@wordpress/compose": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.0.4.tgz", + "integrity": "sha512-gRpQgsxF1AnmrJnkmJOixsTtSmimFzasiXZlm0BwhsdeJEEqVO3Mt7ua59bLPHjnUmiyDfMWY9Ongn/2cSCRKQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@types/lodash": "^4.14.172", + "@types/mousetrap": "^1.6.8", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.5", + "@wordpress/element": "^4.0.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/priority-queue": "^2.2.2", + "clipboard": "^2.0.8", + "lodash": "^4.17.21", + "mousetrap": "^1.6.5", + "react-resize-aware": "^3.1.0", + "use-memo-one": "^1.1.1" + } + }, + "@wordpress/data": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.1.2.tgz", + "integrity": "sha512-Ro4CGmGBgk+7gDOkoB/u/HFPjmObNTZvN1q1vb75gfHOjVmXFt6AZSialELc+AuYODZEedrvHRk7qMBPxsgTVQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/compose": "^5.0.4", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/element": "^4.0.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/priority-queue": "^2.2.2", + "@wordpress/redux-routine": "^4.2.1", + "equivalent-key-map": "^0.2.2", + "is-promise": "^4.0.0", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "turbo-combine-reducers": "^1.0.2", + "use-memo-one": "^1.1.1" + } + }, + "@wordpress/element": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.3.tgz", + "integrity": "sha512-uFL8Xx0Uq/C+nCL5aM4Fb6YVub//1wuHyQK9VDtKwYg9UBELrexSCHo1XaesYRiGUqVW0o837qC7RCP2NLUBJw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@types/react": "^16.9.0", + "@types/react-dom": "^16.9.0", + "@wordpress/escape-html": "^2.2.2", + "lodash": "^4.17.21", + "react": "^17.0.1", + "react-dom": "^17.0.1" + } + } } }, "@wordpress/warning": { @@ -4296,17 +41699,12 @@ "acorn-walk": "^7.1.1" } }, - "acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true - }, "acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true + "dev": true, + "requires": {} }, "acorn-walk": { "version": "7.2.0", @@ -4333,22 +41731,6 @@ "indent-string": "^4.0.0" } }, - "airbnb-prop-types": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz", - "integrity": "sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg==", - "requires": { - "array.prototype.find": "^2.1.1", - "function.prototype.name": "^1.1.2", - "is-regex": "^1.1.0", - "object-is": "^1.1.2", - "object.assign": "^4.1.0", - "object.entries": "^1.1.2", - "prop-types": "^15.7.2", - "prop-types-exact": "^1.2.0", - "react-is": "^16.13.1" - } - }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -4365,13 +41747,15 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true + "dev": true, + "requires": {} }, "ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true + "dev": true, + "requires": {} }, "alphanum-sort": { "version": "1.0.2", @@ -4386,26 +41770,16 @@ "dev": true }, "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "requires": { - "type-fest": "^0.21.3" - }, - "dependencies": { - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true - } - } + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true }, "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true }, "ansi-styles": { "version": "3.2.1", @@ -4603,16 +41977,17 @@ "dev": true }, "autoprefixer": { - "version": "10.3.7", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.3.7.tgz", - "integrity": "sha512-EmGpu0nnQVmMhX8ROoJ7Mx8mKYPlcUHuxkwrRYEYMz85lu7H09v8w6R1P0JPdn/hKU32GjpLBFEOuIlDWCRWvg==", + "version": "9.8.8", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", + "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", "dev": true, "requires": { - "browserslist": "^4.17.3", - "caniuse-lite": "^1.0.30001264", - "fraction.js": "^4.1.1", + "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" }, "dependencies": { @@ -4621,6 +41996,22 @@ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true } } }, @@ -4630,9 +42021,9 @@ "integrity": "sha512-5yxLQ22O0fCRGoxGfeLSNt3J8LB1v+umtpMnPW6XjkTWXKoN0AmXAIhelJcDtFT/Y/wYWmfE+oqU10Q0b8FhaQ==" }, "axe-core": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.3.3.tgz", - "integrity": "sha512-/lqqLAmuIPi79WYfRpy2i8z+x+vxU3zX2uAm0gs1q52qTuKwolOj1P8XbufpXcsydrpKx2yGn2wzAnxCMV86QA==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.3.4.tgz", + "integrity": "sha512-4Hk6iSA/H90rtiPoCpSkeJxNWCPBf7szwVvaUqrPdxo0j2Y04suHK9jPKXaE3WI7OET6wBSwsWw7FDc1DBq7iQ==", "dev": true }, "axios": { @@ -4740,9 +42131,9 @@ } }, "babel-loader": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.2.tgz", - "integrity": "sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g==", + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.3.tgz", + "integrity": "sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw==", "dev": true, "requires": { "find-cache-dir": "^3.3.1", @@ -4796,15 +42187,15 @@ } }, "babel-plugin-istanbul": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", - "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", "@istanbuljs/load-nyc-config": "^1.0.0", "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^4.0.0", + "istanbul-lib-instrument": "^5.0.4", "test-exclude": "^6.0.0" } }, @@ -4828,6 +42219,20 @@ "@babel/runtime": "^7.7.2", "cosmiconfig": "^6.0.0", "resolve": "^1.12.0" + }, + "dependencies": { + "cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + } + } } }, "babel-plugin-polyfill-corejs2": { @@ -4955,35 +42360,6 @@ "requires": { "is-descriptor": "^1.0.0" } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } } } }, @@ -5076,15 +42452,14 @@ "dev": true }, "browserslist": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.4.tgz", - "integrity": "sha512-Zg7RpbZpIJRW3am9Lyckue7PLytvVxxhJj1CaJVlCWENsGEAOlnlt8X0ZxGRPp7Bt9o8tIRM5SEXy4BCPMJjLQ==", - "dev": true, + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.5.tgz", + "integrity": "sha512-I3ekeB92mmpctWBoLXe0d5wPS2cBuRvvW0JyyJHMrk9/HmP2ZjrTboNAZ8iuGqaEIlKguljbQY32OkOJIRrgoA==", "requires": { - "caniuse-lite": "^1.0.30001265", - "electron-to-chromium": "^1.3.867", + "caniuse-lite": "^1.0.30001271", + "electron-to-chromium": "^1.3.878", "escalade": "^3.1.1", - "node-releases": "^2.0.0", + "node-releases": "^2.0.1", "picocolors": "^1.0.0" } }, @@ -5157,9 +42532,10 @@ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" }, "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "dev": true }, "camelcase-keys": { "version": "6.2.2", @@ -5170,6 +42546,14 @@ "camelcase": "^5.3.1", "map-obj": "^4.0.0", "quick-lru": "^4.0.1" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + } } }, "caniuse-api": { @@ -5185,10 +42569,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001267", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001267.tgz", - "integrity": "sha512-r1mjTzAuJ9W8cPBGbbus8E0SKcUP7gn03R14Wk8FlAlqhH9hroy9nLqmpuXlfKEw/oILW+FGz47ipXV2O7x8lg==", - "dev": true + "version": "1.0.30001272", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001272.tgz", + "integrity": "sha512-DV1j9Oot5dydyH1v28g25KoVm7l8MTxazwuiH3utWiAS6iL/9Nh//TGwqFEeqqN8nnWYQ8HHhUq+o4QPt9kvYw==" }, "capture-exit": { "version": "2.0.0", @@ -5324,25 +42707,6 @@ "parse5": "^6.0.1", "parse5-htmlparser2-tree-adapter": "^6.0.1", "tslib": "^2.2.0" - }, - "dependencies": { - "dom-serializer": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", - "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - } - }, - "domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", - "dev": true - } } }, "cheerio-select": { @@ -5356,64 +42720,6 @@ "domelementtype": "^2.2.0", "domhandler": "^4.2.0", "domutils": "^2.7.0" - }, - "dependencies": { - "css-select": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", - "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^5.0.0", - "domhandler": "^4.2.0", - "domutils": "^2.6.0", - "nth-check": "^2.0.0" - } - }, - "css-what": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", - "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", - "dev": true - }, - "dom-serializer": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", - "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - } - }, - "domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", - "dev": true - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - }, - "nth-check": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", - "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", - "dev": true, - "requires": { - "boolbase": "^1.0.0" - } - } } }, "child_process": { @@ -5436,6 +42742,17 @@ "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } } }, "chownr": { @@ -5451,16 +42768,17 @@ "dev": true }, "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", + "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", "dev": true }, "cjs-module-lexer": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz", - "integrity": "sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==", - "dev": true + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", + "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "dev": true, + "peer": true }, "class-utils": { "version": "0.3.6", @@ -5482,6 +42800,43 @@ "requires": { "is-descriptor": "^0.1.0" } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } } } }, @@ -5525,59 +42880,12 @@ "string-width": "^4.2.0" }, "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "slice-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } - }, "string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -5588,15 +42896,6 @@ "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } } } }, @@ -5617,13 +42916,36 @@ } }, "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "peer": true, "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "peer": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "peer": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + } } }, "clone-deep": { @@ -5647,15 +42969,6 @@ "requires": { "isobject": "^3.0.1" } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } } } }, @@ -5666,6 +42979,14 @@ "dev": true, "requires": { "is-regexp": "^2.0.0" + }, + "dependencies": { + "is-regexp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-2.1.0.tgz", + "integrity": "sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA==", + "dev": true + } } }, "co": { @@ -5715,14 +43036,14 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "colord": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.8.0.tgz", - "integrity": "sha512-kNkVV4KFta3TYQv0bzs4xNwLaeag261pxgzGQSh4cQ1rEhYjcTJfFRP0SDlbhLONg0eSoLzrDd79PosjbltufA==" + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.1.tgz", + "integrity": "sha512-4LBMSt09vR0uLnPVkOUBnmxgoaeN4ewRbx801wY/bXcltXfpR/G46OdWn96XpYmCWuYvO46aBZP4NgX8HpNAcw==" }, "colorette": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", - "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", "dev": true }, "colors": { @@ -5741,9 +43062,9 @@ } }, "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", "dev": true }, "comment-parser": { @@ -5803,13 +43124,6 @@ "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", "requires": { "safe-buffer": "~5.1.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } } }, "copy-descriptor": { @@ -5833,24 +43147,6 @@ "serialize-javascript": "^6.0.0" }, "dependencies": { - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, "schema-utils": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", @@ -5865,18 +43161,18 @@ } }, "core-js": { - "version": "3.18.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.18.3.tgz", - "integrity": "sha512-tReEhtMReZaPFVw7dajMx0vlsz3oOb8ajgPoHVYGxr8ErnZ6PcYEvvmjGmXlfpnxpkYSdOQttjB+MvVbCGfvLw==", + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.19.0.tgz", + "integrity": "sha512-L1TpFRWXZ76vH1yLM+z6KssLZrP8Z6GxxW4auoCj+XiViOzNPJCAuTIkn03BGdFe6Z5clX5t64wRIRypsZQrUg==", "dev": true }, "core-js-compat": { - "version": "3.18.3", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.18.3.tgz", - "integrity": "sha512-4zP6/y0a2RTHN5bRGT7PTq9lVt3WzvffTNjqnTKsXhkAYNDTkdCLOIfAdOLcQ/7TDdyRj3c+NeHe1NmF1eDScw==", + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.0.tgz", + "integrity": "sha512-R09rKZ56ccGBebjTLZHvzDxhz93YPT37gBm6qUhnwj3Kt7aCjjZWD1injyNbyeFHxNKfeZBSyds6O9n3MKq1sw==", "dev": true, "requires": { - "browserslist": "^4.17.3", + "browserslist": "^4.17.5", "semver": "7.0.0" }, "dependencies": { @@ -5889,21 +43185,22 @@ } }, "core-js-pure": { - "version": "3.18.3", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.18.3.tgz", - "integrity": "sha512-qfskyO/KjtbYn09bn1IPkuhHl5PlJ6IzJ9s9sraJ1EqcuGyLGKzhSM1cY0zgyL9hx42eulQLZ6WaeK5ycJCkqw==", + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.19.0.tgz", + "integrity": "sha512-UEQk8AxyCYvNAs6baNoPqDADv7BX0AmBLGxVsrAifPPx/C8EAzV4Q+2ZUJqVzfI2TQQEZITnwUkWcHpgc/IubQ==", "dev": true }, "cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "dev": true, "requires": { "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", + "import-fresh": "^3.2.1", "parse-json": "^5.0.0", "path-type": "^4.0.0", - "yaml": "^1.7.2" + "yaml": "^1.10.0" } }, "cross-env": { @@ -5967,24 +43264,6 @@ "lru-cache": "^4.0.1", "shebang-command": "^1.2.0", "which": "^1.2.9" - }, - "dependencies": { - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - } } }, "css-blank-pseudo": { @@ -6026,15 +43305,6 @@ "integrity": "sha512-/loXYOch1qU1biStIFsHH8SxTmOseh1IJqFvy8IujXOm1h+QjUdDhkzOrR5HG8K8mlxREj0yfi8ewCHx0eMxzA==", "dev": true }, - "css-declaration-sorter": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.1.3.tgz", - "integrity": "sha512-SvjQjNRZgh4ULK1LDJ2AduPKUKxIqmtU7ZAyi47BTV+M90Qvxr9AB6lKlLbDUfXqI9IQeYA8LbAsCZPpJEV3aA==", - "dev": true, - "requires": { - "timsort": "^0.3.0" - } - }, "css-has-pseudo": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz", @@ -6051,112 +43321,471 @@ "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", "dev": true }, - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "dev": true, + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "css-loader": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.5.0.tgz", + "integrity": "sha512-VmuSdQa3K+wJsl39i7X3qGBM5+ZHmtTnv65fqMGI+fzmHoYmszTVvTqC1XN8JwWDViCB1a8wgNim5SV4fb37xg==", + "dev": true, + "requires": { + "icss-utils": "^5.1.0", + "postcss": "^8.2.15", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.1.0", + "semver": "^7.3.5" + }, + "dependencies": { + "icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "requires": {} + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "requires": {} + }, + "postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.4" + } + }, + "postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "css-mediaquery": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/css-mediaquery/-/css-mediaquery-0.1.2.tgz", + "integrity": "sha1-aiw3NEkoYYYxxUvTPO3TAdoYvqA=" + }, + "css-minimizer-webpack-plugin": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.1.1.tgz", + "integrity": "sha512-KlB8l5uoNcf9F7i5kXnkxoqJGd2BXH4f0+Lj2vSWSmuvMLYO1kNsJ1KHSzeDW8e45/whgSOPcKVT/3JopkT8dg==", + "dev": true, + "requires": { + "cssnano": "^5.0.6", + "jest-worker": "^27.0.2", + "p-limit": "^3.0.2", + "postcss": "^8.3.5", + "schema-utils": "^3.1.0", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1" + }, + "dependencies": { + "css-declaration-sorter": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.1.3.tgz", + "integrity": "sha512-SvjQjNRZgh4ULK1LDJ2AduPKUKxIqmtU7ZAyi47BTV+M90Qvxr9AB6lKlLbDUfXqI9IQeYA8LbAsCZPpJEV3aA==", + "dev": true, + "requires": { + "timsort": "^0.3.0" + } + }, + "cssnano": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.0.8.tgz", + "integrity": "sha512-Lda7geZU0Yu+RZi2SGpjYuQz4HI4/1Y+BhdD0jL7NXAQ5larCzVn+PUGuZbDMYz904AXXCOgO5L1teSvgu7aFg==", + "dev": true, + "requires": { + "cssnano-preset-default": "^5.1.4", + "is-resolvable": "^1.1.0", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + } + }, + "cssnano-preset-default": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.1.4.tgz", + "integrity": "sha512-sPpQNDQBI3R/QsYxQvfB4mXeEcWuw0wGtKtmS5eg8wudyStYMgKOQT39G07EbW1LB56AOYrinRS9f0ig4Y3MhQ==", + "dev": true, + "requires": { + "css-declaration-sorter": "^6.0.3", + "cssnano-utils": "^2.0.1", + "postcss-calc": "^8.0.0", + "postcss-colormin": "^5.2.0", + "postcss-convert-values": "^5.0.1", + "postcss-discard-comments": "^5.0.1", + "postcss-discard-duplicates": "^5.0.1", + "postcss-discard-empty": "^5.0.1", + "postcss-discard-overridden": "^5.0.1", + "postcss-merge-longhand": "^5.0.2", + "postcss-merge-rules": "^5.0.2", + "postcss-minify-font-values": "^5.0.1", + "postcss-minify-gradients": "^5.0.2", + "postcss-minify-params": "^5.0.1", + "postcss-minify-selectors": "^5.1.0", + "postcss-normalize-charset": "^5.0.1", + "postcss-normalize-display-values": "^5.0.1", + "postcss-normalize-positions": "^5.0.1", + "postcss-normalize-repeat-style": "^5.0.1", + "postcss-normalize-string": "^5.0.1", + "postcss-normalize-timing-functions": "^5.0.1", + "postcss-normalize-unicode": "^5.0.1", + "postcss-normalize-url": "^5.0.2", + "postcss-normalize-whitespace": "^5.0.1", + "postcss-ordered-values": "^5.0.2", + "postcss-reduce-initial": "^5.0.1", + "postcss-reduce-transforms": "^5.0.1", + "postcss-svgo": "^5.0.2", + "postcss-unique-selectors": "^5.0.1" + } + }, + "cssnano-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-2.0.1.tgz", + "integrity": "sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ==", + "dev": true, + "requires": {} + }, + "postcss-calc": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.0.0.tgz", + "integrity": "sha512-5NglwDrcbiy8XXfPM11F3HeC6hoT9W7GUH/Zi5U/p7u3Irv4rHhdDcIZwG0llHXV4ftsBjpfWMXAnXNl4lnt8g==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + } + }, + "postcss-colormin": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.0.tgz", + "integrity": "sha512-+HC6GfWU3upe5/mqmxuqYZ9B2Wl4lcoUUNkoaX59nEWV4EtADCMiBqui111Bu8R8IvaZTmqmxrqOAqjbHIwXPw==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "colord": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-convert-values": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.1.tgz", + "integrity": "sha512-C3zR1Do2BkKkCgC0g3sF8TS0koF2G+mN8xxayZx3f10cIRmTaAnpgpRQZjNekTZxM2ciSPoh2IWJm0VZx8NoQg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-discard-comments": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz", + "integrity": "sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg==", + "dev": true, + "requires": {} + }, + "postcss-discard-duplicates": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz", + "integrity": "sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA==", + "dev": true, + "requires": {} + }, + "postcss-discard-empty": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz", + "integrity": "sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw==", + "dev": true, + "requires": {} + }, + "postcss-discard-overridden": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz", + "integrity": "sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q==", + "dev": true, + "requires": {} + }, + "postcss-merge-longhand": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.0.2.tgz", + "integrity": "sha512-BMlg9AXSI5G9TBT0Lo/H3PfUy63P84rVz3BjCFE9e9Y9RXQZD3+h3YO1kgTNsNJy7bBc1YQp8DmSnwLIW5VPcw==", + "dev": true, + "requires": { + "css-color-names": "^1.0.1", + "postcss-value-parser": "^4.1.0", + "stylehacks": "^5.0.1" + } + }, + "postcss-merge-rules": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.0.2.tgz", + "integrity": "sha512-5K+Md7S3GwBewfB4rjDeol6V/RZ8S+v4B66Zk2gChRqLTCC8yjnHQ601omj9TKftS19OPGqZ/XzoqpzNQQLwbg==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^2.0.1", + "postcss-selector-parser": "^6.0.5", + "vendors": "^1.0.3" + } + }, + "postcss-minify-font-values": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.0.1.tgz", + "integrity": "sha512-7JS4qIsnqaxk+FXY1E8dHBDmraYFWmuL6cgt0T1SWGRO5bzJf8sUoelwa4P88LEWJZweHevAiDKxHlofuvtIoA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-minify-gradients": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.2.tgz", + "integrity": "sha512-7Do9JP+wqSD6Prittitt2zDLrfzP9pqKs2EcLX7HJYxsxCOwrrcLt4x/ctQTsiOw+/8HYotAoqNkrzItL19SdQ==", + "dev": true, + "requires": { + "colord": "^2.6", + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-minify-params": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.0.1.tgz", + "integrity": "sha512-4RUC4k2A/Q9mGco1Z8ODc7h+A0z7L7X2ypO1B6V8057eVK6mZ6xwz6QN64nHuHLbqbclkX1wyzRnIrdZehTEHw==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.2", + "browserslist": "^4.16.0", + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0", + "uniqs": "^2.0.0" + } + }, + "postcss-minify-selectors": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.1.0.tgz", + "integrity": "sha512-NzGBXDa7aPsAcijXZeagnJBKBPMYLaJJzB8CQh6ncvyl2sIndLVWfbcDi0SBjRWk5VqEjXvf8tYwzoKf4Z07og==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.2", + "postcss-selector-parser": "^6.0.5" + } + }, + "postcss-normalize-charset": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz", + "integrity": "sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg==", + "dev": true, + "requires": {} + }, + "postcss-normalize-display-values": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.1.tgz", + "integrity": "sha512-uupdvWk88kLDXi5HEyI9IaAJTE3/Djbcrqq8YgjvAVuzgVuqIk3SuJWUisT2gaJbZm1H9g5k2w1xXilM3x8DjQ==", + "dev": true, + "requires": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-positions": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.0.1.tgz", + "integrity": "sha512-rvzWAJai5xej9yWqlCb1OWLd9JjW2Ex2BCPzUJrbaXmtKtgfL8dBMOOMTX6TnvQMtjk3ei1Lswcs78qKO1Skrg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-repeat-style": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.1.tgz", + "integrity": "sha512-syZ2itq0HTQjj4QtXZOeefomckiV5TaUO6ReIEabCh3wgDs4Mr01pkif0MeVwKyU/LHEkPJnpwFKRxqWA/7O3w==", + "dev": true, + "requires": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-string": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.0.1.tgz", + "integrity": "sha512-Ic8GaQ3jPMVl1OEn2U//2pm93AXUcF3wz+OriskdZ1AOuYV25OdgS7w9Xu2LO5cGyhHCgn8dMXh9bO7vi3i9pA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-timing-functions": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.1.tgz", + "integrity": "sha512-cPcBdVN5OsWCNEo5hiXfLUnXfTGtSFiBU9SK8k7ii8UD7OLuznzgNRYkLZow11BkQiiqMcgPyh4ZqXEEUrtQ1Q==", + "dev": true, + "requires": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-unicode": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.1.tgz", + "integrity": "sha512-kAtYD6V3pK0beqrU90gpCQB7g6AOfP/2KIPCVBKJM2EheVsBQmx/Iof+9zR9NFKLAx4Pr9mDhogB27pmn354nA==", + "dev": true, + "requires": { + "browserslist": "^4.16.0", + "postcss-value-parser": "^4.1.0" + } }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "postcss-normalize-url": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.2.tgz", + "integrity": "sha512-k4jLTPUxREQ5bpajFQZpx8bCF2UrlqOTzP9kEqcEnOfwsRshWs2+oAFIHfDQB8GO2PaUaSE0NlTAYtbluZTlHQ==", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "is-absolute-url": "^3.0.3", + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.1.0" } }, - "postcss-selector-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", - "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "postcss-normalize-whitespace": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.1.tgz", + "integrity": "sha512-iPklmI5SBnRvwceb/XH568yyzK0qRVuAG+a1HFUsFRf11lEJTiQQa03a4RSCQvLKdcpX7XsI1Gen9LuLoqwiqA==", "dev": true, "requires": { - "cssesc": "^2.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" + "postcss-value-parser": "^4.1.0" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "css-loader": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.4.0.tgz", - "integrity": "sha512-Dlt6qfsxI/w1vU0r8qDd4BtMPxWqJeY5qQU7SmmZfvbpe6Xl18McO4GhyaMLns24Y2VNPiZwJPQ8JSbg4qvQLw==", - "dev": true, - "requires": { - "icss-utils": "^5.1.0", - "postcss": "^8.2.15", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.1.0", - "semver": "^7.3.5" - }, - "dependencies": { - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "postcss-ordered-values": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.0.2.tgz", + "integrity": "sha512-8AFYDSOYWebJYLyJi3fyjl6CqMEG/UVworjiyK1r573I56kb3e879sCJLGvR3merj+fAdPpVplXKQZv+ey6CgQ==", "dev": true, "requires": { - "lru-cache": "^6.0.0" + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" } - } - } - }, - "css-mediaquery": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/css-mediaquery/-/css-mediaquery-0.1.2.tgz", - "integrity": "sha1-aiw3NEkoYYYxxUvTPO3TAdoYvqA=" - }, - "css-minimizer-webpack-plugin": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.1.1.tgz", - "integrity": "sha512-KlB8l5uoNcf9F7i5kXnkxoqJGd2BXH4f0+Lj2vSWSmuvMLYO1kNsJ1KHSzeDW8e45/whgSOPcKVT/3JopkT8dg==", - "dev": true, - "requires": { - "cssnano": "^5.0.6", - "jest-worker": "^27.0.2", - "p-limit": "^3.0.2", - "postcss": "^8.3.5", - "schema-utils": "^3.1.0", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true }, - "jest-worker": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.2.5.tgz", - "integrity": "sha512-HTjEPZtcNKZ4LnhSp02NEH4vE+5OpJ0EsOWYvGQpHgUMLngydESAAMH5Wd/asPf29+XUDQZszxpLg1BkIIA2aw==", + "postcss-reduce-initial": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.0.1.tgz", + "integrity": "sha512-zlCZPKLLTMAqA3ZWH57HlbCjkD55LX9dsRyxlls+wfuRfqCi5mSlZVan0heX5cHr154Dq9AfbH70LyhrSAezJw==", "dev": true, "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" + "browserslist": "^4.16.0", + "caniuse-api": "^3.0.0" } }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "postcss-reduce-transforms": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.1.tgz", + "integrity": "sha512-a//FjoPeFkRuAguPscTVmRQUODP+f3ke2HqFNgGPwdYnpeC29RZdCBvGRGTsKpMURb/I3p6jdKoBQ2zI+9Q7kA==", + "dev": true, + "requires": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-svgo": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.0.2.tgz", + "integrity": "sha512-YzQuFLZu3U3aheizD+B1joQ94vzPfE6BNUcSYuceNxlVnKKsOtdo6hL9/zyC168Q8EwfLSgaDSalsUGa9f2C0A==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.1.0", + "svgo": "^2.3.0" + } + }, + "postcss-unique-selectors": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.0.1.tgz", + "integrity": "sha512-gwi1NhHV4FMmPn+qwBNuot1sG1t2OmacLQ/AX29lzyggnjd+MnVD5uqQmpXO3J17KGL2WAxQruj1qTd3H0gG/w==", "dev": true, "requires": { - "yocto-queue": "^0.1.0" + "alphanum-sort": "^1.0.2", + "postcss-selector-parser": "^6.0.5", + "uniqs": "^2.0.0" } }, "schema-utils": { @@ -6176,13 +43805,14 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "stylehacks": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.0.1.tgz", + "integrity": "sha512-Es0rVnHIqbWzveU1b24kbw92HsebBepxfcqe5iix7t9j0PQqhs0IxXVXv0pY2Bxa08CgMkzD6OWql7kbGOuEdA==", "dev": true, "requires": { - "has-flag": "^4.0.0" + "browserslist": "^4.16.0", + "postcss-selector-parser": "^6.0.4" } } } @@ -6221,15 +43851,16 @@ } }, "css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", + "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", "dev": true, "requires": { "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" + "css-what": "^5.0.0", + "domhandler": "^4.2.0", + "domutils": "^2.6.0", + "nth-check": "^2.0.0" } }, "css-select-base-adapter": { @@ -6239,12 +43870,12 @@ "dev": true }, "css-tree": { - "version": "1.0.0-alpha.37", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", - "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", "dev": true, "requires": { - "mdn-data": "2.0.4", + "mdn-data": "2.0.14", "source-map": "^0.6.1" }, "dependencies": { @@ -6257,9 +43888,9 @@ } }, "css-what": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", + "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", "dev": true }, "cssdb": { @@ -6274,61 +43905,6 @@ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true }, - "cssnano": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.0.8.tgz", - "integrity": "sha512-Lda7geZU0Yu+RZi2SGpjYuQz4HI4/1Y+BhdD0jL7NXAQ5larCzVn+PUGuZbDMYz904AXXCOgO5L1teSvgu7aFg==", - "dev": true, - "requires": { - "cssnano-preset-default": "^5.1.4", - "is-resolvable": "^1.1.0", - "lilconfig": "^2.0.3", - "yaml": "^1.10.2" - } - }, - "cssnano-preset-default": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.1.4.tgz", - "integrity": "sha512-sPpQNDQBI3R/QsYxQvfB4mXeEcWuw0wGtKtmS5eg8wudyStYMgKOQT39G07EbW1LB56AOYrinRS9f0ig4Y3MhQ==", - "dev": true, - "requires": { - "css-declaration-sorter": "^6.0.3", - "cssnano-utils": "^2.0.1", - "postcss-calc": "^8.0.0", - "postcss-colormin": "^5.2.0", - "postcss-convert-values": "^5.0.1", - "postcss-discard-comments": "^5.0.1", - "postcss-discard-duplicates": "^5.0.1", - "postcss-discard-empty": "^5.0.1", - "postcss-discard-overridden": "^5.0.1", - "postcss-merge-longhand": "^5.0.2", - "postcss-merge-rules": "^5.0.2", - "postcss-minify-font-values": "^5.0.1", - "postcss-minify-gradients": "^5.0.2", - "postcss-minify-params": "^5.0.1", - "postcss-minify-selectors": "^5.1.0", - "postcss-normalize-charset": "^5.0.1", - "postcss-normalize-display-values": "^5.0.1", - "postcss-normalize-positions": "^5.0.1", - "postcss-normalize-repeat-style": "^5.0.1", - "postcss-normalize-string": "^5.0.1", - "postcss-normalize-timing-functions": "^5.0.1", - "postcss-normalize-unicode": "^5.0.1", - "postcss-normalize-url": "^5.0.2", - "postcss-normalize-whitespace": "^5.0.1", - "postcss-ordered-values": "^5.0.2", - "postcss-reduce-initial": "^5.0.1", - "postcss-reduce-transforms": "^5.0.1", - "postcss-svgo": "^5.0.2", - "postcss-unique-selectors": "^5.0.1" - } - }, - "cssnano-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-2.0.1.tgz", - "integrity": "sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ==", - "dev": true - }, "csso": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", @@ -6336,30 +43912,6 @@ "dev": true, "requires": { "css-tree": "^1.1.2" - }, - "dependencies": { - "css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dev": true, - "requires": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - } - }, - "mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } } }, "cssom": { @@ -6415,34 +43967,6 @@ "abab": "^2.0.3", "whatwg-mimetype": "^2.3.0", "whatwg-url": "^8.0.0" - }, - "dependencies": { - "tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, - "requires": { - "punycode": "^2.1.1" - } - }, - "webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true - }, - "whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "dev": true, - "requires": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - } - } } }, "dateformat": { @@ -6455,7 +43979,6 @@ "version": "4.3.2", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, "requires": { "ms": "2.1.2" } @@ -6514,9 +44037,10 @@ "dev": true }, "deepmerge": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", - "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==" + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true }, "define-properties": { "version": "1.1.3", @@ -6534,37 +44058,6 @@ "requires": { "is-descriptor": "^1.0.2", "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } } }, "del": { @@ -6611,12 +44104,6 @@ "dev": true } } - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true } } }, @@ -6687,9 +44174,9 @@ "dev": true }, "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "requires": { "esutils": "^2.0.2" @@ -6709,27 +44196,20 @@ "integrity": "sha1-6PNnMt0ImwIBqI14Fdw/iObWbH4=" }, "dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", "dev": true, "requires": { "domelementtype": "^2.0.1", - "entities": "^2.0.0" - }, - "dependencies": { - "domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", - "dev": true - } + "domhandler": "^4.2.0", + "entities": "^2.0.0" } }, "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", "dev": true }, "domexception": { @@ -6756,24 +44236,17 @@ "dev": true, "requires": { "domelementtype": "^2.2.0" - }, - "dependencies": { - "domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", - "dev": true - } } }, "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", "dev": true, "requires": { - "dom-serializer": "0", - "domelementtype": "1" + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" } }, "downshift": { @@ -6786,13 +44259,6 @@ "prop-types": "^15.7.2", "react-is": "^17.0.2", "tslib": "^2.3.0" - }, - "dependencies": { - "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" - } } }, "duplexer": { @@ -6802,21 +44268,22 @@ "dev": true }, "electron-to-chromium": { - "version": "1.3.867", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.867.tgz", - "integrity": "sha512-WbTXOv7hsLhjJyl7jBfDkioaY++iVVZomZ4dU6TMe/SzucV6mUAs2VZn/AehBwuZMiNEQDaPuTGn22YK5o+aDw==", - "dev": true + "version": "1.3.884", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.884.tgz", + "integrity": "sha512-kOaCAa+biA98PwH5BpCkeUeTL6mCeg8p3Q3OhqzPyqhu/5QUnWAN2wr/3IK8xMQxIV76kfoQpP+Bn/wij/jXrg==" }, "emittery": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz", - "integrity": "sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==", - "dev": true + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", + "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", + "dev": true, + "peer": true }, "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true }, "emojis-list": { "version": "3.0.0", @@ -6921,6 +44388,14 @@ "@types/cheerio": "^0.22.22", "lodash": "^4.17.21", "react-is": "^16.12.0" + }, + "dependencies": { + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + } } }, "equivalent-key-map": { @@ -6997,8 +44472,7 @@ "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" }, "escape-string-regexp": { "version": "4.0.0", @@ -7018,12 +44492,6 @@ "source-map": "~0.6.1" }, "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", @@ -7129,12 +44597,6 @@ "@babel/highlight": "^7.10.4" } }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -7180,36 +44642,19 @@ "which": "^2.0.1" } }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "requires": { - "eslint-visitor-keys": "^1.1.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } + "is-glob": "^4.0.1" } }, "globals": { - "version": "13.11.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz", - "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==", + "version": "13.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", + "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -7227,6 +44672,15 @@ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -7257,15 +44711,6 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -7289,6 +44734,12 @@ "requires": { "isexe": "^2.0.0" } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true } } }, @@ -7296,7 +44747,8 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-7.2.0.tgz", "integrity": "sha512-rV4Qu0C3nfJKPOAhFujFxB7RMP+URFyQqqOZW9DMRD7ZDTFyjaIlETU3xzHELt++4ugC0+Jm084HQYkkJe+Ivg==", - "dev": true + "dev": true, + "requires": {} }, "eslint-import-resolver-node": { "version": "0.3.6", @@ -7376,10 +44828,10 @@ "p-limit": "^1.1.0" } }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true } } @@ -7434,6 +44886,15 @@ "ms": "2.0.0" } }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, "find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", @@ -7477,11 +44938,21 @@ "p-limit": "^1.1.0" } }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true + }, + "read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + } } } }, @@ -7511,6 +44982,15 @@ "spdx-expression-parse": "^3.0.1" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -7519,6 +44999,12 @@ "requires": { "lru-cache": "^6.0.0" } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true } } }, @@ -7539,14 +45025,6 @@ "has": "^1.0.3", "jsx-ast-utils": "^3.1.0", "language-tags": "^1.0.5" - }, - "dependencies": { - "emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - } } }, "eslint-plugin-markdown": { @@ -7589,11 +45067,14 @@ "string.prototype.matchall": "^4.0.5" }, "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } }, "resolve": { "version": "2.0.0-next.3", @@ -7611,7 +45092,8 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.2.0.tgz", "integrity": "sha512-623WEiZJqxR7VdxFCKLI6d6LLpwJkGPYKODnkH3D7WpOG5KM8yWueBd8TLsNAetEJNF5iJmolaAKO3F8yzyVBQ==", - "dev": true + "dev": true, + "requires": {} }, "eslint-scope": { "version": "5.1.1", @@ -7621,15 +45103,31 @@ "requires": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" + }, + "dependencies": { + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + } } }, "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "dev": true, "requires": { - "eslint-visitor-keys": "^2.0.0" + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } } }, "eslint-visitor-keys": { @@ -7676,14 +45174,6 @@ "dev": true, "requires": { "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - } } }, "esrecurse": { @@ -7693,20 +45183,12 @@ "dev": true, "requires": { "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - } } }, "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true }, "esutils": { @@ -7734,38 +45216,71 @@ "dev": true }, "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "requires": { - "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" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" }, "dependencies": { "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" } }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } } } }, @@ -7817,13 +45332,50 @@ "is-descriptor": "^0.1.0" } }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } } }, "ms": { @@ -7835,12 +45387,12 @@ } }, "expand-tilde": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", - "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", "dev": true, "requires": { - "os-homedir": "^1.0.1" + "homedir-polyfill": "^1.0.1" } }, "expect": { @@ -7866,6 +45418,16 @@ "color-convert": "^2.0.1" } }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -7880,6 +45442,38 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "jest-message-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", + "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2", + "slash": "^3.0.0", + "stack-utils": "^2.0.2" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, @@ -7980,35 +45574,6 @@ "requires": { "is-extendable": "^0.1.0" } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } } } }, @@ -8064,6 +45629,17 @@ "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.4" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } } }, "fast-json-stable-stringify": { @@ -8194,40 +45770,6 @@ "pkg-dir": "^4.1.0" }, "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, "pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", @@ -8309,12 +45851,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", - "dev": true - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -8338,11 +45874,13 @@ "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" }, "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, "requires": { - "locate-path": "^3.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" } }, "findup-sync": { @@ -8382,15 +45920,6 @@ "parse-filepath": "^1.0.1" }, "dependencies": { - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -8587,8 +46116,7 @@ "gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" }, "get-caller-file": { "version": "2.0.5", @@ -8624,13 +46152,10 @@ "dev": true }, "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true }, "get-symbol-description": { "version": "1.0.0", @@ -8663,9 +46188,9 @@ } }, "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -8677,12 +46202,12 @@ } }, "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "requires": { - "is-glob": "^4.0.1" + "is-glob": "^4.0.3" } }, "glob-to-regexp": { @@ -8741,8 +46266,7 @@ "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" }, "globby": { "version": "11.0.4", @@ -8822,45 +46346,6 @@ "rimraf": "~3.0.2" }, "dependencies": { - "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "grunt-cli": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.4.3.tgz", - "integrity": "sha512-9Dtx/AhVeB4LYzsViCjUQkd0Kw0McN2gYpdmGYKtE2a5Yt7v1Q+HYZVWhqXc/kGnxlMtqKDxSwotiGeFmkrCoQ==", - "dev": true, - "requires": { - "grunt-known-options": "~2.0.0", - "interpret": "~1.1.0", - "liftup": "~3.0.1", - "nopt": "~4.0.1", - "v8flags": "~3.2.0" - }, - "dependencies": { - "nopt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", - "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", - "dev": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - } - } - }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -8870,18 +46355,6 @@ "safer-buffer": ">= 2.1.2 < 3" } }, - "interpret": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", - "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", - "dev": true - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, "rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -8893,6 +46366,31 @@ } } }, + "grunt-cli": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.4.3.tgz", + "integrity": "sha512-9Dtx/AhVeB4LYzsViCjUQkd0Kw0McN2gYpdmGYKtE2a5Yt7v1Q+HYZVWhqXc/kGnxlMtqKDxSwotiGeFmkrCoQ==", + "dev": true, + "requires": { + "grunt-known-options": "~2.0.0", + "interpret": "~1.1.0", + "liftup": "~3.0.1", + "nopt": "~4.0.1", + "v8flags": "~3.2.0" + }, + "dependencies": { + "nopt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", + "dev": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + } + } + }, "grunt-contrib-clean": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/grunt-contrib-clean/-/grunt-contrib-clean-2.0.0.tgz", @@ -9056,9 +46554,9 @@ }, "dependencies": { "async": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.1.tgz", - "integrity": "sha512-XdD5lRO/87udXCMC9meWdYiR+Nq6ZjUfXidViUZGu2F1MO4T3XwZ1et0hb2++BgLfhyJwy44BGB/yx80ABx8hg==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.2.tgz", + "integrity": "sha512-H0E+qZaDEfx/FY4t7iLRv1W2fFI6+pyCeTw1uN20AQPiwqwM6ojPxHxdLv4z8hi2DtnW9BOckSspLucW7pIE5g==", "dev": true }, "which": { @@ -9081,6 +46579,23 @@ "chalk": "^2.4.1", "npm-run-path": "^2.0.0", "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } } }, "grunt-wp-deploy": { @@ -9223,6 +46738,13 @@ "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", "requires": { "react-is": "^16.7.0" + }, + "dependencies": { + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + } } }, "homedir-polyfill": { @@ -9292,36 +46814,6 @@ "domhandler": "^4.0.0", "domutils": "^2.5.2", "entities": "^2.0.0" - }, - "dependencies": { - "dom-serializer": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", - "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - } - }, - "domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", - "dev": true - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - } } }, "http-parser-js": { @@ -9352,9 +46844,9 @@ } }, "human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true }, "iconv-lite": { @@ -9365,12 +46857,6 @@ "safer-buffer": ">= 2.1.2 < 3.0.0" } }, - "icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true - }, "ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -9390,6 +46876,13 @@ "requires": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + } } }, "import-lazy": { @@ -9397,51 +46890,17 @@ "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", "dev": true - }, - "import-local": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.3.tgz", - "integrity": "sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA==", - "dev": true, - "requires": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, + }, + "import-local": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.3.tgz", + "integrity": "sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "dependencies": { "pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", @@ -9513,37 +46972,19 @@ "through": "^2.3.6" }, "dependencies": { - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true - }, "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } + "ansi-regex": "^4.1.0" } } } @@ -9559,9 +47000,9 @@ } }, "interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", "dev": true }, "irregular-plurals": { @@ -9587,22 +47028,19 @@ "dev": true }, "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "^6.0.0" }, "dependencies": { "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true } } }, @@ -9671,33 +47109,38 @@ "dev": true, "requires": { "ci-info": "^2.0.0" + }, + "dependencies": { + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + } } }, "is-core-module": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.7.0.tgz", - "integrity": "sha512-ByY+tjCciCr+9nLryBYcSD50EOGWt95c7tIsKTG1J2ixKKXPvF7Ej3AVd+UfDydAJom3biBGDBALaO79ktwgEQ==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", + "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", "requires": { "has": "^1.0.3" } }, "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "^6.0.0" }, "dependencies": { "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true } } }, @@ -9716,20 +47159,20 @@ "dev": true }, "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" }, "dependencies": { "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true } } @@ -9754,9 +47197,10 @@ "dev": true }, "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true }, "is-generator-fn": { "version": "2.1.0", @@ -9861,9 +47305,9 @@ } }, "is-regexp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-2.1.0.tgz", - "integrity": "sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", "dev": true }, "is-relative": { @@ -9887,9 +47331,9 @@ "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==" }, "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true }, "is-string": { @@ -9989,20 +47433,21 @@ "dev": true }, "istanbul-lib-coverage": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.2.tgz", - "integrity": "sha512-o5+eTUYzCJ11/+JhW5/FUCdfsdoYVdQ/8I/OveE2XsjehYn5DdeSnNQAbjYaO8gQ6hvGTN6GM6ddQqpTVG5j8g==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", "dev": true }, "istanbul-lib-instrument": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz", + "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==", "dev": true, "requires": { - "@babel/core": "^7.7.5", + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-coverage": "^3.2.0", "semver": "^6.3.0" } }, @@ -10029,56 +47474,234 @@ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "has-flag": "^4.0.0" + "has-flag": "^4.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "istanbul-reports": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.5.tgz", + "integrity": "sha512-5+19PlhnGabNWB7kOFnuxT8H3T/iIyQzIbQMxXsURmmvKg86P2sbkrGOT77VnHw0Qr0gc2XzRaRfMZYYbSQCJQ==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jest": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.3.1.tgz", + "integrity": "sha512-U2AX0AgQGd5EzMsiZpYt8HyZ+nSVIh5ujQ9CPp9EQZJMjXIiSZpJNweZl0swatKRoqHWgGKM3zaSwm4Zaz87ng==", + "dev": true, + "peer": true, + "requires": { + "@jest/core": "^27.3.1", + "import-local": "^3.0.2", + "jest-cli": "^27.3.1" + } + }, + "jest-changed-files": { + "version": "27.3.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.3.0.tgz", + "integrity": "sha512-9DJs9garMHv4RhylUMZgbdCJ3+jHSkpL9aaVKp13xtXAD80qLTLrqcDZL1PHA9dYA0bCI86Nv2BhkLpLhrBcPg==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.2.5", + "execa": "^5.0.0", + "throat": "^6.0.1" + }, + "dependencies": { + "@jest/types": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", + "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", + "dev": true, + "peer": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "peer": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "peer": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "peer": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-circus": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-26.6.3.tgz", + "integrity": "sha512-ACrpWZGcQMpbv13XbzRzpytEJlilP/Su0JtNCi5r/xLpOUhnaIJr8leYYpLEMgPFURZISEHrnnpmB54Q/UziPw==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/babel__traverse": "^7.0.4", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^26.6.2", + "is-generator-fn": "^2.0.0", + "jest-each": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "pretty-format": "^26.6.2", + "stack-utils": "^2.0.2", + "throat": "^5.0.0" + }, + "dependencies": { + "@jest/console": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz", + "integrity": "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^26.6.2", + "jest-util": "^26.6.2", + "slash": "^3.0.0" + } + }, + "@jest/globals": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz", + "integrity": "sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==", + "dev": true, + "requires": { + "@jest/environment": "^26.6.2", + "@jest/types": "^26.6.2", + "expect": "^26.6.2" + } + }, + "@jest/source-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz", + "integrity": "sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==", + "dev": true, + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.4", + "source-map": "^0.6.0" + } + }, + "@jest/test-result": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz", + "integrity": "sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==", + "dev": true, + "requires": { + "@jest/console": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } + }, + "@jest/test-sequencer": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz", + "integrity": "sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==", + "dev": true, + "requires": { + "@jest/test-result": "^26.6.2", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3" } - } - } - }, - "istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "istanbul-reports": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.5.tgz", - "integrity": "sha512-5+19PlhnGabNWB7kOFnuxT8H3T/iIyQzIbQMxXsURmmvKg86P2sbkrGOT77VnHw0Qr0gc2XzRaRfMZYYbSQCJQ==", - "dev": true, - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - } - }, - "jest": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.3.tgz", - "integrity": "sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==", - "dev": true, - "requires": { - "@jest/core": "^26.6.3", - "import-local": "^3.0.2", - "jest-cli": "^26.6.3" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true }, "ansi-styles": { "version": "4.3.0", @@ -10099,6 +47722,12 @@ "supports-color": "^7.1.0" } }, + "cjs-module-lexer": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz", + "integrity": "sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==", + "dev": true + }, "cliui": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", @@ -10125,279 +47754,437 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "emittery": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz", + "integrity": "sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==", + "dev": true + }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "jest-cli": { + "jest-config": { "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz", - "integrity": "sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz", + "integrity": "sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==", "dev": true, "requires": { - "@jest/core": "^26.6.3", - "@jest/test-result": "^26.6.2", + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^26.6.3", "@jest/types": "^26.6.2", + "babel-jest": "^26.6.3", "chalk": "^4.0.0", - "exit": "^0.1.2", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", "graceful-fs": "^4.2.4", - "import-local": "^3.0.2", - "is-ci": "^2.0.0", - "jest-config": "^26.6.3", + "jest-environment-jsdom": "^26.6.2", + "jest-environment-node": "^26.6.2", + "jest-get-type": "^26.3.0", + "jest-jasmine2": "^26.6.3", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", "jest-util": "^26.6.2", "jest-validate": "^26.6.2", - "prompts": "^2.0.1", - "yargs": "^15.4.1" + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2" } }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "jest-docblock": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz", + "integrity": "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==", "dev": true, "requires": { - "p-locate": "^4.1.0" + "detect-newline": "^3.0.0" } }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "jest-environment-jsdom": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz", + "integrity": "sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==", "dev": true, "requires": { - "p-limit": "^2.2.0" + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2", + "jsdom": "^16.4.0" } }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true + "jest-jasmine2": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz", + "integrity": "sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^26.6.2", + "@jest/source-map": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^26.6.2", + "is-generator-fn": "^2.0.0", + "jest-each": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "pretty-format": "^26.6.2", + "throat": "^5.0.0" + } }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "jest-leak-detector": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz", + "integrity": "sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==", "dev": true, "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" } }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "jest-message-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", + "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", "dev": true, "requires": { - "ansi-regex": "^5.0.1" + "@babel/code-frame": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2", + "slash": "^3.0.0", + "stack-utils": "^2.0.2" } }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "jest-resolve": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", + "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", "dev": true, "requires": { - "has-flag": "^4.0.0" + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" } }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "jest-runner": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz", + "integrity": "sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==", "dev": true, "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "@jest/console": "^26.6.2", + "@jest/environment": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.7.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-config": "^26.6.3", + "jest-docblock": "^26.0.0", + "jest-haste-map": "^26.6.2", + "jest-leak-detector": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", + "jest-runtime": "^26.6.3", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "source-map-support": "^0.5.6", + "throat": "^5.0.0" } }, - "yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "jest-runtime": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz", + "integrity": "sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==", "dev": true, "requires": { - "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" + "@jest/console": "^26.6.2", + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/globals": "^26.6.2", + "@jest/source-map": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0", + "cjs-module-lexer": "^0.6.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.4", + "jest-config": "^26.6.3", + "jest-haste-map": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-mock": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "slash": "^3.0.0", + "strip-bom": "^4.0.0", + "yargs": "^15.4.1" } }, - "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "jest-snapshot": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz", + "integrity": "sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==", "dev": true, "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "@babel/types": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.0.0", + "chalk": "^4.0.0", + "expect": "^26.6.2", + "graceful-fs": "^4.2.4", + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "jest-haste-map": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", + "natural-compare": "^1.4.0", + "pretty-format": "^26.6.2", + "semver": "^7.3.2" } - } - } - }, - "jest-changed-files": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.6.2.tgz", - "integrity": "sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==", - "dev": true, - "requires": { - "@jest/types": "^26.6.2", - "execa": "^4.0.0", - "throat": "^5.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + }, + "jest-validate": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", + "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", "dev": true, "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "@jest/types": "^26.6.2", + "camelcase": "^6.0.0", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "leven": "^3.1.0", + "pretty-format": "^26.6.2" } }, - "execa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", "dev": true, "requires": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", + "@types/node": "*", "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" + "supports-color": "^7.0.0" } }, - "get-stream": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "read-pkg": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "requires": { - "pump": "^3.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" } }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "path-key": "^3.0.0" + "has-flag": "^4.0.0" } }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", "dev": true }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, "requires": { - "shebang-regex": "^3.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" } }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", "dev": true }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", "dev": true, "requires": { - "isexe": "^2.0.0" + "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" } } } }, - "jest-circus": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-26.6.3.tgz", - "integrity": "sha512-ACrpWZGcQMpbv13XbzRzpytEJlilP/Su0JtNCi5r/xLpOUhnaIJr8leYYpLEMgPFURZISEHrnnpmB54Q/UziPw==", + "jest-cli": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.3.1.tgz", + "integrity": "sha512-WHnCqpfK+6EvT62me6WVs8NhtbjAS4/6vZJnk7/2+oOr50cwAzG4Wxt6RXX0hu6m1169ZGMlhYYUNeKBXCph/Q==", "dev": true, + "peer": true, "requires": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/babel__traverse": "^7.0.4", - "@types/node": "*", + "@jest/core": "^27.3.1", + "@jest/test-result": "^27.3.1", + "@jest/types": "^27.2.5", "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "expect": "^26.6.2", - "is-generator-fn": "^2.0.0", - "jest-each": "^26.6.2", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-runner": "^26.6.3", - "jest-runtime": "^26.6.3", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "pretty-format": "^26.6.2", - "stack-utils": "^2.0.2", - "throat": "^5.0.0" + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "import-local": "^3.0.2", + "jest-config": "^27.3.1", + "jest-util": "^27.3.1", + "jest-validate": "^27.3.1", + "prompts": "^2.0.1", + "yargs": "^16.2.0" }, "dependencies": { + "@jest/types": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", + "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", + "dev": true, + "peer": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "peer": true, + "requires": { + "@types/yargs-parser": "*" + } + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -10407,6 +48194,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -10417,6 +48205,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -10425,19 +48214,37 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "dev": true, + "peer": true + }, + "jest-util": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", + "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.4", + "picomatch": "^2.2.3" + } }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -10445,45 +48252,178 @@ } }, "jest-config": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz", - "integrity": "sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.3.1.tgz", + "integrity": "sha512-KY8xOIbIACZ/vdYCKSopL44I0xboxC751IX+DXL2+Wx6DKNycyEfV3rryC3BPm5Uq/BBqDoMrKuqLEUNJmMKKg==", "dev": true, + "peer": true, "requires": { "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^26.6.3", - "@jest/types": "^26.6.2", - "babel-jest": "^26.6.3", + "@jest/test-sequencer": "^27.3.1", + "@jest/types": "^27.2.5", + "babel-jest": "^27.3.1", "chalk": "^4.0.0", + "ci-info": "^3.2.0", "deepmerge": "^4.2.2", "glob": "^7.1.1", "graceful-fs": "^4.2.4", - "jest-environment-jsdom": "^26.6.2", - "jest-environment-node": "^26.6.2", - "jest-get-type": "^26.3.0", - "jest-jasmine2": "^26.6.3", - "jest-regex-util": "^26.0.0", - "jest-resolve": "^26.6.2", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "micromatch": "^4.0.2", - "pretty-format": "^26.6.2" + "jest-circus": "^27.3.1", + "jest-environment-jsdom": "^27.3.1", + "jest-environment-node": "^27.3.1", + "jest-get-type": "^27.3.1", + "jest-jasmine2": "^27.3.1", + "jest-regex-util": "^27.0.6", + "jest-resolve": "^27.3.1", + "jest-runner": "^27.3.1", + "jest-util": "^27.3.1", + "jest-validate": "^27.3.1", + "micromatch": "^4.0.4", + "pretty-format": "^27.3.1" }, "dependencies": { + "@jest/environment": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.3.1.tgz", + "integrity": "sha512-BCKCj4mOVLme6Tanoyc9k0ultp3pnmuyHw73UHRPeeZxirsU/7E3HC4le/VDb/SMzE1JcPnto+XBKFOcoiJzVw==", + "dev": true, + "peer": true, + "requires": { + "@jest/fake-timers": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/node": "*", + "jest-mock": "^27.3.0" + } + }, + "@jest/fake-timers": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.3.1.tgz", + "integrity": "sha512-M3ZFgwwlqJtWZ+QkBG5NmC23A9w+A6ZxNsO5nJxJsKYt4yguBd3i8TpjQz5NfCX91nEve1KqD9RA2Q+Q1uWqoA==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.2.5", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.3.1", + "jest-mock": "^27.3.0", + "jest-util": "^27.3.1" + } + }, + "@jest/transform": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.3.1.tgz", + "integrity": "sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==", + "dev": true, + "peer": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.2.5", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.3.1", + "jest-regex-util": "^27.0.6", + "jest-util": "^27.3.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + } + }, + "@jest/types": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", + "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", + "dev": true, + "peer": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@sinonjs/fake-timers": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz", + "integrity": "sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==", + "dev": true, + "peer": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "peer": true, + "requires": { + "@types/yargs-parser": "*" + } + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "requires": { "color-convert": "^2.0.1" } }, + "babel-jest": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.3.1.tgz", + "integrity": "sha512-SjIF8hh/ir0peae2D6S6ZKRhUy7q/DnpH7k/V6fT4Bgs/LXXUztOpX4G2tCgq8mLo5HA9mN6NmlFMeYtKmIsTQ==", + "dev": true, + "peer": true, + "requires": { + "@jest/transform": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.0.0", + "babel-preset-jest": "^27.2.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "slash": "^3.0.0" + } + }, + "babel-plugin-jest-hoist": { + "version": "27.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.2.0.tgz", + "integrity": "sha512-TOux9khNKdi64mW+0OIhcmbAn75tTlzKhxmiNXevQaPbrBYK7YKjP1jl6NHTJ6XR5UgUrJbCnWlKVnJn29dfjw==", + "dev": true, + "peer": true, + "requires": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-preset-jest": { + "version": "27.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.2.0.tgz", + "integrity": "sha512-z7MgQ3peBwN5L5aCqBKnF6iqdlvZvFUQynEhu0J+X9nHLU72jO3iY331lcYrg+AssJ8q7xsv5/3AICzVmJ/wvg==", + "dev": true, + "peer": true, + "requires": { + "babel-plugin-jest-hoist": "^27.2.0", + "babel-preset-current-node-syntax": "^1.0.0" + } + }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -10494,6 +48434,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -10502,25 +48443,238 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, - "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true + "diff-sequences": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", + "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==", + "dev": true, + "peer": true + }, + "expect": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.3.1.tgz", + "integrity": "sha512-MrNXV2sL9iDRebWPGOGFdPQRl2eDQNu/uhxIMShjjx74T6kC6jFIkmQ6OqXDtevjGUkyB2IT56RzDBqXf/QPCg==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.2.5", + "ansi-styles": "^5.0.0", + "jest-get-type": "^27.3.1", + "jest-matcher-utils": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-regex-util": "^27.0.6" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "peer": true + } + } }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "dev": true, + "peer": true + }, + "jest-circus": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.3.1.tgz", + "integrity": "sha512-v1dsM9II6gvXokgqq6Yh2jHCpfg7ZqV4jWY66u7npz24JnhP3NHxI0sKT7+ZMQ7IrOWHYAaeEllOySbDbWsiXw==", + "dev": true, + "peer": true, + "requires": { + "@jest/environment": "^27.3.1", + "@jest/test-result": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^27.3.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.3.1", + "jest-matcher-utils": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-runtime": "^27.3.1", + "jest-snapshot": "^27.3.1", + "jest-util": "^27.3.1", + "pretty-format": "^27.3.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3", + "throat": "^6.0.1" + } + }, + "jest-diff": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.3.1.tgz", + "integrity": "sha512-PCeuAH4AWUo2O5+ksW4pL9v5xJAcIKPUPfIhZBcG1RKv/0+dvaWTQK1Nrau8d67dp65fOqbeMdoil+6PedyEPQ==", + "dev": true, + "peer": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^27.0.6", + "jest-get-type": "^27.3.1", + "pretty-format": "^27.3.1" + } + }, + "jest-each": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.3.1.tgz", + "integrity": "sha512-E4SwfzKJWYcvOYCjOxhZcxwL+AY0uFMvdCOwvzgutJiaiodFjkxQQDxHm8FQBeTqDnSmKsQWn7ldMRzTn2zJaQ==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.2.5", + "chalk": "^4.0.0", + "jest-get-type": "^27.3.1", + "jest-util": "^27.3.1", + "pretty-format": "^27.3.1" + } + }, + "jest-environment-node": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.3.1.tgz", + "integrity": "sha512-T89F/FgkE8waqrTSA7/ydMkcc52uYPgZZ6q8OaZgyiZkJb5QNNCF6oPZjH9IfPFfcc9uBWh1574N0kY0pSvTXw==", + "dev": true, + "peer": true, + "requires": { + "@jest/environment": "^27.3.1", + "@jest/fake-timers": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/node": "*", + "jest-mock": "^27.3.0", + "jest-util": "^27.3.1" + } + }, + "jest-get-type": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.3.1.tgz", + "integrity": "sha512-+Ilqi8hgHSAdhlQ3s12CAVNd8H96ZkQBfYoXmArzZnOfAtVAJEiPDBirjByEblvG/4LPJmkL+nBqPO3A1YJAEg==", + "dev": true, + "peer": true + }, + "jest-haste-map": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", + "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.2.5", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^27.0.6", + "jest-serializer": "^27.0.6", + "jest-util": "^27.3.1", + "jest-worker": "^27.3.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + } + }, + "jest-matcher-utils": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.3.1.tgz", + "integrity": "sha512-hX8N7zXS4k+8bC1Aj0OWpGb7D3gIXxYvPNK1inP5xvE4ztbz3rc4AkI6jGVaerepBnfWB17FL5lWFJT3s7qo8w==", + "dev": true, + "peer": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^27.3.1", + "jest-get-type": "^27.3.1", + "pretty-format": "^27.3.1" + } + }, + "jest-mock": { + "version": "27.3.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.3.0.tgz", + "integrity": "sha512-ziZiLk0elZOQjD08bLkegBzv5hCABu/c8Ytx45nJKkysQwGaonvmTxwjLqEA4qGdasq9o2I8/HtdGMNnVsMTGw==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.2.5", + "@types/node": "*" + } + }, + "jest-regex-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", + "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", + "dev": true, + "peer": true + }, + "jest-serializer": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", + "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", + "dev": true, + "peer": true, + "requires": { + "@types/node": "*", + "graceful-fs": "^4.2.4" + } + }, + "jest-util": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", + "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.4", + "picomatch": "^2.2.3" + } + }, + "pretty-format": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz", + "integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.2.5", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "peer": true + } + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "peer": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -10657,10 +48811,11 @@ } }, "jest-docblock": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz", - "integrity": "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.0.6.tgz", + "integrity": "sha512-Fid6dPcjwepTFraz0YxIMCi7dejjJ/KL9FBjPYhBp4Sv1Y9PdhImlKZqYU555BlN4TQKaTc+F2Av1z+anVyGkA==", "dev": true, + "peer": true, "requires": { "detect-newline": "^3.0.0" } @@ -10730,18 +48885,164 @@ } }, "jest-environment-jsdom": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz", - "integrity": "sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.3.1.tgz", + "integrity": "sha512-3MOy8qMzIkQlfb3W1TfrD7uZHj+xx8Olix5vMENkj5djPmRqndMaXtpnaZkxmxM+Qc3lo+yVzJjzuXbCcZjAlg==", "dev": true, + "peer": true, "requires": { - "@jest/environment": "^26.6.2", - "@jest/fake-timers": "^26.6.2", - "@jest/types": "^26.6.2", + "@jest/environment": "^27.3.1", + "@jest/fake-timers": "^27.3.1", + "@jest/types": "^27.2.5", "@types/node": "*", - "jest-mock": "^26.6.2", - "jest-util": "^26.6.2", - "jsdom": "^16.4.0" + "jest-mock": "^27.3.0", + "jest-util": "^27.3.1", + "jsdom": "^16.6.0" + }, + "dependencies": { + "@jest/environment": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.3.1.tgz", + "integrity": "sha512-BCKCj4mOVLme6Tanoyc9k0ultp3pnmuyHw73UHRPeeZxirsU/7E3HC4le/VDb/SMzE1JcPnto+XBKFOcoiJzVw==", + "dev": true, + "peer": true, + "requires": { + "@jest/fake-timers": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/node": "*", + "jest-mock": "^27.3.0" + } + }, + "@jest/fake-timers": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.3.1.tgz", + "integrity": "sha512-M3ZFgwwlqJtWZ+QkBG5NmC23A9w+A6ZxNsO5nJxJsKYt4yguBd3i8TpjQz5NfCX91nEve1KqD9RA2Q+Q1uWqoA==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.2.5", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.3.1", + "jest-mock": "^27.3.0", + "jest-util": "^27.3.1" + } + }, + "@jest/types": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", + "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", + "dev": true, + "peer": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@sinonjs/fake-timers": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz", + "integrity": "sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==", + "dev": true, + "peer": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "peer": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "peer": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "peer": true + }, + "jest-mock": { + "version": "27.3.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.3.0.tgz", + "integrity": "sha512-ziZiLk0elZOQjD08bLkegBzv5hCABu/c8Ytx45nJKkysQwGaonvmTxwjLqEA4qGdasq9o2I8/HtdGMNnVsMTGw==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.2.5", + "@types/node": "*" + } + }, + "jest-util": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", + "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.4", + "picomatch": "^2.2.3" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "jest-environment-node": { @@ -10784,51 +49085,378 @@ "micromatch": "^4.0.2", "sane": "^4.0.3", "walker": "^1.0.7" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-jasmine2": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.3.1.tgz", + "integrity": "sha512-WK11ZUetDQaC09w4/j7o4FZDUIp+4iYWH/Lik34Pv7ukL+DuXFGdnmmi7dT58J2ZYKFB5r13GyE0z3NPeyJmsg==", + "dev": true, + "peer": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^27.3.1", + "@jest/source-map": "^27.0.6", + "@jest/test-result": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^27.3.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.3.1", + "jest-matcher-utils": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-runtime": "^27.3.1", + "jest-snapshot": "^27.3.1", + "jest-util": "^27.3.1", + "pretty-format": "^27.3.1", + "throat": "^6.0.1" + }, + "dependencies": { + "@jest/environment": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.3.1.tgz", + "integrity": "sha512-BCKCj4mOVLme6Tanoyc9k0ultp3pnmuyHw73UHRPeeZxirsU/7E3HC4le/VDb/SMzE1JcPnto+XBKFOcoiJzVw==", + "dev": true, + "peer": true, + "requires": { + "@jest/fake-timers": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/node": "*", + "jest-mock": "^27.3.0" + } + }, + "@jest/fake-timers": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.3.1.tgz", + "integrity": "sha512-M3ZFgwwlqJtWZ+QkBG5NmC23A9w+A6ZxNsO5nJxJsKYt4yguBd3i8TpjQz5NfCX91nEve1KqD9RA2Q+Q1uWqoA==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.2.5", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.3.1", + "jest-mock": "^27.3.0", + "jest-util": "^27.3.1" + } + }, + "@jest/types": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", + "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", + "dev": true, + "peer": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@sinonjs/fake-timers": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz", + "integrity": "sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==", + "dev": true, + "peer": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "peer": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "peer": true + }, + "diff-sequences": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", + "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==", + "dev": true, + "peer": true + }, + "expect": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.3.1.tgz", + "integrity": "sha512-MrNXV2sL9iDRebWPGOGFdPQRl2eDQNu/uhxIMShjjx74T6kC6jFIkmQ6OqXDtevjGUkyB2IT56RzDBqXf/QPCg==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.2.5", + "ansi-styles": "^5.0.0", + "jest-get-type": "^27.3.1", + "jest-matcher-utils": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-regex-util": "^27.0.6" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "peer": true + } + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "peer": true + }, + "jest-diff": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.3.1.tgz", + "integrity": "sha512-PCeuAH4AWUo2O5+ksW4pL9v5xJAcIKPUPfIhZBcG1RKv/0+dvaWTQK1Nrau8d67dp65fOqbeMdoil+6PedyEPQ==", + "dev": true, + "peer": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^27.0.6", + "jest-get-type": "^27.3.1", + "pretty-format": "^27.3.1" + } + }, + "jest-each": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.3.1.tgz", + "integrity": "sha512-E4SwfzKJWYcvOYCjOxhZcxwL+AY0uFMvdCOwvzgutJiaiodFjkxQQDxHm8FQBeTqDnSmKsQWn7ldMRzTn2zJaQ==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.2.5", + "chalk": "^4.0.0", + "jest-get-type": "^27.3.1", + "jest-util": "^27.3.1", + "pretty-format": "^27.3.1" + } + }, + "jest-get-type": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.3.1.tgz", + "integrity": "sha512-+Ilqi8hgHSAdhlQ3s12CAVNd8H96ZkQBfYoXmArzZnOfAtVAJEiPDBirjByEblvG/4LPJmkL+nBqPO3A1YJAEg==", + "dev": true, + "peer": true + }, + "jest-matcher-utils": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.3.1.tgz", + "integrity": "sha512-hX8N7zXS4k+8bC1Aj0OWpGb7D3gIXxYvPNK1inP5xvE4ztbz3rc4AkI6jGVaerepBnfWB17FL5lWFJT3s7qo8w==", + "dev": true, + "peer": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^27.3.1", + "jest-get-type": "^27.3.1", + "pretty-format": "^27.3.1" + } + }, + "jest-mock": { + "version": "27.3.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.3.0.tgz", + "integrity": "sha512-ziZiLk0elZOQjD08bLkegBzv5hCABu/c8Ytx45nJKkysQwGaonvmTxwjLqEA4qGdasq9o2I8/HtdGMNnVsMTGw==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.2.5", + "@types/node": "*" + } + }, + "jest-regex-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", + "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", + "dev": true, + "peer": true + }, + "jest-util": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", + "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.4", + "picomatch": "^2.2.3" + } + }, + "pretty-format": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz", + "integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.2.5", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "peer": true + } + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, - "jest-jasmine2": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz", - "integrity": "sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==", + "jest-leak-detector": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.3.1.tgz", + "integrity": "sha512-78QstU9tXbaHzwlRlKmTpjP9k4Pvre5l0r8Spo4SbFFVy/4Abg9I6ZjHwjg2QyKEAMg020XcjP+UgLZIY50yEg==", "dev": true, + "peer": true, "requires": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^26.6.2", - "@jest/source-map": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^26.6.2", - "is-generator-fn": "^2.0.0", - "jest-each": "^26.6.2", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-runtime": "^26.6.3", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "pretty-format": "^26.6.2", - "throat": "^5.0.0" + "jest-get-type": "^27.3.1", + "pretty-format": "^27.3.1" }, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "@jest/types": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", + "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", "dev": true, + "peer": true, "requires": { - "color-convert": "^2.0.1" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "peer": true, + "requires": { + "@types/yargs-parser": "*" } }, + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "peer": true + }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + } } }, "color-convert": { @@ -10836,6 +49464,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -10844,35 +49473,48 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "dev": true, + "peer": true + }, + "jest-get-type": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.3.1.tgz", + "integrity": "sha512-+Ilqi8hgHSAdhlQ3s12CAVNd8H96ZkQBfYoXmArzZnOfAtVAJEiPDBirjByEblvG/4LPJmkL+nBqPO3A1YJAEg==", + "dev": true, + "peer": true + }, + "pretty-format": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz", + "integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.2.5", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + } }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } } } }, - "jest-leak-detector": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz", - "integrity": "sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==", - "dev": true, - "requires": { - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" - } - }, "jest-matcher-utils": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz", @@ -10937,27 +49579,53 @@ } }, "jest-message-util": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", - "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.3.1.tgz", + "integrity": "sha512-bh3JEmxsTZ/9rTm0jQrPElbY2+y48Rw2t47uMfByNyUVR+OfPh4anuyKsGqsNkXk/TI4JbLRZx+7p7Hdt6q1yg==", "dev": true, + "peer": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@jest/types": "^26.6.2", + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.2.5", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.4", - "micromatch": "^4.0.2", - "pretty-format": "^26.6.2", + "micromatch": "^4.0.4", + "pretty-format": "^27.3.1", "slash": "^3.0.0", - "stack-utils": "^2.0.2" + "stack-utils": "^2.0.3" }, "dependencies": { + "@jest/types": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", + "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", + "dev": true, + "peer": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "peer": true, + "requires": { + "@types/yargs-parser": "*" + } + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -10967,6 +49635,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -10977,6 +49646,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -10985,19 +49655,44 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "dev": true, + "peer": true + }, + "pretty-format": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz", + "integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.2.5", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "peer": true + } + } }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -11018,7 +49713,8 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", - "dev": true + "dev": true, + "requires": {} }, "jest-regex-util": { "version": "26.0.0", @@ -11027,26 +49723,54 @@ "dev": true }, "jest-resolve": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", - "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.3.1.tgz", + "integrity": "sha512-Dfzt25CFSPo3Y3GCbxynRBZzxq9AdyNN+x/v2IqYx6KVT5Z6me2Z/PsSGFSv3cOSUZqJ9pHxilao/I/m9FouLw==", "dev": true, + "peer": true, "requires": { - "@jest/types": "^26.6.2", + "@jest/types": "^27.2.5", "chalk": "^4.0.0", "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.3.1", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^26.6.2", - "read-pkg-up": "^7.0.1", - "resolve": "^1.18.1", + "jest-util": "^27.3.1", + "jest-validate": "^27.3.1", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", "slash": "^3.0.0" }, "dependencies": { + "@jest/types": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", + "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", + "dev": true, + "peer": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "peer": true, + "requires": { + "@types/yargs-parser": "*" + } + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -11056,6 +49780,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -11066,6 +49791,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -11074,77 +49800,69 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } + "peer": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, - "requires": { - "p-locate": "^4.1.0" - } + "peer": true }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "jest-haste-map": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", + "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", "dev": true, + "peer": true, "requires": { - "p-limit": "^2.2.0" + "@jest/types": "^27.2.5", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^27.0.6", + "jest-serializer": "^27.0.6", + "jest-util": "^27.3.1", + "jest-worker": "^27.3.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" } }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true + "jest-regex-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", + "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", + "dev": true, + "peer": true }, - "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "jest-serializer": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", + "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", "dev": true, + "peer": true, "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "dependencies": { - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true - } + "@types/node": "*", + "graceful-fs": "^4.2.4" } }, - "read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "jest-util": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", + "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", "dev": true, + "peer": true, "requires": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.4", + "picomatch": "^2.2.3" } }, "supports-color": { @@ -11152,6 +49870,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -11159,49 +49878,228 @@ } }, "jest-resolve-dependencies": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz", - "integrity": "sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.3.1.tgz", + "integrity": "sha512-X7iLzY8pCiYOnvYo2YrK3P9oSE8/3N2f4pUZMJ8IUcZnT81vlSonya1KTO9ZfKGuC+svE6FHK/XOb8SsoRUV1A==", "dev": true, + "peer": true, "requires": { - "@jest/types": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-snapshot": "^26.6.2" + "@jest/types": "^27.2.5", + "jest-regex-util": "^27.0.6", + "jest-snapshot": "^27.3.1" + }, + "dependencies": { + "@jest/types": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", + "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", + "dev": true, + "peer": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "peer": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "peer": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "peer": true + }, + "jest-regex-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", + "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", + "dev": true, + "peer": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, - "jest-runner": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz", - "integrity": "sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==", - "dev": true, - "requires": { - "@jest/console": "^26.6.2", - "@jest/environment": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.7.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-config": "^26.6.3", - "jest-docblock": "^26.0.0", - "jest-haste-map": "^26.6.2", - "jest-leak-detector": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-resolve": "^26.6.2", - "jest-runtime": "^26.6.3", - "jest-util": "^26.6.2", - "jest-worker": "^26.6.2", + "jest-runner": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.3.1.tgz", + "integrity": "sha512-r4W6kBn6sPr3TBwQNmqE94mPlYVn7fLBseeJfo4E2uCTmAyDFm2O5DYAQAFP7Q3YfiA/bMwg8TVsciP7k0xOww==", + "dev": true, + "peer": true, + "requires": { + "@jest/console": "^27.3.1", + "@jest/environment": "^27.3.1", + "@jest/test-result": "^27.3.1", + "@jest/transform": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-docblock": "^27.0.6", + "jest-environment-jsdom": "^27.3.1", + "jest-environment-node": "^27.3.1", + "jest-haste-map": "^27.3.1", + "jest-leak-detector": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-resolve": "^27.3.1", + "jest-runtime": "^27.3.1", + "jest-util": "^27.3.1", + "jest-worker": "^27.3.1", "source-map-support": "^0.5.6", - "throat": "^5.0.0" + "throat": "^6.0.1" }, "dependencies": { + "@jest/environment": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.3.1.tgz", + "integrity": "sha512-BCKCj4mOVLme6Tanoyc9k0ultp3pnmuyHw73UHRPeeZxirsU/7E3HC4le/VDb/SMzE1JcPnto+XBKFOcoiJzVw==", + "dev": true, + "peer": true, + "requires": { + "@jest/fake-timers": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/node": "*", + "jest-mock": "^27.3.0" + } + }, + "@jest/fake-timers": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.3.1.tgz", + "integrity": "sha512-M3ZFgwwlqJtWZ+QkBG5NmC23A9w+A6ZxNsO5nJxJsKYt4yguBd3i8TpjQz5NfCX91nEve1KqD9RA2Q+Q1uWqoA==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.2.5", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.3.1", + "jest-mock": "^27.3.0", + "jest-util": "^27.3.1" + } + }, + "@jest/transform": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.3.1.tgz", + "integrity": "sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==", + "dev": true, + "peer": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.2.5", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.3.1", + "jest-regex-util": "^27.0.6", + "jest-util": "^27.3.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + } + }, + "@jest/types": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", + "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", + "dev": true, + "peer": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@sinonjs/fake-timers": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz", + "integrity": "sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==", + "dev": true, + "peer": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "peer": true, + "requires": { + "@types/yargs-parser": "*" + } + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -11211,6 +50109,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -11221,6 +50120,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -11229,19 +50129,110 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "dev": true, + "peer": true + }, + "jest-environment-node": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.3.1.tgz", + "integrity": "sha512-T89F/FgkE8waqrTSA7/ydMkcc52uYPgZZ6q8OaZgyiZkJb5QNNCF6oPZjH9IfPFfcc9uBWh1574N0kY0pSvTXw==", + "dev": true, + "peer": true, + "requires": { + "@jest/environment": "^27.3.1", + "@jest/fake-timers": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/node": "*", + "jest-mock": "^27.3.0", + "jest-util": "^27.3.1" + } + }, + "jest-haste-map": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", + "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.2.5", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^27.0.6", + "jest-serializer": "^27.0.6", + "jest-util": "^27.3.1", + "jest-worker": "^27.3.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + } + }, + "jest-mock": { + "version": "27.3.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.3.0.tgz", + "integrity": "sha512-ziZiLk0elZOQjD08bLkegBzv5hCABu/c8Ytx45nJKkysQwGaonvmTxwjLqEA4qGdasq9o2I8/HtdGMNnVsMTGw==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.2.5", + "@types/node": "*" + } + }, + "jest-regex-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", + "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", + "dev": true, + "peer": true + }, + "jest-serializer": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", + "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", + "dev": true, + "peer": true, + "requires": { + "@types/node": "*", + "graceful-fs": "^4.2.4" + } + }, + "jest-util": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", + "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.4", + "picomatch": "^2.2.3" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "peer": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -11249,51 +50240,132 @@ } }, "jest-runtime": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz", - "integrity": "sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==", - "dev": true, - "requires": { - "@jest/console": "^26.6.2", - "@jest/environment": "^26.6.2", - "@jest/fake-timers": "^26.6.2", - "@jest/globals": "^26.6.2", - "@jest/source-map": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/yargs": "^15.0.0", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.3.1.tgz", + "integrity": "sha512-qtO6VxPbS8umqhEDpjA4pqTkKQ1Hy4ZSi9mDVeE9Za7LKBo2LdW2jmT+Iod3XFaJqINikZQsn2wEi0j9wPRbLg==", + "dev": true, + "peer": true, + "requires": { + "@jest/console": "^27.3.1", + "@jest/environment": "^27.3.1", + "@jest/globals": "^27.3.1", + "@jest/source-map": "^27.0.6", + "@jest/test-result": "^27.3.1", + "@jest/transform": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/yargs": "^16.0.0", "chalk": "^4.0.0", - "cjs-module-lexer": "^0.6.0", + "cjs-module-lexer": "^1.0.0", "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", "exit": "^0.1.2", "glob": "^7.1.3", "graceful-fs": "^4.2.4", - "jest-config": "^26.6.3", - "jest-haste-map": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-mock": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-resolve": "^26.6.2", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", + "jest-haste-map": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-mock": "^27.3.0", + "jest-regex-util": "^27.0.6", + "jest-resolve": "^27.3.1", + "jest-snapshot": "^27.3.1", + "jest-util": "^27.3.1", + "jest-validate": "^27.3.1", "slash": "^3.0.0", "strip-bom": "^4.0.0", - "yargs": "^15.4.1" + "yargs": "^16.2.0" }, "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true + "@jest/environment": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.3.1.tgz", + "integrity": "sha512-BCKCj4mOVLme6Tanoyc9k0ultp3pnmuyHw73UHRPeeZxirsU/7E3HC4le/VDb/SMzE1JcPnto+XBKFOcoiJzVw==", + "dev": true, + "peer": true, + "requires": { + "@jest/fake-timers": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/node": "*", + "jest-mock": "^27.3.0" + } + }, + "@jest/fake-timers": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.3.1.tgz", + "integrity": "sha512-M3ZFgwwlqJtWZ+QkBG5NmC23A9w+A6ZxNsO5nJxJsKYt4yguBd3i8TpjQz5NfCX91nEve1KqD9RA2Q+Q1uWqoA==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.2.5", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.3.1", + "jest-mock": "^27.3.0", + "jest-util": "^27.3.1" + } + }, + "@jest/transform": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.3.1.tgz", + "integrity": "sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==", + "dev": true, + "peer": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.2.5", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.3.1", + "jest-regex-util": "^27.0.6", + "jest-util": "^27.3.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + } + }, + "@jest/types": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", + "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", + "dev": true, + "peer": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@sinonjs/fake-timers": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz", + "integrity": "sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==", + "dev": true, + "peer": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "peer": true, + "requires": { + "@types/yargs-parser": "*" + } }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -11303,27 +50375,18 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, - "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -11332,134 +50395,98 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } + "peer": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true + "dev": true, + "peer": true }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "jest-haste-map": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", + "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", "dev": true, + "peer": true, "requires": { - "p-locate": "^4.1.0" + "@jest/types": "^27.2.5", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^27.0.6", + "jest-serializer": "^27.0.6", + "jest-util": "^27.3.1", + "jest-worker": "^27.3.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" } }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "jest-mock": { + "version": "27.3.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.3.0.tgz", + "integrity": "sha512-ziZiLk0elZOQjD08bLkegBzv5hCABu/c8Ytx45nJKkysQwGaonvmTxwjLqEA4qGdasq9o2I8/HtdGMNnVsMTGw==", "dev": true, + "peer": true, "requires": { - "p-limit": "^2.2.0" + "@jest/types": "^27.2.5", + "@types/node": "*" } }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true + "jest-regex-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", + "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", + "dev": true, + "peer": true }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "jest-serializer": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", + "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", "dev": true, + "peer": true, "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "@types/node": "*", + "graceful-fs": "^4.2.4" } }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "jest-util": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", + "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", "dev": true, + "peer": true, "requires": { - "ansi-regex": "^5.0.1" + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.4", + "picomatch": "^2.2.3" } }, - "strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "peer": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "requires": { - "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" - } - }, - "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } } } }, @@ -11535,34 +50562,92 @@ } }, "jest-snapshot": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz", - "integrity": "sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.3.1.tgz", + "integrity": "sha512-APZyBvSgQgOT0XumwfFu7X3G5elj6TGhCBLbBdn3R1IzYustPGPE38F51dBWMQ8hRXa9je0vAdeVDtqHLvB6lg==", "dev": true, + "peer": true, "requires": { + "@babel/core": "^7.7.2", + "@babel/generator": "^7.7.2", + "@babel/parser": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", "@babel/types": "^7.0.0", - "@jest/types": "^26.6.2", + "@jest/transform": "^27.3.1", + "@jest/types": "^27.2.5", "@types/babel__traverse": "^7.0.4", - "@types/prettier": "^2.0.0", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^26.6.2", + "expect": "^27.3.1", "graceful-fs": "^4.2.4", - "jest-diff": "^26.6.2", - "jest-get-type": "^26.3.0", - "jest-haste-map": "^26.6.2", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-resolve": "^26.6.2", + "jest-diff": "^27.3.1", + "jest-get-type": "^27.3.1", + "jest-haste-map": "^27.3.1", + "jest-matcher-utils": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-resolve": "^27.3.1", + "jest-util": "^27.3.1", "natural-compare": "^1.4.0", - "pretty-format": "^26.6.2", + "pretty-format": "^27.3.1", "semver": "^7.3.2" }, "dependencies": { + "@jest/transform": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.3.1.tgz", + "integrity": "sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==", + "dev": true, + "peer": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.2.5", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.3.1", + "jest-regex-util": "^27.0.6", + "jest-util": "^27.3.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + } + }, + "@jest/types": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", + "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", + "dev": true, + "peer": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "peer": true, + "requires": { + "@types/yargs-parser": "*" + } + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -11572,6 +50657,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -11582,6 +50668,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -11590,31 +50677,200 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true + }, + "diff-sequences": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", + "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==", + "dev": true, + "peer": true + }, + "expect": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.3.1.tgz", + "integrity": "sha512-MrNXV2sL9iDRebWPGOGFdPQRl2eDQNu/uhxIMShjjx74T6kC6jFIkmQ6OqXDtevjGUkyB2IT56RzDBqXf/QPCg==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.2.5", + "ansi-styles": "^5.0.0", + "jest-get-type": "^27.3.1", + "jest-matcher-utils": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-regex-util": "^27.0.6" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "peer": true + } + } }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "dev": true, + "peer": true + }, + "jest-diff": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.3.1.tgz", + "integrity": "sha512-PCeuAH4AWUo2O5+ksW4pL9v5xJAcIKPUPfIhZBcG1RKv/0+dvaWTQK1Nrau8d67dp65fOqbeMdoil+6PedyEPQ==", + "dev": true, + "peer": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^27.0.6", + "jest-get-type": "^27.3.1", + "pretty-format": "^27.3.1" + } + }, + "jest-get-type": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.3.1.tgz", + "integrity": "sha512-+Ilqi8hgHSAdhlQ3s12CAVNd8H96ZkQBfYoXmArzZnOfAtVAJEiPDBirjByEblvG/4LPJmkL+nBqPO3A1YJAEg==", + "dev": true, + "peer": true + }, + "jest-haste-map": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", + "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.2.5", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^27.0.6", + "jest-serializer": "^27.0.6", + "jest-util": "^27.3.1", + "jest-worker": "^27.3.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + } + }, + "jest-matcher-utils": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.3.1.tgz", + "integrity": "sha512-hX8N7zXS4k+8bC1Aj0OWpGb7D3gIXxYvPNK1inP5xvE4ztbz3rc4AkI6jGVaerepBnfWB17FL5lWFJT3s7qo8w==", + "dev": true, + "peer": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^27.3.1", + "jest-get-type": "^27.3.1", + "pretty-format": "^27.3.1" + } + }, + "jest-regex-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", + "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", + "dev": true, + "peer": true + }, + "jest-serializer": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", + "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", + "dev": true, + "peer": true, + "requires": { + "@types/node": "*", + "graceful-fs": "^4.2.4" + } + }, + "jest-util": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", + "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.4", + "picomatch": "^2.2.3" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "peer": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "pretty-format": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz", + "integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.2.5", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "peer": true + } + } }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, + "peer": true, "requires": { "lru-cache": "^6.0.0" } }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "peer": true + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "peer": true } } }, @@ -11684,39 +50940,60 @@ } }, "jest-validate": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", - "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.3.1.tgz", + "integrity": "sha512-3H0XCHDFLA9uDII67Bwi1Vy7AqwA5HqEEjyy934lgVhtJ3eisw6ShOF1MDmRPspyikef5MyExvIm0/TuLzZ86Q==", "dev": true, + "peer": true, "requires": { - "@jest/types": "^26.6.2", - "camelcase": "^6.0.0", + "@jest/types": "^27.2.5", + "camelcase": "^6.2.0", "chalk": "^4.0.0", - "jest-get-type": "^26.3.0", + "jest-get-type": "^27.3.1", "leven": "^3.1.0", - "pretty-format": "^26.6.2" + "pretty-format": "^27.3.1" }, "dependencies": { + "@jest/types": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", + "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", + "dev": true, + "peer": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "peer": true, + "requires": { + "@types/yargs-parser": "*" + } + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "requires": { "color-convert": "^2.0.1" } }, - "camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", - "dev": true - }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -11727,6 +51004,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -11735,19 +51013,51 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "dev": true, + "peer": true + }, + "jest-get-type": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.3.1.tgz", + "integrity": "sha512-+Ilqi8hgHSAdhlQ3s12CAVNd8H96ZkQBfYoXmArzZnOfAtVAJEiPDBirjByEblvG/4LPJmkL+nBqPO3A1YJAEg==", + "dev": true, + "peer": true + }, + "pretty-format": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz", + "integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.2.5", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "peer": true + } + } }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -11755,25 +51065,61 @@ } }, "jest-watcher": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz", - "integrity": "sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.3.1.tgz", + "integrity": "sha512-9/xbV6chABsGHWh9yPaAGYVVKurWoP3ZMCv6h+O1v9/+pkOroigs6WzZ0e9gLP/njokUwM7yQhr01LKJVMkaZA==", "dev": true, + "peer": true, "requires": { - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", + "@jest/test-result": "^27.3.1", + "@jest/types": "^27.2.5", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "jest-util": "^26.6.2", + "jest-util": "^27.3.1", "string-length": "^4.0.1" }, "dependencies": { + "@jest/types": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", + "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", + "dev": true, + "peer": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "peer": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "peer": true, + "requires": { + "type-fest": "^0.21.3" + } + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -11783,6 +51129,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -11793,6 +51140,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -11801,34 +51149,59 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "dev": true, + "peer": true + }, + "jest-util": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", + "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.4", + "picomatch": "^2.2.3" + } }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } + }, + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "peer": true } } }, "jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.3.1.tgz", + "integrity": "sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g==", "dev": true, "requires": { "@types/node": "*", "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" + "supports-color": "^8.0.0" }, "dependencies": { "has-flag": { @@ -11838,9 +51211,9 @@ "dev": true }, "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -11933,40 +51306,13 @@ "combined-stream": "^1.0.8", "mime-types": "^2.1.12" } - }, - "tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, - "requires": { - "punycode": "^2.1.1" - } - }, - "webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true - }, - "whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "dev": true, - "requires": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - } } } }, "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" }, "json-parse-better-errors": { "version": "1.0.2", @@ -12001,7 +51347,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dev": true, "requires": { "minimist": "^1.2.5" } @@ -12023,10 +51368,13 @@ } }, "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } }, "kleur": { "version": "3.0.3", @@ -12035,9 +51383,9 @@ "dev": true }, "klona": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz", - "integrity": "sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", + "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", "dev": true }, "known-css-properties": { @@ -12099,15 +51447,6 @@ "resolve": "^1.19.0" }, "dependencies": { - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, "findup-sync": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-4.0.0.tgz", @@ -12193,85 +51532,32 @@ "uc.micro": "^1.0.1" } }, - "lint-staged": { - "version": "11.2.3", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-11.2.3.tgz", - "integrity": "sha512-Tfmhk8O2XFMD25EswHPv+OYhUjsijy5D7liTdxeXvhG2rsadmOLFtyj8lmlfoFFXY8oXWAIOKpoI+lJe1DB1mw==", - "dev": true, - "requires": { - "cli-truncate": "2.1.0", - "colorette": "^1.4.0", - "commander": "^8.2.0", - "cosmiconfig": "^7.0.1", - "debug": "^4.3.2", - "enquirer": "^2.3.6", - "execa": "^5.1.1", - "listr2": "^3.12.2", - "micromatch": "^4.0.4", - "normalize-path": "^3.0.0", - "please-upgrade-node": "^3.2.0", - "string-argv": "0.3.1", - "stringify-object": "3.3.0", - "supports-color": "8.1.1" - }, - "dependencies": { - "colorette": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", - "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", - "dev": true - }, - "commander": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.2.0.tgz", - "integrity": "sha512-LLKxDvHeL91/8MIyTAD5BFMNtoIwztGPMiM/7Bl8rIPmHCZXRxmSWr91h57dpOpnQ6jIUqEWdXE/uBYMfiVZDA==", - "dev": true - }, - "cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", - "dev": true, - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "lint-staged": { + "version": "11.2.3", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-11.2.3.tgz", + "integrity": "sha512-Tfmhk8O2XFMD25EswHPv+OYhUjsijy5D7liTdxeXvhG2rsadmOLFtyj8lmlfoFFXY8oXWAIOKpoI+lJe1DB1mw==", + "dev": true, + "requires": { + "cli-truncate": "2.1.0", + "colorette": "^1.4.0", + "commander": "^8.2.0", + "cosmiconfig": "^7.0.1", + "debug": "^4.3.2", + "enquirer": "^2.3.6", + "execa": "^5.1.1", + "listr2": "^3.12.2", + "micromatch": "^4.0.4", + "normalize-path": "^3.0.0", + "please-upgrade-node": "^3.2.0", + "string-argv": "0.3.1", + "stringify-object": "3.3.0", + "supports-color": "8.1.1" + }, + "dependencies": { + "commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "dev": true }, "has-flag": { @@ -12280,48 +51566,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, "supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -12330,26 +51574,17 @@ "requires": { "has-flag": "^4.0.0" } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } } } }, "listr2": { - "version": "3.12.2", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.12.2.tgz", - "integrity": "sha512-64xC2CJ/As/xgVI3wbhlPWVPx0wfTqbUAkpb7bjDi0thSWMqrf07UFhrfsGoo8YSXmF049Rp9C0cjLC8rZxK9A==", + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.13.1.tgz", + "integrity": "sha512-pk4YBDA2cxtpM8iLHbz6oEsfZieJKHf6Pt19NlKaHZZVpqHyVs/Wqr7RfBBCeAFCJchGO7WQHVkUPZTvJMHk8w==", "dev": true, "requires": { "cli-truncate": "^2.1.0", - "colorette": "^1.4.0", + "colorette": "^2.0.16", "log-update": "^4.0.0", "p-map": "^4.0.0", "rxjs": "^6.6.7", @@ -12357,52 +51592,10 @@ "wrap-ansi": "^7.0.0" }, "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "colorette": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", - "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", "dev": true }, "p-map": { @@ -12413,37 +51606,6 @@ "requires": { "aggregate-error": "^3.0.0" } - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } } } }, @@ -12474,6 +51636,18 @@ "error-ex": "^1.3.1", "json-parse-better-errors": "^1.0.1" } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true } } }, @@ -12495,12 +51669,12 @@ } }, "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "^4.1.0" } }, "lodash": { @@ -12653,11 +51827,14 @@ "wrap-ansi": "^6.2.0" }, "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } }, "ansi-styles": { "version": "4.3.0", @@ -12698,12 +51875,6 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, "restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", @@ -12714,6 +51885,17 @@ "signal-exit": "^3.0.2" } }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, "string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -12725,14 +51907,11 @@ "strip-ansi": "^6.0.1" } }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true }, "wrap-ansi": { "version": "6.2.0", @@ -12762,12 +51941,13 @@ } }, "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", "dev": true, "requires": { - "yallist": "^4.0.0" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" } }, "make-dir": { @@ -12786,15 +51966,23 @@ "dev": true, "requires": { "kind-of": "^6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } } }, "makeerror": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", - "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", "dev": true, "requires": { - "tmpl": "1.0.x" + "tmpl": "1.0.5" } }, "map-cache": { @@ -12894,20 +52082,6 @@ "integrity": "sha512-pRxBna3MJe6HKnBGsDyMv8ETbptw3axEdYHoqNh7gu5oDcew8fs0xnivZGm06Ogk8zGAJ9VX+OPEr2GXEQK4dg==", "dev": true }, - "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -12965,9 +52139,9 @@ "dev": true }, "mdn-data": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", "dev": true }, "mdurl": { @@ -13006,40 +52180,6 @@ "yargs-parser": "^18.1.3" }, "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, "read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", @@ -13078,45 +52218,18 @@ "dev": true } } - }, - "type-fest": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", - "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", - "dev": true - }, - "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } } } }, "merge-deep": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/merge-deep/-/merge-deep-3.0.3.tgz", - "integrity": "sha512-qtmzAS6t6grwEkNrunqTBdn0qKwFgNWvlxUbAV8es9M7Ot1EbyApytCnvE0jALPa46ZpKDUo527kKiaWplmlFA==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "clone-deep": "^0.2.4", - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/merge-deep/-/merge-deep-3.0.3.tgz", + "integrity": "sha512-qtmzAS6t6grwEkNrunqTBdn0qKwFgNWvlxUbAV8es9M7Ot1EbyApytCnvE0jALPa46ZpKDUo527kKiaWplmlFA==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "clone-deep": "^0.2.4", + "kind-of": "^3.0.2" } }, "merge-stream": { @@ -13191,9 +52304,9 @@ "dev": true }, "mini-css-extract-plugin": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.4.2.tgz", - "integrity": "sha512-ZmqShkn79D36uerdED+9qdo1ZYG8C1YsWvXu0UMJxurZnSdgz7gQKO2EGv8T55MhDqG3DYmGtizZNpM/UbTlcA==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.4.3.tgz", + "integrity": "sha512-zekavl9mZuGyk7COjsfFY/f655AX61EKE0AthXPrmDk+oZyjZ9WzO4WPjXnnO9xl8obK2kmM6rAQrBEmk+WK1g==", "dev": true, "requires": { "schema-utils": "^3.1.0" @@ -13224,8 +52337,7 @@ "minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, "minimist-options": { "version": "4.1.0", @@ -13243,6 +52355,12 @@ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true } } }, @@ -13295,13 +52413,10 @@ } }, "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true }, "moment": { "version": "2.29.1", @@ -13330,8 +52445,7 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "mute-stream": { "version": "0.0.7", @@ -13368,6 +52482,14 @@ "regex-not": "^1.0.0", "snapdragon": "^0.8.1", "to-regex": "^3.0.1" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } } }, "natural-compare": { @@ -13386,6 +52508,14 @@ "moo": "^0.5.0", "railroad-diagrams": "^1.0.0", "randexp": "0.4.6" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + } } }, "neo-async": { @@ -13407,6 +52537,30 @@ "dev": true, "requires": { "whatwg-url": "^5.0.0" + }, + "dependencies": { + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "dev": true + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "dev": true + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "dev": true, + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + } } }, "node-int64": { @@ -13436,6 +52590,16 @@ "which": "^2.0.2" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "optional": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -13455,14 +52619,20 @@ "requires": { "isexe": "^2.0.0" } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "optional": true } } }, "node-releases": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.0.tgz", - "integrity": "sha512-aA87l0flFYMzCHpTM3DERFSYxc6lv/BltdbRTOMZuxZ0cwZCD3mejE5n9vLhSJCN++/eOqr77G1IO5uXxlQYWA==", - "dev": true + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==" }, "nopt": { "version": "3.0.6", @@ -13523,9 +52693,9 @@ "integrity": "sha1-rsiGr/2wRQcNhWRH32Ls+GFG7EU=" }, "npm-package-json-lint": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/npm-package-json-lint/-/npm-package-json-lint-5.4.0.tgz", - "integrity": "sha512-0wNPI2+hiB8CA7gxOS2hXhupmmwEwjRITC9WCMV5Tn3sAsTDEXL+UwnVEFZNLmuxt6km0cbj9h2e8h6dRSZukw==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/npm-package-json-lint/-/npm-package-json-lint-5.4.1.tgz", + "integrity": "sha512-nFuijuczSzWEaNhjgvU2n1A3Gsn4CYZKZYum/oq2i+YOA/HB57CA6kpZrlnYf6bEKelMvsixjcN7SlUXDo0bTg==", "dev": true, "requires": { "ajv": "^6.12.6", @@ -13579,25 +52749,21 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", - "dev": true, - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - } - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -13615,6 +52781,12 @@ "requires": { "has-flag": "^4.0.0" } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true } } }, @@ -13666,12 +52838,12 @@ } }, "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", "dev": true, "requires": { - "boolbase": "~1.0.0" + "boolbase": "^1.0.0" } }, "num2fraction": { @@ -13711,13 +52883,41 @@ "is-descriptor": "^0.1.0" } }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "kind-of": "^3.0.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } } } } @@ -13945,19 +53145,38 @@ "dev": true }, "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, "requires": { - "p-try": "^2.0.0" + "yocto-queue": "^0.1.0" } }, "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, "requires": { - "p-limit": "^2.0.0" + "p-limit": "^2.2.0" + }, + "dependencies": { + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + } } }, "p-map": { @@ -13967,9 +53186,10 @@ "dev": true }, "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true }, "parent-module": { "version": "1.0.1", @@ -14043,9 +53263,10 @@ "dev": true }, "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true }, "path-is-absolute": { "version": "1.0.1", @@ -14105,8 +53326,7 @@ "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, "picomatch": { "version": "2.3.0", @@ -14121,9 +53341,9 @@ "dev": true }, "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true }, "pinkie": { @@ -14196,10 +53416,10 @@ "p-limit": "^1.1.0" } }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true } } @@ -14250,10 +53470,10 @@ "p-limit": "^1.1.0" } }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true } } @@ -14306,6 +53526,15 @@ "requires": { "ms": "^2.1.1" } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } } } }, @@ -14368,16 +53597,6 @@ } } }, - "postcss-calc": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.0.0.tgz", - "integrity": "sha512-5NglwDrcbiy8XXfPM11F3HeC6hoT9W7GUH/Zi5U/p7u3Irv4rHhdDcIZwG0llHXV4ftsBjpfWMXAnXNl4lnt8g==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.2" - } - }, "postcss-color-functional-notation": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz", @@ -14550,27 +53769,6 @@ } } }, - "postcss-colormin": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.0.tgz", - "integrity": "sha512-+HC6GfWU3upe5/mqmxuqYZ9B2Wl4lcoUUNkoaX59nEWV4EtADCMiBqui111Bu8R8IvaZTmqmxrqOAqjbHIwXPw==", - "dev": true, - "requires": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0", - "colord": "^2.0.1", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-convert-values": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.1.tgz", - "integrity": "sha512-C3zR1Do2BkKkCgC0g3sF8TS0koF2G+mN8xxayZx3f10cIRmTaAnpgpRQZjNekTZxM2ciSPoh2IWJm0VZx8NoQg==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.1.0" - } - }, "postcss-custom-media": { "version": "7.0.8", "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz", @@ -14740,30 +53938,6 @@ } } }, - "postcss-discard-comments": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz", - "integrity": "sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg==", - "dev": true - }, - "postcss-discard-duplicates": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz", - "integrity": "sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA==", - "dev": true - }, - "postcss-discard-empty": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz", - "integrity": "sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw==", - "dev": true - }, - "postcss-discard-overridden": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz", - "integrity": "sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q==", - "dev": true - }, "postcss-double-position-gradients": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz", @@ -14937,70 +54111,30 @@ "integrity": "sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg==", "dev": true, "requires": { - "postcss": "^7.0.2" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "postcss-html": { - "version": "0.36.0", - "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-0.36.0.tgz", - "integrity": "sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw==", - "dev": true, - "requires": { - "htmlparser2": "^3.10.0" - }, - "dependencies": { - "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "dev": true, - "requires": { - "domelementtype": "1" - } - }, - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "postcss": "^7.0.2" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", "dev": true }, - "htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true } } }, @@ -15163,17 +54297,13 @@ "semver": "^7.3.4" }, "dependencies": { - "cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" + "yallist": "^4.0.0" } }, "schema-utils": { @@ -15195,6 +54325,12 @@ "requires": { "lru-cache": "^6.0.0" } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true } } }, @@ -15270,108 +54406,6 @@ "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=", "dev": true }, - "postcss-merge-longhand": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.0.2.tgz", - "integrity": "sha512-BMlg9AXSI5G9TBT0Lo/H3PfUy63P84rVz3BjCFE9e9Y9RXQZD3+h3YO1kgTNsNJy7bBc1YQp8DmSnwLIW5VPcw==", - "dev": true, - "requires": { - "css-color-names": "^1.0.1", - "postcss-value-parser": "^4.1.0", - "stylehacks": "^5.0.1" - } - }, - "postcss-merge-rules": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.0.2.tgz", - "integrity": "sha512-5K+Md7S3GwBewfB4rjDeol6V/RZ8S+v4B66Zk2gChRqLTCC8yjnHQ601omj9TKftS19OPGqZ/XzoqpzNQQLwbg==", - "dev": true, - "requires": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0", - "cssnano-utils": "^2.0.1", - "postcss-selector-parser": "^6.0.5", - "vendors": "^1.0.3" - } - }, - "postcss-minify-font-values": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.0.1.tgz", - "integrity": "sha512-7JS4qIsnqaxk+FXY1E8dHBDmraYFWmuL6cgt0T1SWGRO5bzJf8sUoelwa4P88LEWJZweHevAiDKxHlofuvtIoA==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-minify-gradients": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.2.tgz", - "integrity": "sha512-7Do9JP+wqSD6Prittitt2zDLrfzP9pqKs2EcLX7HJYxsxCOwrrcLt4x/ctQTsiOw+/8HYotAoqNkrzItL19SdQ==", - "dev": true, - "requires": { - "colord": "^2.6", - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-minify-params": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.0.1.tgz", - "integrity": "sha512-4RUC4k2A/Q9mGco1Z8ODc7h+A0z7L7X2ypO1B6V8057eVK6mZ6xwz6QN64nHuHLbqbclkX1wyzRnIrdZehTEHw==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.2", - "browserslist": "^4.16.0", - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0", - "uniqs": "^2.0.0" - } - }, - "postcss-minify-selectors": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.1.0.tgz", - "integrity": "sha512-NzGBXDa7aPsAcijXZeagnJBKBPMYLaJJzB8CQh6ncvyl2sIndLVWfbcDi0SBjRWk5VqEjXvf8tYwzoKf4Z07og==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.2", - "postcss-selector-parser": "^6.0.5" - } - }, - "postcss-modules-extract-imports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", - "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "dev": true - }, - "postcss-modules-local-by-default": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", - "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", - "dev": true, - "requires": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-modules-scope": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", - "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.4" - } - }, - "postcss-modules-values": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", - "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", - "dev": true, - "requires": { - "icss-utils": "^5.0.0" - } - }, "postcss-nested": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.1.tgz", @@ -15414,100 +54448,6 @@ } } }, - "postcss-normalize-charset": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz", - "integrity": "sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg==", - "dev": true - }, - "postcss-normalize-display-values": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.1.tgz", - "integrity": "sha512-uupdvWk88kLDXi5HEyI9IaAJTE3/Djbcrqq8YgjvAVuzgVuqIk3SuJWUisT2gaJbZm1H9g5k2w1xXilM3x8DjQ==", - "dev": true, - "requires": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-normalize-positions": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.0.1.tgz", - "integrity": "sha512-rvzWAJai5xej9yWqlCb1OWLd9JjW2Ex2BCPzUJrbaXmtKtgfL8dBMOOMTX6TnvQMtjk3ei1Lswcs78qKO1Skrg==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-normalize-repeat-style": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.1.tgz", - "integrity": "sha512-syZ2itq0HTQjj4QtXZOeefomckiV5TaUO6ReIEabCh3wgDs4Mr01pkif0MeVwKyU/LHEkPJnpwFKRxqWA/7O3w==", - "dev": true, - "requires": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-normalize-string": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.0.1.tgz", - "integrity": "sha512-Ic8GaQ3jPMVl1OEn2U//2pm93AXUcF3wz+OriskdZ1AOuYV25OdgS7w9Xu2LO5cGyhHCgn8dMXh9bO7vi3i9pA==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-normalize-timing-functions": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.1.tgz", - "integrity": "sha512-cPcBdVN5OsWCNEo5hiXfLUnXfTGtSFiBU9SK8k7ii8UD7OLuznzgNRYkLZow11BkQiiqMcgPyh4ZqXEEUrtQ1Q==", - "dev": true, - "requires": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-normalize-unicode": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.1.tgz", - "integrity": "sha512-kAtYD6V3pK0beqrU90gpCQB7g6AOfP/2KIPCVBKJM2EheVsBQmx/Iof+9zR9NFKLAx4Pr9mDhogB27pmn354nA==", - "dev": true, - "requires": { - "browserslist": "^4.16.0", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-normalize-url": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.2.tgz", - "integrity": "sha512-k4jLTPUxREQ5bpajFQZpx8bCF2UrlqOTzP9kEqcEnOfwsRshWs2+oAFIHfDQB8GO2PaUaSE0NlTAYtbluZTlHQ==", - "dev": true, - "requires": { - "is-absolute-url": "^3.0.3", - "normalize-url": "^6.0.1", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-normalize-whitespace": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.1.tgz", - "integrity": "sha512-iPklmI5SBnRvwceb/XH568yyzK0qRVuAG+a1HFUsFRf11lEJTiQQa03a4RSCQvLKdcpX7XsI1Gen9LuLoqwiqA==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-ordered-values": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.0.2.tgz", - "integrity": "sha512-8AFYDSOYWebJYLyJi3fyjl6CqMEG/UVworjiyK1r573I56kb3e879sCJLGvR3merj+fAdPpVplXKQZv+ey6CgQ==", - "dev": true, - "requires": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - } - }, "postcss-overflow-shorthand": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz", @@ -15653,21 +54593,6 @@ "postcss-selector-not": "^4.0.0" }, "dependencies": { - "autoprefixer": { - "version": "9.8.8", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", - "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", - "dev": true, - "requires": { - "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" - } - }, "picocolors": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", @@ -15727,40 +54652,20 @@ "postcss-selector-parser": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", - "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", - "dev": true, - "requires": { - "cssesc": "^2.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "postcss-reduce-initial": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.0.1.tgz", - "integrity": "sha512-zlCZPKLLTMAqA3ZWH57HlbCjkD55LX9dsRyxlls+wfuRfqCi5mSlZVan0heX5cHr154Dq9AfbH70LyhrSAezJw==", - "dev": true, - "requires": { - "browserslist": "^4.16.0", - "caniuse-api": "^3.0.0" - } - }, - "postcss-reduce-transforms": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.1.tgz", - "integrity": "sha512-a//FjoPeFkRuAguPscTVmRQUODP+f3ke2HqFNgGPwdYnpeC29RZdCBvGRGTsKpMURb/I3p6jdKoBQ2zI+9Q7kA==", - "dev": true, - "requires": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "dev": true, + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, "postcss-replace-overflow-wrap": { @@ -15980,33 +54885,6 @@ "util-deprecate": "^1.0.2" } }, - "postcss-svgo": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.0.2.tgz", - "integrity": "sha512-YzQuFLZu3U3aheizD+B1joQ94vzPfE6BNUcSYuceNxlVnKKsOtdo6hL9/zyC168Q8EwfLSgaDSalsUGa9f2C0A==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.1.0", - "svgo": "^2.3.0" - } - }, - "postcss-syntax": { - "version": "0.36.2", - "resolved": "https://registry.npmjs.org/postcss-syntax/-/postcss-syntax-0.36.2.tgz", - "integrity": "sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==", - "dev": true - }, - "postcss-unique-selectors": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.0.1.tgz", - "integrity": "sha512-gwi1NhHV4FMmPn+qwBNuot1sG1t2OmacLQ/AX29lzyggnjd+MnVD5uqQmpXO3J17KGL2WAxQruj1qTd3H0gG/w==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.2", - "postcss-selector-parser": "^6.0.5", - "uniqs": "^2.0.0" - } - }, "postcss-value-parser": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", @@ -16031,10 +54909,11 @@ "dev": true }, "prettier": { - "version": "npm:wp-prettier@2.2.1-beta-1", - "resolved": "https://registry.npmjs.org/wp-prettier/-/wp-prettier-2.2.1-beta-1.tgz", - "integrity": "sha512-+JHkqs9LC/JPp51yy1hzs3lQ7qeuWCwOcSzpQNeeY/G7oSpnF61vxt7hRh87zNRTr6ob2ndy0W8rVzhgrcA+Gw==", - "dev": true + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.4.1.tgz", + "integrity": "sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==", + "dev": true, + "peer": true }, "prettier-linter-helpers": { "version": "1.0.0", @@ -16057,12 +54936,6 @@ "react-is": "^17.0.1" }, "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -16086,12 +54959,6 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true - }, - "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true } } }, @@ -16125,6 +54992,13 @@ "loose-envify": "^1.4.0", "object-assign": "^4.1.1", "react-is": "^16.8.1" + }, + "dependencies": { + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + } } }, "prop-types-exact": { @@ -16171,11 +55045,12 @@ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, - "puppeteer-core": { + "puppeteer": { "version": "10.4.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-10.4.0.tgz", - "integrity": "sha512-KU8zyb7AIOqNjLCN3wkrFXxh+EVaG+zrs2P03ATNjc3iwSxHsu5/EvZiREpQ/IJiT9xfQbDVgKcsvRuzLCxglQ==", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-10.4.0.tgz", + "integrity": "sha512-2cP8mBoqnu5gzAVpbZ0fRaobBWZM8GEUF4I1F6WbgHrKV/rz7SX8PG2wMymZgD0wo0UBlg2FBPNxlF/xlqW6+w==", "dev": true, + "peer": true, "requires": { "debug": "4.3.1", "devtools-protocol": "0.0.901419", @@ -16196,48 +55071,88 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, + "peer": true, "requires": { "ms": "2.1.2" } }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "dev": true, + "peer": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, + "peer": true, "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "find-up": "^4.0.0" } }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "progress": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.1.tgz", + "integrity": "sha512-OE+a6vzqazc+K6LxJrX5UPyKFvGnL5CYmq2jFGNIBWHpc4QyE49/YOumcrpQFJpfejmvRtbJzgO1zPmMCqlbBg==", + "dev": true, + "peer": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, + "peer": true, "requires": { - "p-locate": "^4.1.0" + "glob": "^7.1.3" } }, - "node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", - "dev": true - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "dev": true, + "peer": true, + "requires": {} + } + } + }, + "puppeteer-core": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-10.4.0.tgz", + "integrity": "sha512-KU8zyb7AIOqNjLCN3wkrFXxh+EVaG+zrs2P03ATNjc3iwSxHsu5/EvZiREpQ/IJiT9xfQbDVgKcsvRuzLCxglQ==", + "dev": true, + "requires": { + "debug": "4.3.1", + "devtools-protocol": "0.0.901419", + "extract-zip": "2.0.1", + "https-proxy-agent": "5.0.0", + "node-fetch": "2.6.1", + "pkg-dir": "4.2.0", + "progress": "2.0.1", + "proxy-from-env": "1.1.0", + "rimraf": "3.0.2", + "tar-fs": "2.0.0", + "unbzip2-stream": "1.3.3", + "ws": "7.4.6" + }, + "dependencies": { + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, "requires": { - "p-limit": "^2.2.0" + "ms": "2.1.2" } }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", "dev": true }, "pkg-dir": { @@ -16268,7 +55183,8 @@ "version": "7.4.6", "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "dev": true + "dev": true, + "requires": {} } } }, @@ -16396,40 +55312,11 @@ "object-assign": "^4.1.0" } }, - "react-autosize-textarea": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/react-autosize-textarea/-/react-autosize-textarea-7.1.0.tgz", - "integrity": "sha512-BHpjCDkuOlllZn3nLazY2F8oYO1tS2jHnWhcjTWQdcKiiMU6gHLNt/fzmqMSyerR0eTdKtfSIqtSeTtghNwS+g==", - "requires": { - "autosize": "^4.0.2", - "line-height": "^0.3.1", - "prop-types": "^15.5.6" - } - }, "react-colorful": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/react-colorful/-/react-colorful-5.5.0.tgz", - "integrity": "sha512-BuzrlrM0ylg7coPkXOrRqlf2BgHLw5L44sybbr9Lg4xy7w9e5N7fGYbojOO0s8J0nvrM3PERN2rVFkvSa24lnQ==" - }, - "react-dates": { - "version": "17.2.0", - "resolved": "https://registry.npmjs.org/react-dates/-/react-dates-17.2.0.tgz", - "integrity": "sha512-RDlerU8DdRRrlYS0MQ7Z9igPWABGLDwz6+ykBNff67RM3Sset2TDqeuOr+R5o00Ggn5U47GeLsGcSDxlZd9cHw==", - "requires": { - "airbnb-prop-types": "^2.10.0", - "consolidated-events": "^1.1.1 || ^2.0.0", - "is-touch-device": "^1.0.1", - "lodash": "^4.1.1", - "object.assign": "^4.1.0", - "object.values": "^1.0.4", - "prop-types": "^15.6.1", - "react-addons-shallow-compare": "^15.6.2", - "react-moment-proptypes": "^1.6.0", - "react-outside-click-handler": "^1.2.0", - "react-portal": "^4.1.5", - "react-with-styles": "^3.2.0", - "react-with-styles-interface-css": "^4.0.2" - } + "integrity": "sha512-BuzrlrM0ylg7coPkXOrRqlf2BgHLw5L44sybbr9Lg4xy7w9e5N7fGYbojOO0s8J0nvrM3PERN2rVFkvSa24lnQ==", + "requires": {} }, "react-dom": { "version": "17.0.2", @@ -16458,9 +55345,9 @@ } }, "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" }, "react-moment-proptypes": { "version": "1.8.1", @@ -16470,30 +55357,11 @@ "moment": ">=1.6.0" } }, - "react-outside-click-handler": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/react-outside-click-handler/-/react-outside-click-handler-1.3.0.tgz", - "integrity": "sha512-Te/7zFU0oHpAnctl//pP3hEAeobfeHMyygHB8MnjP6sX5OR8KHT1G3jmLsV3U9RnIYo+Yn+peJYWu+D5tUS8qQ==", - "requires": { - "airbnb-prop-types": "^2.15.0", - "consolidated-events": "^1.1.1 || ^2.0.0", - "document.contains": "^1.0.1", - "object.values": "^1.1.0", - "prop-types": "^15.7.2" - } - }, - "react-portal": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/react-portal/-/react-portal-4.2.1.tgz", - "integrity": "sha512-fE9kOBagwmTXZ3YGRYb4gcMy+kSA+yLO0xnPankjRlfBv4uCpFXqKPfkpsGQQR15wkZ9EssnvTOl1yMzbkxhPQ==", - "requires": { - "prop-types": "^15.5.8" - } - }, "react-resize-aware": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/react-resize-aware/-/react-resize-aware-3.1.1.tgz", - "integrity": "sha512-M8IyVLBN8D6tEUss+bxQlWte3ZYtNEGhg7rBxtCVG8yEBjUlZwUo5EFLq6tnvTZXcgAbCLjsQn+NCoTJKumRYg==" + "integrity": "sha512-M8IyVLBN8D6tEUss+bxQlWte3ZYtNEGhg7rBxtCVG8yEBjUlZwUo5EFLq6tnvTZXcgAbCLjsQn+NCoTJKumRYg==", + "requires": {} }, "react-shallow-renderer": { "version": "16.14.1", @@ -16515,55 +55383,13 @@ "react-is": "^17.0.2", "react-shallow-renderer": "^16.13.1", "scheduler": "^0.20.2" - }, - "dependencies": { - "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - } } }, "react-use-gesture": { "version": "9.1.3", "resolved": "https://registry.npmjs.org/react-use-gesture/-/react-use-gesture-9.1.3.tgz", - "integrity": "sha512-CdqA2SmS/fj3kkS2W8ZU8wjTbVBAIwDWaRprX7OKaj7HlGwBasGEFggmk5qNklknqk9zK/h8D355bEJFTpqEMg==" - }, - "react-with-direction": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/react-with-direction/-/react-with-direction-1.4.0.tgz", - "integrity": "sha512-ybHNPiAmaJpoWwugwqry9Hd1Irl2hnNXlo/2SXQBwbLn/jGMauMS2y9jw+ydyX5V9ICryCqObNSthNt5R94xpg==", - "requires": { - "airbnb-prop-types": "^2.16.0", - "brcast": "^2.0.2", - "deepmerge": "^1.5.2", - "direction": "^1.0.4", - "hoist-non-react-statics": "^3.3.2", - "object.assign": "^4.1.2", - "object.values": "^1.1.5", - "prop-types": "^15.7.2" - } - }, - "react-with-styles": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/react-with-styles/-/react-with-styles-3.2.3.tgz", - "integrity": "sha512-MTI1UOvMHABRLj5M4WpODfwnveHaip6X7QUMI2x6zovinJiBXxzhA9AJP7MZNaKqg1JRFtHPXZdroUC8KcXwlQ==", - "requires": { - "hoist-non-react-statics": "^3.2.1", - "object.assign": "^4.1.0", - "prop-types": "^15.6.2", - "react-with-direction": "^1.3.0" - } - }, - "react-with-styles-interface-css": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/react-with-styles-interface-css/-/react-with-styles-interface-css-4.0.3.tgz", - "integrity": "sha512-wE43PIyjal2dexxyyx4Lhbcb+E42amoYPnkunRZkb9WTA+Z+9LagbyxwsI352NqMdFmghR0opg29dzDO4/YXbw==", - "requires": { - "array.prototype.flat": "^1.2.1", - "global-cache": "^1.2.1" - } + "integrity": "sha512-CdqA2SmS/fj3kkS2W8ZU8wjTbVBAIwDWaRprX7OKaj7HlGwBasGEFggmk5qNklknqk9zK/h8D355bEJFTpqEMg==", + "requires": {} }, "read-cache": { "version": "1.0.0", @@ -16599,63 +55425,104 @@ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, "requires": { - "pify": "^3.0.0" + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" } - } - } - }, - "read-pkg-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", - "dev": true, - "requires": { - "find-up": "^2.0.0", - "read-pkg": "^3.0.0" - }, - "dependencies": { - "find-up": { + }, + "path-exists": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, "requires": { - "locate-path": "^2.0.0" + "pinkie-promise": "^2.0.0" } }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", "dev": true, "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", "dev": true, "requires": { - "p-try": "^1.0.0" + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" } }, - "p-locate": { + "strip-bom": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { - "p-limit": "^1.1.0" + "is-utf8": "^0.2.0" } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true } } }, @@ -16702,7 +55569,8 @@ "reakit-utils": { "version": "0.15.2", "resolved": "https://registry.npmjs.org/reakit-utils/-/reakit-utils-0.15.2.tgz", - "integrity": "sha512-i/RYkq+W6hvfFmXw5QW7zvfJJT/K8a4qZ0hjA79T61JAFPGt23DsfxwyBbyK91GZrJ9HMrXFVXWMovsKBc1qEQ==" + "integrity": "sha512-i/RYkq+W6hvfFmXw5QW7zvfJJT/K8a4qZ0hjA79T61JAFPGt23DsfxwyBbyK91GZrJ9HMrXFVXWMovsKBc1qEQ==", + "requires": {} }, "reakit-warning": { "version": "0.6.2", @@ -16732,9 +55600,9 @@ } }, "redux": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/redux/-/redux-4.1.1.tgz", - "integrity": "sha512-hZQZdDEM25UY2P493kPYuKqviVwZ58lEmGQNeQ+gXa+U0gYPUBf7NKYazbe3m+bs/DzM/ahN12DbF+NG8i0CWw==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.1.2.tgz", + "integrity": "sha512-SH8PglcebESbd/shgf6mii6EIoRM0zrQyjcuQ+ojmfxjTtE0z9Y8pa62iA/OJ58qjP6j27uyW4kUF4jl/jd6sw==", "requires": { "@babel/runtime": "^7.9.2" } @@ -16946,14 +55814,6 @@ "dev": true, "requires": { "resolve-from": "^5.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - } } }, "resolve-dir": { @@ -16964,12 +55824,24 @@ "requires": { "expand-tilde": "^1.2.2", "global-modules": "^0.2.3" + }, + "dependencies": { + "expand-tilde": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", + "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=", + "dev": true, + "requires": { + "os-homedir": "^1.0.1" + } + } } }, "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true }, "resolve-url": { "version": "0.2.1", @@ -16977,6 +55849,13 @@ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", "dev": true }, + "resolve.exports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", + "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", + "dev": true, + "peer": true + }, "restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", @@ -17054,6 +55933,15 @@ "strip-json-comments": "^2.0.0" }, "dependencies": { + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, "postcss": { "version": "6.0.23", "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", @@ -17127,9 +56015,9 @@ } }, "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "safe-json-parse": { "version": "1.0.1", @@ -17207,6 +56095,34 @@ } } }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "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" + } + }, "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", @@ -17230,6 +56146,15 @@ } } }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", @@ -17250,6 +56175,18 @@ } } }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -17280,6 +56217,12 @@ "remove-trailing-separator": "^1.0.1" } }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, "to-regex-range": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", @@ -17293,18 +56236,18 @@ } }, "sass": { - "version": "1.43.2", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.43.2.tgz", - "integrity": "sha512-DncYhjl3wBaPMMJR0kIUaH3sF536rVrOcqqVGmTZHQRRzj7LQlyGV7Mb8aCKFyILMr5VsPHwRYtyKpnKYlmQSQ==", + "version": "1.43.4", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.43.4.tgz", + "integrity": "sha512-/ptG7KE9lxpGSYiXn7Ar+lKOv37xfWsZRtFYal2QHNigyVQDx685VFT/h7ejVr+R8w7H4tmUgtulsKl5YpveOg==", "dev": true, "requires": { "chokidar": ">=3.0.0 <4.0.0" } }, "sass-loader": { - "version": "12.2.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.2.0.tgz", - "integrity": "sha512-qducnp5vSV+8A8MZxuH6zV0MUg4MOVISScl2wDTCAn/2WJX+9Auxh92O/rnkdR2bvi5QxZBafnzkzRrWGZvm7w==", + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.3.0.tgz", + "integrity": "sha512-6l9qwhdOb7qSrtOu96QQ81LVl8v6Dp9j1w3akOm0aWHyrTYtagDt5+kS32N4yq4hHk3M+rdqoRMH+lIdqvW6HA==", "dev": true, "requires": { "klona": "^2.0.4", @@ -17354,8 +56297,7 @@ "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" }, "semver-compare": { "version": "1.0.0", @@ -17429,51 +56371,186 @@ "requires": { "is-buffer": "^1.0.2" } - }, - "lazy-cache": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", - "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=", - "dev": true + }, + "lazy-cache": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", + "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=", + "dev": true + } + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shell-quote": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", + "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", + "dev": true + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true, + "optional": true + }, + "showdown": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/showdown/-/showdown-1.9.1.tgz", + "integrity": "sha512-9cGuS382HcvExtf5AHk7Cb4pAeQQ+h0eTr33V1mu+crYWV4KvWAw6el92bDrqGEk5d46Ai/fhbEUwqJ/mTCNEA==", + "requires": { + "yargs": "^14.2" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "yargs": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz", + "integrity": "sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==", + "requires": { + "cliui": "^5.0.0", + "decamelize": "^1.2.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": "^15.0.1" + } + }, + "yargs-parser": { + "version": "15.0.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.3.tgz", + "integrity": "sha512-/MVEVjTXy/cGAjdtQf8dW3V9b97bPN7rNn8ETj6BmAQL7ibC7O1Q9SPJbGjgh3SlwoBNXMzj/ZGIj8mBgl12YA==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } } } }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "shell-quote": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", - "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", - "dev": true - }, - "shellwords": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", - "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", - "dev": true, - "optional": true - }, - "showdown": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/showdown/-/showdown-1.9.1.tgz", - "integrity": "sha512-9cGuS382HcvExtf5AHk7Cb4pAeQQ+h0eTr33V1mu+crYWV4KvWAw6el92bDrqGEk5d46Ai/fhbEUwqJ/mTCNEA==", - "requires": { - "yargs": "^14.2" - } - }, "side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -17496,9 +56573,9 @@ "integrity": "sha512-C2WEK/Z3HoSFbYq8tI7ni3eOo/NneSPRoPpcM7WdLjFOArFuyXEjAoCdOC3DgMfRyziZQ1hCNR4mrNdWEvD0og==" }, "sirv": { - "version": "1.0.17", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.17.tgz", - "integrity": "sha512-qx9go5yraB7ekT7bCMqUHJ5jEaOC/GXBxUWv+jeWnb7WzHUFdcQPGWk7YmAwFBaQBrogpuSqd/azbC2lZRqqmw==", + "version": "1.0.18", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.18.tgz", + "integrity": "sha512-f2AOPogZmXgJ9Ma2M22ZEhc1dNtRIzcEkiflMFeVTRq+OViOZMvH1IPMVOwrKaxpSaHioBJiDR0SluRqGa7atA==", "dev": true, "requires": { "@polka/url": "^1.0.0-next.20", @@ -17519,9 +56596,9 @@ "dev": true }, "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", "dev": true, "requires": { "ansi-styles": "^4.0.0", @@ -17552,12 +56629,6 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true } } }, @@ -17604,6 +56675,43 @@ "is-extendable": "^0.1.0" } }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -17631,35 +56739,6 @@ "requires": { "is-descriptor": "^1.0.0" } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } } } }, @@ -17670,17 +56749,6 @@ "dev": true, "requires": { "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } } }, "source-list-map": { @@ -17853,6 +56921,43 @@ "requires": { "is-descriptor": "^0.1.0" } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } } } }, @@ -17863,12 +56968,21 @@ "dev": true, "requires": { "ci-info": "^3.1.1" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" }, "dependencies": { - "ci-info": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", - "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true } } @@ -17887,23 +57001,6 @@ "requires": { "char-regex": "^1.0.2", "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } } }, "string-template": { @@ -17913,13 +57010,36 @@ "dev": true }, "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, "requires": { - "emoji-regex": "^7.0.1", "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } } }, "string.prototype.matchall": { @@ -17978,15 +57098,6 @@ "define-properties": "^1.1.3" } }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - }, "stringify-object": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", @@ -17996,28 +57107,21 @@ "get-own-enumerable-property-symbols": "^3.0.0", "is-obj": "^1.0.1", "is-regexp": "^1.0.0" - }, - "dependencies": { - "is-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", - "dev": true - } } }, "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "ansi-regex": "^5.0.1" } }, "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true }, "strip-eof": { @@ -18079,16 +57183,6 @@ "tslib": "^2.1.0" } }, - "stylehacks": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.0.1.tgz", - "integrity": "sha512-Es0rVnHIqbWzveU1b24kbw92HsebBepxfcqe5iix7t9j0PQqhs0IxXVXv0pY2Bxa08CgMkzD6OWql7kbGOuEdA==", - "dev": true, - "requires": { - "browserslist": "^4.16.0", - "postcss-selector-parser": "^6.0.4" - } - }, "stylelint": { "version": "13.13.1", "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.13.1.tgz", @@ -18145,11 +57239,24 @@ "write-file-atomic": "^3.0.3" }, "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true + "@stylelint/postcss-css-in-js": { + "version": "0.37.2", + "resolved": "https://registry.npmjs.org/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.2.tgz", + "integrity": "sha512-nEhsFoJurt8oUmieT8qy4nk81WRHmJynmVwn/Vts08PL9fhgIsMhk1GId5yAN643OzqEEb5S/6At2TZW7pqPDA==", + "dev": true, + "requires": { + "@babel/core": ">=7.9.0" + } + }, + "@stylelint/postcss-markdown": { + "version": "0.36.2", + "resolved": "https://registry.npmjs.org/@stylelint/postcss-markdown/-/postcss-markdown-0.36.2.tgz", + "integrity": "sha512-2kGbqUVJUGE8dM+bMzXG/PYUWKkjLIkRLWNh39OaADkiabDRdw8ATFCgbMz5xdIcvwspPAluSL7uY+ZiTWdWmQ==", + "dev": true, + "requires": { + "remark": "^13.0.0", + "unist-util-find-all-after": "^3.0.2" + } }, "ansi-styles": { "version": "4.3.0", @@ -18160,21 +57267,6 @@ "color-convert": "^2.0.1" } }, - "autoprefixer": { - "version": "9.8.8", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", - "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", - "dev": true, - "requires": { - "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" - } - }, "balanced-match": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", @@ -18197,26 +57289,62 @@ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "color-name": "~1.1.4" + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + } + } + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "requires": { + "domelementtype": "1" } }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", "dev": true, "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" + "dom-serializer": "0", + "domelementtype": "1" } }, "emoji-regex": { @@ -18225,15 +57353,11 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true }, "global-modules": { "version": "2.0.0", @@ -18270,19 +57394,33 @@ "lru-cache": "^6.0.0" } }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "requires": { - "p-locate": "^4.1.0" + "yallist": "^4.0.0" } }, "meow": { @@ -18317,21 +57455,6 @@ "validate-npm-package-license": "^3.0.1" } }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, "picocolors": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", @@ -18348,6 +57471,22 @@ "source-map": "^0.6.1" } }, + "postcss-html": { + "version": "0.36.0", + "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-0.36.0.tgz", + "integrity": "sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw==", + "dev": true, + "requires": { + "htmlparser2": "^3.10.0" + } + }, + "postcss-syntax": { + "version": "0.36.2", + "resolved": "https://registry.npmjs.org/postcss-syntax/-/postcss-syntax-0.36.2.tgz", + "integrity": "sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==", + "dev": true, + "requires": {} + }, "read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", @@ -18411,12 +57550,6 @@ } } }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -18443,15 +57576,6 @@ "strip-ansi": "^6.0.1" } }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -18467,6 +57591,12 @@ "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", "dev": true }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "yargs-parser": { "version": "20.2.9", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", @@ -18479,7 +57609,8 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-3.0.0.tgz", "integrity": "sha512-F6yTRuc06xr1h5Qw/ykb2LuFynJ2IxkKfCMf+1xqPffkxh0S09Zc902XCffcsw/XMFq/OzQ1w54fLIDtmRNHnQ==", - "dev": true + "dev": true, + "requires": {} }, "stylelint-config-recommended-scss": { "version": "4.3.0", @@ -18494,7 +57625,8 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-5.0.0.tgz", "integrity": "sha512-c8aubuARSu5A3vEHLBeOSJt1udOdS+1iue7BmJDTSXoCBmfEQmmWX+59vYIj3NQdJBY6a/QRv1ozVFpaB9jaqA==", - "dev": true + "dev": true, + "requires": {} } } }, @@ -18616,84 +57748,6 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true - }, - "css-select": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", - "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^5.0.0", - "domhandler": "^4.2.0", - "domutils": "^2.6.0", - "nth-check": "^2.0.0" - } - }, - "css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dev": true, - "requires": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - } - }, - "css-what": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", - "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", - "dev": true - }, - "dom-serializer": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", - "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - } - }, - "domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", - "dev": true - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - }, - "mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "dev": true - }, - "nth-check": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", - "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", - "dev": true, - "requires": { - "boolbase": "^1.0.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true } } }, @@ -18729,10 +57783,28 @@ "uri-js": "^4.2.2" } }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "emoji-regex": { @@ -18741,18 +57813,23 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, "json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, "string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -18763,15 +57840,6 @@ "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } } } }, @@ -18799,6 +57867,17 @@ "mkdirp": "^0.5.1", "pump": "^3.0.0", "tar-stream": "^2.0.0" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + } } }, "tar-stream": { @@ -18822,6 +57901,23 @@ "requires": { "ansi-escapes": "^4.2.1", "supports-hyperlinks": "^2.0.0" + }, + "dependencies": { + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + }, + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + } } }, "terser": { @@ -18835,6 +57931,12 @@ "source-map-support": "~0.5.20" }, "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, "source-map": { "version": "0.7.3", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", @@ -18857,32 +57959,6 @@ "terser": "^5.7.2" }, "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "jest-worker": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.2.5.tgz", - "integrity": "sha512-HTjEPZtcNKZ4LnhSp02NEH4vE+5OpJ0EsOWYvGQpHgUMLngydESAAMH5Wd/asPf29+XUDQZszxpLg1BkIIA2aw==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - } - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, "schema-utils": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", @@ -18899,15 +57975,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } } } }, @@ -18929,10 +57996,11 @@ "dev": true }, "throat": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", - "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", - "dev": true + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", + "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", + "dev": true, + "peer": true }, "through": { "version": "2.3.8", @@ -19008,17 +58076,6 @@ "dev": true, "requires": { "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } } }, "to-regex": { @@ -19060,10 +58117,13 @@ } }, "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", - "dev": true + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "requires": { + "punycode": "^2.1.1" + } }, "traverse": { "version": "0.6.6", @@ -19125,6 +58185,12 @@ "requires": { "minimist": "^1.2.0" } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true } } }, @@ -19177,9 +58243,9 @@ "dev": true }, "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", "dev": true }, "typedarray-to-buffer": { @@ -19191,6 +58257,13 @@ "is-typedarray": "^1.0.0" } }, + "typescript": { + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", + "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", + "dev": true, + "peer": true + }, "uc.micro": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", @@ -19444,7 +58517,8 @@ "use-memo-one": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/use-memo-one/-/use-memo-one-1.1.2.tgz", - "integrity": "sha512-u2qFKtxLsia/r8qG0ZKkbytbztzRb317XCkT7yP8wxL0tZ/CzK2G+WWie5vWvpyeP7+YoPIwbJoIHJ4Ba4k0oQ==" + "integrity": "sha512-u2qFKtxLsia/r8qG0ZKkbytbztzRb317XCkT7yP8wxL0tZ/CzK2G+WWie5vWvpyeP7+YoPIwbJoIHJ4Ba4k0oQ==", + "requires": {} }, "util-deprecate": { "version": "1.0.2", @@ -19476,10 +58550,11 @@ "dev": true }, "v8-to-istanbul": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz", - "integrity": "sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.0.tgz", + "integrity": "sha512-/PRhfd8aTNp9Ggr62HPzXg2XasNFGy5PBt0Rp04du7/8GNNSgxFL6WBTkgMKSL9bFjH+8kKEG3f37FmxiTqUUA==", "dev": true, + "peer": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.1", "convert-source-map": "^1.6.0", @@ -19490,7 +58565,8 @@ "version": "0.7.3", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true + "dev": true, + "peer": true } } }, @@ -19600,12 +58676,12 @@ } }, "walker": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", - "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", "dev": true, "requires": { - "makeerror": "1.0.x" + "makeerror": "1.0.12" } }, "watchpack": { @@ -19619,15 +58695,15 @@ } }, "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", "dev": true }, "webpack": { - "version": "5.58.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.58.2.tgz", - "integrity": "sha512-3S6e9Vo1W2ijk4F4PPWRIu6D/uGgqaPmqw+av3W3jLDujuNkdxX5h5c+RQ6GkjVR+WwIPOfgY8av+j5j4tMqJw==", + "version": "5.60.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.60.0.tgz", + "integrity": "sha512-OL5GDYi2dKxnwJPSOg2tODgzDxAffN0osgWkZaBo/l3ikCxDFP+tuJT3uF7GyBE3SDBpKML/+a8EobyWAQO3DQ==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.0", @@ -19662,6 +58738,13 @@ "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==", "dev": true }, + "acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "dev": true, + "requires": {} + }, "schema-utils": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", @@ -19768,9 +58851,9 @@ } }, "webpack-cli": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.0.tgz", - "integrity": "sha512-n/jZZBMzVEl4PYIBs+auy2WI0WTQ74EnJDiyD98O2JZY6IVIHJNitkYp/uTXOviIOMfgzrNvC9foKv/8o8KSZw==", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.1.tgz", + "integrity": "sha512-JYRFVuyFpzDxMDB+v/nanUdQYcZtqFPGzmlW4s+UkPMFhSpfRNmf1z4AwYcHJVdvEFAM7FFCQdNTpsBYhDLusQ==", "dev": true, "requires": { "@discoveryjs/json-ext": "^0.5.0", @@ -19784,100 +58867,26 @@ "import-local": "^3.0.2", "interpret": "^2.2.0", "rechoir": "^0.7.0", - "v8-compile-cache": "^2.2.0", "webpack-merge": "^5.7.3" }, "dependencies": { + "colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "dev": true + }, "commander": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, - "human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } } } }, @@ -19923,6 +58932,12 @@ "isobject": "^3.0.1" } }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, "shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", @@ -19968,11 +58983,14 @@ "wrap-ansi": "^7.0.0" }, "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } }, "ansi-styles": { "version": "4.3.0", @@ -20008,12 +59026,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -20035,32 +59047,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -20070,16 +59056,11 @@ "has-flag": "^4.0.0" } }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true } } }, @@ -20127,13 +59108,14 @@ "dev": true }, "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", "dev": true, "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" } }, "which": { @@ -20186,13 +59168,57 @@ } }, "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + } } }, "wrappy": { @@ -20217,7 +59243,8 @@ "version": "7.5.5", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz", "integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==", - "dev": true + "dev": true, + "requires": {} }, "xml-name-validator": { "version": "3.0.0", @@ -20232,14 +59259,16 @@ "dev": true }, "y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "peer": true }, "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", "dev": true }, "yaml": { @@ -20248,30 +59277,65 @@ "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" }, "yargs": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz", - "integrity": "sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "peer": true, "requires": { - "cliui": "^5.0.0", - "decamelize": "^1.2.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "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": "^15.0.1" + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "dependencies": { + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "peer": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "peer": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "peer": true + } } }, "yargs-parser": { - "version": "15.0.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.3.tgz", - "integrity": "sha512-/MVEVjTXy/cGAjdtQf8dW3V9b97bPN7rNn8ETj6BmAQL7ibC7O1Q9SPJbGjgh3SlwoBNXMzj/ZGIj8mBgl12YA==", + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + } } }, "yauzl": { From a266f25ec733a3846725e96fe38efbed34cb361e Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 2 Nov 2021 10:54:18 -0700 Subject: [PATCH 071/105] Revert "Update package-lock.json" This reverts commit 2fbad0ea8cc0b38f2fa80a20c5731fd567b2c5b5. --- package-lock.json | 58790 ++++++++------------------------------------ 1 file changed, 9863 insertions(+), 48927 deletions(-) diff --git a/package-lock.json b/package-lock.json index a66b1673017..603e862207d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,152 +1,58 @@ { "name": "amp-wp", - "lockfileVersion": 2, "requires": true, - "packages": { - "": { - "name": "amp-wp", - "license": "GPL-2.0-or-later", - "dependencies": { - "@wordpress/api-fetch": "5.2.3", - "@wordpress/autop": "3.2.2", - "@wordpress/components": "18.0.0", - "@wordpress/compose": "5.0.3", - "@wordpress/date": "4.2.2", - "@wordpress/dom-ready": "3.2.2", - "@wordpress/editor": "12.0.0", - "@wordpress/element": "4.0.2", - "@wordpress/escape-html": "2.2.2", - "@wordpress/html-entities": "3.2.2", - "@wordpress/i18n": "4.2.3", - "@wordpress/icons": "6.0.0", - "@wordpress/is-shallow-equal": "4.2.0", - "@wordpress/url": "3.2.3", - "classnames": "2.3.1", - "clipboard": "2.0.8", - "prop-types": "15.7.2", - "react": "17.0.2", - "react-dom": "17.0.2", - "uuid": "8.3.2" - }, - "devDependencies": { - "@actions/github": "5.0.0", - "@babel/core": "7.15.8", - "@babel/plugin-proposal-class-properties": "7.14.5", - "@wordpress/babel-preset-default": "6.3.3", - "@wordpress/block-editor": "7.0.3", - "@wordpress/blocks": "11.1.1", - "@wordpress/browserslist-config": "4.1.0", - "@wordpress/data": "6.1.1", - "@wordpress/dependency-extraction-webpack-plugin": "3.2.1", - "@wordpress/e2e-test-utils": "5.4.4", - "@wordpress/edit-post": "5.0.3", - "@wordpress/eslint-plugin": "9.2.0", - "@wordpress/hooks": "3.2.1", - "@wordpress/jest-puppeteer-axe": "3.1.0", - "@wordpress/plugins": "4.0.3", - "@wordpress/scripts": "18.1.0", - "axios": "0.21.1", - "babel-plugin-inline-react-svg": "2.0.1", - "babel-plugin-transform-react-remove-prop-types": "0.4.24", - "child_process": "1.0.2", - "copy-webpack-plugin": "9.0.1", - "cross-env": "7.0.3", - "css-minimizer-webpack-plugin": "3.1.1", - "enzyme": "3.11.0", - "eslint": "7.32.0", - "eslint-plugin-eslint-comments": "3.2.0", - "eslint-plugin-import": "2.24.2", - "eslint-plugin-jest": "24.5.0", - "eslint-plugin-jsdoc": "36.1.1", - "eslint-plugin-react": "7.26.1", - "eslint-plugin-react-hooks": "4.2.0", - "fs": "0.0.1-security", - "grunt": "1.4.1", - "grunt-contrib-clean": "2.0.0", - "grunt-contrib-copy": "1.0.0", - "grunt-shell": "3.0.1", - "grunt-wp-deploy": "2.1.2", - "jest-silent-reporter": "0.5.0", - "lint-staged": "11.2.3", - "lodash": "4.17.21", - "moment": "2.29.1", - "npm-run-all": "4.1.5", - "postcss": "8.3.9", - "postcss-import": "14.0.2", - "postcss-loader": "4.3.0", - "postcss-nested": "5.0.1", - "postcss-preset-env": "6.7.0", - "react-test-renderer": "17.0.2", - "rtlcss-webpack-plugin": "4.0.6", - "svgo": "2.7.0", - "webpackbar": "5.0.0-3", - "wporg-api-client": "1.0.1" - }, - "engines": { - "node": ">= 14", - "npm": ">= 6.14" - } - }, - "node_modules/@actions/github": { + "lockfileVersion": 1, + "dependencies": { + "@actions/github": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/@actions/github/-/github-5.0.0.tgz", "integrity": "sha512-QvE9eAAfEsS+yOOk0cylLBIO/d6WyWIOvsxxzdrPFaud39G6BOkUwScXZn1iBzQzHyu9SBkkLSWlohDWdsasAQ==", "dev": true, - "dependencies": { + "requires": { "@actions/http-client": "^1.0.11", "@octokit/core": "^3.4.0", "@octokit/plugin-paginate-rest": "^2.13.3", "@octokit/plugin-rest-endpoint-methods": "^5.1.1" } }, - "node_modules/@actions/http-client": { + "@actions/http-client": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-1.0.11.tgz", "integrity": "sha512-VRYHGQV1rqnROJqdMvGUbY/Kn8vriQe/F9HR2AlYHzmKuM/p3kjNuXhmdBfcVgsvRWTz5C5XW5xvndZrVBuAYg==", "dev": true, - "dependencies": { + "requires": { "tunnel": "0.0.6" } }, - "node_modules/@axe-core/puppeteer": { + "@axe-core/puppeteer": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/@axe-core/puppeteer/-/puppeteer-4.3.1.tgz", "integrity": "sha512-ojZzd2koeMFj4Crz842g54gU9MEosZA2Vzq8zoRBsT7lQ+EwjASNUfNKQHDhJaO53oEMC7xZv9Y2bhDrAhJRlg==", "dev": true, - "dependencies": { + "requires": { "axe-core": "^4.3.3" - }, - "engines": { - "node": ">=6.4.0" - }, - "peerDependencies": { - "puppeteer": ">=1.10.0 <= 10" } }, - "node_modules/@babel/code-frame": { + "@babel/code-frame": { "version": "7.15.8", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", - "dependencies": { + "requires": { "@babel/highlight": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" } }, - "node_modules/@babel/compat-data": { + "@babel/compat-data": { "version": "7.15.0", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==", - "engines": { - "node": ">=6.9.0" - } + "dev": true }, - "node_modules/@babel/core": { + "@babel/core": { "version": "7.15.8", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.8.tgz", "integrity": "sha512-3UG9dsxvYBMYwRv+gS41WKHno4K60/9GPy1CJaH6xy3Elq8CTtvtjT5R5jmNhXfCYLX2mTw+7/aq5ak/gOE0og==", - "dependencies": { + "dev": true, + "requires": { "@babel/code-frame": "^7.15.8", "@babel/generator": "^7.15.8", "@babel/helper-compilation-targets": "^7.15.4", @@ -162,112 +68,80 @@ "json5": "^2.1.2", "semver": "^6.3.0", "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/generator": { + "@babel/generator": { "version": "7.15.8", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz", "integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==", - "dependencies": { + "dev": true, + "requires": { "@babel/types": "^7.15.6", "jsesc": "^2.5.1", "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" } }, - "node_modules/@babel/helper-annotate-as-pure": { + "@babel/helper-annotate-as-pure": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz", "integrity": "sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA==", "dev": true, - "dependencies": { + "requires": { "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" } }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "@babel/helper-builder-binary-assignment-operator-visitor": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.15.4.tgz", "integrity": "sha512-P8o7JP2Mzi0SdC6eWr1zF+AEYvrsZa7GSY1lTayjF5XJhVH0kjLYUZPvTMflP7tBgZoe9gIhTa60QwFpqh/E0Q==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-explode-assignable-expression": "^7.15.4", "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" } }, - "node_modules/@babel/helper-compilation-targets": { + "@babel/helper-compilation-targets": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz", "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==", - "dependencies": { + "dev": true, + "requires": { "@babel/compat-data": "^7.15.0", "@babel/helper-validator-option": "^7.14.5", "browserslist": "^4.16.6", "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-create-class-features-plugin": { + "@babel/helper-create-class-features-plugin": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.15.4.tgz", "integrity": "sha512-7ZmzFi+DwJx6A7mHRwbuucEYpyBwmh2Ca0RvI6z2+WLZYCqV0JOaLb+u0zbtmDicebgKBZgqbYfLaKNqSgv5Pw==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-annotate-as-pure": "^7.15.4", "@babel/helper-function-name": "^7.15.4", "@babel/helper-member-expression-to-functions": "^7.15.4", "@babel/helper-optimise-call-expression": "^7.15.4", "@babel/helper-replace-supers": "^7.15.4", "@babel/helper-split-export-declaration": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-create-regexp-features-plugin": { + "@babel/helper-create-regexp-features-plugin": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz", "integrity": "sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-annotate-as-pure": "^7.14.5", "regexpu-core": "^4.7.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-define-polyfill-provider": { + "@babel/helper-define-polyfill-provider": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz", "integrity": "sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-compilation-targets": "^7.13.0", "@babel/helper-module-imports": "^7.12.13", "@babel/helper-plugin-utils": "^7.13.0", @@ -276,85 +150,69 @@ "lodash.debounce": "^4.0.8", "resolve": "^1.14.2", "semver": "^6.1.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0-0" } }, - "node_modules/@babel/helper-explode-assignable-expression": { + "@babel/helper-explode-assignable-expression": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.15.4.tgz", "integrity": "sha512-J14f/vq8+hdC2KoWLIQSsGrC9EFBKE4NFts8pfMpymfApds+fPqR30AOUWc4tyr56h9l/GA1Sxv2q3dLZWbQ/g==", "dev": true, - "dependencies": { + "requires": { "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" } }, - "node_modules/@babel/helper-function-name": { + "@babel/helper-function-name": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", - "dependencies": { + "dev": true, + "requires": { "@babel/helper-get-function-arity": "^7.15.4", "@babel/template": "^7.15.4", "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" } }, - "node_modules/@babel/helper-get-function-arity": { + "@babel/helper-get-function-arity": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", - "dependencies": { + "dev": true, + "requires": { "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" } }, - "node_modules/@babel/helper-hoist-variables": { + "@babel/helper-hoist-variables": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", - "dependencies": { + "dev": true, + "requires": { "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" } }, - "node_modules/@babel/helper-member-expression-to-functions": { + "@babel/helper-member-expression-to-functions": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", - "dependencies": { + "dev": true, + "requires": { "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" } }, - "node_modules/@babel/helper-module-imports": { + "@babel/helper-module-imports": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", - "dependencies": { + "requires": { "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" } }, - "node_modules/@babel/helper-module-transforms": { + "@babel/helper-module-transforms": { "version": "7.15.8", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz", "integrity": "sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg==", - "dependencies": { + "dev": true, + "requires": { "@babel/helper-module-imports": "^7.15.4", "@babel/helper-replace-supers": "^7.15.4", "@babel/helper-simple-access": "^7.15.4", @@ -363,723 +221,496 @@ "@babel/template": "^7.15.4", "@babel/traverse": "^7.15.4", "@babel/types": "^7.15.6" - }, - "engines": { - "node": ">=6.9.0" } }, - "node_modules/@babel/helper-optimise-call-expression": { + "@babel/helper-optimise-call-expression": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", - "dependencies": { + "dev": true, + "requires": { "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" } }, - "node_modules/@babel/helper-plugin-utils": { + "@babel/helper-plugin-utils": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", - "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", - "engines": { - "node": ">=6.9.0" - } + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==" }, - "node_modules/@babel/helper-remap-async-to-generator": { + "@babel/helper-remap-async-to-generator": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.15.4.tgz", "integrity": "sha512-v53MxgvMK/HCwckJ1bZrq6dNKlmwlyRNYM6ypaRTdXWGOE2c1/SCa6dL/HimhPulGhZKw9W0QhREM583F/t0vQ==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-annotate-as-pure": "^7.15.4", "@babel/helper-wrap-function": "^7.15.4", "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" } }, - "node_modules/@babel/helper-replace-supers": { + "@babel/helper-replace-supers": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", - "dependencies": { + "dev": true, + "requires": { "@babel/helper-member-expression-to-functions": "^7.15.4", "@babel/helper-optimise-call-expression": "^7.15.4", "@babel/traverse": "^7.15.4", "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" } }, - "node_modules/@babel/helper-simple-access": { + "@babel/helper-simple-access": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", - "dependencies": { + "dev": true, + "requires": { "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" } }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "@babel/helper-skip-transparent-expression-wrappers": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.15.4.tgz", "integrity": "sha512-BMRLsdh+D1/aap19TycS4eD1qELGrCBJwzaY9IE8LrpJtJb+H7rQkPIdsfgnMtLBA6DJls7X9z93Z4U8h7xw0A==", "dev": true, - "dependencies": { + "requires": { "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" } }, - "node_modules/@babel/helper-split-export-declaration": { + "@babel/helper-split-export-declaration": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", - "dependencies": { + "dev": true, + "requires": { "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" } }, - "node_modules/@babel/helper-validator-identifier": { + "@babel/helper-validator-identifier": { "version": "7.15.7", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", - "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", - "engines": { - "node": ">=6.9.0" - } + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==" }, - "node_modules/@babel/helper-validator-option": { + "@babel/helper-validator-option": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", - "engines": { - "node": ">=6.9.0" - } + "dev": true }, - "node_modules/@babel/helper-wrap-function": { + "@babel/helper-wrap-function": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.15.4.tgz", "integrity": "sha512-Y2o+H/hRV5W8QhIfTpRIBwl57y8PrZt6JM3V8FOo5qarjshHItyH5lXlpMfBfmBefOqSCpKZs/6Dxqp0E/U+uw==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-function-name": "^7.15.4", "@babel/template": "^7.15.4", "@babel/traverse": "^7.15.4", "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" } }, - "node_modules/@babel/helpers": { + "@babel/helpers": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", - "dependencies": { + "dev": true, + "requires": { "@babel/template": "^7.15.4", "@babel/traverse": "^7.15.4", "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" } }, - "node_modules/@babel/highlight": { + "@babel/highlight": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "dependencies": { + "requires": { "@babel/helper-validator-identifier": "^7.14.5", "chalk": "^2.0.0", "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" } }, - "node_modules/@babel/parser": { + "@babel/parser": { "version": "7.15.8", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==", - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } + "dev": true }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.15.4.tgz", "integrity": "sha512-eBnpsl9tlhPhpI10kU06JHnrYXwg3+V6CaP2idsCXNef0aeslpqyITXQ74Vfk5uHgY7IG7XP0yIH8b42KSzHog==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.14.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.15.4", "@babel/plugin-proposal-optional-chaining": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" } }, - "node_modules/@babel/plugin-proposal-async-generator-functions": { + "@babel/plugin-proposal-async-generator-functions": { "version": "7.15.8", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.15.8.tgz", "integrity": "sha512-2Z5F2R2ibINTc63mY7FLqGfEbmofrHU9FitJW1Q7aPaKFhiPvSq6QEt/BoWN5oME3GVyjcRuNNSRbb9LC0CSWA==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.14.5", "@babel/helper-remap-async-to-generator": "^7.15.4", "@babel/plugin-syntax-async-generators": "^7.8.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-class-properties": { + "@babel/plugin-proposal-class-properties": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz", "integrity": "sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-create-class-features-plugin": "^7.14.5", "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-class-static-block": { + "@babel/plugin-proposal-class-static-block": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.15.4.tgz", "integrity": "sha512-M682XWrrLNk3chXCjoPUQWOyYsB93B9z3mRyjtqqYJWDf2mfCdIYgDrA11cgNVhAQieaq6F2fn2f3wI0U4aTjA==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-create-class-features-plugin": "^7.15.4", "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-class-static-block": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" } }, - "node_modules/@babel/plugin-proposal-dynamic-import": { + "@babel/plugin-proposal-dynamic-import": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz", "integrity": "sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-export-namespace-from": { + "@babel/plugin-proposal-export-namespace-from": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.5.tgz", "integrity": "sha512-g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-json-strings": { + "@babel/plugin-proposal-json-strings": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz", "integrity": "sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-json-strings": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "@babel/plugin-proposal-logical-assignment-operators": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.5.tgz", "integrity": "sha512-YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "@babel/plugin-proposal-nullish-coalescing-operator": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz", "integrity": "sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-numeric-separator": { + "@babel/plugin-proposal-numeric-separator": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz", "integrity": "sha512-yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-numeric-separator": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-object-rest-spread": { + "@babel/plugin-proposal-object-rest-spread": { "version": "7.15.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.15.6.tgz", "integrity": "sha512-qtOHo7A1Vt+O23qEAX+GdBpqaIuD3i9VRrWgCJeq7WO6H2d14EK3q11urj5Te2MAeK97nMiIdRpwd/ST4JFbNg==", "dev": true, - "dependencies": { + "requires": { "@babel/compat-data": "^7.15.0", "@babel/helper-compilation-targets": "^7.15.4", "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-transform-parameters": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "@babel/plugin-proposal-optional-catch-binding": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz", "integrity": "sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-optional-chaining": { + "@babel/plugin-proposal-optional-chaining": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz", "integrity": "sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.14.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5", "@babel/plugin-syntax-optional-chaining": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-private-methods": { + "@babel/plugin-proposal-private-methods": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz", "integrity": "sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-create-class-features-plugin": "^7.14.5", "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { + "@babel/plugin-proposal-private-property-in-object": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.15.4.tgz", "integrity": "sha512-X0UTixkLf0PCCffxgu5/1RQyGGbgZuKoI+vXP4iSbJSYwPb7hu06omsFGBvQ9lJEvwgrxHdS8B5nbfcd8GyUNA==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-annotate-as-pure": "^7.15.4", "@babel/helper-create-class-features-plugin": "^7.15.4", "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "@babel/plugin-proposal-unicode-property-regex": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz", "integrity": "sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-create-regexp-features-plugin": "^7.14.5", "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-async-generators": { + "@babel/plugin-syntax-async-generators": { "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-bigint": { + "@babel/plugin-syntax-bigint": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-class-properties": { + "@babel/plugin-syntax-class-properties": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-class-static-block": { + "@babel/plugin-syntax-class-static-block": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-dynamic-import": { + "@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { + "@babel/plugin-syntax-export-namespace-from": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-import-meta": { + "@babel/plugin-syntax-import-meta": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-json-strings": { + "@babel/plugin-syntax-json-strings": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-jsx": { + "@babel/plugin-syntax-jsx": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz", "integrity": "sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "@babel/plugin-syntax-nullish-coalescing-operator": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-numeric-separator": { + "@babel/plugin-syntax-numeric-separator": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { + "@babel/plugin-syntax-object-rest-spread": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "@babel/plugin-syntax-optional-catch-binding": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-optional-chaining": { + "@babel/plugin-syntax-optional-chaining": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { + "@babel/plugin-syntax-private-property-in-object": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-top-level-await": { + "@babel/plugin-syntax-top-level-await": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-typescript": { + "@babel/plugin-syntax-typescript": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz", "integrity": "sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-arrow-functions": { + "@babel/plugin-transform-arrow-functions": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz", "integrity": "sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-async-to-generator": { + "@babel/plugin-transform-async-to-generator": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz", "integrity": "sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-module-imports": "^7.14.5", "@babel/helper-plugin-utils": "^7.14.5", "@babel/helper-remap-async-to-generator": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { + "@babel/plugin-transform-block-scoped-functions": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz", "integrity": "sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-block-scoping": { + "@babel/plugin-transform-block-scoping": { "version": "7.15.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.15.3.tgz", "integrity": "sha512-nBAzfZwZb4DkaGtOes1Up1nOAp9TDRRFw4XBzBBSG9QK7KVFmYzgj9o9sbPv7TX5ofL4Auq4wZnxCoPnI/lz2Q==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-classes": { + "@babel/plugin-transform-classes": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.15.4.tgz", "integrity": "sha512-Yjvhex8GzBmmPQUvpXRPWQ9WnxXgAFuZSrqOK/eJlOGIXwvv8H3UEdUigl1gb/bnjTrln+e8bkZUYCBt/xYlBg==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-annotate-as-pure": "^7.15.4", "@babel/helper-function-name": "^7.15.4", "@babel/helper-optimise-call-expression": "^7.15.4", @@ -1087,558 +718,348 @@ "@babel/helper-replace-supers": "^7.15.4", "@babel/helper-split-export-declaration": "^7.15.4", "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-computed-properties": { + "@babel/plugin-transform-computed-properties": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz", "integrity": "sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-destructuring": { + "@babel/plugin-transform-destructuring": { "version": "7.14.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz", "integrity": "sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-dotall-regex": { + "@babel/plugin-transform-dotall-regex": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz", "integrity": "sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-create-regexp-features-plugin": "^7.14.5", "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-duplicate-keys": { + "@babel/plugin-transform-duplicate-keys": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz", "integrity": "sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { + "@babel/plugin-transform-exponentiation-operator": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz", "integrity": "sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.14.5", "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-for-of": { + "@babel/plugin-transform-for-of": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.15.4.tgz", "integrity": "sha512-DRTY9fA751AFBDh2oxydvVm4SYevs5ILTWLs6xKXps4Re/KG5nfUkr+TdHCrRWB8C69TlzVgA9b3RmGWmgN9LA==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-function-name": { + "@babel/plugin-transform-function-name": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz", "integrity": "sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-function-name": "^7.14.5", "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-literals": { + "@babel/plugin-transform-literals": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz", "integrity": "sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-member-expression-literals": { + "@babel/plugin-transform-member-expression-literals": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz", "integrity": "sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-modules-amd": { + "@babel/plugin-transform-modules-amd": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz", "integrity": "sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-module-transforms": "^7.14.5", "@babel/helper-plugin-utils": "^7.14.5", "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-modules-commonjs": { + "@babel/plugin-transform-modules-commonjs": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.15.4.tgz", "integrity": "sha512-qg4DPhwG8hKp4BbVDvX1s8cohM8a6Bvptu4l6Iingq5rW+yRUAhe/YRup/YcW2zCOlrysEWVhftIcKzrEZv3sA==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-module-transforms": "^7.15.4", "@babel/helper-plugin-utils": "^7.14.5", "@babel/helper-simple-access": "^7.15.4", "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-modules-systemjs": { + "@babel/plugin-transform-modules-systemjs": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.15.4.tgz", "integrity": "sha512-fJUnlQrl/mezMneR72CKCgtOoahqGJNVKpompKwzv3BrEXdlPspTcyxrZ1XmDTIr9PpULrgEQo3qNKp6dW7ssw==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-hoist-variables": "^7.15.4", "@babel/helper-module-transforms": "^7.15.4", "@babel/helper-plugin-utils": "^7.14.5", "@babel/helper-validator-identifier": "^7.14.9", "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-modules-umd": { + "@babel/plugin-transform-modules-umd": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz", "integrity": "sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-module-transforms": "^7.14.5", "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "@babel/plugin-transform-named-capturing-groups-regex": { "version": "7.14.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.9.tgz", "integrity": "sha512-l666wCVYO75mlAtGFfyFwnWmIXQm3kSH0C3IRnJqWcZbWkoihyAdDhFm2ZWaxWTqvBvhVFfJjMRQ0ez4oN1yYA==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-create-regexp-features-plugin": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-transform-new-target": { + "@babel/plugin-transform-new-target": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz", "integrity": "sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-object-super": { + "@babel/plugin-transform-object-super": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz", "integrity": "sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.14.5", "@babel/helper-replace-supers": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-parameters": { + "@babel/plugin-transform-parameters": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.15.4.tgz", "integrity": "sha512-9WB/GUTO6lvJU3XQsSr6J/WKvBC2hcs4Pew8YxZagi6GkTdniyqp8On5kqdK8MN0LMeu0mGbhPN+O049NV/9FQ==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-property-literals": { + "@babel/plugin-transform-property-literals": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz", "integrity": "sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-react-constant-elements": { + "@babel/plugin-transform-react-constant-elements": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.14.5.tgz", "integrity": "sha512-NBqLEx1GxllIOXJInJAQbrnwwYJsV3WaMHIcOwD8rhYS0AabTWn7kHdHgPgu5RmHLU0q4DMxhAMu8ue/KampgQ==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-react-display-name": { + "@babel/plugin-transform-react-display-name": { "version": "7.15.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.15.1.tgz", "integrity": "sha512-yQZ/i/pUCJAHI/LbtZr413S3VT26qNrEm0M5RRxQJA947/YNYwbZbBaXGDrq6CG5QsZycI1VIP6d7pQaBfP+8Q==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-react-jsx": { + "@babel/plugin-transform-react-jsx": { "version": "7.14.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.14.9.tgz", "integrity": "sha512-30PeETvS+AeD1f58i1OVyoDlVYQhap/K20ZrMjLmmzmC2AYR/G43D4sdJAaDAqCD3MYpSWbmrz3kES158QSLjw==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-annotate-as-pure": "^7.14.5", "@babel/helper-module-imports": "^7.14.5", "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-jsx": "^7.14.5", "@babel/types": "^7.14.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-react-jsx-development": { + "@babel/plugin-transform-react-jsx-development": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.14.5.tgz", "integrity": "sha512-rdwG/9jC6QybWxVe2UVOa7q6cnTpw8JRRHOxntG/h6g/guAOe6AhtQHJuJh5FwmnXIT1bdm5vC2/5huV8ZOorQ==", "dev": true, - "dependencies": { + "requires": { "@babel/plugin-transform-react-jsx": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-react-pure-annotations": { + "@babel/plugin-transform-react-pure-annotations": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.14.5.tgz", "integrity": "sha512-3X4HpBJimNxW4rhUy/SONPyNQHp5YRr0HhJdT2OH1BRp0of7u3Dkirc7x9FRJMKMqTBI079VZ1hzv7Ouuz///g==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-annotate-as-pure": "^7.14.5", "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-regenerator": { + "@babel/plugin-transform-regenerator": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.14.5.tgz", "integrity": "sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg==", "dev": true, - "dependencies": { + "requires": { "regenerator-transform": "^0.14.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-reserved-words": { + "@babel/plugin-transform-reserved-words": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz", "integrity": "sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-runtime": { + "@babel/plugin-transform-runtime": { "version": "7.15.8", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.15.8.tgz", "integrity": "sha512-+6zsde91jMzzvkzuEA3k63zCw+tm/GvuuabkpisgbDMTPQsIMHllE3XczJFFtEHLjjhKQFZmGQVRdELetlWpVw==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-module-imports": "^7.15.4", "@babel/helper-plugin-utils": "^7.14.5", "babel-plugin-polyfill-corejs2": "^0.2.2", "babel-plugin-polyfill-corejs3": "^0.2.5", "babel-plugin-polyfill-regenerator": "^0.2.2", "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-shorthand-properties": { + "@babel/plugin-transform-shorthand-properties": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz", "integrity": "sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-spread": { + "@babel/plugin-transform-spread": { "version": "7.15.8", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.15.8.tgz", "integrity": "sha512-/daZ8s2tNaRekl9YJa9X4bzjpeRZLt122cpgFnQPLGUe61PH8zMEBmYqKkW5xF5JUEh5buEGXJoQpqBmIbpmEQ==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.14.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-sticky-regex": { + "@babel/plugin-transform-sticky-regex": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz", "integrity": "sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-template-literals": { + "@babel/plugin-transform-template-literals": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz", "integrity": "sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-typeof-symbol": { + "@babel/plugin-transform-typeof-symbol": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz", "integrity": "sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-typescript": { + "@babel/plugin-transform-typescript": { "version": "7.15.8", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.15.8.tgz", "integrity": "sha512-ZXIkJpbaf6/EsmjeTbiJN/yMxWPFWvlr7sEG1P95Xb4S4IBcrf2n7s/fItIhsAmOf8oSh3VJPDppO6ExfAfKRQ==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-create-class-features-plugin": "^7.15.4", "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-typescript": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-unicode-escapes": { + "@babel/plugin-transform-unicode-escapes": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz", "integrity": "sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-unicode-regex": { + "@babel/plugin-transform-unicode-regex": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz", "integrity": "sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-create-regexp-features-plugin": "^7.14.5", "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/preset-env": { + "@babel/preset-env": { "version": "7.15.8", "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.15.8.tgz", "integrity": "sha512-rCC0wH8husJgY4FPbHsiYyiLxSY8oMDJH7Rl6RQMknbN9oDDHhM9RDFvnGM2MgkbUJzSQB4gtuwygY5mCqGSsA==", "dev": true, - "dependencies": { + "requires": { "@babel/compat-data": "^7.15.0", "@babel/helper-compilation-targets": "^7.15.4", "@babel/helper-plugin-utils": "^7.14.5", @@ -1712,109 +1133,81 @@ "babel-plugin-polyfill-regenerator": "^0.2.2", "core-js-compat": "^3.16.0", "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "@babel/preset-modules": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", + "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", "dev": true, - "dependencies": { + "requires": { "@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" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/preset-react": { + "@babel/preset-react": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.14.5.tgz", "integrity": "sha512-XFxBkjyObLvBaAvkx1Ie95Iaq4S/GUEIrejyrntQ/VCMKUYvKLoyKxOBzJ2kjA3b6rC9/KL6KXfDC2GqvLiNqQ==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.14.5", "@babel/helper-validator-option": "^7.14.5", "@babel/plugin-transform-react-display-name": "^7.14.5", "@babel/plugin-transform-react-jsx": "^7.14.5", "@babel/plugin-transform-react-jsx-development": "^7.14.5", "@babel/plugin-transform-react-pure-annotations": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/preset-typescript": { + "@babel/preset-typescript": { "version": "7.15.0", "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.15.0.tgz", "integrity": "sha512-lt0Y/8V3y06Wq/8H/u0WakrqciZ7Fz7mwPDHWUJAXlABL5hiUG42BNlRXiELNjeWjO5rWmnNKlx+yzJvxezHow==", "dev": true, - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.14.5", "@babel/helper-validator-option": "^7.14.5", "@babel/plugin-transform-typescript": "^7.15.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/runtime": { + "@babel/runtime": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.4.tgz", "integrity": "sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==", - "dependencies": { + "requires": { "regenerator-runtime": "^0.13.4" - }, - "engines": { - "node": ">=6.9.0" } }, - "node_modules/@babel/runtime-corejs3": { + "@babel/runtime-corejs3": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.15.4.tgz", "integrity": "sha512-lWcAqKeB624/twtTc3w6w/2o9RqJPaNBhPGK6DKLSiwuVWC7WFkypWyNg+CpZoyJH0jVzv1uMtXZ/5/lQOLtCg==", "dev": true, - "dependencies": { + "requires": { "core-js-pure": "^3.16.0", "regenerator-runtime": "^0.13.4" - }, - "engines": { - "node": ">=6.9.0" } }, - "node_modules/@babel/template": { + "@babel/template": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", - "dependencies": { + "dev": true, + "requires": { "@babel/code-frame": "^7.14.5", "@babel/parser": "^7.15.4", "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" } }, - "node_modules/@babel/traverse": { + "@babel/traverse": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", - "dependencies": { + "dev": true, + "requires": { "@babel/code-frame": "^7.14.5", "@babel/generator": "^7.15.4", "@babel/helper-function-name": "^7.15.4", @@ -1824,86 +1217,59 @@ "@babel/types": "^7.15.4", "debug": "^4.1.0", "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" } }, - "node_modules/@babel/types": { + "@babel/types": { "version": "7.15.6", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "dependencies": { + "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" } }, - "node_modules/@bcoe/v8-coverage": { + "@bcoe/v8-coverage": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, - "node_modules/@choojs/findup": { + "@choojs/findup": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/@choojs/findup/-/findup-0.2.1.tgz", "integrity": "sha512-YstAqNb0MCN8PjdLCDfRsBcGVRN41f3vgLvaI0IrIcBp4AqILRSS0DeWNGkicC+f/zRIPJLc+9RURVSepwvfBw==", "dev": true, - "dependencies": { + "requires": { "commander": "^2.15.1" - }, - "bin": { - "findup": "bin/findup.js" } }, - "node_modules/@choojs/findup/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/@cnakazawa/watch": { + "@cnakazawa/watch": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", "dev": true, - "dependencies": { + "requires": { "exec-sh": "^0.3.2", "minimist": "^1.2.0" - }, - "bin": { - "watch": "cli.js" - }, - "engines": { - "node": ">=0.1.95" } }, - "node_modules/@csstools/convert-colors": { + "@csstools/convert-colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz", "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==", - "dev": true, - "engines": { - "node": ">=4.0.0" - } + "dev": true }, - "node_modules/@discoveryjs/json-ext": { + "@discoveryjs/json-ext": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.5.tgz", "integrity": "sha512-6nFkfkmSeV/rqSaS4oWHgmpnYw194f6hmWF5is6b0J1naJZoiD0NTc9AiUwPHvWsowkjuHErCZT1wa0jg+BLIA==", - "dev": true, - "engines": { - "node": ">=10.0.0" - } + "dev": true }, - "node_modules/@emotion/babel-plugin": { + "@emotion/babel-plugin": { "version": "11.3.0", "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.3.0.tgz", "integrity": "sha512-UZKwBV2rADuhRp+ZOGgNWg2eYgbzKzQXfQPtJbu/PLy8onurxlNCLvxMQEvlr1/GudguPI5IU9qIY1+2z1M5bA==", - "dependencies": { + "requires": { "@babel/helper-module-imports": "^7.12.13", "@babel/plugin-syntax-jsx": "^7.12.13", "@babel/runtime": "^7.13.10", @@ -1916,92 +1282,69 @@ "find-root": "^1.1.0", "source-map": "^0.5.7", "stylis": "^4.0.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" } }, - "node_modules/@emotion/cache": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.5.0.tgz", - "integrity": "sha512-mAZ5QRpLriBtaj/k2qyrXwck6yeoz1V5lMt/jfj6igWU35yYlNKs2LziXVgvH81gnJZ+9QQNGelSsnuoAy6uIw==", - "dependencies": { + "@emotion/cache": { + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.4.0.tgz", + "integrity": "sha512-Zx70bjE7LErRO9OaZrhf22Qye1y4F7iDl+ITjet0J+i+B88PrAOBkKvaAWhxsZf72tDLajwCgfCjJ2dvH77C3g==", + "requires": { "@emotion/memoize": "^0.7.4", - "@emotion/sheet": "^1.0.3", + "@emotion/sheet": "^1.0.0", "@emotion/utils": "^1.0.0", "@emotion/weak-memoize": "^0.2.5", - "stylis": "^4.0.10" + "stylis": "^4.0.3" } }, - "node_modules/@emotion/css": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/@emotion/css/-/css-11.5.0.tgz", - "integrity": "sha512-mqjz/3aqR9rp40M+pvwdKYWxlQK4Nj3cnNjo3Tx6SM14dSsEn7q/4W2/I7PlgG+mb27iITHugXuBIHH/QwUBVQ==", - "dependencies": { + "@emotion/css": { + "version": "11.1.3", + "resolved": "https://registry.npmjs.org/@emotion/css/-/css-11.1.3.tgz", + "integrity": "sha512-RSQP59qtCNTf5NWD6xM08xsQdCZmVYnX/panPYvB6LQAPKQB6GL49Njf0EMbS3CyDtrlWsBcmqBtysFvfWT3rA==", + "requires": { "@emotion/babel-plugin": "^11.0.0", - "@emotion/cache": "^11.5.0", + "@emotion/cache": "^11.1.3", "@emotion/serialize": "^1.0.0", - "@emotion/sheet": "^1.0.3", + "@emotion/sheet": "^1.0.0", "@emotion/utils": "^1.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - } } }, - "node_modules/@emotion/hash": { + "@emotion/hash": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" }, - "node_modules/@emotion/is-prop-valid": { + "@emotion/is-prop-valid": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.1.0.tgz", "integrity": "sha512-9RkilvXAufQHsSsjQ3PIzSns+pxuX4EW8EbGeSPjZMHuMx6z/MOzb9LpqNieQX4F3mre3NWS2+X3JNRHTQztUQ==", - "dependencies": { + "requires": { "@emotion/memoize": "^0.7.4" } }, - "node_modules/@emotion/memoize": { + "@emotion/memoize": { "version": "0.7.5", "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.5.tgz", "integrity": "sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ==" }, - "node_modules/@emotion/react": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.5.0.tgz", - "integrity": "sha512-MYq/bzp3rYbee4EMBORCn4duPQfgpiEB5XzrZEBnUZAL80Qdfr7CEv/T80jwaTl/dnZmt9SnTa8NkTrwFNpLlw==", - "dependencies": { + "@emotion/react": { + "version": "11.4.1", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.4.1.tgz", + "integrity": "sha512-pRegcsuGYj4FCdZN6j5vqCALkNytdrKw3TZMekTzNXixRg4wkLsU5QEaBG5LC6l01Vppxlp7FE3aTHpIG5phLg==", + "requires": { "@babel/runtime": "^7.13.10", - "@emotion/cache": "^11.5.0", + "@emotion/cache": "^11.4.0", "@emotion/serialize": "^1.0.2", - "@emotion/sheet": "^1.0.3", + "@emotion/sheet": "^1.0.2", "@emotion/utils": "^1.0.0", "@emotion/weak-memoize": "^0.2.5", "hoist-non-react-statics": "^3.3.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0", - "react": ">=16.8.0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@types/react": { - "optional": true - } } }, - "node_modules/@emotion/serialize": { + "@emotion/serialize": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.0.2.tgz", "integrity": "sha512-95MgNJ9+/ajxU7QIAruiOAdYNjxZX7G2mhgrtDWswA21VviYIRP1R5QilZ/bDY42xiKsaktP4egJb3QdYQZi1A==", - "dependencies": { + "requires": { "@emotion/hash": "^0.8.0", "@emotion/memoize": "^0.7.4", "@emotion/unitless": "^0.7.5", @@ -2009,80 +1352,63 @@ "csstype": "^3.0.2" } }, - "node_modules/@emotion/sheet": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.0.3.tgz", - "integrity": "sha512-YoX5GyQ4db7LpbmXHMuc8kebtBGP6nZfRC5Z13OKJMixBEwdZrJ914D6yJv/P+ZH/YY3F5s89NYX2hlZAf3SRQ==" + "@emotion/sheet": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.0.2.tgz", + "integrity": "sha512-QQPB1B70JEVUHuNtzjHftMGv6eC3Y9wqavyarj4x4lg47RACkeSfNo5pxIOKizwS9AEFLohsqoaxGQj4p0vSIw==" }, - "node_modules/@emotion/styled": { + "@emotion/styled": { "version": "11.3.0", "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.3.0.tgz", "integrity": "sha512-fUoLcN3BfMiLlRhJ8CuPUMEyKkLEoM+n+UyAbnqGEsCd5IzKQ7VQFLtzpJOaCD2/VR2+1hXQTnSZXVJeiTNltA==", - "dependencies": { + "requires": { "@babel/runtime": "^7.13.10", "@emotion/babel-plugin": "^11.3.0", "@emotion/is-prop-valid": "^1.1.0", "@emotion/serialize": "^1.0.2", "@emotion/utils": "^1.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0", - "@emotion/react": "^11.0.0-rc.0", - "react": ">=16.8.0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@types/react": { - "optional": true - } } }, - "node_modules/@emotion/unitless": { + "@emotion/unitless": { "version": "0.7.5", "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" }, - "node_modules/@emotion/utils": { + "@emotion/utils": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.0.0.tgz", "integrity": "sha512-mQC2b3XLDs6QCW+pDQDiyO/EdGZYOygE8s5N5rrzjSI4M3IejPE/JPndCBwRT9z982aqQNi6beWs1UeayrQxxA==" }, - "node_modules/@emotion/weak-memoize": { + "@emotion/weak-memoize": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz", "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==" }, - "node_modules/@es-joy/jsdoccomment": { + "@es-joy/jsdoccomment": { "version": "0.10.8", "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.10.8.tgz", "integrity": "sha512-3P1JiGL4xaR9PoTKUHa2N/LKwa2/eUdRqGwijMWWgBqbFEqJUVpmaOi2TcjcemrsRMgFLBzQCK4ToPhrSVDiFQ==", "dev": true, - "dependencies": { + "requires": { "comment-parser": "1.2.4", "esquery": "^1.4.0", "jsdoc-type-pratt-parser": "1.1.1" }, - "engines": { - "node": "^12 || ^14 || ^16" - } - }, - "node_modules/@es-joy/jsdoccomment/node_modules/jsdoc-type-pratt-parser": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-1.1.1.tgz", - "integrity": "sha512-uelRmpghNwPBuZScwgBG/OzodaFk5RbO5xaivBdsAY70icWfShwZ7PCMO0x1zSkOa8T1FzHThmrdoyg/0AwV5g==", - "dev": true, - "engines": { - "node": ">=12.0.0" + "dependencies": { + "jsdoc-type-pratt-parser": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-1.1.1.tgz", + "integrity": "sha512-uelRmpghNwPBuZScwgBG/OzodaFk5RbO5xaivBdsAY70icWfShwZ7PCMO0x1zSkOa8T1FzHThmrdoyg/0AwV5g==", + "dev": true + } } }, - "node_modules/@eslint/eslintrc": { + "@eslint/eslintrc": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", "dev": true, - "dependencies": { + "requires": { "ajv": "^6.12.4", "debug": "^4.1.1", "espree": "^7.3.0", @@ -2093,46329 +1419,8674 @@ "minimatch": "^3.0.4", "strip-json-comments": "^3.1.1" }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", - "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", - "dev": true, "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/eslintrc/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/@eslint/eslintrc/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "globals": { + "version": "13.11.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz", + "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + } } }, - "node_modules/@hapi/hoek": { + "@hapi/hoek": { "version": "9.2.1", "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.1.tgz", "integrity": "sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw==", "dev": true }, - "node_modules/@hapi/topo": { + "@hapi/topo": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", "dev": true, - "dependencies": { + "requires": { "@hapi/hoek": "^9.0.0" } }, - "node_modules/@humanwhocodes/config-array": { + "@humanwhocodes/config-array": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", "dev": true, - "dependencies": { + "requires": { "@humanwhocodes/object-schema": "^1.2.0", "debug": "^4.1.1", "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=10.10.0" } }, - "node_modules/@humanwhocodes/object-schema": { + "@humanwhocodes/object-schema": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", "dev": true }, - "node_modules/@istanbuljs/load-nyc-config": { + "@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, - "dependencies": { + "requires": { "camelcase": "^5.3.1", "find-up": "^4.1.0", "get-package-type": "^0.1.0", "js-yaml": "^3.13.1", "resolve-from": "^5.0.0" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } } }, - "node_modules/@istanbuljs/schema": { + "@istanbuljs/schema": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "engines": { - "node": ">=8" - } + "dev": true }, - "node_modules/@jest/console": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.3.1.tgz", - "integrity": "sha512-RkFNWmv0iui+qsOr/29q9dyfKTTT5DCuP31kUwg7rmOKPT/ozLeGLKJKVIiOfbiKyleUZKIrHwhmiZWVe8IMdw==", + "@jest/console": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz", + "integrity": "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==", "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", + "requires": { + "@jest/types": "^26.6.2", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^27.3.1", - "jest-util": "^27.3.1", + "jest-message-util": "^26.6.2", + "jest-util": "^26.6.2", "slash": "^3.0.0" }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/console/node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "peer": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/console/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "peer": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/console/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/console/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/console/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/console/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true - }, - "node_modules/@jest/console/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console/node_modules/jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "peer": true, "dependencies": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/console/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, - "node_modules/@jest/core": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.3.1.tgz", - "integrity": "sha512-DMNE90RR5QKx0EA+wqe3/TNEwiRpOkhshKNxtLxd4rt3IZpCt+RSL+FoJsGeblRZmqdK4upHA/mKKGPPRAifhg==", + "@jest/core": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz", + "integrity": "sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==", "dev": true, - "peer": true, - "dependencies": { - "@jest/console": "^27.3.1", - "@jest/reporters": "^27.3.1", - "@jest/test-result": "^27.3.1", - "@jest/transform": "^27.3.1", - "@jest/types": "^27.2.5", + "requires": { + "@jest/console": "^26.6.2", + "@jest/reporters": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "emittery": "^0.8.1", "exit": "^0.1.2", "graceful-fs": "^4.2.4", - "jest-changed-files": "^27.3.0", - "jest-config": "^27.3.1", - "jest-haste-map": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.3.1", - "jest-resolve-dependencies": "^27.3.1", - "jest-runner": "^27.3.1", - "jest-runtime": "^27.3.1", - "jest-snapshot": "^27.3.1", - "jest-util": "^27.3.1", - "jest-validate": "^27.3.1", - "jest-watcher": "^27.3.1", - "micromatch": "^4.0.4", + "jest-changed-files": "^26.6.2", + "jest-config": "^26.6.3", + "jest-haste-map": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-resolve-dependencies": "^26.6.3", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "jest-watcher": "^26.6.2", + "micromatch": "^4.0.2", + "p-each-series": "^2.1.0", "rimraf": "^3.0.0", "slash": "^3.0.0", "strip-ansi": "^6.0.0" }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/core/node_modules/@jest/transform": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.3.1.tgz", - "integrity": "sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==", - "dev": true, - "peer": true, "dependencies": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.2.5", - "babel-plugin-istanbul": "^6.0.0", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", - "jest-regex-util": "^27.0.6", - "jest-util": "^27.3.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.1", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, - "node_modules/@jest/core/node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", + "@jest/environment": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz", + "integrity": "sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==", "dev": true, - "peer": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", + "requires": { + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "jest-mock": "^26.6.2" } }, - "node_modules/@jest/core/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "@jest/fake-timers": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz", + "integrity": "sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==", "dev": true, - "peer": true, - "dependencies": { - "@types/yargs-parser": "*" + "requires": { + "@jest/types": "^26.6.2", + "@sinonjs/fake-timers": "^6.0.1", + "@types/node": "*", + "jest-message-util": "^26.6.2", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2" } }, - "node_modules/@jest/core/node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "@jest/globals": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz", + "integrity": "sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==", "dev": true, - "peer": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "requires": { + "@jest/environment": "^26.6.2", + "@jest/types": "^26.6.2", + "expect": "^26.6.2" } }, - "node_modules/@jest/core/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "@jest/reporters": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-26.6.2.tgz", + "integrity": "sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==", "dev": true, - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.4", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "jest-haste-map": "^26.6.2", + "jest-resolve": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "node-notifier": "^8.0.0", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^7.0.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/core/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "peer": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/core/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/core/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true - }, - "node_modules/@jest/core/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/core/node_modules/jest-haste-map": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", - "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.0.6", - "jest-serializer": "^27.0.6", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/@jest/core/node_modules/jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", - "dev": true, - "peer": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/core/node_modules/jest-serializer": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", - "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", - "dev": true, - "peer": true, - "dependencies": { - "@types/node": "*", - "graceful-fs": "^4.2.4" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, - "node_modules/@jest/core/node_modules/jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", + "@jest/source-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz", + "integrity": "sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==", "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", + "requires": { + "callsites": "^3.0.0", "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/core/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "peer": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@jest/core/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@jest/core/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/core/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10" + "source-map": "^0.6.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@jest/environment": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz", - "integrity": "sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==", - "dev": true, "dependencies": { - "@jest/fake-timers": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "jest-mock": "^26.6.2" - }, - "engines": { - "node": ">= 10.14.2" + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, - "node_modules/@jest/fake-timers": { + "@jest/test-result": { "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz", - "integrity": "sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz", + "integrity": "sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==", "dev": true, - "dependencies": { + "requires": { + "@jest/console": "^26.6.2", "@jest/types": "^26.6.2", - "@sinonjs/fake-timers": "^6.0.1", - "@types/node": "*", - "jest-message-util": "^26.6.2", - "jest-mock": "^26.6.2", - "jest-util": "^26.6.2" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/@jest/fake-timers/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/fake-timers/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/fake-timers/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" } }, - "node_modules/@jest/fake-timers/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@jest/fake-timers/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "@jest/test-sequencer": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz", + "integrity": "sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==", "dev": true, - "engines": { - "node": ">=8" + "requires": { + "@jest/test-result": "^26.6.2", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3" } }, - "node_modules/@jest/fake-timers/node_modules/jest-message-util": { + "@jest/transform": { "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", - "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz", + "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==", "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", + "requires": { + "@babel/core": "^7.1.0", "@jest/types": "^26.6.2", - "@types/stack-utils": "^2.0.0", + "babel-plugin-istanbul": "^6.0.0", "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-util": "^26.6.2", "micromatch": "^4.0.2", - "pretty-format": "^26.6.2", + "pirates": "^4.0.1", "slash": "^3.0.0", - "stack-utils": "^2.0.2" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/@jest/fake-timers/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/globals": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.3.1.tgz", - "integrity": "sha512-Q651FWiWQAIFiN+zS51xqhdZ8g9b88nGCobC87argAxA7nMfNQq0Q0i9zTfQYgLa6qFXk2cGANEqfK051CZ8Pg==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/environment": "^27.3.1", - "@jest/types": "^27.2.5", - "expect": "^27.3.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/globals/node_modules/@jest/environment": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.3.1.tgz", - "integrity": "sha512-BCKCj4mOVLme6Tanoyc9k0ultp3pnmuyHw73UHRPeeZxirsU/7E3HC4le/VDb/SMzE1JcPnto+XBKFOcoiJzVw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/fake-timers": "^27.3.1", - "@jest/types": "^27.2.5", - "@types/node": "*", - "jest-mock": "^27.3.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/globals/node_modules/@jest/fake-timers": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.3.1.tgz", - "integrity": "sha512-M3ZFgwwlqJtWZ+QkBG5NmC23A9w+A6ZxNsO5nJxJsKYt4yguBd3i8TpjQz5NfCX91nEve1KqD9RA2Q+Q1uWqoA==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@sinonjs/fake-timers": "^8.0.1", - "@types/node": "*", - "jest-message-util": "^27.3.1", - "jest-mock": "^27.3.0", - "jest-util": "^27.3.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/globals/node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "peer": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/globals/node_modules/@sinonjs/fake-timers": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz", - "integrity": "sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==", - "dev": true, - "peer": true, - "dependencies": { - "@sinonjs/commons": "^1.7.0" - } - }, - "node_modules/@jest/globals/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "peer": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/globals/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "peer": true, "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, - "node_modules/@jest/globals/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", "dev": true, - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/globals/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "peer": true, "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, - "node_modules/@jest/globals/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true - }, - "node_modules/@jest/globals/node_modules/diff-sequences": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", - "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==", + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, - "peer": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" } }, - "node_modules/@jest/globals/node_modules/expect": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.3.1.tgz", - "integrity": "sha512-MrNXV2sL9iDRebWPGOGFdPQRl2eDQNu/uhxIMShjjx74T6kC6jFIkmQ6OqXDtevjGUkyB2IT56RzDBqXf/QPCg==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "ansi-styles": "^5.0.0", - "jest-get-type": "^27.3.1", - "jest-matcher-utils": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-regex-util": "^27.0.6" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true }, - "node_modules/@jest/globals/node_modules/expect/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" } }, - "node_modules/@jest/globals/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "@octokit/auth-token": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", + "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", "dev": true, - "peer": true, - "engines": { - "node": ">=8" + "requires": { + "@octokit/types": "^6.0.3" } }, - "node_modules/@jest/globals/node_modules/jest-diff": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.3.1.tgz", - "integrity": "sha512-PCeuAH4AWUo2O5+ksW4pL9v5xJAcIKPUPfIhZBcG1RKv/0+dvaWTQK1Nrau8d67dp65fOqbeMdoil+6PedyEPQ==", + "@octokit/core": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.5.1.tgz", + "integrity": "sha512-omncwpLVxMP+GLpLPgeGJBF6IWJFjXDS5flY5VbppePYX9XehevbDykRH9PdCdvqt9TS5AOTiDide7h0qrkHjw==", "dev": true, - "peer": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^27.0.6", - "jest-get-type": "^27.3.1", - "pretty-format": "^27.3.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "requires": { + "@octokit/auth-token": "^2.4.4", + "@octokit/graphql": "^4.5.8", + "@octokit/request": "^5.6.0", + "@octokit/request-error": "^2.0.5", + "@octokit/types": "^6.0.3", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" } }, - "node_modules/@jest/globals/node_modules/jest-get-type": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.3.1.tgz", - "integrity": "sha512-+Ilqi8hgHSAdhlQ3s12CAVNd8H96ZkQBfYoXmArzZnOfAtVAJEiPDBirjByEblvG/4LPJmkL+nBqPO3A1YJAEg==", + "@octokit/endpoint": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", + "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", "dev": true, - "peer": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "requires": { + "@octokit/types": "^6.0.3", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" } }, - "node_modules/@jest/globals/node_modules/jest-matcher-utils": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.3.1.tgz", - "integrity": "sha512-hX8N7zXS4k+8bC1Aj0OWpGb7D3gIXxYvPNK1inP5xvE4ztbz3rc4AkI6jGVaerepBnfWB17FL5lWFJT3s7qo8w==", + "@octokit/graphql": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", + "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", "dev": true, - "peer": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^27.3.1", - "jest-get-type": "^27.3.1", - "pretty-format": "^27.3.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "requires": { + "@octokit/request": "^5.6.0", + "@octokit/types": "^6.0.3", + "universal-user-agent": "^6.0.0" } }, - "node_modules/@jest/globals/node_modules/jest-mock": { - "version": "27.3.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.3.0.tgz", - "integrity": "sha512-ziZiLk0elZOQjD08bLkegBzv5hCABu/c8Ytx45nJKkysQwGaonvmTxwjLqEA4qGdasq9o2I8/HtdGMNnVsMTGw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/node": "*" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } + "@octokit/openapi-types": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-11.2.0.tgz", + "integrity": "sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA==", + "dev": true }, - "node_modules/@jest/globals/node_modules/jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", + "@octokit/plugin-paginate-rest": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.17.0.tgz", + "integrity": "sha512-tzMbrbnam2Mt4AhuyCHvpRkS0oZ5MvwwcQPYGtMv4tUa5kkzG58SVB0fcsLulOZQeRnOgdkZWkRUiyBlh0Bkyw==", "dev": true, - "peer": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "requires": { + "@octokit/types": "^6.34.0" } }, - "node_modules/@jest/globals/node_modules/jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", + "@octokit/plugin-rest-endpoint-methods": { + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.13.0.tgz", + "integrity": "sha512-uJjMTkN1KaOIgNtUPMtIXDOjx6dGYysdIFhgA52x4xSadQCz3b/zJexvITDVpANnfKPW/+E0xkOvLntqMYpviA==", "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "requires": { + "@octokit/types": "^6.34.0", + "deprecation": "^2.3.1" } }, - "node_modules/@jest/globals/node_modules/pretty-format": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz", - "integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==", + "@octokit/request": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.2.tgz", + "integrity": "sha512-je66CvSEVf0jCpRISxkUcCa0UkxmFs6eGDRSbfJtAVwbLH5ceqF+YEyC8lj8ystKyZTy8adWr0qmkY52EfOeLA==", "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "requires": { + "@octokit/endpoint": "^6.0.1", + "@octokit/request-error": "^2.1.0", + "@octokit/types": "^6.16.1", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.1", + "universal-user-agent": "^6.0.0" } }, - "node_modules/@jest/globals/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "@octokit/request-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", + "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", "dev": true, - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "requires": { + "@octokit/types": "^6.0.3", + "deprecation": "^2.0.0", + "once": "^1.4.0" } }, - "node_modules/@jest/globals/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "@octokit/types": { + "version": "6.34.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz", + "integrity": "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==", "dev": true, - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "requires": { + "@octokit/openapi-types": "^11.2.0" } }, - "node_modules/@jest/reporters": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.3.1.tgz", - "integrity": "sha512-m2YxPmL9Qn1emFVgZGEiMwDntDxRRQ2D58tiDQlwYTg5GvbFOKseYCcHtn0WsI8CG4vzPglo3nqbOiT8ySBT/w==", - "dev": true, - "peer": true, - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.3.1", - "@jest/test-result": "^27.3.1", - "@jest/transform": "^27.3.1", - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.2.4", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^4.0.3", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "jest-haste-map": "^27.3.1", - "jest-resolve": "^27.3.1", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", - "slash": "^3.0.0", - "source-map": "^0.6.0", - "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^8.1.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/reporters/node_modules/@jest/transform": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.3.1.tgz", - "integrity": "sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.2.5", - "babel-plugin-istanbul": "^6.0.0", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", - "jest-regex-util": "^27.0.6", - "jest-util": "^27.3.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.1", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } + "@polka/url": { + "version": "1.0.0-next.21", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", + "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==", + "dev": true }, - "node_modules/@jest/reporters/node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "peer": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } + "@popperjs/core": { + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.10.2.tgz", + "integrity": "sha512-IXf3XA7+XyN7CP9gGh/XB0UxVMlvARGEgGXLubFICsUMGz6Q+DU+i4gGlpOxTjKvXjkJDJC8YdqdKkDj9qZHEQ==" }, - "node_modules/@jest/reporters/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "peer": true, - "dependencies": { - "@types/yargs-parser": "*" + "@react-spring/animated": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@react-spring/animated/-/animated-9.3.0.tgz", + "integrity": "sha512-QvuyW77eDvLhdJyO6FFldlWlvnuKK2cpOx4+Zr962RyT/0IO1tbNDRO6G1vM8va6mbv6tmfYmRGKmKYePN3kVg==", + "requires": { + "@react-spring/shared": "~9.3.0", + "@react-spring/types": "~9.3.0" } }, - "node_modules/@jest/reporters/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "@react-spring/core": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@react-spring/core/-/core-9.3.0.tgz", + "integrity": "sha512-SZQOIX7wkIagmucAi7zxqGGIb9A60o9n5922UrWo8Kl3FdG7FgrNwqr0kOI43/pMFeL70/PXwFhBatB03N5ctw==", + "requires": { + "@react-spring/animated": "~9.3.0", + "@react-spring/shared": "~9.3.0", + "@react-spring/types": "~9.3.0" } }, - "node_modules/@jest/reporters/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } + "@react-spring/rafz": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@react-spring/rafz/-/rafz-9.3.0.tgz", + "integrity": "sha512-FD04d2TNb3xOZ6+04qwDmC3d0H4X6gvhsxU71/nSm4PPYRqFzZEolcVPmrHlbGzco3bvXKI+Kp2pIrpXLPUJFA==" }, - "node_modules/@jest/reporters/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "@react-spring/shared": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@react-spring/shared/-/shared-9.3.0.tgz", + "integrity": "sha512-7ZFY2Blu/wxbLGcYvQavyLUVi9bK/is1bsn11qZ9AaZb4iucRyIf2jgjBfKZFCq4qgi7S/7QmDQG7sucUyLELg==", + "requires": { + "@react-spring/rafz": "~9.3.0", + "@react-spring/types": "~9.3.0" } }, - "node_modules/@jest/reporters/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "@react-spring/types": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@react-spring/types/-/types-9.3.0.tgz", + "integrity": "sha512-q4cDr2RSPblXMD3Rxvk6qcC7nmhhfV2izEBP06hb8ZCXznA6qJirG3RMpi29kBtEQiw1lWR59hAXKhauaPtbOA==" }, - "node_modules/@jest/reporters/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" + "@react-spring/web": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@react-spring/web/-/web-9.3.0.tgz", + "integrity": "sha512-OTAGKRdyz6fLRR1tABFyw9KMpytyATIndQrj0O6RG47GfjiInpf4+WZKxo763vpS7z1OlnkI81WLUm/sqOqAnA==", + "requires": { + "@react-spring/animated": "~9.3.0", + "@react-spring/core": "~9.3.0", + "@react-spring/shared": "~9.3.0", + "@react-spring/types": "~9.3.0" } }, - "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "@sideway/address": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.2.tgz", + "integrity": "sha512-idTz8ibqWFrPU8kMirL0CoPH/A29XOzzAzpyN3zQ4kAWnzmNfFmRaoMNN6VI8ske5M73HZyhIaW4OuSFIdM4oA==", "dev": true, - "peer": true, - "dependencies": { - "@babel/core": "^7.7.5", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" + "requires": { + "@hapi/hoek": "^9.0.0" } }, - "node_modules/@jest/reporters/node_modules/jest-haste-map": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", - "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.0.6", - "jest-serializer": "^27.0.6", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } + "@sideway/formula": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", + "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==", + "dev": true }, - "node_modules/@jest/reporters/node_modules/jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", - "dev": true, - "peer": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } + "@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "dev": true }, - "node_modules/@jest/reporters/node_modules/jest-serializer": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", - "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", + "@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", "dev": true, - "peer": true, - "dependencies": { - "@types/node": "*", - "graceful-fs": "^4.2.4" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "requires": { + "type-detect": "4.0.8" } }, - "node_modules/@jest/reporters/node_modules/jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", + "@sinonjs/fake-timers": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", + "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "requires": { + "@sinonjs/commons": "^1.7.0" } }, - "node_modules/@jest/reporters/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "@stylelint/postcss-css-in-js": { + "version": "0.37.2", + "resolved": "https://registry.npmjs.org/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.2.tgz", + "integrity": "sha512-nEhsFoJurt8oUmieT8qy4nk81WRHmJynmVwn/Vts08PL9fhgIsMhk1GId5yAN643OzqEEb5S/6At2TZW7pqPDA==", "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" + "requires": { + "@babel/core": ">=7.9.0" } }, - "node_modules/@jest/reporters/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "@stylelint/postcss-markdown": { + "version": "0.36.2", + "resolved": "https://registry.npmjs.org/@stylelint/postcss-markdown/-/postcss-markdown-0.36.2.tgz", + "integrity": "sha512-2kGbqUVJUGE8dM+bMzXG/PYUWKkjLIkRLWNh39OaADkiabDRdw8ATFCgbMz5xdIcvwspPAluSL7uY+ZiTWdWmQ==", "dev": true, - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "requires": { + "remark": "^13.0.0", + "unist-util-find-all-after": "^3.0.2" } }, - "node_modules/@jest/source-map": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.0.6.tgz", - "integrity": "sha512-Fek4mi5KQrqmlY07T23JRi0e7Z9bXTOOD86V/uS0EIW4PClvPDqZOyFlLpNJheS6QI0FNX1CgmPjtJ4EA/2M+g==", - "dev": true, - "peer": true, - "dependencies": { - "callsites": "^3.0.0", - "graceful-fs": "^4.2.4", - "source-map": "^0.6.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } + "@svgr/babel-plugin-add-jsx-attribute": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz", + "integrity": "sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==", + "dev": true }, - "node_modules/@jest/source-map/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } + "@svgr/babel-plugin-remove-jsx-attribute": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz", + "integrity": "sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==", + "dev": true }, - "node_modules/@jest/test-result": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.3.1.tgz", - "integrity": "sha512-mLn6Thm+w2yl0opM8J/QnPTqrfS4FoXsXF2WIWJb2O/GBSyResL71BRuMYbYRsGt7ELwS5JGcEcGb52BNrumgg==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/console": "^27.3.1", - "@jest/types": "^27.2.5", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } + "@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz", + "integrity": "sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==", + "dev": true }, - "node_modules/@jest/test-result/node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "peer": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } + "@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz", + "integrity": "sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==", + "dev": true }, - "node_modules/@jest/test-result/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "peer": true, - "dependencies": { - "@types/yargs-parser": "*" - } + "@svgr/babel-plugin-svg-dynamic-title": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz", + "integrity": "sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==", + "dev": true }, - "node_modules/@jest/test-result/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } + "@svgr/babel-plugin-svg-em-dimensions": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz", + "integrity": "sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==", + "dev": true }, - "node_modules/@jest/test-result/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/test-result/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } + "@svgr/babel-plugin-transform-react-native-svg": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz", + "integrity": "sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==", + "dev": true }, - "node_modules/@jest/test-result/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "@svgr/babel-plugin-transform-svg-component": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz", + "integrity": "sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==", + "dev": true }, - "node_modules/@jest/test-result/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "@svgr/babel-preset": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz", + "integrity": "sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==", "dev": true, - "peer": true, - "engines": { - "node": ">=8" + "requires": { + "@svgr/babel-plugin-add-jsx-attribute": "^5.4.0", + "@svgr/babel-plugin-remove-jsx-attribute": "^5.4.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "^5.0.1", + "@svgr/babel-plugin-replace-jsx-attribute-value": "^5.0.1", + "@svgr/babel-plugin-svg-dynamic-title": "^5.4.0", + "@svgr/babel-plugin-svg-em-dimensions": "^5.4.0", + "@svgr/babel-plugin-transform-react-native-svg": "^5.4.0", + "@svgr/babel-plugin-transform-svg-component": "^5.5.0" } }, - "node_modules/@jest/test-result/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "@svgr/core": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz", + "integrity": "sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==", "dev": true, - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" + "requires": { + "@svgr/plugin-jsx": "^5.5.0", + "camelcase": "^6.2.0", + "cosmiconfig": "^7.0.0" }, - "engines": { - "node": ">=8" + "dependencies": { + "camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "dev": true + }, + "cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + } } }, - "node_modules/@jest/test-sequencer": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.3.1.tgz", - "integrity": "sha512-siySLo07IMEdSjA4fqEnxfIX8lB/lWYsBPwNFtkOvsFQvmBrL3yj3k3uFNZv/JDyApTakRpxbKLJ3CT8UGVCrA==", + "@svgr/hast-util-to-babel-ast": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz", + "integrity": "sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==", "dev": true, - "peer": true, - "dependencies": { - "@jest/test-result": "^27.3.1", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", - "jest-runtime": "^27.3.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "requires": { + "@babel/types": "^7.12.6" } }, - "node_modules/@jest/test-sequencer/node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", + "@svgr/plugin-jsx": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz", + "integrity": "sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==", "dev": true, - "peer": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "requires": { + "@babel/core": "^7.12.3", + "@svgr/babel-preset": "^5.5.0", + "@svgr/hast-util-to-babel-ast": "^5.5.0", + "svg-parser": "^2.0.2" } }, - "node_modules/@jest/test-sequencer/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "@svgr/plugin-svgo": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz", + "integrity": "sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==", "dev": true, - "peer": true, + "requires": { + "cosmiconfig": "^7.0.0", + "deepmerge": "^4.2.2", + "svgo": "^1.2.2" + }, "dependencies": { - "@types/yargs-parser": "*" + "cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, + "svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "dev": true, + "requires": { + "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" + } + } } }, - "node_modules/@jest/test-sequencer/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "@svgr/webpack": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz", + "integrity": "sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==", "dev": true, - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "requires": { + "@babel/core": "^7.12.3", + "@babel/plugin-transform-react-constant-elements": "^7.12.1", + "@babel/preset-env": "^7.12.1", + "@babel/preset-react": "^7.12.5", + "@svgr/core": "^5.5.0", + "@svgr/plugin-jsx": "^5.5.0", + "@svgr/plugin-svgo": "^5.5.0", + "loader-utils": "^2.0.0" } }, - "node_modules/@jest/test-sequencer/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "@tannin/compile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@tannin/compile/-/compile-1.1.0.tgz", + "integrity": "sha512-n8m9eNDfoNZoxdvWiTfW/hSPhehzLJ3zW7f8E7oT6mCROoMNWCB4TYtv041+2FMAxweiE0j7i1jubQU4MEC/Gg==", + "requires": { + "@tannin/evaluate": "^1.2.0", + "@tannin/postfix": "^1.1.0" } }, - "node_modules/@jest/test-sequencer/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "@tannin/evaluate": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@tannin/evaluate/-/evaluate-1.2.0.tgz", + "integrity": "sha512-3ioXvNowbO/wSrxsDG5DKIMxC81P0QrQTYai8zFNY+umuoHWRPbQ/TuuDEOju9E+jQDXmj6yI5GyejNuh8I+eg==" + }, + "@tannin/plural-forms": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@tannin/plural-forms/-/plural-forms-1.1.0.tgz", + "integrity": "sha512-xl9R2mDZO/qiHam1AgMnAES6IKIg7OBhcXqy6eDsRCdXuxAFPcjrej9HMjyCLE0DJ/8cHf0i5OQTstuBRhpbHw==", + "requires": { + "@tannin/compile": "^1.1.0" } }, - "node_modules/@jest/test-sequencer/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "@tannin/postfix": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@tannin/postfix/-/postfix-1.1.0.tgz", + "integrity": "sha512-oocsqY7g0cR+Gur5jRQLSrX2OtpMLMse1I10JQBm8CdGMrDkh1Mg2gjsiquMHRtBs4Qwu5wgEp5GgIYHk4SNPw==" }, - "node_modules/@jest/test-sequencer/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true + }, + "@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true + }, + "@types/babel__core": { + "version": "7.1.16", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.16.tgz", + "integrity": "sha512-EAEHtisTMM+KaKwfWdC3oyllIqswlznXCIVCt7/oRNrh+DhgT4UEBNC/jlADNjvw7UnfbcdkGQcPVZ1xYiLcrQ==", "dev": true, - "peer": true, - "engines": { - "node": ">=8" + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" } }, - "node_modules/@jest/test-sequencer/node_modules/jest-haste-map": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", - "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", + "@types/babel__generator": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.3.tgz", + "integrity": "sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==", "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.0.6", - "jest-serializer": "^27.0.6", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" + "requires": { + "@babel/types": "^7.0.0" } }, - "node_modules/@jest/test-sequencer/node_modules/jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", + "@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", "dev": true, - "peer": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" } }, - "node_modules/@jest/test-sequencer/node_modules/jest-serializer": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", - "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", + "@types/babel__traverse": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz", + "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==", "dev": true, - "peer": true, - "dependencies": { - "@types/node": "*", - "graceful-fs": "^4.2.4" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "requires": { + "@babel/types": "^7.3.0" } }, - "node_modules/@jest/test-sequencer/node_modules/jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", + "@types/cheerio": { + "version": "0.22.30", + "resolved": "https://registry.npmjs.org/@types/cheerio/-/cheerio-0.22.30.tgz", + "integrity": "sha512-t7ZVArWZlq3dFa9Yt33qFBQIK4CQd1Q3UJp0V+UhP6vgLWLM6Qug7vZuRSGXg45zXeB1Fm5X2vmBkEX58LV2Tw==", "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "requires": { + "@types/node": "*" } }, - "node_modules/@jest/test-sequencer/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "@types/eslint": { + "version": "7.28.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.28.1.tgz", + "integrity": "sha512-XhZKznR3i/W5dXqUhgU9fFdJekufbeBd5DALmkuXoeFcjbQcPk+2cL+WLHf6Q81HWAnM2vrslIHpGVyCAviRwg==", "dev": true, - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" } }, - "node_modules/@jest/transform": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz", - "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==", + "@types/eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g==", "dev": true, - "dependencies": { - "@babel/core": "^7.1.0", - "@jest/types": "^26.6.2", - "babel-plugin-istanbul": "^6.0.0", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-util": "^26.6.2", - "micromatch": "^4.0.2", - "pirates": "^4.0.1", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - }, - "engines": { - "node": ">= 10.14.2" + "requires": { + "@types/eslint": "*", + "@types/estree": "*" } }, - "node_modules/@jest/transform/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } + "@types/estree": { + "version": "0.0.50", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", + "dev": true }, - "node_modules/@jest/transform/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "@types/glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA==", "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "requires": { + "@types/minimatch": "*", + "@types/node": "*" } }, - "node_modules/@jest/transform/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "@types/graceful-fs": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", + "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "requires": { + "@types/node": "*" } }, - "node_modules/@jest/transform/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "@types/istanbul-lib-coverage": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", + "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", "dev": true }, - "node_modules/@jest/transform/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", "dev": true, - "engines": { - "node": ">=8" + "requires": { + "@types/istanbul-lib-coverage": "*" } }, - "node_modules/@jest/transform/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", "dev": true, - "engines": { - "node": ">=0.10.0" + "requires": { + "@types/istanbul-lib-report": "*" } }, - "node_modules/@jest/transform/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } + "@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "dev": true }, - "node_modules/@jest/types": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", - "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^15.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": ">= 10.14.2" - } + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "dev": true }, - "node_modules/@jest/types/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } + "@types/lodash": { + "version": "4.14.175", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.175.tgz", + "integrity": "sha512-XmdEOrKQ8a1Y/yxQFOMbC47G/V2VDO1GvMRnl4O75M4GW/abC5tnfzadQYkqEveqRM1dEJGFFegfPNA2vvx2iw==" }, - "node_modules/@jest/types/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "@types/mdast": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", + "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "requires": { + "@types/unist": "*" } }, - "node_modules/@jest/types/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } + "@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true }, - "node_modules/@jest/types/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", "dev": true }, - "node_modules/@jest/types/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } + "@types/mousetrap": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@types/mousetrap/-/mousetrap-1.6.8.tgz", + "integrity": "sha512-zTqjvgCUT5EoXqbqmd8iJMb4NJqyV/V7pK7AIKq7qcaAsJIpGlTVJS1HQM6YkdHCdnkNSbhcQI7MXYxFfE3iCA==" }, - "node_modules/@jest/types/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } + "@types/node": { + "version": "16.10.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.10.9.tgz", + "integrity": "sha512-H9ReOt+yqIJPCutkTYjFjlyK6WEMQYT9hLZMlWtOjFQY2ItppsWZ6RJf8Aw+jz5qTYceuHvFgPIaKOHtLAEWBw==", + "dev": true }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } + "@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "dev": true }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } + "@types/prettier": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.1.tgz", + "integrity": "sha512-Fo79ojj3vdEZOHg3wR9ksAMRz4P3S5fDB5e/YWZiFnyFQI1WY2Vftu9XoXVVtJfxB7Bpce/QTqWSSntkz2Znrw==", + "dev": true }, - "node_modules/@octokit/auth-token": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", - "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", - "dev": true, - "dependencies": { - "@octokit/types": "^6.0.3" - } + "@types/prop-types": { + "version": "15.7.4", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz", + "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==" }, - "node_modules/@octokit/core": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.5.1.tgz", - "integrity": "sha512-omncwpLVxMP+GLpLPgeGJBF6IWJFjXDS5flY5VbppePYX9XehevbDykRH9PdCdvqt9TS5AOTiDide7h0qrkHjw==", - "dev": true, - "dependencies": { - "@octokit/auth-token": "^2.4.4", - "@octokit/graphql": "^4.5.8", - "@octokit/request": "^5.6.0", - "@octokit/request-error": "^2.0.5", - "@octokit/types": "^6.0.3", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" - } + "@types/q": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", + "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==", + "dev": true }, - "node_modules/@octokit/endpoint": { - "version": "6.0.12", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", - "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", - "dev": true, - "dependencies": { - "@octokit/types": "^6.0.3", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" + "@types/react": { + "version": "16.14.17", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.14.17.tgz", + "integrity": "sha512-pMLc/7+7SEdQa9A+hN9ujI8blkjFqYAZVqh3iNXqdZ0cQ8TIR502HMkNJniaOGv9SAgc47jxVKoiBJ7c0AakvQ==", + "requires": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" } }, - "node_modules/@octokit/graphql": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", - "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", - "dev": true, - "dependencies": { - "@octokit/request": "^5.6.0", - "@octokit/types": "^6.0.3", - "universal-user-agent": "^6.0.0" + "@types/react-dom": { + "version": "16.9.14", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.14.tgz", + "integrity": "sha512-FIX2AVmPTGP30OUJ+0vadeIFJJ07Mh1m+U0rxfgyW34p3rTlXI+nlenvAxNn4BP36YyI9IJ/+UJ7Wu22N1pI7A==", + "requires": { + "@types/react": "^16" } }, - "node_modules/@octokit/openapi-types": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-11.2.0.tgz", - "integrity": "sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA==", + "@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" + }, + "@types/source-list-map": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", + "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==", "dev": true }, - "node_modules/@octokit/plugin-paginate-rest": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.17.0.tgz", - "integrity": "sha512-tzMbrbnam2Mt4AhuyCHvpRkS0oZ5MvwwcQPYGtMv4tUa5kkzG58SVB0fcsLulOZQeRnOgdkZWkRUiyBlh0Bkyw==", - "dev": true, - "dependencies": { - "@octokit/types": "^6.34.0" - }, - "peerDependencies": { - "@octokit/core": ">=2" - } - }, - "node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.13.0.tgz", - "integrity": "sha512-uJjMTkN1KaOIgNtUPMtIXDOjx6dGYysdIFhgA52x4xSadQCz3b/zJexvITDVpANnfKPW/+E0xkOvLntqMYpviA==", - "dev": true, - "dependencies": { - "@octokit/types": "^6.34.0", - "deprecation": "^2.3.1" - }, - "peerDependencies": { - "@octokit/core": ">=3" - } - }, - "node_modules/@octokit/request": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.2.tgz", - "integrity": "sha512-je66CvSEVf0jCpRISxkUcCa0UkxmFs6eGDRSbfJtAVwbLH5ceqF+YEyC8lj8ystKyZTy8adWr0qmkY52EfOeLA==", - "dev": true, - "dependencies": { - "@octokit/endpoint": "^6.0.1", - "@octokit/request-error": "^2.1.0", - "@octokit/types": "^6.16.1", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.1", - "universal-user-agent": "^6.0.0" - } + "@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true }, - "node_modules/@octokit/request-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", - "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", - "dev": true, - "dependencies": { - "@octokit/types": "^6.0.3", - "deprecation": "^2.0.0", - "once": "^1.4.0" - } + "@types/tapable": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.8.tgz", + "integrity": "sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ==", + "dev": true }, - "node_modules/@octokit/types": { - "version": "6.34.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz", - "integrity": "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==", + "@types/uglify-js": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.13.1.tgz", + "integrity": "sha512-O3MmRAk6ZuAKa9CHgg0Pr0+lUOqoMLpc9AS4R8ano2auvsg7IE8syF3Xh/NPr26TWklxYcqoEEFdzLLs1fV9PQ==", "dev": true, + "requires": { + "source-map": "^0.6.1" + }, "dependencies": { - "@octokit/openapi-types": "^11.2.0" + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, - "node_modules/@polka/url": { - "version": "1.0.0-next.21", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", - "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==", + "@types/unist": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", + "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", "dev": true }, - "node_modules/@popperjs/core": { - "version": "2.10.2", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.10.2.tgz", - "integrity": "sha512-IXf3XA7+XyN7CP9gGh/XB0UxVMlvARGEgGXLubFICsUMGz6Q+DU+i4gGlpOxTjKvXjkJDJC8YdqdKkDj9qZHEQ==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" - } - }, - "node_modules/@react-spring/animated": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@react-spring/animated/-/animated-9.3.0.tgz", - "integrity": "sha512-QvuyW77eDvLhdJyO6FFldlWlvnuKK2cpOx4+Zr962RyT/0IO1tbNDRO6G1vM8va6mbv6tmfYmRGKmKYePN3kVg==", - "dependencies": { - "@react-spring/shared": "~9.3.0", - "@react-spring/types": "~9.3.0" + "@types/webpack": { + "version": "4.41.31", + "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.31.tgz", + "integrity": "sha512-/i0J7sepXFIp1ZT7FjUGi1eXMCg8HCCzLJEQkKsOtbJFontsJLolBcDC+3qxn5pPwiCt1G0ZdRmYRzNBtvpuGQ==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/tapable": "^1", + "@types/uglify-js": "*", + "@types/webpack-sources": "*", + "anymatch": "^3.0.0", + "source-map": "^0.6.0" }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0" - } - }, - "node_modules/@react-spring/core": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@react-spring/core/-/core-9.3.0.tgz", - "integrity": "sha512-SZQOIX7wkIagmucAi7zxqGGIb9A60o9n5922UrWo8Kl3FdG7FgrNwqr0kOI43/pMFeL70/PXwFhBatB03N5ctw==", - "hasInstallScript": true, "dependencies": { - "@react-spring/animated": "~9.3.0", - "@react-spring/shared": "~9.3.0", - "@react-spring/types": "~9.3.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0" + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, - "node_modules/@react-spring/rafz": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@react-spring/rafz/-/rafz-9.3.0.tgz", - "integrity": "sha512-FD04d2TNb3xOZ6+04qwDmC3d0H4X6gvhsxU71/nSm4PPYRqFzZEolcVPmrHlbGzco3bvXKI+Kp2pIrpXLPUJFA==" - }, - "node_modules/@react-spring/shared": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@react-spring/shared/-/shared-9.3.0.tgz", - "integrity": "sha512-7ZFY2Blu/wxbLGcYvQavyLUVi9bK/is1bsn11qZ9AaZb4iucRyIf2jgjBfKZFCq4qgi7S/7QmDQG7sucUyLELg==", - "dependencies": { - "@react-spring/rafz": "~9.3.0", - "@react-spring/types": "~9.3.0" + "@types/webpack-sources": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-3.2.0.tgz", + "integrity": "sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/source-list-map": "*", + "source-map": "^0.7.3" }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0" - } - }, - "node_modules/@react-spring/types": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@react-spring/types/-/types-9.3.0.tgz", - "integrity": "sha512-q4cDr2RSPblXMD3Rxvk6qcC7nmhhfV2izEBP06hb8ZCXznA6qJirG3RMpi29kBtEQiw1lWR59hAXKhauaPtbOA==" - }, - "node_modules/@react-spring/web": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@react-spring/web/-/web-9.3.0.tgz", - "integrity": "sha512-OTAGKRdyz6fLRR1tABFyw9KMpytyATIndQrj0O6RG47GfjiInpf4+WZKxo763vpS7z1OlnkI81WLUm/sqOqAnA==", "dependencies": { - "@react-spring/animated": "~9.3.0", - "@react-spring/core": "~9.3.0", - "@react-spring/shared": "~9.3.0", - "@react-spring/types": "~9.3.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } } }, - "node_modules/@sideway/address": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.2.tgz", - "integrity": "sha512-idTz8ibqWFrPU8kMirL0CoPH/A29XOzzAzpyN3zQ4kAWnzmNfFmRaoMNN6VI8ske5M73HZyhIaW4OuSFIdM4oA==", + "@types/yargs": { + "version": "15.0.14", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", + "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", "dev": true, - "dependencies": { - "@hapi/hoek": "^9.0.0" + "requires": { + "@types/yargs-parser": "*" } }, - "node_modules/@sideway/formula": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", - "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==", - "dev": true - }, - "node_modules/@sideway/pinpoint": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "@types/yargs-parser": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", + "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", "dev": true }, - "node_modules/@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", - "dev": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", - "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", + "@types/yauzl": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.2.tgz", + "integrity": "sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==", "dev": true, - "dependencies": { - "@sinonjs/commons": "^1.7.0" + "optional": true, + "requires": { + "@types/node": "*" } }, - "node_modules/@svgr/babel-plugin-add-jsx-attribute": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz", - "integrity": "sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==", + "@typescript-eslint/eslint-plugin": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", + "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", "dev": true, - "engines": { - "node": ">=10" + "requires": { + "@typescript-eslint/experimental-utils": "4.33.0", + "@typescript-eslint/scope-manager": "4.33.0", + "debug": "^4.3.1", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.1.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } } }, - "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz", - "integrity": "sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==", + "@typescript-eslint/experimental-utils": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", + "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==", "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "requires": { + "@types/json-schema": "^7.0.7", + "@typescript-eslint/scope-manager": "4.33.0", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/typescript-estree": "4.33.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" } }, - "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz", - "integrity": "sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==", + "@typescript-eslint/parser": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", + "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "requires": { + "@typescript-eslint/scope-manager": "4.33.0", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/typescript-estree": "4.33.0", + "debug": "^4.3.1" } }, - "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz", - "integrity": "sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==", + "@typescript-eslint/scope-manager": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", + "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "requires": { + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0" } }, - "node_modules/@svgr/babel-plugin-svg-dynamic-title": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz", - "integrity": "sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } + "@typescript-eslint/types": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", + "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", + "dev": true }, - "node_modules/@svgr/babel-plugin-svg-em-dimensions": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz", - "integrity": "sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==", + "@typescript-eslint/typescript-estree": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", + "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", "dev": true, - "engines": { - "node": ">=10" + "requires": { + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0", + "debug": "^4.3.1", + "globby": "^11.0.3", + "is-glob": "^4.0.1", + "semver": "^7.3.5", + "tsutils": "^3.21.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } } }, - "node_modules/@svgr/babel-plugin-transform-react-native-svg": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz", - "integrity": "sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==", + "@typescript-eslint/visitor-keys": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", + "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "requires": { + "@typescript-eslint/types": "4.33.0", + "eslint-visitor-keys": "^2.0.0" } }, - "node_modules/@svgr/babel-plugin-transform-svg-component": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz", - "integrity": "sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==", + "@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "requires": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" } }, - "node_modules/@svgr/babel-preset": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz", - "integrity": "sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==", - "dev": true, - "dependencies": { - "@svgr/babel-plugin-add-jsx-attribute": "^5.4.0", - "@svgr/babel-plugin-remove-jsx-attribute": "^5.4.0", - "@svgr/babel-plugin-remove-jsx-empty-expression": "^5.0.1", - "@svgr/babel-plugin-replace-jsx-attribute-value": "^5.0.1", - "@svgr/babel-plugin-svg-dynamic-title": "^5.4.0", - "@svgr/babel-plugin-svg-em-dimensions": "^5.4.0", - "@svgr/babel-plugin-transform-react-native-svg": "^5.4.0", - "@svgr/babel-plugin-transform-svg-component": "^5.5.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "dev": true }, - "node_modules/@svgr/core": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz", - "integrity": "sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==", + "@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "dev": true + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", "dev": true, - "dependencies": { - "@svgr/plugin-jsx": "^5.5.0", - "camelcase": "^6.2.0", - "cosmiconfig": "^7.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" } }, - "node_modules/@svgr/hast-util-to-babel-ast": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz", - "integrity": "sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==", + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", "dev": true, - "dependencies": { - "@babel/types": "^7.12.6" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" } }, - "node_modules/@svgr/plugin-jsx": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz", - "integrity": "sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==", + "@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@svgr/babel-preset": "^5.5.0", - "@svgr/hast-util-to-babel-ast": "^5.5.0", - "svg-parser": "^2.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "requires": { + "@xtuc/ieee754": "^1.2.0" } }, - "node_modules/@svgr/plugin-svgo": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz", - "integrity": "sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==", + "@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", "dev": true, - "dependencies": { - "cosmiconfig": "^7.0.0", - "deepmerge": "^4.2.2", - "svgo": "^1.2.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "requires": { + "@xtuc/long": "4.2.2" } }, - "node_modules/@svgr/plugin-svgo/node_modules/css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", "dev": true, - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" } }, - "node_modules/@svgr/plugin-svgo/node_modules/css-tree": { - "version": "1.0.0-alpha.37", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", - "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", "dev": true, - "dependencies": { - "mdn-data": "2.0.4", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" } }, - "node_modules/@svgr/plugin-svgo/node_modules/css-what": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", "dev": true, - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" } }, - "node_modules/@svgr/plugin-svgo/node_modules/dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", "dev": true, - "dependencies": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" } }, - "node_modules/@svgr/plugin-svgo/node_modules/domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", "dev": true, - "dependencies": { - "dom-serializer": "0", - "domelementtype": "1" + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" } }, - "node_modules/@svgr/plugin-svgo/node_modules/domutils/node_modules/domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "@webpack-cli/configtest": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.0.tgz", + "integrity": "sha512-ttOkEkoalEHa7RaFYpM0ErK1xc4twg3Am9hfHhL7MVqlHebnkYd2wuI/ZqTDj0cVzZho6PdinY0phFZV3O0Mzg==", "dev": true }, - "node_modules/@svgr/plugin-svgo/node_modules/mdn-data": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", - "dev": true - }, - "node_modules/@svgr/plugin-svgo/node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/@svgr/plugin-svgo/node_modules/nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "@webpack-cli/info": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.0.tgz", + "integrity": "sha512-F6b+Man0rwE4n0409FyAJHStYA5OIZERxmnUfLVwv0mc0V1wLad3V7jqRlMkgKBeAq07jUvglacNaa6g9lOpuw==", "dev": true, - "dependencies": { - "boolbase": "~1.0.0" + "requires": { + "envinfo": "^7.7.3" } }, - "node_modules/@svgr/plugin-svgo/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "@webpack-cli/serve": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.0.tgz", + "integrity": "sha512-ZkVeqEmRpBV2GHvjjUZqEai2PpUbuq8Bqd//vEYsp63J8WyexI8ppCqVS3Zs0QADf6aWuPdU+0XsPI647PVlQA==", + "dev": true }, - "node_modules/@svgr/plugin-svgo/node_modules/svgo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", - "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", - "deprecated": "This SVGO version is no longer supported. Upgrade to v2.x.x.", + "@wojtekmaj/enzyme-adapter-react-17": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@wojtekmaj/enzyme-adapter-react-17/-/enzyme-adapter-react-17-0.6.3.tgz", + "integrity": "sha512-Kp1ZJxtHkKEnUksaWrcMABNTOgL4wOt8VI6k2xOek2aH9PtZcWRXJNUEgnKrdJrqg5UqIjRslbVF9uUqwQJtFg==", "dev": true, - "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", + "requires": { + "@wojtekmaj/enzyme-adapter-utils": "^0.1.1", + "enzyme-shallow-equal": "^1.0.0", + "has": "^1.0.0", + "object.assign": "^4.1.0", "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" - }, - "bin": { - "svgo": "bin/svgo" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/@svgr/webpack": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz", - "integrity": "sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/plugin-transform-react-constant-elements": "^7.12.1", - "@babel/preset-env": "^7.12.1", - "@babel/preset-react": "^7.12.5", - "@svgr/core": "^5.5.0", - "@svgr/plugin-jsx": "^5.5.0", - "@svgr/plugin-svgo": "^5.5.0", - "loader-utils": "^2.0.0" - }, - "engines": { - "node": ">=10" + "prop-types": "^15.7.0", + "react-is": "^17.0.2", + "react-test-renderer": "^17.0.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@tannin/compile": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@tannin/compile/-/compile-1.1.0.tgz", - "integrity": "sha512-n8m9eNDfoNZoxdvWiTfW/hSPhehzLJ3zW7f8E7oT6mCROoMNWCB4TYtv041+2FMAxweiE0j7i1jubQU4MEC/Gg==", - "dependencies": { - "@tannin/evaluate": "^1.2.0", - "@tannin/postfix": "^1.1.0" - } - }, - "node_modules/@tannin/evaluate": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@tannin/evaluate/-/evaluate-1.2.0.tgz", - "integrity": "sha512-3ioXvNowbO/wSrxsDG5DKIMxC81P0QrQTYai8zFNY+umuoHWRPbQ/TuuDEOju9E+jQDXmj6yI5GyejNuh8I+eg==" - }, - "node_modules/@tannin/plural-forms": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@tannin/plural-forms/-/plural-forms-1.1.0.tgz", - "integrity": "sha512-xl9R2mDZO/qiHam1AgMnAES6IKIg7OBhcXqy6eDsRCdXuxAFPcjrej9HMjyCLE0DJ/8cHf0i5OQTstuBRhpbHw==", - "dependencies": { - "@tannin/compile": "^1.1.0" - } - }, - "node_modules/@tannin/postfix": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@tannin/postfix/-/postfix-1.1.0.tgz", - "integrity": "sha512-oocsqY7g0cR+Gur5jRQLSrX2OtpMLMse1I10JQBm8CdGMrDkh1Mg2gjsiquMHRtBs4Qwu5wgEp5GgIYHk4SNPw==" - }, - "node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@trysound/sax": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", - "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", - "dev": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/@types/babel__core": { - "version": "7.1.16", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.16.tgz", - "integrity": "sha512-EAEHtisTMM+KaKwfWdC3oyllIqswlznXCIVCt7/oRNrh+DhgT4UEBNC/jlADNjvw7UnfbcdkGQcPVZ1xYiLcrQ==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.3.tgz", - "integrity": "sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", - "dev": true, "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + } } }, - "node_modules/@types/babel__traverse": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz", - "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==", + "@wojtekmaj/enzyme-adapter-utils": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@wojtekmaj/enzyme-adapter-utils/-/enzyme-adapter-utils-0.1.1.tgz", + "integrity": "sha512-bNPWtN/d8huKOkC6j1E3EkSamnRrHHT7YuR6f9JppAQqtoAm3v4/vERe4J14jQKmHLCyEBHXrlgb7H6l817hVg==", "dev": true, - "dependencies": { - "@babel/types": "^7.3.0" + "requires": { + "function.prototype.name": "^1.1.0", + "has": "^1.0.0", + "object.assign": "^4.1.0", + "object.fromentries": "^2.0.0", + "prop-types": "^15.7.0" } }, - "node_modules/@types/cheerio": { - "version": "0.22.30", - "resolved": "https://registry.npmjs.org/@types/cheerio/-/cheerio-0.22.30.tgz", - "integrity": "sha512-t7ZVArWZlq3dFa9Yt33qFBQIK4CQd1Q3UJp0V+UhP6vgLWLM6Qug7vZuRSGXg45zXeB1Fm5X2vmBkEX58LV2Tw==", - "dev": true, - "dependencies": { - "@types/node": "*" + "@wordpress/a11y": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@wordpress/a11y/-/a11y-3.2.3.tgz", + "integrity": "sha512-s6ghUetvxRPDyC3fohaXtOeoTQeA1JPYPNSic616LWLWvx/bOCY4RibfwxS7p7prY1+0Px2VhxsPIM2kZuR/wA==", + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/dom-ready": "^3.2.2", + "@wordpress/i18n": "^4.2.3" } }, - "node_modules/@types/eslint": { - "version": "7.28.2", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.28.2.tgz", - "integrity": "sha512-KubbADPkfoU75KgKeKLsFHXnU4ipH7wYg0TRT33NK3N3yiu7jlFAAoygIWBV+KbuHx/G+AvuGX6DllnK35gfJA==", - "dev": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" + "@wordpress/api-fetch": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-5.2.3.tgz", + "integrity": "sha512-hEGn9vXk76ejdvei1pBX/kaQ3xnKlE2dwtCXszgem8PdDF5GYzgESEwYaWvfgPAfJs7xF283FN1QsNzA4M+N9A==", + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/i18n": "^4.2.3", + "@wordpress/url": "^3.2.3" } }, - "node_modules/@types/eslint-scope": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.1.tgz", - "integrity": "sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g==", - "dev": true, - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" + "@wordpress/autop": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@wordpress/autop/-/autop-3.2.2.tgz", + "integrity": "sha512-lfw7yZs1PeWVdPnKaV5rPMGIhkwPmdnKaviIbQV48E8irQOcPaT3NgWQksizr1Qlersm6aNBkXZfM1idRzzcgA==", + "requires": { + "@babel/runtime": "^7.13.10" } }, - "node_modules/@types/estree": { - "version": "0.0.50", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", + "@wordpress/babel-plugin-import-jsx-pragma": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@wordpress/babel-plugin-import-jsx-pragma/-/babel-plugin-import-jsx-pragma-3.1.0.tgz", + "integrity": "sha512-518mL3goaSeXtJCQcPK9OYHUUiA0sjXuoGWHBwRalkyTIQZZy5ZZzlwrlSc9ESZcOw9BZ+Uo8CJRjV2OWnx+Zw==", "dev": true }, - "node_modules/@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", - "dev": true, - "dependencies": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "node_modules/@types/graceful-fs": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", - "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "@wordpress/babel-preset-default": { + "version": "6.3.3", + "resolved": "https://registry.npmjs.org/@wordpress/babel-preset-default/-/babel-preset-default-6.3.3.tgz", + "integrity": "sha512-sMP7LgBmYaF5Cz+FZ4EXS5Qu4Tecv3JFIYEVbPLmn+/AIA+fzrEELn2BuEcHmd0q7VogAAmhU1iw2Fndj29bgw==", "dev": true, - "dependencies": { - "@types/node": "*" + "requires": { + "@babel/core": "^7.13.10", + "@babel/plugin-transform-react-jsx": "^7.12.7", + "@babel/plugin-transform-runtime": "^7.13.10", + "@babel/preset-env": "^7.13.10", + "@babel/preset-typescript": "^7.13.0", + "@babel/runtime": "^7.13.10", + "@wordpress/babel-plugin-import-jsx-pragma": "^3.1.0", + "@wordpress/browserslist-config": "^4.1.0", + "@wordpress/element": "^4.0.2", + "@wordpress/warning": "^2.2.2", + "browserslist": "^4.16.6", + "core-js": "^3.12.1" } }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", - "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", + "@wordpress/base-styles": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@wordpress/base-styles/-/base-styles-4.0.1.tgz", + "integrity": "sha512-fwwDtCO2bt6v+kYE2iNrYaVg1u6iPgipWozS3OrMnZGdT6kmx8K7IGSP+s2zjfrtmJKfdRiJqRnGtKnbcJdxuQ==", "dev": true }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" + "@wordpress/blob": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@wordpress/blob/-/blob-3.2.1.tgz", + "integrity": "sha512-qD8wZ6n+hjoshV2dp9eGH3VismOM0kvrJn5cSe4PaoYDREqUhioJIDXktZxaohnvgWOq6xfJH6rS4Or8W0r9ew==", + "requires": { + "@babel/runtime": "^7.13.10" } }, - "node_modules/@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", - "dev": true - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", - "dev": true - }, - "node_modules/@types/lodash": { - "version": "4.14.176", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.176.tgz", - "integrity": "sha512-xZmuPTa3rlZoIbtDUyJKZQimJV3bxCmzMIO2c9Pz9afyDro6kr7R79GwcB6mRhuoPmV2p1Vb66WOJH7F886WKQ==" - }, - "node_modules/@types/mdast": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", - "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", - "dev": true, - "dependencies": { - "@types/unist": "*" + "@wordpress/block-editor": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@wordpress/block-editor/-/block-editor-7.0.3.tgz", + "integrity": "sha512-rCPth+v+Nu5JiIkOgUaCgiVkub+VWd8fXzek/vtk5T+VXDJ7jJA6dLcuR8zLigWEkyMuZ5nG0RADGgldy9WqxA==", + "requires": { + "@babel/runtime": "^7.13.10", + "@react-spring/web": "^9.2.4", + "@wordpress/a11y": "^3.2.3", + "@wordpress/api-fetch": "^5.2.3", + "@wordpress/blob": "^3.2.1", + "@wordpress/block-serialization-default-parser": "^4.2.2", + "@wordpress/blocks": "^11.1.1", + "@wordpress/components": "^18.0.0", + "@wordpress/compose": "^5.0.3", + "@wordpress/data": "^6.1.1", + "@wordpress/data-controls": "^2.2.4", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.4", + "@wordpress/element": "^4.0.2", + "@wordpress/hooks": "^3.2.1", + "@wordpress/html-entities": "^3.2.2", + "@wordpress/i18n": "^4.2.3", + "@wordpress/icons": "^6.0.0", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keyboard-shortcuts": "^3.0.3", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/notices": "^3.2.4", + "@wordpress/rich-text": "^5.0.3", + "@wordpress/shortcode": "^3.2.2", + "@wordpress/token-list": "^2.2.1", + "@wordpress/url": "^3.2.3", + "@wordpress/warning": "^2.2.2", + "@wordpress/wordcount": "^3.2.2", + "classnames": "^2.3.1", + "colord": "^2.7.0", + "css-mediaquery": "^0.1.2", + "diff": "^4.0.2", + "dom-scroll-into-view": "^1.2.1", + "inherits": "^2.0.3", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "react-autosize-textarea": "^7.1.0", + "react-easy-crop": "^3.0.0", + "redux-multi": "^0.1.12", + "rememo": "^3.0.0", + "traverse": "^0.6.6" } }, - "node_modules/@types/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", - "dev": true - }, - "node_modules/@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", - "dev": true - }, - "node_modules/@types/mousetrap": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/@types/mousetrap/-/mousetrap-1.6.8.tgz", - "integrity": "sha512-zTqjvgCUT5EoXqbqmd8iJMb4NJqyV/V7pK7AIKq7qcaAsJIpGlTVJS1HQM6YkdHCdnkNSbhcQI7MXYxFfE3iCA==" - }, - "node_modules/@types/node": { - "version": "16.11.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.6.tgz", - "integrity": "sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==", - "dev": true - }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", - "dev": true - }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + "@wordpress/block-library": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@wordpress/block-library/-/block-library-6.0.1.tgz", + "integrity": "sha512-KrfvAtW+radrMI6/MsLPyoC8JAlu9hCxd3Re/aHRDTsy2UZRDm5aBOVwg+d5bcP0EBELauIGBrgII9+66OBnDw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/a11y": "^3.2.3", + "@wordpress/api-fetch": "^5.2.3", + "@wordpress/autop": "^3.2.2", + "@wordpress/blob": "^3.2.1", + "@wordpress/block-editor": "^7.0.3", + "@wordpress/blocks": "^11.1.1", + "@wordpress/components": "^18.0.0", + "@wordpress/compose": "^5.0.3", + "@wordpress/core-data": "^4.0.3", + "@wordpress/data": "^6.1.1", + "@wordpress/date": "^4.2.2", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.4", + "@wordpress/element": "^4.0.2", + "@wordpress/escape-html": "^2.2.2", + "@wordpress/hooks": "^3.2.1", + "@wordpress/html-entities": "^3.2.2", + "@wordpress/i18n": "^4.2.3", + "@wordpress/icons": "^6.0.0", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/notices": "^3.2.4", + "@wordpress/primitives": "^3.0.2", + "@wordpress/reusable-blocks": "^3.0.3", + "@wordpress/rich-text": "^5.0.3", + "@wordpress/server-side-render": "^3.0.3", + "@wordpress/url": "^3.2.3", + "@wordpress/viewport": "^4.0.3", + "classnames": "^2.3.1", + "colord": "^2.7.0", + "fast-average-color": "4.3.0", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "micromodal": "^0.4.6", + "moment": "^2.22.1" + } }, - "node_modules/@types/prettier": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.1.tgz", - "integrity": "sha512-Fo79ojj3vdEZOHg3wR9ksAMRz4P3S5fDB5e/YWZiFnyFQI1WY2Vftu9XoXVVtJfxB7Bpce/QTqWSSntkz2Znrw==", - "dev": true + "@wordpress/block-serialization-default-parser": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@wordpress/block-serialization-default-parser/-/block-serialization-default-parser-4.2.2.tgz", + "integrity": "sha512-XLig548y+chFJTmjrJptiEwZuMHpz7azIpoZssedGxP1ibffo8GV1VnKzGtr/P+Z/1PHt1L00pQgxtAZmKKBag==", + "requires": { + "@babel/runtime": "^7.13.10" + } }, - "node_modules/@types/prop-types": { - "version": "15.7.4", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz", - "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==" + "@wordpress/blocks": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/@wordpress/blocks/-/blocks-11.1.1.tgz", + "integrity": "sha512-Pzk3A4UDQSy1Ay80x/fyrg27efLwfkKyzIHY2XtQrXGlDAT+oGwgJYmqgYff1SYhqFEjq5a7fkN2hGBaYXk+yQ==", + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/autop": "^3.2.2", + "@wordpress/blob": "^3.2.1", + "@wordpress/block-serialization-default-parser": "^4.2.2", + "@wordpress/compose": "^5.0.3", + "@wordpress/data": "^6.1.1", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.4", + "@wordpress/element": "^4.0.2", + "@wordpress/hooks": "^3.2.1", + "@wordpress/html-entities": "^3.2.2", + "@wordpress/i18n": "^4.2.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/shortcode": "^3.2.2", + "colord": "^2.7.0", + "hpq": "^1.3.0", + "lodash": "^4.17.21", + "rememo": "^3.0.0", + "showdown": "^1.9.1", + "simple-html-tokenizer": "^0.5.7", + "uuid": "^8.3.0" + } }, - "node_modules/@types/q": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", - "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==", + "@wordpress/browserslist-config": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@wordpress/browserslist-config/-/browserslist-config-4.1.0.tgz", + "integrity": "sha512-RSJhgY2xmz6yAdDNhz/NvAO6JS+91vv9cVL7VDG2CftbyjTXBef05vWt3FzZhfeF0xUrYdpZL1PVpxmJiKvbEg==", "dev": true }, - "node_modules/@types/react": { - "version": "16.14.20", - "resolved": "https://registry.npmjs.org/@types/react/-/react-16.14.20.tgz", - "integrity": "sha512-SV7TaVc8e9E/5Xuv6TIyJ5VhQpZoVFJqX6IZgj5HZoFCtIDCArE3qXkcHlc6O/Ud4UwcMoX+tlvDA95YrKdLgA==", - "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" + "@wordpress/components": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/@wordpress/components/-/components-18.0.0.tgz", + "integrity": "sha512-0KWlm3AXHVd1EeEd8K1Q/aH9ieTZCHdcSyH2m9p4s0mpxl7Ddk0ly9PPAMt6HVliqapYuxAf2gb1UHO9pFyRCw==", + "requires": { + "@babel/runtime": "^7.13.10", + "@emotion/cache": "^11.4.0", + "@emotion/css": "^11.1.3", + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "@emotion/utils": "1.0.0", + "@wordpress/a11y": "^3.2.3", + "@wordpress/compose": "^5.0.3", + "@wordpress/date": "^4.2.2", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.4", + "@wordpress/element": "^4.0.2", + "@wordpress/hooks": "^3.2.1", + "@wordpress/i18n": "^4.2.3", + "@wordpress/icons": "^6.0.0", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/primitives": "^3.0.2", + "@wordpress/rich-text": "^5.0.3", + "@wordpress/warning": "^2.2.2", + "classnames": "^2.3.1", + "colord": "^2.7.0", + "dom-scroll-into-view": "^1.2.1", + "downshift": "^6.0.15", + "framer-motion": "^4.1.17", + "gradient-parser": "^0.1.5", + "highlight-words-core": "^1.2.2", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "moment": "^2.22.1", + "re-resizable": "^6.4.0", + "react-colorful": "^5.3.1", + "react-dates": "^17.1.1", + "react-resize-aware": "^3.1.0", + "react-use-gesture": "^9.0.0", + "reakit": "^1.3.8", + "rememo": "^3.0.0", + "tinycolor2": "^1.4.2", + "uuid": "^8.3.0" } }, - "node_modules/@types/react-dom": { - "version": "16.9.14", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.14.tgz", - "integrity": "sha512-FIX2AVmPTGP30OUJ+0vadeIFJJ07Mh1m+U0rxfgyW34p3rTlXI+nlenvAxNn4BP36YyI9IJ/+UJ7Wu22N1pI7A==", - "dependencies": { - "@types/react": "^16" + "@wordpress/compose": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.0.3.tgz", + "integrity": "sha512-uRd4tBp2+FWorLuoec3CyoizgnlbrxvAyPx+it7+OmzP+/Lz6rRYkymaFDA/XTh2umkjYT8pK7FQP1H8+DfqVA==", + "requires": { + "@babel/runtime": "^7.13.10", + "@types/lodash": "^4.14.172", + "@types/mousetrap": "^1.6.8", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/dom": "^3.2.4", + "@wordpress/element": "^4.0.2", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/priority-queue": "^2.2.2", + "clipboard": "^2.0.8", + "lodash": "^4.17.21", + "mousetrap": "^1.6.5", + "react-resize-aware": "^3.1.0", + "use-memo-one": "^1.1.1" } }, - "node_modules/@types/scheduler": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" + "@wordpress/core-data": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@wordpress/core-data/-/core-data-4.0.3.tgz", + "integrity": "sha512-6wMJfVH+YpISmF7QJG0oXLNkqnJ7lUygGuX3ng8gsRug4jn0HrdB99LSQu9xtS5JNHNKKEMnqi6/3FIcunWLhQ==", + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/api-fetch": "^5.2.3", + "@wordpress/blocks": "^11.1.1", + "@wordpress/data": "^6.1.1", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/element": "^4.0.2", + "@wordpress/html-entities": "^3.2.2", + "@wordpress/i18n": "^4.2.3", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/url": "^3.2.3", + "equivalent-key-map": "^0.2.2", + "lodash": "^4.17.21", + "rememo": "^3.0.0", + "uuid": "^8.3.0" + } }, - "node_modules/@types/source-list-map": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", - "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==", - "dev": true - }, - "node_modules/@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "dev": true - }, - "node_modules/@types/tapable": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.8.tgz", - "integrity": "sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ==", - "dev": true - }, - "node_modules/@types/uglify-js": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.13.1.tgz", - "integrity": "sha512-O3MmRAk6ZuAKa9CHgg0Pr0+lUOqoMLpc9AS4R8ano2auvsg7IE8syF3Xh/NPr26TWklxYcqoEEFdzLLs1fV9PQ==", - "dev": true, - "dependencies": { - "source-map": "^0.6.1" + "@wordpress/data": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.1.1.tgz", + "integrity": "sha512-I+kvY2aMA4Ec62rZCS4vUKRalZ01qiBTkEQXash+usYH3Lsyi6rULekwUZ9zcisVpWYbaLZsrmmarCusS65KTg==", + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/compose": "^5.0.3", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/element": "^4.0.2", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/priority-queue": "^2.2.2", + "@wordpress/redux-routine": "^4.2.1", + "equivalent-key-map": "^0.2.2", + "is-promise": "^4.0.0", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "turbo-combine-reducers": "^1.0.2", + "use-memo-one": "^1.1.1" } }, - "node_modules/@types/uglify-js/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "@wordpress/data-controls": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@wordpress/data-controls/-/data-controls-2.2.4.tgz", + "integrity": "sha512-JG8vJIEdmDfbdUpKaz4AyTlQNe/oV1i6dteCIKk5VI6QE+Zl9nWkDJMYpsqrD3TG+F7tdHLcMJCZC/NtGWgQBQ==", + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/api-fetch": "^5.2.3", + "@wordpress/data": "^6.1.1", + "@wordpress/deprecated": "^3.2.2" } }, - "node_modules/@types/unist": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", - "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", - "dev": true - }, - "node_modules/@types/webpack": { - "version": "4.41.31", - "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.31.tgz", - "integrity": "sha512-/i0J7sepXFIp1ZT7FjUGi1eXMCg8HCCzLJEQkKsOtbJFontsJLolBcDC+3qxn5pPwiCt1G0ZdRmYRzNBtvpuGQ==", - "dev": true, - "dependencies": { - "@types/node": "*", - "@types/tapable": "^1", - "@types/uglify-js": "*", - "@types/webpack-sources": "*", - "anymatch": "^3.0.0", - "source-map": "^0.6.0" + "@wordpress/date": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@wordpress/date/-/date-4.2.2.tgz", + "integrity": "sha512-sYcMvFwrVoYv5lL9NsYLVd29hfuqgf1L1WsIjDV8hMna1eqr9f8xCrZSLgBKkDBmVWiIcleYGP5uDdrKpu6EiA==", + "requires": { + "@babel/runtime": "^7.13.10", + "moment": "^2.22.1", + "moment-timezone": "^0.5.31" } }, - "node_modules/@types/webpack-sources": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-3.2.0.tgz", - "integrity": "sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg==", + "@wordpress/dependency-extraction-webpack-plugin": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@wordpress/dependency-extraction-webpack-plugin/-/dependency-extraction-webpack-plugin-3.2.1.tgz", + "integrity": "sha512-Ltd+1CJb7PMh6iN2Mse+3yN/oMORug5qXSj/3xmuZERzZO2SO6xNEJGml8yK9ev747cbHktEpitK4H+8VO3Ekg==", "dev": true, - "dependencies": { - "@types/node": "*", - "@types/source-list-map": "*", - "source-map": "^0.7.3" + "requires": { + "json2php": "^0.0.4", + "webpack-sources": "^2.2.0" } }, - "node_modules/@types/webpack-sources/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true, - "engines": { - "node": ">= 8" + "@wordpress/deprecated": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.2.2.tgz", + "integrity": "sha512-htsu2zJUuGYG1+jejAi0r25bQQOT3bB0MGjoSixqZ0sRkFMRIdjmMLrSbpGrl0s5IRK2/w/slsStPFmm3reJtA==", + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/hooks": "^3.2.1" } }, - "node_modules/@types/webpack/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "@wordpress/dom": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.2.4.tgz", + "integrity": "sha512-VQ7ZCyP7/cSWK8QdqQnrgaiM32/kFm/geN4F84AkFj9ZyYuhI13I631uoe5SDXtn1PD3Mr6JNTyLXcJFWbnY2g==", + "requires": { + "@babel/runtime": "^7.13.10", + "lodash": "^4.17.21" } }, - "node_modules/@types/yargs": { - "version": "15.0.14", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", - "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" + "@wordpress/dom-ready": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@wordpress/dom-ready/-/dom-ready-3.2.2.tgz", + "integrity": "sha512-yCpm/vG3GanhhACnpbc7GZ2sv6oSHIkTxNPgejA5Z8cr0mEc6irsWDzhEHKcP3OhSina++IZ9ZidO7JH7eE2Xg==", + "requires": { + "@babel/runtime": "^7.13.10" } }, - "node_modules/@types/yargs-parser": { - "version": "20.2.1", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", - "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", - "dev": true - }, - "node_modules/@types/yauzl": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.2.tgz", - "integrity": "sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==", + "@wordpress/e2e-test-utils": { + "version": "5.4.4", + "resolved": "https://registry.npmjs.org/@wordpress/e2e-test-utils/-/e2e-test-utils-5.4.4.tgz", + "integrity": "sha512-llAWmQXyGFqEc58NHLX2SX1I03VRLCfdrZ2TWRK+qYY6QZns4wsJP4Lg2c1SsXIzUUB9u95Kzx3LvGcZcqLTfw==", "dev": true, - "optional": true, - "dependencies": { - "@types/node": "*" + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/api-fetch": "^5.2.3", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/url": "^3.2.3", + "form-data": "^4.0.0", + "lodash": "^4.17.21", + "node-fetch": "^2.6.0" } }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", - "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", + "@wordpress/edit-post": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@wordpress/edit-post/-/edit-post-5.0.3.tgz", + "integrity": "sha512-/DNgi6LqDqBQoGzwYdDIKN++cu2Ry5Zev99sQMN1pnVhlmXXt6nQVUXeJ53Rfi1/baK1VB4okDwKYD84UdZT5Q==", "dev": true, - "dependencies": { - "@typescript-eslint/experimental-utils": "4.33.0", - "@typescript-eslint/scope-manager": "4.33.0", - "debug": "^4.3.1", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", - "regexpp": "^3.1.0", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^4.0.0", - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/a11y": "^3.2.3", + "@wordpress/api-fetch": "^5.2.3", + "@wordpress/block-editor": "^7.0.3", + "@wordpress/block-library": "^6.0.1", + "@wordpress/blocks": "^11.1.1", + "@wordpress/components": "^18.0.0", + "@wordpress/compose": "^5.0.3", + "@wordpress/core-data": "^4.0.3", + "@wordpress/data": "^6.1.1", + "@wordpress/data-controls": "^2.2.4", + "@wordpress/editor": "^12.0.0", + "@wordpress/element": "^4.0.2", + "@wordpress/hooks": "^3.2.1", + "@wordpress/i18n": "^4.2.3", + "@wordpress/icons": "^6.0.0", + "@wordpress/interface": "^4.1.1", + "@wordpress/keyboard-shortcuts": "^3.0.3", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/media-utils": "^3.0.2", + "@wordpress/notices": "^3.2.4", + "@wordpress/plugins": "^4.0.3", + "@wordpress/primitives": "^3.0.2", + "@wordpress/url": "^3.2.3", + "@wordpress/viewport": "^4.0.3", + "@wordpress/warning": "^2.2.2", + "classnames": "^2.3.1", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "rememo": "^3.0.0", + "uuid": "8.3.0" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true + "dependencies": { + "uuid": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.0.tgz", + "integrity": "sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ==", + "dev": true } } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" + "@wordpress/editor": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@wordpress/editor/-/editor-12.0.0.tgz", + "integrity": "sha512-o2MD1eAaIk5pmuZ/MzBO0Mz3ogoOcuugQ4cZpvVl2lZsu8AzVK3PfhrWWgkLFlu5pho5UCBbCKQjwJoAJkyd4Q==", + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/a11y": "^3.2.3", + "@wordpress/api-fetch": "^5.2.3", + "@wordpress/autop": "^3.2.2", + "@wordpress/blob": "^3.2.1", + "@wordpress/block-editor": "^7.0.3", + "@wordpress/blocks": "^11.1.1", + "@wordpress/components": "^18.0.0", + "@wordpress/compose": "^5.0.3", + "@wordpress/core-data": "^4.0.3", + "@wordpress/data": "^6.1.1", + "@wordpress/data-controls": "^2.2.4", + "@wordpress/date": "^4.2.2", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/element": "^4.0.2", + "@wordpress/hooks": "^3.2.1", + "@wordpress/html-entities": "^3.2.2", + "@wordpress/i18n": "^4.2.3", + "@wordpress/icons": "^6.0.0", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keyboard-shortcuts": "^3.0.3", + "@wordpress/keycodes": "^3.2.3", + "@wordpress/media-utils": "^3.0.2", + "@wordpress/notices": "^3.2.4", + "@wordpress/reusable-blocks": "^3.0.3", + "@wordpress/rich-text": "^5.0.3", + "@wordpress/server-side-render": "^3.0.3", + "@wordpress/url": "^3.2.3", + "@wordpress/wordcount": "^3.2.2", + "classnames": "^2.3.1", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "react-autosize-textarea": "^7.1.0", + "rememo": "^3.0.0" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "@wordpress/element": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.2.tgz", + "integrity": "sha512-qBNpkLb7Hh3r9aSwBOBMwRUevScbN5iR1M5B8/ZOuSZbeXYNcgWxX4WqVrt5Y52CNm8WwoQTdqcuIziNN6lhig==", + "requires": { + "@babel/runtime": "^7.13.10", + "@types/react": "^16.9.0", + "@types/react-dom": "^16.9.0", + "@wordpress/escape-html": "^2.2.2", + "lodash": "^4.17.21", + "react": "^17.0.1", + "react-dom": "^17.0.1" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/@typescript-eslint/experimental-utils": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", - "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.7", - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" + "@wordpress/escape-html": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-2.2.2.tgz", + "integrity": "sha512-NuPury2dyaqF7zpDaUOKaoM0FrEuqaDE1c3j7rM6kceJ4ZFDHnCLf5NivwchOLo7Xs0oVtqBdDza/dcSQaLFGg==", + "requires": { + "@babel/runtime": "^7.13.10" } }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "@wordpress/eslint-plugin": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/@wordpress/eslint-plugin/-/eslint-plugin-9.2.0.tgz", + "integrity": "sha512-x0vI4EWeG20TyewXdiyUhGSJRqXR8vw47WZjzdmL8iuitDCoyWkKe73wtEs/mWLDrSNms8S0bTnp0dK6UAMXJw==", "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" + "requires": { + "@typescript-eslint/eslint-plugin": "^4.31.0", + "@typescript-eslint/parser": "^4.31.0", + "@wordpress/prettier-config": "^1.1.1", + "babel-eslint": "^10.1.0", + "cosmiconfig": "^7.0.0", + "eslint-config-prettier": "^7.1.0", + "eslint-plugin-import": "^2.23.4", + "eslint-plugin-jest": "^24.1.3", + "eslint-plugin-jsdoc": "^36.0.8", + "eslint-plugin-jsx-a11y": "^6.4.1", + "eslint-plugin-prettier": "^3.3.0", + "eslint-plugin-react": "^7.22.0", + "eslint-plugin-react-hooks": "^4.2.0", + "globals": "^12.0.0", + "prettier": "npm:wp-prettier@2.2.1-beta-1", + "requireindex": "^1.2.0" }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", - "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", - "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "debug": "^4.3.1" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true + "cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } } } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", - "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "@wordpress/hooks": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-3.2.1.tgz", + "integrity": "sha512-yI8MHs6UsvgJdDsOnXGkY7/7hrOCEv/M7vwdEVA5r6nGzgJaJxf8pjBqzRkCq3nVaWqxoNZgCMHJSul6Q8RR2g==", + "requires": { + "@babel/runtime": "^7.13.10" } }, - "node_modules/@typescript-eslint/types": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", - "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", - "dev": true, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "@wordpress/html-entities": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@wordpress/html-entities/-/html-entities-3.2.2.tgz", + "integrity": "sha512-MsmB1wtDMFfvNQiKMVMW+1ie2P3+tBZiHESkDPnXw34Dt4Tk0+QY7eYCR9krNcjJImWYJcxL+4n4M1OF9oQv0Q==", + "requires": { + "@babel/runtime": "^7.13.10" } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", - "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "@wordpress/i18n": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.2.3.tgz", + "integrity": "sha512-iaL7WVmFBVLyUJR0FVeaI0YJK3BiYg6Ir+s3PoJN3ppm+YsZUGThstHL8zSfQFMF0WaQ0OFWjnDqNl1th2annA==", + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/hooks": "^3.2.1", + "gettext-parser": "^1.3.1", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "sprintf-js": "^1.1.1", + "tannin": "^1.2.0" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": { + "@wordpress/icons": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" + "resolved": "https://registry.npmjs.org/@wordpress/icons/-/icons-6.0.0.tgz", + "integrity": "sha512-dLr7O2mu6JlCQhM3uSIRJHFyv1AeYpRosrcWF9+zlhUy7RBczfLfhf7lXO6gVxhyuUEiWYfvesB5pNha4HxsVg==", + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/element": "^4.0.2", + "@wordpress/primitives": "^3.0.2" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "@wordpress/interface": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@wordpress/interface/-/interface-4.1.1.tgz", + "integrity": "sha512-O5lNIDOez8y8ywIX7udgrm1hmVPRZ7QkuW0qa826FuFFSVvgWrdI/hXBaUlWfjfJHJQEuDTkeG3Vtc8kRPPR2A==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/a11y": "^3.2.3", + "@wordpress/components": "^18.0.0", + "@wordpress/compose": "^5.0.3", + "@wordpress/data": "^6.1.1", + "@wordpress/deprecated": "^3.2.2", + "@wordpress/element": "^4.0.2", + "@wordpress/i18n": "^4.2.3", + "@wordpress/icons": "^6.0.0", + "@wordpress/plugins": "^4.0.3", + "@wordpress/viewport": "^4.0.3", + "classnames": "^2.3.1", + "lodash": "^4.17.21" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", - "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "4.33.0", - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "@wordpress/is-shallow-equal": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-4.2.0.tgz", + "integrity": "sha512-9Oy7f3HFLMNfry4LLwYmfx4tROmusPAOfanv9F/MgzSBfMH7eyxU2JZd4KrP7IbPb59UfoUa8GhaLsnqKm66og==", + "requires": { + "@babel/runtime": "^7.13.10" } }, - "node_modules/@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "@wordpress/jest-console": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@wordpress/jest-console/-/jest-console-4.1.0.tgz", + "integrity": "sha512-MAbEfYUH+odlYYtPNKoKnWzSZKZjSc2r2kvFJ7FR920ZdteEgSAPIOvjyv4r4UbJy3ZuKemnXHuVtcTAKca5Tw==", "dev": true, - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + "requires": { + "@babel/runtime": "^7.13.10", + "jest-matcher-utils": "^26.6.2", + "lodash": "^4.17.21" } }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "@wordpress/jest-preset-default": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@wordpress/jest-preset-default/-/jest-preset-default-7.1.1.tgz", + "integrity": "sha512-925Ern0GAABF2/2B25svi8GFHJqPWLJlwndJcCfwbx8CRNXeXu3YfYAtZrDE6vDRBxKJQEk8j9upptiZrV8rJw==", "dev": true, - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" + "requires": { + "@wojtekmaj/enzyme-adapter-react-17": "^0.6.1", + "@wordpress/jest-console": "^4.1.0", + "babel-jest": "^26.6.3", + "enzyme": "^3.11.0", + "enzyme-to-json": "^3.4.4" } }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "@wordpress/jest-puppeteer-axe": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@wordpress/jest-puppeteer-axe/-/jest-puppeteer-axe-3.1.0.tgz", + "integrity": "sha512-XdxXI9nKSAyPWMMjWObfEuumcbZG0wSvlGzNl/qlTjcxwVNaCIxzBBfMxbcxNLcXHasNr/PowbxVqMCEaMfpcA==", "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" + "requires": { + "@axe-core/puppeteer": "^4.0.0", + "@babel/runtime": "^7.13.10" } }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "dev": true, - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "dev": true, - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", - "dev": true - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" + "@wordpress/keyboard-shortcuts": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@wordpress/keyboard-shortcuts/-/keyboard-shortcuts-3.0.3.tgz", + "integrity": "sha512-GAISgZGQYjilfiHGawIpKDtgL6EbsLrzlZzLal7XHVFNDAkFfXG+RbWvSgH5gFmoS0fF8rbU2U7+W38MCU90Gw==", + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/compose": "^5.0.3", + "@wordpress/data": "^6.1.1", + "@wordpress/element": "^4.0.2", + "@wordpress/keycodes": "^3.2.3", + "lodash": "^4.17.21", + "rememo": "^3.0.0" } }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@wordpress/keycodes": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@wordpress/keycodes/-/keycodes-3.2.3.tgz", + "integrity": "sha512-1ClhtTbOSijLsyubbTlg1Df++W4CmjjRj88L7rzGX63iEHfBX6SSvui2pWVlQigDNdLNoaYGOaWm5eqDnvxkeQ==", + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/i18n": "^4.2.3", + "lodash": "^4.17.21" } }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" + "@wordpress/media-utils": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@wordpress/media-utils/-/media-utils-3.0.2.tgz", + "integrity": "sha512-z/bN8nDB7AmGrMEOHwhp54UvoeyCcRrVmxiJxmke4VeYvCbSRlYwNVEiH8Cg13WhDrJEAIemqjmUdkRL+6c42Q==", + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/api-fetch": "^5.2.3", + "@wordpress/blob": "^3.2.1", + "@wordpress/element": "^4.0.2", + "@wordpress/i18n": "^4.2.3", + "lodash": "^4.17.21" } }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@wordpress/notices": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@wordpress/notices/-/notices-3.2.4.tgz", + "integrity": "sha512-YpzgJwKwoO6SwCwu33jAr5FzaI9EezTKSu1VMZ/CQh4HNlnZxUSx/H+JDoUzHQWdHF3Z7EWiPBy8rZQVzFVaLw==", + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/a11y": "^3.2.3", + "@wordpress/data": "^6.1.1", + "lodash": "^4.17.21" } }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } + "@wordpress/npm-package-json-lint-config": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@wordpress/npm-package-json-lint-config/-/npm-package-json-lint-config-4.1.0.tgz", + "integrity": "sha512-FjXL5GbpmI/wXXcpCf2sKosVIVuWjUuHmDbwcMzd0SClcudo9QjDRdVe35We+js8eQLPgB9hsG4Cty6cAFFxsQ==", + "dev": true }, - "node_modules/@webpack-cli/configtest": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.0.tgz", - "integrity": "sha512-ttOkEkoalEHa7RaFYpM0ErK1xc4twg3Am9hfHhL7MVqlHebnkYd2wuI/ZqTDj0cVzZho6PdinY0phFZV3O0Mzg==", + "@wordpress/plugins": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@wordpress/plugins/-/plugins-4.0.3.tgz", + "integrity": "sha512-NRmnuaoj0AlMz+APYLWpDUpfl2ammVsUjZLGgTJykjREQhsb6U5FY6DI3pHyJ79kMTtgpioGk8cD7bGiG4PVYA==", "dev": true, - "peerDependencies": { - "webpack": "4.x.x || 5.x.x", - "webpack-cli": "4.x.x" + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/compose": "^5.0.3", + "@wordpress/element": "^4.0.2", + "@wordpress/hooks": "^3.2.1", + "@wordpress/icons": "^6.0.0", + "lodash": "^4.17.21", + "memize": "^1.1.0" } }, - "node_modules/@webpack-cli/info": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.0.tgz", - "integrity": "sha512-F6b+Man0rwE4n0409FyAJHStYA5OIZERxmnUfLVwv0mc0V1wLad3V7jqRlMkgKBeAq07jUvglacNaa6g9lOpuw==", + "@wordpress/postcss-plugins-preset": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@wordpress/postcss-plugins-preset/-/postcss-plugins-preset-3.2.2.tgz", + "integrity": "sha512-E2dha01KOX6feGL3XLXL5aMfakYZpUl1be/LC3B2puaidCz73GK/mqxATJhHzMbr8zzwtqSJ2asj0WOiPwz8+A==", "dev": true, - "dependencies": { - "envinfo": "^7.7.3" - }, - "peerDependencies": { - "webpack-cli": "4.x.x" + "requires": { + "@wordpress/base-styles": "^4.0.1", + "autoprefixer": "^10.2.5" } }, - "node_modules/@webpack-cli/serve": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.0.tgz", - "integrity": "sha512-ZkVeqEmRpBV2GHvjjUZqEai2PpUbuq8Bqd//vEYsp63J8WyexI8ppCqVS3Zs0QADf6aWuPdU+0XsPI647PVlQA==", - "dev": true, - "peerDependencies": { - "webpack-cli": "4.x.x" - }, - "peerDependenciesMeta": { - "webpack-dev-server": { - "optional": true - } - } + "@wordpress/prettier-config": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@wordpress/prettier-config/-/prettier-config-1.1.1.tgz", + "integrity": "sha512-qjpBK5KB2ieCLv+1fGNKRW4urf5tFN1eUn3Qy+JINxNwAx6Jj9uhfXA4AldCSnD+WkzsN2UgBvgAj5/SWwzRZQ==", + "dev": true }, - "node_modules/@wojtekmaj/enzyme-adapter-react-17": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/@wojtekmaj/enzyme-adapter-react-17/-/enzyme-adapter-react-17-0.6.5.tgz", - "integrity": "sha512-ChIObUiXXYUiqzXPqOai+p6KF5dlbItpDDYsftUOQiAiygbMDlLeJIjynC6ZrJIa2U2MpRp4YJmtR2GQyIHjgA==", - "dev": true, - "dependencies": { - "@wojtekmaj/enzyme-adapter-utils": "^0.1.1", - "enzyme-shallow-equal": "^1.0.0", - "has": "^1.0.0", - "object.assign": "^4.1.0", - "object.values": "^1.1.0", - "prop-types": "^15.7.0", - "react-is": "^17.0.2", - "react-test-renderer": "^17.0.0" - }, - "peerDependencies": { - "enzyme": "^3.0.0", - "react": "^17.0.0-0", - "react-dom": "^17.0.0-0" + "@wordpress/primitives": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@wordpress/primitives/-/primitives-3.0.2.tgz", + "integrity": "sha512-/r7EuKEyzM8aPhjGS/NC1+lgr3Dk/mCbICndAh7sZP86OmWqoSpnh0VPZp/DxT4JdGiCa/NycXdOiP7ylngG6A==", + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/element": "^4.0.2", + "classnames": "^2.3.1" } }, - "node_modules/@wojtekmaj/enzyme-adapter-utils": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@wojtekmaj/enzyme-adapter-utils/-/enzyme-adapter-utils-0.1.1.tgz", - "integrity": "sha512-bNPWtN/d8huKOkC6j1E3EkSamnRrHHT7YuR6f9JppAQqtoAm3v4/vERe4J14jQKmHLCyEBHXrlgb7H6l817hVg==", - "dev": true, - "dependencies": { - "function.prototype.name": "^1.1.0", - "has": "^1.0.0", - "object.assign": "^4.1.0", - "object.fromentries": "^2.0.0", - "prop-types": "^15.7.0" - }, - "peerDependencies": { - "react": "^17.0.0-0" + "@wordpress/priority-queue": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@wordpress/priority-queue/-/priority-queue-2.2.2.tgz", + "integrity": "sha512-28zPQ1jIhM+9w0xfLzL8xoHIEyG0ORjIi4A8j3aWBYXHYH9f/7oVAtJRXgVTJ9iJFyiUTL8sDiaZQ6aTFV78Tg==", + "requires": { + "@babel/runtime": "^7.13.10" } }, - "node_modules/@wordpress/a11y": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@wordpress/a11y/-/a11y-3.2.3.tgz", - "integrity": "sha512-s6ghUetvxRPDyC3fohaXtOeoTQeA1JPYPNSic616LWLWvx/bOCY4RibfwxS7p7prY1+0Px2VhxsPIM2kZuR/wA==", - "dependencies": { + "@wordpress/redux-routine": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@wordpress/redux-routine/-/redux-routine-4.2.1.tgz", + "integrity": "sha512-u//4vdeKzYvu4YBRmSUsIbnUazai+PybEnquLPqxQdaF4JqVN1D5OPWHSeFtmaXR1c78I+lUf40Q7dnmA2waXw==", + "requires": { "@babel/runtime": "^7.13.10", - "@wordpress/dom-ready": "^3.2.2", - "@wordpress/i18n": "^4.2.3" - }, - "engines": { - "node": ">=12" + "is-promise": "^4.0.0", + "lodash": "^4.17.21", + "redux": "^4.1.0", + "rungen": "^0.3.2" } }, - "node_modules/@wordpress/api-fetch": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-5.2.3.tgz", - "integrity": "sha512-hEGn9vXk76ejdvei1pBX/kaQ3xnKlE2dwtCXszgem8PdDF5GYzgESEwYaWvfgPAfJs7xF283FN1QsNzA4M+N9A==", - "dependencies": { - "@babel/runtime": "^7.13.10", + "@wordpress/reusable-blocks": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@wordpress/reusable-blocks/-/reusable-blocks-3.0.3.tgz", + "integrity": "sha512-d1AegLrCrI/mc5p0BaDtx14gqYX67UxcekHbnahGiFUB8vByEtuMgGlb3zZh9MyR3NjqLwpZPyg6wk13YitEYA==", + "requires": { + "@wordpress/block-editor": "^7.0.3", + "@wordpress/blocks": "^11.1.1", + "@wordpress/components": "^18.0.0", + "@wordpress/compose": "^5.0.3", + "@wordpress/core-data": "^4.0.3", + "@wordpress/data": "^6.1.1", + "@wordpress/element": "^4.0.2", "@wordpress/i18n": "^4.2.3", - "@wordpress/url": "^3.2.3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@wordpress/autop": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@wordpress/autop/-/autop-3.2.2.tgz", - "integrity": "sha512-lfw7yZs1PeWVdPnKaV5rPMGIhkwPmdnKaviIbQV48E8irQOcPaT3NgWQksizr1Qlersm6aNBkXZfM1idRzzcgA==", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "engines": { - "node": ">=12" + "@wordpress/icons": "^6.0.0", + "@wordpress/notices": "^3.2.4", + "@wordpress/url": "^3.2.3", + "lodash": "^4.17.21" } }, - "node_modules/@wordpress/babel-plugin-import-jsx-pragma": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@wordpress/babel-plugin-import-jsx-pragma/-/babel-plugin-import-jsx-pragma-3.1.0.tgz", - "integrity": "sha512-518mL3goaSeXtJCQcPK9OYHUUiA0sjXuoGWHBwRalkyTIQZZy5ZZzlwrlSc9ESZcOw9BZ+Uo8CJRjV2OWnx+Zw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "@babel/core": "^7.12.9" + "@wordpress/rich-text": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@wordpress/rich-text/-/rich-text-5.0.3.tgz", + "integrity": "sha512-aGd69Cx0awYTXVbtQ2htxo3Eud7G7kT5GCPFRkHHFyynMtUzN1WGoOJyuolgT1XecGw0H7bJLYnhEuRrvs+o3A==", + "requires": { + "@babel/runtime": "^7.13.10", + "@wordpress/compose": "^5.0.3", + "@wordpress/data": "^6.1.1", + "@wordpress/dom": "^3.2.4", + "@wordpress/element": "^4.0.2", + "@wordpress/escape-html": "^2.2.2", + "@wordpress/is-shallow-equal": "^4.2.0", + "@wordpress/keycodes": "^3.2.3", + "classnames": "^2.3.1", + "lodash": "^4.17.21", + "memize": "^1.1.0", + "rememo": "^3.0.0" } }, - "node_modules/@wordpress/babel-preset-default": { - "version": "6.3.3", - "resolved": "https://registry.npmjs.org/@wordpress/babel-preset-default/-/babel-preset-default-6.3.3.tgz", - "integrity": "sha512-sMP7LgBmYaF5Cz+FZ4EXS5Qu4Tecv3JFIYEVbPLmn+/AIA+fzrEELn2BuEcHmd0q7VogAAmhU1iw2Fndj29bgw==", + "@wordpress/scripts": { + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/@wordpress/scripts/-/scripts-18.1.0.tgz", + "integrity": "sha512-hSRGfnRpGyr3Ec//XfMDCoC3M85nX+KyNAqIBJpLAIYo/gs5x9Gw2fX9ac4ts+hx9VIa7d0RmH5+Gqsxupzp+g==", "dev": true, - "dependencies": { - "@babel/core": "^7.13.10", - "@babel/plugin-transform-react-jsx": "^7.12.7", - "@babel/plugin-transform-runtime": "^7.13.10", - "@babel/preset-env": "^7.13.10", - "@babel/preset-typescript": "^7.13.0", - "@babel/runtime": "^7.13.10", - "@wordpress/babel-plugin-import-jsx-pragma": "^3.1.0", + "requires": { + "@svgr/webpack": "^5.5.0", + "@wordpress/babel-preset-default": "^6.3.3", "@wordpress/browserslist-config": "^4.1.0", - "@wordpress/element": "^4.0.2", - "@wordpress/warning": "^2.2.2", + "@wordpress/dependency-extraction-webpack-plugin": "^3.2.1", + "@wordpress/eslint-plugin": "^9.2.0", + "@wordpress/jest-preset-default": "^7.1.1", + "@wordpress/npm-package-json-lint-config": "^4.1.0", + "@wordpress/postcss-plugins-preset": "^3.2.2", + "@wordpress/prettier-config": "^1.1.1", + "@wordpress/stylelint-config": "^19.1.0", + "babel-jest": "^26.6.3", + "babel-loader": "^8.2.2", "browserslist": "^4.16.6", - "core-js": "^3.12.1" + "chalk": "^4.0.0", + "check-node-version": "^4.1.0", + "clean-webpack-plugin": "^3.0.0", + "cross-spawn": "^5.1.0", + "css-loader": "^6.2.0", + "cssnano": "^5.0.7", + "cwd": "^0.10.0", + "dir-glob": "^3.0.1", + "eslint": "^7.17.0", + "eslint-plugin-markdown": "^2.2.0", + "expect-puppeteer": "^4.4.0", + "filenamify": "^4.2.0", + "jest": "^26.6.3", + "jest-circus": "^26.6.3", + "jest-dev-server": "^5.0.3", + "jest-environment-node": "^26.6.2", + "markdownlint": "^0.23.1", + "markdownlint-cli": "^0.27.1", + "merge-deep": "^3.0.3", + "mini-css-extract-plugin": "^2.1.0", + "minimist": "^1.2.0", + "npm-package-json-lint": "^5.0.0", + "postcss": "^8.2.15", + "postcss-loader": "^6.1.1", + "prettier": "npm:wp-prettier@2.2.1-beta-1", + "puppeteer-core": "^10.1.0", + "read-pkg-up": "^1.0.1", + "resolve-bin": "^0.4.0", + "sass": "^1.35.2", + "sass-loader": "^12.1.0", + "source-map-loader": "^3.0.0", + "stylelint": "^13.8.0", + "terser-webpack-plugin": "^5.1.4", + "url-loader": "^4.1.1", + "webpack": "^5.47.1", + "webpack-bundle-analyzer": "^4.4.2", + "webpack-cli": "^4.7.2", + "webpack-livereload-plugin": "^3.0.1" }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@wordpress/base-styles": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@wordpress/base-styles/-/base-styles-4.0.2.tgz", - "integrity": "sha512-0eESCFwdITSsWR+goVaWe3LZ/7s+GprNwANKF+1xm8gMxlHQks5gYDMvNdh0Q1yTHlK/vtg1VC7Bj1gydqmlxw==", - "dev": true - }, - "node_modules/@wordpress/blob": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@wordpress/blob/-/blob-3.2.1.tgz", - "integrity": "sha512-qD8wZ6n+hjoshV2dp9eGH3VismOM0kvrJn5cSe4PaoYDREqUhioJIDXktZxaohnvgWOq6xfJH6rS4Or8W0r9ew==", "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "engines": { - "node": ">=12" + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "dependencies": { + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + } + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "postcss-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.0.tgz", + "integrity": "sha512-H9hv447QjQJVDbHj3OUdciyAXY3v5+UDduzEytAlZCVHCpNAAg/mCSwhYYqZr9BiGYhmYspU8QXxZwiHTLn3yA==", + "dev": true, + "requires": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.4", + "semver": "^7.3.5" + } + }, + "prettier": { + "version": "npm:wp-prettier@2.2.1-beta-1", + "resolved": "https://registry.npmjs.org/wp-prettier/-/wp-prettier-2.2.1-beta-1.tgz", + "integrity": "sha512-+JHkqs9LC/JPp51yy1hzs3lQ7qeuWCwOcSzpQNeeY/G7oSpnF61vxt7hRh87zNRTr6ob2ndy0W8rVzhgrcA+Gw==", + "dev": true + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + }, + "dependencies": { + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + } + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, - "node_modules/@wordpress/block-editor": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/@wordpress/block-editor/-/block-editor-7.0.3.tgz", - "integrity": "sha512-rCPth+v+Nu5JiIkOgUaCgiVkub+VWd8fXzek/vtk5T+VXDJ7jJA6dLcuR8zLigWEkyMuZ5nG0RADGgldy9WqxA==", - "dependencies": { + "@wordpress/server-side-render": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@wordpress/server-side-render/-/server-side-render-3.0.3.tgz", + "integrity": "sha512-MSnKcAePwyRS9jnkVQe+MImUAhr5d0G9BaCDp1RpLNEFB9yHX3WtsZhEAamWM3EsuDnDZqE1dD9zN+zsfT5G6Q==", + "requires": { "@babel/runtime": "^7.13.10", - "@react-spring/web": "^9.2.4", - "@wordpress/a11y": "^3.2.3", "@wordpress/api-fetch": "^5.2.3", - "@wordpress/blob": "^3.2.1", - "@wordpress/block-serialization-default-parser": "^4.2.2", "@wordpress/blocks": "^11.1.1", "@wordpress/components": "^18.0.0", "@wordpress/compose": "^5.0.3", "@wordpress/data": "^6.1.1", - "@wordpress/data-controls": "^2.2.4", "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.4", "@wordpress/element": "^4.0.2", - "@wordpress/hooks": "^3.2.1", - "@wordpress/html-entities": "^3.2.2", "@wordpress/i18n": "^4.2.3", - "@wordpress/icons": "^6.0.0", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keyboard-shortcuts": "^3.0.3", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/notices": "^3.2.4", - "@wordpress/rich-text": "^5.0.3", - "@wordpress/shortcode": "^3.2.2", - "@wordpress/token-list": "^2.2.1", "@wordpress/url": "^3.2.3", - "@wordpress/warning": "^2.2.2", - "@wordpress/wordcount": "^3.2.2", - "classnames": "^2.3.1", - "colord": "^2.7.0", - "css-mediaquery": "^0.1.2", - "diff": "^4.0.2", - "dom-scroll-into-view": "^1.2.1", - "inherits": "^2.0.3", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "react-autosize-textarea": "^7.1.0", - "react-easy-crop": "^3.0.0", - "redux-multi": "^0.1.12", - "rememo": "^3.0.0", - "traverse": "^0.6.6" - }, - "engines": { - "node": ">=12" + "lodash": "^4.17.21" } }, - "node_modules/@wordpress/block-editor/node_modules/react": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", - "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2" - }, - "engines": { - "node": ">=0.10.0" + "@wordpress/shortcode": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@wordpress/shortcode/-/shortcode-3.2.2.tgz", + "integrity": "sha512-Im3z6C/+0IYepBg7w3m+2wyAEQfNLoWN3yQ1czNPsGHMAbELvAZjhd9S1hkJXgdyS9wQnamIQhu9wGB20qeh9A==", + "requires": { + "@babel/runtime": "^7.13.10", + "lodash": "^4.17.21", + "memize": "^1.1.0" } }, - "node_modules/@wordpress/block-editor/node_modules/react-autosize-textarea": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/react-autosize-textarea/-/react-autosize-textarea-7.1.0.tgz", - "integrity": "sha512-BHpjCDkuOlllZn3nLazY2F8oYO1tS2jHnWhcjTWQdcKiiMU6gHLNt/fzmqMSyerR0eTdKtfSIqtSeTtghNwS+g==", - "dependencies": { - "autosize": "^4.0.2", - "line-height": "^0.3.1", - "prop-types": "^15.5.6" - }, - "peerDependencies": { - "react": "^0.14.0 || ^15.0.0 || ^16.0.0", - "react-dom": "^0.14.0 || ^15.0.0 || ^16.0.0" + "@wordpress/stylelint-config": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/@wordpress/stylelint-config/-/stylelint-config-19.1.0.tgz", + "integrity": "sha512-K/wB9rhB+pH5WvDh3fV3DN5C3Bud+jPGXmnPY8fOXKMYI3twCFozK/j6sVuaJHqGp/0kKEF0hkkGh+HhD30KGQ==", + "dev": true, + "requires": { + "stylelint-config-recommended": "^3.0.0", + "stylelint-config-recommended-scss": "^4.2.0", + "stylelint-scss": "^3.17.2" } }, - "node_modules/@wordpress/block-editor/node_modules/react-dom": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", - "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.19.1" - }, - "peerDependencies": { - "react": "^16.14.0" + "@wordpress/token-list": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@wordpress/token-list/-/token-list-2.2.1.tgz", + "integrity": "sha512-SBFATG3F6WcnRzcuu396KhesXI36qkzq21JV653+4XOwLsSVSEVbec2cFHw5WCvrj3Oe7Sv7hRK9Ia/wBW7bzA==", + "requires": { + "@babel/runtime": "^7.13.10", + "lodash": "^4.17.21" } }, - "node_modules/@wordpress/block-editor/node_modules/scheduler": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", - "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "@wordpress/url": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@wordpress/url/-/url-3.2.3.tgz", + "integrity": "sha512-sepFDMcshaLBEPHDuHDAsXWsrRInyOa3an3Y8OfqLFwAoMZGAKJTClx1k4DnJwRRGhjv03veTl0IqxTdMH/CiA==", + "requires": { + "@babel/runtime": "^7.13.10", + "lodash": "^4.17.21" } }, - "node_modules/@wordpress/block-library": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@wordpress/block-library/-/block-library-6.0.2.tgz", - "integrity": "sha512-zC5IzQ7t+Y6GkeceorlI69zE4/pFw0klWhdvsltuZSDuIg4h76HyElHE+rmZYXCAiwMU+K9/WYoWjLf6BsrGLg==", + "@wordpress/viewport": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@wordpress/viewport/-/viewport-4.0.3.tgz", + "integrity": "sha512-94bzvgnBHgMra+l0frbaP4X017aAeOBCQNpFF2FB6972niorWCA7sQscSH8xYyv+5htCWIYEKTH0gI7rPcxxmg==", "dev": true, - "dependencies": { + "requires": { "@babel/runtime": "^7.13.10", - "@wordpress/a11y": "^3.2.3", - "@wordpress/api-fetch": "^5.2.4", - "@wordpress/autop": "^3.2.2", - "@wordpress/blob": "^3.2.1", - "@wordpress/block-editor": "^7.0.4", - "@wordpress/blocks": "^11.1.2", - "@wordpress/components": "^19.0.0", - "@wordpress/compose": "^5.0.4", - "@wordpress/core-data": "^4.0.4", - "@wordpress/data": "^6.1.2", - "@wordpress/date": "^4.2.2", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.5", - "@wordpress/element": "^4.0.3", - "@wordpress/escape-html": "^2.2.2", - "@wordpress/hooks": "^3.2.1", - "@wordpress/html-entities": "^3.2.2", - "@wordpress/i18n": "^4.2.3", - "@wordpress/icons": "^6.0.1", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/notices": "^3.2.5", - "@wordpress/primitives": "^3.0.3", - "@wordpress/reusable-blocks": "^3.0.4", - "@wordpress/rich-text": "^5.0.4", - "@wordpress/server-side-render": "^3.0.4", - "@wordpress/url": "^3.2.3", - "@wordpress/viewport": "^4.0.4", - "classnames": "^2.3.1", - "colord": "^2.7.0", - "fast-average-color": "4.3.0", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "micromodal": "^0.4.6", - "moment": "^2.22.1" - }, - "engines": { - "node": ">=12" + "@wordpress/compose": "^5.0.3", + "@wordpress/data": "^6.1.1", + "lodash": "^4.17.21" } }, - "node_modules/@wordpress/block-library/node_modules/@wordpress/api-fetch": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-5.2.4.tgz", - "integrity": "sha512-8vMm08L3MMUynhD6sxe9VhRcfi3qGE3m9j7LpC9yAIxt70DaMRxHWEmGIbgO2F3INkqACdLWnDQmsHDKOSWQsQ==", - "dev": true, - "dependencies": { + "@wordpress/warning": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-2.2.2.tgz", + "integrity": "sha512-iG1Hq56RK3N6AJqAD1sRLWRIJatfYn+NrPyrfqRNZNYXHM8Vj/s7ABNMbIU0Y99vXkBE83rvCdbMkugNoI2jXA==" + }, + "@wordpress/wordcount": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@wordpress/wordcount/-/wordcount-3.2.2.tgz", + "integrity": "sha512-lb0gpBmdbGhaVET8eUqa/PwVOlFcJc0gtsiOzUGq2GlDSqoC/ouE5dj1R9Dw68ybiD1pmEPDRArU4fF0JSNsfA==", + "requires": { "@babel/runtime": "^7.13.10", - "@wordpress/i18n": "^4.2.3", - "@wordpress/url": "^3.2.3" - }, - "engines": { - "node": ">=12" + "lodash": "^4.17.21" } }, - "node_modules/@wordpress/block-library/node_modules/@wordpress/block-editor": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@wordpress/block-editor/-/block-editor-7.0.4.tgz", - "integrity": "sha512-crnKOzGrqe9YZOFRbEsJhfm5sGNoCK8oHDTTO8TeTlKw4tGbvTUK3aayxTr9cd2Uu3J3Cy13d3M9qJC8ebXhbQ==", + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "abab": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", "dev": true, - "dependencies": { - "@babel/runtime": "^7.13.10", - "@react-spring/web": "^9.2.4", - "@wordpress/a11y": "^3.2.3", - "@wordpress/api-fetch": "^5.2.4", - "@wordpress/blob": "^3.2.1", - "@wordpress/block-serialization-default-parser": "^4.2.2", - "@wordpress/blocks": "^11.1.2", - "@wordpress/components": "^19.0.0", - "@wordpress/compose": "^5.0.4", - "@wordpress/data": "^6.1.2", - "@wordpress/data-controls": "^2.2.5", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.5", - "@wordpress/element": "^4.0.3", - "@wordpress/hooks": "^3.2.1", - "@wordpress/html-entities": "^3.2.2", - "@wordpress/i18n": "^4.2.3", - "@wordpress/icons": "^6.0.1", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keyboard-shortcuts": "^3.0.4", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/notices": "^3.2.5", - "@wordpress/rich-text": "^5.0.4", - "@wordpress/shortcode": "^3.2.2", - "@wordpress/token-list": "^2.2.1", - "@wordpress/url": "^3.2.3", - "@wordpress/warning": "^2.2.2", - "@wordpress/wordcount": "^3.2.2", - "classnames": "^2.3.1", - "colord": "^2.7.0", - "css-mediaquery": "^0.1.2", - "diff": "^4.0.2", - "dom-scroll-into-view": "^1.2.1", - "inherits": "^2.0.3", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "react-autosize-textarea": "^7.1.0", - "react-easy-crop": "^3.0.0", - "redux-multi": "^0.1.12", - "rememo": "^3.0.0", - "traverse": "^0.6.6" - }, - "engines": { - "node": ">=12" + "requires": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" } }, - "node_modules/@wordpress/block-library/node_modules/@wordpress/block-editor/node_modules/react": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", - "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", + "acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true + }, + "acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2" - }, - "engines": { - "node": ">=0.10.0" + "requires": { + "debug": "4" } }, - "node_modules/@wordpress/block-library/node_modules/@wordpress/block-editor/node_modules/react-autosize-textarea": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/react-autosize-textarea/-/react-autosize-textarea-7.1.0.tgz", - "integrity": "sha512-BHpjCDkuOlllZn3nLazY2F8oYO1tS2jHnWhcjTWQdcKiiMU6gHLNt/fzmqMSyerR0eTdKtfSIqtSeTtghNwS+g==", + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, - "dependencies": { - "autosize": "^4.0.2", - "line-height": "^0.3.1", - "prop-types": "^15.5.6" - }, - "peerDependencies": { - "react": "^0.14.0 || ^15.0.0 || ^16.0.0", - "react-dom": "^0.14.0 || ^15.0.0 || ^16.0.0" + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" } }, - "node_modules/@wordpress/block-library/node_modules/@wordpress/block-editor/node_modules/react-dom": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", - "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", - "dev": true, - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.19.1" - }, - "peerDependencies": { - "react": "^16.14.0" + "airbnb-prop-types": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz", + "integrity": "sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg==", + "requires": { + "array.prototype.find": "^2.1.1", + "function.prototype.name": "^1.1.2", + "is-regex": "^1.1.0", + "object-is": "^1.1.2", + "object.assign": "^4.1.0", + "object.entries": "^1.1.2", + "prop-types": "^15.7.2", + "prop-types-exact": "^1.2.0", + "react-is": "^16.13.1" } }, - "node_modules/@wordpress/block-library/node_modules/@wordpress/blocks": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/@wordpress/blocks/-/blocks-11.1.2.tgz", - "integrity": "sha512-xVvC/RXj9GXNRkQcGnmjWeS54intybON4Ol2vCVfreJtA5Cra5yRapRJwz3at1sgDD4q06k1sj98SemMEanazw==", + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "dependencies": { - "@babel/runtime": "^7.13.10", - "@wordpress/autop": "^3.2.2", - "@wordpress/blob": "^3.2.1", - "@wordpress/block-serialization-default-parser": "^4.2.2", - "@wordpress/compose": "^5.0.4", - "@wordpress/data": "^6.1.2", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.5", - "@wordpress/element": "^4.0.3", - "@wordpress/hooks": "^3.2.1", - "@wordpress/html-entities": "^3.2.2", - "@wordpress/i18n": "^4.2.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/shortcode": "^3.2.2", - "colord": "^2.7.0", - "hpq": "^1.3.0", - "lodash": "^4.17.21", - "rememo": "^3.0.0", - "showdown": "^1.9.1", - "simple-html-tokenizer": "^0.5.7", - "uuid": "^8.3.0" - }, - "engines": { - "node": ">=12" + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, - "node_modules/@wordpress/block-library/node_modules/@wordpress/components": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/@wordpress/components/-/components-19.0.0.tgz", - "integrity": "sha512-foFC+jJ3nu6PZ2pnjdszi7R17CQRquXkCPaydlOCsuDbsKm0dowR264jAdK0HJWepttj+kh3amWEhzajX6AYtg==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.13.10", - "@emotion/cache": "^11.4.0", - "@emotion/css": "^11.1.3", - "@emotion/react": "^11.4.1", - "@emotion/styled": "^11.3.0", - "@emotion/utils": "1.0.0", - "@wordpress/a11y": "^3.2.3", - "@wordpress/compose": "^5.0.4", - "@wordpress/date": "^4.2.2", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.5", - "@wordpress/element": "^4.0.3", - "@wordpress/hooks": "^3.2.1", - "@wordpress/i18n": "^4.2.3", - "@wordpress/icons": "^6.0.1", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/primitives": "^3.0.3", - "@wordpress/rich-text": "^5.0.4", - "@wordpress/warning": "^2.2.2", - "classnames": "^2.3.1", - "colord": "^2.7.0", - "dom-scroll-into-view": "^1.2.1", - "downshift": "^6.0.15", - "framer-motion": "^4.1.17", - "gradient-parser": "^0.1.5", - "highlight-words-core": "^1.2.2", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "moment": "^2.22.1", - "re-resizable": "^6.4.0", - "react-colorful": "^5.3.1", - "react-dates": "^17.1.1", - "react-resize-aware": "^3.1.0", - "react-use-gesture": "^9.0.0", - "reakit": "^1.3.8", - "rememo": "^3.0.0", - "uuid": "^8.3.0" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "reakit-utils": "^0.15.1" - } + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true }, - "node_modules/@wordpress/block-library/node_modules/@wordpress/components/node_modules/airbnb-prop-types": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz", - "integrity": "sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg==", - "dev": true, - "dependencies": { - "array.prototype.find": "^2.1.1", - "function.prototype.name": "^1.1.2", - "is-regex": "^1.1.0", - "object-is": "^1.1.2", - "object.assign": "^4.1.0", - "object.entries": "^1.1.2", - "prop-types": "^15.7.2", - "prop-types-exact": "^1.2.0", - "react-is": "^16.13.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - }, - "peerDependencies": { - "react": "^0.14 || ^15.0.0 || ^16.0.0-alpha" - } + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true }, - "node_modules/@wordpress/block-library/node_modules/@wordpress/components/node_modules/react": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", - "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", - "dev": true, - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2" - }, - "engines": { - "node": ">=0.10.0" - } + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "dev": true }, - "node_modules/@wordpress/block-library/node_modules/@wordpress/components/node_modules/react-dates": { - "version": "17.2.0", - "resolved": "https://registry.npmjs.org/react-dates/-/react-dates-17.2.0.tgz", - "integrity": "sha512-RDlerU8DdRRrlYS0MQ7Z9igPWABGLDwz6+ykBNff67RM3Sset2TDqeuOr+R5o00Ggn5U47GeLsGcSDxlZd9cHw==", - "dev": true, - "dependencies": { - "airbnb-prop-types": "^2.10.0", - "consolidated-events": "^1.1.1 || ^2.0.0", - "is-touch-device": "^1.0.1", - "lodash": "^4.1.1", - "object.assign": "^4.1.0", - "object.values": "^1.0.4", - "prop-types": "^15.6.1", - "react-addons-shallow-compare": "^15.6.2", - "react-moment-proptypes": "^1.6.0", - "react-outside-click-handler": "^1.2.0", - "react-portal": "^4.1.5", - "react-with-styles": "^3.2.0", - "react-with-styles-interface-css": "^4.0.2" - }, - "peerDependencies": { - "moment": "^2.18.1", - "react": "^0.14 || ^15.5.4 || ^16.1.1", - "react-dom": "^0.14 || ^15.5.4 || ^16.1.1" - } + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true }, - "node_modules/@wordpress/block-library/node_modules/@wordpress/components/node_modules/react-dom": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", - "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.19.1" + "requires": { + "type-fest": "^0.21.3" }, - "peerDependencies": { - "react": "^16.14.0" - } - }, - "node_modules/@wordpress/block-library/node_modules/@wordpress/components/node_modules/react-outside-click-handler": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/react-outside-click-handler/-/react-outside-click-handler-1.3.0.tgz", - "integrity": "sha512-Te/7zFU0oHpAnctl//pP3hEAeobfeHMyygHB8MnjP6sX5OR8KHT1G3jmLsV3U9RnIYo+Yn+peJYWu+D5tUS8qQ==", - "dev": true, "dependencies": { - "airbnb-prop-types": "^2.15.0", - "consolidated-events": "^1.1.1 || ^2.0.0", - "document.contains": "^1.0.1", - "object.values": "^1.1.0", - "prop-types": "^15.7.2" - }, - "peerDependencies": { - "react": "^0.14 || >=15", - "react-dom": "^0.14 || >=15" + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + } } }, - "node_modules/@wordpress/block-library/node_modules/@wordpress/components/node_modules/react-portal": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/react-portal/-/react-portal-4.2.1.tgz", - "integrity": "sha512-fE9kOBagwmTXZ3YGRYb4gcMy+kSA+yLO0xnPankjRlfBv4uCpFXqKPfkpsGQQR15wkZ9EssnvTOl1yMzbkxhPQ==", - "dev": true, - "dependencies": { - "prop-types": "^15.5.8" - }, - "peerDependencies": { - "react": "^15.0.0-0 || ^16.0.0-0 || ^17.0.0-0" - } + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" }, - "node_modules/@wordpress/block-library/node_modules/@wordpress/components/node_modules/react-with-direction": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/react-with-direction/-/react-with-direction-1.4.0.tgz", - "integrity": "sha512-ybHNPiAmaJpoWwugwqry9Hd1Irl2hnNXlo/2SXQBwbLn/jGMauMS2y9jw+ydyX5V9ICryCqObNSthNt5R94xpg==", - "dev": true, - "dependencies": { - "airbnb-prop-types": "^2.16.0", - "brcast": "^2.0.2", - "deepmerge": "^1.5.2", - "direction": "^1.0.4", - "hoist-non-react-statics": "^3.3.2", - "object.assign": "^4.1.2", - "object.values": "^1.1.5", - "prop-types": "^15.7.2" - }, - "peerDependencies": { - "react": "^0.14 || ^15 || ^16", - "react-dom": "^0.14 || ^15 || ^16" + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" } }, - "node_modules/@wordpress/block-library/node_modules/@wordpress/components/node_modules/react-with-styles": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/react-with-styles/-/react-with-styles-3.2.3.tgz", - "integrity": "sha512-MTI1UOvMHABRLj5M4WpODfwnveHaip6X7QUMI2x6zovinJiBXxzhA9AJP7MZNaKqg1JRFtHPXZdroUC8KcXwlQ==", + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dev": true, - "dependencies": { - "hoist-non-react-statics": "^3.2.1", - "object.assign": "^4.1.0", - "prop-types": "^15.6.2", - "react-with-direction": "^1.3.0" - }, - "peerDependencies": { - "react": ">=0.14", - "react-with-direction": "^1.1.0" + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" } }, - "node_modules/@wordpress/block-library/node_modules/@wordpress/components/node_modules/react-with-styles-interface-css": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/react-with-styles-interface-css/-/react-with-styles-interface-css-4.0.3.tgz", - "integrity": "sha512-wE43PIyjal2dexxyyx4Lhbcb+E42amoYPnkunRZkb9WTA+Z+9LagbyxwsI352NqMdFmghR0opg29dzDO4/YXbw==", + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, - "dependencies": { - "array.prototype.flat": "^1.2.1", - "global-cache": "^1.2.1" + "requires": { + "sprintf-js": "~1.0.2" }, - "peerDependencies": { - "react-with-styles": "^3.0.0" - } - }, - "node_modules/@wordpress/block-library/node_modules/@wordpress/compose": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.0.4.tgz", - "integrity": "sha512-gRpQgsxF1AnmrJnkmJOixsTtSmimFzasiXZlm0BwhsdeJEEqVO3Mt7ua59bLPHjnUmiyDfMWY9Ongn/2cSCRKQ==", - "dev": true, "dependencies": { - "@babel/runtime": "^7.13.10", - "@types/lodash": "^4.14.172", - "@types/mousetrap": "^1.6.8", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.5", - "@wordpress/element": "^4.0.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/priority-queue": "^2.2.2", - "clipboard": "^2.0.8", - "lodash": "^4.17.21", - "mousetrap": "^1.6.5", - "react-resize-aware": "^3.1.0", - "use-memo-one": "^1.1.1" - }, - "engines": { - "node": ">=12" + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + } } }, - "node_modules/@wordpress/block-library/node_modules/@wordpress/data": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.1.2.tgz", - "integrity": "sha512-Ro4CGmGBgk+7gDOkoB/u/HFPjmObNTZvN1q1vb75gfHOjVmXFt6AZSialELc+AuYODZEedrvHRk7qMBPxsgTVQ==", + "aria-query": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", + "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", "dev": true, - "dependencies": { - "@babel/runtime": "^7.13.10", - "@wordpress/compose": "^5.0.4", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/element": "^4.0.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/priority-queue": "^2.2.2", - "@wordpress/redux-routine": "^4.2.1", - "equivalent-key-map": "^0.2.2", - "is-promise": "^4.0.0", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "turbo-combine-reducers": "^1.0.2", - "use-memo-one": "^1.1.1" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "redux": "^4.1.0" + "requires": { + "@babel/runtime": "^7.10.2", + "@babel/runtime-corejs3": "^7.10.2" } }, - "node_modules/@wordpress/block-library/node_modules/@wordpress/element": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.3.tgz", - "integrity": "sha512-uFL8Xx0Uq/C+nCL5aM4Fb6YVub//1wuHyQK9VDtKwYg9UBELrexSCHo1XaesYRiGUqVW0o837qC7RCP2NLUBJw==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.13.10", - "@types/react": "^16.9.0", - "@types/react-dom": "^16.9.0", - "@wordpress/escape-html": "^2.2.2", - "lodash": "^4.17.21", - "react": "^17.0.1", - "react-dom": "^17.0.1" - }, - "engines": { - "node": ">=12" - } + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true }, - "node_modules/@wordpress/block-library/node_modules/@wordpress/icons": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@wordpress/icons/-/icons-6.0.1.tgz", - "integrity": "sha512-YAtnWquaWWM49hpoRJwaZRBTnnkwqOY0TuK8a6m0gXE2Xm3uoO/J4c6tLqKiFv3FG9Hmc/CB1WCmx+uM1TX0vw==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.13.10", - "@wordpress/element": "^4.0.3", - "@wordpress/primitives": "^3.0.3" - }, - "engines": { - "node": ">=12" - } + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true }, - "node_modules/@wordpress/block-library/node_modules/deepmerge": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", - "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", + "dev": true + }, + "array-includes": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", + "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", "dev": true, - "engines": { - "node": ">=0.10.0" + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.7" } }, - "node_modules/@wordpress/block-library/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, - "node_modules/@wordpress/block-library/node_modules/scheduler": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", - "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "array.prototype.filter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array.prototype.filter/-/array.prototype.filter-1.0.1.tgz", + "integrity": "sha512-Dk3Ty7N42Odk7PjU/Ci3zT4pLj20YvuVnneG/58ICM6bt4Ij5kZaJTVQ9TSaWaIECX2sFyz4KItkVZqHNnciqw==", "dev": true, - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.7" } }, - "node_modules/@wordpress/block-serialization-default-parser": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@wordpress/block-serialization-default-parser/-/block-serialization-default-parser-4.2.2.tgz", - "integrity": "sha512-XLig548y+chFJTmjrJptiEwZuMHpz7azIpoZssedGxP1ibffo8GV1VnKzGtr/P+Z/1PHt1L00pQgxtAZmKKBag==", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "engines": { - "node": ">=12" + "array.prototype.find": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.1.2.tgz", + "integrity": "sha512-00S1O4ewO95OmmJW7EesWfQlrCrLEL8kZ40w3+GkLX2yTt0m2ggcePPa2uHPJ9KUmJvwRq+lCV9bD8Yim23x/Q==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0" } }, - "node_modules/@wordpress/blocks": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/@wordpress/blocks/-/blocks-11.1.1.tgz", - "integrity": "sha512-Pzk3A4UDQSy1Ay80x/fyrg27efLwfkKyzIHY2XtQrXGlDAT+oGwgJYmqgYff1SYhqFEjq5a7fkN2hGBaYXk+yQ==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@wordpress/autop": "^3.2.2", - "@wordpress/blob": "^3.2.1", - "@wordpress/block-serialization-default-parser": "^4.2.2", - "@wordpress/compose": "^5.0.3", - "@wordpress/data": "^6.1.1", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.4", - "@wordpress/element": "^4.0.2", - "@wordpress/hooks": "^3.2.1", - "@wordpress/html-entities": "^3.2.2", - "@wordpress/i18n": "^4.2.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/shortcode": "^3.2.2", - "colord": "^2.7.0", - "hpq": "^1.3.0", - "lodash": "^4.17.21", - "rememo": "^3.0.0", - "showdown": "^1.9.1", - "simple-html-tokenizer": "^0.5.7", - "uuid": "^8.3.0" - }, - "engines": { - "node": ">=12" + "array.prototype.flat": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz", + "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0" } }, - "node_modules/@wordpress/browserslist-config": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@wordpress/browserslist-config/-/browserslist-config-4.1.0.tgz", - "integrity": "sha512-RSJhgY2xmz6yAdDNhz/NvAO6JS+91vv9cVL7VDG2CftbyjTXBef05vWt3FzZhfeF0xUrYdpZL1PVpxmJiKvbEg==", + "array.prototype.flatmap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz", + "integrity": "sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA==", "dev": true, - "engines": { - "node": ">=12" + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0" } }, - "node_modules/@wordpress/components": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/@wordpress/components/-/components-18.0.0.tgz", - "integrity": "sha512-0KWlm3AXHVd1EeEd8K1Q/aH9ieTZCHdcSyH2m9p4s0mpxl7Ddk0ly9PPAMt6HVliqapYuxAf2gb1UHO9pFyRCw==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@emotion/cache": "^11.4.0", - "@emotion/css": "^11.1.3", - "@emotion/react": "^11.4.1", - "@emotion/styled": "^11.3.0", - "@emotion/utils": "1.0.0", - "@wordpress/a11y": "^3.2.3", - "@wordpress/compose": "^5.0.3", - "@wordpress/date": "^4.2.2", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.4", - "@wordpress/element": "^4.0.2", - "@wordpress/hooks": "^3.2.1", - "@wordpress/i18n": "^4.2.3", - "@wordpress/icons": "^6.0.0", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/primitives": "^3.0.2", - "@wordpress/rich-text": "^5.0.3", - "@wordpress/warning": "^2.2.2", - "classnames": "^2.3.1", - "colord": "^2.7.0", - "dom-scroll-into-view": "^1.2.1", - "downshift": "^6.0.15", - "framer-motion": "^4.1.17", - "gradient-parser": "^0.1.5", - "highlight-words-core": "^1.2.2", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "moment": "^2.22.1", - "re-resizable": "^6.4.0", - "react-colorful": "^5.3.1", - "react-dates": "^17.1.1", - "react-resize-aware": "^3.1.0", - "react-use-gesture": "^9.0.0", - "reakit": "^1.3.8", - "rememo": "^3.0.0", - "tinycolor2": "^1.4.2", - "uuid": "^8.3.0" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "reakit-utils": "^0.15.1" - } + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true }, - "node_modules/@wordpress/components/node_modules/airbnb-prop-types": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz", - "integrity": "sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg==", - "dependencies": { - "array.prototype.find": "^2.1.1", - "function.prototype.name": "^1.1.2", - "is-regex": "^1.1.0", - "object-is": "^1.1.2", - "object.assign": "^4.1.0", - "object.entries": "^1.1.2", - "prop-types": "^15.7.2", - "prop-types-exact": "^1.2.0", - "react-is": "^16.13.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - }, - "peerDependencies": { - "react": "^0.14 || ^15.0.0 || ^16.0.0-alpha" - } + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true }, - "node_modules/@wordpress/components/node_modules/deepmerge": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", - "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", - "engines": { - "node": ">=0.10.0" + "ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", + "dev": true + }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "requires": { + "lodash": "^4.17.14" } }, - "node_modules/@wordpress/components/node_modules/react": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", - "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2" + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "autoprefixer": { + "version": "10.3.7", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.3.7.tgz", + "integrity": "sha512-EmGpu0nnQVmMhX8ROoJ7Mx8mKYPlcUHuxkwrRYEYMz85lu7H09v8w6R1P0JPdn/hKU32GjpLBFEOuIlDWCRWvg==", + "dev": true, + "requires": { + "browserslist": "^4.17.3", + "caniuse-lite": "^1.0.30001264", + "fraction.js": "^4.1.1", + "normalize-range": "^0.1.2", + "picocolors": "^0.2.1", + "postcss-value-parser": "^4.1.0" }, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + } } }, - "node_modules/@wordpress/components/node_modules/react-dates": { - "version": "17.2.0", - "resolved": "https://registry.npmjs.org/react-dates/-/react-dates-17.2.0.tgz", - "integrity": "sha512-RDlerU8DdRRrlYS0MQ7Z9igPWABGLDwz6+ykBNff67RM3Sset2TDqeuOr+R5o00Ggn5U47GeLsGcSDxlZd9cHw==", - "dependencies": { - "airbnb-prop-types": "^2.10.0", - "consolidated-events": "^1.1.1 || ^2.0.0", - "is-touch-device": "^1.0.1", - "lodash": "^4.1.1", - "object.assign": "^4.1.0", - "object.values": "^1.0.4", - "prop-types": "^15.6.1", - "react-addons-shallow-compare": "^15.6.2", - "react-moment-proptypes": "^1.6.0", - "react-outside-click-handler": "^1.2.0", - "react-portal": "^4.1.5", - "react-with-styles": "^3.2.0", - "react-with-styles-interface-css": "^4.0.2" - }, - "peerDependencies": { - "moment": "^2.18.1", - "react": "^0.14 || ^15.5.4 || ^16.1.1", - "react-dom": "^0.14 || ^15.5.4 || ^16.1.1" - } + "autosize": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/autosize/-/autosize-4.0.4.tgz", + "integrity": "sha512-5yxLQ22O0fCRGoxGfeLSNt3J8LB1v+umtpMnPW6XjkTWXKoN0AmXAIhelJcDtFT/Y/wYWmfE+oqU10Q0b8FhaQ==" }, - "node_modules/@wordpress/components/node_modules/react-dom": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", - "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.19.1" - }, - "peerDependencies": { - "react": "^16.14.0" + "axe-core": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.3.3.tgz", + "integrity": "sha512-/lqqLAmuIPi79WYfRpy2i8z+x+vxU3zX2uAm0gs1q52qTuKwolOj1P8XbufpXcsydrpKx2yGn2wzAnxCMV86QA==", + "dev": true + }, + "axios": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", + "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", + "dev": true, + "requires": { + "follow-redirects": "^1.10.0" } }, - "node_modules/@wordpress/components/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "axobject-query": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", + "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", + "dev": true }, - "node_modules/@wordpress/components/node_modules/react-outside-click-handler": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/react-outside-click-handler/-/react-outside-click-handler-1.3.0.tgz", - "integrity": "sha512-Te/7zFU0oHpAnctl//pP3hEAeobfeHMyygHB8MnjP6sX5OR8KHT1G3jmLsV3U9RnIYo+Yn+peJYWu+D5tUS8qQ==", - "dependencies": { - "airbnb-prop-types": "^2.15.0", - "consolidated-events": "^1.1.1 || ^2.0.0", - "document.contains": "^1.0.1", - "object.values": "^1.1.0", - "prop-types": "^15.7.2" + "babel-eslint": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", + "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" }, - "peerDependencies": { - "react": "^0.14 || >=15", - "react-dom": "^0.14 || >=15" + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } } }, - "node_modules/@wordpress/components/node_modules/react-portal": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/react-portal/-/react-portal-4.2.1.tgz", - "integrity": "sha512-fE9kOBagwmTXZ3YGRYb4gcMy+kSA+yLO0xnPankjRlfBv4uCpFXqKPfkpsGQQR15wkZ9EssnvTOl1yMzbkxhPQ==", - "dependencies": { - "prop-types": "^15.5.8" + "babel-jest": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-26.6.3.tgz", + "integrity": "sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==", + "dev": true, + "requires": { + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/babel__core": "^7.1.7", + "babel-plugin-istanbul": "^6.0.0", + "babel-preset-jest": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "slash": "^3.0.0" }, - "peerDependencies": { - "react": "^15.0.0-0 || ^16.0.0-0 || ^17.0.0-0" + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, - "node_modules/@wordpress/components/node_modules/react-with-direction": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/react-with-direction/-/react-with-direction-1.4.0.tgz", - "integrity": "sha512-ybHNPiAmaJpoWwugwqry9Hd1Irl2hnNXlo/2SXQBwbLn/jGMauMS2y9jw+ydyX5V9ICryCqObNSthNt5R94xpg==", - "dependencies": { - "airbnb-prop-types": "^2.16.0", - "brcast": "^2.0.2", - "deepmerge": "^1.5.2", - "direction": "^1.0.4", - "hoist-non-react-statics": "^3.3.2", - "object.assign": "^4.1.2", - "object.values": "^1.1.5", - "prop-types": "^15.7.2" + "babel-loader": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.2.tgz", + "integrity": "sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g==", + "dev": true, + "requires": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^1.4.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" }, - "peerDependencies": { - "react": "^0.14 || ^15 || ^16", - "react-dom": "^0.14 || ^15 || ^16" + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } } }, - "node_modules/@wordpress/components/node_modules/react-with-styles": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/react-with-styles/-/react-with-styles-3.2.3.tgz", - "integrity": "sha512-MTI1UOvMHABRLj5M4WpODfwnveHaip6X7QUMI2x6zovinJiBXxzhA9AJP7MZNaKqg1JRFtHPXZdroUC8KcXwlQ==", - "dependencies": { - "hoist-non-react-statics": "^3.2.1", - "object.assign": "^4.1.0", - "prop-types": "^15.6.2", - "react-with-direction": "^1.3.0" - }, - "peerDependencies": { - "react": ">=0.14", - "react-with-direction": "^1.1.0" + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" } }, - "node_modules/@wordpress/components/node_modules/react-with-styles-interface-css": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/react-with-styles-interface-css/-/react-with-styles-interface-css-4.0.3.tgz", - "integrity": "sha512-wE43PIyjal2dexxyyx4Lhbcb+E42amoYPnkunRZkb9WTA+Z+9LagbyxwsI352NqMdFmghR0opg29dzDO4/YXbw==", - "dependencies": { - "array.prototype.flat": "^1.2.1", - "global-cache": "^1.2.1" - }, - "peerDependencies": { - "react-with-styles": "^3.0.0" + "babel-plugin-inline-react-svg": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-inline-react-svg/-/babel-plugin-inline-react-svg-2.0.1.tgz", + "integrity": "sha512-aD4gy2G3gNVDaw97LtoixzWbaOcSEnOb4KJPe8kZedSeqxY3v71KsBs8DGmButGZtEloCRhRRuU2TpW1hIPXig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/parser": "^7.0.0", + "lodash.isplainobject": "^4.0.6", + "resolve": "^1.20.0", + "svgo": "^2.0.3" } }, - "node_modules/@wordpress/components/node_modules/scheduler": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", - "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "babel-plugin-istanbul": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", + "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^4.0.0", + "test-exclude": "^6.0.0" } }, - "node_modules/@wordpress/compose": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.0.3.tgz", - "integrity": "sha512-uRd4tBp2+FWorLuoec3CyoizgnlbrxvAyPx+it7+OmzP+/Lz6rRYkymaFDA/XTh2umkjYT8pK7FQP1H8+DfqVA==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@types/lodash": "^4.14.172", - "@types/mousetrap": "^1.6.8", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.4", - "@wordpress/element": "^4.0.2", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/priority-queue": "^2.2.2", - "clipboard": "^2.0.8", - "lodash": "^4.17.21", - "mousetrap": "^1.6.5", - "react-resize-aware": "^3.1.0", - "use-memo-one": "^1.1.1" - }, - "engines": { - "node": ">=12" + "babel-plugin-jest-hoist": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz", + "integrity": "sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==", + "dev": true, + "requires": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" } }, - "node_modules/@wordpress/core-data": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@wordpress/core-data/-/core-data-4.0.4.tgz", - "integrity": "sha512-8oEDlOImHDw7eeqAh3dF3bl33iPZKaezAi8IgAfhoRwFs1z9KdbVE4+8RHAtv1qjAPrFMhYBgYn+Rw5XsLrghA==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@wordpress/api-fetch": "^5.2.4", - "@wordpress/blocks": "^11.1.2", - "@wordpress/data": "^6.1.2", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/element": "^4.0.3", - "@wordpress/html-entities": "^3.2.2", - "@wordpress/i18n": "^4.2.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/url": "^3.2.3", - "equivalent-key-map": "^0.2.2", - "lodash": "^4.17.21", - "rememo": "^3.0.0", - "uuid": "^8.3.0" - }, - "engines": { - "node": ">=12" + "babel-plugin-macros": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", + "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", + "requires": { + "@babel/runtime": "^7.7.2", + "cosmiconfig": "^6.0.0", + "resolve": "^1.12.0" } }, - "node_modules/@wordpress/core-data/node_modules/@wordpress/api-fetch": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-5.2.4.tgz", - "integrity": "sha512-8vMm08L3MMUynhD6sxe9VhRcfi3qGE3m9j7LpC9yAIxt70DaMRxHWEmGIbgO2F3INkqACdLWnDQmsHDKOSWQsQ==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@wordpress/i18n": "^4.2.3", - "@wordpress/url": "^3.2.3" - }, - "engines": { - "node": ">=12" + "babel-plugin-polyfill-corejs2": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz", + "integrity": "sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.2.2", + "semver": "^6.1.1" } }, - "node_modules/@wordpress/core-data/node_modules/@wordpress/blocks": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/@wordpress/blocks/-/blocks-11.1.2.tgz", - "integrity": "sha512-xVvC/RXj9GXNRkQcGnmjWeS54intybON4Ol2vCVfreJtA5Cra5yRapRJwz3at1sgDD4q06k1sj98SemMEanazw==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@wordpress/autop": "^3.2.2", - "@wordpress/blob": "^3.2.1", - "@wordpress/block-serialization-default-parser": "^4.2.2", - "@wordpress/compose": "^5.0.4", - "@wordpress/data": "^6.1.2", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.5", - "@wordpress/element": "^4.0.3", - "@wordpress/hooks": "^3.2.1", - "@wordpress/html-entities": "^3.2.2", - "@wordpress/i18n": "^4.2.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/shortcode": "^3.2.2", - "colord": "^2.7.0", - "hpq": "^1.3.0", - "lodash": "^4.17.21", - "rememo": "^3.0.0", - "showdown": "^1.9.1", - "simple-html-tokenizer": "^0.5.7", - "uuid": "^8.3.0" - }, - "engines": { - "node": ">=12" + "babel-plugin-polyfill-corejs3": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.5.tgz", + "integrity": "sha512-ninF5MQNwAX9Z7c9ED+H2pGt1mXdP4TqzlHKyPIYmJIYz0N+++uwdM7RnJukklhzJ54Q84vA4ZJkgs7lu5vqcw==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.2.2", + "core-js-compat": "^3.16.2" } }, - "node_modules/@wordpress/core-data/node_modules/@wordpress/compose": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.0.4.tgz", - "integrity": "sha512-gRpQgsxF1AnmrJnkmJOixsTtSmimFzasiXZlm0BwhsdeJEEqVO3Mt7ua59bLPHjnUmiyDfMWY9Ongn/2cSCRKQ==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@types/lodash": "^4.14.172", - "@types/mousetrap": "^1.6.8", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.5", - "@wordpress/element": "^4.0.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/priority-queue": "^2.2.2", - "clipboard": "^2.0.8", - "lodash": "^4.17.21", - "mousetrap": "^1.6.5", - "react-resize-aware": "^3.1.0", - "use-memo-one": "^1.1.1" - }, - "engines": { - "node": ">=12" + "babel-plugin-polyfill-regenerator": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz", + "integrity": "sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.2.2" } }, - "node_modules/@wordpress/core-data/node_modules/@wordpress/data": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.1.2.tgz", - "integrity": "sha512-Ro4CGmGBgk+7gDOkoB/u/HFPjmObNTZvN1q1vb75gfHOjVmXFt6AZSialELc+AuYODZEedrvHRk7qMBPxsgTVQ==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@wordpress/compose": "^5.0.4", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/element": "^4.0.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/priority-queue": "^2.2.2", - "@wordpress/redux-routine": "^4.2.1", - "equivalent-key-map": "^0.2.2", - "is-promise": "^4.0.0", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "turbo-combine-reducers": "^1.0.2", - "use-memo-one": "^1.1.1" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "redux": "^4.1.0" - } + "babel-plugin-transform-react-remove-prop-types": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", + "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==", + "dev": true }, - "node_modules/@wordpress/core-data/node_modules/@wordpress/element": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.3.tgz", - "integrity": "sha512-uFL8Xx0Uq/C+nCL5aM4Fb6YVub//1wuHyQK9VDtKwYg9UBELrexSCHo1XaesYRiGUqVW0o837qC7RCP2NLUBJw==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@types/react": "^16.9.0", - "@types/react-dom": "^16.9.0", - "@wordpress/escape-html": "^2.2.2", - "lodash": "^4.17.21", - "react": "^17.0.1", - "react-dom": "^17.0.1" - }, - "engines": { - "node": ">=12" + "babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "requires": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@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-top-level-await": "^7.8.3" } }, - "node_modules/@wordpress/data": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.1.1.tgz", - "integrity": "sha512-I+kvY2aMA4Ec62rZCS4vUKRalZ01qiBTkEQXash+usYH3Lsyi6rULekwUZ9zcisVpWYbaLZsrmmarCusS65KTg==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@wordpress/compose": "^5.0.3", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/element": "^4.0.2", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/priority-queue": "^2.2.2", - "@wordpress/redux-routine": "^4.2.1", - "equivalent-key-map": "^0.2.2", - "is-promise": "^4.0.0", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "turbo-combine-reducers": "^1.0.2", - "use-memo-one": "^1.1.1" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "redux": "^4.1.0" + "babel-preset-jest": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz", + "integrity": "sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "^26.6.2", + "babel-preset-current-node-syntax": "^1.0.0" } }, - "node_modules/@wordpress/data-controls": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/@wordpress/data-controls/-/data-controls-2.2.5.tgz", - "integrity": "sha512-kA01JYKze3CSmnjTwkvMPiRkKZfvbZFuNbUOyLmD6WTK1CCahGmD2ro/wv0TyUC7K3Z1w03Ekb+Y9PJA7VACvg==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@wordpress/api-fetch": "^5.2.4", - "@wordpress/data": "^6.1.2", - "@wordpress/deprecated": "^3.2.2" + "babel-runtime": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.25.0.tgz", + "integrity": "sha1-M7mOql1IK7AajRqmtDetKwGuxBw=", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.10.0" }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@wordpress/data-controls/node_modules/@wordpress/api-fetch": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-5.2.4.tgz", - "integrity": "sha512-8vMm08L3MMUynhD6sxe9VhRcfi3qGE3m9j7LpC9yAIxt70DaMRxHWEmGIbgO2F3INkqACdLWnDQmsHDKOSWQsQ==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@wordpress/i18n": "^4.2.3", - "@wordpress/url": "^3.2.3" - }, - "engines": { - "node": ">=12" + "core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", + "dev": true + } } }, - "node_modules/@wordpress/data-controls/node_modules/@wordpress/compose": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.0.4.tgz", - "integrity": "sha512-gRpQgsxF1AnmrJnkmJOixsTtSmimFzasiXZlm0BwhsdeJEEqVO3Mt7ua59bLPHjnUmiyDfMWY9Ongn/2cSCRKQ==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@types/lodash": "^4.14.172", - "@types/mousetrap": "^1.6.8", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.5", - "@wordpress/element": "^4.0.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/priority-queue": "^2.2.2", - "clipboard": "^2.0.8", - "lodash": "^4.17.21", - "mousetrap": "^1.6.5", - "react-resize-aware": "^3.1.0", - "use-memo-one": "^1.1.1" - }, - "engines": { - "node": ">=12" - } + "bail": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", + "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", + "dev": true }, - "node_modules/@wordpress/data-controls/node_modules/@wordpress/data": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.1.2.tgz", - "integrity": "sha512-Ro4CGmGBgk+7gDOkoB/u/HFPjmObNTZvN1q1vb75gfHOjVmXFt6AZSialELc+AuYODZEedrvHRk7qMBPxsgTVQ==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@wordpress/compose": "^5.0.4", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/element": "^4.0.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/priority-queue": "^2.2.2", - "@wordpress/redux-routine": "^4.2.1", - "equivalent-key-map": "^0.2.2", - "is-promise": "^4.0.0", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "turbo-combine-reducers": "^1.0.2", - "use-memo-one": "^1.1.1" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "redux": "^4.1.0" - } + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true }, - "node_modules/@wordpress/data-controls/node_modules/@wordpress/element": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.3.tgz", - "integrity": "sha512-uFL8Xx0Uq/C+nCL5aM4Fb6YVub//1wuHyQK9VDtKwYg9UBELrexSCHo1XaesYRiGUqVW0o837qC7RCP2NLUBJw==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@types/react": "^16.9.0", - "@types/react-dom": "^16.9.0", - "@wordpress/escape-html": "^2.2.2", - "lodash": "^4.17.21", - "react": "^17.0.1", - "react-dom": "^17.0.1" + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "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" }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@wordpress/date": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@wordpress/date/-/date-4.2.2.tgz", - "integrity": "sha512-sYcMvFwrVoYv5lL9NsYLVd29hfuqgf1L1WsIjDV8hMna1eqr9f8xCrZSLgBKkDBmVWiIcleYGP5uDdrKpu6EiA==", "dependencies": { - "@babel/runtime": "^7.13.10", - "moment": "^2.22.1", - "moment-timezone": "^0.5.31" - }, - "engines": { - "node": ">=12" + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } } }, - "node_modules/@wordpress/dependency-extraction-webpack-plugin": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@wordpress/dependency-extraction-webpack-plugin/-/dependency-extraction-webpack-plugin-3.2.1.tgz", - "integrity": "sha512-Ltd+1CJb7PMh6iN2Mse+3yN/oMORug5qXSj/3xmuZERzZO2SO6xNEJGml8yK9ev747cbHktEpitK4H+8VO3Ekg==", - "dev": true, - "dependencies": { - "json2php": "^0.0.4", - "webpack-sources": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "webpack": "^4.8.3 || ^5.0.0" - } + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true }, - "node_modules/@wordpress/deprecated": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.2.2.tgz", - "integrity": "sha512-htsu2zJUuGYG1+jejAi0r25bQQOT3bB0MGjoSixqZ0sRkFMRIdjmMLrSbpGrl0s5IRK2/w/slsStPFmm3reJtA==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@wordpress/hooks": "^3.2.1" - }, - "engines": { - "node": ">=12" - } + "before-after-hook": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz", + "integrity": "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==", + "dev": true }, - "node_modules/@wordpress/dom": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.2.5.tgz", - "integrity": "sha512-V/P3w8DH8shSpKB/lq6R39IbV944ztPGCG+H6+HxXWDcfk+x5PCd1tuy2Jx+F+gjsahlkJOufrBh7u2+PmJwgQ==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "lodash": "^4.17.21" - }, - "engines": { - "node": ">=12" - } + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true }, - "node_modules/@wordpress/dom-ready": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@wordpress/dom-ready/-/dom-ready-3.2.2.tgz", - "integrity": "sha512-yCpm/vG3GanhhACnpbc7GZ2sv6oSHIkTxNPgejA5Z8cr0mEc6irsWDzhEHKcP3OhSina++IZ9ZidO7JH7eE2Xg==", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "engines": { - "node": ">=12" - } + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true }, - "node_modules/@wordpress/e2e-test-utils": { - "version": "5.4.4", - "resolved": "https://registry.npmjs.org/@wordpress/e2e-test-utils/-/e2e-test-utils-5.4.4.tgz", - "integrity": "sha512-llAWmQXyGFqEc58NHLX2SX1I03VRLCfdrZ2TWRK+qYY6QZns4wsJP4Lg2c1SsXIzUUB9u95Kzx3LvGcZcqLTfw==", + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dev": true, - "dependencies": { - "@babel/runtime": "^7.13.10", - "@wordpress/api-fetch": "^5.2.3", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/url": "^3.2.3", - "form-data": "^4.0.0", - "lodash": "^4.17.21", - "node-fetch": "^2.6.0" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "jest": ">=26", - "puppeteer": ">=1.19.0" + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" } }, - "node_modules/@wordpress/edit-post": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@wordpress/edit-post/-/edit-post-5.0.3.tgz", - "integrity": "sha512-/DNgi6LqDqBQoGzwYdDIKN++cu2Ry5Zev99sQMN1pnVhlmXXt6nQVUXeJ53Rfi1/baK1VB4okDwKYD84UdZT5Q==", + "body": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/body/-/body-5.1.0.tgz", + "integrity": "sha1-5LoM5BCkaTYyM2dgnstOZVMSUGk=", "dev": true, - "dependencies": { - "@babel/runtime": "^7.13.10", - "@wordpress/a11y": "^3.2.3", - "@wordpress/api-fetch": "^5.2.3", - "@wordpress/block-editor": "^7.0.3", - "@wordpress/block-library": "^6.0.1", - "@wordpress/blocks": "^11.1.1", - "@wordpress/components": "^18.0.0", - "@wordpress/compose": "^5.0.3", - "@wordpress/core-data": "^4.0.3", - "@wordpress/data": "^6.1.1", - "@wordpress/data-controls": "^2.2.4", - "@wordpress/editor": "^12.0.0", - "@wordpress/element": "^4.0.2", - "@wordpress/hooks": "^3.2.1", - "@wordpress/i18n": "^4.2.3", - "@wordpress/icons": "^6.0.0", - "@wordpress/interface": "^4.1.1", - "@wordpress/keyboard-shortcuts": "^3.0.3", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/media-utils": "^3.0.2", - "@wordpress/notices": "^3.2.4", - "@wordpress/plugins": "^4.0.3", - "@wordpress/primitives": "^3.0.2", - "@wordpress/url": "^3.2.3", - "@wordpress/viewport": "^4.0.3", - "@wordpress/warning": "^2.2.2", - "classnames": "^2.3.1", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "rememo": "^3.0.0", - "uuid": "8.3.0" - }, - "engines": { - "node": ">=12" + "requires": { + "continuable-cache": "^0.3.1", + "error": "^7.0.0", + "raw-body": "~1.1.0", + "safe-json-parse": "~1.0.1" } }, - "node_modules/@wordpress/edit-post/node_modules/uuid": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.0.tgz", - "integrity": "sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ==", + "body-scroll-lock": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/body-scroll-lock/-/body-scroll-lock-3.1.5.tgz", + "integrity": "sha512-Yi1Xaml0EvNA0OYWxXiYNqY24AfWkbA6w5vxE7GWxtKfzIbZM+Qw+aSmkgsbWzbHiy/RCSkUZBplVxTA+E4jJg==" + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "bin": { - "uuid": "dist/bin/uuid" + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/@wordpress/editor": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@wordpress/editor/-/editor-12.0.0.tgz", - "integrity": "sha512-o2MD1eAaIk5pmuZ/MzBO0Mz3ogoOcuugQ4cZpvVl2lZsu8AzVK3PfhrWWgkLFlu5pho5UCBbCKQjwJoAJkyd4Q==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@wordpress/a11y": "^3.2.3", - "@wordpress/api-fetch": "^5.2.3", - "@wordpress/autop": "^3.2.2", - "@wordpress/blob": "^3.2.1", - "@wordpress/block-editor": "^7.0.3", - "@wordpress/blocks": "^11.1.1", - "@wordpress/components": "^18.0.0", - "@wordpress/compose": "^5.0.3", - "@wordpress/core-data": "^4.0.3", - "@wordpress/data": "^6.1.1", - "@wordpress/data-controls": "^2.2.4", - "@wordpress/date": "^4.2.2", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/element": "^4.0.2", - "@wordpress/hooks": "^3.2.1", - "@wordpress/html-entities": "^3.2.2", - "@wordpress/i18n": "^4.2.3", - "@wordpress/icons": "^6.0.0", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keyboard-shortcuts": "^3.0.3", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/media-utils": "^3.0.2", - "@wordpress/notices": "^3.2.4", - "@wordpress/reusable-blocks": "^3.0.3", - "@wordpress/rich-text": "^5.0.3", - "@wordpress/server-side-render": "^3.0.3", - "@wordpress/url": "^3.2.3", - "@wordpress/wordcount": "^3.2.2", - "classnames": "^2.3.1", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "react-autosize-textarea": "^7.1.0", - "rememo": "^3.0.0" - }, - "engines": { - "node": ">=12" + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" } }, - "node_modules/@wordpress/editor/node_modules/react": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", - "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2" - }, - "engines": { - "node": ">=0.10.0" - } + "brcast": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brcast/-/brcast-2.0.2.tgz", + "integrity": "sha512-Tfn5JSE7hrUlFcOoaLzVvkbgIemIorMIyoMr3TgvszWW7jFt2C9PdeMLtysYD9RU0MmU17b69+XJG1eRY2OBRg==" }, - "node_modules/@wordpress/editor/node_modules/react-autosize-textarea": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/react-autosize-textarea/-/react-autosize-textarea-7.1.0.tgz", - "integrity": "sha512-BHpjCDkuOlllZn3nLazY2F8oYO1tS2jHnWhcjTWQdcKiiMU6gHLNt/fzmqMSyerR0eTdKtfSIqtSeTtghNwS+g==", - "dependencies": { - "autosize": "^4.0.2", - "line-height": "^0.3.1", - "prop-types": "^15.5.6" - }, - "peerDependencies": { - "react": "^0.14.0 || ^15.0.0 || ^16.0.0", - "react-dom": "^0.14.0 || ^15.0.0 || ^16.0.0" - } + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true }, - "node_modules/@wordpress/editor/node_modules/react-dom": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", - "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.19.1" - }, - "peerDependencies": { - "react": "^16.14.0" + "browserslist": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.4.tgz", + "integrity": "sha512-Zg7RpbZpIJRW3am9Lyckue7PLytvVxxhJj1CaJVlCWENsGEAOlnlt8X0ZxGRPp7Bt9o8tIRM5SEXy4BCPMJjLQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001265", + "electron-to-chromium": "^1.3.867", + "escalade": "^3.1.1", + "node-releases": "^2.0.0", + "picocolors": "^1.0.0" } }, - "node_modules/@wordpress/editor/node_modules/scheduler": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", - "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "requires": { + "node-int64": "^0.4.0" } }, - "node_modules/@wordpress/element": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.2.tgz", - "integrity": "sha512-qBNpkLb7Hh3r9aSwBOBMwRUevScbN5iR1M5B8/ZOuSZbeXYNcgWxX4WqVrt5Y52CNm8WwoQTdqcuIziNN6lhig==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@types/react": "^16.9.0", - "@types/react-dom": "^16.9.0", - "@wordpress/escape-html": "^2.2.2", - "lodash": "^4.17.21", - "react": "^17.0.1", - "react-dom": "^17.0.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@wordpress/escape-html": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-2.2.2.tgz", - "integrity": "sha512-NuPury2dyaqF7zpDaUOKaoM0FrEuqaDE1c3j7rM6kceJ4ZFDHnCLf5NivwchOLo7Xs0oVtqBdDza/dcSQaLFGg==", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@wordpress/eslint-plugin": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/@wordpress/eslint-plugin/-/eslint-plugin-9.2.0.tgz", - "integrity": "sha512-x0vI4EWeG20TyewXdiyUhGSJRqXR8vw47WZjzdmL8iuitDCoyWkKe73wtEs/mWLDrSNms8S0bTnp0dK6UAMXJw==", + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "dev": true, - "dependencies": { - "@typescript-eslint/eslint-plugin": "^4.31.0", - "@typescript-eslint/parser": "^4.31.0", - "@wordpress/prettier-config": "^1.1.1", - "babel-eslint": "^10.1.0", - "cosmiconfig": "^7.0.0", - "eslint-config-prettier": "^7.1.0", - "eslint-plugin-import": "^2.23.4", - "eslint-plugin-jest": "^24.1.3", - "eslint-plugin-jsdoc": "^36.0.8", - "eslint-plugin-jsx-a11y": "^6.4.1", - "eslint-plugin-prettier": "^3.3.0", - "eslint-plugin-react": "^7.22.0", - "eslint-plugin-react-hooks": "^4.2.0", - "globals": "^12.0.0", - "prettier": "npm:wp-prettier@2.2.1-beta-1", - "requireindex": "^1.2.0" - }, - "engines": { - "node": ">=12", - "npm": ">=6.9" - }, - "peerDependencies": { - "eslint": "^6 || ^7", - "typescript": "^4" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, - "node_modules/@wordpress/eslint-plugin/node_modules/globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", - "dev": true, - "dependencies": { - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "dev": true }, - "node_modules/@wordpress/eslint-plugin/node_modules/prettier": { - "name": "wp-prettier", - "version": "2.2.1-beta-1", - "resolved": "https://registry.npmjs.org/wp-prettier/-/wp-prettier-2.2.1-beta-1.tgz", - "integrity": "sha512-+JHkqs9LC/JPp51yy1hzs3lQ7qeuWCwOcSzpQNeeY/G7oSpnF61vxt7hRh87zNRTr6ob2ndy0W8rVzhgrcA+Gw==", - "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - } + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true }, - "node_modules/@wordpress/eslint-plugin/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "engines": { - "node": ">=8" - } + "bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz", + "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=", + "dev": true }, - "node_modules/@wordpress/hooks": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-3.2.1.tgz", - "integrity": "sha512-yI8MHs6UsvgJdDsOnXGkY7/7hrOCEv/M7vwdEVA5r6nGzgJaJxf8pjBqzRkCq3nVaWqxoNZgCMHJSul6Q8RR2g==", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "engines": { - "node": ">=12" + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "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" } }, - "node_modules/@wordpress/html-entities": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@wordpress/html-entities/-/html-entities-3.2.2.tgz", - "integrity": "sha512-MsmB1wtDMFfvNQiKMVMW+1ie2P3+tBZiHESkDPnXw34Dt4Tk0+QY7eYCR9krNcjJImWYJcxL+4n4M1OF9oQv0Q==", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "engines": { - "node": ">=12" + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" } }, - "node_modules/@wordpress/i18n": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.2.3.tgz", - "integrity": "sha512-iaL7WVmFBVLyUJR0FVeaI0YJK3BiYg6Ir+s3PoJN3ppm+YsZUGThstHL8zSfQFMF0WaQ0OFWjnDqNl1th2annA==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@wordpress/hooks": "^3.2.1", - "gettext-parser": "^1.3.1", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "sprintf-js": "^1.1.1", - "tannin": "^1.2.0" - }, - "bin": { - "pot-to-php": "tools/pot-to-php.js" - }, - "engines": { - "node": ">=12" - } + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" }, - "node_modules/@wordpress/icons": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@wordpress/icons/-/icons-6.0.0.tgz", - "integrity": "sha512-dLr7O2mu6JlCQhM3uSIRJHFyv1AeYpRosrcWF9+zlhUy7RBczfLfhf7lXO6gVxhyuUEiWYfvesB5pNha4HxsVg==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@wordpress/element": "^4.0.2", - "@wordpress/primitives": "^3.0.2" - }, - "engines": { - "node": ">=12" - } + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" }, - "node_modules/@wordpress/interface": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@wordpress/interface/-/interface-4.1.2.tgz", - "integrity": "sha512-v4sxmuBwgpTHmGmrYwd8pkTtDclzS2xercESCW1r5NNRuRrzzLBJwtA43WugB5Y9D6YCdctJWHaEcvGugPes9g==", + "camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", "dev": true, - "dependencies": { - "@babel/runtime": "^7.13.10", - "@wordpress/a11y": "^3.2.3", - "@wordpress/components": "^19.0.0", - "@wordpress/compose": "^5.0.4", - "@wordpress/data": "^6.1.2", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/element": "^4.0.3", - "@wordpress/i18n": "^4.2.3", - "@wordpress/icons": "^6.0.1", - "@wordpress/plugins": "^4.0.4", - "@wordpress/viewport": "^4.0.4", - "classnames": "^2.3.1", - "lodash": "^4.17.21" - }, - "engines": { - "node": ">=12" + "requires": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" } }, - "node_modules/@wordpress/interface/node_modules/@wordpress/components": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/@wordpress/components/-/components-19.0.0.tgz", - "integrity": "sha512-foFC+jJ3nu6PZ2pnjdszi7R17CQRquXkCPaydlOCsuDbsKm0dowR264jAdK0HJWepttj+kh3amWEhzajX6AYtg==", + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", "dev": true, - "dependencies": { - "@babel/runtime": "^7.13.10", - "@emotion/cache": "^11.4.0", - "@emotion/css": "^11.1.3", - "@emotion/react": "^11.4.1", - "@emotion/styled": "^11.3.0", - "@emotion/utils": "1.0.0", - "@wordpress/a11y": "^3.2.3", - "@wordpress/compose": "^5.0.4", - "@wordpress/date": "^4.2.2", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.5", - "@wordpress/element": "^4.0.3", - "@wordpress/hooks": "^3.2.1", - "@wordpress/i18n": "^4.2.3", - "@wordpress/icons": "^6.0.1", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/primitives": "^3.0.3", - "@wordpress/rich-text": "^5.0.4", - "@wordpress/warning": "^2.2.2", - "classnames": "^2.3.1", - "colord": "^2.7.0", - "dom-scroll-into-view": "^1.2.1", - "downshift": "^6.0.15", - "framer-motion": "^4.1.17", - "gradient-parser": "^0.1.5", - "highlight-words-core": "^1.2.2", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "moment": "^2.22.1", - "re-resizable": "^6.4.0", - "react-colorful": "^5.3.1", - "react-dates": "^17.1.1", - "react-resize-aware": "^3.1.0", - "react-use-gesture": "^9.0.0", - "reakit": "^1.3.8", - "rememo": "^3.0.0", - "uuid": "^8.3.0" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "reakit-utils": "^0.15.1" + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" } }, - "node_modules/@wordpress/interface/node_modules/@wordpress/components/node_modules/airbnb-prop-types": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz", - "integrity": "sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg==", + "caniuse-lite": { + "version": "1.0.30001267", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001267.tgz", + "integrity": "sha512-r1mjTzAuJ9W8cPBGbbus8E0SKcUP7gn03R14Wk8FlAlqhH9hroy9nLqmpuXlfKEw/oILW+FGz47ipXV2O7x8lg==", + "dev": true + }, + "capture-exit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", + "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", "dev": true, - "dependencies": { - "array.prototype.find": "^2.1.1", - "function.prototype.name": "^1.1.2", - "is-regex": "^1.1.0", - "object-is": "^1.1.2", - "object.assign": "^4.1.0", - "object.entries": "^1.1.2", - "prop-types": "^15.7.2", - "prop-types-exact": "^1.2.0", - "react-is": "^16.13.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - }, - "peerDependencies": { - "react": "^0.14 || ^15.0.0 || ^16.0.0-alpha" + "requires": { + "rsvp": "^4.8.4" } }, - "node_modules/@wordpress/interface/node_modules/@wordpress/components/node_modules/react": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", - "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", - "dev": true, - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2" + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + } } }, - "node_modules/@wordpress/interface/node_modules/@wordpress/components/node_modules/react-dates": { - "version": "17.2.0", - "resolved": "https://registry.npmjs.org/react-dates/-/react-dates-17.2.0.tgz", - "integrity": "sha512-RDlerU8DdRRrlYS0MQ7Z9igPWABGLDwz6+ykBNff67RM3Sset2TDqeuOr+R5o00Ggn5U47GeLsGcSDxlZd9cHw==", - "dev": true, - "dependencies": { - "airbnb-prop-types": "^2.10.0", - "consolidated-events": "^1.1.1 || ^2.0.0", - "is-touch-device": "^1.0.1", - "lodash": "^4.1.1", - "object.assign": "^4.1.0", - "object.values": "^1.0.4", - "prop-types": "^15.6.1", - "react-addons-shallow-compare": "^15.6.2", - "react-moment-proptypes": "^1.6.0", - "react-outside-click-handler": "^1.2.0", - "react-portal": "^4.1.5", - "react-with-styles": "^3.2.0", - "react-with-styles-interface-css": "^4.0.2" - }, - "peerDependencies": { - "moment": "^2.18.1", - "react": "^0.14 || ^15.5.4 || ^16.1.1", - "react-dom": "^0.14 || ^15.5.4 || ^16.1.1" - } + "char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true }, - "node_modules/@wordpress/interface/node_modules/@wordpress/components/node_modules/react-dom": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", - "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", - "dev": true, - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.19.1" - }, - "peerDependencies": { - "react": "^16.14.0" - } + "character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "dev": true }, - "node_modules/@wordpress/interface/node_modules/@wordpress/components/node_modules/react-outside-click-handler": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/react-outside-click-handler/-/react-outside-click-handler-1.3.0.tgz", - "integrity": "sha512-Te/7zFU0oHpAnctl//pP3hEAeobfeHMyygHB8MnjP6sX5OR8KHT1G3jmLsV3U9RnIYo+Yn+peJYWu+D5tUS8qQ==", - "dev": true, - "dependencies": { - "airbnb-prop-types": "^2.15.0", - "consolidated-events": "^1.1.1 || ^2.0.0", - "document.contains": "^1.0.1", - "object.values": "^1.1.0", - "prop-types": "^15.7.2" - }, - "peerDependencies": { - "react": "^0.14 || >=15", - "react-dom": "^0.14 || >=15" - } + "character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true }, - "node_modules/@wordpress/interface/node_modules/@wordpress/components/node_modules/react-portal": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/react-portal/-/react-portal-4.2.1.tgz", - "integrity": "sha512-fE9kOBagwmTXZ3YGRYb4gcMy+kSA+yLO0xnPankjRlfBv4uCpFXqKPfkpsGQQR15wkZ9EssnvTOl1yMzbkxhPQ==", - "dev": true, - "dependencies": { - "prop-types": "^15.5.8" - }, - "peerDependencies": { - "react": "^15.0.0-0 || ^16.0.0-0 || ^17.0.0-0" - } + "character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "dev": true }, - "node_modules/@wordpress/interface/node_modules/@wordpress/components/node_modules/react-with-direction": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/react-with-direction/-/react-with-direction-1.4.0.tgz", - "integrity": "sha512-ybHNPiAmaJpoWwugwqry9Hd1Irl2hnNXlo/2SXQBwbLn/jGMauMS2y9jw+ydyX5V9ICryCqObNSthNt5R94xpg==", + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "check-node-version": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/check-node-version/-/check-node-version-4.1.0.tgz", + "integrity": "sha512-TSXGsyfW5/xY2QseuJn8/hleO2AU7HxVCdkc900jp1vcfzF840GkjvRT7CHl8sRtWn23n3X3k0cwH9RXeRwhfw==", "dev": true, - "dependencies": { - "airbnb-prop-types": "^2.16.0", - "brcast": "^2.0.2", - "deepmerge": "^1.5.2", - "direction": "^1.0.4", - "hoist-non-react-statics": "^3.3.2", - "object.assign": "^4.1.2", - "object.values": "^1.1.5", - "prop-types": "^15.7.2" + "requires": { + "chalk": "^3.0.0", + "map-values": "^1.0.1", + "minimist": "^1.2.0", + "object-filter": "^1.0.2", + "run-parallel": "^1.1.4", + "semver": "^6.3.0" }, - "peerDependencies": { - "react": "^0.14 || ^15 || ^16", - "react-dom": "^0.14 || ^15 || ^16" + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, - "node_modules/@wordpress/interface/node_modules/@wordpress/components/node_modules/react-with-styles": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/react-with-styles/-/react-with-styles-3.2.3.tgz", - "integrity": "sha512-MTI1UOvMHABRLj5M4WpODfwnveHaip6X7QUMI2x6zovinJiBXxzhA9AJP7MZNaKqg1JRFtHPXZdroUC8KcXwlQ==", + "cheerio": { + "version": "1.0.0-rc.10", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz", + "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==", "dev": true, - "dependencies": { - "hoist-non-react-statics": "^3.2.1", - "object.assign": "^4.1.0", - "prop-types": "^15.6.2", - "react-with-direction": "^1.3.0" + "requires": { + "cheerio-select": "^1.5.0", + "dom-serializer": "^1.3.2", + "domhandler": "^4.2.0", + "htmlparser2": "^6.1.0", + "parse5": "^6.0.1", + "parse5-htmlparser2-tree-adapter": "^6.0.1", + "tslib": "^2.2.0" }, - "peerDependencies": { - "react": ">=0.14", - "react-with-direction": "^1.1.0" + "dependencies": { + "dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true + } } }, - "node_modules/@wordpress/interface/node_modules/@wordpress/components/node_modules/react-with-styles-interface-css": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/react-with-styles-interface-css/-/react-with-styles-interface-css-4.0.3.tgz", - "integrity": "sha512-wE43PIyjal2dexxyyx4Lhbcb+E42amoYPnkunRZkb9WTA+Z+9LagbyxwsI352NqMdFmghR0opg29dzDO4/YXbw==", + "cheerio-select": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.5.0.tgz", + "integrity": "sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg==", "dev": true, - "dependencies": { - "array.prototype.flat": "^1.2.1", - "global-cache": "^1.2.1" + "requires": { + "css-select": "^4.1.3", + "css-what": "^5.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0", + "domutils": "^2.7.0" }, - "peerDependencies": { - "react-with-styles": "^3.0.0" + "dependencies": { + "css-select": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", + "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^5.0.0", + "domhandler": "^4.2.0", + "domutils": "^2.6.0", + "nth-check": "^2.0.0" + } + }, + "css-what": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", + "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", + "dev": true + }, + "dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "nth-check": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + } } }, - "node_modules/@wordpress/interface/node_modules/@wordpress/compose": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.0.4.tgz", - "integrity": "sha512-gRpQgsxF1AnmrJnkmJOixsTtSmimFzasiXZlm0BwhsdeJEEqVO3Mt7ua59bLPHjnUmiyDfMWY9Ongn/2cSCRKQ==", + "child_process": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/child_process/-/child_process-1.0.2.tgz", + "integrity": "sha1-sffn/HPSXn/R1FWtyU4UODAYK1o=", + "dev": true + }, + "chokidar": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", "dev": true, - "dependencies": { - "@babel/runtime": "^7.13.10", - "@types/lodash": "^4.14.172", - "@types/mousetrap": "^1.6.8", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.5", - "@wordpress/element": "^4.0.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/priority-queue": "^2.2.2", - "clipboard": "^2.0.8", - "lodash": "^4.17.21", - "mousetrap": "^1.6.5", - "react-resize-aware": "^3.1.0", - "use-memo-one": "^1.1.1" - }, - "engines": { - "node": ">=12" + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.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" } }, - "node_modules/@wordpress/interface/node_modules/@wordpress/data": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.1.2.tgz", - "integrity": "sha512-Ro4CGmGBgk+7gDOkoB/u/HFPjmObNTZvN1q1vb75gfHOjVmXFt6AZSialELc+AuYODZEedrvHRk7qMBPxsgTVQ==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.13.10", - "@wordpress/compose": "^5.0.4", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/element": "^4.0.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/priority-queue": "^2.2.2", - "@wordpress/redux-routine": "^4.2.1", - "equivalent-key-map": "^0.2.2", - "is-promise": "^4.0.0", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "turbo-combine-reducers": "^1.0.2", - "use-memo-one": "^1.1.1" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "redux": "^4.1.0" - } + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true }, - "node_modules/@wordpress/interface/node_modules/@wordpress/element": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.3.tgz", - "integrity": "sha512-uFL8Xx0Uq/C+nCL5aM4Fb6YVub//1wuHyQK9VDtKwYg9UBELrexSCHo1XaesYRiGUqVW0o837qC7RCP2NLUBJw==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.13.10", - "@types/react": "^16.9.0", - "@types/react-dom": "^16.9.0", - "@wordpress/escape-html": "^2.2.2", - "lodash": "^4.17.21", - "react": "^17.0.1", - "react-dom": "^17.0.1" - }, - "engines": { - "node": ">=12" - } + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true }, - "node_modules/@wordpress/interface/node_modules/@wordpress/icons": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@wordpress/icons/-/icons-6.0.1.tgz", - "integrity": "sha512-YAtnWquaWWM49hpoRJwaZRBTnnkwqOY0TuK8a6m0gXE2Xm3uoO/J4c6tLqKiFv3FG9Hmc/CB1WCmx+uM1TX0vw==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.13.10", - "@wordpress/element": "^4.0.3", - "@wordpress/primitives": "^3.0.3" - }, - "engines": { - "node": ">=12" - } + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true }, - "node_modules/@wordpress/interface/node_modules/@wordpress/plugins": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@wordpress/plugins/-/plugins-4.0.4.tgz", - "integrity": "sha512-B2BdGbnt8zF8Ne+mJJsGE5cb6k1w7vG28PNozoCfJfyOEjunqpDtM+C7HaY7ml5qz3h1Q0kifubI96B/eZJGsQ==", + "cjs-module-lexer": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz", + "integrity": "sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==", + "dev": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "dev": true, - "dependencies": { - "@babel/runtime": "^7.13.10", - "@wordpress/compose": "^5.0.4", - "@wordpress/element": "^4.0.3", - "@wordpress/hooks": "^3.2.1", - "@wordpress/icons": "^6.0.1", - "lodash": "^4.17.21", - "memize": "^1.1.0" + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" }, - "engines": { - "node": ">=12" + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } } }, - "node_modules/@wordpress/interface/node_modules/deepmerge": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", - "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "classnames": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz", + "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==" }, - "node_modules/@wordpress/interface/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true }, - "node_modules/@wordpress/interface/node_modules/scheduler": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", - "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "clean-webpack-plugin": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-3.0.0.tgz", + "integrity": "sha512-MciirUH5r+cYLGCOL5JX/ZLzOZbVr1ot3Fw+KcvbhUb6PM+yycqd9ZhIlcigQ5gl+XhppNmw3bEFuaaMNyLj3A==", "dev": true, - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "node_modules/@wordpress/is-shallow-equal": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-4.2.0.tgz", - "integrity": "sha512-9Oy7f3HFLMNfry4LLwYmfx4tROmusPAOfanv9F/MgzSBfMH7eyxU2JZd4KrP7IbPb59UfoUa8GhaLsnqKm66og==", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "engines": { - "node": ">=12" + "requires": { + "@types/webpack": "^4.4.31", + "del": "^4.1.1" } }, - "node_modules/@wordpress/jest-console": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@wordpress/jest-console/-/jest-console-4.1.0.tgz", - "integrity": "sha512-MAbEfYUH+odlYYtPNKoKnWzSZKZjSc2r2kvFJ7FR920ZdteEgSAPIOvjyv4r4UbJy3ZuKemnXHuVtcTAKca5Tw==", + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "dev": true, - "dependencies": { - "@babel/runtime": "^7.13.10", - "jest-matcher-utils": "^26.6.2", - "lodash": "^4.17.21" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "jest": ">=26" + "requires": { + "restore-cursor": "^2.0.0" } }, - "node_modules/@wordpress/jest-preset-default": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/@wordpress/jest-preset-default/-/jest-preset-default-7.1.2.tgz", - "integrity": "sha512-TzrGj+eBrOQJxMLNh+gh+ImfFaK3caHLu7U4xF8UCGh6N+OuOTz5W9YHG/lqOuxDLdFhVkiHTytM2uFylGGRsg==", + "cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", "dev": true, - "dependencies": { - "@wojtekmaj/enzyme-adapter-react-17": "^0.6.1", - "@wordpress/jest-console": "^4.1.0", - "babel-jest": "^26.6.3", - "enzyme": "^3.11.0", - "enzyme-to-json": "^3.4.4" - }, - "engines": { - "node": ">=12" + "requires": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" }, - "peerDependencies": { - "jest": ">=26" + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } } }, - "node_modules/@wordpress/jest-puppeteer-axe": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@wordpress/jest-puppeteer-axe/-/jest-puppeteer-axe-3.1.0.tgz", - "integrity": "sha512-XdxXI9nKSAyPWMMjWObfEuumcbZG0wSvlGzNl/qlTjcxwVNaCIxzBBfMxbcxNLcXHasNr/PowbxVqMCEaMfpcA==", - "dev": true, - "dependencies": { - "@axe-core/puppeteer": "^4.0.0", - "@babel/runtime": "^7.13.10" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "jest": ">=26", - "puppeteer": ">=1.19.0" + "cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "dev": true + }, + "clipboard": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.8.tgz", + "integrity": "sha512-Y6WO0unAIQp5bLmk1zdThRhgJt/x3ks6f30s3oE3H1mgIEU33XyQjEf8gsf6DxC7NPX8Y1SsNWjUjL/ywLnnbQ==", + "requires": { + "good-listener": "^1.2.2", + "select": "^1.1.2", + "tiny-emitter": "^2.0.0" } }, - "node_modules/@wordpress/keyboard-shortcuts": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@wordpress/keyboard-shortcuts/-/keyboard-shortcuts-3.0.4.tgz", - "integrity": "sha512-nGYW9d4qiK5pKA4zs/0Ym5SqgUccaCQ/D5qODDlUS9Ba427BiR74L7ANfgN4QH3NPIlSCwrJGFI2UjE1TTyN+Q==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@wordpress/compose": "^5.0.4", - "@wordpress/data": "^6.1.2", - "@wordpress/element": "^4.0.3", - "@wordpress/keycodes": "^3.2.3", - "lodash": "^4.17.21", - "rememo": "^3.0.0" - }, - "engines": { - "node": ">=12" + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" } }, - "node_modules/@wordpress/keyboard-shortcuts/node_modules/@wordpress/compose": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.0.4.tgz", - "integrity": "sha512-gRpQgsxF1AnmrJnkmJOixsTtSmimFzasiXZlm0BwhsdeJEEqVO3Mt7ua59bLPHjnUmiyDfMWY9Ongn/2cSCRKQ==", + "clone-deep": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.2.4.tgz", + "integrity": "sha1-TnPdCen7lxzDhnDF3O2cGJZIHMY=", + "dev": true, + "requires": { + "for-own": "^0.1.3", + "is-plain-object": "^2.0.1", + "kind-of": "^3.0.2", + "lazy-cache": "^1.0.3", + "shallow-clone": "^0.1.2" + }, "dependencies": { - "@babel/runtime": "^7.13.10", - "@types/lodash": "^4.14.172", - "@types/mousetrap": "^1.6.8", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.5", - "@wordpress/element": "^4.0.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/priority-queue": "^2.2.2", - "clipboard": "^2.0.8", - "lodash": "^4.17.21", - "mousetrap": "^1.6.5", - "react-resize-aware": "^3.1.0", - "use-memo-one": "^1.1.1" - }, - "engines": { - "node": ">=12" + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, - "node_modules/@wordpress/keyboard-shortcuts/node_modules/@wordpress/data": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.1.2.tgz", - "integrity": "sha512-Ro4CGmGBgk+7gDOkoB/u/HFPjmObNTZvN1q1vb75gfHOjVmXFt6AZSialELc+AuYODZEedrvHRk7qMBPxsgTVQ==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@wordpress/compose": "^5.0.4", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/element": "^4.0.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/priority-queue": "^2.2.2", - "@wordpress/redux-routine": "^4.2.1", - "equivalent-key-map": "^0.2.2", - "is-promise": "^4.0.0", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "turbo-combine-reducers": "^1.0.2", - "use-memo-one": "^1.1.1" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "redux": "^4.1.0" + "clone-regexp": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-2.2.0.tgz", + "integrity": "sha512-beMpP7BOtTipFuW8hrJvREQ2DrRu3BE7by0ZpibtfBA+qfHYvMGTc2Yb1JMYPKg/JUw0CHYvpg796aNTSW9z7Q==", + "dev": true, + "requires": { + "is-regexp": "^2.0.0" } }, - "node_modules/@wordpress/keyboard-shortcuts/node_modules/@wordpress/element": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.3.tgz", - "integrity": "sha512-uFL8Xx0Uq/C+nCL5aM4Fb6YVub//1wuHyQK9VDtKwYg9UBELrexSCHo1XaesYRiGUqVW0o837qC7RCP2NLUBJw==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@types/react": "^16.9.0", - "@types/react-dom": "^16.9.0", - "@wordpress/escape-html": "^2.2.2", - "lodash": "^4.17.21", - "react": "^17.0.1", - "react-dom": "^17.0.1" - }, - "engines": { - "node": ">=12" - } + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true }, - "node_modules/@wordpress/keycodes": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@wordpress/keycodes/-/keycodes-3.2.3.tgz", - "integrity": "sha512-1ClhtTbOSijLsyubbTlg1Df++W4CmjjRj88L7rzGX63iEHfBX6SSvui2pWVlQigDNdLNoaYGOaWm5eqDnvxkeQ==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@wordpress/i18n": "^4.2.3", - "lodash": "^4.17.21" - }, - "engines": { - "node": ">=12" + "coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "dev": true, + "requires": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" } }, - "node_modules/@wordpress/media-utils": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@wordpress/media-utils/-/media-utils-3.0.3.tgz", - "integrity": "sha512-6elIJ8aNnLCWC6uKqCilgUHNOpOw9gnMJ2IFlyKbPrrXJhAhp744Nd9GUkiM1f4UDppWyIv2ik/ve6zx4O3cjg==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@wordpress/api-fetch": "^5.2.4", - "@wordpress/blob": "^3.2.1", - "@wordpress/element": "^4.0.3", - "@wordpress/i18n": "^4.2.3", - "lodash": "^4.17.21" - }, - "engines": { - "node": ">=12" - } + "collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true }, - "node_modules/@wordpress/media-utils/node_modules/@wordpress/api-fetch": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-5.2.4.tgz", - "integrity": "sha512-8vMm08L3MMUynhD6sxe9VhRcfi3qGE3m9j7LpC9yAIxt70DaMRxHWEmGIbgO2F3INkqACdLWnDQmsHDKOSWQsQ==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@wordpress/i18n": "^4.2.3", - "@wordpress/url": "^3.2.3" - }, - "engines": { - "node": ">=12" + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" } }, - "node_modules/@wordpress/media-utils/node_modules/@wordpress/element": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.3.tgz", - "integrity": "sha512-uFL8Xx0Uq/C+nCL5aM4Fb6YVub//1wuHyQK9VDtKwYg9UBELrexSCHo1XaesYRiGUqVW0o837qC7RCP2NLUBJw==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@types/react": "^16.9.0", - "@types/react-dom": "^16.9.0", - "@wordpress/escape-html": "^2.2.2", - "lodash": "^4.17.21", - "react": "^17.0.1", - "react-dom": "^17.0.1" - }, - "engines": { - "node": ">=12" + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" } }, - "node_modules/@wordpress/notices": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/@wordpress/notices/-/notices-3.2.5.tgz", - "integrity": "sha512-kyj6iN0yRboOEf+/TfqeW3FSq937Tg443i1UdLGv5mZEMYpi0d+0zEORLLjAnwJmWCp6yglaKOIGlSXqTVQ4sg==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@wordpress/a11y": "^3.2.3", - "@wordpress/data": "^6.1.2", - "lodash": "^4.17.21" - }, - "engines": { - "node": ">=12" - } + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, - "node_modules/@wordpress/notices/node_modules/@wordpress/compose": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.0.4.tgz", - "integrity": "sha512-gRpQgsxF1AnmrJnkmJOixsTtSmimFzasiXZlm0BwhsdeJEEqVO3Mt7ua59bLPHjnUmiyDfMWY9Ongn/2cSCRKQ==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@types/lodash": "^4.14.172", - "@types/mousetrap": "^1.6.8", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.5", - "@wordpress/element": "^4.0.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/priority-queue": "^2.2.2", - "clipboard": "^2.0.8", - "lodash": "^4.17.21", - "mousetrap": "^1.6.5", - "react-resize-aware": "^3.1.0", - "use-memo-one": "^1.1.1" - }, - "engines": { - "node": ">=12" - } + "colord": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.8.0.tgz", + "integrity": "sha512-kNkVV4KFta3TYQv0bzs4xNwLaeag261pxgzGQSh4cQ1rEhYjcTJfFRP0SDlbhLONg0eSoLzrDd79PosjbltufA==" }, - "node_modules/@wordpress/notices/node_modules/@wordpress/data": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.1.2.tgz", - "integrity": "sha512-Ro4CGmGBgk+7gDOkoB/u/HFPjmObNTZvN1q1vb75gfHOjVmXFt6AZSialELc+AuYODZEedrvHRk7qMBPxsgTVQ==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@wordpress/compose": "^5.0.4", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/element": "^4.0.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/priority-queue": "^2.2.2", - "@wordpress/redux-routine": "^4.2.1", - "equivalent-key-map": "^0.2.2", - "is-promise": "^4.0.0", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "turbo-combine-reducers": "^1.0.2", - "use-memo-one": "^1.1.1" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "redux": "^4.1.0" - } + "colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "dev": true }, - "node_modules/@wordpress/notices/node_modules/@wordpress/element": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.3.tgz", - "integrity": "sha512-uFL8Xx0Uq/C+nCL5aM4Fb6YVub//1wuHyQK9VDtKwYg9UBELrexSCHo1XaesYRiGUqVW0o837qC7RCP2NLUBJw==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@types/react": "^16.9.0", - "@types/react-dom": "^16.9.0", - "@wordpress/escape-html": "^2.2.2", - "lodash": "^4.17.21", - "react": "^17.0.1", - "react-dom": "^17.0.1" - }, - "engines": { - "node": ">=12" - } + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true }, - "node_modules/@wordpress/npm-package-json-lint-config": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@wordpress/npm-package-json-lint-config/-/npm-package-json-lint-config-4.1.0.tgz", - "integrity": "sha512-FjXL5GbpmI/wXXcpCf2sKosVIVuWjUuHmDbwcMzd0SClcudo9QjDRdVe35We+js8eQLPgB9hsG4Cty6cAFFxsQ==", + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "npm-package-json-lint": ">=3.6.0" + "requires": { + "delayed-stream": "~1.0.0" } }, - "node_modules/@wordpress/plugins": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@wordpress/plugins/-/plugins-4.0.3.tgz", - "integrity": "sha512-NRmnuaoj0AlMz+APYLWpDUpfl2ammVsUjZLGgTJykjREQhsb6U5FY6DI3pHyJ79kMTtgpioGk8cD7bGiG4PVYA==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.13.10", - "@wordpress/compose": "^5.0.3", - "@wordpress/element": "^4.0.2", - "@wordpress/hooks": "^3.2.1", - "@wordpress/icons": "^6.0.0", - "lodash": "^4.17.21", - "memize": "^1.1.0" - }, - "engines": { - "node": ">=12" - } + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true }, - "node_modules/@wordpress/postcss-plugins-preset": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@wordpress/postcss-plugins-preset/-/postcss-plugins-preset-3.2.3.tgz", - "integrity": "sha512-l7JDUDVnS0me3TjAzEEWO+OVumw2YHfEFhgwBCiLsXRRXOui8h64GCiIT71aiLpX6NG8Sn0AgBzKEfTotZZyAw==", - "dev": true, - "dependencies": { - "@wordpress/base-styles": "^4.0.2", - "autoprefixer": "^10.2.5" - }, - "engines": { - "node": ">=12" - } + "comment-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.2.4.tgz", + "integrity": "sha512-pm0b+qv+CkWNriSTMsfnjChF9kH0kxz55y44Wo5le9qLxMj5xDQAaEd9ZN1ovSuk9CsrncWaFwgpOMg7ClJwkw==", + "dev": true }, - "node_modules/@wordpress/postcss-plugins-preset/node_modules/autoprefixer": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.0.tgz", - "integrity": "sha512-7FdJ1ONtwzV1G43GDD0kpVMn/qbiNqyOPMFTX5nRffI+7vgWoFEc6DcXOxHJxrWNDXrZh18eDsZjvZGUljSRGA==", - "dev": true, - "dependencies": { - "browserslist": "^4.17.5", - "caniuse-lite": "^1.0.30001272", - "fraction.js": "^4.1.1", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.1.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true }, - "node_modules/@wordpress/prettier-config": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@wordpress/prettier-config/-/prettier-config-1.1.1.tgz", - "integrity": "sha512-qjpBK5KB2ieCLv+1fGNKRW4urf5tFN1eUn3Qy+JINxNwAx6Jj9uhfXA4AldCSnD+WkzsN2UgBvgAj5/SWwzRZQ==", - "dev": true, - "engines": { - "node": ">=12" - } + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true }, - "node_modules/@wordpress/primitives": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@wordpress/primitives/-/primitives-3.0.3.tgz", - "integrity": "sha512-eG1UE5d9xnML7PCr1DpP1PEliwLM4KIuEFieHVpW1HkiybyENeTl33HdqXalOSuNAdYrnYa4KifThbjcTdzP2Q==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@wordpress/element": "^4.0.3", - "classnames": "^2.3.1" - }, - "engines": { - "node": ">=12" - } + "compute-scroll-into-view": { + "version": "1.0.17", + "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.17.tgz", + "integrity": "sha512-j4dx+Fb0URmzbwwMUrhqWM2BEWHdFGx+qZ9qqASHRPqvTYdqvWnHg0H1hIbcyLnvgnoNAVMlwkepyqM3DaIFUg==" }, - "node_modules/@wordpress/primitives/node_modules/@wordpress/element": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.3.tgz", - "integrity": "sha512-uFL8Xx0Uq/C+nCL5aM4Fb6YVub//1wuHyQK9VDtKwYg9UBELrexSCHo1XaesYRiGUqVW0o837qC7RCP2NLUBJw==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@types/react": "^16.9.0", - "@types/react-dom": "^16.9.0", - "@wordpress/escape-html": "^2.2.2", - "lodash": "^4.17.21", - "react": "^17.0.1", - "react-dom": "^17.0.1" - }, - "engines": { - "node": ">=12" - } + "computed-style": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/computed-style/-/computed-style-0.1.4.tgz", + "integrity": "sha1-fzRP2FhLLkJb7cpKGvwOMAuwXXQ=" }, - "node_modules/@wordpress/priority-queue": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@wordpress/priority-queue/-/priority-queue-2.2.2.tgz", - "integrity": "sha512-28zPQ1jIhM+9w0xfLzL8xoHIEyG0ORjIi4A8j3aWBYXHYH9f/7oVAtJRXgVTJ9iJFyiUTL8sDiaZQ6aTFV78Tg==", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "engines": { - "node": ">=12" - } + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true }, - "node_modules/@wordpress/redux-routine": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@wordpress/redux-routine/-/redux-routine-4.2.1.tgz", - "integrity": "sha512-u//4vdeKzYvu4YBRmSUsIbnUazai+PybEnquLPqxQdaF4JqVN1D5OPWHSeFtmaXR1c78I+lUf40Q7dnmA2waXw==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "is-promise": "^4.0.0", - "lodash": "^4.17.21", - "redux": "^4.1.0", - "rungen": "^0.3.2" - }, - "engines": { - "node": ">=12" - } + "consola": { + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", + "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==", + "dev": true }, - "node_modules/@wordpress/reusable-blocks": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@wordpress/reusable-blocks/-/reusable-blocks-3.0.4.tgz", - "integrity": "sha512-q1yfd/jF9Hu6axhzP4NWjry1eOaVUilSu0e9FSkCxzMkI6jS2Heb1oRv3YQKVhV0vCD1WkGI6XLpHRZuXSYUIg==", - "dependencies": { - "@wordpress/block-editor": "^7.0.4", - "@wordpress/blocks": "^11.1.2", - "@wordpress/components": "^19.0.0", - "@wordpress/compose": "^5.0.4", - "@wordpress/core-data": "^4.0.4", - "@wordpress/data": "^6.1.2", - "@wordpress/element": "^4.0.3", - "@wordpress/i18n": "^4.2.3", - "@wordpress/icons": "^6.0.1", - "@wordpress/notices": "^3.2.5", - "@wordpress/url": "^3.2.3", - "lodash": "^4.17.21" - }, - "engines": { - "node": ">=12" - } + "consolidated-events": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/consolidated-events/-/consolidated-events-2.0.2.tgz", + "integrity": "sha512-2/uRVMdRypf5z/TW/ncD/66l75P5hH2vM/GR8Jf8HLc2xnfJtmina6F6du8+v4Z2vTrMo7jC+W1tmEEuuELgkQ==" }, - "node_modules/@wordpress/reusable-blocks/node_modules/@wordpress/api-fetch": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-5.2.4.tgz", - "integrity": "sha512-8vMm08L3MMUynhD6sxe9VhRcfi3qGE3m9j7LpC9yAIxt70DaMRxHWEmGIbgO2F3INkqACdLWnDQmsHDKOSWQsQ==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@wordpress/i18n": "^4.2.3", - "@wordpress/url": "^3.2.3" + "continuable-cache": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/continuable-cache/-/continuable-cache-0.3.1.tgz", + "integrity": "sha1-vXJ6f67XfnH/OYWskzUakSczrQ8=", + "dev": true + }, + "convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "requires": { + "safe-buffer": "~5.1.1" }, - "engines": { - "node": ">=12" + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } } }, - "node_modules/@wordpress/reusable-blocks/node_modules/@wordpress/block-editor": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@wordpress/block-editor/-/block-editor-7.0.4.tgz", - "integrity": "sha512-crnKOzGrqe9YZOFRbEsJhfm5sGNoCK8oHDTTO8TeTlKw4tGbvTUK3aayxTr9cd2Uu3J3Cy13d3M9qJC8ebXhbQ==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@react-spring/web": "^9.2.4", - "@wordpress/a11y": "^3.2.3", - "@wordpress/api-fetch": "^5.2.4", - "@wordpress/blob": "^3.2.1", - "@wordpress/block-serialization-default-parser": "^4.2.2", - "@wordpress/blocks": "^11.1.2", - "@wordpress/components": "^19.0.0", - "@wordpress/compose": "^5.0.4", - "@wordpress/data": "^6.1.2", - "@wordpress/data-controls": "^2.2.5", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.5", - "@wordpress/element": "^4.0.3", - "@wordpress/hooks": "^3.2.1", - "@wordpress/html-entities": "^3.2.2", - "@wordpress/i18n": "^4.2.3", - "@wordpress/icons": "^6.0.1", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keyboard-shortcuts": "^3.0.4", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/notices": "^3.2.5", - "@wordpress/rich-text": "^5.0.4", - "@wordpress/shortcode": "^3.2.2", - "@wordpress/token-list": "^2.2.1", - "@wordpress/url": "^3.2.3", - "@wordpress/warning": "^2.2.2", - "@wordpress/wordcount": "^3.2.2", - "classnames": "^2.3.1", - "colord": "^2.7.0", - "css-mediaquery": "^0.1.2", - "diff": "^4.0.2", - "dom-scroll-into-view": "^1.2.1", - "inherits": "^2.0.3", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "react-autosize-textarea": "^7.1.0", - "react-easy-crop": "^3.0.0", - "redux-multi": "^0.1.12", - "rememo": "^3.0.0", - "traverse": "^0.6.6" + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "copy-webpack-plugin": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-9.0.1.tgz", + "integrity": "sha512-14gHKKdYIxF84jCEgPgYXCPpldbwpxxLbCmA7LReY7gvbaT555DgeBWBgBZM116tv/fO6RRJrsivBqRyRlukhw==", + "dev": true, + "requires": { + "fast-glob": "^3.2.5", + "glob-parent": "^6.0.0", + "globby": "^11.0.3", + "normalize-path": "^3.0.0", + "p-limit": "^3.1.0", + "schema-utils": "^3.0.0", + "serialize-javascript": "^6.0.0" }, - "engines": { - "node": ">=12" + "dependencies": { + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } } }, - "node_modules/@wordpress/reusable-blocks/node_modules/@wordpress/block-editor/node_modules/react": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", - "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2" + "core-js": { + "version": "3.18.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.18.3.tgz", + "integrity": "sha512-tReEhtMReZaPFVw7dajMx0vlsz3oOb8ajgPoHVYGxr8ErnZ6PcYEvvmjGmXlfpnxpkYSdOQttjB+MvVbCGfvLw==", + "dev": true + }, + "core-js-compat": { + "version": "3.18.3", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.18.3.tgz", + "integrity": "sha512-4zP6/y0a2RTHN5bRGT7PTq9lVt3WzvffTNjqnTKsXhkAYNDTkdCLOIfAdOLcQ/7TDdyRj3c+NeHe1NmF1eDScw==", + "dev": true, + "requires": { + "browserslist": "^4.17.3", + "semver": "7.0.0" }, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } } }, - "node_modules/@wordpress/reusable-blocks/node_modules/@wordpress/block-editor/node_modules/react-autosize-textarea": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/react-autosize-textarea/-/react-autosize-textarea-7.1.0.tgz", - "integrity": "sha512-BHpjCDkuOlllZn3nLazY2F8oYO1tS2jHnWhcjTWQdcKiiMU6gHLNt/fzmqMSyerR0eTdKtfSIqtSeTtghNwS+g==", - "dependencies": { - "autosize": "^4.0.2", - "line-height": "^0.3.1", - "prop-types": "^15.5.6" - }, - "peerDependencies": { - "react": "^0.14.0 || ^15.0.0 || ^16.0.0", - "react-dom": "^0.14.0 || ^15.0.0 || ^16.0.0" + "core-js-pure": { + "version": "3.18.3", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.18.3.tgz", + "integrity": "sha512-qfskyO/KjtbYn09bn1IPkuhHl5PlJ6IzJ9s9sraJ1EqcuGyLGKzhSM1cY0zgyL9hx42eulQLZ6WaeK5ycJCkqw==", + "dev": true + }, + "cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" } }, - "node_modules/@wordpress/reusable-blocks/node_modules/@wordpress/block-editor/node_modules/react-dom": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", - "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.19.1" + "cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.1" }, - "peerDependencies": { - "react": "^16.14.0" + "dependencies": { + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } } }, - "node_modules/@wordpress/reusable-blocks/node_modules/@wordpress/blocks": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/@wordpress/blocks/-/blocks-11.1.2.tgz", - "integrity": "sha512-xVvC/RXj9GXNRkQcGnmjWeS54intybON4Ol2vCVfreJtA5Cra5yRapRJwz3at1sgDD4q06k1sj98SemMEanazw==", + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, "dependencies": { - "@babel/runtime": "^7.13.10", - "@wordpress/autop": "^3.2.2", - "@wordpress/blob": "^3.2.1", - "@wordpress/block-serialization-default-parser": "^4.2.2", - "@wordpress/compose": "^5.0.4", - "@wordpress/data": "^6.1.2", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.5", - "@wordpress/element": "^4.0.3", - "@wordpress/hooks": "^3.2.1", - "@wordpress/html-entities": "^3.2.2", - "@wordpress/i18n": "^4.2.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/shortcode": "^3.2.2", - "colord": "^2.7.0", - "hpq": "^1.3.0", - "lodash": "^4.17.21", - "rememo": "^3.0.0", - "showdown": "^1.9.1", - "simple-html-tokenizer": "^0.5.7", - "uuid": "^8.3.0" - }, - "engines": { - "node": ">=12" + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } } }, - "node_modules/@wordpress/reusable-blocks/node_modules/@wordpress/components": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/@wordpress/components/-/components-19.0.0.tgz", - "integrity": "sha512-foFC+jJ3nu6PZ2pnjdszi7R17CQRquXkCPaydlOCsuDbsKm0dowR264jAdK0HJWepttj+kh3amWEhzajX6AYtg==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@emotion/cache": "^11.4.0", - "@emotion/css": "^11.1.3", - "@emotion/react": "^11.4.1", - "@emotion/styled": "^11.3.0", - "@emotion/utils": "1.0.0", - "@wordpress/a11y": "^3.2.3", - "@wordpress/compose": "^5.0.4", - "@wordpress/date": "^4.2.2", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.5", - "@wordpress/element": "^4.0.3", - "@wordpress/hooks": "^3.2.1", - "@wordpress/i18n": "^4.2.3", - "@wordpress/icons": "^6.0.1", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/primitives": "^3.0.3", - "@wordpress/rich-text": "^5.0.4", - "@wordpress/warning": "^2.2.2", - "classnames": "^2.3.1", - "colord": "^2.7.0", - "dom-scroll-into-view": "^1.2.1", - "downshift": "^6.0.15", - "framer-motion": "^4.1.17", - "gradient-parser": "^0.1.5", - "highlight-words-core": "^1.2.2", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "moment": "^2.22.1", - "re-resizable": "^6.4.0", - "react-colorful": "^5.3.1", - "react-dates": "^17.1.1", - "react-resize-aware": "^3.1.0", - "react-use-gesture": "^9.0.0", - "reakit": "^1.3.8", - "rememo": "^3.0.0", - "uuid": "^8.3.0" - }, - "engines": { - "node": ">=12" + "css-blank-pseudo": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz", + "integrity": "sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w==", + "dev": true, + "requires": { + "postcss": "^7.0.5" }, - "peerDependencies": { - "reakit-utils": "^0.15.1" - } - }, - "node_modules/@wordpress/reusable-blocks/node_modules/@wordpress/components/node_modules/airbnb-prop-types": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz", - "integrity": "sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg==", "dependencies": { - "array.prototype.find": "^2.1.1", - "function.prototype.name": "^1.1.2", - "is-regex": "^1.1.0", - "object-is": "^1.1.2", - "object.assign": "^4.1.0", - "object.entries": "^1.1.2", - "prop-types": "^15.7.2", - "prop-types-exact": "^1.2.0", - "react-is": "^16.13.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - }, - "peerDependencies": { - "react": "^0.14 || ^15.0.0 || ^16.0.0-alpha" + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, - "node_modules/@wordpress/reusable-blocks/node_modules/@wordpress/components/node_modules/react": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", - "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2" - }, - "engines": { - "node": ">=0.10.0" - } + "css-color-names": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-1.0.1.tgz", + "integrity": "sha512-/loXYOch1qU1biStIFsHH8SxTmOseh1IJqFvy8IujXOm1h+QjUdDhkzOrR5HG8K8mlxREj0yfi8ewCHx0eMxzA==", + "dev": true }, - "node_modules/@wordpress/reusable-blocks/node_modules/@wordpress/components/node_modules/react-dates": { - "version": "17.2.0", - "resolved": "https://registry.npmjs.org/react-dates/-/react-dates-17.2.0.tgz", - "integrity": "sha512-RDlerU8DdRRrlYS0MQ7Z9igPWABGLDwz6+ykBNff67RM3Sset2TDqeuOr+R5o00Ggn5U47GeLsGcSDxlZd9cHw==", - "dependencies": { - "airbnb-prop-types": "^2.10.0", - "consolidated-events": "^1.1.1 || ^2.0.0", - "is-touch-device": "^1.0.1", - "lodash": "^4.1.1", - "object.assign": "^4.1.0", - "object.values": "^1.0.4", - "prop-types": "^15.6.1", - "react-addons-shallow-compare": "^15.6.2", - "react-moment-proptypes": "^1.6.0", - "react-outside-click-handler": "^1.2.0", - "react-portal": "^4.1.5", - "react-with-styles": "^3.2.0", - "react-with-styles-interface-css": "^4.0.2" - }, - "peerDependencies": { - "moment": "^2.18.1", - "react": "^0.14 || ^15.5.4 || ^16.1.1", - "react-dom": "^0.14 || ^15.5.4 || ^16.1.1" + "css-declaration-sorter": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.1.3.tgz", + "integrity": "sha512-SvjQjNRZgh4ULK1LDJ2AduPKUKxIqmtU7ZAyi47BTV+M90Qvxr9AB6lKlLbDUfXqI9IQeYA8LbAsCZPpJEV3aA==", + "dev": true, + "requires": { + "timsort": "^0.3.0" } }, - "node_modules/@wordpress/reusable-blocks/node_modules/@wordpress/components/node_modules/react-dom": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", - "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.19.1" + "css-has-pseudo": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz", + "integrity": "sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ==", + "dev": true, + "requires": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^5.0.0-rc.4" }, - "peerDependencies": { - "react": "^16.14.0" - } - }, - "node_modules/@wordpress/reusable-blocks/node_modules/@wordpress/components/node_modules/react-outside-click-handler": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/react-outside-click-handler/-/react-outside-click-handler-1.3.0.tgz", - "integrity": "sha512-Te/7zFU0oHpAnctl//pP3hEAeobfeHMyygHB8MnjP6sX5OR8KHT1G3jmLsV3U9RnIYo+Yn+peJYWu+D5tUS8qQ==", "dependencies": { - "airbnb-prop-types": "^2.15.0", - "consolidated-events": "^1.1.1 || ^2.0.0", - "document.contains": "^1.0.1", - "object.values": "^1.1.0", - "prop-types": "^15.7.2" - }, - "peerDependencies": { - "react": "^0.14 || >=15", - "react-dom": "^0.14 || >=15" + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", + "dev": true + }, + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "dev": true, + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, - "node_modules/@wordpress/reusable-blocks/node_modules/@wordpress/components/node_modules/react-portal": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/react-portal/-/react-portal-4.2.1.tgz", - "integrity": "sha512-fE9kOBagwmTXZ3YGRYb4gcMy+kSA+yLO0xnPankjRlfBv4uCpFXqKPfkpsGQQR15wkZ9EssnvTOl1yMzbkxhPQ==", - "dependencies": { - "prop-types": "^15.5.8" + "css-loader": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.4.0.tgz", + "integrity": "sha512-Dlt6qfsxI/w1vU0r8qDd4BtMPxWqJeY5qQU7SmmZfvbpe6Xl18McO4GhyaMLns24Y2VNPiZwJPQ8JSbg4qvQLw==", + "dev": true, + "requires": { + "icss-utils": "^5.1.0", + "postcss": "^8.2.15", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.1.0", + "semver": "^7.3.5" }, - "peerDependencies": { - "react": "^15.0.0-0 || ^16.0.0-0 || ^17.0.0-0" - } - }, - "node_modules/@wordpress/reusable-blocks/node_modules/@wordpress/components/node_modules/react-with-direction": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/react-with-direction/-/react-with-direction-1.4.0.tgz", - "integrity": "sha512-ybHNPiAmaJpoWwugwqry9Hd1Irl2hnNXlo/2SXQBwbLn/jGMauMS2y9jw+ydyX5V9ICryCqObNSthNt5R94xpg==", "dependencies": { - "airbnb-prop-types": "^2.16.0", - "brcast": "^2.0.2", - "deepmerge": "^1.5.2", - "direction": "^1.0.4", - "hoist-non-react-statics": "^3.3.2", - "object.assign": "^4.1.2", - "object.values": "^1.1.5", - "prop-types": "^15.7.2" - }, - "peerDependencies": { - "react": "^0.14 || ^15 || ^16", - "react-dom": "^0.14 || ^15 || ^16" + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } } }, - "node_modules/@wordpress/reusable-blocks/node_modules/@wordpress/components/node_modules/react-with-styles": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/react-with-styles/-/react-with-styles-3.2.3.tgz", - "integrity": "sha512-MTI1UOvMHABRLj5M4WpODfwnveHaip6X7QUMI2x6zovinJiBXxzhA9AJP7MZNaKqg1JRFtHPXZdroUC8KcXwlQ==", - "dependencies": { - "hoist-non-react-statics": "^3.2.1", - "object.assign": "^4.1.0", - "prop-types": "^15.6.2", - "react-with-direction": "^1.3.0" - }, - "peerDependencies": { - "react": ">=0.14", - "react-with-direction": "^1.1.0" - } + "css-mediaquery": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/css-mediaquery/-/css-mediaquery-0.1.2.tgz", + "integrity": "sha1-aiw3NEkoYYYxxUvTPO3TAdoYvqA=" }, - "node_modules/@wordpress/reusable-blocks/node_modules/@wordpress/components/node_modules/react-with-styles-interface-css": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/react-with-styles-interface-css/-/react-with-styles-interface-css-4.0.3.tgz", - "integrity": "sha512-wE43PIyjal2dexxyyx4Lhbcb+E42amoYPnkunRZkb9WTA+Z+9LagbyxwsI352NqMdFmghR0opg29dzDO4/YXbw==", - "dependencies": { - "array.prototype.flat": "^1.2.1", - "global-cache": "^1.2.1" - }, - "peerDependencies": { - "react-with-styles": "^3.0.0" - } - }, - "node_modules/@wordpress/reusable-blocks/node_modules/@wordpress/compose": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.0.4.tgz", - "integrity": "sha512-gRpQgsxF1AnmrJnkmJOixsTtSmimFzasiXZlm0BwhsdeJEEqVO3Mt7ua59bLPHjnUmiyDfMWY9Ongn/2cSCRKQ==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@types/lodash": "^4.14.172", - "@types/mousetrap": "^1.6.8", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.5", - "@wordpress/element": "^4.0.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/priority-queue": "^2.2.2", - "clipboard": "^2.0.8", - "lodash": "^4.17.21", - "mousetrap": "^1.6.5", - "react-resize-aware": "^3.1.0", - "use-memo-one": "^1.1.1" + "css-minimizer-webpack-plugin": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.1.1.tgz", + "integrity": "sha512-KlB8l5uoNcf9F7i5kXnkxoqJGd2BXH4f0+Lj2vSWSmuvMLYO1kNsJ1KHSzeDW8e45/whgSOPcKVT/3JopkT8dg==", + "dev": true, + "requires": { + "cssnano": "^5.0.6", + "jest-worker": "^27.0.2", + "p-limit": "^3.0.2", + "postcss": "^8.3.5", + "schema-utils": "^3.1.0", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1" }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@wordpress/reusable-blocks/node_modules/@wordpress/data": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.1.2.tgz", - "integrity": "sha512-Ro4CGmGBgk+7gDOkoB/u/HFPjmObNTZvN1q1vb75gfHOjVmXFt6AZSialELc+AuYODZEedrvHRk7qMBPxsgTVQ==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@wordpress/compose": "^5.0.4", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/element": "^4.0.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/priority-queue": "^2.2.2", - "@wordpress/redux-routine": "^4.2.1", - "equivalent-key-map": "^0.2.2", - "is-promise": "^4.0.0", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "turbo-combine-reducers": "^1.0.2", - "use-memo-one": "^1.1.1" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "redux": "^4.1.0" + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "jest-worker": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.2.5.tgz", + "integrity": "sha512-HTjEPZtcNKZ4LnhSp02NEH4vE+5OpJ0EsOWYvGQpHgUMLngydESAAMH5Wd/asPf29+XUDQZszxpLg1BkIIA2aw==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, - "node_modules/@wordpress/reusable-blocks/node_modules/@wordpress/element": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.3.tgz", - "integrity": "sha512-uFL8Xx0Uq/C+nCL5aM4Fb6YVub//1wuHyQK9VDtKwYg9UBELrexSCHo1XaesYRiGUqVW0o837qC7RCP2NLUBJw==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@types/react": "^16.9.0", - "@types/react-dom": "^16.9.0", - "@wordpress/escape-html": "^2.2.2", - "lodash": "^4.17.21", - "react": "^17.0.1", - "react-dom": "^17.0.1" + "css-prefers-color-scheme": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz", + "integrity": "sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg==", + "dev": true, + "requires": { + "postcss": "^7.0.5" }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@wordpress/reusable-blocks/node_modules/@wordpress/icons": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@wordpress/icons/-/icons-6.0.1.tgz", - "integrity": "sha512-YAtnWquaWWM49hpoRJwaZRBTnnkwqOY0TuK8a6m0gXE2Xm3uoO/J4c6tLqKiFv3FG9Hmc/CB1WCmx+uM1TX0vw==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@wordpress/element": "^4.0.3", - "@wordpress/primitives": "^3.0.3" - }, - "engines": { - "node": ">=12" + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, - "node_modules/@wordpress/reusable-blocks/node_modules/deepmerge": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", - "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", - "engines": { - "node": ">=0.10.0" + "css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" } }, - "node_modules/@wordpress/reusable-blocks/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", + "dev": true }, - "node_modules/@wordpress/reusable-blocks/node_modules/scheduler": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", - "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", - "peer": true, + "css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "dev": true, + "requires": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, - "node_modules/@wordpress/rich-text": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@wordpress/rich-text/-/rich-text-5.0.4.tgz", - "integrity": "sha512-a+eIKav2kNfaG2R1LUbI+nB4uUH8HLh/YSGjjRaMRvBQb6Tdu3+ELttqk2DnzjREVrSFYb6h7WvdTlCpN0Q/1g==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@wordpress/compose": "^5.0.4", - "@wordpress/data": "^6.1.2", - "@wordpress/dom": "^3.2.5", - "@wordpress/element": "^4.0.3", - "@wordpress/escape-html": "^2.2.2", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keycodes": "^3.2.3", - "classnames": "^2.3.1", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "rememo": "^3.0.0" - }, - "engines": { - "node": ">=12" - } + "css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "dev": true }, - "node_modules/@wordpress/rich-text/node_modules/@wordpress/compose": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.0.4.tgz", - "integrity": "sha512-gRpQgsxF1AnmrJnkmJOixsTtSmimFzasiXZlm0BwhsdeJEEqVO3Mt7ua59bLPHjnUmiyDfMWY9Ongn/2cSCRKQ==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@types/lodash": "^4.14.172", - "@types/mousetrap": "^1.6.8", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.5", - "@wordpress/element": "^4.0.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/priority-queue": "^2.2.2", - "clipboard": "^2.0.8", - "lodash": "^4.17.21", - "mousetrap": "^1.6.5", - "react-resize-aware": "^3.1.0", - "use-memo-one": "^1.1.1" - }, - "engines": { - "node": ">=12" - } + "cssdb": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-4.4.0.tgz", + "integrity": "sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ==", + "dev": true }, - "node_modules/@wordpress/rich-text/node_modules/@wordpress/data": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.1.2.tgz", - "integrity": "sha512-Ro4CGmGBgk+7gDOkoB/u/HFPjmObNTZvN1q1vb75gfHOjVmXFt6AZSialELc+AuYODZEedrvHRk7qMBPxsgTVQ==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@wordpress/compose": "^5.0.4", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/element": "^4.0.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/priority-queue": "^2.2.2", - "@wordpress/redux-routine": "^4.2.1", - "equivalent-key-map": "^0.2.2", - "is-promise": "^4.0.0", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "turbo-combine-reducers": "^1.0.2", - "use-memo-one": "^1.1.1" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "redux": "^4.1.0" - } + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true }, - "node_modules/@wordpress/rich-text/node_modules/@wordpress/element": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.3.tgz", - "integrity": "sha512-uFL8Xx0Uq/C+nCL5aM4Fb6YVub//1wuHyQK9VDtKwYg9UBELrexSCHo1XaesYRiGUqVW0o837qC7RCP2NLUBJw==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@types/react": "^16.9.0", - "@types/react-dom": "^16.9.0", - "@wordpress/escape-html": "^2.2.2", - "lodash": "^4.17.21", - "react": "^17.0.1", - "react-dom": "^17.0.1" - }, - "engines": { - "node": ">=12" + "cssnano": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.0.8.tgz", + "integrity": "sha512-Lda7geZU0Yu+RZi2SGpjYuQz4HI4/1Y+BhdD0jL7NXAQ5larCzVn+PUGuZbDMYz904AXXCOgO5L1teSvgu7aFg==", + "dev": true, + "requires": { + "cssnano-preset-default": "^5.1.4", + "is-resolvable": "^1.1.0", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" } }, - "node_modules/@wordpress/scripts": { - "version": "18.1.0", - "resolved": "https://registry.npmjs.org/@wordpress/scripts/-/scripts-18.1.0.tgz", - "integrity": "sha512-hSRGfnRpGyr3Ec//XfMDCoC3M85nX+KyNAqIBJpLAIYo/gs5x9Gw2fX9ac4ts+hx9VIa7d0RmH5+Gqsxupzp+g==", + "cssnano-preset-default": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.1.4.tgz", + "integrity": "sha512-sPpQNDQBI3R/QsYxQvfB4mXeEcWuw0wGtKtmS5eg8wudyStYMgKOQT39G07EbW1LB56AOYrinRS9f0ig4Y3MhQ==", "dev": true, - "dependencies": { - "@svgr/webpack": "^5.5.0", - "@wordpress/babel-preset-default": "^6.3.3", - "@wordpress/browserslist-config": "^4.1.0", - "@wordpress/dependency-extraction-webpack-plugin": "^3.2.1", - "@wordpress/eslint-plugin": "^9.2.0", - "@wordpress/jest-preset-default": "^7.1.1", - "@wordpress/npm-package-json-lint-config": "^4.1.0", - "@wordpress/postcss-plugins-preset": "^3.2.2", - "@wordpress/prettier-config": "^1.1.1", - "@wordpress/stylelint-config": "^19.1.0", - "babel-jest": "^26.6.3", - "babel-loader": "^8.2.2", - "browserslist": "^4.16.6", - "chalk": "^4.0.0", - "check-node-version": "^4.1.0", - "clean-webpack-plugin": "^3.0.0", - "cross-spawn": "^5.1.0", - "css-loader": "^6.2.0", - "cssnano": "^5.0.7", - "cwd": "^0.10.0", - "dir-glob": "^3.0.1", - "eslint": "^7.17.0", - "eslint-plugin-markdown": "^2.2.0", - "expect-puppeteer": "^4.4.0", - "filenamify": "^4.2.0", - "jest": "^26.6.3", - "jest-circus": "^26.6.3", - "jest-dev-server": "^5.0.3", - "jest-environment-node": "^26.6.2", - "markdownlint": "^0.23.1", - "markdownlint-cli": "^0.27.1", - "merge-deep": "^3.0.3", - "mini-css-extract-plugin": "^2.1.0", - "minimist": "^1.2.0", - "npm-package-json-lint": "^5.0.0", - "postcss": "^8.2.15", - "postcss-loader": "^6.1.1", - "prettier": "npm:wp-prettier@2.2.1-beta-1", - "puppeteer-core": "^10.1.0", - "read-pkg-up": "^1.0.1", - "resolve-bin": "^0.4.0", - "sass": "^1.35.2", - "sass-loader": "^12.1.0", - "source-map-loader": "^3.0.0", - "stylelint": "^13.8.0", - "terser-webpack-plugin": "^5.1.4", - "url-loader": "^4.1.1", - "webpack": "^5.47.1", - "webpack-bundle-analyzer": "^4.4.2", - "webpack-cli": "^4.7.2", - "webpack-livereload-plugin": "^3.0.1" - }, - "bin": { - "wp-scripts": "bin/wp-scripts.js" - }, - "engines": { - "node": ">=12.13", - "npm": ">=6.9" + "requires": { + "css-declaration-sorter": "^6.0.3", + "cssnano-utils": "^2.0.1", + "postcss-calc": "^8.0.0", + "postcss-colormin": "^5.2.0", + "postcss-convert-values": "^5.0.1", + "postcss-discard-comments": "^5.0.1", + "postcss-discard-duplicates": "^5.0.1", + "postcss-discard-empty": "^5.0.1", + "postcss-discard-overridden": "^5.0.1", + "postcss-merge-longhand": "^5.0.2", + "postcss-merge-rules": "^5.0.2", + "postcss-minify-font-values": "^5.0.1", + "postcss-minify-gradients": "^5.0.2", + "postcss-minify-params": "^5.0.1", + "postcss-minify-selectors": "^5.1.0", + "postcss-normalize-charset": "^5.0.1", + "postcss-normalize-display-values": "^5.0.1", + "postcss-normalize-positions": "^5.0.1", + "postcss-normalize-repeat-style": "^5.0.1", + "postcss-normalize-string": "^5.0.1", + "postcss-normalize-timing-functions": "^5.0.1", + "postcss-normalize-unicode": "^5.0.1", + "postcss-normalize-url": "^5.0.2", + "postcss-normalize-whitespace": "^5.0.1", + "postcss-ordered-values": "^5.0.2", + "postcss-reduce-initial": "^5.0.1", + "postcss-reduce-transforms": "^5.0.1", + "postcss-svgo": "^5.0.2", + "postcss-unique-selectors": "^5.0.1" } }, - "node_modules/@wordpress/scripts/node_modules/@jest/console": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz", - "integrity": "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==", - "dev": true, - "dependencies": { - "@jest/types": "^26.6.2", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^26.6.2", - "jest-util": "^26.6.2", - "slash": "^3.0.0" - }, - "engines": { - "node": ">= 10.14.2" - } + "cssnano-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-2.0.1.tgz", + "integrity": "sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ==", + "dev": true }, - "node_modules/@wordpress/scripts/node_modules/@jest/core": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz", - "integrity": "sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==", + "csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", "dev": true, - "dependencies": { - "@jest/console": "^26.6.2", - "@jest/reporters": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-changed-files": "^26.6.2", - "jest-config": "^26.6.3", - "jest-haste-map": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-resolve": "^26.6.2", - "jest-resolve-dependencies": "^26.6.3", - "jest-runner": "^26.6.3", - "jest-runtime": "^26.6.3", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "jest-watcher": "^26.6.2", - "micromatch": "^4.0.2", - "p-each-series": "^2.1.0", - "rimraf": "^3.0.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" + "requires": { + "css-tree": "^1.1.2" }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/@wordpress/scripts/node_modules/@jest/globals": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz", - "integrity": "sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==", - "dev": true, "dependencies": { - "@jest/environment": "^26.6.2", - "@jest/types": "^26.6.2", - "expect": "^26.6.2" - }, - "engines": { - "node": ">= 10.14.2" + "css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + } + }, + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, - "node_modules/@wordpress/scripts/node_modules/@jest/reporters": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-26.6.2.tgz", - "integrity": "sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==", - "dev": true, - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.2.4", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^4.0.3", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "jest-haste-map": "^26.6.2", - "jest-resolve": "^26.6.2", - "jest-util": "^26.6.2", - "jest-worker": "^26.6.2", - "slash": "^3.0.0", - "source-map": "^0.6.0", - "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^7.0.0" - }, - "engines": { - "node": ">= 10.14.2" - }, - "optionalDependencies": { - "node-notifier": "^8.0.0" - } + "cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true }, - "node_modules/@wordpress/scripts/node_modules/@jest/source-map": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz", - "integrity": "sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==", + "cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", "dev": true, - "dependencies": { - "callsites": "^3.0.0", - "graceful-fs": "^4.2.4", - "source-map": "^0.6.0" + "requires": { + "cssom": "~0.3.6" }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/@wordpress/scripts/node_modules/@jest/test-result": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz", - "integrity": "sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==", - "dev": true, "dependencies": { - "@jest/console": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": ">= 10.14.2" + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + } } }, - "node_modules/@wordpress/scripts/node_modules/@jest/test-sequencer": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz", - "integrity": "sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==", + "csstype": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.9.tgz", + "integrity": "sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw==" + }, + "cwd": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/cwd/-/cwd-0.10.0.tgz", + "integrity": "sha1-FyQAaUBXwioTsM8WFix+S3p/5Wc=", "dev": true, - "dependencies": { - "@jest/test-result": "^26.6.2", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^26.6.2", - "jest-runner": "^26.6.3", - "jest-runtime": "^26.6.3" - }, - "engines": { - "node": ">= 10.14.2" + "requires": { + "find-pkg": "^0.1.2", + "fs-exists-sync": "^0.1.0" } }, - "node_modules/@wordpress/scripts/node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "damerau-levenshtein": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz", + "integrity": "sha512-VvdQIPGdWP0SqFXghj79Wf/5LArmreyMsGLa6FG6iC4t3j7j5s71TrwWmT/4akbDQIqjfACkLZmjXhA7g2oUZw==", + "dev": true }, - "node_modules/@wordpress/scripts/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" + "requires": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@wordpress/scripts/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "requires": { + "punycode": "^2.1.1" + } + }, + "webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true + }, + "whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, + "requires": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + } + } } }, - "node_modules/@wordpress/scripts/node_modules/cjs-module-lexer": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz", - "integrity": "sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==", + "dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", "dev": true }, - "node_modules/@wordpress/scripts/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "node_modules/@wordpress/scripts/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "requires": { + "ms": "2.1.2" } }, - "node_modules/@wordpress/scripts/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@wordpress/scripts/node_modules/css-declaration-sorter": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.1.3.tgz", - "integrity": "sha512-SvjQjNRZgh4ULK1LDJ2AduPKUKxIqmtU7ZAyi47BTV+M90Qvxr9AB6lKlLbDUfXqI9IQeYA8LbAsCZPpJEV3aA==", - "dev": true, - "dependencies": { - "timsort": "^0.3.0" - }, - "engines": { - "node": ">= 10" - }, - "peerDependencies": { - "postcss": "^8.0.9" - } + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" }, - "node_modules/@wordpress/scripts/node_modules/cssnano": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.0.8.tgz", - "integrity": "sha512-Lda7geZU0Yu+RZi2SGpjYuQz4HI4/1Y+BhdD0jL7NXAQ5larCzVn+PUGuZbDMYz904AXXCOgO5L1teSvgu7aFg==", + "decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", "dev": true, - "dependencies": { - "cssnano-preset-default": "^5.1.4", - "is-resolvable": "^1.1.0", - "lilconfig": "^2.0.3", - "yaml": "^1.10.2" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/cssnano" + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/@wordpress/scripts/node_modules/cssnano-preset-default": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.1.4.tgz", - "integrity": "sha512-sPpQNDQBI3R/QsYxQvfB4mXeEcWuw0wGtKtmS5eg8wudyStYMgKOQT39G07EbW1LB56AOYrinRS9f0ig4Y3MhQ==", - "dev": true, "dependencies": { - "css-declaration-sorter": "^6.0.3", - "cssnano-utils": "^2.0.1", - "postcss-calc": "^8.0.0", - "postcss-colormin": "^5.2.0", - "postcss-convert-values": "^5.0.1", - "postcss-discard-comments": "^5.0.1", - "postcss-discard-duplicates": "^5.0.1", - "postcss-discard-empty": "^5.0.1", - "postcss-discard-overridden": "^5.0.1", - "postcss-merge-longhand": "^5.0.2", - "postcss-merge-rules": "^5.0.2", - "postcss-minify-font-values": "^5.0.1", - "postcss-minify-gradients": "^5.0.2", - "postcss-minify-params": "^5.0.1", - "postcss-minify-selectors": "^5.1.0", - "postcss-normalize-charset": "^5.0.1", - "postcss-normalize-display-values": "^5.0.1", - "postcss-normalize-positions": "^5.0.1", - "postcss-normalize-repeat-style": "^5.0.1", - "postcss-normalize-string": "^5.0.1", - "postcss-normalize-timing-functions": "^5.0.1", - "postcss-normalize-unicode": "^5.0.1", - "postcss-normalize-url": "^5.0.2", - "postcss-normalize-whitespace": "^5.0.1", - "postcss-ordered-values": "^5.0.2", - "postcss-reduce-initial": "^5.0.1", - "postcss-reduce-transforms": "^5.0.1", - "postcss-svgo": "^5.0.2", - "postcss-unique-selectors": "^5.0.1" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/@wordpress/scripts/node_modules/cssnano-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-2.0.1.tgz", - "integrity": "sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + } } }, - "node_modules/@wordpress/scripts/node_modules/emittery": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz", - "integrity": "sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } + "decimal.js": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", + "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", + "dev": true }, - "node_modules/@wordpress/scripts/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", "dev": true }, - "node_modules/@wordpress/scripts/node_modules/execa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "dev": true }, - "node_modules/@wordpress/scripts/node_modules/execa/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true }, - "node_modules/@wordpress/scripts/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true }, - "node_modules/@wordpress/scripts/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } + "deepmerge": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", + "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==" }, - "node_modules/@wordpress/scripts/node_modules/human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", - "dev": true, - "engines": { - "node": ">=8.12.0" + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "requires": { + "object-keys": "^1.0.12" } }, - "node_modules/@wordpress/scripts/node_modules/istanbul-lib-instrument": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", "dev": true, - "dependencies": { - "@babel/core": "^7.7.5", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", - "semver": "^6.3.0" + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" }, - "engines": { - "node": ">=8" + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } } }, - "node_modules/@wordpress/scripts/node_modules/jest": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.3.tgz", - "integrity": "sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==", - "dev": true, - "dependencies": { - "@jest/core": "^26.6.3", - "import-local": "^3.0.2", - "jest-cli": "^26.6.3" - }, - "bin": { - "jest": "bin/jest.js" + "del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dev": true, + "requires": { + "@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" }, - "engines": { - "node": ">= 10.14.2" + "dependencies": { + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + } } }, - "node_modules/@wordpress/scripts/node_modules/jest-changed-files": { + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "delegate": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", + "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==" + }, + "deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true + }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "dev": true + }, + "detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true + }, + "devtools-protocol": { + "version": "0.0.901419", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.901419.tgz", + "integrity": "sha512-4INMPwNm9XRpBukhNbF7OB6fNTTCaI8pzy/fXg0xQzAy5h3zL1P8xT3QazgKqBrb/hAYwIBizqDBZ7GtJE74QQ==", + "dev": true + }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" + }, + "diff-sequences": { "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.6.2.tgz", - "integrity": "sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", + "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, - "dependencies": { - "@jest/types": "^26.6.2", - "execa": "^4.0.0", - "throat": "^5.0.0" - }, - "engines": { - "node": ">= 10.14.2" + "requires": { + "path-type": "^4.0.0" } }, - "node_modules/@wordpress/scripts/node_modules/jest-cli": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz", - "integrity": "sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==", + "direction": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/direction/-/direction-1.0.4.tgz", + "integrity": "sha512-GYqKi1aH7PJXxdhTeZBFrg8vUBeKXi+cNprXsC1kpJcbcVnV9wBsrOu1cQEdG0WeQwlfHiy3XvnKfIrJ2R0NzQ==" + }, + "discontinuous-range": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz", + "integrity": "sha1-44Mx8IRLukm5qctxx3FYWqsbxlo=", + "dev": true + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, - "dependencies": { - "@jest/core": "^26.6.3", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "import-local": "^3.0.2", - "is-ci": "^2.0.0", - "jest-config": "^26.6.3", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "prompts": "^2.0.1", - "yargs": "^15.4.1" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": ">= 10.14.2" + "requires": { + "esutils": "^2.0.2" } }, - "node_modules/@wordpress/scripts/node_modules/jest-config": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz", - "integrity": "sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==", + "document.contains": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/document.contains/-/document.contains-1.0.2.tgz", + "integrity": "sha512-YcvYFs15mX8m3AO1QNQy3BlIpSMfNRj3Ujk2BEJxsZG+HZf7/hZ6jr7mDpXrF8q+ff95Vef5yjhiZxm8CGJr6Q==", + "requires": { + "define-properties": "^1.1.3" + } + }, + "dom-scroll-into-view": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/dom-scroll-into-view/-/dom-scroll-into-view-1.2.1.tgz", + "integrity": "sha1-6PNnMt0ImwIBqI14Fdw/iObWbH4=" + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", "dev": true, - "dependencies": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^26.6.3", - "@jest/types": "^26.6.2", - "babel-jest": "^26.6.3", - "chalk": "^4.0.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.1", - "graceful-fs": "^4.2.4", - "jest-environment-jsdom": "^26.6.2", - "jest-environment-node": "^26.6.2", - "jest-get-type": "^26.3.0", - "jest-jasmine2": "^26.6.3", - "jest-regex-util": "^26.0.0", - "jest-resolve": "^26.6.2", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "micromatch": "^4.0.2", - "pretty-format": "^26.6.2" - }, - "engines": { - "node": ">= 10.14.2" - }, - "peerDependencies": { - "ts-node": ">=9.0.0" + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" }, - "peerDependenciesMeta": { - "ts-node": { - "optional": true + "dependencies": { + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true } } }, - "node_modules/@wordpress/scripts/node_modules/jest-docblock": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz", - "integrity": "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==", + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", "dev": true, - "dependencies": { - "detect-newline": "^3.0.0" + "requires": { + "webidl-conversions": "^5.0.0" }, - "engines": { - "node": ">= 10.14.2" + "dependencies": { + "webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true + } } }, - "node_modules/@wordpress/scripts/node_modules/jest-environment-jsdom": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz", - "integrity": "sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==", + "domhandler": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz", + "integrity": "sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==", "dev": true, - "dependencies": { - "@jest/environment": "^26.6.2", - "@jest/fake-timers": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "jest-mock": "^26.6.2", - "jest-util": "^26.6.2", - "jsdom": "^16.4.0" + "requires": { + "domelementtype": "^2.2.0" }, - "engines": { - "node": ">= 10.14.2" + "dependencies": { + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true + } } }, - "node_modules/@wordpress/scripts/node_modules/jest-jasmine2": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz", - "integrity": "sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==", + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", "dev": true, - "dependencies": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^26.6.2", - "@jest/source-map": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^26.6.2", - "is-generator-fn": "^2.0.0", - "jest-each": "^26.6.2", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-runtime": "^26.6.3", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "pretty-format": "^26.6.2", - "throat": "^5.0.0" - }, - "engines": { - "node": ">= 10.14.2" + "requires": { + "dom-serializer": "0", + "domelementtype": "1" } }, - "node_modules/@wordpress/scripts/node_modules/jest-leak-detector": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz", - "integrity": "sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==", - "dev": true, - "dependencies": { - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" + "downshift": { + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/downshift/-/downshift-6.1.7.tgz", + "integrity": "sha512-cVprZg/9Lvj/uhYRxELzlu1aezRcgPWBjTvspiGTVEU64gF5pRdSRKFVLcxqsZC637cLAGMbL40JavEfWnqgNg==", + "requires": { + "@babel/runtime": "^7.14.8", + "compute-scroll-into-view": "^1.0.17", + "prop-types": "^15.7.2", + "react-is": "^17.0.2", + "tslib": "^2.3.0" }, - "engines": { - "node": ">= 10.14.2" + "dependencies": { + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + } } }, - "node_modules/@wordpress/scripts/node_modules/jest-message-util": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", - "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", + "duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.867", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.867.tgz", + "integrity": "sha512-WbTXOv7hsLhjJyl7jBfDkioaY++iVVZomZ4dU6TMe/SzucV6mUAs2VZn/AehBwuZMiNEQDaPuTGn22YK5o+aDw==", + "dev": true + }, + "emittery": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz", + "integrity": "sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==", + "dev": true + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "requires": { + "iconv-lite": "^0.6.2" + } + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "@jest/types": "^26.6.2", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "micromatch": "^4.0.2", - "pretty-format": "^26.6.2", - "slash": "^3.0.0", - "stack-utils": "^2.0.2" - }, - "engines": { - "node": ">= 10.14.2" + "requires": { + "once": "^1.4.0" } }, - "node_modules/@wordpress/scripts/node_modules/jest-resolve": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", - "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", + "enhanced-resolve": { + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz", + "integrity": "sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==", "dev": true, - "dependencies": { - "@jest/types": "^26.6.2", - "chalk": "^4.0.0", + "requires": { "graceful-fs": "^4.2.4", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^26.6.2", - "read-pkg-up": "^7.0.1", - "resolve": "^1.18.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">= 10.14.2" + "tapable": "^2.2.0" } }, - "node_modules/@wordpress/scripts/node_modules/jest-resolve-dependencies": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz", - "integrity": "sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==", + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", "dev": true, - "dependencies": { - "@jest/types": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-snapshot": "^26.6.2" - }, - "engines": { - "node": ">= 10.14.2" + "requires": { + "ansi-colors": "^4.1.1" } }, - "node_modules/@wordpress/scripts/node_modules/jest-resolve/node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, + "envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true + }, + "enzyme": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/enzyme/-/enzyme-3.11.0.tgz", + "integrity": "sha512-Dw8/Gs4vRjxY6/6i9wU0V+utmQO9kvh9XLnz3LIudviOnVYDEe2ec+0k+NQoMamn1VrjKgCUOWj5jG/5M5M0Qw==", "dev": true, - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "requires": { + "array.prototype.flat": "^1.2.3", + "cheerio": "^1.0.0-rc.3", + "enzyme-shallow-equal": "^1.0.1", + "function.prototype.name": "^1.1.2", + "has": "^1.0.3", + "html-element-map": "^1.2.0", + "is-boolean-object": "^1.0.1", + "is-callable": "^1.1.5", + "is-number-object": "^1.0.4", + "is-regex": "^1.0.5", + "is-string": "^1.0.5", + "is-subset": "^0.1.1", + "lodash.escape": "^4.0.1", + "lodash.isequal": "^4.5.0", + "object-inspect": "^1.7.0", + "object-is": "^1.0.2", + "object.assign": "^4.1.0", + "object.entries": "^1.1.1", + "object.values": "^1.1.1", + "raf": "^3.4.1", + "rst-selector-parser": "^2.2.3", + "string.prototype.trim": "^1.2.1" } }, - "node_modules/@wordpress/scripts/node_modules/jest-resolve/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "enzyme-shallow-equal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.4.tgz", + "integrity": "sha512-MttIwB8kKxypwHvRynuC3ahyNc+cFbR8mjVIltnmzQ0uKGqmsfO4bfBuLxb0beLNPhjblUEYvEbsg+VSygvF1Q==", "dev": true, - "engines": { - "node": ">=8" + "requires": { + "has": "^1.0.3", + "object-is": "^1.1.2" } }, - "node_modules/@wordpress/scripts/node_modules/jest-runner": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz", - "integrity": "sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==", + "enzyme-to-json": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/enzyme-to-json/-/enzyme-to-json-3.6.2.tgz", + "integrity": "sha512-Ynm6Z6R6iwQ0g2g1YToz6DWhxVnt8Dy1ijR2zynRKxTyBGA8rCDXU3rs2Qc4OKvUvc2Qoe1bcFK6bnPs20TrTg==", "dev": true, - "dependencies": { - "@jest/console": "^26.6.2", - "@jest/environment": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.7.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-config": "^26.6.3", - "jest-docblock": "^26.0.0", - "jest-haste-map": "^26.6.2", - "jest-leak-detector": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-resolve": "^26.6.2", - "jest-runtime": "^26.6.3", - "jest-util": "^26.6.2", - "jest-worker": "^26.6.2", - "source-map-support": "^0.5.6", - "throat": "^5.0.0" - }, - "engines": { - "node": ">= 10.14.2" + "requires": { + "@types/cheerio": "^0.22.22", + "lodash": "^4.17.21", + "react-is": "^16.12.0" } }, - "node_modules/@wordpress/scripts/node_modules/jest-runtime": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz", - "integrity": "sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==", + "equivalent-key-map": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/equivalent-key-map/-/equivalent-key-map-0.2.2.tgz", + "integrity": "sha512-xvHeyCDbZzkpN4VHQj/n+j2lOwL0VWszG30X4cOrc9Y7Tuo2qCdZK/0AMod23Z5dCtNUbaju6p0rwOhHUk05ew==" + }, + "error": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/error/-/error-7.2.1.tgz", + "integrity": "sha512-fo9HBvWnx3NGUKMvMwB/CBCMMrfEJgbDTVDEkPygA3Bdd3lM1OyCd+rbQ8BwnpF6GdVeOLDNmyL4N5Bg80ZvdA==", "dev": true, - "dependencies": { - "@jest/console": "^26.6.2", - "@jest/environment": "^26.6.2", - "@jest/fake-timers": "^26.6.2", - "@jest/globals": "^26.6.2", - "@jest/source-map": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/yargs": "^15.0.0", - "chalk": "^4.0.0", - "cjs-module-lexer": "^0.6.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.4", - "jest-config": "^26.6.3", - "jest-haste-map": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-mock": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-resolve": "^26.6.2", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "slash": "^3.0.0", - "strip-bom": "^4.0.0", - "yargs": "^15.4.1" - }, - "bin": { - "jest-runtime": "bin/jest-runtime.js" - }, - "engines": { - "node": ">= 10.14.2" + "requires": { + "string-template": "~0.2.1" } }, - "node_modules/@wordpress/scripts/node_modules/jest-snapshot": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz", - "integrity": "sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==", - "dev": true, - "dependencies": { - "@babel/types": "^7.0.0", - "@jest/types": "^26.6.2", - "@types/babel__traverse": "^7.0.4", - "@types/prettier": "^2.0.0", - "chalk": "^4.0.0", - "expect": "^26.6.2", - "graceful-fs": "^4.2.4", - "jest-diff": "^26.6.2", - "jest-get-type": "^26.3.0", - "jest-haste-map": "^26.6.2", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-resolve": "^26.6.2", - "natural-compare": "^1.4.0", - "pretty-format": "^26.6.2", - "semver": "^7.3.2" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/@wordpress/scripts/node_modules/jest-snapshot/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@wordpress/scripts/node_modules/jest-validate": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", - "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", - "dev": true, - "dependencies": { - "@jest/types": "^26.6.2", - "camelcase": "^6.0.0", - "chalk": "^4.0.0", - "jest-get-type": "^26.3.0", - "leven": "^3.1.0", - "pretty-format": "^26.6.2" - }, - "engines": { - "node": ">= 10.14.2" + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "requires": { + "is-arrayish": "^0.2.1" } }, - "node_modules/@wordpress/scripts/node_modules/jest-watcher": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz", - "integrity": "sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==", - "dev": true, - "dependencies": { - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "jest-util": "^26.6.2", - "string-length": "^4.0.1" - }, - "engines": { - "node": ">= 10.14.2" + "es-abstract": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" } }, - "node_modules/@wordpress/scripts/node_modules/jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } + "es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", + "dev": true }, - "node_modules/@wordpress/scripts/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } + "es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true }, - "node_modules/@wordpress/scripts/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" } }, - "node_modules/@wordpress/scripts/node_modules/path-key": { + "escalade": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true }, - "node_modules/@wordpress/scripts/node_modules/postcss-calc": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.0.0.tgz", - "integrity": "sha512-5NglwDrcbiy8XXfPM11F3HeC6hoT9W7GUH/Zi5U/p7u3Irv4rHhdDcIZwG0llHXV4ftsBjpfWMXAnXNl4lnt8g==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.2" - }, - "peerDependencies": { - "postcss": "^8.2.2" - } + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, - "node_modules/@wordpress/scripts/node_modules/postcss-colormin": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.0.tgz", - "integrity": "sha512-+HC6GfWU3upe5/mqmxuqYZ9B2Wl4lcoUUNkoaX59nEWV4EtADCMiBqui111Bu8R8IvaZTmqmxrqOAqjbHIwXPw==", + "escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", "dev": true, - "dependencies": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0", - "colord": "^2.0.1", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" + "requires": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/@wordpress/scripts/node_modules/postcss-convert-values": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.1.tgz", - "integrity": "sha512-C3zR1Do2BkKkCgC0g3sF8TS0koF2G+mN8xxayZx3f10cIRmTaAnpgpRQZjNekTZxM2ciSPoh2IWJm0VZx8NoQg==", - "dev": true, "dependencies": { - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/@wordpress/scripts/node_modules/postcss-discard-comments": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz", - "integrity": "sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/@wordpress/scripts/node_modules/postcss-discard-duplicates": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz", - "integrity": "sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/@wordpress/scripts/node_modules/postcss-discard-empty": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz", - "integrity": "sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/@wordpress/scripts/node_modules/postcss-discard-overridden": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz", - "integrity": "sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + } } }, - "node_modules/@wordpress/scripts/node_modules/postcss-loader": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.0.tgz", - "integrity": "sha512-H9hv447QjQJVDbHj3OUdciyAXY3v5+UDduzEytAlZCVHCpNAAg/mCSwhYYqZr9BiGYhmYspU8QXxZwiHTLn3yA==", + "eslint": { + "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", "dev": true, - "dependencies": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.4", - "semver": "^7.3.5" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "postcss": "^7.0.0 || ^8.0.1", - "webpack": "^5.0.0" - } - }, - "node_modules/@wordpress/scripts/node_modules/postcss-loader/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "requires": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@wordpress/scripts/node_modules/postcss-merge-longhand": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.0.2.tgz", - "integrity": "sha512-BMlg9AXSI5G9TBT0Lo/H3PfUy63P84rVz3BjCFE9e9Y9RXQZD3+h3YO1kgTNsNJy7bBc1YQp8DmSnwLIW5VPcw==", - "dev": true, "dependencies": { - "css-color-names": "^1.0.1", - "postcss-value-parser": "^4.1.0", - "stylehacks": "^5.0.1" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "globals": { + "version": "13.11.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz", + "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } } }, - "node_modules/@wordpress/scripts/node_modules/postcss-merge-rules": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.0.2.tgz", - "integrity": "sha512-5K+Md7S3GwBewfB4rjDeol6V/RZ8S+v4B66Zk2gChRqLTCC8yjnHQ601omj9TKftS19OPGqZ/XzoqpzNQQLwbg==", + "eslint-config-prettier": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-7.2.0.tgz", + "integrity": "sha512-rV4Qu0C3nfJKPOAhFujFxB7RMP+URFyQqqOZW9DMRD7ZDTFyjaIlETU3xzHELt++4ugC0+Jm084HQYkkJe+Ivg==", + "dev": true + }, + "eslint-import-resolver-node": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", + "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", "dev": true, - "dependencies": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0", - "cssnano-utils": "^2.0.1", - "postcss-selector-parser": "^6.0.5", - "vendors": "^1.0.3" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" + "requires": { + "debug": "^3.2.7", + "resolve": "^1.20.0" }, - "peerDependencies": { - "postcss": "^8.2.15" + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } } }, - "node_modules/@wordpress/scripts/node_modules/postcss-minify-font-values": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.0.1.tgz", - "integrity": "sha512-7JS4qIsnqaxk+FXY1E8dHBDmraYFWmuL6cgt0T1SWGRO5bzJf8sUoelwa4P88LEWJZweHevAiDKxHlofuvtIoA==", + "eslint-module-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.1.tgz", + "integrity": "sha512-fjoetBXQZq2tSTWZ9yWVl2KuFrTZZH3V+9iD1V1RfpDgxzJR+mPd/KZmMiA8gbPqdBzpNiEHOuT7IYEWxrH0zQ==", "dev": true, + "requires": { + "debug": "^3.2.7", + "find-up": "^2.1.0", + "pkg-dir": "^2.0.0" + }, "dependencies": { - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + } } }, - "node_modules/@wordpress/scripts/node_modules/postcss-minify-gradients": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.2.tgz", - "integrity": "sha512-7Do9JP+wqSD6Prittitt2zDLrfzP9pqKs2EcLX7HJYxsxCOwrrcLt4x/ctQTsiOw+/8HYotAoqNkrzItL19SdQ==", + "eslint-plugin-eslint-comments": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.2.0.tgz", + "integrity": "sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==", "dev": true, - "dependencies": { - "colord": "^2.6", - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" + "requires": { + "escape-string-regexp": "^1.0.5", + "ignore": "^5.0.5" }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/@wordpress/scripts/node_modules/postcss-minify-params": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.0.1.tgz", - "integrity": "sha512-4RUC4k2A/Q9mGco1Z8ODc7h+A0z7L7X2ypO1B6V8057eVK6mZ6xwz6QN64nHuHLbqbclkX1wyzRnIrdZehTEHw==", - "dev": true, "dependencies": { - "alphanum-sort": "^1.0.2", - "browserslist": "^4.16.0", - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0", - "uniqs": "^2.0.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + } } }, - "node_modules/@wordpress/scripts/node_modules/postcss-minify-selectors": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.1.0.tgz", - "integrity": "sha512-NzGBXDa7aPsAcijXZeagnJBKBPMYLaJJzB8CQh6ncvyl2sIndLVWfbcDi0SBjRWk5VqEjXvf8tYwzoKf4Z07og==", + "eslint-plugin-import": { + "version": "2.24.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.24.2.tgz", + "integrity": "sha512-hNVtyhiEtZmpsabL4neEj+6M5DCLgpYyG9nzJY8lZQeQXEn5UPW1DpUdsMHMXsq98dbNm7nt1w9ZMSVpfJdi8Q==", "dev": true, - "dependencies": { - "alphanum-sort": "^1.0.2", - "postcss-selector-parser": "^6.0.5" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" + "requires": { + "array-includes": "^3.1.3", + "array.prototype.flat": "^1.2.4", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.6.2", + "find-up": "^2.0.0", + "has": "^1.0.3", + "is-core-module": "^2.6.0", + "minimatch": "^3.0.4", + "object.values": "^1.1.4", + "pkg-up": "^2.0.0", + "read-pkg-up": "^3.0.0", + "resolve": "^1.20.0", + "tsconfig-paths": "^3.11.0" }, - "peerDependencies": { - "postcss": "^8.2.15" + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + } } }, - "node_modules/@wordpress/scripts/node_modules/postcss-normalize-charset": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz", - "integrity": "sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg==", + "eslint-plugin-jest": { + "version": "24.5.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-24.5.0.tgz", + "integrity": "sha512-Cm+XdX7Nms2UXGRnivHFVcM3ZmlKheHvc9VD78iZLO1XcqB59WbVjrMSiesCbHDlToxWjMJDiJMgc1CzFE13Vg==", "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "requires": { + "@typescript-eslint/experimental-utils": "^4.0.1" } }, - "node_modules/@wordpress/scripts/node_modules/postcss-normalize-display-values": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.1.tgz", - "integrity": "sha512-uupdvWk88kLDXi5HEyI9IaAJTE3/Djbcrqq8YgjvAVuzgVuqIk3SuJWUisT2gaJbZm1H9g5k2w1xXilM3x8DjQ==", + "eslint-plugin-jsdoc": { + "version": "36.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-36.1.1.tgz", + "integrity": "sha512-nuLDvH1EJaKx0PCa9oeQIxH6pACIhZd1gkalTUxZbaxxwokjs7TplqY0Q8Ew3CoZaf5aowm0g/Z3JGHCatt+gQ==", "dev": true, - "dependencies": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" + "requires": { + "@es-joy/jsdoccomment": "0.10.8", + "comment-parser": "1.2.4", + "debug": "^4.3.2", + "esquery": "^1.4.0", + "jsdoc-type-pratt-parser": "^1.1.1", + "lodash": "^4.17.21", + "regextras": "^0.8.0", + "semver": "^7.3.5", + "spdx-expression-parse": "^3.0.1" }, - "peerDependencies": { - "postcss": "^8.2.15" + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } } }, - "node_modules/@wordpress/scripts/node_modules/postcss-normalize-positions": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.0.1.tgz", - "integrity": "sha512-rvzWAJai5xej9yWqlCb1OWLd9JjW2Ex2BCPzUJrbaXmtKtgfL8dBMOOMTX6TnvQMtjk3ei1Lswcs78qKO1Skrg==", + "eslint-plugin-jsx-a11y": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz", + "integrity": "sha512-0rGPJBbwHoGNPU73/QCLP/vveMlM1b1Z9PponxO87jfr6tuH5ligXbDT6nHSSzBC8ovX2Z+BQu7Bk5D/Xgq9zg==", "dev": true, - "dependencies": { - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" + "requires": { + "@babel/runtime": "^7.11.2", + "aria-query": "^4.2.2", + "array-includes": "^3.1.1", + "ast-types-flow": "^0.0.7", + "axe-core": "^4.0.2", + "axobject-query": "^2.2.0", + "damerau-levenshtein": "^1.0.6", + "emoji-regex": "^9.0.0", + "has": "^1.0.3", + "jsx-ast-utils": "^3.1.0", + "language-tags": "^1.0.5" }, - "peerDependencies": { - "postcss": "^8.2.15" + "dependencies": { + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + } } }, - "node_modules/@wordpress/scripts/node_modules/postcss-normalize-repeat-style": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.1.tgz", - "integrity": "sha512-syZ2itq0HTQjj4QtXZOeefomckiV5TaUO6ReIEabCh3wgDs4Mr01pkif0MeVwKyU/LHEkPJnpwFKRxqWA/7O3w==", + "eslint-plugin-markdown": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-markdown/-/eslint-plugin-markdown-2.2.1.tgz", + "integrity": "sha512-FgWp4iyYvTFxPwfbxofTvXxgzPsDuSKHQy2S+a8Ve6savbujey+lgrFFbXQA0HPygISpRYWYBjooPzhYSF81iA==", "dev": true, - "dependencies": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "requires": { + "mdast-util-from-markdown": "^0.8.5" } }, - "node_modules/@wordpress/scripts/node_modules/postcss-normalize-string": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.0.1.tgz", - "integrity": "sha512-Ic8GaQ3jPMVl1OEn2U//2pm93AXUcF3wz+OriskdZ1AOuYV25OdgS7w9Xu2LO5cGyhHCgn8dMXh9bO7vi3i9pA==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/@wordpress/scripts/node_modules/postcss-normalize-timing-functions": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.1.tgz", - "integrity": "sha512-cPcBdVN5OsWCNEo5hiXfLUnXfTGtSFiBU9SK8k7ii8UD7OLuznzgNRYkLZow11BkQiiqMcgPyh4ZqXEEUrtQ1Q==", - "dev": true, - "dependencies": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/@wordpress/scripts/node_modules/postcss-normalize-unicode": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.1.tgz", - "integrity": "sha512-kAtYD6V3pK0beqrU90gpCQB7g6AOfP/2KIPCVBKJM2EheVsBQmx/Iof+9zR9NFKLAx4Pr9mDhogB27pmn354nA==", + "eslint-plugin-prettier": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz", + "integrity": "sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==", "dev": true, - "dependencies": { - "browserslist": "^4.16.0", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "requires": { + "prettier-linter-helpers": "^1.0.0" } }, - "node_modules/@wordpress/scripts/node_modules/postcss-normalize-url": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.2.tgz", - "integrity": "sha512-k4jLTPUxREQ5bpajFQZpx8bCF2UrlqOTzP9kEqcEnOfwsRshWs2+oAFIHfDQB8GO2PaUaSE0NlTAYtbluZTlHQ==", + "eslint-plugin-react": { + "version": "7.26.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.26.1.tgz", + "integrity": "sha512-Lug0+NOFXeOE+ORZ5pbsh6mSKjBKXDXItUD2sQoT+5Yl0eoT82DqnXeTMfUare4QVCn9QwXbfzO/dBLjLXwVjQ==", "dev": true, - "dependencies": { - "is-absolute-url": "^3.0.3", - "normalize-url": "^6.0.1", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" + "requires": { + "array-includes": "^3.1.3", + "array.prototype.flatmap": "^1.2.4", + "doctrine": "^2.1.0", + "estraverse": "^5.2.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.0.4", + "object.entries": "^1.1.4", + "object.fromentries": "^2.0.4", + "object.hasown": "^1.0.0", + "object.values": "^1.1.4", + "prop-types": "^15.7.2", + "resolve": "^2.0.0-next.3", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.5" }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/@wordpress/scripts/node_modules/postcss-normalize-whitespace": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.1.tgz", - "integrity": "sha512-iPklmI5SBnRvwceb/XH568yyzK0qRVuAG+a1HFUsFRf11lEJTiQQa03a4RSCQvLKdcpX7XsI1Gen9LuLoqwiqA==", - "dev": true, "dependencies": { - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + }, + "resolve": { + "version": "2.0.0-next.3", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", + "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", + "dev": true, + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + } } }, - "node_modules/@wordpress/scripts/node_modules/postcss-ordered-values": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.0.2.tgz", - "integrity": "sha512-8AFYDSOYWebJYLyJi3fyjl6CqMEG/UVworjiyK1r573I56kb3e879sCJLGvR3merj+fAdPpVplXKQZv+ey6CgQ==", - "dev": true, - "dependencies": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } + "eslint-plugin-react-hooks": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.2.0.tgz", + "integrity": "sha512-623WEiZJqxR7VdxFCKLI6d6LLpwJkGPYKODnkH3D7WpOG5KM8yWueBd8TLsNAetEJNF5iJmolaAKO3F8yzyVBQ==", + "dev": true }, - "node_modules/@wordpress/scripts/node_modules/postcss-reduce-initial": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.0.1.tgz", - "integrity": "sha512-zlCZPKLLTMAqA3ZWH57HlbCjkD55LX9dsRyxlls+wfuRfqCi5mSlZVan0heX5cHr154Dq9AfbH70LyhrSAezJw==", + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, - "dependencies": { - "browserslist": "^4.16.0", - "caniuse-api": "^3.0.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" } }, - "node_modules/@wordpress/scripts/node_modules/postcss-reduce-transforms": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.1.tgz", - "integrity": "sha512-a//FjoPeFkRuAguPscTVmRQUODP+f3ke2HqFNgGPwdYnpeC29RZdCBvGRGTsKpMURb/I3p6jdKoBQ2zI+9Q7kA==", + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, - "dependencies": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "requires": { + "eslint-visitor-keys": "^2.0.0" } }, - "node_modules/@wordpress/scripts/node_modules/postcss-svgo": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.0.2.tgz", - "integrity": "sha512-YzQuFLZu3U3aheizD+B1joQ94vzPfE6BNUcSYuceNxlVnKKsOtdo6hL9/zyC168Q8EwfLSgaDSalsUGa9f2C0A==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.1.0", - "svgo": "^2.3.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true }, - "node_modules/@wordpress/scripts/node_modules/postcss-unique-selectors": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.0.1.tgz", - "integrity": "sha512-gwi1NhHV4FMmPn+qwBNuot1sG1t2OmacLQ/AX29lzyggnjd+MnVD5uqQmpXO3J17KGL2WAxQruj1qTd3H0gG/w==", - "dev": true, - "dependencies": { - "alphanum-sort": "^1.0.2", - "postcss-selector-parser": "^6.0.5", - "uniqs": "^2.0.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } + "esm": { + "version": "3.2.25", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", + "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", + "dev": true }, - "node_modules/@wordpress/scripts/node_modules/prettier": { - "name": "wp-prettier", - "version": "2.2.1-beta-1", - "resolved": "https://registry.npmjs.org/wp-prettier/-/wp-prettier-2.2.1-beta-1.tgz", - "integrity": "sha512-+JHkqs9LC/JPp51yy1hzs3lQ7qeuWCwOcSzpQNeeY/G7oSpnF61vxt7hRh87zNRTr6ob2ndy0W8rVzhgrcA+Gw==", + "espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", "dev": true, - "bin": { - "prettier": "bin-prettier.js" + "requires": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/@wordpress/scripts/node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "engines": { - "node": ">=8" + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } } }, - "node_modules/@wordpress/scripts/node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true, - "engines": { - "node": ">=8" - } + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true }, - "node_modules/@wordpress/scripts/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" + "requires": { + "estraverse": "^5.1.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@wordpress/scripts/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@wordpress/scripts/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@wordpress/scripts/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } } }, - "node_modules/@wordpress/scripts/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "requires": { + "estraverse": "^5.2.0" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@wordpress/scripts/node_modules/stylehacks": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.0.1.tgz", - "integrity": "sha512-Es0rVnHIqbWzveU1b24kbw92HsebBepxfcqe5iix7t9j0PQqhs0IxXVXv0pY2Bxa08CgMkzD6OWql7kbGOuEdA==", - "dev": true, "dependencies": { - "browserslist": "^4.16.0", - "postcss-selector-parser": "^6.0.4" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } } }, - "node_modules/@wordpress/scripts/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true }, - "node_modules/@wordpress/scripts/node_modules/throat": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", - "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, - "node_modules/@wordpress/scripts/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "eventemitter2": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", + "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=", + "dev": true }, - "node_modules/@wordpress/scripts/node_modules/v8-to-istanbul": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz", - "integrity": "sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow==", + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true + }, + "exec-sh": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz", + "integrity": "sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==", + "dev": true + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" + "requires": { + "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" }, - "engines": { - "node": ">=10.10.0" + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } } }, - "node_modules/@wordpress/scripts/node_modules/v8-to-istanbul/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "execall": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/execall/-/execall-2.0.0.tgz", + "integrity": "sha512-0FU2hZ5Hh6iQnarpRtQurM/aAvp3RIbfvgLHrcqJYzhXyV2KFruhuChf9NC6waAhiUR7FFtlugkI4p7f2Fqlow==", "dev": true, - "engines": { - "node": ">= 8" + "requires": { + "clone-regexp": "^2.1.0" } }, - "node_modules/@wordpress/scripts/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" + "requires": { + "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" }, - "engines": { - "node": ">= 8" + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } } }, - "node_modules/@wordpress/scripts/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "expand-tilde": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", + "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=", "dev": true, - "dependencies": { + "requires": { + "os-homedir": "^1.0.1" + } + }, + "expect": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz", + "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "jest-get-type": "^26.3.0", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-regex-util": "^26.0.0" }, - "engines": { - "node": ">=8" + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } } }, - "node_modules/@wordpress/scripts/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "expect-puppeteer": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/expect-puppeteer/-/expect-puppeteer-4.4.0.tgz", + "integrity": "sha512-6Ey4Xy2xvmuQu7z7YQtMsaMV0EHJRpVxIDOd5GRrm04/I3nkTKIutELfECsLp6le+b3SSa3cXhPiw6PgqzxYWA==", "dev": true }, - "node_modules/@wordpress/scripts/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true }, - "node_modules/@wordpress/scripts/node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "dev": true, - "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" + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@wordpress/server-side-render": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@wordpress/server-side-render/-/server-side-render-3.0.4.tgz", - "integrity": "sha512-/LxybA6D/deSvhDXqD33NIHFL2o7QNQzmwXKiHn5DiTnuPGVXyyYoQ1LYyoH9pqq1MOjydtx3W4vA5y2REVYgw==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@wordpress/api-fetch": "^5.2.4", - "@wordpress/blocks": "^11.1.2", - "@wordpress/components": "^19.0.0", - "@wordpress/compose": "^5.0.4", - "@wordpress/data": "^6.1.2", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/element": "^4.0.3", - "@wordpress/i18n": "^4.2.3", - "@wordpress/url": "^3.2.3", - "lodash": "^4.17.21" - }, - "engines": { - "node": ">=12" + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + } } }, - "node_modules/@wordpress/server-side-render/node_modules/@wordpress/api-fetch": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-5.2.4.tgz", - "integrity": "sha512-8vMm08L3MMUynhD6sxe9VhRcfi3qGE3m9j7LpC9yAIxt70DaMRxHWEmGIbgO2F3INkqACdLWnDQmsHDKOSWQsQ==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@wordpress/i18n": "^4.2.3", - "@wordpress/url": "^3.2.3" + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" }, - "engines": { - "node": ">=12" + "dependencies": { + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + } } }, - "node_modules/@wordpress/server-side-render/node_modules/@wordpress/blocks": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/@wordpress/blocks/-/blocks-11.1.2.tgz", - "integrity": "sha512-xVvC/RXj9GXNRkQcGnmjWeS54intybON4Ol2vCVfreJtA5Cra5yRapRJwz3at1sgDD4q06k1sj98SemMEanazw==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@wordpress/autop": "^3.2.2", - "@wordpress/blob": "^3.2.1", - "@wordpress/block-serialization-default-parser": "^4.2.2", - "@wordpress/compose": "^5.0.4", - "@wordpress/data": "^6.1.2", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.5", - "@wordpress/element": "^4.0.3", - "@wordpress/hooks": "^3.2.1", - "@wordpress/html-entities": "^3.2.2", - "@wordpress/i18n": "^4.2.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/shortcode": "^3.2.2", - "colord": "^2.7.0", - "hpq": "^1.3.0", - "lodash": "^4.17.21", - "rememo": "^3.0.0", - "showdown": "^1.9.1", - "simple-html-tokenizer": "^0.5.7", - "uuid": "^8.3.0" + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "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" }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@wordpress/server-side-render/node_modules/@wordpress/components": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/@wordpress/components/-/components-19.0.0.tgz", - "integrity": "sha512-foFC+jJ3nu6PZ2pnjdszi7R17CQRquXkCPaydlOCsuDbsKm0dowR264jAdK0HJWepttj+kh3amWEhzajX6AYtg==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@emotion/cache": "^11.4.0", - "@emotion/css": "^11.1.3", - "@emotion/react": "^11.4.1", - "@emotion/styled": "^11.3.0", - "@emotion/utils": "1.0.0", - "@wordpress/a11y": "^3.2.3", - "@wordpress/compose": "^5.0.4", - "@wordpress/date": "^4.2.2", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.5", - "@wordpress/element": "^4.0.3", - "@wordpress/hooks": "^3.2.1", - "@wordpress/i18n": "^4.2.3", - "@wordpress/icons": "^6.0.1", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/primitives": "^3.0.3", - "@wordpress/rich-text": "^5.0.4", - "@wordpress/warning": "^2.2.2", - "classnames": "^2.3.1", - "colord": "^2.7.0", - "dom-scroll-into-view": "^1.2.1", - "downshift": "^6.0.15", - "framer-motion": "^4.1.17", - "gradient-parser": "^0.1.5", - "highlight-words-core": "^1.2.2", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "moment": "^2.22.1", - "re-resizable": "^6.4.0", - "react-colorful": "^5.3.1", - "react-dates": "^17.1.1", - "react-resize-aware": "^3.1.0", - "react-use-gesture": "^9.0.0", - "reakit": "^1.3.8", - "rememo": "^3.0.0", - "uuid": "^8.3.0" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "reakit-utils": "^0.15.1" + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } } }, - "node_modules/@wordpress/server-side-render/node_modules/@wordpress/components/node_modules/airbnb-prop-types": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz", - "integrity": "sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg==", - "dependencies": { - "array.prototype.find": "^2.1.1", - "function.prototype.name": "^1.1.2", - "is-regex": "^1.1.0", - "object-is": "^1.1.2", - "object.assign": "^4.1.0", - "object.entries": "^1.1.2", - "prop-types": "^15.7.2", - "prop-types-exact": "^1.2.0", - "react-is": "^16.13.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "requires": { + "@types/yauzl": "^2.9.1", + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" }, - "peerDependencies": { - "react": "^0.14 || ^15.0.0 || ^16.0.0-alpha" - } - }, - "node_modules/@wordpress/server-side-render/node_modules/@wordpress/components/node_modules/react": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", - "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", - "peer": true, "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2" - }, - "engines": { - "node": ">=0.10.0" + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + } } }, - "node_modules/@wordpress/server-side-render/node_modules/@wordpress/components/node_modules/react-dates": { - "version": "17.2.0", - "resolved": "https://registry.npmjs.org/react-dates/-/react-dates-17.2.0.tgz", - "integrity": "sha512-RDlerU8DdRRrlYS0MQ7Z9igPWABGLDwz6+ykBNff67RM3Sset2TDqeuOr+R5o00Ggn5U47GeLsGcSDxlZd9cHw==", - "dependencies": { - "airbnb-prop-types": "^2.10.0", - "consolidated-events": "^1.1.1 || ^2.0.0", - "is-touch-device": "^1.0.1", - "lodash": "^4.1.1", - "object.assign": "^4.1.0", - "object.values": "^1.0.4", - "prop-types": "^15.6.1", - "react-addons-shallow-compare": "^15.6.2", - "react-moment-proptypes": "^1.6.0", - "react-outside-click-handler": "^1.2.0", - "react-portal": "^4.1.5", - "react-with-styles": "^3.2.0", - "react-with-styles-interface-css": "^4.0.2" - }, - "peerDependencies": { - "moment": "^2.18.1", - "react": "^0.14 || ^15.5.4 || ^16.1.1", - "react-dom": "^0.14 || ^15.5.4 || ^16.1.1" - } + "fast-average-color": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/fast-average-color/-/fast-average-color-4.3.0.tgz", + "integrity": "sha512-k8FXd6+JeXoItmdNqB3hMwFgArryjdYBLuzEM8fRY/oztd/051yhSHU6GUrMOfIQU9dDHyFDcIAkGrQKlYtpDA==", + "dev": true }, - "node_modules/@wordpress/server-side-render/node_modules/@wordpress/components/node_modules/react-dom": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", - "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.19.1" - }, - "peerDependencies": { - "react": "^16.14.0" + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" } }, - "node_modules/@wordpress/server-side-render/node_modules/@wordpress/components/node_modules/react-outside-click-handler": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/react-outside-click-handler/-/react-outside-click-handler-1.3.0.tgz", - "integrity": "sha512-Te/7zFU0oHpAnctl//pP3hEAeobfeHMyygHB8MnjP6sX5OR8KHT1G3jmLsV3U9RnIYo+Yn+peJYWu+D5tUS8qQ==", - "dependencies": { - "airbnb-prop-types": "^2.15.0", - "consolidated-events": "^1.1.1 || ^2.0.0", - "document.contains": "^1.0.1", - "object.values": "^1.1.0", - "prop-types": "^15.7.2" - }, - "peerDependencies": { - "react": "^0.14 || >=15", - "react-dom": "^0.14 || >=15" + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fast-memoize": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz", + "integrity": "sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==" + }, + "fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "dev": true + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" } }, - "node_modules/@wordpress/server-side-render/node_modules/@wordpress/components/node_modules/react-portal": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/react-portal/-/react-portal-4.2.1.tgz", - "integrity": "sha512-fE9kOBagwmTXZ3YGRYb4gcMy+kSA+yLO0xnPankjRlfBv4uCpFXqKPfkpsGQQR15wkZ9EssnvTOl1yMzbkxhPQ==", - "dependencies": { - "prop-types": "^15.5.8" - }, - "peerDependencies": { - "react": "^15.0.0-0 || ^16.0.0-0 || ^17.0.0-0" + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" } }, - "node_modules/@wordpress/server-side-render/node_modules/@wordpress/components/node_modules/react-with-direction": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/react-with-direction/-/react-with-direction-1.4.0.tgz", - "integrity": "sha512-ybHNPiAmaJpoWwugwqry9Hd1Irl2hnNXlo/2SXQBwbLn/jGMauMS2y9jw+ydyX5V9ICryCqObNSthNt5R94xpg==", - "dependencies": { - "airbnb-prop-types": "^2.16.0", - "brcast": "^2.0.2", - "deepmerge": "^1.5.2", - "direction": "^1.0.4", - "hoist-non-react-statics": "^3.3.2", - "object.assign": "^4.1.2", - "object.values": "^1.1.5", - "prop-types": "^15.7.2" - }, - "peerDependencies": { - "react": "^0.14 || ^15 || ^16", - "react-dom": "^0.14 || ^15 || ^16" + "fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "dev": true, + "requires": { + "bser": "2.1.1" } }, - "node_modules/@wordpress/server-side-render/node_modules/@wordpress/components/node_modules/react-with-styles": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/react-with-styles/-/react-with-styles-3.2.3.tgz", - "integrity": "sha512-MTI1UOvMHABRLj5M4WpODfwnveHaip6X7QUMI2x6zovinJiBXxzhA9AJP7MZNaKqg1JRFtHPXZdroUC8KcXwlQ==", - "dependencies": { - "hoist-non-react-statics": "^3.2.1", - "object.assign": "^4.1.0", - "prop-types": "^15.6.2", - "react-with-direction": "^1.3.0" - }, - "peerDependencies": { - "react": ">=0.14", - "react-with-direction": "^1.1.0" - } - }, - "node_modules/@wordpress/server-side-render/node_modules/@wordpress/components/node_modules/react-with-styles-interface-css": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/react-with-styles-interface-css/-/react-with-styles-interface-css-4.0.3.tgz", - "integrity": "sha512-wE43PIyjal2dexxyyx4Lhbcb+E42amoYPnkunRZkb9WTA+Z+9LagbyxwsI352NqMdFmghR0opg29dzDO4/YXbw==", - "dependencies": { - "array.prototype.flat": "^1.2.1", - "global-cache": "^1.2.1" - }, - "peerDependencies": { - "react-with-styles": "^3.0.0" - } - }, - "node_modules/@wordpress/server-side-render/node_modules/@wordpress/compose": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.0.4.tgz", - "integrity": "sha512-gRpQgsxF1AnmrJnkmJOixsTtSmimFzasiXZlm0BwhsdeJEEqVO3Mt7ua59bLPHjnUmiyDfMWY9Ongn/2cSCRKQ==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@types/lodash": "^4.14.172", - "@types/mousetrap": "^1.6.8", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.5", - "@wordpress/element": "^4.0.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/priority-queue": "^2.2.2", - "clipboard": "^2.0.8", - "lodash": "^4.17.21", - "mousetrap": "^1.6.5", - "react-resize-aware": "^3.1.0", - "use-memo-one": "^1.1.1" - }, - "engines": { - "node": ">=12" + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "dev": true, + "requires": { + "pend": "~1.2.0" } }, - "node_modules/@wordpress/server-side-render/node_modules/@wordpress/data": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.1.2.tgz", - "integrity": "sha512-Ro4CGmGBgk+7gDOkoB/u/HFPjmObNTZvN1q1vb75gfHOjVmXFt6AZSialELc+AuYODZEedrvHRk7qMBPxsgTVQ==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@wordpress/compose": "^5.0.4", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/element": "^4.0.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/priority-queue": "^2.2.2", - "@wordpress/redux-routine": "^4.2.1", - "equivalent-key-map": "^0.2.2", - "is-promise": "^4.0.0", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "turbo-combine-reducers": "^1.0.2", - "use-memo-one": "^1.1.1" - }, - "engines": { - "node": ">=12" + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" }, - "peerDependencies": { - "redux": "^4.1.0" - } - }, - "node_modules/@wordpress/server-side-render/node_modules/@wordpress/element": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.3.tgz", - "integrity": "sha512-uFL8Xx0Uq/C+nCL5aM4Fb6YVub//1wuHyQK9VDtKwYg9UBELrexSCHo1XaesYRiGUqVW0o837qC7RCP2NLUBJw==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@types/react": "^16.9.0", - "@types/react-dom": "^16.9.0", - "@wordpress/escape-html": "^2.2.2", - "lodash": "^4.17.21", - "react": "^17.0.1", - "react-dom": "^17.0.1" - }, - "engines": { - "node": ">=12" + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + } } }, - "node_modules/@wordpress/server-side-render/node_modules/@wordpress/icons": { + "file-entry-cache": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@wordpress/icons/-/icons-6.0.1.tgz", - "integrity": "sha512-YAtnWquaWWM49hpoRJwaZRBTnnkwqOY0TuK8a6m0gXE2Xm3uoO/J4c6tLqKiFv3FG9Hmc/CB1WCmx+uM1TX0vw==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@wordpress/element": "^4.0.3", - "@wordpress/primitives": "^3.0.3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@wordpress/server-side-render/node_modules/deepmerge": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", - "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", - "engines": { - "node": ">=0.10.0" + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" } }, - "node_modules/@wordpress/server-side-render/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "file-sync-cmp": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz", + "integrity": "sha1-peeo/7+kk7Q7kju9TKiaU7Y7YSs=", + "dev": true }, - "node_modules/@wordpress/server-side-render/node_modules/scheduler": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", - "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } + "filename-reserved-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", + "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=", + "dev": true }, - "node_modules/@wordpress/shortcode": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@wordpress/shortcode/-/shortcode-3.2.2.tgz", - "integrity": "sha512-Im3z6C/+0IYepBg7w3m+2wyAEQfNLoWN3yQ1czNPsGHMAbELvAZjhd9S1hkJXgdyS9wQnamIQhu9wGB20qeh9A==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "lodash": "^4.17.21", - "memize": "^1.1.0" - }, - "engines": { - "node": ">=12" + "filenamify": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz", + "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==", + "dev": true, + "requires": { + "filename-reserved-regex": "^2.0.0", + "strip-outer": "^1.0.1", + "trim-repeated": "^1.0.0" } }, - "node_modules/@wordpress/stylelint-config": { - "version": "19.1.0", - "resolved": "https://registry.npmjs.org/@wordpress/stylelint-config/-/stylelint-config-19.1.0.tgz", - "integrity": "sha512-K/wB9rhB+pH5WvDh3fV3DN5C3Bud+jPGXmnPY8fOXKMYI3twCFozK/j6sVuaJHqGp/0kKEF0hkkGh+HhD30KGQ==", + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, - "dependencies": { - "stylelint-config-recommended": "^3.0.0", - "stylelint-config-recommended-scss": "^4.2.0", - "stylelint-scss": "^3.17.2" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "stylelint": "^13.7.0" + "requires": { + "to-regex-range": "^5.0.1" } }, - "node_modules/@wordpress/token-list": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@wordpress/token-list/-/token-list-2.2.1.tgz", - "integrity": "sha512-SBFATG3F6WcnRzcuu396KhesXI36qkzq21JV653+4XOwLsSVSEVbec2cFHw5WCvrj3Oe7Sv7hRK9Ia/wBW7bzA==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "lodash": "^4.17.21" + "find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@wordpress/url": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@wordpress/url/-/url-3.2.3.tgz", - "integrity": "sha512-sepFDMcshaLBEPHDuHDAsXWsrRInyOa3an3Y8OfqLFwAoMZGAKJTClx1k4DnJwRRGhjv03veTl0IqxTdMH/CiA==", "dependencies": { - "@babel/runtime": "^7.13.10", - "lodash": "^4.17.21" - }, - "engines": { - "node": ">=12" + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + } } }, - "node_modules/@wordpress/viewport": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@wordpress/viewport/-/viewport-4.0.4.tgz", - "integrity": "sha512-vLvMpvY0PTOBToP4DqgsnmhFCbikqEhpRMPE0WhKjt8BThGqFyzXspWQNd5+Unau3mqFFMRn3apVe7yRRp8Ibg==", + "find-file-up": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/find-file-up/-/find-file-up-0.1.3.tgz", + "integrity": "sha1-z2gJG8+fMApA2kEbN9pczlovvqA=", "dev": true, - "dependencies": { - "@babel/runtime": "^7.13.10", - "@wordpress/compose": "^5.0.4", - "@wordpress/data": "^6.1.2", - "lodash": "^4.17.21" - }, - "engines": { - "node": ">=12" + "requires": { + "fs-exists-sync": "^0.1.0", + "resolve-dir": "^0.1.0" } }, - "node_modules/@wordpress/viewport/node_modules/@wordpress/compose": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.0.4.tgz", - "integrity": "sha512-gRpQgsxF1AnmrJnkmJOixsTtSmimFzasiXZlm0BwhsdeJEEqVO3Mt7ua59bLPHjnUmiyDfMWY9Ongn/2cSCRKQ==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.13.10", - "@types/lodash": "^4.14.172", - "@types/mousetrap": "^1.6.8", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.5", - "@wordpress/element": "^4.0.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/priority-queue": "^2.2.2", - "clipboard": "^2.0.8", - "lodash": "^4.17.21", - "mousetrap": "^1.6.5", - "react-resize-aware": "^3.1.0", - "use-memo-one": "^1.1.1" - }, - "engines": { - "node": ">=12" - } + "find-parent-dir": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.1.tgz", + "integrity": "sha512-o4UcykWV/XN9wm+jMEtWLPlV8RXCZnMhQI6F6OdHeSez7iiJWePw8ijOlskJZMsaQoGR/b7dH6lO02HhaTN7+A==", + "dev": true }, - "node_modules/@wordpress/viewport/node_modules/@wordpress/data": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.1.2.tgz", - "integrity": "sha512-Ro4CGmGBgk+7gDOkoB/u/HFPjmObNTZvN1q1vb75gfHOjVmXFt6AZSialELc+AuYODZEedrvHRk7qMBPxsgTVQ==", + "find-pkg": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/find-pkg/-/find-pkg-0.1.2.tgz", + "integrity": "sha1-G9wiwG42NlUy4qJIBGhUuXiNpVc=", "dev": true, - "dependencies": { - "@babel/runtime": "^7.13.10", - "@wordpress/compose": "^5.0.4", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/element": "^4.0.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/priority-queue": "^2.2.2", - "@wordpress/redux-routine": "^4.2.1", - "equivalent-key-map": "^0.2.2", - "is-promise": "^4.0.0", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "turbo-combine-reducers": "^1.0.2", - "use-memo-one": "^1.1.1" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "redux": "^4.1.0" + "requires": { + "find-file-up": "^0.1.2" } }, - "node_modules/@wordpress/viewport/node_modules/@wordpress/element": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.3.tgz", - "integrity": "sha512-uFL8Xx0Uq/C+nCL5aM4Fb6YVub//1wuHyQK9VDtKwYg9UBELrexSCHo1XaesYRiGUqVW0o837qC7RCP2NLUBJw==", + "find-process": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/find-process/-/find-process-1.4.5.tgz", + "integrity": "sha512-v11rJYYISUWn+s8qZzgGnBvlzRKf3bOtlGFM8H0kw56lGQtOmLuLCzuclA5kehA2j7S5sioOWdI4woT3jDavAw==", "dev": true, - "dependencies": { - "@babel/runtime": "^7.13.10", - "@types/react": "^16.9.0", - "@types/react-dom": "^16.9.0", - "@wordpress/escape-html": "^2.2.2", - "lodash": "^4.17.21", - "react": "^17.0.1", - "react-dom": "^17.0.1" + "requires": { + "chalk": "^4.0.0", + "commander": "^5.1.0", + "debug": "^4.1.1" }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@wordpress/warning": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-2.2.2.tgz", - "integrity": "sha512-iG1Hq56RK3N6AJqAD1sRLWRIJatfYn+NrPyrfqRNZNYXHM8Vj/s7ABNMbIU0Y99vXkBE83rvCdbMkugNoI2jXA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/@wordpress/wordcount": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@wordpress/wordcount/-/wordcount-3.2.2.tgz", - "integrity": "sha512-lb0gpBmdbGhaVET8eUqa/PwVOlFcJc0gtsiOzUGq2GlDSqoC/ouE5dj1R9Dw68ybiD1pmEPDRArU4fF0JSNsfA==", "dependencies": { - "@babel/runtime": "^7.13.10", - "lodash": "^4.17.21" - }, - "engines": { - "node": ">=12" + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "node_modules/abab": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", - "dev": true - }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true + "find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" }, - "node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" } }, - "node_modules/acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "findup-sync": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", + "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", "dev": true, + "requires": { + "glob": "~5.0.0" + }, "dependencies": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } } }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "fined": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", + "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + "requires": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + }, + "dependencies": { + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + } } }, - "node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } + "flagged-respawn": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", + "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", + "dev": true }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, - "dependencies": { - "debug": "4" + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } } }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } + "flatted": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", + "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", + "dev": true }, - "node_modules/ajv-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true, - "peerDependencies": { - "ajv": ">=5.0.0" - } + "flatten": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", + "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==", + "dev": true }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } + "follow-redirects": { + "version": "1.14.4", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz", + "integrity": "sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==", + "dev": true }, - "node_modules/alphanum-sort": { + "for-in": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true }, - "node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "dev": true, - "engines": { - "node": ">=4" + "requires": { + "for-in": "^1.0.1" } }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "dev": true, - "engines": { - "node": ">=8" + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" } }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } + "fraction.js": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.1.tgz", + "integrity": "sha512-MHOhvvxHTfRFpF1geTK9czMIZ6xclsEor2wkIGYYq+PxcQqT7vStJqjhe6S1TenZrMZzo+wlqOufBDVepUEgPg==", + "dev": true }, - "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" + "requires": { + "map-cache": "^0.2.2" } }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, + "framer-motion": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-4.1.17.tgz", + "integrity": "sha512-thx1wvKzblzbs0XaK2X0G1JuwIdARcoNOW7VVwjO8BUltzXPyONGAElLu6CiCScsOQRI7FIk/45YTFtJw5Yozw==", + "requires": { + "@emotion/is-prop-valid": "^0.8.2", + "framesync": "5.3.0", + "hey-listen": "^1.0.8", + "popmotion": "9.3.6", + "style-value-types": "4.1.4", + "tslib": "^2.1.0" + }, "dependencies": { - "sprintf-js": "~1.0.2" + "@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "optional": true, + "requires": { + "@emotion/memoize": "0.7.4" + } + }, + "@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "optional": true + } } }, - "node_modules/argparse/node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "framesync": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/framesync/-/framesync-5.3.0.tgz", + "integrity": "sha512-oc5m68HDO/tuK2blj7ZcdEBRx3p1PjrgHazL8GYEpvULhrtGIFbQArN6cQS2QhW8mitffaB+VYzMjDqBxxQeoA==", + "requires": { + "tslib": "^2.1.0" + } + }, + "fs": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", + "integrity": "sha1-invTcYa23d84E/I4WLV+yq9eQdQ=", "dev": true }, - "node_modules/aria-query": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.10.2", - "@babel/runtime-corejs3": "^7.10.2" - }, - "engines": { - "node": ">=6.0" - } + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true }, - "node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "fs-exists-sync": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", + "integrity": "sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=", + "dev": true }, - "node_modules/arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true }, - "node_modules/arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "optional": true }, - "node_modules/array-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, - "node_modules/array-includes": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", - "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", - "dev": true, - "dependencies": { + "function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" } }, - "node_modules/array-slice": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", - "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } + "functions-have-names": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.2.tgz", + "integrity": "sha512-bLgc3asbWdwPbx2mNk2S49kmJCuQeu0nfmaOgbs8WIyzzkw3r4htszdIi9Q9EMezDPTYuJx2wvjZ/EwgAthpnA==" }, - "node_modules/array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true }, - "node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, - "node_modules/array.prototype.filter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array.prototype.filter/-/array.prototype.filter-1.0.1.tgz", - "integrity": "sha512-Dk3Ty7N42Odk7PjU/Ci3zT4pLj20YvuVnneG/58ICM6bt4Ij5kZaJTVQ9TSaWaIECX2sFyz4KItkVZqHNnciqw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" } }, - "node_modules/array.prototype.find": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.1.2.tgz", - "integrity": "sha512-00S1O4ewO95OmmJW7EesWfQlrCrLEL8kZ40w3+GkLX2yTt0m2ggcePPa2uHPJ9KUmJvwRq+lCV9bD8Yim23x/Q==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", + "dev": true }, - "node_modules/array.prototype.flat": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz", - "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true }, - "node_modules/array.prototype.flatmap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz", - "integrity": "sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA==", + "get-stdin": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", + "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "requires": { + "pump": "^3.0.0" } }, - "node_modules/arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/assign-symbols": { + "get-symbol-description": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true, - "engines": { - "node": ">=0.10.0" + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" } }, - "node_modules/ast-types-flow": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", - "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", "dev": true }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "dev": true, - "dependencies": { - "lodash": "^4.17.14" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "getobject": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/getobject/-/getobject-1.0.2.tgz", + "integrity": "sha512-2zblDBaFcb3rB4rF77XVnuINOE2h2k/OnqXAiy0IrTxUfV1iFp3la33oAQVY9pCpWU268WFYVt2t71hlMuLsOg==", "dev": true }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true, - "bin": { - "atob": "bin/atob.js" - }, - "engines": { - "node": ">= 4.5.0" - } - }, - "node_modules/autoprefixer": { - "version": "9.8.8", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", - "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", - "dev": true, - "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" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" + "gettext-parser": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/gettext-parser/-/gettext-parser-1.4.0.tgz", + "integrity": "sha512-sedZYLHlHeBop/gZ1jdg59hlUEcpcZJofLq2JFwJT1zTqAU3l2wFv6IsuwFHGqbiT9DWzMUW4/em2+hspnmMMA==", + "requires": { + "encoding": "^0.1.12", + "safe-buffer": "^5.1.1" } }, - "node_modules/autoprefixer/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/autoprefixer/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, - "node_modules/autoprefixer/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, - "engines": { - "node": ">=0.10.0" + "requires": { + "is-glob": "^4.0.1" } }, - "node_modules/autosize": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/autosize/-/autosize-4.0.4.tgz", - "integrity": "sha512-5yxLQ22O0fCRGoxGfeLSNt3J8LB1v+umtpMnPW6XjkTWXKoN0AmXAIhelJcDtFT/Y/wYWmfE+oqU10Q0b8FhaQ==" + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true }, - "node_modules/axe-core": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.3.4.tgz", - "integrity": "sha512-4Hk6iSA/H90rtiPoCpSkeJxNWCPBf7szwVvaUqrPdxo0j2Y04suHK9jPKXaE3WI7OET6wBSwsWw7FDc1DBq7iQ==", - "dev": true, - "engines": { - "node": ">=4" + "global-cache": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/global-cache/-/global-cache-1.2.1.tgz", + "integrity": "sha512-EOeUaup5DgWKlCMhA9YFqNRIlZwoxt731jCh47WBV9fQqHgXhr3Fa55hfgIUqilIcPsfdNKN7LHjrNY+Km40KA==", + "requires": { + "define-properties": "^1.1.2", + "is-symbol": "^1.0.1" } }, - "node_modules/axios": { - "version": "0.21.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", - "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", + "global-modules": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz", + "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=", "dev": true, + "requires": { + "global-prefix": "^0.1.4", + "is-windows": "^0.2.0" + }, "dependencies": { - "follow-redirects": "^1.10.0" + "is-windows": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", + "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=", + "dev": true + } } }, - "node_modules/axobject-query": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", - "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", - "dev": true - }, - "node_modules/babel-eslint": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", - "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", - "deprecated": "babel-eslint is now @babel/eslint-parser. This package will no longer receive updates.", + "global-prefix": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", + "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=", "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/traverse": "^7.7.0", - "@babel/types": "^7.7.0", - "eslint-visitor-keys": "^1.0.0", - "resolve": "^1.12.0" - }, - "engines": { - "node": ">=6" + "requires": { + "homedir-polyfill": "^1.0.0", + "ini": "^1.3.4", + "is-windows": "^0.2.0", + "which": "^1.2.12" }, - "peerDependencies": { - "eslint": ">= 4.12.1" + "dependencies": { + "is-windows": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", + "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=", + "dev": true + } } }, - "node_modules/babel-eslint/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true }, - "node_modules/babel-jest": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-26.6.3.tgz", - "integrity": "sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==", + "globby": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", "dev": true, - "dependencies": { - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/babel__core": "^7.1.7", - "babel-plugin-istanbul": "^6.0.0", - "babel-preset-jest": "^26.6.2", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", "slash": "^3.0.0" - }, - "engines": { - "node": ">= 10.14.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" } }, - "node_modules/babel-jest/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } + "globjoin": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", + "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=", + "dev": true }, - "node_modules/babel-jest/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "gonzales-pe": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.3.0.tgz", + "integrity": "sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==", "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "requires": { + "minimist": "^1.2.5" } }, - "node_modules/babel-jest/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "good-listener": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", + "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=", + "requires": { + "delegate": "^3.1.2" } }, - "node_modules/babel-jest/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", "dev": true }, - "node_modules/babel-jest/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-jest/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } + "gradient-parser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/gradient-parser/-/gradient-parser-0.1.5.tgz", + "integrity": "sha1-DH4heVWeXOfY1x9EI6+TcQCyJIw=" }, - "node_modules/babel-loader": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.3.tgz", - "integrity": "sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw==", + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", "dev": true, - "dependencies": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^1.4.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - }, - "engines": { - "node": ">= 8.9" - }, - "peerDependencies": { - "@babel/core": "^7.0.0", - "webpack": ">=2" - } + "optional": true }, - "node_modules/babel-loader/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "grunt": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.4.1.tgz", + "integrity": "sha512-ZXIYXTsAVrA7sM+jZxjQdrBOAg7DyMUplOMhTaspMRExei+fD0BTwdWXnn0W5SXqhb/Q/nlkzXclSi3IH55PIA==", "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/babel-loader/node_modules/loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" + "requires": { + "dateformat": "~3.0.3", + "eventemitter2": "~0.4.13", + "exit": "~0.1.2", + "findup-sync": "~0.3.0", + "glob": "~7.1.6", + "grunt-cli": "~1.4.2", + "grunt-known-options": "~2.0.0", + "grunt-legacy-log": "~3.0.0", + "grunt-legacy-util": "~2.0.1", + "iconv-lite": "~0.4.13", + "js-yaml": "~3.14.0", + "minimatch": "~3.0.4", + "mkdirp": "~1.0.4", + "nopt": "~3.0.6", + "rimraf": "~3.0.2" }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dev": true, - "dependencies": { - "object.assign": "^4.1.0" - } - }, - "node_modules/babel-plugin-inline-react-svg": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/babel-plugin-inline-react-svg/-/babel-plugin-inline-react-svg-2.0.1.tgz", - "integrity": "sha512-aD4gy2G3gNVDaw97LtoixzWbaOcSEnOb4KJPe8kZedSeqxY3v71KsBs8DGmButGZtEloCRhRRuU2TpW1hIPXig==", - "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/parser": "^7.0.0", - "lodash.isplainobject": "^4.0.6", - "resolve": "^1.20.0", - "svgo": "^2.0.3" - }, - "engines": { - "node": ">=10.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "grunt-cli": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.4.3.tgz", + "integrity": "sha512-9Dtx/AhVeB4LYzsViCjUQkd0Kw0McN2gYpdmGYKtE2a5Yt7v1Q+HYZVWhqXc/kGnxlMtqKDxSwotiGeFmkrCoQ==", + "dev": true, + "requires": { + "grunt-known-options": "~2.0.0", + "interpret": "~1.1.0", + "liftup": "~3.0.1", + "nopt": "~4.0.1", + "v8flags": "~3.2.0" + }, + "dependencies": { + "nopt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", + "dev": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + } + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "interpret": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", + "dev": true + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } } }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "grunt-contrib-clean": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-clean/-/grunt-contrib-clean-2.0.0.tgz", + "integrity": "sha512-g5ZD3ORk6gMa5ugZosLDQl3dZO7cI3R14U75hTM+dVLVxdMNJCPVmwf9OUt4v4eWgpKKWWoVK9DZc1amJp4nQw==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" + "requires": { + "async": "^2.6.1", + "rimraf": "^2.6.2" } }, - "node_modules/babel-plugin-jest-hoist": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz", - "integrity": "sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==", + "grunt-contrib-copy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-copy/-/grunt-contrib-copy-1.0.0.tgz", + "integrity": "sha1-cGDGWB6QS4qw0A8HbgqPbj58NXM=", "dev": true, - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", - "@types/babel__traverse": "^7.0.6" + "requires": { + "chalk": "^1.1.1", + "file-sync-cmp": "^0.1.0" }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/babel-plugin-macros": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", - "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "cosmiconfig": "^6.0.0", - "resolve": "^1.12.0" - } - }, - "node_modules/babel-plugin-macros/node_modules/cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" - }, - "engines": { - "node": ">=8" + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } } }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz", - "integrity": "sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.2.2", - "semver": "^6.1.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "grunt-known-options": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-2.0.0.tgz", + "integrity": "sha512-GD7cTz0I4SAede1/+pAbmJRG44zFLPipVtdL9o3vqx9IEyb7b4/Y3s7r6ofI3CchR5GvYJ+8buCSioDv5dQLiA==", + "dev": true }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.5.tgz", - "integrity": "sha512-ninF5MQNwAX9Z7c9ED+H2pGt1mXdP4TqzlHKyPIYmJIYz0N+++uwdM7RnJukklhzJ54Q84vA4ZJkgs7lu5vqcw==", + "grunt-legacy-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-3.0.0.tgz", + "integrity": "sha512-GHZQzZmhyq0u3hr7aHW4qUH0xDzwp2YXldLPZTCjlOeGscAOWWPftZG3XioW8MasGp+OBRIu39LFx14SLjXRcA==", "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.2.2", - "core-js-compat": "^3.16.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "requires": { + "colors": "~1.1.2", + "grunt-legacy-log-utils": "~2.1.0", + "hooker": "~0.2.3", + "lodash": "~4.17.19" } }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz", - "integrity": "sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg==", + "grunt-legacy-log-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.1.0.tgz", + "integrity": "sha512-lwquaPXJtKQk0rUM1IQAop5noEpwFqOXasVoedLeNzaibf/OPWjKYvvdqnEHNmU+0T0CaReAXIbGo747ZD+Aaw==", "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.2.2" + "requires": { + "chalk": "~4.1.0", + "lodash": "~4.17.19" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-transform-react-remove-prop-types": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", - "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==", - "dev": true - }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@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-top-level-await": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babel-preset-jest": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz", - "integrity": "sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==", - "dev": true, - "dependencies": { - "babel-plugin-jest-hoist": "^26.6.2", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": ">= 10.14.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, - "node_modules/babel-runtime": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.25.0.tgz", - "integrity": "sha1-M7mOql1IK7AajRqmtDetKwGuxBw=", + "grunt-legacy-util": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-2.0.1.tgz", + "integrity": "sha512-2bQiD4fzXqX8rhNdXkAywCadeqiPiay0oQny77wA2F3WF4grPJXCvAcyoWUJV+po/b15glGkxuSiQCK299UC2w==", "dev": true, + "requires": { + "async": "~3.2.0", + "exit": "~0.1.2", + "getobject": "~1.0.0", + "hooker": "~0.2.3", + "lodash": "~4.17.21", + "underscore.string": "~3.3.5", + "which": "~2.0.2" + }, "dependencies": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.10.0" + "async": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.1.tgz", + "integrity": "sha512-XdD5lRO/87udXCMC9meWdYiR+Nq6ZjUfXidViUZGu2F1MO4T3XwZ1et0hb2++BgLfhyJwy44BGB/yx80ABx8hg==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } } }, - "node_modules/babel-runtime/node_modules/core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "deprecated": "core-js@<3.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.", - "dev": true, - "hasInstallScript": true - }, - "node_modules/babel-runtime/node_modules/regenerator-runtime": { - "version": "0.10.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", - "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", - "dev": true - }, - "node_modules/bail": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", - "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", + "grunt-shell": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/grunt-shell/-/grunt-shell-3.0.1.tgz", + "integrity": "sha512-C8eR4frw/NmIFIwSvzSLS4wOQBUzC+z6QhrKPzwt/tlaIqlzH35i/O2MggVOBj2Sh1tbaAqpASWxGiGsi4JMIQ==", "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "requires": { + "chalk": "^2.4.1", + "npm-run-path": "^2.0.0", + "strip-ansi": "^5.0.0" } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "grunt-wp-deploy": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/grunt-wp-deploy/-/grunt-wp-deploy-2.1.2.tgz", + "integrity": "sha512-n+x1WBCmLHF5P1aDY29CoF8jdLHnRKX4VDIZhiM0sbZ58vSBTFedajcZrP1CEqJ7suiv0/o/c6xmR1BiPEzaQg==", "dev": true, - "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" - }, - "engines": { - "node": ">=0.10.0" + "requires": { + "inquirer": "^6.0.0" } }, - "node_modules/base/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "requires": { + "duplexer": "^0.1.2" } }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/before-after-hook": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz", - "integrity": "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==", + "hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", "dev": true }, - "node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" } }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + }, "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + } } }, - "node_modules/body": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/body/-/body-5.1.0.tgz", - "integrity": "sha1-5LoM5BCkaTYyM2dgnstOZVMSUGk=", - "dev": true, - "dependencies": { - "continuable-cache": "^0.3.1", - "error": "^7.0.0", - "raw-body": "~1.1.0", - "safe-json-parse": "~1.0.1" - } + "has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==" }, - "node_modules/body-scroll-lock": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/body-scroll-lock/-/body-scroll-lock-3.1.5.tgz", - "integrity": "sha512-Yi1Xaml0EvNA0OYWxXiYNqY24AfWkbA6w5vxE7GWxtKfzIbZM+Qw+aSmkgsbWzbHiy/RCSkUZBplVxTA+E4jJg==" + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", - "dev": true + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "requires": { + "has-symbols": "^1.0.2" } }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" } }, - "node_modules/brcast": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brcast/-/brcast-2.0.2.tgz", - "integrity": "sha512-Tfn5JSE7hrUlFcOoaLzVvkbgIemIorMIyoMr3TgvszWW7jFt2C9PdeMLtysYD9RU0MmU17b69+XJG1eRY2OBRg==" - }, - "node_modules/browser-process-hrtime": { + "has-values": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, - "node_modules/browserslist": { - "version": "4.17.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.5.tgz", - "integrity": "sha512-I3ekeB92mmpctWBoLXe0d5wPS2cBuRvvW0JyyJHMrk9/HmP2ZjrTboNAZ8iuGqaEIlKguljbQY32OkOJIRrgoA==", - "dependencies": { - "caniuse-lite": "^1.0.30001271", - "electron-to-chromium": "^1.3.878", - "escalade": "^3.1.1", - "node-releases": "^2.0.1", - "picocolors": "^1.0.0" + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } }, - { - "type": "consulting", - "url": "https://feross.org/support" + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" } }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", - "dev": true, - "engines": { - "node": "*" - } + "hey-listen": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", + "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==" }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true + "highlight-words-core": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/highlight-words-core/-/highlight-words-core-1.2.2.tgz", + "integrity": "sha512-BXUKIkUuh6cmmxzi5OIbUJxrG8OAk2MqoL1DtO3Wo9D2faJg2ph5ntyuQeLqaHJmzER6H5tllCDA9ZnNe9BVGg==" }, - "node_modules/bytes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz", - "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=", - "dev": true + "hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "requires": { + "react-is": "^16.7.0" + } }, - "node_modules/cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", "dev": true, - "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" - }, - "engines": { - "node": ">=0.10.0" + "requires": { + "parse-passwd": "^1.0.0" } }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "hooker": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", + "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=", + "dev": true }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "engines": { - "node": ">=6" - } + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true }, - "node_modules/camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "hpq": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/hpq/-/hpq-1.3.0.tgz", + "integrity": "sha512-fvYTvdCFOWQupGxqkahrkA+ERBuMdzkxwtUdKrxR6rmMd4Pfl+iZ1QiQYoaZ0B/v0y59MOMnz3XFUWbT50/NWA==" }, - "node_modules/camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "html-element-map": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/html-element-map/-/html-element-map-1.3.1.tgz", + "integrity": "sha512-6XMlxrAFX4UEEGxctfFnmrFaaZFNf9i5fNuV5wZ3WWQ4FVaNP1aX1LkX9j2mfEx1NpjeE/rL3nmgEn23GdFmrg==", "dev": true, - "dependencies": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "requires": { + "array.prototype.filter": "^1.0.0", + "call-bind": "^1.0.2" } }, - "node_modules/camelcase-keys/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", "dev": true, - "engines": { - "node": ">=6" + "requires": { + "whatwg-encoding": "^1.0.5" } }, - "node_modules/caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", - "dev": true, - "dependencies": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true }, - "node_modules/caniuse-lite": { - "version": "1.0.30001272", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001272.tgz", - "integrity": "sha512-DV1j9Oot5dydyH1v28g25KoVm7l8MTxazwuiH3utWiAS6iL/9Nh//TGwqFEeqqN8nnWYQ8HHhUq+o4QPt9kvYw==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } + "html-tags": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz", + "integrity": "sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==", + "dev": true }, - "node_modules/capture-exit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", - "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", + "htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", "dev": true, - "dependencies": { - "rsvp": "^4.8.4" + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" }, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "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" - }, - "engines": { - "node": ">=4" + "dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + } } }, - "node_modules/chalk/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "engines": { - "node": ">=0.8.0" - } + "http-parser-js": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", + "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==", + "dev": true }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", "dev": true, - "engines": { - "node": ">=10" + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" } }, - "node_modules/character-entities": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", - "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "requires": { + "agent-base": "6", + "debug": "4" } }, - "node_modules/character-entities-legacy": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", - "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true }, - "node_modules/character-reference-invalid": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", - "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" } }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", "dev": true }, - "node_modules/check-node-version": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/check-node-version/-/check-node-version-4.1.0.tgz", - "integrity": "sha512-TSXGsyfW5/xY2QseuJn8/hleO2AU7HxVCdkc900jp1vcfzF840GkjvRT7CHl8sRtWn23n3X3k0cwH9RXeRwhfw==", - "dev": true, - "dependencies": { - "chalk": "^3.0.0", - "map-values": "^1.0.1", - "minimist": "^1.2.0", - "object-filter": "^1.0.2", - "run-parallel": "^1.1.4", - "semver": "^6.3.0" - }, - "bin": { - "check-node-version": "bin.js" - }, - "engines": { - "node": ">=8.3.0" - } + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true }, - "node_modules/check-node-version/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true }, - "node_modules/check-node-version/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" } }, - "node_modules/check-node-version/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "dev": true + }, + "import-local": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.3.tgz", + "integrity": "sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA==", "dev": true, - "dependencies": { - "color-name": "~1.1.4" + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" }, - "engines": { - "node": ">=7.0.0" + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + } } }, - "node_modules/check-node-version/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, - "node_modules/check-node-version/node_modules/has-flag": { + "indent-string": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true }, - "node_modules/check-node-version/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true }, - "node_modules/cheerio": { - "version": "1.0.0-rc.10", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz", - "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==", + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, - "dependencies": { - "cheerio-select": "^1.5.0", - "dom-serializer": "^1.3.2", - "domhandler": "^4.2.0", - "htmlparser2": "^6.1.0", - "parse5": "^6.0.1", - "parse5-htmlparser2-tree-adapter": "^6.0.1", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + "requires": { + "once": "^1.3.0", + "wrappy": "1" } }, - "node_modules/cheerio-select": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.5.0.tgz", - "integrity": "sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg==", - "dev": true, - "dependencies": { - "css-select": "^4.1.3", - "css-what": "^5.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0", - "domutils": "^2.7.0" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, - "node_modules/child_process": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/child_process/-/child_process-1.0.2.tgz", - "integrity": "sha1-sffn/HPSXn/R1FWtyU4UODAYK1o=", + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, - "node_modules/chokidar": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", - "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "inquirer": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", + "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", "dev": true, - "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" - }, - "engines": { - "node": ">= 8.10.0" + "requires": { + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^2.0.0", + "lodash": "^4.17.12", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "dependencies": { + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + } } }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" } }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", "dev": true }, - "node_modules/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "irregular-plurals": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-3.3.0.tgz", + "integrity": "sha512-MVBLKUTangM3EfRPFROhmWQQKRDsrgI83J8GS3jXy+OwYqiR2/aoWndYQ5416jLE3uaGgLH7ncme3X9y09gZ3g==", + "dev": true + }, + "is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", "dev": true, - "engines": { - "node": ">=6.0" + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" } }, - "node_modules/ci-info": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", - "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", + "is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", "dev": true }, - "node_modules/cjs-module-lexer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", - "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, - "peer": true + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } }, - "node_modules/class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "dev": true + }, + "is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", "dev": true, - "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" + "requires": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" } }, - "node_modules/class-utils/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" + "requires": { + "binary-extensions": "^2.0.0" } }, - "node_modules/class-utils/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-core-module": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.7.0.tgz", + "integrity": "sha512-ByY+tjCciCr+9nLryBYcSD50EOGWt95c7tIsKTG1J2ixKKXPvF7Ej3AVd+UfDydAJom3biBGDBALaO79ktwgEQ==", + "requires": { + "has": "^1.0.3" } }, - "node_modules/class-utils/node_modules/is-data-descriptor": { + "is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, - "dependencies": { + "requires": { "kind-of": "^3.0.2" }, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "requires": { + "has-tostringtag": "^1.0.0" } }, - "node_modules/class-utils/node_modules/is-descriptor": { + "is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "dev": true + }, + "is-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, - "dependencies": { + "requires": { "is-accessor-descriptor": "^0.1.6", "is-data-descriptor": "^0.1.4", "kind-of": "^5.0.0" }, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } } }, - "node_modules/class-utils/node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "optional": true }, - "node_modules/classnames": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz", - "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==" + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, - "engines": { - "node": ">=6" - } + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true }, - "node_modules/clean-webpack-plugin": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-3.0.0.tgz", - "integrity": "sha512-MciirUH5r+cYLGCOL5JX/ZLzOZbVr1ot3Fw+KcvbhUb6PM+yycqd9ZhIlcigQ5gl+XhppNmw3bEFuaaMNyLj3A==", - "dev": true, - "dependencies": { - "@types/webpack": "^4.4.31", - "del": "^4.1.1" - }, - "engines": { - "node": ">=8.9.0" - }, - "peerDependencies": { - "webpack": "*" - } + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" }, - "node_modules/cli-cursor": { + "is-generator-fn": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "dependencies": { - "restore-cursor": "^2.0.0" - }, - "engines": { - "node": ">=4" - } + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true }, - "node_modules/cli-truncate": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, - "dependencies": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "requires": { + "is-extglob": "^2.1.1" } }, - "node_modules/cli-truncate/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", "dev": true }, - "node_modules/cli-truncate/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==" }, - "node_modules/cli-width": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", - "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, - "node_modules/clipboard": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.8.tgz", - "integrity": "sha512-Y6WO0unAIQp5bLmk1zdThRhgJt/x3ks6f30s3oE3H1mgIEU33XyQjEf8gsf6DxC7NPX8Y1SsNWjUjL/ywLnnbQ==", - "dependencies": { - "good-listener": "^1.2.2", - "select": "^1.1.2", - "tiny-emitter": "^2.0.0" + "is-number-object": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", + "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", + "requires": { + "has-tostringtag": "^1.0.0" } }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "peer": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true }, - "node_modules/cliui/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "peer": true + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true }, - "node_modules/cliui/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", "dev": true, - "peer": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" + "requires": { + "is-path-inside": "^2.1.0" } }, - "node_modules/clone-deep": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.2.4.tgz", - "integrity": "sha1-TnPdCen7lxzDhnDF3O2cGJZIHMY=", - "dev": true, - "dependencies": { - "for-own": "^0.1.3", - "is-plain-object": "^2.0.1", - "kind-of": "^3.0.2", - "lazy-cache": "^1.0.3", - "shallow-clone": "^0.1.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/clone-deep/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/clone-regexp": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-2.2.0.tgz", - "integrity": "sha512-beMpP7BOtTipFuW8hrJvREQ2DrRu3BE7by0ZpibtfBA+qfHYvMGTc2Yb1JMYPKg/JUw0CHYvpg796aNTSW9z7Q==", - "dev": true, - "dependencies": { - "is-regexp": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/clone-regexp/node_modules/is-regexp": { + "is-path-inside": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-2.1.0.tgz", - "integrity": "sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA==", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", "dev": true, - "engines": { - "node": ">=6" + "requires": { + "path-is-inside": "^1.0.2" } }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true, - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } + "is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true }, - "node_modules/coa": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", - "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", - "dev": true, - "dependencies": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" - }, - "engines": { - "node": ">= 4.0" - } + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true }, - "node_modules/collect-v8-coverage": { + "is-potential-custom-element-name": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", - "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", "dev": true }, - "node_modules/collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } + "is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==" }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" } }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "node_modules/colord": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.1.tgz", - "integrity": "sha512-4LBMSt09vR0uLnPVkOUBnmxgoaeN4ewRbx801wY/bXcltXfpR/G46OdWn96XpYmCWuYvO46aBZP4NgX8HpNAcw==" - }, - "node_modules/colorette": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", - "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", + "is-regexp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-2.1.0.tgz", + "integrity": "sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA==", "dev": true }, - "node_modules/colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", - "dev": true, - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/comment-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.2.4.tgz", - "integrity": "sha512-pm0b+qv+CkWNriSTMsfnjChF9kH0kxz55y44Wo5le9qLxMj5xDQAaEd9ZN1ovSuk9CsrncWaFwgpOMg7ClJwkw==", + "is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", "dev": true, - "engines": { - "node": ">= 12.0.0" + "requires": { + "is-unc-path": "^1.0.0" } }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "node_modules/compute-scroll-into-view": { - "version": "1.0.17", - "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.17.tgz", - "integrity": "sha512-j4dx+Fb0URmzbwwMUrhqWM2BEWHdFGx+qZ9qqASHRPqvTYdqvWnHg0H1hIbcyLnvgnoNAVMlwkepyqM3DaIFUg==" - }, - "node_modules/computed-style": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/computed-style/-/computed-style-0.1.4.tgz", - "integrity": "sha1-fzRP2FhLLkJb7cpKGvwOMAuwXXQ=" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "node_modules/consola": { - "version": "2.15.3", - "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", - "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==", + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", "dev": true }, - "node_modules/consolidated-events": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/consolidated-events/-/consolidated-events-2.0.2.tgz", - "integrity": "sha512-2/uRVMdRypf5z/TW/ncD/66l75P5hH2vM/GR8Jf8HLc2xnfJtmina6F6du8+v4Z2vTrMo7jC+W1tmEEuuELgkQ==" + "is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==" }, - "node_modules/continuable-cache": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/continuable-cache/-/continuable-cache-0.3.1.tgz", - "integrity": "sha1-vXJ6f67XfnH/OYWskzUakSczrQ8=", + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, - "node_modules/convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dependencies": { - "safe-buffer": "~5.1.1" + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "requires": { + "has-tostringtag": "^1.0.0" } }, - "node_modules/copy-descriptor": { + "is-subset": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/copy-webpack-plugin": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-9.0.1.tgz", - "integrity": "sha512-14gHKKdYIxF84jCEgPgYXCPpldbwpxxLbCmA7LReY7gvbaT555DgeBWBgBZM116tv/fO6RRJrsivBqRyRlukhw==", - "dev": true, - "dependencies": { - "fast-glob": "^3.2.5", - "glob-parent": "^6.0.0", - "globby": "^11.0.3", - "normalize-path": "^3.0.0", - "p-limit": "^3.1.0", - "schema-utils": "^3.0.0", - "serialize-javascript": "^6.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - } - }, - "node_modules/copy-webpack-plugin/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/core-js": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.19.0.tgz", - "integrity": "sha512-L1TpFRWXZ76vH1yLM+z6KssLZrP8Z6GxxW4auoCj+XiViOzNPJCAuTIkn03BGdFe6Z5clX5t64wRIRypsZQrUg==", - "dev": true, - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-js-compat": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.0.tgz", - "integrity": "sha512-R09rKZ56ccGBebjTLZHvzDxhz93YPT37gBm6qUhnwj3Kt7aCjjZWD1injyNbyeFHxNKfeZBSyds6O9n3MKq1sw==", - "dev": true, - "dependencies": { - "browserslist": "^4.17.5", - "semver": "7.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-js-compat/node_modules/semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/core-js-pure": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.19.0.tgz", - "integrity": "sha512-UEQk8AxyCYvNAs6baNoPqDADv7BX0AmBLGxVsrAifPPx/C8EAzV4Q+2ZUJqVzfI2TQQEZITnwUkWcHpgc/IubQ==", - "dev": true, - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", - "dev": true, - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/cross-env": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", - "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.1" - }, - "bin": { - "cross-env": "src/bin/cross-env.js", - "cross-env-shell": "src/bin/cross-env-shell.js" - }, - "engines": { - "node": ">=10.14", - "npm": ">=6", - "yarn": ">=1" - } - }, - "node_modules/cross-env/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cross-env/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cross-env/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cross-env/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cross-env/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "dependencies": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "node_modules/css-blank-pseudo": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz", - "integrity": "sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w==", - "dev": true, - "dependencies": { - "postcss": "^7.0.5" - }, - "bin": { - "css-blank-pseudo": "cli.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/css-blank-pseudo/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/css-blank-pseudo/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/css-blank-pseudo/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/css-color-names": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-1.0.1.tgz", - "integrity": "sha512-/loXYOch1qU1biStIFsHH8SxTmOseh1IJqFvy8IujXOm1h+QjUdDhkzOrR5HG8K8mlxREj0yfi8ewCHx0eMxzA==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/css-has-pseudo": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz", - "integrity": "sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ==", - "dev": true, - "dependencies": { - "postcss": "^7.0.6", - "postcss-selector-parser": "^5.0.0-rc.4" - }, - "bin": { - "css-has-pseudo": "cli.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/css-has-pseudo/node_modules/cssesc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", - "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/css-has-pseudo/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/css-has-pseudo/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/css-has-pseudo/node_modules/postcss-selector-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", - "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", - "dev": true, - "dependencies": { - "cssesc": "^2.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/css-has-pseudo/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/css-loader": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.5.0.tgz", - "integrity": "sha512-VmuSdQa3K+wJsl39i7X3qGBM5+ZHmtTnv65fqMGI+fzmHoYmszTVvTqC1XN8JwWDViCB1a8wgNim5SV4fb37xg==", - "dev": true, - "dependencies": { - "icss-utils": "^5.1.0", - "postcss": "^8.2.15", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.1.0", - "semver": "^7.3.5" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, - "node_modules/css-loader/node_modules/icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/css-loader/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/css-loader/node_modules/postcss-modules-extract-imports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", - "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/css-loader/node_modules/postcss-modules-local-by-default": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", - "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", - "dev": true, - "dependencies": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/css-loader/node_modules/postcss-modules-scope": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", - "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.4" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/css-loader/node_modules/postcss-modules-values": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", - "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", - "dev": true, - "dependencies": { - "icss-utils": "^5.0.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/css-loader/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/css-loader/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/css-mediaquery": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/css-mediaquery/-/css-mediaquery-0.1.2.tgz", - "integrity": "sha1-aiw3NEkoYYYxxUvTPO3TAdoYvqA=" - }, - "node_modules/css-minimizer-webpack-plugin": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.1.1.tgz", - "integrity": "sha512-KlB8l5uoNcf9F7i5kXnkxoqJGd2BXH4f0+Lj2vSWSmuvMLYO1kNsJ1KHSzeDW8e45/whgSOPcKVT/3JopkT8dg==", - "dev": true, - "dependencies": { - "cssnano": "^5.0.6", - "jest-worker": "^27.0.2", - "p-limit": "^3.0.2", - "postcss": "^8.3.5", - "schema-utils": "^3.1.0", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "clean-css": { - "optional": true - }, - "csso": { - "optional": true - }, - "esbuild": { - "optional": true - } - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/css-declaration-sorter": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.1.3.tgz", - "integrity": "sha512-SvjQjNRZgh4ULK1LDJ2AduPKUKxIqmtU7ZAyi47BTV+M90Qvxr9AB6lKlLbDUfXqI9IQeYA8LbAsCZPpJEV3aA==", - "dev": true, - "dependencies": { - "timsort": "^0.3.0" - }, - "engines": { - "node": ">= 10" - }, - "peerDependencies": { - "postcss": "^8.0.9" - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/cssnano": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.0.8.tgz", - "integrity": "sha512-Lda7geZU0Yu+RZi2SGpjYuQz4HI4/1Y+BhdD0jL7NXAQ5larCzVn+PUGuZbDMYz904AXXCOgO5L1teSvgu7aFg==", - "dev": true, - "dependencies": { - "cssnano-preset-default": "^5.1.4", - "is-resolvable": "^1.1.0", - "lilconfig": "^2.0.3", - "yaml": "^1.10.2" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/cssnano" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/cssnano-preset-default": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.1.4.tgz", - "integrity": "sha512-sPpQNDQBI3R/QsYxQvfB4mXeEcWuw0wGtKtmS5eg8wudyStYMgKOQT39G07EbW1LB56AOYrinRS9f0ig4Y3MhQ==", - "dev": true, - "dependencies": { - "css-declaration-sorter": "^6.0.3", - "cssnano-utils": "^2.0.1", - "postcss-calc": "^8.0.0", - "postcss-colormin": "^5.2.0", - "postcss-convert-values": "^5.0.1", - "postcss-discard-comments": "^5.0.1", - "postcss-discard-duplicates": "^5.0.1", - "postcss-discard-empty": "^5.0.1", - "postcss-discard-overridden": "^5.0.1", - "postcss-merge-longhand": "^5.0.2", - "postcss-merge-rules": "^5.0.2", - "postcss-minify-font-values": "^5.0.1", - "postcss-minify-gradients": "^5.0.2", - "postcss-minify-params": "^5.0.1", - "postcss-minify-selectors": "^5.1.0", - "postcss-normalize-charset": "^5.0.1", - "postcss-normalize-display-values": "^5.0.1", - "postcss-normalize-positions": "^5.0.1", - "postcss-normalize-repeat-style": "^5.0.1", - "postcss-normalize-string": "^5.0.1", - "postcss-normalize-timing-functions": "^5.0.1", - "postcss-normalize-unicode": "^5.0.1", - "postcss-normalize-url": "^5.0.2", - "postcss-normalize-whitespace": "^5.0.1", - "postcss-ordered-values": "^5.0.2", - "postcss-reduce-initial": "^5.0.1", - "postcss-reduce-transforms": "^5.0.1", - "postcss-svgo": "^5.0.2", - "postcss-unique-selectors": "^5.0.1" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/cssnano-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-2.0.1.tgz", - "integrity": "sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-calc": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.0.0.tgz", - "integrity": "sha512-5NglwDrcbiy8XXfPM11F3HeC6hoT9W7GUH/Zi5U/p7u3Irv4rHhdDcIZwG0llHXV4ftsBjpfWMXAnXNl4lnt8g==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.2" - }, - "peerDependencies": { - "postcss": "^8.2.2" - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-colormin": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.0.tgz", - "integrity": "sha512-+HC6GfWU3upe5/mqmxuqYZ9B2Wl4lcoUUNkoaX59nEWV4EtADCMiBqui111Bu8R8IvaZTmqmxrqOAqjbHIwXPw==", - "dev": true, - "dependencies": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0", - "colord": "^2.0.1", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-convert-values": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.1.tgz", - "integrity": "sha512-C3zR1Do2BkKkCgC0g3sF8TS0koF2G+mN8xxayZx3f10cIRmTaAnpgpRQZjNekTZxM2ciSPoh2IWJm0VZx8NoQg==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-discard-comments": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz", - "integrity": "sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-discard-duplicates": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz", - "integrity": "sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-discard-empty": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz", - "integrity": "sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-discard-overridden": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz", - "integrity": "sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-merge-longhand": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.0.2.tgz", - "integrity": "sha512-BMlg9AXSI5G9TBT0Lo/H3PfUy63P84rVz3BjCFE9e9Y9RXQZD3+h3YO1kgTNsNJy7bBc1YQp8DmSnwLIW5VPcw==", - "dev": true, - "dependencies": { - "css-color-names": "^1.0.1", - "postcss-value-parser": "^4.1.0", - "stylehacks": "^5.0.1" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-merge-rules": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.0.2.tgz", - "integrity": "sha512-5K+Md7S3GwBewfB4rjDeol6V/RZ8S+v4B66Zk2gChRqLTCC8yjnHQ601omj9TKftS19OPGqZ/XzoqpzNQQLwbg==", - "dev": true, - "dependencies": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0", - "cssnano-utils": "^2.0.1", - "postcss-selector-parser": "^6.0.5", - "vendors": "^1.0.3" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-minify-font-values": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.0.1.tgz", - "integrity": "sha512-7JS4qIsnqaxk+FXY1E8dHBDmraYFWmuL6cgt0T1SWGRO5bzJf8sUoelwa4P88LEWJZweHevAiDKxHlofuvtIoA==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-minify-gradients": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.2.tgz", - "integrity": "sha512-7Do9JP+wqSD6Prittitt2zDLrfzP9pqKs2EcLX7HJYxsxCOwrrcLt4x/ctQTsiOw+/8HYotAoqNkrzItL19SdQ==", - "dev": true, - "dependencies": { - "colord": "^2.6", - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-minify-params": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.0.1.tgz", - "integrity": "sha512-4RUC4k2A/Q9mGco1Z8ODc7h+A0z7L7X2ypO1B6V8057eVK6mZ6xwz6QN64nHuHLbqbclkX1wyzRnIrdZehTEHw==", - "dev": true, - "dependencies": { - "alphanum-sort": "^1.0.2", - "browserslist": "^4.16.0", - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0", - "uniqs": "^2.0.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-minify-selectors": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.1.0.tgz", - "integrity": "sha512-NzGBXDa7aPsAcijXZeagnJBKBPMYLaJJzB8CQh6ncvyl2sIndLVWfbcDi0SBjRWk5VqEjXvf8tYwzoKf4Z07og==", - "dev": true, - "dependencies": { - "alphanum-sort": "^1.0.2", - "postcss-selector-parser": "^6.0.5" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-normalize-charset": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz", - "integrity": "sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-normalize-display-values": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.1.tgz", - "integrity": "sha512-uupdvWk88kLDXi5HEyI9IaAJTE3/Djbcrqq8YgjvAVuzgVuqIk3SuJWUisT2gaJbZm1H9g5k2w1xXilM3x8DjQ==", - "dev": true, - "dependencies": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-normalize-positions": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.0.1.tgz", - "integrity": "sha512-rvzWAJai5xej9yWqlCb1OWLd9JjW2Ex2BCPzUJrbaXmtKtgfL8dBMOOMTX6TnvQMtjk3ei1Lswcs78qKO1Skrg==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-normalize-repeat-style": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.1.tgz", - "integrity": "sha512-syZ2itq0HTQjj4QtXZOeefomckiV5TaUO6ReIEabCh3wgDs4Mr01pkif0MeVwKyU/LHEkPJnpwFKRxqWA/7O3w==", - "dev": true, - "dependencies": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-normalize-string": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.0.1.tgz", - "integrity": "sha512-Ic8GaQ3jPMVl1OEn2U//2pm93AXUcF3wz+OriskdZ1AOuYV25OdgS7w9Xu2LO5cGyhHCgn8dMXh9bO7vi3i9pA==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-normalize-timing-functions": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.1.tgz", - "integrity": "sha512-cPcBdVN5OsWCNEo5hiXfLUnXfTGtSFiBU9SK8k7ii8UD7OLuznzgNRYkLZow11BkQiiqMcgPyh4ZqXEEUrtQ1Q==", - "dev": true, - "dependencies": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-normalize-unicode": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.1.tgz", - "integrity": "sha512-kAtYD6V3pK0beqrU90gpCQB7g6AOfP/2KIPCVBKJM2EheVsBQmx/Iof+9zR9NFKLAx4Pr9mDhogB27pmn354nA==", - "dev": true, - "dependencies": { - "browserslist": "^4.16.0", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-normalize-url": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.2.tgz", - "integrity": "sha512-k4jLTPUxREQ5bpajFQZpx8bCF2UrlqOTzP9kEqcEnOfwsRshWs2+oAFIHfDQB8GO2PaUaSE0NlTAYtbluZTlHQ==", - "dev": true, - "dependencies": { - "is-absolute-url": "^3.0.3", - "normalize-url": "^6.0.1", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-normalize-whitespace": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.1.tgz", - "integrity": "sha512-iPklmI5SBnRvwceb/XH568yyzK0qRVuAG+a1HFUsFRf11lEJTiQQa03a4RSCQvLKdcpX7XsI1Gen9LuLoqwiqA==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-ordered-values": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.0.2.tgz", - "integrity": "sha512-8AFYDSOYWebJYLyJi3fyjl6CqMEG/UVworjiyK1r573I56kb3e879sCJLGvR3merj+fAdPpVplXKQZv+ey6CgQ==", - "dev": true, - "dependencies": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-reduce-initial": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.0.1.tgz", - "integrity": "sha512-zlCZPKLLTMAqA3ZWH57HlbCjkD55LX9dsRyxlls+wfuRfqCi5mSlZVan0heX5cHr154Dq9AfbH70LyhrSAezJw==", - "dev": true, - "dependencies": { - "browserslist": "^4.16.0", - "caniuse-api": "^3.0.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-reduce-transforms": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.1.tgz", - "integrity": "sha512-a//FjoPeFkRuAguPscTVmRQUODP+f3ke2HqFNgGPwdYnpeC29RZdCBvGRGTsKpMURb/I3p6jdKoBQ2zI+9Q7kA==", - "dev": true, - "dependencies": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-svgo": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.0.2.tgz", - "integrity": "sha512-YzQuFLZu3U3aheizD+B1joQ94vzPfE6BNUcSYuceNxlVnKKsOtdo6hL9/zyC168Q8EwfLSgaDSalsUGa9f2C0A==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.1.0", - "svgo": "^2.3.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-unique-selectors": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.0.1.tgz", - "integrity": "sha512-gwi1NhHV4FMmPn+qwBNuot1sG1t2OmacLQ/AX29lzyggnjd+MnVD5uqQmpXO3J17KGL2WAxQruj1qTd3H0gG/w==", - "dev": true, - "dependencies": { - "alphanum-sort": "^1.0.2", - "postcss-selector-parser": "^6.0.5", - "uniqs": "^2.0.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/stylehacks": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.0.1.tgz", - "integrity": "sha512-Es0rVnHIqbWzveU1b24kbw92HsebBepxfcqe5iix7t9j0PQqhs0IxXVXv0pY2Bxa08CgMkzD6OWql7kbGOuEdA==", - "dev": true, - "dependencies": { - "browserslist": "^4.16.0", - "postcss-selector-parser": "^6.0.4" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/css-prefers-color-scheme": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz", - "integrity": "sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg==", - "dev": true, - "dependencies": { - "postcss": "^7.0.5" - }, - "bin": { - "css-prefers-color-scheme": "cli.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/css-prefers-color-scheme/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/css-prefers-color-scheme/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/css-prefers-color-scheme/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/css-select": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", - "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^5.0.0", - "domhandler": "^4.2.0", - "domutils": "^2.6.0", - "nth-check": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-select-base-adapter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", - "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", - "dev": true - }, - "node_modules/css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dev": true, - "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/css-tree/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/css-what": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", - "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", - "dev": true, - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/cssdb": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-4.4.0.tgz", - "integrity": "sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ==", - "dev": true - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "dev": true, - "dependencies": { - "css-tree": "^1.1.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true - }, - "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, - "dependencies": { - "cssom": "~0.3.6" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - }, - "node_modules/csstype": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.9.tgz", - "integrity": "sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw==" - }, - "node_modules/cwd": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/cwd/-/cwd-0.10.0.tgz", - "integrity": "sha1-FyQAaUBXwioTsM8WFix+S3p/5Wc=", - "dev": true, - "dependencies": { - "find-pkg": "^0.1.2", - "fs-exists-sync": "^0.1.0" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/damerau-levenshtein": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz", - "integrity": "sha512-VvdQIPGdWP0SqFXghj79Wf/5LArmreyMsGLa6FG6iC4t3j7j5s71TrwWmT/4akbDQIqjfACkLZmjXhA7g2oUZw==", - "dev": true - }, - "node_modules/data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", - "dev": true, - "dependencies": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/dateformat": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", - "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decamelize-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", - "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", - "dev": true, - "dependencies": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decamelize-keys/node_modules/map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decimal.js": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", - "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", - "dev": true - }, - "node_modules/decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", - "dev": true - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", - "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", - "dev": true, - "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" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/del/node_modules/array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "dependencies": { - "array-uniq": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del/node_modules/globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "dependencies": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del/node_modules/globby/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/delegate": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", - "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==" - }, - "node_modules/deprecation": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", - "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", - "dev": true - }, - "node_modules/detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/devtools-protocol": { - "version": "0.0.901419", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.901419.tgz", - "integrity": "sha512-4INMPwNm9XRpBukhNbF7OB6fNTTCaI8pzy/fXg0xQzAy5h3zL1P8xT3QazgKqBrb/hAYwIBizqDBZ7GtJE74QQ==", - "dev": true - }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/diff-sequences": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", - "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", - "dev": true, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/direction": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/direction/-/direction-1.0.4.tgz", - "integrity": "sha512-GYqKi1aH7PJXxdhTeZBFrg8vUBeKXi+cNprXsC1kpJcbcVnV9wBsrOu1cQEdG0WeQwlfHiy3XvnKfIrJ2R0NzQ==", - "bin": { - "direction": "cli.js" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/discontinuous-range": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz", - "integrity": "sha1-44Mx8IRLukm5qctxx3FYWqsbxlo=", - "dev": true - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/document.contains": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/document.contains/-/document.contains-1.0.2.tgz", - "integrity": "sha512-YcvYFs15mX8m3AO1QNQy3BlIpSMfNRj3Ujk2BEJxsZG+HZf7/hZ6jr7mDpXrF8q+ff95Vef5yjhiZxm8CGJr6Q==", - "dependencies": { - "define-properties": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/dom-scroll-into-view": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/dom-scroll-into-view/-/dom-scroll-into-view-1.2.1.tgz", - "integrity": "sha1-6PNnMt0ImwIBqI14Fdw/iObWbH4=" - }, - "node_modules/dom-serializer": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", - "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", - "dev": true, - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/domexception": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", - "dev": true, - "dependencies": { - "webidl-conversions": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/domexception/node_modules/webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/domhandler": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz", - "integrity": "sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==", - "dev": true, - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/downshift": { - "version": "6.1.7", - "resolved": "https://registry.npmjs.org/downshift/-/downshift-6.1.7.tgz", - "integrity": "sha512-cVprZg/9Lvj/uhYRxELzlu1aezRcgPWBjTvspiGTVEU64gF5pRdSRKFVLcxqsZC637cLAGMbL40JavEfWnqgNg==", - "dependencies": { - "@babel/runtime": "^7.14.8", - "compute-scroll-into-view": "^1.0.17", - "prop-types": "^15.7.2", - "react-is": "^17.0.2", - "tslib": "^2.3.0" - }, - "peerDependencies": { - "react": ">=16.12.0" - } - }, - "node_modules/duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", - "dev": true - }, - "node_modules/electron-to-chromium": { - "version": "1.3.884", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.884.tgz", - "integrity": "sha512-kOaCAa+biA98PwH5BpCkeUeTL6mCeg8p3Q3OhqzPyqhu/5QUnWAN2wr/3IK8xMQxIV76kfoQpP+Bn/wij/jXrg==" - }, - "node_modules/emittery": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", - "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "dependencies": { - "iconv-lite": "^0.6.2" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz", - "integrity": "sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", - "dev": true, - "bin": { - "envinfo": "dist/cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/enzyme": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/enzyme/-/enzyme-3.11.0.tgz", - "integrity": "sha512-Dw8/Gs4vRjxY6/6i9wU0V+utmQO9kvh9XLnz3LIudviOnVYDEe2ec+0k+NQoMamn1VrjKgCUOWj5jG/5M5M0Qw==", - "dev": true, - "dependencies": { - "array.prototype.flat": "^1.2.3", - "cheerio": "^1.0.0-rc.3", - "enzyme-shallow-equal": "^1.0.1", - "function.prototype.name": "^1.1.2", - "has": "^1.0.3", - "html-element-map": "^1.2.0", - "is-boolean-object": "^1.0.1", - "is-callable": "^1.1.5", - "is-number-object": "^1.0.4", - "is-regex": "^1.0.5", - "is-string": "^1.0.5", - "is-subset": "^0.1.1", - "lodash.escape": "^4.0.1", - "lodash.isequal": "^4.5.0", - "object-inspect": "^1.7.0", - "object-is": "^1.0.2", - "object.assign": "^4.1.0", - "object.entries": "^1.1.1", - "object.values": "^1.1.1", - "raf": "^3.4.1", - "rst-selector-parser": "^2.2.3", - "string.prototype.trim": "^1.2.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/enzyme-shallow-equal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.4.tgz", - "integrity": "sha512-MttIwB8kKxypwHvRynuC3ahyNc+cFbR8mjVIltnmzQ0uKGqmsfO4bfBuLxb0beLNPhjblUEYvEbsg+VSygvF1Q==", - "dev": true, - "dependencies": { - "has": "^1.0.3", - "object-is": "^1.1.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/enzyme-to-json": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/enzyme-to-json/-/enzyme-to-json-3.6.2.tgz", - "integrity": "sha512-Ynm6Z6R6iwQ0g2g1YToz6DWhxVnt8Dy1ijR2zynRKxTyBGA8rCDXU3rs2Qc4OKvUvc2Qoe1bcFK6bnPs20TrTg==", - "dev": true, - "dependencies": { - "@types/cheerio": "^0.22.22", - "lodash": "^4.17.21", - "react-is": "^16.12.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "peerDependencies": { - "enzyme": "^3.4.0" - } - }, - "node_modules/enzyme-to-json/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true - }, - "node_modules/equivalent-key-map": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/equivalent-key-map/-/equivalent-key-map-0.2.2.tgz", - "integrity": "sha512-xvHeyCDbZzkpN4VHQj/n+j2lOwL0VWszG30X4cOrc9Y7Tuo2qCdZK/0AMod23Z5dCtNUbaju6p0rwOhHUk05ew==" - }, - "node_modules/error": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/error/-/error-7.2.1.tgz", - "integrity": "sha512-fo9HBvWnx3NGUKMvMwB/CBCMMrfEJgbDTVDEkPygA3Bdd3lM1OyCd+rbQ8BwnpF6GdVeOLDNmyL4N5Bg80ZvdA==", - "dev": true, - "dependencies": { - "string-template": "~0.2.1" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-abstract": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", - "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", - "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.1", - "is-string": "^1.0.7", - "is-weakref": "^1.0.1", - "object-inspect": "^1.11.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-array-method-boxes-properly": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", - "dev": true - }, - "node_modules/es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", - "dev": true - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", - "dev": true, - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/escodegen/node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/escodegen/node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-prettier": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-7.2.0.tgz", - "integrity": "sha512-rV4Qu0C3nfJKPOAhFujFxB7RMP+URFyQqqOZW9DMRD7ZDTFyjaIlETU3xzHELt++4ugC0+Jm084HQYkkJe+Ivg==", - "dev": true, - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", - "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", - "dev": true, - "dependencies": { - "debug": "^3.2.7", - "resolve": "^1.20.0" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-module-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.1.tgz", - "integrity": "sha512-fjoetBXQZq2tSTWZ9yWVl2KuFrTZZH3V+9iD1V1RfpDgxzJR+mPd/KZmMiA8gbPqdBzpNiEHOuT7IYEWxrH0zQ==", - "dev": true, - "dependencies": { - "debug": "^3.2.7", - "find-up": "^2.1.0", - "pkg-dir": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-module-utils/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-eslint-comments": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.2.0.tgz", - "integrity": "sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.5", - "ignore": "^5.0.5" - }, - "engines": { - "node": ">=6.5.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=4.19.1" - } - }, - "node_modules/eslint-plugin-eslint-comments/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.24.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.24.2.tgz", - "integrity": "sha512-hNVtyhiEtZmpsabL4neEj+6M5DCLgpYyG9nzJY8lZQeQXEn5UPW1DpUdsMHMXsq98dbNm7nt1w9ZMSVpfJdi8Q==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.3", - "array.prototype.flat": "^1.2.4", - "debug": "^2.6.9", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.6.2", - "find-up": "^2.0.0", - "has": "^1.0.3", - "is-core-module": "^2.6.0", - "minimatch": "^3.0.4", - "object.values": "^1.1.4", - "pkg-up": "^2.0.0", - "read-pkg-up": "^3.0.0", - "resolve": "^1.20.0", - "tsconfig-paths": "^3.11.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-import/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-import/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/eslint-plugin-import/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-import/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-import/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-import/node_modules/read-pkg-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", - "dev": true, - "dependencies": { - "find-up": "^2.0.0", - "read-pkg": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-jest": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-24.5.0.tgz", - "integrity": "sha512-Cm+XdX7Nms2UXGRnivHFVcM3ZmlKheHvc9VD78iZLO1XcqB59WbVjrMSiesCbHDlToxWjMJDiJMgc1CzFE13Vg==", - "dev": true, - "dependencies": { - "@typescript-eslint/experimental-utils": "^4.0.1" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@typescript-eslint/eslint-plugin": ">= 4", - "eslint": ">=5" - }, - "peerDependenciesMeta": { - "@typescript-eslint/eslint-plugin": { - "optional": true - } - } - }, - "node_modules/eslint-plugin-jsdoc": { - "version": "36.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-36.1.1.tgz", - "integrity": "sha512-nuLDvH1EJaKx0PCa9oeQIxH6pACIhZd1gkalTUxZbaxxwokjs7TplqY0Q8Ew3CoZaf5aowm0g/Z3JGHCatt+gQ==", - "dev": true, - "dependencies": { - "@es-joy/jsdoccomment": "0.10.8", - "comment-parser": "1.2.4", - "debug": "^4.3.2", - "esquery": "^1.4.0", - "jsdoc-type-pratt-parser": "^1.1.1", - "lodash": "^4.17.21", - "regextras": "^0.8.0", - "semver": "^7.3.5", - "spdx-expression-parse": "^3.0.1" - }, - "engines": { - "node": "^12 || ^14 || ^16" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0" - } - }, - "node_modules/eslint-plugin-jsdoc/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-plugin-jsdoc/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-plugin-jsdoc/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz", - "integrity": "sha512-0rGPJBbwHoGNPU73/QCLP/vveMlM1b1Z9PponxO87jfr6tuH5ligXbDT6nHSSzBC8ovX2Z+BQu7Bk5D/Xgq9zg==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.11.2", - "aria-query": "^4.2.2", - "array-includes": "^3.1.1", - "ast-types-flow": "^0.0.7", - "axe-core": "^4.0.2", - "axobject-query": "^2.2.0", - "damerau-levenshtein": "^1.0.6", - "emoji-regex": "^9.0.0", - "has": "^1.0.3", - "jsx-ast-utils": "^3.1.0", - "language-tags": "^1.0.5" - }, - "engines": { - "node": ">=4.0" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7" - } - }, - "node_modules/eslint-plugin-markdown": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-markdown/-/eslint-plugin-markdown-2.2.1.tgz", - "integrity": "sha512-FgWp4iyYvTFxPwfbxofTvXxgzPsDuSKHQy2S+a8Ve6savbujey+lgrFFbXQA0HPygISpRYWYBjooPzhYSF81iA==", - "dev": true, - "dependencies": { - "mdast-util-from-markdown": "^0.8.5" - }, - "engines": { - "node": "^8.10.0 || ^10.12.0 || >= 12.0.0" - }, - "peerDependencies": { - "eslint": ">=6.0.0" - } - }, - "node_modules/eslint-plugin-prettier": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz", - "integrity": "sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==", - "dev": true, - "dependencies": { - "prettier-linter-helpers": "^1.0.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "peerDependencies": { - "eslint": ">=5.0.0", - "prettier": ">=1.13.0" - }, - "peerDependenciesMeta": { - "eslint-config-prettier": { - "optional": true - } - } - }, - "node_modules/eslint-plugin-react": { - "version": "7.26.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.26.1.tgz", - "integrity": "sha512-Lug0+NOFXeOE+ORZ5pbsh6mSKjBKXDXItUD2sQoT+5Yl0eoT82DqnXeTMfUare4QVCn9QwXbfzO/dBLjLXwVjQ==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.3", - "array.prototype.flatmap": "^1.2.4", - "doctrine": "^2.1.0", - "estraverse": "^5.2.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.0.4", - "object.entries": "^1.1.4", - "object.fromentries": "^2.0.4", - "object.hasown": "^1.0.0", - "object.values": "^1.1.4", - "prop-types": "^15.7.2", - "resolve": "^2.0.0-next.3", - "semver": "^6.3.0", - "string.prototype.matchall": "^4.0.5" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7" - } - }, - "node_modules/eslint-plugin-react-hooks": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.2.0.tgz", - "integrity": "sha512-623WEiZJqxR7VdxFCKLI6d6LLpwJkGPYKODnkH3D7WpOG5KM8yWueBd8TLsNAetEJNF5iJmolaAKO3F8yzyVBQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" - } - }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.3", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", - "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", - "dev": true, - "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-scope/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint/node_modules/@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/eslint/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/eslint/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/eslint/node_modules/globals": { - "version": "13.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", - "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/eslint/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/eslint/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/esm": { - "version": "3.2.25", - "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", - "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "dev": true, - "dependencies": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eventemitter2": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", - "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=", - "dev": true - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/exec-sh": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz", - "integrity": "sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==", - "dev": true - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/execa/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/execa/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/execa/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/execa/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/execa/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/execa/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/execall": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/execall/-/execall-2.0.0.tgz", - "integrity": "sha512-0FU2hZ5Hh6iQnarpRtQurM/aAvp3RIbfvgLHrcqJYzhXyV2KFruhuChf9NC6waAhiUR7FFtlugkI4p7f2Fqlow==", - "dev": true, - "dependencies": { - "clone-regexp": "^2.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "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" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "dev": true, - "dependencies": { - "homedir-polyfill": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expect": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz", - "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==", - "dev": true, - "dependencies": { - "@jest/types": "^26.6.2", - "ansi-styles": "^4.0.0", - "jest-get-type": "^26.3.0", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-regex-util": "^26.0.0" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/expect-puppeteer": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/expect-puppeteer/-/expect-puppeteer-4.4.0.tgz", - "integrity": "sha512-6Ey4Xy2xvmuQu7z7YQtMsaMV0EHJRpVxIDOd5GRrm04/I3nkTKIutELfECsLp6le+b3SSa3cXhPiw6PgqzxYWA==", - "dev": true - }, - "node_modules/expect/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/expect/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/expect/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/expect/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/expect/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/expect/node_modules/jest-message-util": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", - "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "@jest/types": "^26.6.2", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "micromatch": "^4.0.2", - "pretty-format": "^26.6.2", - "slash": "^3.0.0", - "stack-utils": "^2.0.2" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/expect/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extend-shallow/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extend-shallow/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/external-editor/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "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" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - }, - "bin": { - "extract-zip": "cli.js" - }, - "engines": { - "node": ">= 10.17.0" - }, - "optionalDependencies": { - "@types/yauzl": "^2.9.1" - } - }, - "node_modules/extract-zip/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/fast-average-color": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/fast-average-color/-/fast-average-color-4.3.0.tgz", - "integrity": "sha512-k8FXd6+JeXoItmdNqB3hMwFgArryjdYBLuzEM8fRY/oztd/051yhSHU6GUrMOfIQU9dDHyFDcIAkGrQKlYtpDA==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "node_modules/fast-memoize": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz", - "integrity": "sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==" - }, - "node_modules/fastest-levenshtein": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", - "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/faye-websocket": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", - "dev": true, - "dependencies": { - "websocket-driver": ">=0.5.1" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/fb-watchman": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", - "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", - "dev": true, - "dependencies": { - "bser": "2.1.1" - } - }, - "node_modules/fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", - "dev": true, - "dependencies": { - "pend": "~1.2.0" - } - }, - "node_modules/figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/figures/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/file-sync-cmp": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz", - "integrity": "sha1-peeo/7+kk7Q7kju9TKiaU7Y7YSs=", - "dev": true - }, - "node_modules/filename-reserved-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", - "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/filenamify": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz", - "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==", - "dev": true, - "dependencies": { - "filename-reserved-regex": "^2.0.0", - "strip-outer": "^1.0.1", - "trim-repeated": "^1.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "node_modules/find-cache-dir/node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-file-up": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/find-file-up/-/find-file-up-0.1.3.tgz", - "integrity": "sha1-z2gJG8+fMApA2kEbN9pczlovvqA=", - "dev": true, - "dependencies": { - "fs-exists-sync": "^0.1.0", - "resolve-dir": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/find-parent-dir": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.1.tgz", - "integrity": "sha512-o4UcykWV/XN9wm+jMEtWLPlV8RXCZnMhQI6F6OdHeSez7iiJWePw8ijOlskJZMsaQoGR/b7dH6lO02HhaTN7+A==", - "dev": true - }, - "node_modules/find-pkg": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/find-pkg/-/find-pkg-0.1.2.tgz", - "integrity": "sha1-G9wiwG42NlUy4qJIBGhUuXiNpVc=", - "dev": true, - "dependencies": { - "find-file-up": "^0.1.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/find-process": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/find-process/-/find-process-1.4.5.tgz", - "integrity": "sha512-v11rJYYISUWn+s8qZzgGnBvlzRKf3bOtlGFM8H0kw56lGQtOmLuLCzuclA5kehA2j7S5sioOWdI4woT3jDavAw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "commander": "^5.1.0", - "debug": "^4.1.1" - }, - "bin": { - "find-process": "bin/find-process.js" - } - }, - "node_modules/find-process/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/find-process/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/find-process/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/find-process/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/find-process/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-process/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-root": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" - }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/findup-sync": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", - "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", - "dev": true, - "dependencies": { - "glob": "~5.0.0" - }, - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/findup-sync/node_modules/glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "dev": true, - "dependencies": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/fined": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", - "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", - "dev": true, - "dependencies": { - "expand-tilde": "^2.0.2", - "is-plain-object": "^2.0.3", - "object.defaults": "^1.1.0", - "object.pick": "^1.2.0", - "parse-filepath": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/fined/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/flagged-respawn": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", - "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flat-cache/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/flatted": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", - "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", - "dev": true - }, - "node_modules/flatten": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", - "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==", - "deprecated": "flatten is deprecated in favor of utility frameworks such as lodash.", - "dev": true - }, - "node_modules/follow-redirects": { - "version": "1.14.4", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz", - "integrity": "sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true, - "dependencies": { - "for-in": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fraction.js": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.1.tgz", - "integrity": "sha512-MHOhvvxHTfRFpF1geTK9czMIZ6xclsEor2wkIGYYq+PxcQqT7vStJqjhe6S1TenZrMZzo+wlqOufBDVepUEgPg==", - "dev": true, - "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://www.patreon.com/infusion" - } - }, - "node_modules/fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "dependencies": { - "map-cache": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/framer-motion": { - "version": "4.1.17", - "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-4.1.17.tgz", - "integrity": "sha512-thx1wvKzblzbs0XaK2X0G1JuwIdARcoNOW7VVwjO8BUltzXPyONGAElLu6CiCScsOQRI7FIk/45YTFtJw5Yozw==", - "dependencies": { - "framesync": "5.3.0", - "hey-listen": "^1.0.8", - "popmotion": "9.3.6", - "style-value-types": "4.1.4", - "tslib": "^2.1.0" - }, - "optionalDependencies": { - "@emotion/is-prop-valid": "^0.8.2" - }, - "peerDependencies": { - "react": ">=16.8 || ^17.0.0", - "react-dom": ">=16.8 || ^17.0.0" - } - }, - "node_modules/framer-motion/node_modules/@emotion/is-prop-valid": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", - "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", - "optional": true, - "dependencies": { - "@emotion/memoize": "0.7.4" - } - }, - "node_modules/framer-motion/node_modules/@emotion/memoize": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", - "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", - "optional": true - }, - "node_modules/framesync": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/framesync/-/framesync-5.3.0.tgz", - "integrity": "sha512-oc5m68HDO/tuK2blj7ZcdEBRx3p1PjrgHazL8GYEpvULhrtGIFbQArN6cQS2QhW8mitffaB+VYzMjDqBxxQeoA==", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/fs": { - "version": "0.0.1-security", - "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", - "integrity": "sha1-invTcYa23d84E/I4WLV+yq9eQdQ=", - "dev": true - }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true - }, - "node_modules/fs-exists-sync": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", - "integrity": "sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "node_modules/function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "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" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "node_modules/functions-have-names": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.2.tgz", - "integrity": "sha512-bLgc3asbWdwPbx2mNk2S49kmJCuQeu0nfmaOgbs8WIyzzkw3r4htszdIi9Q9EMezDPTYuJx2wvjZ/EwgAthpnA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-own-enumerable-property-symbols": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", - "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", - "dev": true - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-stdin": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", - "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/getobject": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/getobject/-/getobject-1.0.2.tgz", - "integrity": "sha512-2zblDBaFcb3rB4rF77XVnuINOE2h2k/OnqXAiy0IrTxUfV1iFp3la33oAQVY9pCpWU268WFYVt2t71hlMuLsOg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/gettext-parser": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/gettext-parser/-/gettext-parser-1.4.0.tgz", - "integrity": "sha512-sedZYLHlHeBop/gZ1jdg59hlUEcpcZJofLq2JFwJT1zTqAU3l2wFv6IsuwFHGqbiT9DWzMUW4/em2+hspnmMMA==", - "dependencies": { - "encoding": "^0.1.12", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "node_modules/global-cache": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/global-cache/-/global-cache-1.2.1.tgz", - "integrity": "sha512-EOeUaup5DgWKlCMhA9YFqNRIlZwoxt731jCh47WBV9fQqHgXhr3Fa55hfgIUqilIcPsfdNKN7LHjrNY+Km40KA==", - "dependencies": { - "define-properties": "^1.1.2", - "is-symbol": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/global-modules": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz", - "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=", - "dev": true, - "dependencies": { - "global-prefix": "^0.1.4", - "is-windows": "^0.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/global-modules/node_modules/is-windows": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", - "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/global-prefix": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", - "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=", - "dev": true, - "dependencies": { - "homedir-polyfill": "^1.0.0", - "ini": "^1.3.4", - "is-windows": "^0.2.0", - "which": "^1.2.12" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/global-prefix/node_modules/is-windows": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", - "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globjoin": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", - "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=", - "dev": true - }, - "node_modules/gonzales-pe": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.3.0.tgz", - "integrity": "sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "gonzales": "bin/gonzales.js" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/good-listener": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", - "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=", - "dependencies": { - "delegate": "^3.1.2" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", - "dev": true - }, - "node_modules/gradient-parser": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/gradient-parser/-/gradient-parser-0.1.5.tgz", - "integrity": "sha1-DH4heVWeXOfY1x9EI6+TcQCyJIw=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/growly": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", - "dev": true, - "optional": true - }, - "node_modules/grunt": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.4.1.tgz", - "integrity": "sha512-ZXIYXTsAVrA7sM+jZxjQdrBOAg7DyMUplOMhTaspMRExei+fD0BTwdWXnn0W5SXqhb/Q/nlkzXclSi3IH55PIA==", - "dev": true, - "dependencies": { - "dateformat": "~3.0.3", - "eventemitter2": "~0.4.13", - "exit": "~0.1.2", - "findup-sync": "~0.3.0", - "glob": "~7.1.6", - "grunt-cli": "~1.4.2", - "grunt-known-options": "~2.0.0", - "grunt-legacy-log": "~3.0.0", - "grunt-legacy-util": "~2.0.1", - "iconv-lite": "~0.4.13", - "js-yaml": "~3.14.0", - "minimatch": "~3.0.4", - "mkdirp": "~1.0.4", - "nopt": "~3.0.6", - "rimraf": "~3.0.2" - }, - "bin": { - "grunt": "bin/grunt" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/grunt-cli": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.4.3.tgz", - "integrity": "sha512-9Dtx/AhVeB4LYzsViCjUQkd0Kw0McN2gYpdmGYKtE2a5Yt7v1Q+HYZVWhqXc/kGnxlMtqKDxSwotiGeFmkrCoQ==", - "dev": true, - "dependencies": { - "grunt-known-options": "~2.0.0", - "interpret": "~1.1.0", - "liftup": "~3.0.1", - "nopt": "~4.0.1", - "v8flags": "~3.2.0" - }, - "bin": { - "grunt": "bin/grunt" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/grunt-cli/node_modules/nopt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", - "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", - "dev": true, - "dependencies": { - "abbrev": "1", - "osenv": "^0.1.4" - }, - "bin": { - "nopt": "bin/nopt.js" - } - }, - "node_modules/grunt-contrib-clean": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/grunt-contrib-clean/-/grunt-contrib-clean-2.0.0.tgz", - "integrity": "sha512-g5ZD3ORk6gMa5ugZosLDQl3dZO7cI3R14U75hTM+dVLVxdMNJCPVmwf9OUt4v4eWgpKKWWoVK9DZc1amJp4nQw==", - "dev": true, - "dependencies": { - "async": "^2.6.1", - "rimraf": "^2.6.2" - }, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "grunt": ">=0.4.5" - } - }, - "node_modules/grunt-contrib-copy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/grunt-contrib-copy/-/grunt-contrib-copy-1.0.0.tgz", - "integrity": "sha1-cGDGWB6QS4qw0A8HbgqPbj58NXM=", - "dev": true, - "dependencies": { - "chalk": "^1.1.1", - "file-sync-cmp": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/grunt-contrib-copy/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/grunt-contrib-copy/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/grunt-contrib-copy/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/grunt-contrib-copy/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/grunt-contrib-copy/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/grunt-contrib-copy/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/grunt-known-options": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-2.0.0.tgz", - "integrity": "sha512-GD7cTz0I4SAede1/+pAbmJRG44zFLPipVtdL9o3vqx9IEyb7b4/Y3s7r6ofI3CchR5GvYJ+8buCSioDv5dQLiA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/grunt-legacy-log": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-3.0.0.tgz", - "integrity": "sha512-GHZQzZmhyq0u3hr7aHW4qUH0xDzwp2YXldLPZTCjlOeGscAOWWPftZG3XioW8MasGp+OBRIu39LFx14SLjXRcA==", - "dev": true, - "dependencies": { - "colors": "~1.1.2", - "grunt-legacy-log-utils": "~2.1.0", - "hooker": "~0.2.3", - "lodash": "~4.17.19" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/grunt-legacy-log-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.1.0.tgz", - "integrity": "sha512-lwquaPXJtKQk0rUM1IQAop5noEpwFqOXasVoedLeNzaibf/OPWjKYvvdqnEHNmU+0T0CaReAXIbGo747ZD+Aaw==", - "dev": true, - "dependencies": { - "chalk": "~4.1.0", - "lodash": "~4.17.19" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/grunt-legacy-log-utils/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/grunt-legacy-log-utils/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/grunt-legacy-log-utils/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/grunt-legacy-log-utils/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/grunt-legacy-log-utils/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/grunt-legacy-log-utils/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/grunt-legacy-util": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-2.0.1.tgz", - "integrity": "sha512-2bQiD4fzXqX8rhNdXkAywCadeqiPiay0oQny77wA2F3WF4grPJXCvAcyoWUJV+po/b15glGkxuSiQCK299UC2w==", - "dev": true, - "dependencies": { - "async": "~3.2.0", - "exit": "~0.1.2", - "getobject": "~1.0.0", - "hooker": "~0.2.3", - "lodash": "~4.17.21", - "underscore.string": "~3.3.5", - "which": "~2.0.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/grunt-legacy-util/node_modules/async": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.2.tgz", - "integrity": "sha512-H0E+qZaDEfx/FY4t7iLRv1W2fFI6+pyCeTw1uN20AQPiwqwM6ojPxHxdLv4z8hi2DtnW9BOckSspLucW7pIE5g==", - "dev": true - }, - "node_modules/grunt-legacy-util/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/grunt-shell": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/grunt-shell/-/grunt-shell-3.0.1.tgz", - "integrity": "sha512-C8eR4frw/NmIFIwSvzSLS4wOQBUzC+z6QhrKPzwt/tlaIqlzH35i/O2MggVOBj2Sh1tbaAqpASWxGiGsi4JMIQ==", - "dev": true, - "dependencies": { - "chalk": "^2.4.1", - "npm-run-path": "^2.0.0", - "strip-ansi": "^5.0.0" - }, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "grunt": ">=1" - } - }, - "node_modules/grunt-shell/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/grunt-shell/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/grunt-wp-deploy": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/grunt-wp-deploy/-/grunt-wp-deploy-2.1.2.tgz", - "integrity": "sha512-n+x1WBCmLHF5P1aDY29CoF8jdLHnRKX4VDIZhiM0sbZ58vSBTFedajcZrP1CEqJ7suiv0/o/c6xmR1BiPEzaQg==", - "dev": true, - "dependencies": { - "inquirer": "^6.0.0" - }, - "engines": { - "node": ">= 0.8.0" - }, - "peerDependencies": { - "grunt": ">=0.4.1" - } - }, - "node_modules/grunt/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/grunt/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/gzip-size": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", - "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", - "dev": true, - "dependencies": { - "duplexer": "^0.1.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-ansi/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "engines": { - "node": ">=4" - } - }, - "node_modules/has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/hey-listen": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", - "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==" - }, - "node_modules/highlight-words-core": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/highlight-words-core/-/highlight-words-core-1.2.2.tgz", - "integrity": "sha512-BXUKIkUuh6cmmxzi5OIbUJxrG8OAk2MqoL1DtO3Wo9D2faJg2ph5ntyuQeLqaHJmzER6H5tllCDA9ZnNe9BVGg==" - }, - "node_modules/hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "dependencies": { - "react-is": "^16.7.0" - } - }, - "node_modules/hoist-non-react-statics/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "node_modules/homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "dev": true, - "dependencies": { - "parse-passwd": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/hooker": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", - "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/hpq": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/hpq/-/hpq-1.3.0.tgz", - "integrity": "sha512-fvYTvdCFOWQupGxqkahrkA+ERBuMdzkxwtUdKrxR6rmMd4Pfl+iZ1QiQYoaZ0B/v0y59MOMnz3XFUWbT50/NWA==" - }, - "node_modules/html-element-map": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/html-element-map/-/html-element-map-1.3.1.tgz", - "integrity": "sha512-6XMlxrAFX4UEEGxctfFnmrFaaZFNf9i5fNuV5wZ3WWQ4FVaNP1aX1LkX9j2mfEx1NpjeE/rL3nmgEn23GdFmrg==", - "dev": true, - "dependencies": { - "array.prototype.filter": "^1.0.0", - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", - "dev": true, - "dependencies": { - "whatwg-encoding": "^1.0.5" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "node_modules/html-tags": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz", - "integrity": "sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - } - }, - "node_modules/http-parser-js": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", - "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==", - "dev": true - }, - "node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", - "dev": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-fresh/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "engines": { - "node": ">=4" - } - }, - "node_modules/import-lazy": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", - "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/import-local": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.3.tgz", - "integrity": "sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA==", - "dev": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/import-local/node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", - "dev": true - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "node_modules/inquirer": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", - "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", - "dev": true, - "dependencies": { - "ansi-escapes": "^3.2.0", - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^2.0.0", - "lodash": "^4.17.12", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^6.4.0", - "string-width": "^2.1.0", - "strip-ansi": "^5.1.0", - "through": "^2.3.6" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/inquirer/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/inquirer/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "dependencies": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/interpret": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", - "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", - "dev": true - }, - "node_modules/irregular-plurals": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-3.3.0.tgz", - "integrity": "sha512-MVBLKUTangM3EfRPFROhmWQQKRDsrgI83J8GS3jXy+OwYqiR2/aoWndYQ5416jLE3uaGgLH7ncme3X9y09gZ3g==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", - "dev": true, - "dependencies": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-absolute-url": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", - "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-alphabetical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", - "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-alphanumerical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", - "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", - "dev": true, - "dependencies": { - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "dependencies": { - "ci-info": "^2.0.0" - }, - "bin": { - "is-ci": "bin.js" - } - }, - "node_modules/is-ci/node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "node_modules/is-core-module": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", - "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-decimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", - "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-descriptor/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, - "optional": true, - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-hexadecimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", - "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", - "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", - "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-path-in-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", - "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", - "dev": true, - "dependencies": { - "is-path-inside": "^2.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-path-inside": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", - "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", - "dev": true, - "dependencies": { - "path-is-inside": "^1.0.2" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, - "node_modules/is-promise": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", - "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==" - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-relative": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", - "dev": true, - "dependencies": { - "is-unc-path": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", - "dev": true - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", - "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-subset": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz", - "integrity": "sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=", - "dev": true - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-touch-device": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-touch-device/-/is-touch-device-1.0.1.tgz", - "integrity": "sha512-LAYzo9kMT1b2p19L/1ATGt2XcSilnzNlyvq6c0pbPRVisLbAPpLqr53tIJS00kvrTkj0HtR8U7+u8X0yR8lPSw==" - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "node_modules/is-unc-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", - "dev": true, - "dependencies": { - "unc-path-regex": "^0.1.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "node_modules/is-weakref": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", - "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", - "dependencies": { - "call-bind": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "optional": true, - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz", - "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-source-maps/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/istanbul-reports": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.5.tgz", - "integrity": "sha512-5+19PlhnGabNWB7kOFnuxT8H3T/iIyQzIbQMxXsURmmvKg86P2sbkrGOT77VnHw0Qr0gc2XzRaRfMZYYbSQCJQ==", - "dev": true, - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.3.1.tgz", - "integrity": "sha512-U2AX0AgQGd5EzMsiZpYt8HyZ+nSVIh5ujQ9CPp9EQZJMjXIiSZpJNweZl0swatKRoqHWgGKM3zaSwm4Zaz87ng==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/core": "^27.3.1", - "import-local": "^3.0.2", - "jest-cli": "^27.3.1" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-changed-files": { - "version": "27.3.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.3.0.tgz", - "integrity": "sha512-9DJs9garMHv4RhylUMZgbdCJ3+jHSkpL9aaVKp13xtXAD80qLTLrqcDZL1PHA9dYA0bCI86Nv2BhkLpLhrBcPg==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "execa": "^5.0.0", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-changed-files/node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "peer": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-changed-files/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "peer": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-changed-files/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-changed-files/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-changed-files/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-changed-files/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true - }, - "node_modules/jest-changed-files/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-changed-files/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-circus": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-26.6.3.tgz", - "integrity": "sha512-ACrpWZGcQMpbv13XbzRzpytEJlilP/Su0JtNCi5r/xLpOUhnaIJr8leYYpLEMgPFURZISEHrnnpmB54Q/UziPw==", - "dev": true, - "dependencies": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/babel__traverse": "^7.0.4", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "expect": "^26.6.2", - "is-generator-fn": "^2.0.0", - "jest-each": "^26.6.2", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-runner": "^26.6.3", - "jest-runtime": "^26.6.3", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "pretty-format": "^26.6.2", - "stack-utils": "^2.0.2", - "throat": "^5.0.0" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-circus/node_modules/@jest/console": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz", - "integrity": "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==", - "dev": true, - "dependencies": { - "@jest/types": "^26.6.2", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^26.6.2", - "jest-util": "^26.6.2", - "slash": "^3.0.0" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-circus/node_modules/@jest/globals": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz", - "integrity": "sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==", - "dev": true, - "dependencies": { - "@jest/environment": "^26.6.2", - "@jest/types": "^26.6.2", - "expect": "^26.6.2" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-circus/node_modules/@jest/source-map": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz", - "integrity": "sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0", - "graceful-fs": "^4.2.4", - "source-map": "^0.6.0" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-circus/node_modules/@jest/test-result": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz", - "integrity": "sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==", - "dev": true, - "dependencies": { - "@jest/console": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-circus/node_modules/@jest/test-sequencer": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz", - "integrity": "sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==", - "dev": true, - "dependencies": { - "@jest/test-result": "^26.6.2", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^26.6.2", - "jest-runner": "^26.6.3", - "jest-runtime": "^26.6.3" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-circus/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-circus/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-circus/node_modules/cjs-module-lexer": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz", - "integrity": "sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==", - "dev": true - }, - "node_modules/jest-circus/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "node_modules/jest-circus/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-circus/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-circus/node_modules/emittery": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz", - "integrity": "sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/jest-circus/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/jest-circus/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-circus/node_modules/jest-config": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz", - "integrity": "sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==", - "dev": true, - "dependencies": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^26.6.3", - "@jest/types": "^26.6.2", - "babel-jest": "^26.6.3", - "chalk": "^4.0.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.1", - "graceful-fs": "^4.2.4", - "jest-environment-jsdom": "^26.6.2", - "jest-environment-node": "^26.6.2", - "jest-get-type": "^26.3.0", - "jest-jasmine2": "^26.6.3", - "jest-regex-util": "^26.0.0", - "jest-resolve": "^26.6.2", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "micromatch": "^4.0.2", - "pretty-format": "^26.6.2" - }, - "engines": { - "node": ">= 10.14.2" - }, - "peerDependencies": { - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "ts-node": { - "optional": true - } - } - }, - "node_modules/jest-circus/node_modules/jest-docblock": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz", - "integrity": "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==", - "dev": true, - "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-circus/node_modules/jest-environment-jsdom": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz", - "integrity": "sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==", - "dev": true, - "dependencies": { - "@jest/environment": "^26.6.2", - "@jest/fake-timers": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "jest-mock": "^26.6.2", - "jest-util": "^26.6.2", - "jsdom": "^16.4.0" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-circus/node_modules/jest-jasmine2": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz", - "integrity": "sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==", - "dev": true, - "dependencies": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^26.6.2", - "@jest/source-map": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^26.6.2", - "is-generator-fn": "^2.0.0", - "jest-each": "^26.6.2", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-runtime": "^26.6.3", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "pretty-format": "^26.6.2", - "throat": "^5.0.0" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-circus/node_modules/jest-leak-detector": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz", - "integrity": "sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==", - "dev": true, - "dependencies": { - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-circus/node_modules/jest-message-util": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", - "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "@jest/types": "^26.6.2", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "micromatch": "^4.0.2", - "pretty-format": "^26.6.2", - "slash": "^3.0.0", - "stack-utils": "^2.0.2" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-circus/node_modules/jest-resolve": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", - "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", - "dev": true, - "dependencies": { - "@jest/types": "^26.6.2", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^26.6.2", - "read-pkg-up": "^7.0.1", - "resolve": "^1.18.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-circus/node_modules/jest-runner": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz", - "integrity": "sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==", - "dev": true, - "dependencies": { - "@jest/console": "^26.6.2", - "@jest/environment": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.7.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-config": "^26.6.3", - "jest-docblock": "^26.0.0", - "jest-haste-map": "^26.6.2", - "jest-leak-detector": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-resolve": "^26.6.2", - "jest-runtime": "^26.6.3", - "jest-util": "^26.6.2", - "jest-worker": "^26.6.2", - "source-map-support": "^0.5.6", - "throat": "^5.0.0" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-circus/node_modules/jest-runtime": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz", - "integrity": "sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==", - "dev": true, - "dependencies": { - "@jest/console": "^26.6.2", - "@jest/environment": "^26.6.2", - "@jest/fake-timers": "^26.6.2", - "@jest/globals": "^26.6.2", - "@jest/source-map": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/yargs": "^15.0.0", - "chalk": "^4.0.0", - "cjs-module-lexer": "^0.6.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.4", - "jest-config": "^26.6.3", - "jest-haste-map": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-mock": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-resolve": "^26.6.2", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "slash": "^3.0.0", - "strip-bom": "^4.0.0", - "yargs": "^15.4.1" - }, - "bin": { - "jest-runtime": "bin/jest-runtime.js" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-circus/node_modules/jest-snapshot": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz", - "integrity": "sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==", - "dev": true, - "dependencies": { - "@babel/types": "^7.0.0", - "@jest/types": "^26.6.2", - "@types/babel__traverse": "^7.0.4", - "@types/prettier": "^2.0.0", - "chalk": "^4.0.0", - "expect": "^26.6.2", - "graceful-fs": "^4.2.4", - "jest-diff": "^26.6.2", - "jest-get-type": "^26.3.0", - "jest-haste-map": "^26.6.2", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-resolve": "^26.6.2", - "natural-compare": "^1.4.0", - "pretty-format": "^26.6.2", - "semver": "^7.3.2" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-circus/node_modules/jest-validate": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", - "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", - "dev": true, - "dependencies": { - "@jest/types": "^26.6.2", - "camelcase": "^6.0.0", - "chalk": "^4.0.0", - "jest-get-type": "^26.3.0", - "leven": "^3.1.0", - "pretty-format": "^26.6.2" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-circus/node_modules/jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-circus/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest-circus/node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-circus/node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-circus/node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-circus/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest-circus/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest-circus/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-circus/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-circus/node_modules/throat": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", - "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", - "dev": true - }, - "node_modules/jest-circus/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-circus/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-circus/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "node_modules/jest-circus/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/jest-circus/node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "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" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-cli": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.3.1.tgz", - "integrity": "sha512-WHnCqpfK+6EvT62me6WVs8NhtbjAS4/6vZJnk7/2+oOr50cwAzG4Wxt6RXX0hu6m1169ZGMlhYYUNeKBXCph/Q==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/core": "^27.3.1", - "@jest/test-result": "^27.3.1", - "@jest/types": "^27.2.5", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "import-local": "^3.0.2", - "jest-config": "^27.3.1", - "jest-util": "^27.3.1", - "jest-validate": "^27.3.1", - "prompts": "^2.0.1", - "yargs": "^16.2.0" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-cli/node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "peer": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-cli/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "peer": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-cli/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-cli/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-cli/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-cli/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true - }, - "node_modules/jest-cli/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-cli/node_modules/jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-cli/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-config": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.3.1.tgz", - "integrity": "sha512-KY8xOIbIACZ/vdYCKSopL44I0xboxC751IX+DXL2+Wx6DKNycyEfV3rryC3BPm5Uq/BBqDoMrKuqLEUNJmMKKg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^27.3.1", - "@jest/types": "^27.2.5", - "babel-jest": "^27.3.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.1", - "graceful-fs": "^4.2.4", - "jest-circus": "^27.3.1", - "jest-environment-jsdom": "^27.3.1", - "jest-environment-node": "^27.3.1", - "jest-get-type": "^27.3.1", - "jest-jasmine2": "^27.3.1", - "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.3.1", - "jest-runner": "^27.3.1", - "jest-util": "^27.3.1", - "jest-validate": "^27.3.1", - "micromatch": "^4.0.4", - "pretty-format": "^27.3.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "ts-node": { - "optional": true - } - } - }, - "node_modules/jest-config/node_modules/@jest/environment": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.3.1.tgz", - "integrity": "sha512-BCKCj4mOVLme6Tanoyc9k0ultp3pnmuyHw73UHRPeeZxirsU/7E3HC4le/VDb/SMzE1JcPnto+XBKFOcoiJzVw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/fake-timers": "^27.3.1", - "@jest/types": "^27.2.5", - "@types/node": "*", - "jest-mock": "^27.3.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-config/node_modules/@jest/fake-timers": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.3.1.tgz", - "integrity": "sha512-M3ZFgwwlqJtWZ+QkBG5NmC23A9w+A6ZxNsO5nJxJsKYt4yguBd3i8TpjQz5NfCX91nEve1KqD9RA2Q+Q1uWqoA==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@sinonjs/fake-timers": "^8.0.1", - "@types/node": "*", - "jest-message-util": "^27.3.1", - "jest-mock": "^27.3.0", - "jest-util": "^27.3.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-config/node_modules/@jest/transform": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.3.1.tgz", - "integrity": "sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.2.5", - "babel-plugin-istanbul": "^6.0.0", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", - "jest-regex-util": "^27.0.6", - "jest-util": "^27.3.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.1", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-config/node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "peer": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-config/node_modules/@sinonjs/fake-timers": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz", - "integrity": "sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==", - "dev": true, - "peer": true, - "dependencies": { - "@sinonjs/commons": "^1.7.0" - } - }, - "node_modules/jest-config/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "peer": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-config/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-config/node_modules/babel-jest": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.3.1.tgz", - "integrity": "sha512-SjIF8hh/ir0peae2D6S6ZKRhUy7q/DnpH7k/V6fT4Bgs/LXXUztOpX4G2tCgq8mLo5HA9mN6NmlFMeYtKmIsTQ==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/transform": "^27.3.1", - "@jest/types": "^27.2.5", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.0.0", - "babel-preset-jest": "^27.2.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "slash": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "node_modules/jest-config/node_modules/babel-plugin-jest-hoist": { - "version": "27.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.2.0.tgz", - "integrity": "sha512-TOux9khNKdi64mW+0OIhcmbAn75tTlzKhxmiNXevQaPbrBYK7YKjP1jl6NHTJ6XR5UgUrJbCnWlKVnJn29dfjw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-config/node_modules/babel-preset-jest": { - "version": "27.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.2.0.tgz", - "integrity": "sha512-z7MgQ3peBwN5L5aCqBKnF6iqdlvZvFUQynEhu0J+X9nHLU72jO3iY331lcYrg+AssJ8q7xsv5/3AICzVmJ/wvg==", - "dev": true, - "peer": true, - "dependencies": { - "babel-plugin-jest-hoist": "^27.2.0", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/jest-config/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-config/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-config/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true - }, - "node_modules/jest-config/node_modules/diff-sequences": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", - "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==", - "dev": true, - "peer": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-config/node_modules/expect": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.3.1.tgz", - "integrity": "sha512-MrNXV2sL9iDRebWPGOGFdPQRl2eDQNu/uhxIMShjjx74T6kC6jFIkmQ6OqXDtevjGUkyB2IT56RzDBqXf/QPCg==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "ansi-styles": "^5.0.0", - "jest-get-type": "^27.3.1", - "jest-matcher-utils": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-regex-util": "^27.0.6" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-config/node_modules/expect/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-config/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-config/node_modules/jest-circus": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.3.1.tgz", - "integrity": "sha512-v1dsM9II6gvXokgqq6Yh2jHCpfg7ZqV4jWY66u7npz24JnhP3NHxI0sKT7+ZMQ7IrOWHYAaeEllOySbDbWsiXw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/environment": "^27.3.1", - "@jest/test-result": "^27.3.1", - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "expect": "^27.3.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.3.1", - "jest-matcher-utils": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-runtime": "^27.3.1", - "jest-snapshot": "^27.3.1", - "jest-util": "^27.3.1", - "pretty-format": "^27.3.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-config/node_modules/jest-diff": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.3.1.tgz", - "integrity": "sha512-PCeuAH4AWUo2O5+ksW4pL9v5xJAcIKPUPfIhZBcG1RKv/0+dvaWTQK1Nrau8d67dp65fOqbeMdoil+6PedyEPQ==", - "dev": true, - "peer": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^27.0.6", - "jest-get-type": "^27.3.1", - "pretty-format": "^27.3.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-config/node_modules/jest-each": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.3.1.tgz", - "integrity": "sha512-E4SwfzKJWYcvOYCjOxhZcxwL+AY0uFMvdCOwvzgutJiaiodFjkxQQDxHm8FQBeTqDnSmKsQWn7ldMRzTn2zJaQ==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "chalk": "^4.0.0", - "jest-get-type": "^27.3.1", - "jest-util": "^27.3.1", - "pretty-format": "^27.3.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-config/node_modules/jest-environment-node": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.3.1.tgz", - "integrity": "sha512-T89F/FgkE8waqrTSA7/ydMkcc52uYPgZZ6q8OaZgyiZkJb5QNNCF6oPZjH9IfPFfcc9uBWh1574N0kY0pSvTXw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/environment": "^27.3.1", - "@jest/fake-timers": "^27.3.1", - "@jest/types": "^27.2.5", - "@types/node": "*", - "jest-mock": "^27.3.0", - "jest-util": "^27.3.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-config/node_modules/jest-get-type": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.3.1.tgz", - "integrity": "sha512-+Ilqi8hgHSAdhlQ3s12CAVNd8H96ZkQBfYoXmArzZnOfAtVAJEiPDBirjByEblvG/4LPJmkL+nBqPO3A1YJAEg==", - "dev": true, - "peer": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-config/node_modules/jest-haste-map": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", - "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.0.6", - "jest-serializer": "^27.0.6", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-config/node_modules/jest-matcher-utils": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.3.1.tgz", - "integrity": "sha512-hX8N7zXS4k+8bC1Aj0OWpGb7D3gIXxYvPNK1inP5xvE4ztbz3rc4AkI6jGVaerepBnfWB17FL5lWFJT3s7qo8w==", - "dev": true, - "peer": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^27.3.1", - "jest-get-type": "^27.3.1", - "pretty-format": "^27.3.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-config/node_modules/jest-mock": { - "version": "27.3.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.3.0.tgz", - "integrity": "sha512-ziZiLk0elZOQjD08bLkegBzv5hCABu/c8Ytx45nJKkysQwGaonvmTxwjLqEA4qGdasq9o2I8/HtdGMNnVsMTGw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/node": "*" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-config/node_modules/jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", - "dev": true, - "peer": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-config/node_modules/jest-serializer": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", - "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", - "dev": true, - "peer": true, - "dependencies": { - "@types/node": "*", - "graceful-fs": "^4.2.4" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-config/node_modules/jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-config/node_modules/pretty-format": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz", - "integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-config/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-config/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest-config/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-dev-server": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/jest-dev-server/-/jest-dev-server-5.0.3.tgz", - "integrity": "sha512-aJR3a5KdY18Lsz+VbREKwx2HM3iukiui+J9rlv9o6iYTwZCSsJazSTStcD9K1q0AIF3oA+FqLOKDyo/sc7+fJw==", - "dev": true, - "dependencies": { - "chalk": "^4.1.1", - "cwd": "^0.10.0", - "find-process": "^1.4.4", - "prompts": "^2.4.1", - "spawnd": "^5.0.0", - "tree-kill": "^1.2.2", - "wait-on": "^5.3.0" - } - }, - "node_modules/jest-dev-server/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-dev-server/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-dev-server/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-dev-server/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-dev-server/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-dev-server/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-diff": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", - "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^26.6.2", - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-diff/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-diff/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-diff/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-diff/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-diff/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-diff/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-docblock": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.0.6.tgz", - "integrity": "sha512-Fid6dPcjwepTFraz0YxIMCi7dejjJ/KL9FBjPYhBp4Sv1Y9PdhImlKZqYU555BlN4TQKaTc+F2Av1z+anVyGkA==", - "dev": true, - "peer": true, - "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-each": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-26.6.2.tgz", - "integrity": "sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==", - "dev": true, - "dependencies": { - "@jest/types": "^26.6.2", - "chalk": "^4.0.0", - "jest-get-type": "^26.3.0", - "jest-util": "^26.6.2", - "pretty-format": "^26.6.2" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-each/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-each/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-each/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-each/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-each/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-each/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-environment-jsdom": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.3.1.tgz", - "integrity": "sha512-3MOy8qMzIkQlfb3W1TfrD7uZHj+xx8Olix5vMENkj5djPmRqndMaXtpnaZkxmxM+Qc3lo+yVzJjzuXbCcZjAlg==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/environment": "^27.3.1", - "@jest/fake-timers": "^27.3.1", - "@jest/types": "^27.2.5", - "@types/node": "*", - "jest-mock": "^27.3.0", - "jest-util": "^27.3.1", - "jsdom": "^16.6.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-environment-jsdom/node_modules/@jest/environment": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.3.1.tgz", - "integrity": "sha512-BCKCj4mOVLme6Tanoyc9k0ultp3pnmuyHw73UHRPeeZxirsU/7E3HC4le/VDb/SMzE1JcPnto+XBKFOcoiJzVw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/fake-timers": "^27.3.1", - "@jest/types": "^27.2.5", - "@types/node": "*", - "jest-mock": "^27.3.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-environment-jsdom/node_modules/@jest/fake-timers": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.3.1.tgz", - "integrity": "sha512-M3ZFgwwlqJtWZ+QkBG5NmC23A9w+A6ZxNsO5nJxJsKYt4yguBd3i8TpjQz5NfCX91nEve1KqD9RA2Q+Q1uWqoA==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@sinonjs/fake-timers": "^8.0.1", - "@types/node": "*", - "jest-message-util": "^27.3.1", - "jest-mock": "^27.3.0", - "jest-util": "^27.3.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-environment-jsdom/node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "peer": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-environment-jsdom/node_modules/@sinonjs/fake-timers": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz", - "integrity": "sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==", - "dev": true, - "peer": true, - "dependencies": { - "@sinonjs/commons": "^1.7.0" - } - }, - "node_modules/jest-environment-jsdom/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "peer": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-environment-jsdom/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-environment-jsdom/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-environment-jsdom/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-environment-jsdom/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true - }, - "node_modules/jest-environment-jsdom/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-environment-jsdom/node_modules/jest-mock": { - "version": "27.3.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.3.0.tgz", - "integrity": "sha512-ziZiLk0elZOQjD08bLkegBzv5hCABu/c8Ytx45nJKkysQwGaonvmTxwjLqEA4qGdasq9o2I8/HtdGMNnVsMTGw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/node": "*" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-environment-jsdom/node_modules/jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-environment-jsdom/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-environment-node": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.6.2.tgz", - "integrity": "sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==", - "dev": true, - "dependencies": { - "@jest/environment": "^26.6.2", - "@jest/fake-timers": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "jest-mock": "^26.6.2", - "jest-util": "^26.6.2" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-get-type": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", - "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", - "dev": true, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-haste-map": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz", - "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==", - "dev": true, - "dependencies": { - "@jest/types": "^26.6.2", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^26.0.0", - "jest-serializer": "^26.6.2", - "jest-util": "^26.6.2", - "jest-worker": "^26.6.2", - "micromatch": "^4.0.2", - "sane": "^4.0.3", - "walker": "^1.0.7" - }, - "engines": { - "node": ">= 10.14.2" - }, - "optionalDependencies": { - "fsevents": "^2.1.2" - } - }, - "node_modules/jest-haste-map/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-haste-map/node_modules/jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-haste-map/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-jasmine2": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.3.1.tgz", - "integrity": "sha512-WK11ZUetDQaC09w4/j7o4FZDUIp+4iYWH/Lik34Pv7ukL+DuXFGdnmmi7dT58J2ZYKFB5r13GyE0z3NPeyJmsg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^27.3.1", - "@jest/source-map": "^27.0.6", - "@jest/test-result": "^27.3.1", - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^27.3.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.3.1", - "jest-matcher-utils": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-runtime": "^27.3.1", - "jest-snapshot": "^27.3.1", - "jest-util": "^27.3.1", - "pretty-format": "^27.3.1", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/@jest/environment": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.3.1.tgz", - "integrity": "sha512-BCKCj4mOVLme6Tanoyc9k0ultp3pnmuyHw73UHRPeeZxirsU/7E3HC4le/VDb/SMzE1JcPnto+XBKFOcoiJzVw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/fake-timers": "^27.3.1", - "@jest/types": "^27.2.5", - "@types/node": "*", - "jest-mock": "^27.3.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/@jest/fake-timers": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.3.1.tgz", - "integrity": "sha512-M3ZFgwwlqJtWZ+QkBG5NmC23A9w+A6ZxNsO5nJxJsKYt4yguBd3i8TpjQz5NfCX91nEve1KqD9RA2Q+Q1uWqoA==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@sinonjs/fake-timers": "^8.0.1", - "@types/node": "*", - "jest-message-util": "^27.3.1", - "jest-mock": "^27.3.0", - "jest-util": "^27.3.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "peer": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/@sinonjs/fake-timers": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz", - "integrity": "sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==", - "dev": true, - "peer": true, - "dependencies": { - "@sinonjs/commons": "^1.7.0" - } - }, - "node_modules/jest-jasmine2/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "peer": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-jasmine2/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-jasmine2/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-jasmine2/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true - }, - "node_modules/jest-jasmine2/node_modules/diff-sequences": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", - "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==", - "dev": true, - "peer": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/expect": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.3.1.tgz", - "integrity": "sha512-MrNXV2sL9iDRebWPGOGFdPQRl2eDQNu/uhxIMShjjx74T6kC6jFIkmQ6OqXDtevjGUkyB2IT56RzDBqXf/QPCg==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "ansi-styles": "^5.0.0", - "jest-get-type": "^27.3.1", - "jest-matcher-utils": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-regex-util": "^27.0.6" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/expect/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-jasmine2/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-jasmine2/node_modules/jest-diff": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.3.1.tgz", - "integrity": "sha512-PCeuAH4AWUo2O5+ksW4pL9v5xJAcIKPUPfIhZBcG1RKv/0+dvaWTQK1Nrau8d67dp65fOqbeMdoil+6PedyEPQ==", - "dev": true, - "peer": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^27.0.6", - "jest-get-type": "^27.3.1", - "pretty-format": "^27.3.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/jest-each": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.3.1.tgz", - "integrity": "sha512-E4SwfzKJWYcvOYCjOxhZcxwL+AY0uFMvdCOwvzgutJiaiodFjkxQQDxHm8FQBeTqDnSmKsQWn7ldMRzTn2zJaQ==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "chalk": "^4.0.0", - "jest-get-type": "^27.3.1", - "jest-util": "^27.3.1", - "pretty-format": "^27.3.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/jest-get-type": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.3.1.tgz", - "integrity": "sha512-+Ilqi8hgHSAdhlQ3s12CAVNd8H96ZkQBfYoXmArzZnOfAtVAJEiPDBirjByEblvG/4LPJmkL+nBqPO3A1YJAEg==", - "dev": true, - "peer": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/jest-matcher-utils": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.3.1.tgz", - "integrity": "sha512-hX8N7zXS4k+8bC1Aj0OWpGb7D3gIXxYvPNK1inP5xvE4ztbz3rc4AkI6jGVaerepBnfWB17FL5lWFJT3s7qo8w==", - "dev": true, - "peer": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^27.3.1", - "jest-get-type": "^27.3.1", - "pretty-format": "^27.3.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/jest-mock": { - "version": "27.3.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.3.0.tgz", - "integrity": "sha512-ziZiLk0elZOQjD08bLkegBzv5hCABu/c8Ytx45nJKkysQwGaonvmTxwjLqEA4qGdasq9o2I8/HtdGMNnVsMTGw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/node": "*" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", - "dev": true, - "peer": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/pretty-format": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz", - "integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-jasmine2/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-leak-detector": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.3.1.tgz", - "integrity": "sha512-78QstU9tXbaHzwlRlKmTpjP9k4Pvre5l0r8Spo4SbFFVy/4Abg9I6ZjHwjg2QyKEAMg020XcjP+UgLZIY50yEg==", - "dev": true, - "peer": true, - "dependencies": { - "jest-get-type": "^27.3.1", - "pretty-format": "^27.3.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-leak-detector/node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "peer": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-leak-detector/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "peer": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-leak-detector/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-leak-detector/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-leak-detector/node_modules/chalk/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-leak-detector/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-leak-detector/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true - }, - "node_modules/jest-leak-detector/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-leak-detector/node_modules/jest-get-type": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.3.1.tgz", - "integrity": "sha512-+Ilqi8hgHSAdhlQ3s12CAVNd8H96ZkQBfYoXmArzZnOfAtVAJEiPDBirjByEblvG/4LPJmkL+nBqPO3A1YJAEg==", - "dev": true, - "peer": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-leak-detector/node_modules/pretty-format": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz", - "integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-leak-detector/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-matcher-utils": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz", - "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^26.6.2", - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-matcher-utils/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-matcher-utils/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-matcher-utils/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-matcher-utils/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-matcher-utils/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-matcher-utils/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-message-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.3.1.tgz", - "integrity": "sha512-bh3JEmxsTZ/9rTm0jQrPElbY2+y48Rw2t47uMfByNyUVR+OfPh4anuyKsGqsNkXk/TI4JbLRZx+7p7Hdt6q1yg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.2.5", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "micromatch": "^4.0.4", - "pretty-format": "^27.3.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-message-util/node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "peer": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-message-util/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "peer": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-message-util/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-message-util/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-message-util/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-message-util/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true - }, - "node_modules/jest-message-util/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-message-util/node_modules/pretty-format": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz", - "integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-message-util/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-message-util/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-mock": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz", - "integrity": "sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==", - "dev": true, - "dependencies": { - "@jest/types": "^26.6.2", - "@types/node": "*" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", - "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", - "dev": true, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "node_modules/jest-regex-util": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", - "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", - "dev": true, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-resolve": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.3.1.tgz", - "integrity": "sha512-Dfzt25CFSPo3Y3GCbxynRBZzxq9AdyNN+x/v2IqYx6KVT5Z6me2Z/PsSGFSv3cOSUZqJ9pHxilao/I/m9FouLw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.3.1", - "jest-validate": "^27.3.1", - "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-resolve-dependencies": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.3.1.tgz", - "integrity": "sha512-X7iLzY8pCiYOnvYo2YrK3P9oSE8/3N2f4pUZMJ8IUcZnT81vlSonya1KTO9ZfKGuC+svE6FHK/XOb8SsoRUV1A==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "jest-regex-util": "^27.0.6", - "jest-snapshot": "^27.3.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "peer": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "peer": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true - }, - "node_modules/jest-resolve-dependencies/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", - "dev": true, - "peer": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-resolve/node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "peer": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-resolve/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "peer": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-resolve/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-resolve/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-resolve/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-resolve/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true - }, - "node_modules/jest-resolve/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-resolve/node_modules/jest-haste-map": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", - "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.0.6", - "jest-serializer": "^27.0.6", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-resolve/node_modules/jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", - "dev": true, - "peer": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-resolve/node_modules/jest-serializer": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", - "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", - "dev": true, - "peer": true, - "dependencies": { - "@types/node": "*", - "graceful-fs": "^4.2.4" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-resolve/node_modules/jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-resolve/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runner": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.3.1.tgz", - "integrity": "sha512-r4W6kBn6sPr3TBwQNmqE94mPlYVn7fLBseeJfo4E2uCTmAyDFm2O5DYAQAFP7Q3YfiA/bMwg8TVsciP7k0xOww==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/console": "^27.3.1", - "@jest/environment": "^27.3.1", - "@jest/test-result": "^27.3.1", - "@jest/transform": "^27.3.1", - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-docblock": "^27.0.6", - "jest-environment-jsdom": "^27.3.1", - "jest-environment-node": "^27.3.1", - "jest-haste-map": "^27.3.1", - "jest-leak-detector": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-resolve": "^27.3.1", - "jest-runtime": "^27.3.1", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", - "source-map-support": "^0.5.6", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runner/node_modules/@jest/environment": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.3.1.tgz", - "integrity": "sha512-BCKCj4mOVLme6Tanoyc9k0ultp3pnmuyHw73UHRPeeZxirsU/7E3HC4le/VDb/SMzE1JcPnto+XBKFOcoiJzVw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/fake-timers": "^27.3.1", - "@jest/types": "^27.2.5", - "@types/node": "*", - "jest-mock": "^27.3.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runner/node_modules/@jest/fake-timers": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.3.1.tgz", - "integrity": "sha512-M3ZFgwwlqJtWZ+QkBG5NmC23A9w+A6ZxNsO5nJxJsKYt4yguBd3i8TpjQz5NfCX91nEve1KqD9RA2Q+Q1uWqoA==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@sinonjs/fake-timers": "^8.0.1", - "@types/node": "*", - "jest-message-util": "^27.3.1", - "jest-mock": "^27.3.0", - "jest-util": "^27.3.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runner/node_modules/@jest/transform": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.3.1.tgz", - "integrity": "sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.2.5", - "babel-plugin-istanbul": "^6.0.0", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", - "jest-regex-util": "^27.0.6", - "jest-util": "^27.3.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.1", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runner/node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "peer": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runner/node_modules/@sinonjs/fake-timers": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz", - "integrity": "sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==", - "dev": true, - "peer": true, - "dependencies": { - "@sinonjs/commons": "^1.7.0" - } - }, - "node_modules/jest-runner/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "peer": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-runner/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-runner/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-runner/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-runner/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true - }, - "node_modules/jest-runner/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runner/node_modules/jest-environment-node": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.3.1.tgz", - "integrity": "sha512-T89F/FgkE8waqrTSA7/ydMkcc52uYPgZZ6q8OaZgyiZkJb5QNNCF6oPZjH9IfPFfcc9uBWh1574N0kY0pSvTXw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/environment": "^27.3.1", - "@jest/fake-timers": "^27.3.1", - "@jest/types": "^27.2.5", - "@types/node": "*", - "jest-mock": "^27.3.0", - "jest-util": "^27.3.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runner/node_modules/jest-haste-map": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", - "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.0.6", - "jest-serializer": "^27.0.6", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-runner/node_modules/jest-mock": { - "version": "27.3.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.3.0.tgz", - "integrity": "sha512-ziZiLk0elZOQjD08bLkegBzv5hCABu/c8Ytx45nJKkysQwGaonvmTxwjLqEA4qGdasq9o2I8/HtdGMNnVsMTGw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/node": "*" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runner/node_modules/jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", - "dev": true, - "peer": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runner/node_modules/jest-serializer": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", - "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", - "dev": true, - "peer": true, - "dependencies": { - "@types/node": "*", - "graceful-fs": "^4.2.4" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runner/node_modules/jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runner/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest-runner/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runtime": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.3.1.tgz", - "integrity": "sha512-qtO6VxPbS8umqhEDpjA4pqTkKQ1Hy4ZSi9mDVeE9Za7LKBo2LdW2jmT+Iod3XFaJqINikZQsn2wEi0j9wPRbLg==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/console": "^27.3.1", - "@jest/environment": "^27.3.1", - "@jest/globals": "^27.3.1", - "@jest/source-map": "^27.0.6", - "@jest/test-result": "^27.3.1", - "@jest/transform": "^27.3.1", - "@jest/types": "^27.2.5", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "execa": "^5.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-mock": "^27.3.0", - "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.3.1", - "jest-snapshot": "^27.3.1", - "jest-util": "^27.3.1", - "jest-validate": "^27.3.1", - "slash": "^3.0.0", - "strip-bom": "^4.0.0", - "yargs": "^16.2.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runtime/node_modules/@jest/environment": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.3.1.tgz", - "integrity": "sha512-BCKCj4mOVLme6Tanoyc9k0ultp3pnmuyHw73UHRPeeZxirsU/7E3HC4le/VDb/SMzE1JcPnto+XBKFOcoiJzVw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/fake-timers": "^27.3.1", - "@jest/types": "^27.2.5", - "@types/node": "*", - "jest-mock": "^27.3.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runtime/node_modules/@jest/fake-timers": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.3.1.tgz", - "integrity": "sha512-M3ZFgwwlqJtWZ+QkBG5NmC23A9w+A6ZxNsO5nJxJsKYt4yguBd3i8TpjQz5NfCX91nEve1KqD9RA2Q+Q1uWqoA==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@sinonjs/fake-timers": "^8.0.1", - "@types/node": "*", - "jest-message-util": "^27.3.1", - "jest-mock": "^27.3.0", - "jest-util": "^27.3.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runtime/node_modules/@jest/transform": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.3.1.tgz", - "integrity": "sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.2.5", - "babel-plugin-istanbul": "^6.0.0", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", - "jest-regex-util": "^27.0.6", - "jest-util": "^27.3.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.1", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runtime/node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "peer": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runtime/node_modules/@sinonjs/fake-timers": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz", - "integrity": "sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==", - "dev": true, - "peer": true, - "dependencies": { - "@sinonjs/commons": "^1.7.0" - } - }, - "node_modules/jest-runtime/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "peer": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-runtime/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-runtime/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-runtime/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-runtime/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true - }, - "node_modules/jest-runtime/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runtime/node_modules/jest-haste-map": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", - "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.0.6", - "jest-serializer": "^27.0.6", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-runtime/node_modules/jest-mock": { - "version": "27.3.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.3.0.tgz", - "integrity": "sha512-ziZiLk0elZOQjD08bLkegBzv5hCABu/c8Ytx45nJKkysQwGaonvmTxwjLqEA4qGdasq9o2I8/HtdGMNnVsMTGw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/node": "*" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runtime/node_modules/jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", - "dev": true, - "peer": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runtime/node_modules/jest-serializer": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", - "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", - "dev": true, - "peer": true, - "dependencies": { - "@types/node": "*", - "graceful-fs": "^4.2.4" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runtime/node_modules/jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runtime/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest-runtime/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-serializer": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz", - "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==", - "dev": true, - "dependencies": { - "@types/node": "*", - "graceful-fs": "^4.2.4" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-silent-reporter": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jest-silent-reporter/-/jest-silent-reporter-0.5.0.tgz", - "integrity": "sha512-epdLt8Oj0a1AyRiR6F8zx/1SVT1Mi7VU3y4wB2uOBHs/ohIquC7v2eeja7UN54uRPyHInIKWdL+RdG228n5pJQ==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-util": "^26.0.0" - } - }, - "node_modules/jest-silent-reporter/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-silent-reporter/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-silent-reporter/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-silent-reporter/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-silent-reporter/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-silent-reporter/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-snapshot": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.3.1.tgz", - "integrity": "sha512-APZyBvSgQgOT0XumwfFu7X3G5elj6TGhCBLbBdn3R1IzYustPGPE38F51dBWMQ8hRXa9je0vAdeVDtqHLvB6lg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/core": "^7.7.2", - "@babel/generator": "^7.7.2", - "@babel/parser": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.0.0", - "@jest/transform": "^27.3.1", - "@jest/types": "^27.2.5", - "@types/babel__traverse": "^7.0.4", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^27.3.1", - "graceful-fs": "^4.2.4", - "jest-diff": "^27.3.1", - "jest-get-type": "^27.3.1", - "jest-haste-map": "^27.3.1", - "jest-matcher-utils": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-resolve": "^27.3.1", - "jest-util": "^27.3.1", - "natural-compare": "^1.4.0", - "pretty-format": "^27.3.1", - "semver": "^7.3.2" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/@jest/transform": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.3.1.tgz", - "integrity": "sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.2.5", - "babel-plugin-istanbul": "^6.0.0", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", - "jest-regex-util": "^27.0.6", - "jest-util": "^27.3.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.1", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "peer": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "peer": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-snapshot/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-snapshot/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-snapshot/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true - }, - "node_modules/jest-snapshot/node_modules/diff-sequences": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", - "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==", - "dev": true, - "peer": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/expect": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.3.1.tgz", - "integrity": "sha512-MrNXV2sL9iDRebWPGOGFdPQRl2eDQNu/uhxIMShjjx74T6kC6jFIkmQ6OqXDtevjGUkyB2IT56RzDBqXf/QPCg==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "ansi-styles": "^5.0.0", - "jest-get-type": "^27.3.1", - "jest-matcher-utils": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-regex-util": "^27.0.6" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/expect/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-snapshot/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-snapshot/node_modules/jest-diff": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.3.1.tgz", - "integrity": "sha512-PCeuAH4AWUo2O5+ksW4pL9v5xJAcIKPUPfIhZBcG1RKv/0+dvaWTQK1Nrau8d67dp65fOqbeMdoil+6PedyEPQ==", - "dev": true, - "peer": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^27.0.6", - "jest-get-type": "^27.3.1", - "pretty-format": "^27.3.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/jest-get-type": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.3.1.tgz", - "integrity": "sha512-+Ilqi8hgHSAdhlQ3s12CAVNd8H96ZkQBfYoXmArzZnOfAtVAJEiPDBirjByEblvG/4LPJmkL+nBqPO3A1YJAEg==", - "dev": true, - "peer": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/jest-haste-map": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", - "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.0.6", - "jest-serializer": "^27.0.6", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-snapshot/node_modules/jest-matcher-utils": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.3.1.tgz", - "integrity": "sha512-hX8N7zXS4k+8bC1Aj0OWpGb7D3gIXxYvPNK1inP5xvE4ztbz3rc4AkI6jGVaerepBnfWB17FL5lWFJT3s7qo8w==", - "dev": true, - "peer": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^27.3.1", - "jest-get-type": "^27.3.1", - "pretty-format": "^27.3.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", - "dev": true, - "peer": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/jest-serializer": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", - "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", - "dev": true, - "peer": true, - "dependencies": { - "@types/node": "*", - "graceful-fs": "^4.2.4" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "peer": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest-snapshot/node_modules/pretty-format": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz", - "integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "peer": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest-snapshot/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest-snapshot/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-snapshot/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true, - "peer": true - }, - "node_modules/jest-util": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", - "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", - "dev": true, - "dependencies": { - "@jest/types": "^26.6.2", - "@types/node": "*", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^2.0.0", - "micromatch": "^4.0.2" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-util/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-util/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-util/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-util/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-util/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-util/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-validate": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.3.1.tgz", - "integrity": "sha512-3H0XCHDFLA9uDII67Bwi1Vy7AqwA5HqEEjyy934lgVhtJ3eisw6ShOF1MDmRPspyikef5MyExvIm0/TuLzZ86Q==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^27.3.1", - "leven": "^3.1.0", - "pretty-format": "^27.3.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-validate/node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "peer": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-validate/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "peer": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-validate/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-validate/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-validate/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-validate/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true - }, - "node_modules/jest-validate/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-validate/node_modules/jest-get-type": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.3.1.tgz", - "integrity": "sha512-+Ilqi8hgHSAdhlQ3s12CAVNd8H96ZkQBfYoXmArzZnOfAtVAJEiPDBirjByEblvG/4LPJmkL+nBqPO3A1YJAEg==", - "dev": true, - "peer": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-validate/node_modules/pretty-format": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz", - "integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-validate/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-validate/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-watcher": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.3.1.tgz", - "integrity": "sha512-9/xbV6chABsGHWh9yPaAGYVVKurWoP3ZMCv6h+O1v9/+pkOroigs6WzZ0e9gLP/njokUwM7yQhr01LKJVMkaZA==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/test-result": "^27.3.1", - "@jest/types": "^27.2.5", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "jest-util": "^27.3.1", - "string-length": "^4.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-watcher/node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "peer": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-watcher/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "peer": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-watcher/node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "peer": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-watcher/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-watcher/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-watcher/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-watcher/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true - }, - "node_modules/jest-watcher/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-watcher/node_modules/jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-watcher/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-watcher/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-worker": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.3.1.tgz", - "integrity": "sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/joi": { - "version": "17.4.2", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.4.2.tgz", - "integrity": "sha512-Lm56PP+n0+Z2A2rfRvsfWVDXGEWjXxatPopkQ8qQ5mxCEhwHG+Ettgg5o98FFaxilOxozoa14cFhrE/hOzh/Nw==", - "dev": true, - "dependencies": { - "@hapi/hoek": "^9.0.0", - "@hapi/topo": "^5.0.0", - "@sideway/address": "^4.1.0", - "@sideway/formula": "^3.0.0", - "@sideway/pinpoint": "^2.0.0" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsdoc-type-pratt-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-1.2.0.tgz", - "integrity": "sha512-4STjeF14jp4bqha44nKMY1OUI6d2/g6uclHWUCZ7B4DoLzaB5bmpTkQrpqU+vSVzMD0LsKAOskcnI3I3VfIpmg==", - "dev": true, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/jsdom": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", - "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", - "dev": true, - "dependencies": { - "abab": "^2.0.5", - "acorn": "^8.2.4", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "form-data": "^3.0.0", - "html-encoding-sniffer": "^2.0.1", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.5.0", - "ws": "^7.4.6", - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jsdom/node_modules/acorn": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz", - "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/jsdom/node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "node_modules/json2php": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/json2php/-/json2php-0.0.4.tgz", - "integrity": "sha1-a9haHdpqXdfpECK7JEA8wbfC7jQ=", - "dev": true - }, - "node_modules/json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonc-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", - "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", - "dev": true - }, - "node_modules/jsx-ast-utils": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz", - "integrity": "sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.3", - "object.assign": "^4.1.2" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/klona": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", - "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/known-css-properties": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.21.0.tgz", - "integrity": "sha512-sZLUnTqimCkvkgRS+kbPlYW5o8q5w1cu+uIisKpEWkj31I8mx8kNG162DwRav8Zirkva6N5uoFsm9kzK4mUXjw==", - "dev": true - }, - "node_modules/language-subtag-registry": { - "version": "0.3.21", - "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz", - "integrity": "sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==", - "dev": true - }, - "node_modules/language-tags": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", - "integrity": "sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=", - "dev": true, - "dependencies": { - "language-subtag-registry": "~0.3.2" - } - }, - "node_modules/lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/liftup": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/liftup/-/liftup-3.0.1.tgz", - "integrity": "sha512-yRHaiQDizWSzoXk3APcA71eOI/UuhEkNN9DiW2Tt44mhYzX4joFoCZlxsSOF7RyeLlfqzFLQI1ngFq3ggMPhOw==", - "dev": true, - "dependencies": { - "extend": "^3.0.2", - "findup-sync": "^4.0.0", - "fined": "^1.2.0", - "flagged-respawn": "^1.0.1", - "is-plain-object": "^2.0.4", - "object.map": "^1.0.1", - "rechoir": "^0.7.0", - "resolve": "^1.19.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/liftup/node_modules/findup-sync": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-4.0.0.tgz", - "integrity": "sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==", - "dev": true, - "dependencies": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^4.0.2", - "resolve-dir": "^1.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/liftup/node_modules/global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dev": true, - "dependencies": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/liftup/node_modules/global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", - "dev": true, - "dependencies": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/liftup/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/liftup/node_modules/resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", - "dev": true, - "dependencies": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lilconfig": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.3.tgz", - "integrity": "sha512-EHKqr/+ZvdKCifpNrJCKxBTgk5XupZA3y/aCPY9mxfgBzmgh93Mt/WqjjQ38oMxXuvDokaKiM3lAgvSH2sjtHg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/line-height": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/line-height/-/line-height-0.3.1.tgz", - "integrity": "sha1-SxIF7d4YKHKl76PI9iCzGHqcVMk=", - "dependencies": { - "computed-style": "~0.1.3" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" - }, - "node_modules/linkify-it": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", - "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", - "dev": true, - "dependencies": { - "uc.micro": "^1.0.1" - } - }, - "node_modules/lint-staged": { - "version": "11.2.3", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-11.2.3.tgz", - "integrity": "sha512-Tfmhk8O2XFMD25EswHPv+OYhUjsijy5D7liTdxeXvhG2rsadmOLFtyj8lmlfoFFXY8oXWAIOKpoI+lJe1DB1mw==", - "dev": true, - "dependencies": { - "cli-truncate": "2.1.0", - "colorette": "^1.4.0", - "commander": "^8.2.0", - "cosmiconfig": "^7.0.1", - "debug": "^4.3.2", - "enquirer": "^2.3.6", - "execa": "^5.1.1", - "listr2": "^3.12.2", - "micromatch": "^4.0.4", - "normalize-path": "^3.0.0", - "please-upgrade-node": "^3.2.0", - "string-argv": "0.3.1", - "stringify-object": "3.3.0", - "supports-color": "8.1.1" - }, - "bin": { - "lint-staged": "bin/lint-staged.js" - }, - "funding": { - "url": "https://opencollective.com/lint-staged" - } - }, - "node_modules/lint-staged/node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true, - "engines": { - "node": ">= 12" - } - }, - "node_modules/lint-staged/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/lint-staged/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/listr2": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.13.1.tgz", - "integrity": "sha512-pk4YBDA2cxtpM8iLHbz6oEsfZieJKHf6Pt19NlKaHZZVpqHyVs/Wqr7RfBBCeAFCJchGO7WQHVkUPZTvJMHk8w==", - "dev": true, - "dependencies": { - "cli-truncate": "^2.1.0", - "colorette": "^2.0.16", - "log-update": "^4.0.0", - "p-map": "^4.0.0", - "rxjs": "^6.6.7", - "through": "^2.3.8", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "enquirer": ">= 2.3.0 < 3" - } - }, - "node_modules/listr2/node_modules/colorette": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", - "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", - "dev": true - }, - "node_modules/listr2/node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/livereload-js": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.4.0.tgz", - "integrity": "sha512-XPQH8Z2GDP/Hwz2PCDrh2mth4yFejwA1OZ/81Ti3LgKyhDcEjsSsqFWZojHG0va/duGd+WyosY7eXLDoOyqcPw==", - "dev": true - }, - "node_modules/load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/load-json-file/node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/load-json-file/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/load-json-file/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/loader-runner": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", - "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", - "dev": true, - "engines": { - "node": ">=6.11.5" - } - }, - "node_modules/loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", - "dev": true - }, - "node_modules/lodash.differencewith": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.differencewith/-/lodash.differencewith-4.5.0.tgz", - "integrity": "sha1-uvr7yRi1UVTheRdqALsK76rIVLc=", - "dev": true - }, - "node_modules/lodash.escape": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz", - "integrity": "sha1-yQRGkMIeBClL6qUXcS/e0fqI3pg=", - "dev": true - }, - "node_modules/lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", - "dev": true - }, - "node_modules/lodash.flattendeep": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", - "dev": true - }, - "node_modules/lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", - "dev": true - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", - "dev": true - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", - "dev": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", - "dev": true - }, - "node_modules/lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", - "dev": true - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-symbols/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/log-symbols/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/log-symbols/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/log-symbols/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/log-update": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", - "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.3.0", - "cli-cursor": "^3.1.0", - "slice-ansi": "^4.0.0", - "wrap-ansi": "^6.2.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/log-update/node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/log-update/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/log-update/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/log-update/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/log-update/node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/log-update/node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/log-update/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/log-update/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/longest-streak": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", - "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-iterator": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", - "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/make-iterator/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "dependencies": { - "tmpl": "1.0.5" - } - }, - "node_modules/map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-obj": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/map-values": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-values/-/map-values-1.0.1.tgz", - "integrity": "sha1-douOecAJvytk/ugG4ip7HEGQyZA=", - "dev": true - }, - "node_modules/map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "dependencies": { - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/markdown-it": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.0.4.tgz", - "integrity": "sha512-34RwOXZT8kyuOJy25oJNJoulO8L0bTHYWXcdZBYZqFnjIy3NgjeoM3FmPXIOFQ26/lSHYMr8oc62B6adxXcb3Q==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1", - "entities": "~2.1.0", - "linkify-it": "^3.0.1", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" - }, - "bin": { - "markdown-it": "bin/markdown-it.js" - } - }, - "node_modules/markdown-it/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/markdown-it/node_modules/entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", - "dev": true, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/markdownlint": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.23.1.tgz", - "integrity": "sha512-iOEwhDfNmq2IJlaA8mzEkHYUi/Hwoa6Ss+HO5jkwUR6wQ4quFr0WzSx+Z9rsWZKUaPbyirIdL1zGmJRkWawr4Q==", - "dev": true, - "dependencies": { - "markdown-it": "12.0.4" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/markdownlint-cli": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/markdownlint-cli/-/markdownlint-cli-0.27.1.tgz", - "integrity": "sha512-p1VV6aSbGrDlpUWzHizAnSNEQAweVR3qUI/AIUubxW7BGPXziSXkIED+uRtSohUlRS/jmqp3Wi4es5j6fIrdeQ==", - "dev": true, - "dependencies": { - "commander": "~7.1.0", - "deep-extend": "~0.6.0", - "get-stdin": "~8.0.0", - "glob": "~7.1.6", - "ignore": "~5.1.8", - "js-yaml": "^4.0.0", - "jsonc-parser": "~3.0.0", - "lodash.differencewith": "~4.5.0", - "lodash.flatten": "~4.4.0", - "markdownlint": "~0.23.1", - "markdownlint-rule-helpers": "~0.14.0", - "minimatch": "~3.0.4", - "minimist": "~1.2.5", - "rc": "~1.2.8" - }, - "bin": { - "markdownlint": "markdownlint.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/markdownlint-cli/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/markdownlint-cli/node_modules/commander": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.1.0.tgz", - "integrity": "sha512-pRxBna3MJe6HKnBGsDyMv8ETbptw3axEdYHoqNh7gu5oDcew8fs0xnivZGm06Ogk8zGAJ9VX+OPEr2GXEQK4dg==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/markdownlint-cli/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/markdownlint-rule-helpers": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/markdownlint-rule-helpers/-/markdownlint-rule-helpers-0.14.0.tgz", - "integrity": "sha512-vRTPqSU4JK8vVXmjICHSBhwXUvbfh/VJo+j7hvxqe15tLJyomv3FLgFdFgb8kpj0Fe8SsJa/TZUAXv7/sN+N7A==", - "dev": true - }, - "node_modules/mathml-tag-names": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", - "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdast-util-from-markdown": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", - "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==", - "dev": true, - "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-to-string": "^2.0.0", - "micromark": "~2.11.0", - "parse-entities": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-markdown": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", - "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.0", - "longest-streak": "^2.0.0", - "mdast-util-to-string": "^2.0.0", - "parse-entities": "^2.0.0", - "repeat-string": "^1.0.0", - "zwitch": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", - "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "dev": true - }, - "node_modules/mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", - "dev": true - }, - "node_modules/memize": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/memize/-/memize-1.1.0.tgz", - "integrity": "sha512-K4FcPETOMTwe7KL2LK0orMhpOmWD2wRGwWWpbZy0fyArwsyIKR8YJVz8+efBAh3BO4zPqlSICu4vsLTRRqtFAg==" - }, - "node_modules/memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", - "dev": true, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/meow": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/meow/-/meow-6.1.1.tgz", - "integrity": "sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==", - "dev": true, - "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "^4.0.2", - "normalize-package-data": "^2.5.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.13.1", - "yargs-parser": "^18.1.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow/node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/meow/node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow/node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/meow/node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/merge-deep": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/merge-deep/-/merge-deep-3.0.3.tgz", - "integrity": "sha512-qtmzAS6t6grwEkNrunqTBdn0qKwFgNWvlxUbAV8es9M7Ot1EbyApytCnvE0jALPa46ZpKDUo527kKiaWplmlFA==", - "dev": true, - "dependencies": { - "arr-union": "^3.1.0", - "clone-deep": "^0.2.4", - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromark": { - "version": "2.11.4", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", - "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "debug": "^4.0.0", - "parse-entities": "^2.0.0" - } - }, - "node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/micromodal": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/micromodal/-/micromodal-0.4.6.tgz", - "integrity": "sha512-2VDso2a22jWPpqwuWT/4RomVpoU3Bl9qF9D01xzwlNp5UVsImeA0gY4nSpF44vqcQtQOtkiMUV9EZkAJSRxBsg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/mime": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", - "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", - "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/mime-db": { - "version": "1.50.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz", - "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.33", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz", - "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==", - "dev": true, - "dependencies": { - "mime-db": "1.50.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/mini-css-extract-plugin": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.4.3.tgz", - "integrity": "sha512-zekavl9mZuGyk7COjsfFY/f655AX61EKE0AthXPrmDk+oZyjZ9WzO4WPjXnnO9xl8obK2kmM6rAQrBEmk+WK1g==", - "dev": true, - "dependencies": { - "schema-utils": "^3.1.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, - "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, - "node_modules/minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", - "dev": true, - "dependencies": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/minimist-options/node_modules/is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/minimist-options/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mixin-deep/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mixin-deep/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mixin-object": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", - "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", - "dev": true, - "dependencies": { - "for-in": "^0.1.3", - "is-extendable": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mixin-object/node_modules/for-in": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", - "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/moment": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", - "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==", - "engines": { - "node": "*" - } - }, - "node_modules/moment-timezone": { - "version": "0.5.33", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.33.tgz", - "integrity": "sha512-PTc2vcT8K9J5/9rDEPe5czSIKgLoGsH8UNpA4qZTVw0Vd/Uz19geE9abbIOQKaAQFcnQ3v5YEXrbSc5BpshH+w==", - "dependencies": { - "moment": ">= 2.9.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/moo": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.1.tgz", - "integrity": "sha512-I1mnb5xn4fO80BH9BLcF0yLypy2UKl+Cb01Fu0hJRkJjlCRtxZMWkTdAtDd5ZqCOxtCkhmRwyI57vWT+1iZ67w==", - "dev": true - }, - "node_modules/mousetrap": { - "version": "1.6.5", - "resolved": "https://registry.npmjs.org/mousetrap/-/mousetrap-1.6.5.tgz", - "integrity": "sha512-QNo4kEepaIBwiT8CDhP98umTetp+JNfQYBWvC1pc6/OAibuXtRcxZ58Qz8skvEHYvURne/7R8T5VoOI7rDsEUA==" - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", - "dev": true - }, - "node_modules/nanocolors": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.1.12.tgz", - "integrity": "sha512-2nMHqg1x5PU+unxX7PGY7AuYxl2qDx7PSrTRjizr8sxdd3l/3hBuWWaki62qmtYm2U5i4Z5E7GbjlyDFhs9/EQ==", - "dev": true - }, - "node_modules/nanoid": { - "version": "3.1.30", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz", - "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "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" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "node_modules/nearley": { - "version": "2.20.1", - "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.20.1.tgz", - "integrity": "sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==", - "dev": true, - "dependencies": { - "commander": "^2.19.0", - "moo": "^0.5.0", - "railroad-diagrams": "^1.0.0", - "randexp": "0.4.6" - }, - "bin": { - "nearley-railroad": "bin/nearley-railroad.js", - "nearley-test": "bin/nearley-test.js", - "nearley-unparse": "bin/nearley-unparse.js", - "nearleyc": "bin/nearleyc.js" - }, - "funding": { - "type": "individual", - "url": "https://nearley.js.org/#give-to-nearley" - } - }, - "node_modules/nearley/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "node_modules/node-fetch": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.5.tgz", - "integrity": "sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ==", - "dev": true, - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - } - }, - "node_modules/node-fetch/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", - "dev": true - }, - "node_modules/node-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", - "dev": true - }, - "node_modules/node-fetch/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", - "dev": true, - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", - "dev": true - }, - "node_modules/node-modules-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", - "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/node-notifier": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.2.tgz", - "integrity": "sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg==", - "dev": true, - "optional": true, - "dependencies": { - "growly": "^1.3.0", - "is-wsl": "^2.2.0", - "semver": "^7.3.2", - "shellwords": "^0.1.1", - "uuid": "^8.3.0", - "which": "^2.0.2" - } - }, - "node_modules/node-notifier/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "optional": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-notifier/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "optional": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-notifier/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "optional": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/node-notifier/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true, - "optional": true - }, - "node_modules/node-releases": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", - "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==" - }, - "node_modules/nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", - "dev": true, - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - } - }, - "node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-selector": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/normalize-selector/-/normalize-selector-0.2.0.tgz", - "integrity": "sha1-0LFF62kRicY6eNIB3E/bEpPvDAM=", - "dev": true - }, - "node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/normalize-wheel": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/normalize-wheel/-/normalize-wheel-1.0.1.tgz", - "integrity": "sha1-rsiGr/2wRQcNhWRH32Ls+GFG7EU=" - }, - "node_modules/npm-package-json-lint": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/npm-package-json-lint/-/npm-package-json-lint-5.4.1.tgz", - "integrity": "sha512-nFuijuczSzWEaNhjgvU2n1A3Gsn4CYZKZYum/oq2i+YOA/HB57CA6kpZrlnYf6bEKelMvsixjcN7SlUXDo0bTg==", - "dev": true, - "dependencies": { - "ajv": "^6.12.6", - "ajv-errors": "^1.0.1", - "chalk": "^4.1.2", - "cosmiconfig": "^7.0.1", - "debug": "^4.3.2", - "globby": "^11.0.4", - "ignore": "^5.1.8", - "is-plain-obj": "^3.0.0", - "jsonc-parser": "^3.0.0", - "log-symbols": "^4.1.0", - "meow": "^6.1.1", - "plur": "^4.0.0", - "semver": "^7.3.5", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "bin": { - "npmPkgJsonLint": "src/cli.js" - }, - "engines": { - "node": ">=10.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/npm-package-json-lint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/npm-package-json-lint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/npm-package-json-lint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/npm-package-json-lint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/npm-package-json-lint/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm-package-json-lint/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm-package-json-lint/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm-package-json-lint/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm-package-json-lint/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/npm-run-all": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", - "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "chalk": "^2.4.1", - "cross-spawn": "^6.0.5", - "memorystream": "^0.3.1", - "minimatch": "^3.0.4", - "pidtree": "^0.3.0", - "read-pkg": "^3.0.0", - "shell-quote": "^1.6.1", - "string.prototype.padend": "^3.0.0" - }, - "bin": { - "npm-run-all": "bin/npm-run-all/index.js", - "run-p": "bin/run-p/index.js", - "run-s": "bin/run-s/index.js" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/npm-run-all/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/npm-run-all/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "dependencies": { - "path-key": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/nth-check": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", - "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", - "dev": true - }, - "node_modules/nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", - "dev": true - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "dependencies": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-filter": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/object-filter/-/object-filter-1.0.2.tgz", - "integrity": "sha1-rwt5f/6+r4pSxmN87b6IFs/sG8g=", - "dev": true - }, - "node_modules/object-inspect": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", - "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "dependencies": { - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.defaults": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", - "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", - "dev": true, - "dependencies": { - "array-each": "^1.0.1", - "array-slice": "^1.0.0", - "for-own": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.defaults/node_modules/for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", - "dev": true, - "dependencies": { - "for-in": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.entries": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", - "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", - "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.getownpropertydescriptors": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz", - "integrity": "sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.hasown": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz", - "integrity": "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", - "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", - "dev": true, - "dependencies": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.map/node_modules/for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", - "dev": true, - "dependencies": { - "for-in": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.values": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", - "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/opener": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", - "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", - "dev": true, - "bin": { - "opener": "bin/opener-bin.js" - } - }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "dev": true, - "dependencies": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "node_modules/p-each-series": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", - "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-locate/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate/node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-entities": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", - "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", - "dev": true, - "dependencies": { - "character-entities": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "character-reference-invalid": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-hexadecimal": "^1.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/parse-filepath": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", - "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", - "dev": true, - "dependencies": { - "is-absolute": "^1.0.0", - "map-cache": "^0.2.0", - "path-root": "^0.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", - "dev": true, - "dependencies": { - "parse5": "^6.0.1" - } - }, - "node_modules/pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, - "node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "node_modules/path-root": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", - "dev": true, - "dependencies": { - "path-root-regex": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-root-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", - "dev": true - }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pidtree": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", - "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", - "dev": true, - "bin": { - "pidtree": "bin/pidtree.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "dependencies": { - "pinkie": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pirates": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", - "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", - "dev": true, - "dependencies": { - "node-modules-regexp": "^1.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "dev": true, - "dependencies": { - "find-up": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-dir/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", - "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", - "dev": true, - "dependencies": { - "find-up": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-up/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-up/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-up/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-up/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-up/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/please-upgrade-node": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", - "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", - "dev": true, - "dependencies": { - "semver-compare": "^1.0.0" - } - }, - "node_modules/plur": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/plur/-/plur-4.0.0.tgz", - "integrity": "sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg==", - "dev": true, - "dependencies": { - "irregular-plurals": "^3.2.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/popmotion": { - "version": "9.3.6", - "resolved": "https://registry.npmjs.org/popmotion/-/popmotion-9.3.6.tgz", - "integrity": "sha512-ZTbXiu6zIggXzIliMi8LGxXBF5ST+wkpXGEjeTUDUOCdSQ356hij/xjeUdv0F8zCQNeqB1+PR5/BB+gC+QLAPw==", - "dependencies": { - "framesync": "5.3.0", - "hey-listen": "^1.0.8", - "style-value-types": "4.1.4", - "tslib": "^2.1.0" - } - }, - "node_modules/portfinder": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", - "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", - "dev": true, - "dependencies": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.5" - }, - "engines": { - "node": ">= 0.12.0" - } - }, - "node_modules/portfinder/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/portfinder/node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss": { - "version": "8.3.9", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.9.tgz", - "integrity": "sha512-f/ZFyAKh9Dnqytx5X62jgjhhzttjZS7hMsohcI7HEI5tjELX/HxCy3EFhsRxyzGvrzFF+82XPvCS8T9TFleVJw==", - "dev": true, - "dependencies": { - "nanoid": "^3.1.28", - "picocolors": "^0.2.1", - "source-map-js": "^0.6.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-attribute-case-insensitive": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz", - "integrity": "sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA==", - "dev": true, - "dependencies": { - "postcss": "^7.0.2", - "postcss-selector-parser": "^6.0.2" - } - }, - "node_modules/postcss-attribute-case-insensitive/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-attribute-case-insensitive/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-attribute-case-insensitive/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-color-functional-notation": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz", - "integrity": "sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g==", - "dev": true, - "dependencies": { - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-color-functional-notation/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-color-functional-notation/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-color-functional-notation/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-color-gray": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz", - "integrity": "sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw==", - "dev": true, - "dependencies": { - "@csstools/convert-colors": "^1.4.0", - "postcss": "^7.0.5", - "postcss-values-parser": "^2.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-color-gray/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-color-gray/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-color-gray/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-color-hex-alpha": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz", - "integrity": "sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw==", - "dev": true, - "dependencies": { - "postcss": "^7.0.14", - "postcss-values-parser": "^2.0.1" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-color-hex-alpha/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-color-hex-alpha/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-color-hex-alpha/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-color-mod-function": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz", - "integrity": "sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ==", - "dev": true, - "dependencies": { - "@csstools/convert-colors": "^1.4.0", - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-color-mod-function/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-color-mod-function/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-color-mod-function/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-color-rebeccapurple": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz", - "integrity": "sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g==", - "dev": true, - "dependencies": { - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-color-rebeccapurple/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-color-rebeccapurple/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-color-rebeccapurple/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-custom-media": { - "version": "7.0.8", - "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz", - "integrity": "sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg==", - "dev": true, - "dependencies": { - "postcss": "^7.0.14" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-custom-media/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-custom-media/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-custom-media/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-custom-properties": { - "version": "8.0.11", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz", - "integrity": "sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA==", - "dev": true, - "dependencies": { - "postcss": "^7.0.17", - "postcss-values-parser": "^2.0.1" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-custom-properties/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-custom-properties/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-custom-properties/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-custom-selectors": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz", - "integrity": "sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w==", - "dev": true, - "dependencies": { - "postcss": "^7.0.2", - "postcss-selector-parser": "^5.0.0-rc.3" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-custom-selectors/node_modules/cssesc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", - "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-custom-selectors/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-custom-selectors/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-custom-selectors/node_modules/postcss-selector-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", - "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", - "dev": true, - "dependencies": { - "cssesc": "^2.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-custom-selectors/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-dir-pseudo-class": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz", - "integrity": "sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw==", - "dev": true, - "dependencies": { - "postcss": "^7.0.2", - "postcss-selector-parser": "^5.0.0-rc.3" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/postcss-dir-pseudo-class/node_modules/cssesc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", - "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-dir-pseudo-class/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-dir-pseudo-class/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-dir-pseudo-class/node_modules/postcss-selector-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", - "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", - "dev": true, - "dependencies": { - "cssesc": "^2.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-dir-pseudo-class/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-double-position-gradients": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz", - "integrity": "sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA==", - "dev": true, - "dependencies": { - "postcss": "^7.0.5", - "postcss-values-parser": "^2.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-double-position-gradients/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-double-position-gradients/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-double-position-gradients/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-env-function": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-2.0.2.tgz", - "integrity": "sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw==", - "dev": true, - "dependencies": { - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-env-function/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-env-function/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-env-function/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-focus-visible": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz", - "integrity": "sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g==", - "dev": true, - "dependencies": { - "postcss": "^7.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-focus-visible/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-focus-visible/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-focus-visible/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-focus-within": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz", - "integrity": "sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w==", - "dev": true, - "dependencies": { - "postcss": "^7.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-focus-within/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-focus-within/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-focus-within/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-font-variant": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz", - "integrity": "sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA==", - "dev": true, - "dependencies": { - "postcss": "^7.0.2" - } - }, - "node_modules/postcss-font-variant/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-font-variant/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-font-variant/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-gap-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz", - "integrity": "sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg==", - "dev": true, - "dependencies": { - "postcss": "^7.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-gap-properties/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-gap-properties/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-gap-properties/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-image-set-function": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz", - "integrity": "sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw==", - "dev": true, - "dependencies": { - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-image-set-function/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-image-set-function/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-image-set-function/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-import": { - "version": "14.0.2", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.0.2.tgz", - "integrity": "sha512-BJ2pVK4KhUyMcqjuKs9RijV5tatNzNa73e/32aBVE/ejYPe37iH+6vAu9WvqUkB5OAYgLHzbSvzHnorybJCm9g==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "node_modules/postcss-initial": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.4.tgz", - "integrity": "sha512-3RLn6DIpMsK1l5UUy9jxQvoDeUN4gP939tDcKUHD/kM8SGSKbFAnvkpFpj3Bhtz3HGk1jWY5ZNWX6mPta5M9fg==", - "dev": true, - "dependencies": { - "postcss": "^7.0.2" - } - }, - "node_modules/postcss-initial/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-initial/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-initial/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-lab-function": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz", - "integrity": "sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg==", - "dev": true, - "dependencies": { - "@csstools/convert-colors": "^1.4.0", - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-lab-function/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-lab-function/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-lab-function/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-less": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-3.1.4.tgz", - "integrity": "sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA==", - "dev": true, - "dependencies": { - "postcss": "^7.0.14" - }, - "engines": { - "node": ">=6.14.4" - } - }, - "node_modules/postcss-less/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-less/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-less/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-loader": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-4.3.0.tgz", - "integrity": "sha512-M/dSoIiNDOo8Rk0mUqoj4kpGq91gcxCfb9PoyZVdZ76/AuhxylHDYZblNE8o+EQ9AMSASeMFEKxZf5aU6wlx1Q==", - "dev": true, - "dependencies": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.4", - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0", - "semver": "^7.3.4" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "postcss": "^7.0.0 || ^8.0.1", - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/postcss-loader/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/postcss-loader/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/postcss-loader/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/postcss-loader/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/postcss-logical": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-3.0.0.tgz", - "integrity": "sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA==", - "dev": true, - "dependencies": { - "postcss": "^7.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-logical/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-logical/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-logical/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-media-minmax": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz", - "integrity": "sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw==", - "dev": true, - "dependencies": { - "postcss": "^7.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-media-minmax/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-media-minmax/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-media-minmax/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-media-query-parser": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", - "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=", - "dev": true - }, - "node_modules/postcss-nested": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.1.tgz", - "integrity": "sha512-ZHNSAoHrMtbEzjq+Qs4R0gHijpXc6F1YUv4TGmGaz7rtfMvVJBbu5hMOH+CrhEaljQpEmx5N/P8i1pXTkbVAmg==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.4" - }, - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-nesting": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-7.0.1.tgz", - "integrity": "sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg==", - "dev": true, - "dependencies": { - "postcss": "^7.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-nesting/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-nesting/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-nesting/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-overflow-shorthand": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz", - "integrity": "sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g==", - "dev": true, - "dependencies": { - "postcss": "^7.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-overflow-shorthand/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-overflow-shorthand/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-overflow-shorthand/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-page-break": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-2.0.0.tgz", - "integrity": "sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ==", - "dev": true, - "dependencies": { - "postcss": "^7.0.2" - } - }, - "node_modules/postcss-page-break/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-page-break/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-page-break/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-place": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-4.0.1.tgz", - "integrity": "sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg==", - "dev": true, - "dependencies": { - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-place/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-place/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-place/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-preset-env": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz", - "integrity": "sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg==", - "dev": true, - "dependencies": { - "autoprefixer": "^9.6.1", - "browserslist": "^4.6.4", - "caniuse-lite": "^1.0.30000981", - "css-blank-pseudo": "^0.1.4", - "css-has-pseudo": "^0.10.0", - "css-prefers-color-scheme": "^3.1.1", - "cssdb": "^4.4.0", - "postcss": "^7.0.17", - "postcss-attribute-case-insensitive": "^4.0.1", - "postcss-color-functional-notation": "^2.0.1", - "postcss-color-gray": "^5.0.0", - "postcss-color-hex-alpha": "^5.0.3", - "postcss-color-mod-function": "^3.0.3", - "postcss-color-rebeccapurple": "^4.0.1", - "postcss-custom-media": "^7.0.8", - "postcss-custom-properties": "^8.0.11", - "postcss-custom-selectors": "^5.1.2", - "postcss-dir-pseudo-class": "^5.0.0", - "postcss-double-position-gradients": "^1.0.0", - "postcss-env-function": "^2.0.2", - "postcss-focus-visible": "^4.0.0", - "postcss-focus-within": "^3.0.0", - "postcss-font-variant": "^4.0.0", - "postcss-gap-properties": "^2.0.0", - "postcss-image-set-function": "^3.0.1", - "postcss-initial": "^3.0.0", - "postcss-lab-function": "^2.0.1", - "postcss-logical": "^3.0.0", - "postcss-media-minmax": "^4.0.0", - "postcss-nesting": "^7.0.0", - "postcss-overflow-shorthand": "^2.0.0", - "postcss-page-break": "^2.0.0", - "postcss-place": "^4.0.1", - "postcss-pseudo-class-any-link": "^6.0.0", - "postcss-replace-overflow-wrap": "^3.0.0", - "postcss-selector-matches": "^4.0.0", - "postcss-selector-not": "^4.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-preset-env/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-preset-env/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-preset-env/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-pseudo-class-any-link": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz", - "integrity": "sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew==", - "dev": true, - "dependencies": { - "postcss": "^7.0.2", - "postcss-selector-parser": "^5.0.0-rc.3" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-pseudo-class-any-link/node_modules/cssesc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", - "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-pseudo-class-any-link/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-pseudo-class-any-link/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-pseudo-class-any-link/node_modules/postcss-selector-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", - "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", - "dev": true, - "dependencies": { - "cssesc": "^2.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-pseudo-class-any-link/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-replace-overflow-wrap": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz", - "integrity": "sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw==", - "dev": true, - "dependencies": { - "postcss": "^7.0.2" - } - }, - "node_modules/postcss-replace-overflow-wrap/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-replace-overflow-wrap/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-replace-overflow-wrap/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-resolve-nested-selector": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", - "integrity": "sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=", - "dev": true - }, - "node_modules/postcss-safe-parser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz", - "integrity": "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==", - "dev": true, - "dependencies": { - "postcss": "^7.0.26" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-safe-parser/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-safe-parser/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-safe-parser/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-sass": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/postcss-sass/-/postcss-sass-0.4.4.tgz", - "integrity": "sha512-BYxnVYx4mQooOhr+zer0qWbSPYnarAy8ZT7hAQtbxtgVf8gy+LSLT/hHGe35h14/pZDTw1DsxdbrwxBN++H+fg==", - "dev": true, - "dependencies": { - "gonzales-pe": "^4.3.0", - "postcss": "^7.0.21" - } - }, - "node_modules/postcss-sass/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-sass/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-sass/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-scss": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-2.1.1.tgz", - "integrity": "sha512-jQmGnj0hSGLd9RscFw9LyuSVAa5Bl1/KBPqG1NQw9w8ND55nY4ZEsdlVuYJvLPpV+y0nwTV5v/4rHPzZRihQbA==", - "dev": true, - "dependencies": { - "postcss": "^7.0.6" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-scss/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-scss/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-scss/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-selector-matches": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz", - "integrity": "sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "postcss": "^7.0.2" - } - }, - "node_modules/postcss-selector-matches/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-selector-matches/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-selector-matches/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-selector-not": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-4.0.1.tgz", - "integrity": "sha512-YolvBgInEK5/79C+bdFMyzqTg6pkYqDbzZIST/PDMqa/o3qtXenD05apBG2jLgT0/BQ77d4U2UK12jWpilqMAQ==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "postcss": "^7.0.2" - } - }, - "node_modules/postcss-selector-not/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-selector-not/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-selector-not/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", - "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", - "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", - "dev": true - }, - "node_modules/postcss-values-parser": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz", - "integrity": "sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg==", - "dev": true, - "dependencies": { - "flatten": "^1.0.2", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - }, - "engines": { - "node": ">=6.14.4" - } - }, - "node_modules/postcss/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.4.1.tgz", - "integrity": "sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==", - "dev": true, - "peer": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "dependencies": { - "fast-diff": "^1.1.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/pretty-format": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", - "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", - "dev": true, - "dependencies": { - "@jest/types": "^26.6.2", - "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/pretty-format/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/pretty-format/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/pretty-time": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz", - "integrity": "sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - } - }, - "node_modules/prop-types-exact": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/prop-types-exact/-/prop-types-exact-1.2.0.tgz", - "integrity": "sha512-K+Tk3Kd9V0odiXFP9fwDHUYRyvK3Nun3GVyPapSIs5OBkITAm15W0CPFD/YKTkMUAbc0b9CUwRQp2ybiBIq+eA==", - "dependencies": { - "has": "^1.0.3", - "object.assign": "^4.1.0", - "reflect.ownkeys": "^0.2.0" - } - }, - "node_modules/prop-types/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true - }, - "node_modules/pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true - }, - "node_modules/psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/puppeteer": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-10.4.0.tgz", - "integrity": "sha512-2cP8mBoqnu5gzAVpbZ0fRaobBWZM8GEUF4I1F6WbgHrKV/rz7SX8PG2wMymZgD0wo0UBlg2FBPNxlF/xlqW6+w==", - "dev": true, - "hasInstallScript": true, - "peer": true, - "dependencies": { - "debug": "4.3.1", - "devtools-protocol": "0.0.901419", - "extract-zip": "2.0.1", - "https-proxy-agent": "5.0.0", - "node-fetch": "2.6.1", - "pkg-dir": "4.2.0", - "progress": "2.0.1", - "proxy-from-env": "1.1.0", - "rimraf": "3.0.2", - "tar-fs": "2.0.0", - "unbzip2-stream": "1.3.3", - "ws": "7.4.6" - }, - "engines": { - "node": ">=10.18.1" - } - }, - "node_modules/puppeteer-core": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-10.4.0.tgz", - "integrity": "sha512-KU8zyb7AIOqNjLCN3wkrFXxh+EVaG+zrs2P03ATNjc3iwSxHsu5/EvZiREpQ/IJiT9xfQbDVgKcsvRuzLCxglQ==", - "dev": true, - "dependencies": { - "debug": "4.3.1", - "devtools-protocol": "0.0.901419", - "extract-zip": "2.0.1", - "https-proxy-agent": "5.0.0", - "node-fetch": "2.6.1", - "pkg-dir": "4.2.0", - "progress": "2.0.1", - "proxy-from-env": "1.1.0", - "rimraf": "3.0.2", - "tar-fs": "2.0.0", - "unbzip2-stream": "1.3.3", - "ws": "7.4.6" - }, - "engines": { - "node": ">=10.18.1" - } - }, - "node_modules/puppeteer-core/node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/puppeteer-core/node_modules/node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", - "dev": true, - "engines": { - "node": "4.x || >=6.0.0" - } - }, - "node_modules/puppeteer-core/node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/puppeteer-core/node_modules/progress": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.1.tgz", - "integrity": "sha512-OE+a6vzqazc+K6LxJrX5UPyKFvGnL5CYmq2jFGNIBWHpc4QyE49/YOumcrpQFJpfejmvRtbJzgO1zPmMCqlbBg==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/puppeteer-core/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/puppeteer-core/node_modules/ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "dev": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/puppeteer/node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "peer": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/puppeteer/node_modules/node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", - "dev": true, - "peer": true, - "engines": { - "node": "4.x || >=6.0.0" - } - }, - "node_modules/puppeteer/node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "peer": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/puppeteer/node_modules/progress": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.1.tgz", - "integrity": "sha512-OE+a6vzqazc+K6LxJrX5UPyKFvGnL5CYmq2jFGNIBWHpc4QyE49/YOumcrpQFJpfejmvRtbJzgO1zPmMCqlbBg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/puppeteer/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "peer": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/puppeteer/node_modules/ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", - "dev": true, - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, - "node_modules/qs": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", - "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", - "dev": true, - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/raf": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", - "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", - "dev": true, - "dependencies": { - "performance-now": "^2.1.0" - } - }, - "node_modules/railroad-diagrams": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz", - "integrity": "sha1-635iZ1SN3t+4mcG5Dlc3RVnN234=", - "dev": true - }, - "node_modules/randexp": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz", - "integrity": "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==", - "dev": true, - "dependencies": { - "discontinuous-range": "1.0.0", - "ret": "~0.1.10" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/raw-body": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.1.7.tgz", - "integrity": "sha1-HQJ8K/oRasxmI7yo8AAWVyqH1CU=", - "dev": true, - "dependencies": { - "bytes": "1", - "string_decoder": "0.10" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/raw-body/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/rc/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/re-resizable": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/re-resizable/-/re-resizable-6.9.1.tgz", - "integrity": "sha512-KRYAgr9/j1PJ3K+t+MBhlQ+qkkoLDJ1rs0z1heIWvYbCW/9Vq4djDU+QumJ3hQbwwtzXF6OInla6rOx6hhgRhQ==", - "dependencies": { - "fast-memoize": "^2.5.1" - }, - "peerDependencies": { - "react": "^16.13.1 || ^17.0.0", - "react-dom": "^16.13.1 || ^17.0.0" - } - }, - "node_modules/react": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", - "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-addons-shallow-compare": { - "version": "15.6.3", - "resolved": "https://registry.npmjs.org/react-addons-shallow-compare/-/react-addons-shallow-compare-15.6.3.tgz", - "integrity": "sha512-EDJbgKTtGRLhr3wiGDXK/+AEJ59yqGS+tKE6mue0aNXT6ZMR7VJbbzIiT6akotmHg1BLj46ElJSb+NBMp80XBg==", - "dependencies": { - "object-assign": "^4.1.0" - } - }, - "node_modules/react-colorful": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/react-colorful/-/react-colorful-5.5.0.tgz", - "integrity": "sha512-BuzrlrM0ylg7coPkXOrRqlf2BgHLw5L44sybbr9Lg4xy7w9e5N7fGYbojOO0s8J0nvrM3PERN2rVFkvSa24lnQ==", - "peerDependencies": { - "react": ">=16.8.0", - "react-dom": ">=16.8.0" - } - }, - "node_modules/react-dom": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", - "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "scheduler": "^0.20.2" - }, - "peerDependencies": { - "react": "17.0.2" - } - }, - "node_modules/react-easy-crop": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/react-easy-crop/-/react-easy-crop-3.5.3.tgz", - "integrity": "sha512-ApTbh+lzKAvKqYW81ihd5J6ZTNN3vPDwi6ncFuUrHPI4bko2DlYOESkRm+0NYoW0H8YLaD7bxox+Z3EvIzAbUA==", - "dependencies": { - "normalize-wheel": "^1.0.1", - "tslib": "2.0.1" - }, - "peerDependencies": { - "react": ">=16.4.0", - "react-dom": ">=16.4.0" - } - }, - "node_modules/react-easy-crop/node_modules/tslib": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz", - "integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==" - }, - "node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" - }, - "node_modules/react-moment-proptypes": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/react-moment-proptypes/-/react-moment-proptypes-1.8.1.tgz", - "integrity": "sha512-Er940DxWoObfIqPrZNfwXKugjxMIuk1LAuEzn23gytzV6hKS/sw108wibi9QubfMN4h+nrlje8eUCSbQRJo2fQ==", - "dependencies": { - "moment": ">=1.6.0" - }, - "peerDependencies": { - "moment": ">=1.6.0" - } - }, - "node_modules/react-resize-aware": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/react-resize-aware/-/react-resize-aware-3.1.1.tgz", - "integrity": "sha512-M8IyVLBN8D6tEUss+bxQlWte3ZYtNEGhg7rBxtCVG8yEBjUlZwUo5EFLq6tnvTZXcgAbCLjsQn+NCoTJKumRYg==", - "peerDependencies": { - "react": "^16.8.0 || 17.x" - } - }, - "node_modules/react-shallow-renderer": { - "version": "16.14.1", - "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.14.1.tgz", - "integrity": "sha512-rkIMcQi01/+kxiTE9D3fdS959U1g7gs+/rborw++42m1O9FAQiNI/UNRZExVUoAOprn4umcXf+pFRou8i4zuBg==", - "dev": true, - "dependencies": { - "object-assign": "^4.1.1", - "react-is": "^16.12.0 || ^17.0.0" - }, - "peerDependencies": { - "react": "^16.0.0 || ^17.0.0" - } - }, - "node_modules/react-test-renderer": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-17.0.2.tgz", - "integrity": "sha512-yaQ9cB89c17PUb0x6UfWRs7kQCorVdHlutU1boVPEsB8IDZH6n9tHxMacc3y0JoXOJUsZb/t/Mb8FUWMKaM7iQ==", - "dev": true, - "dependencies": { - "object-assign": "^4.1.1", - "react-is": "^17.0.2", - "react-shallow-renderer": "^16.13.1", - "scheduler": "^0.20.2" - }, - "peerDependencies": { - "react": "17.0.2" - } - }, - "node_modules/react-use-gesture": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/react-use-gesture/-/react-use-gesture-9.1.3.tgz", - "integrity": "sha512-CdqA2SmS/fj3kkS2W8ZU8wjTbVBAIwDWaRprX7OKaj7HlGwBasGEFggmk5qNklknqk9zK/h8D355bEJFTpqEMg==", - "deprecated": "This package is no longer maintained. Please use @use-gesture/react instead", - "peerDependencies": { - "react": ">= 16.8.0" - } - }, - "node_modules/read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", - "dev": true, - "dependencies": { - "pify": "^2.3.0" - } - }, - "node_modules/read-cache/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "dev": true, - "dependencies": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "dependencies": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg-up/node_modules/find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "dependencies": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg-up/node_modules/load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg-up/node_modules/parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "dependencies": { - "error-ex": "^1.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg-up/node_modules/path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "dependencies": { - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg-up/node_modules/path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg-up/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg-up/node_modules/read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "dependencies": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg-up/node_modules/strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "dependencies": { - "is-utf8": "^0.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg/node_modules/path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "dependencies": { - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/reakit": { - "version": "1.3.10", - "resolved": "https://registry.npmjs.org/reakit/-/reakit-1.3.10.tgz", - "integrity": "sha512-HxHtnegMDwidGU4Ik/fKTZ3coihf4nKeycs0QSIFWcau77qL5wL6xnqZrAxcjjDDPOIANct3LxTiAlf+qGLOlw==", - "dependencies": { - "@popperjs/core": "^2.5.4", - "body-scroll-lock": "^3.1.5", - "reakit-system": "^0.15.2", - "reakit-utils": "^0.15.2", - "reakit-warning": "^0.6.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/reakit" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" - } - }, - "node_modules/reakit-system": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/reakit-system/-/reakit-system-0.15.2.tgz", - "integrity": "sha512-TvRthEz0DmD0rcJkGamMYx+bATwnGNWJpe/lc8UV2Js8nnPvkaxrHk5fX9cVASFrWbaIyegZHCWUBfxr30bmmA==", - "dependencies": { - "reakit-utils": "^0.15.2" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" - } - }, - "node_modules/reakit-utils": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/reakit-utils/-/reakit-utils-0.15.2.tgz", - "integrity": "sha512-i/RYkq+W6hvfFmXw5QW7zvfJJT/K8a4qZ0hjA79T61JAFPGt23DsfxwyBbyK91GZrJ9HMrXFVXWMovsKBc1qEQ==", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" - } - }, - "node_modules/reakit-warning": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/reakit-warning/-/reakit-warning-0.6.2.tgz", - "integrity": "sha512-z/3fvuc46DJyD3nJAUOto6inz2EbSQTjvI/KBQDqxwB0y02HDyeP8IWOJxvkuAUGkWpeSx+H3QWQFSNiPcHtmw==", - "dependencies": { - "reakit-utils": "^0.15.2" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0" - } - }, - "node_modules/rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", - "dev": true, - "dependencies": { - "resolve": "^1.9.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dev": true, - "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/redux": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/redux/-/redux-4.1.2.tgz", - "integrity": "sha512-SH8PglcebESbd/shgf6mii6EIoRM0zrQyjcuQ+ojmfxjTtE0z9Y8pa62iA/OJ58qjP6j27uyW4kUF4jl/jd6sw==", - "dependencies": { - "@babel/runtime": "^7.9.2" - } - }, - "node_modules/redux-multi": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/redux-multi/-/redux-multi-0.1.12.tgz", - "integrity": "sha1-KOH+XklnLLxb2KB/Cyrq8O+DVcI=" - }, - "node_modules/reflect.ownkeys": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz", - "integrity": "sha1-dJrO7H8/34tj+SegSAnpDFwLNGA=" - }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true - }, - "node_modules/regenerate-unicode-properties": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", - "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", - "dev": true, - "dependencies": { - "regenerate": "^1.4.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" - }, - "node_modules/regenerator-transform": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", - "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, - "node_modules/regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "dependencies": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", - "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/regexpu-core": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", - "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", - "dev": true, - "dependencies": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^9.0.0", - "regjsgen": "^0.5.2", - "regjsparser": "^0.7.0", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regextras": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/regextras/-/regextras-0.8.0.tgz", - "integrity": "sha512-k519uI04Z3SaY0fLX843MRXnDeG2+vHOFsyhiPZvNLe7r8rD2YNRjq4BQLZZ0oAr2NrtvZlICsXysGNFPGa3CQ==", - "dev": true, - "engines": { - "node": ">=0.1.14" - } - }, - "node_modules/regjsgen": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", - "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", - "dev": true - }, - "node_modules/regjsparser": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", - "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", - "dev": true, - "dependencies": { - "jsesc": "~0.5.0" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - } - }, - "node_modules/remark": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/remark/-/remark-13.0.0.tgz", - "integrity": "sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA==", - "dev": true, - "dependencies": { - "remark-parse": "^9.0.0", - "remark-stringify": "^9.0.0", - "unified": "^9.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-parse": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz", - "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==", - "dev": true, - "dependencies": { - "mdast-util-from-markdown": "^0.8.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-stringify": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-9.0.1.tgz", - "integrity": "sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==", - "dev": true, - "dependencies": { - "mdast-util-to-markdown": "^0.6.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/rememo": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/rememo/-/rememo-3.0.0.tgz", - "integrity": "sha512-eWtut/7pqMRnSccbexb647iPjN7ir6Tmf4RG92ZVlykFEkHqGYy9tWnpHH3I+FS+WQ6lQ1i1iDgarYzGKgTcRQ==" - }, - "node_modules/remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "node_modules/repeat-element": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", - "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" - }, - "node_modules/requireindex": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", - "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", - "dev": true, - "engines": { - "node": ">=0.10.5" - } - }, - "node_modules/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-bin": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/resolve-bin/-/resolve-bin-0.4.3.tgz", - "integrity": "sha512-9u8TMpc+SEHXxQXblXHz5yRvRZERkCZimFN9oz85QI3uhkh7nqfjm6OGTLg+8vucpXGcY4jLK6WkylPmt7GSvw==", - "dev": true, - "dependencies": { - "find-parent-dir": "~0.3.0" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-dir": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz", - "integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=", - "dev": true, - "dependencies": { - "expand-tilde": "^1.2.2", - "global-modules": "^0.2.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve-dir/node_modules/expand-tilde": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", - "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=", - "dev": true, - "dependencies": { - "os-homedir": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "deprecated": "https://github.com/lydell/resolve-url#deprecated", - "dev": true - }, - "node_modules/resolve.exports": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", - "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true, - "dependencies": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/restore-cursor/node_modules/mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/restore-cursor/node_modules/onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, - "dependencies": { - "mimic-fn": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/rst-selector-parser": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz", - "integrity": "sha1-gbIw6i/MYGbInjRy3nlChdmwPZE=", - "dev": true, - "dependencies": { - "lodash.flattendeep": "^4.4.0", - "nearley": "^2.7.10" - } - }, - "node_modules/rsvp": { - "version": "4.8.5", - "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", - "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", - "dev": true, - "engines": { - "node": "6.* || >= 7.*" - } - }, - "node_modules/rtlcss": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-2.6.2.tgz", - "integrity": "sha512-06LFAr+GAPo+BvaynsXRfoYTJvSaWRyOhURCQ7aeI1MKph9meM222F+Zkt3bDamyHHJuGi3VPtiRkpyswmQbGA==", - "dev": true, - "dependencies": { - "@choojs/findup": "^0.2.1", - "chalk": "^2.4.2", - "mkdirp": "^0.5.1", - "postcss": "^6.0.23", - "strip-json-comments": "^2.0.0" - }, - "bin": { - "rtlcss": "bin/rtlcss.js" - } - }, - "node_modules/rtlcss-webpack-plugin": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/rtlcss-webpack-plugin/-/rtlcss-webpack-plugin-4.0.6.tgz", - "integrity": "sha512-sWWr/SPVGckqniXpTXWZqh1tDh9LghlUygtnAeNKMrHEiq6xoPDWQo+/0NCZ8KPsju0hovWtvI+jS1kYjTDZwQ==", - "dev": true, - "dependencies": { - "babel-runtime": "~6.25.0", - "rtlcss": "^2.2.1" - } - }, - "node_modules/rtlcss/node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/rtlcss/node_modules/postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "dependencies": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/rtlcss/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/rtlcss/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/rungen": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/rungen/-/rungen-0.3.2.tgz", - "integrity": "sha1-QAwJ6+kU57F+C27zJjQA/Cq8fLM=" - }, - "node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/rxjs/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/safe-json-parse": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/safe-json-parse/-/safe-json-parse-1.0.1.tgz", - "integrity": "sha1-PnZyPjjf3aE8mx0poeB//uSzC1c=", - "dev": true - }, - "node_modules/safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "dependencies": { - "ret": "~0.1.10" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/sane": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", - "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", - "deprecated": "some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added", - "dev": true, - "dependencies": { - "@cnakazawa/watch": "^1.0.3", - "anymatch": "^2.0.0", - "capture-exit": "^2.0.0", - "exec-sh": "^0.3.2", - "execa": "^1.0.0", - "fb-watchman": "^2.0.0", - "micromatch": "^3.1.4", - "minimist": "^1.1.1", - "walker": "~1.0.5" - }, - "bin": { - "sane": "src/cli.js" - }, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/sane/node_modules/anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "node_modules/sane/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "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" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/sane/node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "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" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/sane/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/sane/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "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" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/sane/node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sass": { - "version": "1.43.4", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.43.4.tgz", - "integrity": "sha512-/ptG7KE9lxpGSYiXn7Ar+lKOv37xfWsZRtFYal2QHNigyVQDx685VFT/h7ejVr+R8w7H4tmUgtulsKl5YpveOg==", - "dev": true, - "dependencies": { - "chokidar": ">=3.0.0 <4.0.0" - }, - "bin": { - "sass": "sass.js" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/sass-loader": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.3.0.tgz", - "integrity": "sha512-6l9qwhdOb7qSrtOu96QQ81LVl8v6Dp9j1w3akOm0aWHyrTYtagDt5+kS32N4yq4hHk3M+rdqoRMH+lIdqvW6HA==", - "dev": true, - "dependencies": { - "klona": "^2.0.4", - "neo-async": "^2.6.2" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "fibers": ">= 3.1.0", - "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0", - "sass": "^1.3.0", - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "fibers": { - "optional": true - }, - "node-sass": { - "optional": true - }, - "sass": { - "optional": true - } - } - }, - "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "node_modules/saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", - "dev": true, - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/scheduler": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", - "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "node_modules/schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/select": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", - "integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=" - }, - "node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/semver-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", - "dev": true - }, - "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, - "node_modules/set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shallow-clone": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz", - "integrity": "sha1-WQnodLp3EG1zrEFM/sH/yofZcGA=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.1", - "kind-of": "^2.0.1", - "lazy-cache": "^0.2.3", - "mixin-object": "^2.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shallow-clone/node_modules/kind-of": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", - "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=", - "dev": true, - "dependencies": { - "is-buffer": "^1.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shallow-clone/node_modules/lazy-cache": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", - "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shell-quote": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", - "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", - "dev": true - }, - "node_modules/shellwords": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", - "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", - "dev": true, - "optional": true - }, - "node_modules/showdown": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/showdown/-/showdown-1.9.1.tgz", - "integrity": "sha512-9cGuS382HcvExtf5AHk7Cb4pAeQQ+h0eTr33V1mu+crYWV4KvWAw6el92bDrqGEk5d46Ai/fhbEUwqJ/mTCNEA==", - "dependencies": { - "yargs": "^14.2" - }, - "bin": { - "showdown": "bin/showdown.js" - } - }, - "node_modules/showdown/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/showdown/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/showdown/node_modules/cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "node_modules/showdown/node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - }, - "node_modules/showdown/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/showdown/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "engines": { - "node": ">=4" - } - }, - "node_modules/showdown/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/showdown/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/showdown/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/showdown/node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/showdown/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "engines": { - "node": ">=4" - } - }, - "node_modules/showdown/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/showdown/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/showdown/node_modules/wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/showdown/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" - }, - "node_modules/showdown/node_modules/yargs": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz", - "integrity": "sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==", - "dependencies": { - "cliui": "^5.0.0", - "decamelize": "^1.2.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": "^15.0.1" - } - }, - "node_modules/showdown/node_modules/yargs-parser": { - "version": "15.0.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.3.tgz", - "integrity": "sha512-/MVEVjTXy/cGAjdtQf8dW3V9b97bPN7rNn8ETj6BmAQL7ibC7O1Q9SPJbGjgh3SlwoBNXMzj/ZGIj8mBgl12YA==", - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz", - "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==", - "dev": true - }, - "node_modules/simple-html-tokenizer": { - "version": "0.5.11", - "resolved": "https://registry.npmjs.org/simple-html-tokenizer/-/simple-html-tokenizer-0.5.11.tgz", - "integrity": "sha512-C2WEK/Z3HoSFbYq8tI7ni3eOo/NneSPRoPpcM7WdLjFOArFuyXEjAoCdOC3DgMfRyziZQ1hCNR4mrNdWEvD0og==" - }, - "node_modules/sirv": { - "version": "1.0.18", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.18.tgz", - "integrity": "sha512-f2AOPogZmXgJ9Ma2M22ZEhc1dNtRIzcEkiflMFeVTRq+OViOZMvH1IPMVOwrKaxpSaHioBJiDR0SluRqGa7atA==", - "dev": true, - "dependencies": { - "@polka/url": "^1.0.0-next.20", - "mime": "^2.3.1", - "totalist": "^1.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/slice-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/slice-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "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" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "dependencies": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "dependencies": { - "kind-of": "^3.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/snapdragon/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true - }, - "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", - "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-loader": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.0.tgz", - "integrity": "sha512-GKGWqWvYr04M7tn8dryIWvb0s8YM41z82iQv01yBtIylgxax0CwvSy6gc2Y02iuXwEfGWRlMicH0nvms9UZphw==", - "dev": true, - "dependencies": { - "abab": "^2.0.5", - "iconv-lite": "^0.6.2", - "source-map-js": "^0.6.2" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, - "node_modules/source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "dev": true, - "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" - } - }, - "node_modules/source-map-support": { - "version": "0.5.20", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz", - "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", - "dev": true - }, - "node_modules/spawnd": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/spawnd/-/spawnd-5.0.0.tgz", - "integrity": "sha512-28+AJr82moMVWolQvlAIv3JcYDkjkFTEmfDc503wxrF5l2rQ3dFz6DpbXp3kD4zmgGGldfM4xM4v1sFj/ZaIOA==", - "dev": true, - "dependencies": { - "exit": "^0.1.2", - "signal-exit": "^3.0.3", - "tree-kill": "^1.2.2", - "wait-port": "^0.2.9" - } - }, - "node_modules/spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz", - "integrity": "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==", - "dev": true - }, - "node_modules/specificity": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/specificity/-/specificity-0.4.1.tgz", - "integrity": "sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg==", - "dev": true, - "bin": { - "specificity": "bin/specificity" - } - }, - "node_modules/split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "dependencies": { - "extend-shallow": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", - "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" - }, - "node_modules/stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "dev": true - }, - "node_modules/stack-utils": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", - "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "dependencies": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/std-env": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-2.3.1.tgz", - "integrity": "sha512-eOsoKTWnr6C8aWrqJJ2KAReXoa7Vn5Ywyw6uCXgA/xDhxPoaIsBa5aNJmISY04dLwXPBnDHW4diGM7Sn5K4R/g==", - "dev": true, - "dependencies": { - "ci-info": "^3.1.1" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/string-argv": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", - "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", - "dev": true, - "engines": { - "node": ">=0.6.19" - } - }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/string-template": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz", - "integrity": "sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0=", - "dev": true - }, - "node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/string-width/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/string.prototype.matchall": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz", - "integrity": "sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.3.1", - "side-channel": "^1.0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.padend": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.3.tgz", - "integrity": "sha512-jNIIeokznm8SD/TZISQsZKYu7RJyheFNt84DUPrh482GC8RVp2MKqm2O5oBRdGxbDQoXrhhWtPIWQOiy20svUg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.5.tgz", - "integrity": "sha512-Lnh17webJVsD6ECeovpVN17RlAKjmz4rF9S+8Y45CkMc/ufVpTkU3vZIyIC7sllQ1FCvObZnnCdNs/HXTUOTlg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/stringify-object": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", - "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", - "dev": true, - "dependencies": { - "get-own-enumerable-property-symbols": "^3.0.0", - "is-obj": "^1.0.1", - "is-regexp": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, - "dependencies": { - "min-indent": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/strip-outer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", - "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-outer/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/style-search": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", - "integrity": "sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI=", - "dev": true - }, - "node_modules/style-value-types": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/style-value-types/-/style-value-types-4.1.4.tgz", - "integrity": "sha512-LCJL6tB+vPSUoxgUBt9juXIlNJHtBMy8jkXzUJSBzeHWdBu6lhzHqCvLVkXFGsFIlNa2ln1sQHya/gzaFmB2Lg==", - "dependencies": { - "hey-listen": "^1.0.8", - "tslib": "^2.1.0" - } - }, - "node_modules/stylelint": { - "version": "13.13.1", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.13.1.tgz", - "integrity": "sha512-Mv+BQr5XTUrKqAXmpqm6Ddli6Ief+AiPZkRsIrAoUKFuq/ElkUh9ZMYxXD0iQNZ5ADghZKLOWz1h7hTClB7zgQ==", - "dev": true, - "dependencies": { - "@stylelint/postcss-css-in-js": "^0.37.2", - "@stylelint/postcss-markdown": "^0.36.2", - "autoprefixer": "^9.8.6", - "balanced-match": "^2.0.0", - "chalk": "^4.1.1", - "cosmiconfig": "^7.0.0", - "debug": "^4.3.1", - "execall": "^2.0.0", - "fast-glob": "^3.2.5", - "fastest-levenshtein": "^1.0.12", - "file-entry-cache": "^6.0.1", - "get-stdin": "^8.0.0", - "global-modules": "^2.0.0", - "globby": "^11.0.3", - "globjoin": "^0.1.4", - "html-tags": "^3.1.0", - "ignore": "^5.1.8", - "import-lazy": "^4.0.0", - "imurmurhash": "^0.1.4", - "known-css-properties": "^0.21.0", - "lodash": "^4.17.21", - "log-symbols": "^4.1.0", - "mathml-tag-names": "^2.1.3", - "meow": "^9.0.0", - "micromatch": "^4.0.4", - "normalize-selector": "^0.2.0", - "postcss": "^7.0.35", - "postcss-html": "^0.36.0", - "postcss-less": "^3.1.4", - "postcss-media-query-parser": "^0.2.3", - "postcss-resolve-nested-selector": "^0.1.1", - "postcss-safe-parser": "^4.0.2", - "postcss-sass": "^0.4.4", - "postcss-scss": "^2.1.1", - "postcss-selector-parser": "^6.0.5", - "postcss-syntax": "^0.36.2", - "postcss-value-parser": "^4.1.0", - "resolve-from": "^5.0.0", - "slash": "^3.0.0", - "specificity": "^0.4.1", - "string-width": "^4.2.2", - "strip-ansi": "^6.0.0", - "style-search": "^0.1.0", - "sugarss": "^2.0.0", - "svg-tags": "^1.0.0", - "table": "^6.6.0", - "v8-compile-cache": "^2.3.0", - "write-file-atomic": "^3.0.3" - }, - "bin": { - "stylelint": "bin/stylelint.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/stylelint" - } - }, - "node_modules/stylelint-config-recommended": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-3.0.0.tgz", - "integrity": "sha512-F6yTRuc06xr1h5Qw/ykb2LuFynJ2IxkKfCMf+1xqPffkxh0S09Zc902XCffcsw/XMFq/OzQ1w54fLIDtmRNHnQ==", - "dev": true, - "peerDependencies": { - "stylelint": ">=10.1.0" - } - }, - "node_modules/stylelint-config-recommended-scss": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-4.3.0.tgz", - "integrity": "sha512-/noGjXlO8pJTr/Z3qGMoaRFK8n1BFfOqmAbX1RjTIcl4Yalr+LUb1zb9iQ7pRx1GsEBXOAm4g2z5/jou/pfMPg==", - "dev": true, - "dependencies": { - "stylelint-config-recommended": "^5.0.0" - }, - "peerDependencies": { - "stylelint": "^10.1.0 || ^11.0.0 || ^12.0.0 || ^13.0.0", - "stylelint-scss": "^3.0.0" - } - }, - "node_modules/stylelint-config-recommended-scss/node_modules/stylelint-config-recommended": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-5.0.0.tgz", - "integrity": "sha512-c8aubuARSu5A3vEHLBeOSJt1udOdS+1iue7BmJDTSXoCBmfEQmmWX+59vYIj3NQdJBY6a/QRv1ozVFpaB9jaqA==", - "dev": true, - "peerDependencies": { - "stylelint": "^13.13.0" - } - }, - "node_modules/stylelint-scss": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-3.21.0.tgz", - "integrity": "sha512-CMI2wSHL+XVlNExpauy/+DbUcB/oUZLARDtMIXkpV/5yd8nthzylYd1cdHeDMJVBXeYHldsnebUX6MoV5zPW4A==", - "dev": true, - "dependencies": { - "lodash": "^4.17.15", - "postcss-media-query-parser": "^0.2.3", - "postcss-resolve-nested-selector": "^0.1.1", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "peerDependencies": { - "stylelint": "^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0" - } - }, - "node_modules/stylelint/node_modules/@stylelint/postcss-css-in-js": { - "version": "0.37.2", - "resolved": "https://registry.npmjs.org/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.2.tgz", - "integrity": "sha512-nEhsFoJurt8oUmieT8qy4nk81WRHmJynmVwn/Vts08PL9fhgIsMhk1GId5yAN643OzqEEb5S/6At2TZW7pqPDA==", - "dev": true, - "dependencies": { - "@babel/core": ">=7.9.0" - }, - "peerDependencies": { - "postcss": ">=7.0.0", - "postcss-syntax": ">=0.36.2" - } - }, - "node_modules/stylelint/node_modules/@stylelint/postcss-markdown": { - "version": "0.36.2", - "resolved": "https://registry.npmjs.org/@stylelint/postcss-markdown/-/postcss-markdown-0.36.2.tgz", - "integrity": "sha512-2kGbqUVJUGE8dM+bMzXG/PYUWKkjLIkRLWNh39OaADkiabDRdw8ATFCgbMz5xdIcvwspPAluSL7uY+ZiTWdWmQ==", - "deprecated": "Use the original unforked package instead: postcss-markdown", - "dev": true, - "dependencies": { - "remark": "^13.0.0", - "unist-util-find-all-after": "^3.0.2" - }, - "peerDependencies": { - "postcss": ">=7.0.0", - "postcss-syntax": ">=0.36.2" - } - }, - "node_modules/stylelint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/stylelint/node_modules/balanced-match": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", - "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", - "dev": true - }, - "node_modules/stylelint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/stylelint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/stylelint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/stylelint/node_modules/dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "dev": true, - "dependencies": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - } - }, - "node_modules/stylelint/node_modules/dom-serializer/node_modules/domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/stylelint/node_modules/dom-serializer/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/stylelint/node_modules/domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true - }, - "node_modules/stylelint/node_modules/domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "dev": true, - "dependencies": { - "domelementtype": "1" - } - }, - "node_modules/stylelint/node_modules/domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "dev": true, - "dependencies": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "node_modules/stylelint/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/stylelint/node_modules/entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", - "dev": true - }, - "node_modules/stylelint/node_modules/global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "dev": true, - "dependencies": { - "global-prefix": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/stylelint/node_modules/global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "dev": true, - "dependencies": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/stylelint/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/stylelint/node_modules/hosted-git-info": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", - "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stylelint/node_modules/htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "dev": true, - "dependencies": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" - } - }, - "node_modules/stylelint/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stylelint/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stylelint/node_modules/meow": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", - "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", - "dev": true, - "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize": "^1.2.0", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/stylelint/node_modules/normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stylelint/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/stylelint/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/stylelint/node_modules/postcss-html": { - "version": "0.36.0", - "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-0.36.0.tgz", - "integrity": "sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw==", - "dev": true, - "dependencies": { - "htmlparser2": "^3.10.0" - }, - "peerDependencies": { - "postcss": ">=5.0.0", - "postcss-syntax": ">=0.36.0" - } - }, - "node_modules/stylelint/node_modules/postcss-syntax": { - "version": "0.36.2", - "resolved": "https://registry.npmjs.org/postcss-syntax/-/postcss-syntax-0.36.2.tgz", - "integrity": "sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==", - "dev": true, - "peerDependencies": { - "postcss": ">=5.0.0" - } - }, - "node_modules/stylelint/node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/stylelint/node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/stylelint/node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/stylelint/node_modules/read-pkg/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/stylelint/node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/stylelint/node_modules/read-pkg/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/stylelint/node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/stylelint/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stylelint/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stylelint/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/stylelint/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/stylelint/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/stylelint/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/stylelint/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/stylis": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.10.tgz", - "integrity": "sha512-m3k+dk7QeJw660eIKRRn3xPF6uuvHs/FFzjX3HQ5ove0qYsiygoAhwn5a3IYKaZPo5LrYD0rfVmtv1gNY1uYwg==" - }, - "node_modules/sugarss": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-2.0.0.tgz", - "integrity": "sha512-WfxjozUk0UVA4jm+U1d736AUpzSrNsQcIbyOkoE364GrtWmIrFdk5lksEupgWMD4VaT/0kVx1dobpiDumSgmJQ==", - "dev": true, - "dependencies": { - "postcss": "^7.0.2" - } - }, - "node_modules/sugarss/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/sugarss/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/sugarss/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-hyperlinks": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", - "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-hyperlinks/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-hyperlinks/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/svg-parser": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", - "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==", - "dev": true - }, - "node_modules/svg-tags": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", - "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=", - "dev": true - }, - "node_modules/svgo": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.7.0.tgz", - "integrity": "sha512-aDLsGkre4fTDCWvolyW+fs8ZJFABpzLXbtdK1y71CKnHzAnpDxKXPj2mNKj+pyOXUCzFHzuxRJ94XOFygOWV3w==", - "dev": true, - "dependencies": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "nanocolors": "^0.1.12", - "stable": "^0.1.8" - }, - "bin": { - "svgo": "bin/svgo" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/svgo/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, - "node_modules/table": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.2.tgz", - "integrity": "sha512-UFZK67uvyNivLeQbVtkiUs8Uuuxv24aSL4/Vil2PJVtMgU8Lx0CYkP12uCGa3kjyQzOSgV1+z9Wkb82fCGsO0g==", - "dev": true, - "dependencies": { - "ajv": "^8.0.1", - "lodash.clonedeep": "^4.5.0", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/table/node_modules/ajv": { - "version": "8.6.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.3.tgz", - "integrity": "sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/table/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/table/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/table/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/table/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/table/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/table/node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/table/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tannin": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/tannin/-/tannin-1.2.0.tgz", - "integrity": "sha512-U7GgX/RcSeUETbV7gYgoz8PD7Ni4y95pgIP/Z6ayI3CfhSujwKEBlGFTCRN+Aqnuyf4AN2yHL+L8x+TCGjb9uA==", - "dependencies": { - "@tannin/plural-forms": "^1.1.0" - } - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/tar-fs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.0.tgz", - "integrity": "sha512-vaY0obB6Om/fso8a8vakQBzwholQ7v5+uy+tF3Ozvxv1KNezmVQAiWtcNmMHFSFPqL3dJA8ha6gdtFbfX9mcxA==", - "dev": true, - "dependencies": { - "chownr": "^1.1.1", - "mkdirp": "^0.5.1", - "pump": "^3.0.0", - "tar-stream": "^2.0.0" - } - }, - "node_modules/tar-fs/node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dev": true, - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/terminal-link/node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/terminal-link/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/terser": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz", - "integrity": "sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==", - "dev": true, - "dependencies": { - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.2.4.tgz", - "integrity": "sha512-E2CkNMN+1cho04YpdANyRrn8CyN4yMy+WdFKZIySFZrGXZxJwJP6PMNGGc/Mcr6qygQHUUqRxnAPmi0M9f00XA==", - "dev": true, - "dependencies": { - "jest-worker": "^27.0.6", - "p-limit": "^3.1.0", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1", - "terser": "^5.7.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/terser-webpack-plugin/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/terser/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "node_modules/throat": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", - "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", - "dev": true, - "peer": true - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "node_modules/timsort": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", - "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", - "dev": true - }, - "node_modules/tiny-emitter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", - "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" - }, - "node_modules/tiny-lr": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-1.1.1.tgz", - "integrity": "sha512-44yhA3tsaRoMOjQQ+5v5mVdqef+kH6Qze9jTpqtVufgYjYt08zyZAwNwwVBj3i1rJMnR52IxOW0LK0vBzgAkuA==", - "dev": true, - "dependencies": { - "body": "^5.1.0", - "debug": "^3.1.0", - "faye-websocket": "~0.10.0", - "livereload-js": "^2.3.0", - "object-assign": "^4.1.0", - "qs": "^6.4.0" - } - }, - "node_modules/tiny-lr/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/tinycolor2": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.2.tgz", - "integrity": "sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==", - "engines": { - "node": "*" - } - }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "engines": { - "node": ">=4" - } - }, - "node_modules/to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "dependencies": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/totalist": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz", - "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/tough-cookie": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", - "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", - "dev": true, - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.1.2" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/traverse": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", - "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=" - }, - "node_modules/tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true, - "bin": { - "tree-kill": "cli.js" - } - }, - "node_modules/trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/trim-repeated": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", - "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/trim-repeated/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/trough": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", - "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/tsconfig-paths": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.11.0.tgz", - "integrity": "sha512-7ecdYDnIdmv639mmDwslG6KQg1Z9STTz1j7Gcz0xa+nshh/gKDAHcPxRbWOsA3SPp0tXP2leTcY9Kw+NAkfZzA==", - "dev": true, - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.0", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/tsconfig-paths/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/tunnel": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", - "dev": true, - "engines": { - "node": ">=0.6.11 <=0.7.0 || >=0.7.3" - } - }, - "node_modules/turbo-combine-reducers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/turbo-combine-reducers/-/turbo-combine-reducers-1.0.2.tgz", - "integrity": "sha512-gHbdMZlA6Ym6Ur5pSH/UWrNQMIM9IqTH6SoL1DbHpqEdQ8i+cFunSmSlFykPt0eGQwZ4d/XTHOl74H0/kFBVWw==" - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", - "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, - "node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/uc.micro": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", - "dev": true - }, - "node_modules/unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", - "dependencies": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/unbzip2-stream": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz", - "integrity": "sha512-fUlAF7U9Ah1Q6EieQ4x4zLNejrRvDWUYmxXUpN3uziFYCHapjWFaCAnreY9bGgxzaMCFAPPpYNng57CypwJVhg==", - "dev": true, - "dependencies": { - "buffer": "^5.2.1", - "through": "^2.3.8" - } - }, - "node_modules/unc-path-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/underscore.string": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.5.tgz", - "integrity": "sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg==", - "dev": true, - "dependencies": { - "sprintf-js": "^1.0.3", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": "*" - } - }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", - "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unified": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz", - "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==", - "dev": true, - "dependencies": { - "bail": "^1.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^2.0.0", - "trough": "^1.0.0", - "vfile": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unified/node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "engines": { - "node": ">=4" - } - }, - "node_modules/unified/node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", - "dev": true - }, - "node_modules/uniqs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", - "dev": true - }, - "node_modules/unist-util-find-all-after": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-3.0.2.tgz", - "integrity": "sha512-xaTC/AGZ0rIM2gM28YVRAFPIZpzbpDtU3dRmp7EXlNVA8ziQc4hY3H7BHXM1J49nEmiqc3svnqMReW+PGqbZKQ==", - "dev": true, - "dependencies": { - "unist-util-is": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-is": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", - "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-stringify-position": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", - "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", - "dev": true - }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/unquote": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", - "dev": true - }, - "node_modules/unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "dependencies": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "dependencies": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "dependencies": { - "isarray": "1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "deprecated": "Please see https://github.com/lydell/urix#deprecated", - "dev": true - }, - "node_modules/url-loader": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", - "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", - "dev": true, - "dependencies": { - "loader-utils": "^2.0.0", - "mime-types": "^2.1.27", - "schema-utils": "^3.0.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "file-loader": "*", - "webpack": "^4.0.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "file-loader": { - "optional": true - } - } - }, - "node_modules/url-loader/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/use-memo-one": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/use-memo-one/-/use-memo-one-1.1.2.tgz", - "integrity": "sha512-u2qFKtxLsia/r8qG0ZKkbytbztzRb317XCkT7yP8wxL0tZ/CzK2G+WWie5vWvpyeP7+YoPIwbJoIHJ4Ba4k0oQ==", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "node_modules/util.promisify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", - "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "node_modules/v8-to-istanbul": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.0.tgz", - "integrity": "sha512-/PRhfd8aTNp9Ggr62HPzXg2XasNFGy5PBt0Rp04du7/8GNNSgxFL6WBTkgMKSL9bFjH+8kKEG3f37FmxiTqUUA==", - "dev": true, - "peer": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/v8-to-istanbul/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/v8flags": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", - "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", - "dev": true, - "dependencies": { - "homedir-polyfill": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/vendors": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", - "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/vfile": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", - "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^2.0.0", - "vfile-message": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-message": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", - "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile/node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "engines": { - "node": ">=4" - } - }, - "node_modules/w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "dev": true, - "dependencies": { - "browser-process-hrtime": "^1.0.0" - } - }, - "node_modules/w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", - "dev": true, - "dependencies": { - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/wait-on": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-5.3.0.tgz", - "integrity": "sha512-DwrHrnTK+/0QFaB9a8Ol5Lna3k7WvUR4jzSKmz0YaPBpuN2sACyiPVKVfj6ejnjcajAcvn3wlbTyMIn9AZouOg==", - "dev": true, - "dependencies": { - "axios": "^0.21.1", - "joi": "^17.3.0", - "lodash": "^4.17.21", - "minimist": "^1.2.5", - "rxjs": "^6.6.3" - }, - "bin": { - "wait-on": "bin/wait-on" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/wait-port": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/wait-port/-/wait-port-0.2.9.tgz", - "integrity": "sha512-hQ/cVKsNqGZ/UbZB/oakOGFqic00YAMM5/PEj3Bt4vKarv2jWIWzDbqlwT94qMs/exAQAsvMOq99sZblV92zxQ==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "commander": "^3.0.2", - "debug": "^4.1.1" - }, - "bin": { - "wait-port": "bin/wait-port.js" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wait-port/node_modules/commander": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", - "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", - "dev": true - }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "dependencies": { - "makeerror": "1.0.12" - } - }, - "node_modules/watchpack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.2.0.tgz", - "integrity": "sha512-up4YAn/XHgZHIxFBVCdlMiWDj6WaLKpwVeGQk2I5thdYxF/KmF0aaz6TfJZ/hfl1h/XlcDr7k1KH7ThDagpFaA==", - "dev": true, - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true, - "engines": { - "node": ">=10.4" - } - }, - "node_modules/webpack": { - "version": "5.60.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.60.0.tgz", - "integrity": "sha512-OL5GDYi2dKxnwJPSOg2tODgzDxAffN0osgWkZaBo/l3ikCxDFP+tuJT3uF7GyBE3SDBpKML/+a8EobyWAQO3DQ==", - "dev": true, - "dependencies": { - "@types/eslint-scope": "^3.7.0", - "@types/estree": "^0.0.50", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.8.3", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.4", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.2.0", - "webpack-sources": "^3.2.0" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-bundle-analyzer": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.5.0.tgz", - "integrity": "sha512-GUMZlM3SKwS8Z+CKeIFx7CVoHn3dXFcUAjT/dcZQQmfSZGvitPfMob2ipjai7ovFFqPvTqkEZ/leL4O0YOdAYQ==", - "dev": true, - "dependencies": { - "acorn": "^8.0.4", - "acorn-walk": "^8.0.0", - "chalk": "^4.1.0", - "commander": "^7.2.0", - "gzip-size": "^6.0.0", - "lodash": "^4.17.20", - "opener": "^1.5.2", - "sirv": "^1.0.7", - "ws": "^7.3.1" - }, - "bin": { - "webpack-bundle-analyzer": "lib/bin/analyzer.js" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/acorn": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz", - "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/webpack-bundle-analyzer/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/webpack-cli": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.1.tgz", - "integrity": "sha512-JYRFVuyFpzDxMDB+v/nanUdQYcZtqFPGzmlW4s+UkPMFhSpfRNmf1z4AwYcHJVdvEFAM7FFCQdNTpsBYhDLusQ==", - "dev": true, - "dependencies": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.1.0", - "@webpack-cli/info": "^1.4.0", - "@webpack-cli/serve": "^1.6.0", - "colorette": "^2.0.14", - "commander": "^7.0.0", - "execa": "^5.0.0", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", - "webpack-merge": "^5.7.3" - }, - "bin": { - "webpack-cli": "bin/cli.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "peerDependencies": { - "webpack": "4.x.x || 5.x.x" - }, - "peerDependenciesMeta": { - "@webpack-cli/generators": { - "optional": true - }, - "@webpack-cli/migrate": { - "optional": true - }, - "webpack-bundle-analyzer": { - "optional": true - }, - "webpack-dev-server": { - "optional": true - } - } - }, - "node_modules/webpack-cli/node_modules/colorette": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", - "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", - "dev": true - }, - "node_modules/webpack-cli/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/webpack-cli/node_modules/interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/webpack-livereload-plugin": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/webpack-livereload-plugin/-/webpack-livereload-plugin-3.0.2.tgz", - "integrity": "sha512-5JeZ2dgsvSNG+clrkD/u2sEiPcNk4qwCVZZmW8KpqKcNlkGv7IJjdVrq13+etAmMZYaCF1EGXdHkVFuLgP4zfw==", - "dev": true, - "dependencies": { - "anymatch": "^3.1.1", - "portfinder": "^1.0.17", - "schema-utils": ">1.0.0", - "tiny-lr": "^1.1.1" - }, - "engines": { - "node": ">= 10.18.0" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "dev": true, - "dependencies": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/webpack-merge/node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-merge/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-merge/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-merge/node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/webpack-sources": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz", - "integrity": "sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==", - "dev": true, - "dependencies": { - "source-list-map": "^2.0.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack-sources/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/acorn": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz", - "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/webpack/node_modules/acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true, - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/webpack/node_modules/webpack-sources": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.1.tgz", - "integrity": "sha512-t6BMVLQ0AkjBOoRTZgqrWm7xbXMBzD+XDq2EZ96+vMfn3qKgsvdXZhbPZ4ElUOpdv4u+iiGe+w3+J75iy/bYGA==", - "dev": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpackbar": { - "version": "5.0.0-3", - "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-5.0.0-3.tgz", - "integrity": "sha512-viW6KCYjMb0NPoDrw2jAmLXU2dEOhRrtku28KmOfeE1vxbfwCYuTbTaMhnkrCZLFAFyY9Q49Z/jzYO80Dw5b8g==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.3.1", - "chalk": "^4.1.0", - "consola": "^2.15.0", - "figures": "^3.2.0", - "pretty-time": "^1.1.0", - "std-env": "^2.2.1", - "text-table": "^0.2.0", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "webpack": "3 || 4 || 5" - } - }, - "node_modules/webpackbar/node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/webpackbar/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/webpackbar/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/webpackbar/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/webpackbar/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/webpackbar/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/webpackbar/node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/webpackbar/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/webpackbar/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/webpackbar/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dev": true, - "dependencies": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "dependencies": { - "iconv-lite": "0.4.24" - } - }, - "node_modules/whatwg-encoding/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, - "node_modules/whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "dev": true, - "dependencies": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "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" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" - }, - "node_modules/wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wporg-api-client": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wporg-api-client/-/wporg-api-client-1.0.1.tgz", - "integrity": "sha512-XdPnka1eUIZZVbzQuPQ4OXnxLVzAEcgSLZT/UU8er0g32GcTi5U5go6zXd19/RxESR0ftORO1if4+dLQY80/5w==", - "dev": true, - "dependencies": { - "axios": "^0.21.0", - "esm": "^3.2.25", - "lodash": "^4.17.20" - } - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/wrap-ansi/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "node_modules/ws": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz", - "integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==", - "dev": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "peer": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs-parser/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "peer": true - }, - "node_modules/yargs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "peer": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", - "dev": true, - "dependencies": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/zwitch": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", - "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - } - }, - "dependencies": { - "@actions/github": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@actions/github/-/github-5.0.0.tgz", - "integrity": "sha512-QvE9eAAfEsS+yOOk0cylLBIO/d6WyWIOvsxxzdrPFaud39G6BOkUwScXZn1iBzQzHyu9SBkkLSWlohDWdsasAQ==", - "dev": true, - "requires": { - "@actions/http-client": "^1.0.11", - "@octokit/core": "^3.4.0", - "@octokit/plugin-paginate-rest": "^2.13.3", - "@octokit/plugin-rest-endpoint-methods": "^5.1.1" - } - }, - "@actions/http-client": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-1.0.11.tgz", - "integrity": "sha512-VRYHGQV1rqnROJqdMvGUbY/Kn8vriQe/F9HR2AlYHzmKuM/p3kjNuXhmdBfcVgsvRWTz5C5XW5xvndZrVBuAYg==", - "dev": true, - "requires": { - "tunnel": "0.0.6" - } - }, - "@axe-core/puppeteer": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@axe-core/puppeteer/-/puppeteer-4.3.1.tgz", - "integrity": "sha512-ojZzd2koeMFj4Crz842g54gU9MEosZA2Vzq8zoRBsT7lQ+EwjASNUfNKQHDhJaO53oEMC7xZv9Y2bhDrAhJRlg==", - "dev": true, - "requires": { - "axe-core": "^4.3.3" - } - }, - "@babel/code-frame": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", - "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", - "requires": { - "@babel/highlight": "^7.14.5" - } - }, - "@babel/compat-data": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", - "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==" - }, - "@babel/core": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.8.tgz", - "integrity": "sha512-3UG9dsxvYBMYwRv+gS41WKHno4K60/9GPy1CJaH6xy3Elq8CTtvtjT5R5jmNhXfCYLX2mTw+7/aq5ak/gOE0og==", - "requires": { - "@babel/code-frame": "^7.15.8", - "@babel/generator": "^7.15.8", - "@babel/helper-compilation-targets": "^7.15.4", - "@babel/helper-module-transforms": "^7.15.8", - "@babel/helpers": "^7.15.4", - "@babel/parser": "^7.15.8", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.6", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" - } - }, - "@babel/generator": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz", - "integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==", - "requires": { - "@babel/types": "^7.15.6", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz", - "integrity": "sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA==", - "dev": true, - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.15.4.tgz", - "integrity": "sha512-P8o7JP2Mzi0SdC6eWr1zF+AEYvrsZa7GSY1lTayjF5XJhVH0kjLYUZPvTMflP7tBgZoe9gIhTa60QwFpqh/E0Q==", - "dev": true, - "requires": { - "@babel/helper-explode-assignable-expression": "^7.15.4", - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz", - "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==", - "requires": { - "@babel/compat-data": "^7.15.0", - "@babel/helper-validator-option": "^7.14.5", - "browserslist": "^4.16.6", - "semver": "^6.3.0" - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.15.4.tgz", - "integrity": "sha512-7ZmzFi+DwJx6A7mHRwbuucEYpyBwmh2Ca0RvI6z2+WLZYCqV0JOaLb+u0zbtmDicebgKBZgqbYfLaKNqSgv5Pw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-member-expression-to-functions": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4" - } - }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz", - "integrity": "sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "regexpu-core": "^4.7.1" - } - }, - "@babel/helper-define-polyfill-provider": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz", - "integrity": "sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew==", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - } - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.15.4.tgz", - "integrity": "sha512-J14f/vq8+hdC2KoWLIQSsGrC9EFBKE4NFts8pfMpymfApds+fPqR30AOUWc4tyr56h9l/GA1Sxv2q3dLZWbQ/g==", - "dev": true, - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-function-name": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", - "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", - "requires": { - "@babel/helper-get-function-arity": "^7.15.4", - "@babel/template": "^7.15.4", - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", - "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", - "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", - "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-module-imports": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", - "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-module-transforms": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz", - "integrity": "sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg==", - "requires": { - "@babel/helper-module-imports": "^7.15.4", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-simple-access": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/helper-validator-identifier": "^7.15.7", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.6" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", - "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", - "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==" - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.15.4.tgz", - "integrity": "sha512-v53MxgvMK/HCwckJ1bZrq6dNKlmwlyRNYM6ypaRTdXWGOE2c1/SCa6dL/HimhPulGhZKw9W0QhREM583F/t0vQ==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.15.4", - "@babel/helper-wrap-function": "^7.15.4", - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-replace-supers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", - "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", - "requires": { - "@babel/helper-member-expression-to-functions": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-simple-access": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", - "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.15.4.tgz", - "integrity": "sha512-BMRLsdh+D1/aap19TycS4eD1qELGrCBJwzaY9IE8LrpJtJb+H7rQkPIdsfgnMtLBA6DJls7X9z93Z4U8h7xw0A==", - "dev": true, - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", - "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", - "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==" - }, - "@babel/helper-validator-option": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", - "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==" - }, - "@babel/helper-wrap-function": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.15.4.tgz", - "integrity": "sha512-Y2o+H/hRV5W8QhIfTpRIBwl57y8PrZt6JM3V8FOo5qarjshHItyH5lXlpMfBfmBefOqSCpKZs/6Dxqp0E/U+uw==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.15.4", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" - } - }, - "@babel/helpers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", - "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", - "requires": { - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" - } - }, - "@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "requires": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", - "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==" - }, - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.15.4.tgz", - "integrity": "sha512-eBnpsl9tlhPhpI10kU06JHnrYXwg3+V6CaP2idsCXNef0aeslpqyITXQ74Vfk5uHgY7IG7XP0yIH8b42KSzHog==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.15.4", - "@babel/plugin-proposal-optional-chaining": "^7.14.5" - } - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.15.8.tgz", - "integrity": "sha512-2Z5F2R2ibINTc63mY7FLqGfEbmofrHU9FitJW1Q7aPaKFhiPvSq6QEt/BoWN5oME3GVyjcRuNNSRbb9LC0CSWA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-remap-async-to-generator": "^7.15.4", - "@babel/plugin-syntax-async-generators": "^7.8.4" - } - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz", - "integrity": "sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-proposal-class-static-block": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.15.4.tgz", - "integrity": "sha512-M682XWrrLNk3chXCjoPUQWOyYsB93B9z3mRyjtqqYJWDf2mfCdIYgDrA11cgNVhAQieaq6F2fn2f3wI0U4aTjA==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - } - }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz", - "integrity": "sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - } - }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.5.tgz", - "integrity": "sha512-g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz", - "integrity": "sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-json-strings": "^7.8.3" - } - }, - "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.5.tgz", - "integrity": "sha512-YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz", - "integrity": "sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - } - }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz", - "integrity": "sha512-yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.15.6.tgz", - "integrity": "sha512-qtOHo7A1Vt+O23qEAX+GdBpqaIuD3i9VRrWgCJeq7WO6H2d14EK3q11urj5Te2MAeK97nMiIdRpwd/ST4JFbNg==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.15.0", - "@babel/helper-compilation-targets": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.15.4" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz", - "integrity": "sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - } - }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz", - "integrity": "sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - } - }, - "@babel/plugin-proposal-private-methods": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz", - "integrity": "sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-proposal-private-property-in-object": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.15.4.tgz", - "integrity": "sha512-X0UTixkLf0PCCffxgu5/1RQyGGbgZuKoI+vXP4iSbJSYwPb7hu06omsFGBvQ9lJEvwgrxHdS8B5nbfcd8GyUNA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.15.4", - "@babel/helper-create-class-features-plugin": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz", - "integrity": "sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-jsx": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz", - "integrity": "sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-typescript": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz", - "integrity": "sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz", - "integrity": "sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz", - "integrity": "sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-remap-async-to-generator": "^7.14.5" - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz", - "integrity": "sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.15.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.15.3.tgz", - "integrity": "sha512-nBAzfZwZb4DkaGtOes1Up1nOAp9TDRRFw4XBzBBSG9QK7KVFmYzgj9o9sbPv7TX5ofL4Auq4wZnxCoPnI/lz2Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.15.4.tgz", - "integrity": "sha512-Yjvhex8GzBmmPQUvpXRPWQ9WnxXgAFuZSrqOK/eJlOGIXwvv8H3UEdUigl1gb/bnjTrln+e8bkZUYCBt/xYlBg==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "globals": "^11.1.0" - } - }, - "@babel/plugin-transform-computed-properties": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz", - "integrity": "sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz", - "integrity": "sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz", - "integrity": "sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz", - "integrity": "sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz", - "integrity": "sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA==", - "dev": true, - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.15.4.tgz", - "integrity": "sha512-DRTY9fA751AFBDh2oxydvVm4SYevs5ILTWLs6xKXps4Re/KG5nfUkr+TdHCrRWB8C69TlzVgA9b3RmGWmgN9LA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-function-name": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz", - "integrity": "sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-literals": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz", - "integrity": "sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz", - "integrity": "sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-modules-amd": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz", - "integrity": "sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.15.4.tgz", - "integrity": "sha512-qg4DPhwG8hKp4BbVDvX1s8cohM8a6Bvptu4l6Iingq5rW+yRUAhe/YRup/YcW2zCOlrysEWVhftIcKzrEZv3sA==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-simple-access": "^7.15.4", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.15.4.tgz", - "integrity": "sha512-fJUnlQrl/mezMneR72CKCgtOoahqGJNVKpompKwzv3BrEXdlPspTcyxrZ1XmDTIr9PpULrgEQo3qNKp6dW7ssw==", - "dev": true, - "requires": { - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-module-transforms": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-identifier": "^7.14.9", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-umd": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz", - "integrity": "sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.14.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.9.tgz", - "integrity": "sha512-l666wCVYO75mlAtGFfyFwnWmIXQm3kSH0C3IRnJqWcZbWkoihyAdDhFm2ZWaxWTqvBvhVFfJjMRQ0ez4oN1yYA==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5" - } - }, - "@babel/plugin-transform-new-target": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz", - "integrity": "sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-object-super": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz", - "integrity": "sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-replace-supers": "^7.14.5" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.15.4.tgz", - "integrity": "sha512-9WB/GUTO6lvJU3XQsSr6J/WKvBC2hcs4Pew8YxZagi6GkTdniyqp8On5kqdK8MN0LMeu0mGbhPN+O049NV/9FQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-property-literals": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz", - "integrity": "sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-react-constant-elements": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.14.5.tgz", - "integrity": "sha512-NBqLEx1GxllIOXJInJAQbrnwwYJsV3WaMHIcOwD8rhYS0AabTWn7kHdHgPgu5RmHLU0q4DMxhAMu8ue/KampgQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-react-display-name": { - "version": "7.15.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.15.1.tgz", - "integrity": "sha512-yQZ/i/pUCJAHI/LbtZr413S3VT26qNrEm0M5RRxQJA947/YNYwbZbBaXGDrq6CG5QsZycI1VIP6d7pQaBfP+8Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-react-jsx": { - "version": "7.14.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.14.9.tgz", - "integrity": "sha512-30PeETvS+AeD1f58i1OVyoDlVYQhap/K20ZrMjLmmzmC2AYR/G43D4sdJAaDAqCD3MYpSWbmrz3kES158QSLjw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "@babel/helper-module-imports": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-jsx": "^7.14.5", - "@babel/types": "^7.14.9" - } - }, - "@babel/plugin-transform-react-jsx-development": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.14.5.tgz", - "integrity": "sha512-rdwG/9jC6QybWxVe2UVOa7q6cnTpw8JRRHOxntG/h6g/guAOe6AhtQHJuJh5FwmnXIT1bdm5vC2/5huV8ZOorQ==", - "dev": true, - "requires": { - "@babel/plugin-transform-react-jsx": "^7.14.5" - } - }, - "@babel/plugin-transform-react-pure-annotations": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.14.5.tgz", - "integrity": "sha512-3X4HpBJimNxW4rhUy/SONPyNQHp5YRr0HhJdT2OH1BRp0of7u3Dkirc7x9FRJMKMqTBI079VZ1hzv7Ouuz///g==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-regenerator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.14.5.tgz", - "integrity": "sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg==", - "dev": true, - "requires": { - "regenerator-transform": "^0.14.2" - } - }, - "@babel/plugin-transform-reserved-words": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz", - "integrity": "sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-runtime": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.15.8.tgz", - "integrity": "sha512-+6zsde91jMzzvkzuEA3k63zCw+tm/GvuuabkpisgbDMTPQsIMHllE3XczJFFtEHLjjhKQFZmGQVRdELetlWpVw==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "babel-plugin-polyfill-corejs2": "^0.2.2", - "babel-plugin-polyfill-corejs3": "^0.2.5", - "babel-plugin-polyfill-regenerator": "^0.2.2", - "semver": "^6.3.0" - } - }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz", - "integrity": "sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-spread": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.15.8.tgz", - "integrity": "sha512-/daZ8s2tNaRekl9YJa9X4bzjpeRZLt122cpgFnQPLGUe61PH8zMEBmYqKkW5xF5JUEh5buEGXJoQpqBmIbpmEQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.15.4" - } - }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz", - "integrity": "sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-template-literals": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz", - "integrity": "sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz", - "integrity": "sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-typescript": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.15.8.tgz", - "integrity": "sha512-ZXIkJpbaf6/EsmjeTbiJN/yMxWPFWvlr7sEG1P95Xb4S4IBcrf2n7s/fItIhsAmOf8oSh3VJPDppO6ExfAfKRQ==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-typescript": "^7.14.5" - } - }, - "@babel/plugin-transform-unicode-escapes": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz", - "integrity": "sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz", - "integrity": "sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/preset-env": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.15.8.tgz", - "integrity": "sha512-rCC0wH8husJgY4FPbHsiYyiLxSY8oMDJH7Rl6RQMknbN9oDDHhM9RDFvnGM2MgkbUJzSQB4gtuwygY5mCqGSsA==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.15.0", - "@babel/helper-compilation-targets": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.15.4", - "@babel/plugin-proposal-async-generator-functions": "^7.15.8", - "@babel/plugin-proposal-class-properties": "^7.14.5", - "@babel/plugin-proposal-class-static-block": "^7.15.4", - "@babel/plugin-proposal-dynamic-import": "^7.14.5", - "@babel/plugin-proposal-export-namespace-from": "^7.14.5", - "@babel/plugin-proposal-json-strings": "^7.14.5", - "@babel/plugin-proposal-logical-assignment-operators": "^7.14.5", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5", - "@babel/plugin-proposal-numeric-separator": "^7.14.5", - "@babel/plugin-proposal-object-rest-spread": "^7.15.6", - "@babel/plugin-proposal-optional-catch-binding": "^7.14.5", - "@babel/plugin-proposal-optional-chaining": "^7.14.5", - "@babel/plugin-proposal-private-methods": "^7.14.5", - "@babel/plugin-proposal-private-property-in-object": "^7.15.4", - "@babel/plugin-proposal-unicode-property-regex": "^7.14.5", - "@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-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.14.5", - "@babel/plugin-transform-async-to-generator": "^7.14.5", - "@babel/plugin-transform-block-scoped-functions": "^7.14.5", - "@babel/plugin-transform-block-scoping": "^7.15.3", - "@babel/plugin-transform-classes": "^7.15.4", - "@babel/plugin-transform-computed-properties": "^7.14.5", - "@babel/plugin-transform-destructuring": "^7.14.7", - "@babel/plugin-transform-dotall-regex": "^7.14.5", - "@babel/plugin-transform-duplicate-keys": "^7.14.5", - "@babel/plugin-transform-exponentiation-operator": "^7.14.5", - "@babel/plugin-transform-for-of": "^7.15.4", - "@babel/plugin-transform-function-name": "^7.14.5", - "@babel/plugin-transform-literals": "^7.14.5", - "@babel/plugin-transform-member-expression-literals": "^7.14.5", - "@babel/plugin-transform-modules-amd": "^7.14.5", - "@babel/plugin-transform-modules-commonjs": "^7.15.4", - "@babel/plugin-transform-modules-systemjs": "^7.15.4", - "@babel/plugin-transform-modules-umd": "^7.14.5", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.14.9", - "@babel/plugin-transform-new-target": "^7.14.5", - "@babel/plugin-transform-object-super": "^7.14.5", - "@babel/plugin-transform-parameters": "^7.15.4", - "@babel/plugin-transform-property-literals": "^7.14.5", - "@babel/plugin-transform-regenerator": "^7.14.5", - "@babel/plugin-transform-reserved-words": "^7.14.5", - "@babel/plugin-transform-shorthand-properties": "^7.14.5", - "@babel/plugin-transform-spread": "^7.15.8", - "@babel/plugin-transform-sticky-regex": "^7.14.5", - "@babel/plugin-transform-template-literals": "^7.14.5", - "@babel/plugin-transform-typeof-symbol": "^7.14.5", - "@babel/plugin-transform-unicode-escapes": "^7.14.5", - "@babel/plugin-transform-unicode-regex": "^7.14.5", - "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.15.6", - "babel-plugin-polyfill-corejs2": "^0.2.2", - "babel-plugin-polyfill-corejs3": "^0.2.5", - "babel-plugin-polyfill-regenerator": "^0.2.2", - "core-js-compat": "^3.16.0", - "semver": "^6.3.0" - } - }, - "@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", - "dev": true, - "requires": { - "@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/preset-react": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.14.5.tgz", - "integrity": "sha512-XFxBkjyObLvBaAvkx1Ie95Iaq4S/GUEIrejyrntQ/VCMKUYvKLoyKxOBzJ2kjA3b6rC9/KL6KXfDC2GqvLiNqQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-transform-react-display-name": "^7.14.5", - "@babel/plugin-transform-react-jsx": "^7.14.5", - "@babel/plugin-transform-react-jsx-development": "^7.14.5", - "@babel/plugin-transform-react-pure-annotations": "^7.14.5" - } - }, - "@babel/preset-typescript": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.15.0.tgz", - "integrity": "sha512-lt0Y/8V3y06Wq/8H/u0WakrqciZ7Fz7mwPDHWUJAXlABL5hiUG42BNlRXiELNjeWjO5rWmnNKlx+yzJvxezHow==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-transform-typescript": "^7.15.0" - } - }, - "@babel/runtime": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.4.tgz", - "integrity": "sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/runtime-corejs3": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.15.4.tgz", - "integrity": "sha512-lWcAqKeB624/twtTc3w6w/2o9RqJPaNBhPGK6DKLSiwuVWC7WFkypWyNg+CpZoyJH0jVzv1uMtXZ/5/lQOLtCg==", - "dev": true, - "requires": { - "core-js-pure": "^3.16.0", - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/template": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", - "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", - "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4" - } - }, - "@babel/traverse": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", - "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", - "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "requires": { - "@babel/helper-validator-identifier": "^7.14.9", - "to-fast-properties": "^2.0.0" - } - }, - "@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "@choojs/findup": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@choojs/findup/-/findup-0.2.1.tgz", - "integrity": "sha512-YstAqNb0MCN8PjdLCDfRsBcGVRN41f3vgLvaI0IrIcBp4AqILRSS0DeWNGkicC+f/zRIPJLc+9RURVSepwvfBw==", - "dev": true, - "requires": { - "commander": "^2.15.1" - }, - "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - } - } - }, - "@cnakazawa/watch": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", - "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", - "dev": true, - "requires": { - "exec-sh": "^0.3.2", - "minimist": "^1.2.0" - } - }, - "@csstools/convert-colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz", - "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==", - "dev": true - }, - "@discoveryjs/json-ext": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.5.tgz", - "integrity": "sha512-6nFkfkmSeV/rqSaS4oWHgmpnYw194f6hmWF5is6b0J1naJZoiD0NTc9AiUwPHvWsowkjuHErCZT1wa0jg+BLIA==", - "dev": true - }, - "@emotion/babel-plugin": { - "version": "11.3.0", - "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.3.0.tgz", - "integrity": "sha512-UZKwBV2rADuhRp+ZOGgNWg2eYgbzKzQXfQPtJbu/PLy8onurxlNCLvxMQEvlr1/GudguPI5IU9qIY1+2z1M5bA==", - "requires": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/plugin-syntax-jsx": "^7.12.13", - "@babel/runtime": "^7.13.10", - "@emotion/hash": "^0.8.0", - "@emotion/memoize": "^0.7.5", - "@emotion/serialize": "^1.0.2", - "babel-plugin-macros": "^2.6.1", - "convert-source-map": "^1.5.0", - "escape-string-regexp": "^4.0.0", - "find-root": "^1.1.0", - "source-map": "^0.5.7", - "stylis": "^4.0.3" - } - }, - "@emotion/cache": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.5.0.tgz", - "integrity": "sha512-mAZ5QRpLriBtaj/k2qyrXwck6yeoz1V5lMt/jfj6igWU35yYlNKs2LziXVgvH81gnJZ+9QQNGelSsnuoAy6uIw==", - "requires": { - "@emotion/memoize": "^0.7.4", - "@emotion/sheet": "^1.0.3", - "@emotion/utils": "^1.0.0", - "@emotion/weak-memoize": "^0.2.5", - "stylis": "^4.0.10" - } - }, - "@emotion/css": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/@emotion/css/-/css-11.5.0.tgz", - "integrity": "sha512-mqjz/3aqR9rp40M+pvwdKYWxlQK4Nj3cnNjo3Tx6SM14dSsEn7q/4W2/I7PlgG+mb27iITHugXuBIHH/QwUBVQ==", - "requires": { - "@emotion/babel-plugin": "^11.0.0", - "@emotion/cache": "^11.5.0", - "@emotion/serialize": "^1.0.0", - "@emotion/sheet": "^1.0.3", - "@emotion/utils": "^1.0.0" - } - }, - "@emotion/hash": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", - "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" - }, - "@emotion/is-prop-valid": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.1.0.tgz", - "integrity": "sha512-9RkilvXAufQHsSsjQ3PIzSns+pxuX4EW8EbGeSPjZMHuMx6z/MOzb9LpqNieQX4F3mre3NWS2+X3JNRHTQztUQ==", - "requires": { - "@emotion/memoize": "^0.7.4" - } - }, - "@emotion/memoize": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.5.tgz", - "integrity": "sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ==" - }, - "@emotion/react": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.5.0.tgz", - "integrity": "sha512-MYq/bzp3rYbee4EMBORCn4duPQfgpiEB5XzrZEBnUZAL80Qdfr7CEv/T80jwaTl/dnZmt9SnTa8NkTrwFNpLlw==", - "requires": { - "@babel/runtime": "^7.13.10", - "@emotion/cache": "^11.5.0", - "@emotion/serialize": "^1.0.2", - "@emotion/sheet": "^1.0.3", - "@emotion/utils": "^1.0.0", - "@emotion/weak-memoize": "^0.2.5", - "hoist-non-react-statics": "^3.3.1" - } - }, - "@emotion/serialize": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.0.2.tgz", - "integrity": "sha512-95MgNJ9+/ajxU7QIAruiOAdYNjxZX7G2mhgrtDWswA21VviYIRP1R5QilZ/bDY42xiKsaktP4egJb3QdYQZi1A==", - "requires": { - "@emotion/hash": "^0.8.0", - "@emotion/memoize": "^0.7.4", - "@emotion/unitless": "^0.7.5", - "@emotion/utils": "^1.0.0", - "csstype": "^3.0.2" - } - }, - "@emotion/sheet": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.0.3.tgz", - "integrity": "sha512-YoX5GyQ4db7LpbmXHMuc8kebtBGP6nZfRC5Z13OKJMixBEwdZrJ914D6yJv/P+ZH/YY3F5s89NYX2hlZAf3SRQ==" - }, - "@emotion/styled": { - "version": "11.3.0", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.3.0.tgz", - "integrity": "sha512-fUoLcN3BfMiLlRhJ8CuPUMEyKkLEoM+n+UyAbnqGEsCd5IzKQ7VQFLtzpJOaCD2/VR2+1hXQTnSZXVJeiTNltA==", - "requires": { - "@babel/runtime": "^7.13.10", - "@emotion/babel-plugin": "^11.3.0", - "@emotion/is-prop-valid": "^1.1.0", - "@emotion/serialize": "^1.0.2", - "@emotion/utils": "^1.0.0" - } - }, - "@emotion/unitless": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", - "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" - }, - "@emotion/utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.0.0.tgz", - "integrity": "sha512-mQC2b3XLDs6QCW+pDQDiyO/EdGZYOygE8s5N5rrzjSI4M3IejPE/JPndCBwRT9z982aqQNi6beWs1UeayrQxxA==" - }, - "@emotion/weak-memoize": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz", - "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==" - }, - "@es-joy/jsdoccomment": { - "version": "0.10.8", - "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.10.8.tgz", - "integrity": "sha512-3P1JiGL4xaR9PoTKUHa2N/LKwa2/eUdRqGwijMWWgBqbFEqJUVpmaOi2TcjcemrsRMgFLBzQCK4ToPhrSVDiFQ==", - "dev": true, - "requires": { - "comment-parser": "1.2.4", - "esquery": "^1.4.0", - "jsdoc-type-pratt-parser": "1.1.1" - }, - "dependencies": { - "jsdoc-type-pratt-parser": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-1.1.1.tgz", - "integrity": "sha512-uelRmpghNwPBuZScwgBG/OzodaFk5RbO5xaivBdsAY70icWfShwZ7PCMO0x1zSkOa8T1FzHThmrdoyg/0AwV5g==", - "dev": true - } - } - }, - "@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "globals": { - "version": "13.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", - "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - } - } - }, - "@hapi/hoek": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.1.tgz", - "integrity": "sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw==", - "dev": true - }, - "@hapi/topo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", - "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", - "dev": true, - "requires": { - "@hapi/hoek": "^9.0.0" - } - }, - "@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - } - }, - "@humanwhocodes/object-schema": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", - "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", - "dev": true - }, - "@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "requires": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - } - } - }, - "@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true - }, - "@jest/console": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.3.1.tgz", - "integrity": "sha512-RkFNWmv0iui+qsOr/29q9dyfKTTT5DCuP31kUwg7rmOKPT/ozLeGLKJKVIiOfbiKyleUZKIrHwhmiZWVe8IMdw==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^27.3.1", - "jest-util": "^27.3.1", - "slash": "^3.0.0" - }, - "dependencies": { - "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "peer": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "peer": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "peer": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "peer": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "peer": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true - }, - "jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "peer": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@jest/core": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.3.1.tgz", - "integrity": "sha512-DMNE90RR5QKx0EA+wqe3/TNEwiRpOkhshKNxtLxd4rt3IZpCt+RSL+FoJsGeblRZmqdK4upHA/mKKGPPRAifhg==", - "dev": true, - "peer": true, - "requires": { - "@jest/console": "^27.3.1", - "@jest/reporters": "^27.3.1", - "@jest/test-result": "^27.3.1", - "@jest/transform": "^27.3.1", - "@jest/types": "^27.2.5", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-changed-files": "^27.3.0", - "jest-config": "^27.3.1", - "jest-haste-map": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.3.1", - "jest-resolve-dependencies": "^27.3.1", - "jest-runner": "^27.3.1", - "jest-runtime": "^27.3.1", - "jest-snapshot": "^27.3.1", - "jest-util": "^27.3.1", - "jest-validate": "^27.3.1", - "jest-watcher": "^27.3.1", - "micromatch": "^4.0.4", - "rimraf": "^3.0.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "@jest/transform": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.3.1.tgz", - "integrity": "sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==", - "dev": true, - "peer": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.2.5", - "babel-plugin-istanbul": "^6.0.0", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", - "jest-regex-util": "^27.0.6", - "jest-util": "^27.3.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.1", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - } - }, - "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "peer": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "peer": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "peer": true, - "requires": { - "type-fest": "^0.21.3" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "peer": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "peer": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "peer": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true - }, - "jest-haste-map": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", - "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^27.2.5", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.3.2", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.0.6", - "jest-serializer": "^27.0.6", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - } - }, - "jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", - "dev": true, - "peer": true - }, - "jest-serializer": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", - "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", - "dev": true, - "peer": true, - "requires": { - "@types/node": "*", - "graceful-fs": "^4.2.4" - } - }, - "jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - } - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "peer": true, - "requires": { - "glob": "^7.1.3" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "peer": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "peer": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "peer": true - } - } - }, - "@jest/environment": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz", - "integrity": "sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==", - "dev": true, - "requires": { - "@jest/fake-timers": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "jest-mock": "^26.6.2" - } - }, - "@jest/fake-timers": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz", - "integrity": "sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==", - "dev": true, - "requires": { - "@jest/types": "^26.6.2", - "@sinonjs/fake-timers": "^6.0.1", - "@types/node": "*", - "jest-message-util": "^26.6.2", - "jest-mock": "^26.6.2", - "jest-util": "^26.6.2" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "jest-message-util": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", - "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@jest/types": "^26.6.2", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "micromatch": "^4.0.2", - "pretty-format": "^26.6.2", - "slash": "^3.0.0", - "stack-utils": "^2.0.2" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@jest/globals": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.3.1.tgz", - "integrity": "sha512-Q651FWiWQAIFiN+zS51xqhdZ8g9b88nGCobC87argAxA7nMfNQq0Q0i9zTfQYgLa6qFXk2cGANEqfK051CZ8Pg==", - "dev": true, - "peer": true, - "requires": { - "@jest/environment": "^27.3.1", - "@jest/types": "^27.2.5", - "expect": "^27.3.1" - }, - "dependencies": { - "@jest/environment": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.3.1.tgz", - "integrity": "sha512-BCKCj4mOVLme6Tanoyc9k0ultp3pnmuyHw73UHRPeeZxirsU/7E3HC4le/VDb/SMzE1JcPnto+XBKFOcoiJzVw==", - "dev": true, - "peer": true, - "requires": { - "@jest/fake-timers": "^27.3.1", - "@jest/types": "^27.2.5", - "@types/node": "*", - "jest-mock": "^27.3.0" - } - }, - "@jest/fake-timers": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.3.1.tgz", - "integrity": "sha512-M3ZFgwwlqJtWZ+QkBG5NmC23A9w+A6ZxNsO5nJxJsKYt4yguBd3i8TpjQz5NfCX91nEve1KqD9RA2Q+Q1uWqoA==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^27.2.5", - "@sinonjs/fake-timers": "^8.0.1", - "@types/node": "*", - "jest-message-util": "^27.3.1", - "jest-mock": "^27.3.0", - "jest-util": "^27.3.1" - } - }, - "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "peer": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@sinonjs/fake-timers": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz", - "integrity": "sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==", - "dev": true, - "peer": true, - "requires": { - "@sinonjs/commons": "^1.7.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "peer": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "peer": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "peer": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "peer": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true - }, - "diff-sequences": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", - "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==", - "dev": true, - "peer": true - }, - "expect": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.3.1.tgz", - "integrity": "sha512-MrNXV2sL9iDRebWPGOGFdPQRl2eDQNu/uhxIMShjjx74T6kC6jFIkmQ6OqXDtevjGUkyB2IT56RzDBqXf/QPCg==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^27.2.5", - "ansi-styles": "^5.0.0", - "jest-get-type": "^27.3.1", - "jest-matcher-utils": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-regex-util": "^27.0.6" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "peer": true - } - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true - }, - "jest-diff": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.3.1.tgz", - "integrity": "sha512-PCeuAH4AWUo2O5+ksW4pL9v5xJAcIKPUPfIhZBcG1RKv/0+dvaWTQK1Nrau8d67dp65fOqbeMdoil+6PedyEPQ==", - "dev": true, - "peer": true, - "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^27.0.6", - "jest-get-type": "^27.3.1", - "pretty-format": "^27.3.1" - } - }, - "jest-get-type": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.3.1.tgz", - "integrity": "sha512-+Ilqi8hgHSAdhlQ3s12CAVNd8H96ZkQBfYoXmArzZnOfAtVAJEiPDBirjByEblvG/4LPJmkL+nBqPO3A1YJAEg==", - "dev": true, - "peer": true - }, - "jest-matcher-utils": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.3.1.tgz", - "integrity": "sha512-hX8N7zXS4k+8bC1Aj0OWpGb7D3gIXxYvPNK1inP5xvE4ztbz3rc4AkI6jGVaerepBnfWB17FL5lWFJT3s7qo8w==", - "dev": true, - "peer": true, - "requires": { - "chalk": "^4.0.0", - "jest-diff": "^27.3.1", - "jest-get-type": "^27.3.1", - "pretty-format": "^27.3.1" - } - }, - "jest-mock": { - "version": "27.3.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.3.0.tgz", - "integrity": "sha512-ziZiLk0elZOQjD08bLkegBzv5hCABu/c8Ytx45nJKkysQwGaonvmTxwjLqEA4qGdasq9o2I8/HtdGMNnVsMTGw==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^27.2.5", - "@types/node": "*" - } - }, - "jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", - "dev": true, - "peer": true - }, - "jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - } - }, - "pretty-format": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz", - "integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^27.2.5", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "peer": true - } - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "peer": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@jest/reporters": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.3.1.tgz", - "integrity": "sha512-m2YxPmL9Qn1emFVgZGEiMwDntDxRRQ2D58tiDQlwYTg5GvbFOKseYCcHtn0WsI8CG4vzPglo3nqbOiT8ySBT/w==", - "dev": true, - "peer": true, - "requires": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.3.1", - "@jest/test-result": "^27.3.1", - "@jest/transform": "^27.3.1", - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.2.4", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^4.0.3", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "jest-haste-map": "^27.3.1", - "jest-resolve": "^27.3.1", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", - "slash": "^3.0.0", - "source-map": "^0.6.0", - "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^8.1.0" - }, - "dependencies": { - "@jest/transform": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.3.1.tgz", - "integrity": "sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==", - "dev": true, - "peer": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.2.5", - "babel-plugin-istanbul": "^6.0.0", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", - "jest-regex-util": "^27.0.6", - "jest-util": "^27.3.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.1", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - } - }, - "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "peer": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "peer": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "peer": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "peer": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "peer": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true - }, - "istanbul-lib-instrument": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", - "dev": true, - "peer": true, - "requires": { - "@babel/core": "^7.7.5", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", - "semver": "^6.3.0" - } - }, - "jest-haste-map": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", - "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^27.2.5", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.3.2", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.0.6", - "jest-serializer": "^27.0.6", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - } - }, - "jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", - "dev": true, - "peer": true - }, - "jest-serializer": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", - "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", - "dev": true, - "peer": true, - "requires": { - "@types/node": "*", - "graceful-fs": "^4.2.4" - } - }, - "jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "peer": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "peer": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@jest/source-map": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.0.6.tgz", - "integrity": "sha512-Fek4mi5KQrqmlY07T23JRi0e7Z9bXTOOD86V/uS0EIW4PClvPDqZOyFlLpNJheS6QI0FNX1CgmPjtJ4EA/2M+g==", - "dev": true, - "peer": true, - "requires": { - "callsites": "^3.0.0", - "graceful-fs": "^4.2.4", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "peer": true - } - } - }, - "@jest/test-result": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.3.1.tgz", - "integrity": "sha512-mLn6Thm+w2yl0opM8J/QnPTqrfS4FoXsXF2WIWJb2O/GBSyResL71BRuMYbYRsGt7ELwS5JGcEcGb52BNrumgg==", - "dev": true, - "peer": true, - "requires": { - "@jest/console": "^27.3.1", - "@jest/types": "^27.2.5", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "dependencies": { - "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "peer": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "peer": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "peer": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "peer": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "peer": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "peer": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@jest/test-sequencer": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.3.1.tgz", - "integrity": "sha512-siySLo07IMEdSjA4fqEnxfIX8lB/lWYsBPwNFtkOvsFQvmBrL3yj3k3uFNZv/JDyApTakRpxbKLJ3CT8UGVCrA==", - "dev": true, - "peer": true, - "requires": { - "@jest/test-result": "^27.3.1", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", - "jest-runtime": "^27.3.1" - }, - "dependencies": { - "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "peer": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "peer": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "peer": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "peer": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "peer": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true - }, - "jest-haste-map": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", - "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^27.2.5", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.3.2", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.0.6", - "jest-serializer": "^27.0.6", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - } - }, - "jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", - "dev": true, - "peer": true - }, - "jest-serializer": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", - "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", - "dev": true, - "peer": true, - "requires": { - "@types/node": "*", - "graceful-fs": "^4.2.4" - } - }, - "jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "peer": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@jest/transform": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz", - "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==", - "dev": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^26.6.2", - "babel-plugin-istanbul": "^6.0.0", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-util": "^26.6.2", - "micromatch": "^4.0.2", - "pirates": "^4.0.1", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@jest/types": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", - "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^15.0.0", - "chalk": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@octokit/auth-token": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", - "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", - "dev": true, - "requires": { - "@octokit/types": "^6.0.3" - } - }, - "@octokit/core": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.5.1.tgz", - "integrity": "sha512-omncwpLVxMP+GLpLPgeGJBF6IWJFjXDS5flY5VbppePYX9XehevbDykRH9PdCdvqt9TS5AOTiDide7h0qrkHjw==", - "dev": true, - "requires": { - "@octokit/auth-token": "^2.4.4", - "@octokit/graphql": "^4.5.8", - "@octokit/request": "^5.6.0", - "@octokit/request-error": "^2.0.5", - "@octokit/types": "^6.0.3", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" - } - }, - "@octokit/endpoint": { - "version": "6.0.12", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", - "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", - "dev": true, - "requires": { - "@octokit/types": "^6.0.3", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" - } - }, - "@octokit/graphql": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", - "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", - "dev": true, - "requires": { - "@octokit/request": "^5.6.0", - "@octokit/types": "^6.0.3", - "universal-user-agent": "^6.0.0" - } - }, - "@octokit/openapi-types": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-11.2.0.tgz", - "integrity": "sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA==", - "dev": true - }, - "@octokit/plugin-paginate-rest": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.17.0.tgz", - "integrity": "sha512-tzMbrbnam2Mt4AhuyCHvpRkS0oZ5MvwwcQPYGtMv4tUa5kkzG58SVB0fcsLulOZQeRnOgdkZWkRUiyBlh0Bkyw==", - "dev": true, - "requires": { - "@octokit/types": "^6.34.0" - } - }, - "@octokit/plugin-rest-endpoint-methods": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.13.0.tgz", - "integrity": "sha512-uJjMTkN1KaOIgNtUPMtIXDOjx6dGYysdIFhgA52x4xSadQCz3b/zJexvITDVpANnfKPW/+E0xkOvLntqMYpviA==", - "dev": true, - "requires": { - "@octokit/types": "^6.34.0", - "deprecation": "^2.3.1" - } - }, - "@octokit/request": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.2.tgz", - "integrity": "sha512-je66CvSEVf0jCpRISxkUcCa0UkxmFs6eGDRSbfJtAVwbLH5ceqF+YEyC8lj8ystKyZTy8adWr0qmkY52EfOeLA==", - "dev": true, - "requires": { - "@octokit/endpoint": "^6.0.1", - "@octokit/request-error": "^2.1.0", - "@octokit/types": "^6.16.1", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.1", - "universal-user-agent": "^6.0.0" - } - }, - "@octokit/request-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", - "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", - "dev": true, - "requires": { - "@octokit/types": "^6.0.3", - "deprecation": "^2.0.0", - "once": "^1.4.0" - } - }, - "@octokit/types": { - "version": "6.34.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz", - "integrity": "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==", - "dev": true, - "requires": { - "@octokit/openapi-types": "^11.2.0" - } - }, - "@polka/url": { - "version": "1.0.0-next.21", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", - "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==", - "dev": true - }, - "@popperjs/core": { - "version": "2.10.2", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.10.2.tgz", - "integrity": "sha512-IXf3XA7+XyN7CP9gGh/XB0UxVMlvARGEgGXLubFICsUMGz6Q+DU+i4gGlpOxTjKvXjkJDJC8YdqdKkDj9qZHEQ==" - }, - "@react-spring/animated": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@react-spring/animated/-/animated-9.3.0.tgz", - "integrity": "sha512-QvuyW77eDvLhdJyO6FFldlWlvnuKK2cpOx4+Zr962RyT/0IO1tbNDRO6G1vM8va6mbv6tmfYmRGKmKYePN3kVg==", - "requires": { - "@react-spring/shared": "~9.3.0", - "@react-spring/types": "~9.3.0" - } - }, - "@react-spring/core": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@react-spring/core/-/core-9.3.0.tgz", - "integrity": "sha512-SZQOIX7wkIagmucAi7zxqGGIb9A60o9n5922UrWo8Kl3FdG7FgrNwqr0kOI43/pMFeL70/PXwFhBatB03N5ctw==", - "requires": { - "@react-spring/animated": "~9.3.0", - "@react-spring/shared": "~9.3.0", - "@react-spring/types": "~9.3.0" - } - }, - "@react-spring/rafz": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@react-spring/rafz/-/rafz-9.3.0.tgz", - "integrity": "sha512-FD04d2TNb3xOZ6+04qwDmC3d0H4X6gvhsxU71/nSm4PPYRqFzZEolcVPmrHlbGzco3bvXKI+Kp2pIrpXLPUJFA==" - }, - "@react-spring/shared": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@react-spring/shared/-/shared-9.3.0.tgz", - "integrity": "sha512-7ZFY2Blu/wxbLGcYvQavyLUVi9bK/is1bsn11qZ9AaZb4iucRyIf2jgjBfKZFCq4qgi7S/7QmDQG7sucUyLELg==", - "requires": { - "@react-spring/rafz": "~9.3.0", - "@react-spring/types": "~9.3.0" - } - }, - "@react-spring/types": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@react-spring/types/-/types-9.3.0.tgz", - "integrity": "sha512-q4cDr2RSPblXMD3Rxvk6qcC7nmhhfV2izEBP06hb8ZCXznA6qJirG3RMpi29kBtEQiw1lWR59hAXKhauaPtbOA==" - }, - "@react-spring/web": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@react-spring/web/-/web-9.3.0.tgz", - "integrity": "sha512-OTAGKRdyz6fLRR1tABFyw9KMpytyATIndQrj0O6RG47GfjiInpf4+WZKxo763vpS7z1OlnkI81WLUm/sqOqAnA==", - "requires": { - "@react-spring/animated": "~9.3.0", - "@react-spring/core": "~9.3.0", - "@react-spring/shared": "~9.3.0", - "@react-spring/types": "~9.3.0" - } - }, - "@sideway/address": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.2.tgz", - "integrity": "sha512-idTz8ibqWFrPU8kMirL0CoPH/A29XOzzAzpyN3zQ4kAWnzmNfFmRaoMNN6VI8ske5M73HZyhIaW4OuSFIdM4oA==", - "dev": true, - "requires": { - "@hapi/hoek": "^9.0.0" - } - }, - "@sideway/formula": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", - "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==", - "dev": true - }, - "@sideway/pinpoint": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", - "dev": true - }, - "@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", - "dev": true, - "requires": { - "type-detect": "4.0.8" - } - }, - "@sinonjs/fake-timers": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", - "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", - "dev": true, - "requires": { - "@sinonjs/commons": "^1.7.0" - } - }, - "@svgr/babel-plugin-add-jsx-attribute": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz", - "integrity": "sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==", - "dev": true - }, - "@svgr/babel-plugin-remove-jsx-attribute": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz", - "integrity": "sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==", - "dev": true - }, - "@svgr/babel-plugin-remove-jsx-empty-expression": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz", - "integrity": "sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==", - "dev": true - }, - "@svgr/babel-plugin-replace-jsx-attribute-value": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz", - "integrity": "sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==", - "dev": true - }, - "@svgr/babel-plugin-svg-dynamic-title": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz", - "integrity": "sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==", - "dev": true - }, - "@svgr/babel-plugin-svg-em-dimensions": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz", - "integrity": "sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==", - "dev": true - }, - "@svgr/babel-plugin-transform-react-native-svg": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz", - "integrity": "sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==", - "dev": true - }, - "@svgr/babel-plugin-transform-svg-component": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz", - "integrity": "sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==", - "dev": true - }, - "@svgr/babel-preset": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz", - "integrity": "sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==", - "dev": true, - "requires": { - "@svgr/babel-plugin-add-jsx-attribute": "^5.4.0", - "@svgr/babel-plugin-remove-jsx-attribute": "^5.4.0", - "@svgr/babel-plugin-remove-jsx-empty-expression": "^5.0.1", - "@svgr/babel-plugin-replace-jsx-attribute-value": "^5.0.1", - "@svgr/babel-plugin-svg-dynamic-title": "^5.4.0", - "@svgr/babel-plugin-svg-em-dimensions": "^5.4.0", - "@svgr/babel-plugin-transform-react-native-svg": "^5.4.0", - "@svgr/babel-plugin-transform-svg-component": "^5.5.0" - } - }, - "@svgr/core": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz", - "integrity": "sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==", - "dev": true, - "requires": { - "@svgr/plugin-jsx": "^5.5.0", - "camelcase": "^6.2.0", - "cosmiconfig": "^7.0.0" - } - }, - "@svgr/hast-util-to-babel-ast": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz", - "integrity": "sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==", - "dev": true, - "requires": { - "@babel/types": "^7.12.6" - } - }, - "@svgr/plugin-jsx": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz", - "integrity": "sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==", - "dev": true, - "requires": { - "@babel/core": "^7.12.3", - "@svgr/babel-preset": "^5.5.0", - "@svgr/hast-util-to-babel-ast": "^5.5.0", - "svg-parser": "^2.0.2" - } - }, - "@svgr/plugin-svgo": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz", - "integrity": "sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==", - "dev": true, - "requires": { - "cosmiconfig": "^7.0.0", - "deepmerge": "^4.2.2", - "svgo": "^1.2.2" - }, - "dependencies": { - "css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" - } - }, - "css-tree": { - "version": "1.0.0-alpha.37", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", - "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", - "dev": true, - "requires": { - "mdn-data": "2.0.4", - "source-map": "^0.6.1" - } - }, - "css-what": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", - "dev": true - }, - "dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - } - }, - "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "dev": true, - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - }, - "dependencies": { - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true - } - } - }, - "mdn-data": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", - "dev": true - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "dev": true, - "requires": { - "boolbase": "~1.0.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "svgo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", - "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", - "dev": true, - "requires": { - "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" - } - } - } - }, - "@svgr/webpack": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz", - "integrity": "sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==", - "dev": true, - "requires": { - "@babel/core": "^7.12.3", - "@babel/plugin-transform-react-constant-elements": "^7.12.1", - "@babel/preset-env": "^7.12.1", - "@babel/preset-react": "^7.12.5", - "@svgr/core": "^5.5.0", - "@svgr/plugin-jsx": "^5.5.0", - "@svgr/plugin-svgo": "^5.5.0", - "loader-utils": "^2.0.0" - } - }, - "@tannin/compile": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@tannin/compile/-/compile-1.1.0.tgz", - "integrity": "sha512-n8m9eNDfoNZoxdvWiTfW/hSPhehzLJ3zW7f8E7oT6mCROoMNWCB4TYtv041+2FMAxweiE0j7i1jubQU4MEC/Gg==", - "requires": { - "@tannin/evaluate": "^1.2.0", - "@tannin/postfix": "^1.1.0" - } - }, - "@tannin/evaluate": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@tannin/evaluate/-/evaluate-1.2.0.tgz", - "integrity": "sha512-3ioXvNowbO/wSrxsDG5DKIMxC81P0QrQTYai8zFNY+umuoHWRPbQ/TuuDEOju9E+jQDXmj6yI5GyejNuh8I+eg==" - }, - "@tannin/plural-forms": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@tannin/plural-forms/-/plural-forms-1.1.0.tgz", - "integrity": "sha512-xl9R2mDZO/qiHam1AgMnAES6IKIg7OBhcXqy6eDsRCdXuxAFPcjrej9HMjyCLE0DJ/8cHf0i5OQTstuBRhpbHw==", - "requires": { - "@tannin/compile": "^1.1.0" - } - }, - "@tannin/postfix": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@tannin/postfix/-/postfix-1.1.0.tgz", - "integrity": "sha512-oocsqY7g0cR+Gur5jRQLSrX2OtpMLMse1I10JQBm8CdGMrDkh1Mg2gjsiquMHRtBs4Qwu5wgEp5GgIYHk4SNPw==" - }, - "@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true - }, - "@trysound/sax": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", - "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", - "dev": true - }, - "@types/babel__core": { - "version": "7.1.16", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.16.tgz", - "integrity": "sha512-EAEHtisTMM+KaKwfWdC3oyllIqswlznXCIVCt7/oRNrh+DhgT4UEBNC/jlADNjvw7UnfbcdkGQcPVZ1xYiLcrQ==", - "dev": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "@types/babel__generator": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.3.tgz", - "integrity": "sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==", - "dev": true, - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", - "dev": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@types/babel__traverse": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz", - "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==", - "dev": true, - "requires": { - "@babel/types": "^7.3.0" - } - }, - "@types/cheerio": { - "version": "0.22.30", - "resolved": "https://registry.npmjs.org/@types/cheerio/-/cheerio-0.22.30.tgz", - "integrity": "sha512-t7ZVArWZlq3dFa9Yt33qFBQIK4CQd1Q3UJp0V+UhP6vgLWLM6Qug7vZuRSGXg45zXeB1Fm5X2vmBkEX58LV2Tw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/eslint": { - "version": "7.28.2", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.28.2.tgz", - "integrity": "sha512-KubbADPkfoU75KgKeKLsFHXnU4ipH7wYg0TRT33NK3N3yiu7jlFAAoygIWBV+KbuHx/G+AvuGX6DllnK35gfJA==", - "dev": true, - "requires": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "@types/eslint-scope": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.1.tgz", - "integrity": "sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g==", - "dev": true, - "requires": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "@types/estree": { - "version": "0.0.50", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", - "dev": true - }, - "@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", - "dev": true, - "requires": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "@types/graceful-fs": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", - "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/istanbul-lib-coverage": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", - "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", - "dev": true - }, - "@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*" - } - }, - "@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "requires": { - "@types/istanbul-lib-report": "*" - } - }, - "@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", - "dev": true - }, - "@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", - "dev": true - }, - "@types/lodash": { - "version": "4.14.176", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.176.tgz", - "integrity": "sha512-xZmuPTa3rlZoIbtDUyJKZQimJV3bxCmzMIO2c9Pz9afyDro6kr7R79GwcB6mRhuoPmV2p1Vb66WOJH7F886WKQ==" - }, - "@types/mdast": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", - "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", - "dev": true, - "requires": { - "@types/unist": "*" - } - }, - "@types/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", - "dev": true - }, - "@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", - "dev": true - }, - "@types/mousetrap": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/@types/mousetrap/-/mousetrap-1.6.8.tgz", - "integrity": "sha512-zTqjvgCUT5EoXqbqmd8iJMb4NJqyV/V7pK7AIKq7qcaAsJIpGlTVJS1HQM6YkdHCdnkNSbhcQI7MXYxFfE3iCA==" - }, - "@types/node": { - "version": "16.11.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.6.tgz", - "integrity": "sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==", - "dev": true - }, - "@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", - "dev": true - }, - "@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" - }, - "@types/prettier": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.1.tgz", - "integrity": "sha512-Fo79ojj3vdEZOHg3wR9ksAMRz4P3S5fDB5e/YWZiFnyFQI1WY2Vftu9XoXVVtJfxB7Bpce/QTqWSSntkz2Znrw==", - "dev": true - }, - "@types/prop-types": { - "version": "15.7.4", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz", - "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==" - }, - "@types/q": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", - "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==", - "dev": true - }, - "@types/react": { - "version": "16.14.20", - "resolved": "https://registry.npmjs.org/@types/react/-/react-16.14.20.tgz", - "integrity": "sha512-SV7TaVc8e9E/5Xuv6TIyJ5VhQpZoVFJqX6IZgj5HZoFCtIDCArE3qXkcHlc6O/Ud4UwcMoX+tlvDA95YrKdLgA==", - "requires": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "@types/react-dom": { - "version": "16.9.14", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.14.tgz", - "integrity": "sha512-FIX2AVmPTGP30OUJ+0vadeIFJJ07Mh1m+U0rxfgyW34p3rTlXI+nlenvAxNn4BP36YyI9IJ/+UJ7Wu22N1pI7A==", - "requires": { - "@types/react": "^16" - } - }, - "@types/scheduler": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" - }, - "@types/source-list-map": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", - "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==", - "dev": true - }, - "@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "dev": true - }, - "@types/tapable": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.8.tgz", - "integrity": "sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ==", - "dev": true - }, - "@types/uglify-js": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.13.1.tgz", - "integrity": "sha512-O3MmRAk6ZuAKa9CHgg0Pr0+lUOqoMLpc9AS4R8ano2auvsg7IE8syF3Xh/NPr26TWklxYcqoEEFdzLLs1fV9PQ==", - "dev": true, - "requires": { - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "@types/unist": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", - "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", - "dev": true - }, - "@types/webpack": { - "version": "4.41.31", - "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.31.tgz", - "integrity": "sha512-/i0J7sepXFIp1ZT7FjUGi1eXMCg8HCCzLJEQkKsOtbJFontsJLolBcDC+3qxn5pPwiCt1G0ZdRmYRzNBtvpuGQ==", - "dev": true, - "requires": { - "@types/node": "*", - "@types/tapable": "^1", - "@types/uglify-js": "*", - "@types/webpack-sources": "*", - "anymatch": "^3.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "@types/webpack-sources": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-3.2.0.tgz", - "integrity": "sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg==", - "dev": true, - "requires": { - "@types/node": "*", - "@types/source-list-map": "*", - "source-map": "^0.7.3" - }, - "dependencies": { - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - } - } - }, - "@types/yargs": { - "version": "15.0.14", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", - "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "@types/yargs-parser": { - "version": "20.2.1", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", - "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", - "dev": true - }, - "@types/yauzl": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.2.tgz", - "integrity": "sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==", - "dev": true, - "optional": true, - "requires": { - "@types/node": "*" - } - }, - "@typescript-eslint/eslint-plugin": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", - "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", - "dev": true, - "requires": { - "@typescript-eslint/experimental-utils": "4.33.0", - "@typescript-eslint/scope-manager": "4.33.0", - "debug": "^4.3.1", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", - "regexpp": "^3.1.0", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "@typescript-eslint/experimental-utils": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", - "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.7", - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - }, - "dependencies": { - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - } - } - } - }, - "@typescript-eslint/parser": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", - "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "debug": "^4.3.1" - } - }, - "@typescript-eslint/scope-manager": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", - "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", - "dev": true, - "requires": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0" - } - }, - "@typescript-eslint/types": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", - "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", - "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", - "dev": true, - "requires": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "@typescript-eslint/visitor-keys": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", - "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "4.33.0", - "eslint-visitor-keys": "^2.0.0" - } - }, - "@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "dev": true, - "requires": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", - "dev": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", - "dev": true - }, - "@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "dev": true, - "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", - "dev": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "dev": true, - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "dev": true, - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", - "dev": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@webpack-cli/configtest": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.0.tgz", - "integrity": "sha512-ttOkEkoalEHa7RaFYpM0ErK1xc4twg3Am9hfHhL7MVqlHebnkYd2wuI/ZqTDj0cVzZho6PdinY0phFZV3O0Mzg==", - "dev": true, - "requires": {} - }, - "@webpack-cli/info": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.0.tgz", - "integrity": "sha512-F6b+Man0rwE4n0409FyAJHStYA5OIZERxmnUfLVwv0mc0V1wLad3V7jqRlMkgKBeAq07jUvglacNaa6g9lOpuw==", - "dev": true, - "requires": { - "envinfo": "^7.7.3" - } - }, - "@webpack-cli/serve": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.0.tgz", - "integrity": "sha512-ZkVeqEmRpBV2GHvjjUZqEai2PpUbuq8Bqd//vEYsp63J8WyexI8ppCqVS3Zs0QADf6aWuPdU+0XsPI647PVlQA==", - "dev": true, - "requires": {} - }, - "@wojtekmaj/enzyme-adapter-react-17": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/@wojtekmaj/enzyme-adapter-react-17/-/enzyme-adapter-react-17-0.6.5.tgz", - "integrity": "sha512-ChIObUiXXYUiqzXPqOai+p6KF5dlbItpDDYsftUOQiAiygbMDlLeJIjynC6ZrJIa2U2MpRp4YJmtR2GQyIHjgA==", - "dev": true, - "requires": { - "@wojtekmaj/enzyme-adapter-utils": "^0.1.1", - "enzyme-shallow-equal": "^1.0.0", - "has": "^1.0.0", - "object.assign": "^4.1.0", - "object.values": "^1.1.0", - "prop-types": "^15.7.0", - "react-is": "^17.0.2", - "react-test-renderer": "^17.0.0" - } - }, - "@wojtekmaj/enzyme-adapter-utils": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@wojtekmaj/enzyme-adapter-utils/-/enzyme-adapter-utils-0.1.1.tgz", - "integrity": "sha512-bNPWtN/d8huKOkC6j1E3EkSamnRrHHT7YuR6f9JppAQqtoAm3v4/vERe4J14jQKmHLCyEBHXrlgb7H6l817hVg==", - "dev": true, - "requires": { - "function.prototype.name": "^1.1.0", - "has": "^1.0.0", - "object.assign": "^4.1.0", - "object.fromentries": "^2.0.0", - "prop-types": "^15.7.0" - } - }, - "@wordpress/a11y": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@wordpress/a11y/-/a11y-3.2.3.tgz", - "integrity": "sha512-s6ghUetvxRPDyC3fohaXtOeoTQeA1JPYPNSic616LWLWvx/bOCY4RibfwxS7p7prY1+0Px2VhxsPIM2kZuR/wA==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/dom-ready": "^3.2.2", - "@wordpress/i18n": "^4.2.3" - } - }, - "@wordpress/api-fetch": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-5.2.3.tgz", - "integrity": "sha512-hEGn9vXk76ejdvei1pBX/kaQ3xnKlE2dwtCXszgem8PdDF5GYzgESEwYaWvfgPAfJs7xF283FN1QsNzA4M+N9A==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/i18n": "^4.2.3", - "@wordpress/url": "^3.2.3" - } - }, - "@wordpress/autop": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@wordpress/autop/-/autop-3.2.2.tgz", - "integrity": "sha512-lfw7yZs1PeWVdPnKaV5rPMGIhkwPmdnKaviIbQV48E8irQOcPaT3NgWQksizr1Qlersm6aNBkXZfM1idRzzcgA==", - "requires": { - "@babel/runtime": "^7.13.10" - } - }, - "@wordpress/babel-plugin-import-jsx-pragma": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@wordpress/babel-plugin-import-jsx-pragma/-/babel-plugin-import-jsx-pragma-3.1.0.tgz", - "integrity": "sha512-518mL3goaSeXtJCQcPK9OYHUUiA0sjXuoGWHBwRalkyTIQZZy5ZZzlwrlSc9ESZcOw9BZ+Uo8CJRjV2OWnx+Zw==", - "dev": true, - "requires": {} - }, - "@wordpress/babel-preset-default": { - "version": "6.3.3", - "resolved": "https://registry.npmjs.org/@wordpress/babel-preset-default/-/babel-preset-default-6.3.3.tgz", - "integrity": "sha512-sMP7LgBmYaF5Cz+FZ4EXS5Qu4Tecv3JFIYEVbPLmn+/AIA+fzrEELn2BuEcHmd0q7VogAAmhU1iw2Fndj29bgw==", - "dev": true, - "requires": { - "@babel/core": "^7.13.10", - "@babel/plugin-transform-react-jsx": "^7.12.7", - "@babel/plugin-transform-runtime": "^7.13.10", - "@babel/preset-env": "^7.13.10", - "@babel/preset-typescript": "^7.13.0", - "@babel/runtime": "^7.13.10", - "@wordpress/babel-plugin-import-jsx-pragma": "^3.1.0", - "@wordpress/browserslist-config": "^4.1.0", - "@wordpress/element": "^4.0.2", - "@wordpress/warning": "^2.2.2", - "browserslist": "^4.16.6", - "core-js": "^3.12.1" - } - }, - "@wordpress/base-styles": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@wordpress/base-styles/-/base-styles-4.0.2.tgz", - "integrity": "sha512-0eESCFwdITSsWR+goVaWe3LZ/7s+GprNwANKF+1xm8gMxlHQks5gYDMvNdh0Q1yTHlK/vtg1VC7Bj1gydqmlxw==", - "dev": true - }, - "@wordpress/blob": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@wordpress/blob/-/blob-3.2.1.tgz", - "integrity": "sha512-qD8wZ6n+hjoshV2dp9eGH3VismOM0kvrJn5cSe4PaoYDREqUhioJIDXktZxaohnvgWOq6xfJH6rS4Or8W0r9ew==", - "requires": { - "@babel/runtime": "^7.13.10" - } - }, - "@wordpress/block-editor": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/@wordpress/block-editor/-/block-editor-7.0.3.tgz", - "integrity": "sha512-rCPth+v+Nu5JiIkOgUaCgiVkub+VWd8fXzek/vtk5T+VXDJ7jJA6dLcuR8zLigWEkyMuZ5nG0RADGgldy9WqxA==", - "requires": { - "@babel/runtime": "^7.13.10", - "@react-spring/web": "^9.2.4", - "@wordpress/a11y": "^3.2.3", - "@wordpress/api-fetch": "^5.2.3", - "@wordpress/blob": "^3.2.1", - "@wordpress/block-serialization-default-parser": "^4.2.2", - "@wordpress/blocks": "^11.1.1", - "@wordpress/components": "^18.0.0", - "@wordpress/compose": "^5.0.3", - "@wordpress/data": "^6.1.1", - "@wordpress/data-controls": "^2.2.4", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.4", - "@wordpress/element": "^4.0.2", - "@wordpress/hooks": "^3.2.1", - "@wordpress/html-entities": "^3.2.2", - "@wordpress/i18n": "^4.2.3", - "@wordpress/icons": "^6.0.0", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keyboard-shortcuts": "^3.0.3", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/notices": "^3.2.4", - "@wordpress/rich-text": "^5.0.3", - "@wordpress/shortcode": "^3.2.2", - "@wordpress/token-list": "^2.2.1", - "@wordpress/url": "^3.2.3", - "@wordpress/warning": "^2.2.2", - "@wordpress/wordcount": "^3.2.2", - "classnames": "^2.3.1", - "colord": "^2.7.0", - "css-mediaquery": "^0.1.2", - "diff": "^4.0.2", - "dom-scroll-into-view": "^1.2.1", - "inherits": "^2.0.3", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "react-autosize-textarea": "^7.1.0", - "react-easy-crop": "^3.0.0", - "redux-multi": "^0.1.12", - "rememo": "^3.0.0", - "traverse": "^0.6.6" - }, - "dependencies": { - "react": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", - "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", - "peer": true, - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2" - } - }, - "react-autosize-textarea": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/react-autosize-textarea/-/react-autosize-textarea-7.1.0.tgz", - "integrity": "sha512-BHpjCDkuOlllZn3nLazY2F8oYO1tS2jHnWhcjTWQdcKiiMU6gHLNt/fzmqMSyerR0eTdKtfSIqtSeTtghNwS+g==", - "requires": { - "autosize": "^4.0.2", - "line-height": "^0.3.1", - "prop-types": "^15.5.6" - } - }, - "react-dom": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", - "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", - "peer": true, - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.19.1" - } - }, - "scheduler": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", - "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", - "peer": true, - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - } - } - }, - "@wordpress/block-library": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@wordpress/block-library/-/block-library-6.0.2.tgz", - "integrity": "sha512-zC5IzQ7t+Y6GkeceorlI69zE4/pFw0klWhdvsltuZSDuIg4h76HyElHE+rmZYXCAiwMU+K9/WYoWjLf6BsrGLg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/a11y": "^3.2.3", - "@wordpress/api-fetch": "^5.2.4", - "@wordpress/autop": "^3.2.2", - "@wordpress/blob": "^3.2.1", - "@wordpress/block-editor": "^7.0.4", - "@wordpress/blocks": "^11.1.2", - "@wordpress/components": "^19.0.0", - "@wordpress/compose": "^5.0.4", - "@wordpress/core-data": "^4.0.4", - "@wordpress/data": "^6.1.2", - "@wordpress/date": "^4.2.2", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.5", - "@wordpress/element": "^4.0.3", - "@wordpress/escape-html": "^2.2.2", - "@wordpress/hooks": "^3.2.1", - "@wordpress/html-entities": "^3.2.2", - "@wordpress/i18n": "^4.2.3", - "@wordpress/icons": "^6.0.1", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/notices": "^3.2.5", - "@wordpress/primitives": "^3.0.3", - "@wordpress/reusable-blocks": "^3.0.4", - "@wordpress/rich-text": "^5.0.4", - "@wordpress/server-side-render": "^3.0.4", - "@wordpress/url": "^3.2.3", - "@wordpress/viewport": "^4.0.4", - "classnames": "^2.3.1", - "colord": "^2.7.0", - "fast-average-color": "4.3.0", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "micromodal": "^0.4.6", - "moment": "^2.22.1" - }, - "dependencies": { - "@wordpress/api-fetch": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-5.2.4.tgz", - "integrity": "sha512-8vMm08L3MMUynhD6sxe9VhRcfi3qGE3m9j7LpC9yAIxt70DaMRxHWEmGIbgO2F3INkqACdLWnDQmsHDKOSWQsQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/i18n": "^4.2.3", - "@wordpress/url": "^3.2.3" - } - }, - "@wordpress/block-editor": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@wordpress/block-editor/-/block-editor-7.0.4.tgz", - "integrity": "sha512-crnKOzGrqe9YZOFRbEsJhfm5sGNoCK8oHDTTO8TeTlKw4tGbvTUK3aayxTr9cd2Uu3J3Cy13d3M9qJC8ebXhbQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.13.10", - "@react-spring/web": "^9.2.4", - "@wordpress/a11y": "^3.2.3", - "@wordpress/api-fetch": "^5.2.4", - "@wordpress/blob": "^3.2.1", - "@wordpress/block-serialization-default-parser": "^4.2.2", - "@wordpress/blocks": "^11.1.2", - "@wordpress/components": "^19.0.0", - "@wordpress/compose": "^5.0.4", - "@wordpress/data": "^6.1.2", - "@wordpress/data-controls": "^2.2.5", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.5", - "@wordpress/element": "^4.0.3", - "@wordpress/hooks": "^3.2.1", - "@wordpress/html-entities": "^3.2.2", - "@wordpress/i18n": "^4.2.3", - "@wordpress/icons": "^6.0.1", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keyboard-shortcuts": "^3.0.4", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/notices": "^3.2.5", - "@wordpress/rich-text": "^5.0.4", - "@wordpress/shortcode": "^3.2.2", - "@wordpress/token-list": "^2.2.1", - "@wordpress/url": "^3.2.3", - "@wordpress/warning": "^2.2.2", - "@wordpress/wordcount": "^3.2.2", - "classnames": "^2.3.1", - "colord": "^2.7.0", - "css-mediaquery": "^0.1.2", - "diff": "^4.0.2", - "dom-scroll-into-view": "^1.2.1", - "inherits": "^2.0.3", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "react-autosize-textarea": "^7.1.0", - "react-easy-crop": "^3.0.0", - "redux-multi": "^0.1.12", - "rememo": "^3.0.0", - "traverse": "^0.6.6" - }, - "dependencies": { - "react": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", - "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", - "dev": true, - "peer": true, - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2" - } - }, - "react-autosize-textarea": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/react-autosize-textarea/-/react-autosize-textarea-7.1.0.tgz", - "integrity": "sha512-BHpjCDkuOlllZn3nLazY2F8oYO1tS2jHnWhcjTWQdcKiiMU6gHLNt/fzmqMSyerR0eTdKtfSIqtSeTtghNwS+g==", - "dev": true, - "requires": { - "autosize": "^4.0.2", - "line-height": "^0.3.1", - "prop-types": "^15.5.6" - } - }, - "react-dom": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", - "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", - "dev": true, - "peer": true, - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.19.1" - } - } - } - }, - "@wordpress/blocks": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/@wordpress/blocks/-/blocks-11.1.2.tgz", - "integrity": "sha512-xVvC/RXj9GXNRkQcGnmjWeS54intybON4Ol2vCVfreJtA5Cra5yRapRJwz3at1sgDD4q06k1sj98SemMEanazw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/autop": "^3.2.2", - "@wordpress/blob": "^3.2.1", - "@wordpress/block-serialization-default-parser": "^4.2.2", - "@wordpress/compose": "^5.0.4", - "@wordpress/data": "^6.1.2", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.5", - "@wordpress/element": "^4.0.3", - "@wordpress/hooks": "^3.2.1", - "@wordpress/html-entities": "^3.2.2", - "@wordpress/i18n": "^4.2.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/shortcode": "^3.2.2", - "colord": "^2.7.0", - "hpq": "^1.3.0", - "lodash": "^4.17.21", - "rememo": "^3.0.0", - "showdown": "^1.9.1", - "simple-html-tokenizer": "^0.5.7", - "uuid": "^8.3.0" - } - }, - "@wordpress/components": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/@wordpress/components/-/components-19.0.0.tgz", - "integrity": "sha512-foFC+jJ3nu6PZ2pnjdszi7R17CQRquXkCPaydlOCsuDbsKm0dowR264jAdK0HJWepttj+kh3amWEhzajX6AYtg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.13.10", - "@emotion/cache": "^11.4.0", - "@emotion/css": "^11.1.3", - "@emotion/react": "^11.4.1", - "@emotion/styled": "^11.3.0", - "@emotion/utils": "1.0.0", - "@wordpress/a11y": "^3.2.3", - "@wordpress/compose": "^5.0.4", - "@wordpress/date": "^4.2.2", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.5", - "@wordpress/element": "^4.0.3", - "@wordpress/hooks": "^3.2.1", - "@wordpress/i18n": "^4.2.3", - "@wordpress/icons": "^6.0.1", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/primitives": "^3.0.3", - "@wordpress/rich-text": "^5.0.4", - "@wordpress/warning": "^2.2.2", - "classnames": "^2.3.1", - "colord": "^2.7.0", - "dom-scroll-into-view": "^1.2.1", - "downshift": "^6.0.15", - "framer-motion": "^4.1.17", - "gradient-parser": "^0.1.5", - "highlight-words-core": "^1.2.2", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "moment": "^2.22.1", - "re-resizable": "^6.4.0", - "react-colorful": "^5.3.1", - "react-dates": "^17.1.1", - "react-resize-aware": "^3.1.0", - "react-use-gesture": "^9.0.0", - "reakit": "^1.3.8", - "rememo": "^3.0.0", - "uuid": "^8.3.0" - }, - "dependencies": { - "airbnb-prop-types": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz", - "integrity": "sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg==", - "dev": true, - "requires": { - "array.prototype.find": "^2.1.1", - "function.prototype.name": "^1.1.2", - "is-regex": "^1.1.0", - "object-is": "^1.1.2", - "object.assign": "^4.1.0", - "object.entries": "^1.1.2", - "prop-types": "^15.7.2", - "prop-types-exact": "^1.2.0", - "react-is": "^16.13.1" - } - }, - "react": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", - "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", - "dev": true, - "peer": true, - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2" - } - }, - "react-dates": { - "version": "17.2.0", - "resolved": "https://registry.npmjs.org/react-dates/-/react-dates-17.2.0.tgz", - "integrity": "sha512-RDlerU8DdRRrlYS0MQ7Z9igPWABGLDwz6+ykBNff67RM3Sset2TDqeuOr+R5o00Ggn5U47GeLsGcSDxlZd9cHw==", - "dev": true, - "requires": { - "airbnb-prop-types": "^2.10.0", - "consolidated-events": "^1.1.1 || ^2.0.0", - "is-touch-device": "^1.0.1", - "lodash": "^4.1.1", - "object.assign": "^4.1.0", - "object.values": "^1.0.4", - "prop-types": "^15.6.1", - "react-addons-shallow-compare": "^15.6.2", - "react-moment-proptypes": "^1.6.0", - "react-outside-click-handler": "^1.2.0", - "react-portal": "^4.1.5", - "react-with-styles": "^3.2.0", - "react-with-styles-interface-css": "^4.0.2" - } - }, - "react-dom": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", - "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", - "dev": true, - "peer": true, - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.19.1" - } - }, - "react-outside-click-handler": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/react-outside-click-handler/-/react-outside-click-handler-1.3.0.tgz", - "integrity": "sha512-Te/7zFU0oHpAnctl//pP3hEAeobfeHMyygHB8MnjP6sX5OR8KHT1G3jmLsV3U9RnIYo+Yn+peJYWu+D5tUS8qQ==", - "dev": true, - "requires": { - "airbnb-prop-types": "^2.15.0", - "consolidated-events": "^1.1.1 || ^2.0.0", - "document.contains": "^1.0.1", - "object.values": "^1.1.0", - "prop-types": "^15.7.2" - } - }, - "react-portal": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/react-portal/-/react-portal-4.2.1.tgz", - "integrity": "sha512-fE9kOBagwmTXZ3YGRYb4gcMy+kSA+yLO0xnPankjRlfBv4uCpFXqKPfkpsGQQR15wkZ9EssnvTOl1yMzbkxhPQ==", - "dev": true, - "requires": { - "prop-types": "^15.5.8" - } - }, - "react-with-direction": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/react-with-direction/-/react-with-direction-1.4.0.tgz", - "integrity": "sha512-ybHNPiAmaJpoWwugwqry9Hd1Irl2hnNXlo/2SXQBwbLn/jGMauMS2y9jw+ydyX5V9ICryCqObNSthNt5R94xpg==", - "dev": true, - "requires": { - "airbnb-prop-types": "^2.16.0", - "brcast": "^2.0.2", - "deepmerge": "^1.5.2", - "direction": "^1.0.4", - "hoist-non-react-statics": "^3.3.2", - "object.assign": "^4.1.2", - "object.values": "^1.1.5", - "prop-types": "^15.7.2" - } - }, - "react-with-styles": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/react-with-styles/-/react-with-styles-3.2.3.tgz", - "integrity": "sha512-MTI1UOvMHABRLj5M4WpODfwnveHaip6X7QUMI2x6zovinJiBXxzhA9AJP7MZNaKqg1JRFtHPXZdroUC8KcXwlQ==", - "dev": true, - "requires": { - "hoist-non-react-statics": "^3.2.1", - "object.assign": "^4.1.0", - "prop-types": "^15.6.2", - "react-with-direction": "^1.3.0" - } - }, - "react-with-styles-interface-css": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/react-with-styles-interface-css/-/react-with-styles-interface-css-4.0.3.tgz", - "integrity": "sha512-wE43PIyjal2dexxyyx4Lhbcb+E42amoYPnkunRZkb9WTA+Z+9LagbyxwsI352NqMdFmghR0opg29dzDO4/YXbw==", - "dev": true, - "requires": { - "array.prototype.flat": "^1.2.1", - "global-cache": "^1.2.1" - } - } - } - }, - "@wordpress/compose": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.0.4.tgz", - "integrity": "sha512-gRpQgsxF1AnmrJnkmJOixsTtSmimFzasiXZlm0BwhsdeJEEqVO3Mt7ua59bLPHjnUmiyDfMWY9Ongn/2cSCRKQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.13.10", - "@types/lodash": "^4.14.172", - "@types/mousetrap": "^1.6.8", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.5", - "@wordpress/element": "^4.0.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/priority-queue": "^2.2.2", - "clipboard": "^2.0.8", - "lodash": "^4.17.21", - "mousetrap": "^1.6.5", - "react-resize-aware": "^3.1.0", - "use-memo-one": "^1.1.1" - } - }, - "@wordpress/data": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.1.2.tgz", - "integrity": "sha512-Ro4CGmGBgk+7gDOkoB/u/HFPjmObNTZvN1q1vb75gfHOjVmXFt6AZSialELc+AuYODZEedrvHRk7qMBPxsgTVQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/compose": "^5.0.4", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/element": "^4.0.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/priority-queue": "^2.2.2", - "@wordpress/redux-routine": "^4.2.1", - "equivalent-key-map": "^0.2.2", - "is-promise": "^4.0.0", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "turbo-combine-reducers": "^1.0.2", - "use-memo-one": "^1.1.1" - } - }, - "@wordpress/element": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.3.tgz", - "integrity": "sha512-uFL8Xx0Uq/C+nCL5aM4Fb6YVub//1wuHyQK9VDtKwYg9UBELrexSCHo1XaesYRiGUqVW0o837qC7RCP2NLUBJw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.13.10", - "@types/react": "^16.9.0", - "@types/react-dom": "^16.9.0", - "@wordpress/escape-html": "^2.2.2", - "lodash": "^4.17.21", - "react": "^17.0.1", - "react-dom": "^17.0.1" - } - }, - "@wordpress/icons": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@wordpress/icons/-/icons-6.0.1.tgz", - "integrity": "sha512-YAtnWquaWWM49hpoRJwaZRBTnnkwqOY0TuK8a6m0gXE2Xm3uoO/J4c6tLqKiFv3FG9Hmc/CB1WCmx+uM1TX0vw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/element": "^4.0.3", - "@wordpress/primitives": "^3.0.3" - } - }, - "deepmerge": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", - "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", - "dev": true - }, - "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true - }, - "scheduler": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", - "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", - "dev": true, - "peer": true, - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - } - } - }, - "@wordpress/block-serialization-default-parser": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@wordpress/block-serialization-default-parser/-/block-serialization-default-parser-4.2.2.tgz", - "integrity": "sha512-XLig548y+chFJTmjrJptiEwZuMHpz7azIpoZssedGxP1ibffo8GV1VnKzGtr/P+Z/1PHt1L00pQgxtAZmKKBag==", - "requires": { - "@babel/runtime": "^7.13.10" - } - }, - "@wordpress/blocks": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/@wordpress/blocks/-/blocks-11.1.1.tgz", - "integrity": "sha512-Pzk3A4UDQSy1Ay80x/fyrg27efLwfkKyzIHY2XtQrXGlDAT+oGwgJYmqgYff1SYhqFEjq5a7fkN2hGBaYXk+yQ==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/autop": "^3.2.2", - "@wordpress/blob": "^3.2.1", - "@wordpress/block-serialization-default-parser": "^4.2.2", - "@wordpress/compose": "^5.0.3", - "@wordpress/data": "^6.1.1", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.4", - "@wordpress/element": "^4.0.2", - "@wordpress/hooks": "^3.2.1", - "@wordpress/html-entities": "^3.2.2", - "@wordpress/i18n": "^4.2.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/shortcode": "^3.2.2", - "colord": "^2.7.0", - "hpq": "^1.3.0", - "lodash": "^4.17.21", - "rememo": "^3.0.0", - "showdown": "^1.9.1", - "simple-html-tokenizer": "^0.5.7", - "uuid": "^8.3.0" - } - }, - "@wordpress/browserslist-config": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@wordpress/browserslist-config/-/browserslist-config-4.1.0.tgz", - "integrity": "sha512-RSJhgY2xmz6yAdDNhz/NvAO6JS+91vv9cVL7VDG2CftbyjTXBef05vWt3FzZhfeF0xUrYdpZL1PVpxmJiKvbEg==", - "dev": true - }, - "@wordpress/components": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/@wordpress/components/-/components-18.0.0.tgz", - "integrity": "sha512-0KWlm3AXHVd1EeEd8K1Q/aH9ieTZCHdcSyH2m9p4s0mpxl7Ddk0ly9PPAMt6HVliqapYuxAf2gb1UHO9pFyRCw==", - "requires": { - "@babel/runtime": "^7.13.10", - "@emotion/cache": "^11.4.0", - "@emotion/css": "^11.1.3", - "@emotion/react": "^11.4.1", - "@emotion/styled": "^11.3.0", - "@emotion/utils": "1.0.0", - "@wordpress/a11y": "^3.2.3", - "@wordpress/compose": "^5.0.3", - "@wordpress/date": "^4.2.2", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.4", - "@wordpress/element": "^4.0.2", - "@wordpress/hooks": "^3.2.1", - "@wordpress/i18n": "^4.2.3", - "@wordpress/icons": "^6.0.0", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/primitives": "^3.0.2", - "@wordpress/rich-text": "^5.0.3", - "@wordpress/warning": "^2.2.2", - "classnames": "^2.3.1", - "colord": "^2.7.0", - "dom-scroll-into-view": "^1.2.1", - "downshift": "^6.0.15", - "framer-motion": "^4.1.17", - "gradient-parser": "^0.1.5", - "highlight-words-core": "^1.2.2", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "moment": "^2.22.1", - "re-resizable": "^6.4.0", - "react-colorful": "^5.3.1", - "react-dates": "^17.1.1", - "react-resize-aware": "^3.1.0", - "react-use-gesture": "^9.0.0", - "reakit": "^1.3.8", - "rememo": "^3.0.0", - "tinycolor2": "^1.4.2", - "uuid": "^8.3.0" - }, - "dependencies": { - "airbnb-prop-types": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz", - "integrity": "sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg==", - "requires": { - "array.prototype.find": "^2.1.1", - "function.prototype.name": "^1.1.2", - "is-regex": "^1.1.0", - "object-is": "^1.1.2", - "object.assign": "^4.1.0", - "object.entries": "^1.1.2", - "prop-types": "^15.7.2", - "prop-types-exact": "^1.2.0", - "react-is": "^16.13.1" - } - }, - "deepmerge": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", - "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==" - }, - "react": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", - "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", - "peer": true, - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2" - } - }, - "react-dates": { - "version": "17.2.0", - "resolved": "https://registry.npmjs.org/react-dates/-/react-dates-17.2.0.tgz", - "integrity": "sha512-RDlerU8DdRRrlYS0MQ7Z9igPWABGLDwz6+ykBNff67RM3Sset2TDqeuOr+R5o00Ggn5U47GeLsGcSDxlZd9cHw==", - "requires": { - "airbnb-prop-types": "^2.10.0", - "consolidated-events": "^1.1.1 || ^2.0.0", - "is-touch-device": "^1.0.1", - "lodash": "^4.1.1", - "object.assign": "^4.1.0", - "object.values": "^1.0.4", - "prop-types": "^15.6.1", - "react-addons-shallow-compare": "^15.6.2", - "react-moment-proptypes": "^1.6.0", - "react-outside-click-handler": "^1.2.0", - "react-portal": "^4.1.5", - "react-with-styles": "^3.2.0", - "react-with-styles-interface-css": "^4.0.2" - } - }, - "react-dom": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", - "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", - "peer": true, - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.19.1" - } - }, - "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "react-outside-click-handler": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/react-outside-click-handler/-/react-outside-click-handler-1.3.0.tgz", - "integrity": "sha512-Te/7zFU0oHpAnctl//pP3hEAeobfeHMyygHB8MnjP6sX5OR8KHT1G3jmLsV3U9RnIYo+Yn+peJYWu+D5tUS8qQ==", - "requires": { - "airbnb-prop-types": "^2.15.0", - "consolidated-events": "^1.1.1 || ^2.0.0", - "document.contains": "^1.0.1", - "object.values": "^1.1.0", - "prop-types": "^15.7.2" - } - }, - "react-portal": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/react-portal/-/react-portal-4.2.1.tgz", - "integrity": "sha512-fE9kOBagwmTXZ3YGRYb4gcMy+kSA+yLO0xnPankjRlfBv4uCpFXqKPfkpsGQQR15wkZ9EssnvTOl1yMzbkxhPQ==", - "requires": { - "prop-types": "^15.5.8" - } - }, - "react-with-direction": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/react-with-direction/-/react-with-direction-1.4.0.tgz", - "integrity": "sha512-ybHNPiAmaJpoWwugwqry9Hd1Irl2hnNXlo/2SXQBwbLn/jGMauMS2y9jw+ydyX5V9ICryCqObNSthNt5R94xpg==", - "requires": { - "airbnb-prop-types": "^2.16.0", - "brcast": "^2.0.2", - "deepmerge": "^1.5.2", - "direction": "^1.0.4", - "hoist-non-react-statics": "^3.3.2", - "object.assign": "^4.1.2", - "object.values": "^1.1.5", - "prop-types": "^15.7.2" - } - }, - "react-with-styles": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/react-with-styles/-/react-with-styles-3.2.3.tgz", - "integrity": "sha512-MTI1UOvMHABRLj5M4WpODfwnveHaip6X7QUMI2x6zovinJiBXxzhA9AJP7MZNaKqg1JRFtHPXZdroUC8KcXwlQ==", - "requires": { - "hoist-non-react-statics": "^3.2.1", - "object.assign": "^4.1.0", - "prop-types": "^15.6.2", - "react-with-direction": "^1.3.0" - } - }, - "react-with-styles-interface-css": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/react-with-styles-interface-css/-/react-with-styles-interface-css-4.0.3.tgz", - "integrity": "sha512-wE43PIyjal2dexxyyx4Lhbcb+E42amoYPnkunRZkb9WTA+Z+9LagbyxwsI352NqMdFmghR0opg29dzDO4/YXbw==", - "requires": { - "array.prototype.flat": "^1.2.1", - "global-cache": "^1.2.1" - } - }, - "scheduler": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", - "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", - "peer": true, - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - } - } - }, - "@wordpress/compose": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.0.3.tgz", - "integrity": "sha512-uRd4tBp2+FWorLuoec3CyoizgnlbrxvAyPx+it7+OmzP+/Lz6rRYkymaFDA/XTh2umkjYT8pK7FQP1H8+DfqVA==", - "requires": { - "@babel/runtime": "^7.13.10", - "@types/lodash": "^4.14.172", - "@types/mousetrap": "^1.6.8", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.4", - "@wordpress/element": "^4.0.2", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/priority-queue": "^2.2.2", - "clipboard": "^2.0.8", - "lodash": "^4.17.21", - "mousetrap": "^1.6.5", - "react-resize-aware": "^3.1.0", - "use-memo-one": "^1.1.1" - } - }, - "@wordpress/core-data": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@wordpress/core-data/-/core-data-4.0.4.tgz", - "integrity": "sha512-8oEDlOImHDw7eeqAh3dF3bl33iPZKaezAi8IgAfhoRwFs1z9KdbVE4+8RHAtv1qjAPrFMhYBgYn+Rw5XsLrghA==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/api-fetch": "^5.2.4", - "@wordpress/blocks": "^11.1.2", - "@wordpress/data": "^6.1.2", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/element": "^4.0.3", - "@wordpress/html-entities": "^3.2.2", - "@wordpress/i18n": "^4.2.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/url": "^3.2.3", - "equivalent-key-map": "^0.2.2", - "lodash": "^4.17.21", - "rememo": "^3.0.0", - "uuid": "^8.3.0" - }, - "dependencies": { - "@wordpress/api-fetch": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-5.2.4.tgz", - "integrity": "sha512-8vMm08L3MMUynhD6sxe9VhRcfi3qGE3m9j7LpC9yAIxt70DaMRxHWEmGIbgO2F3INkqACdLWnDQmsHDKOSWQsQ==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/i18n": "^4.2.3", - "@wordpress/url": "^3.2.3" - } - }, - "@wordpress/blocks": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/@wordpress/blocks/-/blocks-11.1.2.tgz", - "integrity": "sha512-xVvC/RXj9GXNRkQcGnmjWeS54intybON4Ol2vCVfreJtA5Cra5yRapRJwz3at1sgDD4q06k1sj98SemMEanazw==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/autop": "^3.2.2", - "@wordpress/blob": "^3.2.1", - "@wordpress/block-serialization-default-parser": "^4.2.2", - "@wordpress/compose": "^5.0.4", - "@wordpress/data": "^6.1.2", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.5", - "@wordpress/element": "^4.0.3", - "@wordpress/hooks": "^3.2.1", - "@wordpress/html-entities": "^3.2.2", - "@wordpress/i18n": "^4.2.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/shortcode": "^3.2.2", - "colord": "^2.7.0", - "hpq": "^1.3.0", - "lodash": "^4.17.21", - "rememo": "^3.0.0", - "showdown": "^1.9.1", - "simple-html-tokenizer": "^0.5.7", - "uuid": "^8.3.0" - } - }, - "@wordpress/compose": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.0.4.tgz", - "integrity": "sha512-gRpQgsxF1AnmrJnkmJOixsTtSmimFzasiXZlm0BwhsdeJEEqVO3Mt7ua59bLPHjnUmiyDfMWY9Ongn/2cSCRKQ==", - "requires": { - "@babel/runtime": "^7.13.10", - "@types/lodash": "^4.14.172", - "@types/mousetrap": "^1.6.8", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.5", - "@wordpress/element": "^4.0.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/priority-queue": "^2.2.2", - "clipboard": "^2.0.8", - "lodash": "^4.17.21", - "mousetrap": "^1.6.5", - "react-resize-aware": "^3.1.0", - "use-memo-one": "^1.1.1" - } - }, - "@wordpress/data": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.1.2.tgz", - "integrity": "sha512-Ro4CGmGBgk+7gDOkoB/u/HFPjmObNTZvN1q1vb75gfHOjVmXFt6AZSialELc+AuYODZEedrvHRk7qMBPxsgTVQ==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/compose": "^5.0.4", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/element": "^4.0.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/priority-queue": "^2.2.2", - "@wordpress/redux-routine": "^4.2.1", - "equivalent-key-map": "^0.2.2", - "is-promise": "^4.0.0", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "turbo-combine-reducers": "^1.0.2", - "use-memo-one": "^1.1.1" - } - }, - "@wordpress/element": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.3.tgz", - "integrity": "sha512-uFL8Xx0Uq/C+nCL5aM4Fb6YVub//1wuHyQK9VDtKwYg9UBELrexSCHo1XaesYRiGUqVW0o837qC7RCP2NLUBJw==", - "requires": { - "@babel/runtime": "^7.13.10", - "@types/react": "^16.9.0", - "@types/react-dom": "^16.9.0", - "@wordpress/escape-html": "^2.2.2", - "lodash": "^4.17.21", - "react": "^17.0.1", - "react-dom": "^17.0.1" - } - } - } - }, - "@wordpress/data": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.1.1.tgz", - "integrity": "sha512-I+kvY2aMA4Ec62rZCS4vUKRalZ01qiBTkEQXash+usYH3Lsyi6rULekwUZ9zcisVpWYbaLZsrmmarCusS65KTg==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/compose": "^5.0.3", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/element": "^4.0.2", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/priority-queue": "^2.2.2", - "@wordpress/redux-routine": "^4.2.1", - "equivalent-key-map": "^0.2.2", - "is-promise": "^4.0.0", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "turbo-combine-reducers": "^1.0.2", - "use-memo-one": "^1.1.1" - } - }, - "@wordpress/data-controls": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/@wordpress/data-controls/-/data-controls-2.2.5.tgz", - "integrity": "sha512-kA01JYKze3CSmnjTwkvMPiRkKZfvbZFuNbUOyLmD6WTK1CCahGmD2ro/wv0TyUC7K3Z1w03Ekb+Y9PJA7VACvg==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/api-fetch": "^5.2.4", - "@wordpress/data": "^6.1.2", - "@wordpress/deprecated": "^3.2.2" - }, - "dependencies": { - "@wordpress/api-fetch": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-5.2.4.tgz", - "integrity": "sha512-8vMm08L3MMUynhD6sxe9VhRcfi3qGE3m9j7LpC9yAIxt70DaMRxHWEmGIbgO2F3INkqACdLWnDQmsHDKOSWQsQ==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/i18n": "^4.2.3", - "@wordpress/url": "^3.2.3" - } - }, - "@wordpress/compose": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.0.4.tgz", - "integrity": "sha512-gRpQgsxF1AnmrJnkmJOixsTtSmimFzasiXZlm0BwhsdeJEEqVO3Mt7ua59bLPHjnUmiyDfMWY9Ongn/2cSCRKQ==", - "requires": { - "@babel/runtime": "^7.13.10", - "@types/lodash": "^4.14.172", - "@types/mousetrap": "^1.6.8", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.5", - "@wordpress/element": "^4.0.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/priority-queue": "^2.2.2", - "clipboard": "^2.0.8", - "lodash": "^4.17.21", - "mousetrap": "^1.6.5", - "react-resize-aware": "^3.1.0", - "use-memo-one": "^1.1.1" - } - }, - "@wordpress/data": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.1.2.tgz", - "integrity": "sha512-Ro4CGmGBgk+7gDOkoB/u/HFPjmObNTZvN1q1vb75gfHOjVmXFt6AZSialELc+AuYODZEedrvHRk7qMBPxsgTVQ==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/compose": "^5.0.4", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/element": "^4.0.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/priority-queue": "^2.2.2", - "@wordpress/redux-routine": "^4.2.1", - "equivalent-key-map": "^0.2.2", - "is-promise": "^4.0.0", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "turbo-combine-reducers": "^1.0.2", - "use-memo-one": "^1.1.1" - } - }, - "@wordpress/element": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.3.tgz", - "integrity": "sha512-uFL8Xx0Uq/C+nCL5aM4Fb6YVub//1wuHyQK9VDtKwYg9UBELrexSCHo1XaesYRiGUqVW0o837qC7RCP2NLUBJw==", - "requires": { - "@babel/runtime": "^7.13.10", - "@types/react": "^16.9.0", - "@types/react-dom": "^16.9.0", - "@wordpress/escape-html": "^2.2.2", - "lodash": "^4.17.21", - "react": "^17.0.1", - "react-dom": "^17.0.1" - } - } - } - }, - "@wordpress/date": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@wordpress/date/-/date-4.2.2.tgz", - "integrity": "sha512-sYcMvFwrVoYv5lL9NsYLVd29hfuqgf1L1WsIjDV8hMna1eqr9f8xCrZSLgBKkDBmVWiIcleYGP5uDdrKpu6EiA==", - "requires": { - "@babel/runtime": "^7.13.10", - "moment": "^2.22.1", - "moment-timezone": "^0.5.31" - } - }, - "@wordpress/dependency-extraction-webpack-plugin": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@wordpress/dependency-extraction-webpack-plugin/-/dependency-extraction-webpack-plugin-3.2.1.tgz", - "integrity": "sha512-Ltd+1CJb7PMh6iN2Mse+3yN/oMORug5qXSj/3xmuZERzZO2SO6xNEJGml8yK9ev747cbHktEpitK4H+8VO3Ekg==", - "dev": true, - "requires": { - "json2php": "^0.0.4", - "webpack-sources": "^2.2.0" - } - }, - "@wordpress/deprecated": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.2.2.tgz", - "integrity": "sha512-htsu2zJUuGYG1+jejAi0r25bQQOT3bB0MGjoSixqZ0sRkFMRIdjmMLrSbpGrl0s5IRK2/w/slsStPFmm3reJtA==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/hooks": "^3.2.1" - } - }, - "@wordpress/dom": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.2.5.tgz", - "integrity": "sha512-V/P3w8DH8shSpKB/lq6R39IbV944ztPGCG+H6+HxXWDcfk+x5PCd1tuy2Jx+F+gjsahlkJOufrBh7u2+PmJwgQ==", - "requires": { - "@babel/runtime": "^7.13.10", - "lodash": "^4.17.21" - } - }, - "@wordpress/dom-ready": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@wordpress/dom-ready/-/dom-ready-3.2.2.tgz", - "integrity": "sha512-yCpm/vG3GanhhACnpbc7GZ2sv6oSHIkTxNPgejA5Z8cr0mEc6irsWDzhEHKcP3OhSina++IZ9ZidO7JH7eE2Xg==", - "requires": { - "@babel/runtime": "^7.13.10" - } - }, - "@wordpress/e2e-test-utils": { - "version": "5.4.4", - "resolved": "https://registry.npmjs.org/@wordpress/e2e-test-utils/-/e2e-test-utils-5.4.4.tgz", - "integrity": "sha512-llAWmQXyGFqEc58NHLX2SX1I03VRLCfdrZ2TWRK+qYY6QZns4wsJP4Lg2c1SsXIzUUB9u95Kzx3LvGcZcqLTfw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/api-fetch": "^5.2.3", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/url": "^3.2.3", - "form-data": "^4.0.0", - "lodash": "^4.17.21", - "node-fetch": "^2.6.0" - } - }, - "@wordpress/edit-post": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@wordpress/edit-post/-/edit-post-5.0.3.tgz", - "integrity": "sha512-/DNgi6LqDqBQoGzwYdDIKN++cu2Ry5Zev99sQMN1pnVhlmXXt6nQVUXeJ53Rfi1/baK1VB4okDwKYD84UdZT5Q==", - "dev": true, - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/a11y": "^3.2.3", - "@wordpress/api-fetch": "^5.2.3", - "@wordpress/block-editor": "^7.0.3", - "@wordpress/block-library": "^6.0.1", - "@wordpress/blocks": "^11.1.1", - "@wordpress/components": "^18.0.0", - "@wordpress/compose": "^5.0.3", - "@wordpress/core-data": "^4.0.3", - "@wordpress/data": "^6.1.1", - "@wordpress/data-controls": "^2.2.4", - "@wordpress/editor": "^12.0.0", - "@wordpress/element": "^4.0.2", - "@wordpress/hooks": "^3.2.1", - "@wordpress/i18n": "^4.2.3", - "@wordpress/icons": "^6.0.0", - "@wordpress/interface": "^4.1.1", - "@wordpress/keyboard-shortcuts": "^3.0.3", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/media-utils": "^3.0.2", - "@wordpress/notices": "^3.2.4", - "@wordpress/plugins": "^4.0.3", - "@wordpress/primitives": "^3.0.2", - "@wordpress/url": "^3.2.3", - "@wordpress/viewport": "^4.0.3", - "@wordpress/warning": "^2.2.2", - "classnames": "^2.3.1", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "rememo": "^3.0.0", - "uuid": "8.3.0" - }, - "dependencies": { - "uuid": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.0.tgz", - "integrity": "sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ==", - "dev": true - } - } - }, - "@wordpress/editor": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@wordpress/editor/-/editor-12.0.0.tgz", - "integrity": "sha512-o2MD1eAaIk5pmuZ/MzBO0Mz3ogoOcuugQ4cZpvVl2lZsu8AzVK3PfhrWWgkLFlu5pho5UCBbCKQjwJoAJkyd4Q==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/a11y": "^3.2.3", - "@wordpress/api-fetch": "^5.2.3", - "@wordpress/autop": "^3.2.2", - "@wordpress/blob": "^3.2.1", - "@wordpress/block-editor": "^7.0.3", - "@wordpress/blocks": "^11.1.1", - "@wordpress/components": "^18.0.0", - "@wordpress/compose": "^5.0.3", - "@wordpress/core-data": "^4.0.3", - "@wordpress/data": "^6.1.1", - "@wordpress/data-controls": "^2.2.4", - "@wordpress/date": "^4.2.2", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/element": "^4.0.2", - "@wordpress/hooks": "^3.2.1", - "@wordpress/html-entities": "^3.2.2", - "@wordpress/i18n": "^4.2.3", - "@wordpress/icons": "^6.0.0", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keyboard-shortcuts": "^3.0.3", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/media-utils": "^3.0.2", - "@wordpress/notices": "^3.2.4", - "@wordpress/reusable-blocks": "^3.0.3", - "@wordpress/rich-text": "^5.0.3", - "@wordpress/server-side-render": "^3.0.3", - "@wordpress/url": "^3.2.3", - "@wordpress/wordcount": "^3.2.2", - "classnames": "^2.3.1", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "react-autosize-textarea": "^7.1.0", - "rememo": "^3.0.0" - }, - "dependencies": { - "react": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", - "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", - "peer": true, - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2" - } - }, - "react-autosize-textarea": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/react-autosize-textarea/-/react-autosize-textarea-7.1.0.tgz", - "integrity": "sha512-BHpjCDkuOlllZn3nLazY2F8oYO1tS2jHnWhcjTWQdcKiiMU6gHLNt/fzmqMSyerR0eTdKtfSIqtSeTtghNwS+g==", - "requires": { - "autosize": "^4.0.2", - "line-height": "^0.3.1", - "prop-types": "^15.5.6" - } - }, - "react-dom": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", - "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", - "peer": true, - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.19.1" - } - }, - "scheduler": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", - "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", - "peer": true, - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - } - } - }, - "@wordpress/element": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.2.tgz", - "integrity": "sha512-qBNpkLb7Hh3r9aSwBOBMwRUevScbN5iR1M5B8/ZOuSZbeXYNcgWxX4WqVrt5Y52CNm8WwoQTdqcuIziNN6lhig==", - "requires": { - "@babel/runtime": "^7.13.10", - "@types/react": "^16.9.0", - "@types/react-dom": "^16.9.0", - "@wordpress/escape-html": "^2.2.2", - "lodash": "^4.17.21", - "react": "^17.0.1", - "react-dom": "^17.0.1" - } - }, - "@wordpress/escape-html": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-2.2.2.tgz", - "integrity": "sha512-NuPury2dyaqF7zpDaUOKaoM0FrEuqaDE1c3j7rM6kceJ4ZFDHnCLf5NivwchOLo7Xs0oVtqBdDza/dcSQaLFGg==", - "requires": { - "@babel/runtime": "^7.13.10" - } - }, - "@wordpress/eslint-plugin": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/@wordpress/eslint-plugin/-/eslint-plugin-9.2.0.tgz", - "integrity": "sha512-x0vI4EWeG20TyewXdiyUhGSJRqXR8vw47WZjzdmL8iuitDCoyWkKe73wtEs/mWLDrSNms8S0bTnp0dK6UAMXJw==", - "dev": true, - "requires": { - "@typescript-eslint/eslint-plugin": "^4.31.0", - "@typescript-eslint/parser": "^4.31.0", - "@wordpress/prettier-config": "^1.1.1", - "babel-eslint": "^10.1.0", - "cosmiconfig": "^7.0.0", - "eslint-config-prettier": "^7.1.0", - "eslint-plugin-import": "^2.23.4", - "eslint-plugin-jest": "^24.1.3", - "eslint-plugin-jsdoc": "^36.0.8", - "eslint-plugin-jsx-a11y": "^6.4.1", - "eslint-plugin-prettier": "^3.3.0", - "eslint-plugin-react": "^7.22.0", - "eslint-plugin-react-hooks": "^4.2.0", - "globals": "^12.0.0", - "prettier": "npm:wp-prettier@2.2.1-beta-1", - "requireindex": "^1.2.0" - }, - "dependencies": { - "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", - "dev": true, - "requires": { - "type-fest": "^0.8.1" - } - }, - "prettier": { - "version": "npm:wp-prettier@2.2.1-beta-1", - "resolved": "https://registry.npmjs.org/wp-prettier/-/wp-prettier-2.2.1-beta-1.tgz", - "integrity": "sha512-+JHkqs9LC/JPp51yy1hzs3lQ7qeuWCwOcSzpQNeeY/G7oSpnF61vxt7hRh87zNRTr6ob2ndy0W8rVzhgrcA+Gw==", - "dev": true - }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - } - } - }, - "@wordpress/hooks": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-3.2.1.tgz", - "integrity": "sha512-yI8MHs6UsvgJdDsOnXGkY7/7hrOCEv/M7vwdEVA5r6nGzgJaJxf8pjBqzRkCq3nVaWqxoNZgCMHJSul6Q8RR2g==", - "requires": { - "@babel/runtime": "^7.13.10" - } - }, - "@wordpress/html-entities": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@wordpress/html-entities/-/html-entities-3.2.2.tgz", - "integrity": "sha512-MsmB1wtDMFfvNQiKMVMW+1ie2P3+tBZiHESkDPnXw34Dt4Tk0+QY7eYCR9krNcjJImWYJcxL+4n4M1OF9oQv0Q==", - "requires": { - "@babel/runtime": "^7.13.10" - } - }, - "@wordpress/i18n": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.2.3.tgz", - "integrity": "sha512-iaL7WVmFBVLyUJR0FVeaI0YJK3BiYg6Ir+s3PoJN3ppm+YsZUGThstHL8zSfQFMF0WaQ0OFWjnDqNl1th2annA==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/hooks": "^3.2.1", - "gettext-parser": "^1.3.1", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "sprintf-js": "^1.1.1", - "tannin": "^1.2.0" - } - }, - "@wordpress/icons": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@wordpress/icons/-/icons-6.0.0.tgz", - "integrity": "sha512-dLr7O2mu6JlCQhM3uSIRJHFyv1AeYpRosrcWF9+zlhUy7RBczfLfhf7lXO6gVxhyuUEiWYfvesB5pNha4HxsVg==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/element": "^4.0.2", - "@wordpress/primitives": "^3.0.2" - } - }, - "@wordpress/interface": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@wordpress/interface/-/interface-4.1.2.tgz", - "integrity": "sha512-v4sxmuBwgpTHmGmrYwd8pkTtDclzS2xercESCW1r5NNRuRrzzLBJwtA43WugB5Y9D6YCdctJWHaEcvGugPes9g==", - "dev": true, - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/a11y": "^3.2.3", - "@wordpress/components": "^19.0.0", - "@wordpress/compose": "^5.0.4", - "@wordpress/data": "^6.1.2", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/element": "^4.0.3", - "@wordpress/i18n": "^4.2.3", - "@wordpress/icons": "^6.0.1", - "@wordpress/plugins": "^4.0.4", - "@wordpress/viewport": "^4.0.4", - "classnames": "^2.3.1", - "lodash": "^4.17.21" - }, - "dependencies": { - "@wordpress/components": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/@wordpress/components/-/components-19.0.0.tgz", - "integrity": "sha512-foFC+jJ3nu6PZ2pnjdszi7R17CQRquXkCPaydlOCsuDbsKm0dowR264jAdK0HJWepttj+kh3amWEhzajX6AYtg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.13.10", - "@emotion/cache": "^11.4.0", - "@emotion/css": "^11.1.3", - "@emotion/react": "^11.4.1", - "@emotion/styled": "^11.3.0", - "@emotion/utils": "1.0.0", - "@wordpress/a11y": "^3.2.3", - "@wordpress/compose": "^5.0.4", - "@wordpress/date": "^4.2.2", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.5", - "@wordpress/element": "^4.0.3", - "@wordpress/hooks": "^3.2.1", - "@wordpress/i18n": "^4.2.3", - "@wordpress/icons": "^6.0.1", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/primitives": "^3.0.3", - "@wordpress/rich-text": "^5.0.4", - "@wordpress/warning": "^2.2.2", - "classnames": "^2.3.1", - "colord": "^2.7.0", - "dom-scroll-into-view": "^1.2.1", - "downshift": "^6.0.15", - "framer-motion": "^4.1.17", - "gradient-parser": "^0.1.5", - "highlight-words-core": "^1.2.2", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "moment": "^2.22.1", - "re-resizable": "^6.4.0", - "react-colorful": "^5.3.1", - "react-dates": "^17.1.1", - "react-resize-aware": "^3.1.0", - "react-use-gesture": "^9.0.0", - "reakit": "^1.3.8", - "rememo": "^3.0.0", - "uuid": "^8.3.0" - }, - "dependencies": { - "airbnb-prop-types": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz", - "integrity": "sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg==", - "dev": true, - "requires": { - "array.prototype.find": "^2.1.1", - "function.prototype.name": "^1.1.2", - "is-regex": "^1.1.0", - "object-is": "^1.1.2", - "object.assign": "^4.1.0", - "object.entries": "^1.1.2", - "prop-types": "^15.7.2", - "prop-types-exact": "^1.2.0", - "react-is": "^16.13.1" - } - }, - "react": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", - "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", - "dev": true, - "peer": true, - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2" - } - }, - "react-dates": { - "version": "17.2.0", - "resolved": "https://registry.npmjs.org/react-dates/-/react-dates-17.2.0.tgz", - "integrity": "sha512-RDlerU8DdRRrlYS0MQ7Z9igPWABGLDwz6+ykBNff67RM3Sset2TDqeuOr+R5o00Ggn5U47GeLsGcSDxlZd9cHw==", - "dev": true, - "requires": { - "airbnb-prop-types": "^2.10.0", - "consolidated-events": "^1.1.1 || ^2.0.0", - "is-touch-device": "^1.0.1", - "lodash": "^4.1.1", - "object.assign": "^4.1.0", - "object.values": "^1.0.4", - "prop-types": "^15.6.1", - "react-addons-shallow-compare": "^15.6.2", - "react-moment-proptypes": "^1.6.0", - "react-outside-click-handler": "^1.2.0", - "react-portal": "^4.1.5", - "react-with-styles": "^3.2.0", - "react-with-styles-interface-css": "^4.0.2" - } - }, - "react-dom": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", - "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", - "dev": true, - "peer": true, - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.19.1" - } - }, - "react-outside-click-handler": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/react-outside-click-handler/-/react-outside-click-handler-1.3.0.tgz", - "integrity": "sha512-Te/7zFU0oHpAnctl//pP3hEAeobfeHMyygHB8MnjP6sX5OR8KHT1G3jmLsV3U9RnIYo+Yn+peJYWu+D5tUS8qQ==", - "dev": true, - "requires": { - "airbnb-prop-types": "^2.15.0", - "consolidated-events": "^1.1.1 || ^2.0.0", - "document.contains": "^1.0.1", - "object.values": "^1.1.0", - "prop-types": "^15.7.2" - } - }, - "react-portal": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/react-portal/-/react-portal-4.2.1.tgz", - "integrity": "sha512-fE9kOBagwmTXZ3YGRYb4gcMy+kSA+yLO0xnPankjRlfBv4uCpFXqKPfkpsGQQR15wkZ9EssnvTOl1yMzbkxhPQ==", - "dev": true, - "requires": { - "prop-types": "^15.5.8" - } - }, - "react-with-direction": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/react-with-direction/-/react-with-direction-1.4.0.tgz", - "integrity": "sha512-ybHNPiAmaJpoWwugwqry9Hd1Irl2hnNXlo/2SXQBwbLn/jGMauMS2y9jw+ydyX5V9ICryCqObNSthNt5R94xpg==", - "dev": true, - "requires": { - "airbnb-prop-types": "^2.16.0", - "brcast": "^2.0.2", - "deepmerge": "^1.5.2", - "direction": "^1.0.4", - "hoist-non-react-statics": "^3.3.2", - "object.assign": "^4.1.2", - "object.values": "^1.1.5", - "prop-types": "^15.7.2" - } - }, - "react-with-styles": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/react-with-styles/-/react-with-styles-3.2.3.tgz", - "integrity": "sha512-MTI1UOvMHABRLj5M4WpODfwnveHaip6X7QUMI2x6zovinJiBXxzhA9AJP7MZNaKqg1JRFtHPXZdroUC8KcXwlQ==", - "dev": true, - "requires": { - "hoist-non-react-statics": "^3.2.1", - "object.assign": "^4.1.0", - "prop-types": "^15.6.2", - "react-with-direction": "^1.3.0" - } - }, - "react-with-styles-interface-css": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/react-with-styles-interface-css/-/react-with-styles-interface-css-4.0.3.tgz", - "integrity": "sha512-wE43PIyjal2dexxyyx4Lhbcb+E42amoYPnkunRZkb9WTA+Z+9LagbyxwsI352NqMdFmghR0opg29dzDO4/YXbw==", - "dev": true, - "requires": { - "array.prototype.flat": "^1.2.1", - "global-cache": "^1.2.1" - } - } - } - }, - "@wordpress/compose": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.0.4.tgz", - "integrity": "sha512-gRpQgsxF1AnmrJnkmJOixsTtSmimFzasiXZlm0BwhsdeJEEqVO3Mt7ua59bLPHjnUmiyDfMWY9Ongn/2cSCRKQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.13.10", - "@types/lodash": "^4.14.172", - "@types/mousetrap": "^1.6.8", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.5", - "@wordpress/element": "^4.0.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/priority-queue": "^2.2.2", - "clipboard": "^2.0.8", - "lodash": "^4.17.21", - "mousetrap": "^1.6.5", - "react-resize-aware": "^3.1.0", - "use-memo-one": "^1.1.1" - } - }, - "@wordpress/data": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.1.2.tgz", - "integrity": "sha512-Ro4CGmGBgk+7gDOkoB/u/HFPjmObNTZvN1q1vb75gfHOjVmXFt6AZSialELc+AuYODZEedrvHRk7qMBPxsgTVQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/compose": "^5.0.4", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/element": "^4.0.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/priority-queue": "^2.2.2", - "@wordpress/redux-routine": "^4.2.1", - "equivalent-key-map": "^0.2.2", - "is-promise": "^4.0.0", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "turbo-combine-reducers": "^1.0.2", - "use-memo-one": "^1.1.1" - } - }, - "@wordpress/element": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.3.tgz", - "integrity": "sha512-uFL8Xx0Uq/C+nCL5aM4Fb6YVub//1wuHyQK9VDtKwYg9UBELrexSCHo1XaesYRiGUqVW0o837qC7RCP2NLUBJw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.13.10", - "@types/react": "^16.9.0", - "@types/react-dom": "^16.9.0", - "@wordpress/escape-html": "^2.2.2", - "lodash": "^4.17.21", - "react": "^17.0.1", - "react-dom": "^17.0.1" - } - }, - "@wordpress/icons": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@wordpress/icons/-/icons-6.0.1.tgz", - "integrity": "sha512-YAtnWquaWWM49hpoRJwaZRBTnnkwqOY0TuK8a6m0gXE2Xm3uoO/J4c6tLqKiFv3FG9Hmc/CB1WCmx+uM1TX0vw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/element": "^4.0.3", - "@wordpress/primitives": "^3.0.3" - } - }, - "@wordpress/plugins": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@wordpress/plugins/-/plugins-4.0.4.tgz", - "integrity": "sha512-B2BdGbnt8zF8Ne+mJJsGE5cb6k1w7vG28PNozoCfJfyOEjunqpDtM+C7HaY7ml5qz3h1Q0kifubI96B/eZJGsQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/compose": "^5.0.4", - "@wordpress/element": "^4.0.3", - "@wordpress/hooks": "^3.2.1", - "@wordpress/icons": "^6.0.1", - "lodash": "^4.17.21", - "memize": "^1.1.0" - } - }, - "deepmerge": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", - "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", - "dev": true - }, - "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true - }, - "scheduler": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", - "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", - "dev": true, - "peer": true, - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - } - } - }, - "@wordpress/is-shallow-equal": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-4.2.0.tgz", - "integrity": "sha512-9Oy7f3HFLMNfry4LLwYmfx4tROmusPAOfanv9F/MgzSBfMH7eyxU2JZd4KrP7IbPb59UfoUa8GhaLsnqKm66og==", - "requires": { - "@babel/runtime": "^7.13.10" - } - }, - "@wordpress/jest-console": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@wordpress/jest-console/-/jest-console-4.1.0.tgz", - "integrity": "sha512-MAbEfYUH+odlYYtPNKoKnWzSZKZjSc2r2kvFJ7FR920ZdteEgSAPIOvjyv4r4UbJy3ZuKemnXHuVtcTAKca5Tw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.13.10", - "jest-matcher-utils": "^26.6.2", - "lodash": "^4.17.21" - } - }, - "@wordpress/jest-preset-default": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/@wordpress/jest-preset-default/-/jest-preset-default-7.1.2.tgz", - "integrity": "sha512-TzrGj+eBrOQJxMLNh+gh+ImfFaK3caHLu7U4xF8UCGh6N+OuOTz5W9YHG/lqOuxDLdFhVkiHTytM2uFylGGRsg==", - "dev": true, - "requires": { - "@wojtekmaj/enzyme-adapter-react-17": "^0.6.1", - "@wordpress/jest-console": "^4.1.0", - "babel-jest": "^26.6.3", - "enzyme": "^3.11.0", - "enzyme-to-json": "^3.4.4" - } - }, - "@wordpress/jest-puppeteer-axe": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@wordpress/jest-puppeteer-axe/-/jest-puppeteer-axe-3.1.0.tgz", - "integrity": "sha512-XdxXI9nKSAyPWMMjWObfEuumcbZG0wSvlGzNl/qlTjcxwVNaCIxzBBfMxbcxNLcXHasNr/PowbxVqMCEaMfpcA==", - "dev": true, - "requires": { - "@axe-core/puppeteer": "^4.0.0", - "@babel/runtime": "^7.13.10" - } - }, - "@wordpress/keyboard-shortcuts": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@wordpress/keyboard-shortcuts/-/keyboard-shortcuts-3.0.4.tgz", - "integrity": "sha512-nGYW9d4qiK5pKA4zs/0Ym5SqgUccaCQ/D5qODDlUS9Ba427BiR74L7ANfgN4QH3NPIlSCwrJGFI2UjE1TTyN+Q==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/compose": "^5.0.4", - "@wordpress/data": "^6.1.2", - "@wordpress/element": "^4.0.3", - "@wordpress/keycodes": "^3.2.3", - "lodash": "^4.17.21", - "rememo": "^3.0.0" - }, - "dependencies": { - "@wordpress/compose": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.0.4.tgz", - "integrity": "sha512-gRpQgsxF1AnmrJnkmJOixsTtSmimFzasiXZlm0BwhsdeJEEqVO3Mt7ua59bLPHjnUmiyDfMWY9Ongn/2cSCRKQ==", - "requires": { - "@babel/runtime": "^7.13.10", - "@types/lodash": "^4.14.172", - "@types/mousetrap": "^1.6.8", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.5", - "@wordpress/element": "^4.0.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/priority-queue": "^2.2.2", - "clipboard": "^2.0.8", - "lodash": "^4.17.21", - "mousetrap": "^1.6.5", - "react-resize-aware": "^3.1.0", - "use-memo-one": "^1.1.1" - } - }, - "@wordpress/data": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.1.2.tgz", - "integrity": "sha512-Ro4CGmGBgk+7gDOkoB/u/HFPjmObNTZvN1q1vb75gfHOjVmXFt6AZSialELc+AuYODZEedrvHRk7qMBPxsgTVQ==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/compose": "^5.0.4", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/element": "^4.0.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/priority-queue": "^2.2.2", - "@wordpress/redux-routine": "^4.2.1", - "equivalent-key-map": "^0.2.2", - "is-promise": "^4.0.0", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "turbo-combine-reducers": "^1.0.2", - "use-memo-one": "^1.1.1" - } - }, - "@wordpress/element": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.3.tgz", - "integrity": "sha512-uFL8Xx0Uq/C+nCL5aM4Fb6YVub//1wuHyQK9VDtKwYg9UBELrexSCHo1XaesYRiGUqVW0o837qC7RCP2NLUBJw==", - "requires": { - "@babel/runtime": "^7.13.10", - "@types/react": "^16.9.0", - "@types/react-dom": "^16.9.0", - "@wordpress/escape-html": "^2.2.2", - "lodash": "^4.17.21", - "react": "^17.0.1", - "react-dom": "^17.0.1" - } - } - } - }, - "@wordpress/keycodes": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@wordpress/keycodes/-/keycodes-3.2.3.tgz", - "integrity": "sha512-1ClhtTbOSijLsyubbTlg1Df++W4CmjjRj88L7rzGX63iEHfBX6SSvui2pWVlQigDNdLNoaYGOaWm5eqDnvxkeQ==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/i18n": "^4.2.3", - "lodash": "^4.17.21" - } - }, - "@wordpress/media-utils": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@wordpress/media-utils/-/media-utils-3.0.3.tgz", - "integrity": "sha512-6elIJ8aNnLCWC6uKqCilgUHNOpOw9gnMJ2IFlyKbPrrXJhAhp744Nd9GUkiM1f4UDppWyIv2ik/ve6zx4O3cjg==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/api-fetch": "^5.2.4", - "@wordpress/blob": "^3.2.1", - "@wordpress/element": "^4.0.3", - "@wordpress/i18n": "^4.2.3", - "lodash": "^4.17.21" - }, - "dependencies": { - "@wordpress/api-fetch": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-5.2.4.tgz", - "integrity": "sha512-8vMm08L3MMUynhD6sxe9VhRcfi3qGE3m9j7LpC9yAIxt70DaMRxHWEmGIbgO2F3INkqACdLWnDQmsHDKOSWQsQ==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/i18n": "^4.2.3", - "@wordpress/url": "^3.2.3" - } - }, - "@wordpress/element": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.3.tgz", - "integrity": "sha512-uFL8Xx0Uq/C+nCL5aM4Fb6YVub//1wuHyQK9VDtKwYg9UBELrexSCHo1XaesYRiGUqVW0o837qC7RCP2NLUBJw==", - "requires": { - "@babel/runtime": "^7.13.10", - "@types/react": "^16.9.0", - "@types/react-dom": "^16.9.0", - "@wordpress/escape-html": "^2.2.2", - "lodash": "^4.17.21", - "react": "^17.0.1", - "react-dom": "^17.0.1" - } - } - } - }, - "@wordpress/notices": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/@wordpress/notices/-/notices-3.2.5.tgz", - "integrity": "sha512-kyj6iN0yRboOEf+/TfqeW3FSq937Tg443i1UdLGv5mZEMYpi0d+0zEORLLjAnwJmWCp6yglaKOIGlSXqTVQ4sg==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/a11y": "^3.2.3", - "@wordpress/data": "^6.1.2", - "lodash": "^4.17.21" - }, - "dependencies": { - "@wordpress/compose": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.0.4.tgz", - "integrity": "sha512-gRpQgsxF1AnmrJnkmJOixsTtSmimFzasiXZlm0BwhsdeJEEqVO3Mt7ua59bLPHjnUmiyDfMWY9Ongn/2cSCRKQ==", - "requires": { - "@babel/runtime": "^7.13.10", - "@types/lodash": "^4.14.172", - "@types/mousetrap": "^1.6.8", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.5", - "@wordpress/element": "^4.0.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/priority-queue": "^2.2.2", - "clipboard": "^2.0.8", - "lodash": "^4.17.21", - "mousetrap": "^1.6.5", - "react-resize-aware": "^3.1.0", - "use-memo-one": "^1.1.1" - } - }, - "@wordpress/data": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.1.2.tgz", - "integrity": "sha512-Ro4CGmGBgk+7gDOkoB/u/HFPjmObNTZvN1q1vb75gfHOjVmXFt6AZSialELc+AuYODZEedrvHRk7qMBPxsgTVQ==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/compose": "^5.0.4", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/element": "^4.0.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/priority-queue": "^2.2.2", - "@wordpress/redux-routine": "^4.2.1", - "equivalent-key-map": "^0.2.2", - "is-promise": "^4.0.0", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "turbo-combine-reducers": "^1.0.2", - "use-memo-one": "^1.1.1" - } - }, - "@wordpress/element": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.3.tgz", - "integrity": "sha512-uFL8Xx0Uq/C+nCL5aM4Fb6YVub//1wuHyQK9VDtKwYg9UBELrexSCHo1XaesYRiGUqVW0o837qC7RCP2NLUBJw==", - "requires": { - "@babel/runtime": "^7.13.10", - "@types/react": "^16.9.0", - "@types/react-dom": "^16.9.0", - "@wordpress/escape-html": "^2.2.2", - "lodash": "^4.17.21", - "react": "^17.0.1", - "react-dom": "^17.0.1" - } - } - } - }, - "@wordpress/npm-package-json-lint-config": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@wordpress/npm-package-json-lint-config/-/npm-package-json-lint-config-4.1.0.tgz", - "integrity": "sha512-FjXL5GbpmI/wXXcpCf2sKosVIVuWjUuHmDbwcMzd0SClcudo9QjDRdVe35We+js8eQLPgB9hsG4Cty6cAFFxsQ==", - "dev": true, - "requires": {} - }, - "@wordpress/plugins": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@wordpress/plugins/-/plugins-4.0.3.tgz", - "integrity": "sha512-NRmnuaoj0AlMz+APYLWpDUpfl2ammVsUjZLGgTJykjREQhsb6U5FY6DI3pHyJ79kMTtgpioGk8cD7bGiG4PVYA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/compose": "^5.0.3", - "@wordpress/element": "^4.0.2", - "@wordpress/hooks": "^3.2.1", - "@wordpress/icons": "^6.0.0", - "lodash": "^4.17.21", - "memize": "^1.1.0" - } - }, - "@wordpress/postcss-plugins-preset": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@wordpress/postcss-plugins-preset/-/postcss-plugins-preset-3.2.3.tgz", - "integrity": "sha512-l7JDUDVnS0me3TjAzEEWO+OVumw2YHfEFhgwBCiLsXRRXOui8h64GCiIT71aiLpX6NG8Sn0AgBzKEfTotZZyAw==", - "dev": true, - "requires": { - "@wordpress/base-styles": "^4.0.2", - "autoprefixer": "^10.2.5" - }, - "dependencies": { - "autoprefixer": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.0.tgz", - "integrity": "sha512-7FdJ1ONtwzV1G43GDD0kpVMn/qbiNqyOPMFTX5nRffI+7vgWoFEc6DcXOxHJxrWNDXrZh18eDsZjvZGUljSRGA==", - "dev": true, - "requires": { - "browserslist": "^4.17.5", - "caniuse-lite": "^1.0.30001272", - "fraction.js": "^4.1.1", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.1.0" - } - } - } - }, - "@wordpress/prettier-config": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@wordpress/prettier-config/-/prettier-config-1.1.1.tgz", - "integrity": "sha512-qjpBK5KB2ieCLv+1fGNKRW4urf5tFN1eUn3Qy+JINxNwAx6Jj9uhfXA4AldCSnD+WkzsN2UgBvgAj5/SWwzRZQ==", - "dev": true - }, - "@wordpress/primitives": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@wordpress/primitives/-/primitives-3.0.3.tgz", - "integrity": "sha512-eG1UE5d9xnML7PCr1DpP1PEliwLM4KIuEFieHVpW1HkiybyENeTl33HdqXalOSuNAdYrnYa4KifThbjcTdzP2Q==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/element": "^4.0.3", - "classnames": "^2.3.1" - }, - "dependencies": { - "@wordpress/element": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.3.tgz", - "integrity": "sha512-uFL8Xx0Uq/C+nCL5aM4Fb6YVub//1wuHyQK9VDtKwYg9UBELrexSCHo1XaesYRiGUqVW0o837qC7RCP2NLUBJw==", - "requires": { - "@babel/runtime": "^7.13.10", - "@types/react": "^16.9.0", - "@types/react-dom": "^16.9.0", - "@wordpress/escape-html": "^2.2.2", - "lodash": "^4.17.21", - "react": "^17.0.1", - "react-dom": "^17.0.1" - } - } - } - }, - "@wordpress/priority-queue": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@wordpress/priority-queue/-/priority-queue-2.2.2.tgz", - "integrity": "sha512-28zPQ1jIhM+9w0xfLzL8xoHIEyG0ORjIi4A8j3aWBYXHYH9f/7oVAtJRXgVTJ9iJFyiUTL8sDiaZQ6aTFV78Tg==", - "requires": { - "@babel/runtime": "^7.13.10" - } - }, - "@wordpress/redux-routine": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@wordpress/redux-routine/-/redux-routine-4.2.1.tgz", - "integrity": "sha512-u//4vdeKzYvu4YBRmSUsIbnUazai+PybEnquLPqxQdaF4JqVN1D5OPWHSeFtmaXR1c78I+lUf40Q7dnmA2waXw==", - "requires": { - "@babel/runtime": "^7.13.10", - "is-promise": "^4.0.0", - "lodash": "^4.17.21", - "redux": "^4.1.0", - "rungen": "^0.3.2" - } - }, - "@wordpress/reusable-blocks": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@wordpress/reusable-blocks/-/reusable-blocks-3.0.4.tgz", - "integrity": "sha512-q1yfd/jF9Hu6axhzP4NWjry1eOaVUilSu0e9FSkCxzMkI6jS2Heb1oRv3YQKVhV0vCD1WkGI6XLpHRZuXSYUIg==", - "requires": { - "@wordpress/block-editor": "^7.0.4", - "@wordpress/blocks": "^11.1.2", - "@wordpress/components": "^19.0.0", - "@wordpress/compose": "^5.0.4", - "@wordpress/core-data": "^4.0.4", - "@wordpress/data": "^6.1.2", - "@wordpress/element": "^4.0.3", - "@wordpress/i18n": "^4.2.3", - "@wordpress/icons": "^6.0.1", - "@wordpress/notices": "^3.2.5", - "@wordpress/url": "^3.2.3", - "lodash": "^4.17.21" - }, - "dependencies": { - "@wordpress/api-fetch": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-5.2.4.tgz", - "integrity": "sha512-8vMm08L3MMUynhD6sxe9VhRcfi3qGE3m9j7LpC9yAIxt70DaMRxHWEmGIbgO2F3INkqACdLWnDQmsHDKOSWQsQ==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/i18n": "^4.2.3", - "@wordpress/url": "^3.2.3" - } - }, - "@wordpress/block-editor": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@wordpress/block-editor/-/block-editor-7.0.4.tgz", - "integrity": "sha512-crnKOzGrqe9YZOFRbEsJhfm5sGNoCK8oHDTTO8TeTlKw4tGbvTUK3aayxTr9cd2Uu3J3Cy13d3M9qJC8ebXhbQ==", - "requires": { - "@babel/runtime": "^7.13.10", - "@react-spring/web": "^9.2.4", - "@wordpress/a11y": "^3.2.3", - "@wordpress/api-fetch": "^5.2.4", - "@wordpress/blob": "^3.2.1", - "@wordpress/block-serialization-default-parser": "^4.2.2", - "@wordpress/blocks": "^11.1.2", - "@wordpress/components": "^19.0.0", - "@wordpress/compose": "^5.0.4", - "@wordpress/data": "^6.1.2", - "@wordpress/data-controls": "^2.2.5", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.5", - "@wordpress/element": "^4.0.3", - "@wordpress/hooks": "^3.2.1", - "@wordpress/html-entities": "^3.2.2", - "@wordpress/i18n": "^4.2.3", - "@wordpress/icons": "^6.0.1", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keyboard-shortcuts": "^3.0.4", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/notices": "^3.2.5", - "@wordpress/rich-text": "^5.0.4", - "@wordpress/shortcode": "^3.2.2", - "@wordpress/token-list": "^2.2.1", - "@wordpress/url": "^3.2.3", - "@wordpress/warning": "^2.2.2", - "@wordpress/wordcount": "^3.2.2", - "classnames": "^2.3.1", - "colord": "^2.7.0", - "css-mediaquery": "^0.1.2", - "diff": "^4.0.2", - "dom-scroll-into-view": "^1.2.1", - "inherits": "^2.0.3", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "react-autosize-textarea": "^7.1.0", - "react-easy-crop": "^3.0.0", - "redux-multi": "^0.1.12", - "rememo": "^3.0.0", - "traverse": "^0.6.6" - }, - "dependencies": { - "react": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", - "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", - "peer": true, - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2" - } - }, - "react-autosize-textarea": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/react-autosize-textarea/-/react-autosize-textarea-7.1.0.tgz", - "integrity": "sha512-BHpjCDkuOlllZn3nLazY2F8oYO1tS2jHnWhcjTWQdcKiiMU6gHLNt/fzmqMSyerR0eTdKtfSIqtSeTtghNwS+g==", - "requires": { - "autosize": "^4.0.2", - "line-height": "^0.3.1", - "prop-types": "^15.5.6" - } - }, - "react-dom": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", - "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", - "peer": true, - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.19.1" - } - } - } - }, - "@wordpress/blocks": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/@wordpress/blocks/-/blocks-11.1.2.tgz", - "integrity": "sha512-xVvC/RXj9GXNRkQcGnmjWeS54intybON4Ol2vCVfreJtA5Cra5yRapRJwz3at1sgDD4q06k1sj98SemMEanazw==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/autop": "^3.2.2", - "@wordpress/blob": "^3.2.1", - "@wordpress/block-serialization-default-parser": "^4.2.2", - "@wordpress/compose": "^5.0.4", - "@wordpress/data": "^6.1.2", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.5", - "@wordpress/element": "^4.0.3", - "@wordpress/hooks": "^3.2.1", - "@wordpress/html-entities": "^3.2.2", - "@wordpress/i18n": "^4.2.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/shortcode": "^3.2.2", - "colord": "^2.7.0", - "hpq": "^1.3.0", - "lodash": "^4.17.21", - "rememo": "^3.0.0", - "showdown": "^1.9.1", - "simple-html-tokenizer": "^0.5.7", - "uuid": "^8.3.0" - } - }, - "@wordpress/components": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/@wordpress/components/-/components-19.0.0.tgz", - "integrity": "sha512-foFC+jJ3nu6PZ2pnjdszi7R17CQRquXkCPaydlOCsuDbsKm0dowR264jAdK0HJWepttj+kh3amWEhzajX6AYtg==", - "requires": { - "@babel/runtime": "^7.13.10", - "@emotion/cache": "^11.4.0", - "@emotion/css": "^11.1.3", - "@emotion/react": "^11.4.1", - "@emotion/styled": "^11.3.0", - "@emotion/utils": "1.0.0", - "@wordpress/a11y": "^3.2.3", - "@wordpress/compose": "^5.0.4", - "@wordpress/date": "^4.2.2", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.5", - "@wordpress/element": "^4.0.3", - "@wordpress/hooks": "^3.2.1", - "@wordpress/i18n": "^4.2.3", - "@wordpress/icons": "^6.0.1", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/primitives": "^3.0.3", - "@wordpress/rich-text": "^5.0.4", - "@wordpress/warning": "^2.2.2", - "classnames": "^2.3.1", - "colord": "^2.7.0", - "dom-scroll-into-view": "^1.2.1", - "downshift": "^6.0.15", - "framer-motion": "^4.1.17", - "gradient-parser": "^0.1.5", - "highlight-words-core": "^1.2.2", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "moment": "^2.22.1", - "re-resizable": "^6.4.0", - "react-colorful": "^5.3.1", - "react-dates": "^17.1.1", - "react-resize-aware": "^3.1.0", - "react-use-gesture": "^9.0.0", - "reakit": "^1.3.8", - "rememo": "^3.0.0", - "uuid": "^8.3.0" - }, - "dependencies": { - "airbnb-prop-types": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz", - "integrity": "sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg==", - "requires": { - "array.prototype.find": "^2.1.1", - "function.prototype.name": "^1.1.2", - "is-regex": "^1.1.0", - "object-is": "^1.1.2", - "object.assign": "^4.1.0", - "object.entries": "^1.1.2", - "prop-types": "^15.7.2", - "prop-types-exact": "^1.2.0", - "react-is": "^16.13.1" - } - }, - "react": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", - "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", - "peer": true, - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2" - } - }, - "react-dates": { - "version": "17.2.0", - "resolved": "https://registry.npmjs.org/react-dates/-/react-dates-17.2.0.tgz", - "integrity": "sha512-RDlerU8DdRRrlYS0MQ7Z9igPWABGLDwz6+ykBNff67RM3Sset2TDqeuOr+R5o00Ggn5U47GeLsGcSDxlZd9cHw==", - "requires": { - "airbnb-prop-types": "^2.10.0", - "consolidated-events": "^1.1.1 || ^2.0.0", - "is-touch-device": "^1.0.1", - "lodash": "^4.1.1", - "object.assign": "^4.1.0", - "object.values": "^1.0.4", - "prop-types": "^15.6.1", - "react-addons-shallow-compare": "^15.6.2", - "react-moment-proptypes": "^1.6.0", - "react-outside-click-handler": "^1.2.0", - "react-portal": "^4.1.5", - "react-with-styles": "^3.2.0", - "react-with-styles-interface-css": "^4.0.2" - } - }, - "react-dom": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", - "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", - "peer": true, - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.19.1" - } - }, - "react-outside-click-handler": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/react-outside-click-handler/-/react-outside-click-handler-1.3.0.tgz", - "integrity": "sha512-Te/7zFU0oHpAnctl//pP3hEAeobfeHMyygHB8MnjP6sX5OR8KHT1G3jmLsV3U9RnIYo+Yn+peJYWu+D5tUS8qQ==", - "requires": { - "airbnb-prop-types": "^2.15.0", - "consolidated-events": "^1.1.1 || ^2.0.0", - "document.contains": "^1.0.1", - "object.values": "^1.1.0", - "prop-types": "^15.7.2" - } - }, - "react-portal": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/react-portal/-/react-portal-4.2.1.tgz", - "integrity": "sha512-fE9kOBagwmTXZ3YGRYb4gcMy+kSA+yLO0xnPankjRlfBv4uCpFXqKPfkpsGQQR15wkZ9EssnvTOl1yMzbkxhPQ==", - "requires": { - "prop-types": "^15.5.8" - } - }, - "react-with-direction": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/react-with-direction/-/react-with-direction-1.4.0.tgz", - "integrity": "sha512-ybHNPiAmaJpoWwugwqry9Hd1Irl2hnNXlo/2SXQBwbLn/jGMauMS2y9jw+ydyX5V9ICryCqObNSthNt5R94xpg==", - "requires": { - "airbnb-prop-types": "^2.16.0", - "brcast": "^2.0.2", - "deepmerge": "^1.5.2", - "direction": "^1.0.4", - "hoist-non-react-statics": "^3.3.2", - "object.assign": "^4.1.2", - "object.values": "^1.1.5", - "prop-types": "^15.7.2" - } - }, - "react-with-styles": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/react-with-styles/-/react-with-styles-3.2.3.tgz", - "integrity": "sha512-MTI1UOvMHABRLj5M4WpODfwnveHaip6X7QUMI2x6zovinJiBXxzhA9AJP7MZNaKqg1JRFtHPXZdroUC8KcXwlQ==", - "requires": { - "hoist-non-react-statics": "^3.2.1", - "object.assign": "^4.1.0", - "prop-types": "^15.6.2", - "react-with-direction": "^1.3.0" - } - }, - "react-with-styles-interface-css": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/react-with-styles-interface-css/-/react-with-styles-interface-css-4.0.3.tgz", - "integrity": "sha512-wE43PIyjal2dexxyyx4Lhbcb+E42amoYPnkunRZkb9WTA+Z+9LagbyxwsI352NqMdFmghR0opg29dzDO4/YXbw==", - "requires": { - "array.prototype.flat": "^1.2.1", - "global-cache": "^1.2.1" - } - } - } - }, - "@wordpress/compose": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.0.4.tgz", - "integrity": "sha512-gRpQgsxF1AnmrJnkmJOixsTtSmimFzasiXZlm0BwhsdeJEEqVO3Mt7ua59bLPHjnUmiyDfMWY9Ongn/2cSCRKQ==", - "requires": { - "@babel/runtime": "^7.13.10", - "@types/lodash": "^4.14.172", - "@types/mousetrap": "^1.6.8", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.5", - "@wordpress/element": "^4.0.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/priority-queue": "^2.2.2", - "clipboard": "^2.0.8", - "lodash": "^4.17.21", - "mousetrap": "^1.6.5", - "react-resize-aware": "^3.1.0", - "use-memo-one": "^1.1.1" - } - }, - "@wordpress/data": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.1.2.tgz", - "integrity": "sha512-Ro4CGmGBgk+7gDOkoB/u/HFPjmObNTZvN1q1vb75gfHOjVmXFt6AZSialELc+AuYODZEedrvHRk7qMBPxsgTVQ==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/compose": "^5.0.4", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/element": "^4.0.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/priority-queue": "^2.2.2", - "@wordpress/redux-routine": "^4.2.1", - "equivalent-key-map": "^0.2.2", - "is-promise": "^4.0.0", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "turbo-combine-reducers": "^1.0.2", - "use-memo-one": "^1.1.1" - } - }, - "@wordpress/element": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.3.tgz", - "integrity": "sha512-uFL8Xx0Uq/C+nCL5aM4Fb6YVub//1wuHyQK9VDtKwYg9UBELrexSCHo1XaesYRiGUqVW0o837qC7RCP2NLUBJw==", - "requires": { - "@babel/runtime": "^7.13.10", - "@types/react": "^16.9.0", - "@types/react-dom": "^16.9.0", - "@wordpress/escape-html": "^2.2.2", - "lodash": "^4.17.21", - "react": "^17.0.1", - "react-dom": "^17.0.1" - } - }, - "@wordpress/icons": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@wordpress/icons/-/icons-6.0.1.tgz", - "integrity": "sha512-YAtnWquaWWM49hpoRJwaZRBTnnkwqOY0TuK8a6m0gXE2Xm3uoO/J4c6tLqKiFv3FG9Hmc/CB1WCmx+uM1TX0vw==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/element": "^4.0.3", - "@wordpress/primitives": "^3.0.3" - } - }, - "deepmerge": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", - "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==" - }, - "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "scheduler": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", - "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", - "peer": true, - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - } - } - }, - "@wordpress/rich-text": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@wordpress/rich-text/-/rich-text-5.0.4.tgz", - "integrity": "sha512-a+eIKav2kNfaG2R1LUbI+nB4uUH8HLh/YSGjjRaMRvBQb6Tdu3+ELttqk2DnzjREVrSFYb6h7WvdTlCpN0Q/1g==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/compose": "^5.0.4", - "@wordpress/data": "^6.1.2", - "@wordpress/dom": "^3.2.5", - "@wordpress/element": "^4.0.3", - "@wordpress/escape-html": "^2.2.2", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keycodes": "^3.2.3", - "classnames": "^2.3.1", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "rememo": "^3.0.0" - }, - "dependencies": { - "@wordpress/compose": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.0.4.tgz", - "integrity": "sha512-gRpQgsxF1AnmrJnkmJOixsTtSmimFzasiXZlm0BwhsdeJEEqVO3Mt7ua59bLPHjnUmiyDfMWY9Ongn/2cSCRKQ==", - "requires": { - "@babel/runtime": "^7.13.10", - "@types/lodash": "^4.14.172", - "@types/mousetrap": "^1.6.8", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.5", - "@wordpress/element": "^4.0.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/priority-queue": "^2.2.2", - "clipboard": "^2.0.8", - "lodash": "^4.17.21", - "mousetrap": "^1.6.5", - "react-resize-aware": "^3.1.0", - "use-memo-one": "^1.1.1" - } - }, - "@wordpress/data": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.1.2.tgz", - "integrity": "sha512-Ro4CGmGBgk+7gDOkoB/u/HFPjmObNTZvN1q1vb75gfHOjVmXFt6AZSialELc+AuYODZEedrvHRk7qMBPxsgTVQ==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/compose": "^5.0.4", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/element": "^4.0.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/priority-queue": "^2.2.2", - "@wordpress/redux-routine": "^4.2.1", - "equivalent-key-map": "^0.2.2", - "is-promise": "^4.0.0", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "turbo-combine-reducers": "^1.0.2", - "use-memo-one": "^1.1.1" - } - }, - "@wordpress/element": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.3.tgz", - "integrity": "sha512-uFL8Xx0Uq/C+nCL5aM4Fb6YVub//1wuHyQK9VDtKwYg9UBELrexSCHo1XaesYRiGUqVW0o837qC7RCP2NLUBJw==", - "requires": { - "@babel/runtime": "^7.13.10", - "@types/react": "^16.9.0", - "@types/react-dom": "^16.9.0", - "@wordpress/escape-html": "^2.2.2", - "lodash": "^4.17.21", - "react": "^17.0.1", - "react-dom": "^17.0.1" - } - } - } - }, - "@wordpress/scripts": { - "version": "18.1.0", - "resolved": "https://registry.npmjs.org/@wordpress/scripts/-/scripts-18.1.0.tgz", - "integrity": "sha512-hSRGfnRpGyr3Ec//XfMDCoC3M85nX+KyNAqIBJpLAIYo/gs5x9Gw2fX9ac4ts+hx9VIa7d0RmH5+Gqsxupzp+g==", - "dev": true, - "requires": { - "@svgr/webpack": "^5.5.0", - "@wordpress/babel-preset-default": "^6.3.3", - "@wordpress/browserslist-config": "^4.1.0", - "@wordpress/dependency-extraction-webpack-plugin": "^3.2.1", - "@wordpress/eslint-plugin": "^9.2.0", - "@wordpress/jest-preset-default": "^7.1.1", - "@wordpress/npm-package-json-lint-config": "^4.1.0", - "@wordpress/postcss-plugins-preset": "^3.2.2", - "@wordpress/prettier-config": "^1.1.1", - "@wordpress/stylelint-config": "^19.1.0", - "babel-jest": "^26.6.3", - "babel-loader": "^8.2.2", - "browserslist": "^4.16.6", - "chalk": "^4.0.0", - "check-node-version": "^4.1.0", - "clean-webpack-plugin": "^3.0.0", - "cross-spawn": "^5.1.0", - "css-loader": "^6.2.0", - "cssnano": "^5.0.7", - "cwd": "^0.10.0", - "dir-glob": "^3.0.1", - "eslint": "^7.17.0", - "eslint-plugin-markdown": "^2.2.0", - "expect-puppeteer": "^4.4.0", - "filenamify": "^4.2.0", - "jest": "^26.6.3", - "jest-circus": "^26.6.3", - "jest-dev-server": "^5.0.3", - "jest-environment-node": "^26.6.2", - "markdownlint": "^0.23.1", - "markdownlint-cli": "^0.27.1", - "merge-deep": "^3.0.3", - "mini-css-extract-plugin": "^2.1.0", - "minimist": "^1.2.0", - "npm-package-json-lint": "^5.0.0", - "postcss": "^8.2.15", - "postcss-loader": "^6.1.1", - "prettier": "npm:wp-prettier@2.2.1-beta-1", - "puppeteer-core": "^10.1.0", - "read-pkg-up": "^1.0.1", - "resolve-bin": "^0.4.0", - "sass": "^1.35.2", - "sass-loader": "^12.1.0", - "source-map-loader": "^3.0.0", - "stylelint": "^13.8.0", - "terser-webpack-plugin": "^5.1.4", - "url-loader": "^4.1.1", - "webpack": "^5.47.1", - "webpack-bundle-analyzer": "^4.4.2", - "webpack-cli": "^4.7.2", - "webpack-livereload-plugin": "^3.0.1" - }, - "dependencies": { - "@jest/console": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz", - "integrity": "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==", - "dev": true, - "requires": { - "@jest/types": "^26.6.2", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^26.6.2", - "jest-util": "^26.6.2", - "slash": "^3.0.0" - } - }, - "@jest/core": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz", - "integrity": "sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==", - "dev": true, - "requires": { - "@jest/console": "^26.6.2", - "@jest/reporters": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-changed-files": "^26.6.2", - "jest-config": "^26.6.3", - "jest-haste-map": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-resolve": "^26.6.2", - "jest-resolve-dependencies": "^26.6.3", - "jest-runner": "^26.6.3", - "jest-runtime": "^26.6.3", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "jest-watcher": "^26.6.2", - "micromatch": "^4.0.2", - "p-each-series": "^2.1.0", - "rimraf": "^3.0.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "@jest/globals": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz", - "integrity": "sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==", - "dev": true, - "requires": { - "@jest/environment": "^26.6.2", - "@jest/types": "^26.6.2", - "expect": "^26.6.2" - } - }, - "@jest/reporters": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-26.6.2.tgz", - "integrity": "sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==", - "dev": true, - "requires": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.2.4", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^4.0.3", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "jest-haste-map": "^26.6.2", - "jest-resolve": "^26.6.2", - "jest-util": "^26.6.2", - "jest-worker": "^26.6.2", - "node-notifier": "^8.0.0", - "slash": "^3.0.0", - "source-map": "^0.6.0", - "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^7.0.0" - } - }, - "@jest/source-map": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz", - "integrity": "sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==", - "dev": true, - "requires": { - "callsites": "^3.0.0", - "graceful-fs": "^4.2.4", - "source-map": "^0.6.0" - } - }, - "@jest/test-result": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz", - "integrity": "sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==", - "dev": true, - "requires": { - "@jest/console": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - } - }, - "@jest/test-sequencer": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz", - "integrity": "sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==", - "dev": true, - "requires": { - "@jest/test-result": "^26.6.2", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^26.6.2", - "jest-runner": "^26.6.3", - "jest-runtime": "^26.6.3" - } - }, - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "requires": { - "type-fest": "^0.21.3" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "cjs-module-lexer": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz", - "integrity": "sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==", - "dev": true - }, - "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "css-declaration-sorter": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.1.3.tgz", - "integrity": "sha512-SvjQjNRZgh4ULK1LDJ2AduPKUKxIqmtU7ZAyi47BTV+M90Qvxr9AB6lKlLbDUfXqI9IQeYA8LbAsCZPpJEV3aA==", - "dev": true, - "requires": { - "timsort": "^0.3.0" - } - }, - "cssnano": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.0.8.tgz", - "integrity": "sha512-Lda7geZU0Yu+RZi2SGpjYuQz4HI4/1Y+BhdD0jL7NXAQ5larCzVn+PUGuZbDMYz904AXXCOgO5L1teSvgu7aFg==", - "dev": true, - "requires": { - "cssnano-preset-default": "^5.1.4", - "is-resolvable": "^1.1.0", - "lilconfig": "^2.0.3", - "yaml": "^1.10.2" - } - }, - "cssnano-preset-default": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.1.4.tgz", - "integrity": "sha512-sPpQNDQBI3R/QsYxQvfB4mXeEcWuw0wGtKtmS5eg8wudyStYMgKOQT39G07EbW1LB56AOYrinRS9f0ig4Y3MhQ==", - "dev": true, - "requires": { - "css-declaration-sorter": "^6.0.3", - "cssnano-utils": "^2.0.1", - "postcss-calc": "^8.0.0", - "postcss-colormin": "^5.2.0", - "postcss-convert-values": "^5.0.1", - "postcss-discard-comments": "^5.0.1", - "postcss-discard-duplicates": "^5.0.1", - "postcss-discard-empty": "^5.0.1", - "postcss-discard-overridden": "^5.0.1", - "postcss-merge-longhand": "^5.0.2", - "postcss-merge-rules": "^5.0.2", - "postcss-minify-font-values": "^5.0.1", - "postcss-minify-gradients": "^5.0.2", - "postcss-minify-params": "^5.0.1", - "postcss-minify-selectors": "^5.1.0", - "postcss-normalize-charset": "^5.0.1", - "postcss-normalize-display-values": "^5.0.1", - "postcss-normalize-positions": "^5.0.1", - "postcss-normalize-repeat-style": "^5.0.1", - "postcss-normalize-string": "^5.0.1", - "postcss-normalize-timing-functions": "^5.0.1", - "postcss-normalize-unicode": "^5.0.1", - "postcss-normalize-url": "^5.0.2", - "postcss-normalize-whitespace": "^5.0.1", - "postcss-ordered-values": "^5.0.2", - "postcss-reduce-initial": "^5.0.1", - "postcss-reduce-transforms": "^5.0.1", - "postcss-svgo": "^5.0.2", - "postcss-unique-selectors": "^5.0.1" - } - }, - "cssnano-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-2.0.1.tgz", - "integrity": "sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ==", - "dev": true, - "requires": {} - }, - "emittery": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz", - "integrity": "sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "execa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - } - } - }, - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", - "dev": true, - "requires": { - "@babel/core": "^7.7.5", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", - "semver": "^6.3.0" - } - }, - "jest": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.3.tgz", - "integrity": "sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==", - "dev": true, - "requires": { - "@jest/core": "^26.6.3", - "import-local": "^3.0.2", - "jest-cli": "^26.6.3" - } - }, - "jest-changed-files": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.6.2.tgz", - "integrity": "sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==", - "dev": true, - "requires": { - "@jest/types": "^26.6.2", - "execa": "^4.0.0", - "throat": "^5.0.0" - } - }, - "jest-cli": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz", - "integrity": "sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==", - "dev": true, - "requires": { - "@jest/core": "^26.6.3", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "import-local": "^3.0.2", - "is-ci": "^2.0.0", - "jest-config": "^26.6.3", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "prompts": "^2.0.1", - "yargs": "^15.4.1" - } - }, - "jest-config": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz", - "integrity": "sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==", - "dev": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^26.6.3", - "@jest/types": "^26.6.2", - "babel-jest": "^26.6.3", - "chalk": "^4.0.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.1", - "graceful-fs": "^4.2.4", - "jest-environment-jsdom": "^26.6.2", - "jest-environment-node": "^26.6.2", - "jest-get-type": "^26.3.0", - "jest-jasmine2": "^26.6.3", - "jest-regex-util": "^26.0.0", - "jest-resolve": "^26.6.2", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "micromatch": "^4.0.2", - "pretty-format": "^26.6.2" - } - }, - "jest-docblock": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz", - "integrity": "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==", - "dev": true, - "requires": { - "detect-newline": "^3.0.0" - } - }, - "jest-environment-jsdom": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz", - "integrity": "sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==", - "dev": true, - "requires": { - "@jest/environment": "^26.6.2", - "@jest/fake-timers": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "jest-mock": "^26.6.2", - "jest-util": "^26.6.2", - "jsdom": "^16.4.0" - } - }, - "jest-jasmine2": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz", - "integrity": "sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==", - "dev": true, - "requires": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^26.6.2", - "@jest/source-map": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^26.6.2", - "is-generator-fn": "^2.0.0", - "jest-each": "^26.6.2", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-runtime": "^26.6.3", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "pretty-format": "^26.6.2", - "throat": "^5.0.0" - } - }, - "jest-leak-detector": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz", - "integrity": "sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==", - "dev": true, - "requires": { - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" - } - }, - "jest-message-util": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", - "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@jest/types": "^26.6.2", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "micromatch": "^4.0.2", - "pretty-format": "^26.6.2", - "slash": "^3.0.0", - "stack-utils": "^2.0.2" - } - }, - "jest-resolve": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", - "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", - "dev": true, - "requires": { - "@jest/types": "^26.6.2", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^26.6.2", - "read-pkg-up": "^7.0.1", - "resolve": "^1.18.1", - "slash": "^3.0.0" - }, - "dependencies": { - "read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, - "requires": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - } - }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - } - } - }, - "jest-resolve-dependencies": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz", - "integrity": "sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==", - "dev": true, - "requires": { - "@jest/types": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-snapshot": "^26.6.2" - } - }, - "jest-runner": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz", - "integrity": "sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==", - "dev": true, - "requires": { - "@jest/console": "^26.6.2", - "@jest/environment": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.7.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-config": "^26.6.3", - "jest-docblock": "^26.0.0", - "jest-haste-map": "^26.6.2", - "jest-leak-detector": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-resolve": "^26.6.2", - "jest-runtime": "^26.6.3", - "jest-util": "^26.6.2", - "jest-worker": "^26.6.2", - "source-map-support": "^0.5.6", - "throat": "^5.0.0" - } - }, - "jest-runtime": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz", - "integrity": "sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==", - "dev": true, - "requires": { - "@jest/console": "^26.6.2", - "@jest/environment": "^26.6.2", - "@jest/fake-timers": "^26.6.2", - "@jest/globals": "^26.6.2", - "@jest/source-map": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/yargs": "^15.0.0", - "chalk": "^4.0.0", - "cjs-module-lexer": "^0.6.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.4", - "jest-config": "^26.6.3", - "jest-haste-map": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-mock": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-resolve": "^26.6.2", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "slash": "^3.0.0", - "strip-bom": "^4.0.0", - "yargs": "^15.4.1" - } - }, - "jest-snapshot": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz", - "integrity": "sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==", - "dev": true, - "requires": { - "@babel/types": "^7.0.0", - "@jest/types": "^26.6.2", - "@types/babel__traverse": "^7.0.4", - "@types/prettier": "^2.0.0", - "chalk": "^4.0.0", - "expect": "^26.6.2", - "graceful-fs": "^4.2.4", - "jest-diff": "^26.6.2", - "jest-get-type": "^26.3.0", - "jest-haste-map": "^26.6.2", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-resolve": "^26.6.2", - "natural-compare": "^1.4.0", - "pretty-format": "^26.6.2", - "semver": "^7.3.2" - }, - "dependencies": { - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "jest-validate": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", - "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", - "dev": true, - "requires": { - "@jest/types": "^26.6.2", - "camelcase": "^6.0.0", - "chalk": "^4.0.0", - "jest-get-type": "^26.3.0", - "leven": "^3.1.0", - "pretty-format": "^26.6.2" - } - }, - "jest-watcher": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz", - "integrity": "sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==", - "dev": true, - "requires": { - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "jest-util": "^26.6.2", - "string-length": "^4.0.1" - } - }, - "jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "postcss-calc": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.0.0.tgz", - "integrity": "sha512-5NglwDrcbiy8XXfPM11F3HeC6hoT9W7GUH/Zi5U/p7u3Irv4rHhdDcIZwG0llHXV4ftsBjpfWMXAnXNl4lnt8g==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.2" - } - }, - "postcss-colormin": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.0.tgz", - "integrity": "sha512-+HC6GfWU3upe5/mqmxuqYZ9B2Wl4lcoUUNkoaX59nEWV4EtADCMiBqui111Bu8R8IvaZTmqmxrqOAqjbHIwXPw==", - "dev": true, - "requires": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0", - "colord": "^2.0.1", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-convert-values": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.1.tgz", - "integrity": "sha512-C3zR1Do2BkKkCgC0g3sF8TS0koF2G+mN8xxayZx3f10cIRmTaAnpgpRQZjNekTZxM2ciSPoh2IWJm0VZx8NoQg==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-discard-comments": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz", - "integrity": "sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg==", - "dev": true, - "requires": {} - }, - "postcss-discard-duplicates": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz", - "integrity": "sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA==", - "dev": true, - "requires": {} - }, - "postcss-discard-empty": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz", - "integrity": "sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw==", - "dev": true, - "requires": {} - }, - "postcss-discard-overridden": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz", - "integrity": "sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q==", - "dev": true, - "requires": {} - }, - "postcss-loader": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.0.tgz", - "integrity": "sha512-H9hv447QjQJVDbHj3OUdciyAXY3v5+UDduzEytAlZCVHCpNAAg/mCSwhYYqZr9BiGYhmYspU8QXxZwiHTLn3yA==", - "dev": true, - "requires": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.4", - "semver": "^7.3.5" - }, - "dependencies": { - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "postcss-merge-longhand": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.0.2.tgz", - "integrity": "sha512-BMlg9AXSI5G9TBT0Lo/H3PfUy63P84rVz3BjCFE9e9Y9RXQZD3+h3YO1kgTNsNJy7bBc1YQp8DmSnwLIW5VPcw==", - "dev": true, - "requires": { - "css-color-names": "^1.0.1", - "postcss-value-parser": "^4.1.0", - "stylehacks": "^5.0.1" - } - }, - "postcss-merge-rules": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.0.2.tgz", - "integrity": "sha512-5K+Md7S3GwBewfB4rjDeol6V/RZ8S+v4B66Zk2gChRqLTCC8yjnHQ601omj9TKftS19OPGqZ/XzoqpzNQQLwbg==", - "dev": true, - "requires": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0", - "cssnano-utils": "^2.0.1", - "postcss-selector-parser": "^6.0.5", - "vendors": "^1.0.3" - } - }, - "postcss-minify-font-values": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.0.1.tgz", - "integrity": "sha512-7JS4qIsnqaxk+FXY1E8dHBDmraYFWmuL6cgt0T1SWGRO5bzJf8sUoelwa4P88LEWJZweHevAiDKxHlofuvtIoA==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-minify-gradients": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.2.tgz", - "integrity": "sha512-7Do9JP+wqSD6Prittitt2zDLrfzP9pqKs2EcLX7HJYxsxCOwrrcLt4x/ctQTsiOw+/8HYotAoqNkrzItL19SdQ==", - "dev": true, - "requires": { - "colord": "^2.6", - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-minify-params": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.0.1.tgz", - "integrity": "sha512-4RUC4k2A/Q9mGco1Z8ODc7h+A0z7L7X2ypO1B6V8057eVK6mZ6xwz6QN64nHuHLbqbclkX1wyzRnIrdZehTEHw==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.2", - "browserslist": "^4.16.0", - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0", - "uniqs": "^2.0.0" - } - }, - "postcss-minify-selectors": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.1.0.tgz", - "integrity": "sha512-NzGBXDa7aPsAcijXZeagnJBKBPMYLaJJzB8CQh6ncvyl2sIndLVWfbcDi0SBjRWk5VqEjXvf8tYwzoKf4Z07og==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.2", - "postcss-selector-parser": "^6.0.5" - } - }, - "postcss-normalize-charset": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz", - "integrity": "sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg==", - "dev": true, - "requires": {} - }, - "postcss-normalize-display-values": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.1.tgz", - "integrity": "sha512-uupdvWk88kLDXi5HEyI9IaAJTE3/Djbcrqq8YgjvAVuzgVuqIk3SuJWUisT2gaJbZm1H9g5k2w1xXilM3x8DjQ==", - "dev": true, - "requires": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-normalize-positions": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.0.1.tgz", - "integrity": "sha512-rvzWAJai5xej9yWqlCb1OWLd9JjW2Ex2BCPzUJrbaXmtKtgfL8dBMOOMTX6TnvQMtjk3ei1Lswcs78qKO1Skrg==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-normalize-repeat-style": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.1.tgz", - "integrity": "sha512-syZ2itq0HTQjj4QtXZOeefomckiV5TaUO6ReIEabCh3wgDs4Mr01pkif0MeVwKyU/LHEkPJnpwFKRxqWA/7O3w==", - "dev": true, - "requires": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-normalize-string": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.0.1.tgz", - "integrity": "sha512-Ic8GaQ3jPMVl1OEn2U//2pm93AXUcF3wz+OriskdZ1AOuYV25OdgS7w9Xu2LO5cGyhHCgn8dMXh9bO7vi3i9pA==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-normalize-timing-functions": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.1.tgz", - "integrity": "sha512-cPcBdVN5OsWCNEo5hiXfLUnXfTGtSFiBU9SK8k7ii8UD7OLuznzgNRYkLZow11BkQiiqMcgPyh4ZqXEEUrtQ1Q==", - "dev": true, - "requires": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-normalize-unicode": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.1.tgz", - "integrity": "sha512-kAtYD6V3pK0beqrU90gpCQB7g6AOfP/2KIPCVBKJM2EheVsBQmx/Iof+9zR9NFKLAx4Pr9mDhogB27pmn354nA==", - "dev": true, - "requires": { - "browserslist": "^4.16.0", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-normalize-url": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.2.tgz", - "integrity": "sha512-k4jLTPUxREQ5bpajFQZpx8bCF2UrlqOTzP9kEqcEnOfwsRshWs2+oAFIHfDQB8GO2PaUaSE0NlTAYtbluZTlHQ==", - "dev": true, - "requires": { - "is-absolute-url": "^3.0.3", - "normalize-url": "^6.0.1", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-normalize-whitespace": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.1.tgz", - "integrity": "sha512-iPklmI5SBnRvwceb/XH568yyzK0qRVuAG+a1HFUsFRf11lEJTiQQa03a4RSCQvLKdcpX7XsI1Gen9LuLoqwiqA==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-ordered-values": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.0.2.tgz", - "integrity": "sha512-8AFYDSOYWebJYLyJi3fyjl6CqMEG/UVworjiyK1r573I56kb3e879sCJLGvR3merj+fAdPpVplXKQZv+ey6CgQ==", - "dev": true, - "requires": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-reduce-initial": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.0.1.tgz", - "integrity": "sha512-zlCZPKLLTMAqA3ZWH57HlbCjkD55LX9dsRyxlls+wfuRfqCi5mSlZVan0heX5cHr154Dq9AfbH70LyhrSAezJw==", - "dev": true, - "requires": { - "browserslist": "^4.16.0", - "caniuse-api": "^3.0.0" - } - }, - "postcss-reduce-transforms": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.1.tgz", - "integrity": "sha512-a//FjoPeFkRuAguPscTVmRQUODP+f3ke2HqFNgGPwdYnpeC29RZdCBvGRGTsKpMURb/I3p6jdKoBQ2zI+9Q7kA==", - "dev": true, - "requires": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-svgo": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.0.2.tgz", - "integrity": "sha512-YzQuFLZu3U3aheizD+B1joQ94vzPfE6BNUcSYuceNxlVnKKsOtdo6hL9/zyC168Q8EwfLSgaDSalsUGa9f2C0A==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.1.0", - "svgo": "^2.3.0" - } - }, - "postcss-unique-selectors": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.0.1.tgz", - "integrity": "sha512-gwi1NhHV4FMmPn+qwBNuot1sG1t2OmacLQ/AX29lzyggnjd+MnVD5uqQmpXO3J17KGL2WAxQruj1qTd3H0gG/w==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.2", - "postcss-selector-parser": "^6.0.5", - "uniqs": "^2.0.0" - } - }, - "prettier": { - "version": "npm:wp-prettier@2.2.1-beta-1", - "resolved": "https://registry.npmjs.org/wp-prettier/-/wp-prettier-2.2.1-beta-1.tgz", - "integrity": "sha512-+JHkqs9LC/JPp51yy1hzs3lQ7qeuWCwOcSzpQNeeY/G7oSpnF61vxt7hRh87zNRTr6ob2ndy0W8rVzhgrcA+Gw==", - "dev": true - }, - "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "dependencies": { - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true - } - } - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "stylehacks": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.0.1.tgz", - "integrity": "sha512-Es0rVnHIqbWzveU1b24kbw92HsebBepxfcqe5iix7t9j0PQqhs0IxXVXv0pY2Bxa08CgMkzD6OWql7kbGOuEdA==", - "dev": true, - "requires": { - "browserslist": "^4.16.0", - "postcss-selector-parser": "^6.0.4" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "throat": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", - "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", - "dev": true - }, - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true - }, - "v8-to-istanbul": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz", - "integrity": "sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" - }, - "dependencies": { - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - } - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "requires": { - "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" - } - } - } - }, - "@wordpress/server-side-render": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@wordpress/server-side-render/-/server-side-render-3.0.4.tgz", - "integrity": "sha512-/LxybA6D/deSvhDXqD33NIHFL2o7QNQzmwXKiHn5DiTnuPGVXyyYoQ1LYyoH9pqq1MOjydtx3W4vA5y2REVYgw==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/api-fetch": "^5.2.4", - "@wordpress/blocks": "^11.1.2", - "@wordpress/components": "^19.0.0", - "@wordpress/compose": "^5.0.4", - "@wordpress/data": "^6.1.2", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/element": "^4.0.3", - "@wordpress/i18n": "^4.2.3", - "@wordpress/url": "^3.2.3", - "lodash": "^4.17.21" - }, - "dependencies": { - "@wordpress/api-fetch": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-5.2.4.tgz", - "integrity": "sha512-8vMm08L3MMUynhD6sxe9VhRcfi3qGE3m9j7LpC9yAIxt70DaMRxHWEmGIbgO2F3INkqACdLWnDQmsHDKOSWQsQ==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/i18n": "^4.2.3", - "@wordpress/url": "^3.2.3" - } - }, - "@wordpress/blocks": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/@wordpress/blocks/-/blocks-11.1.2.tgz", - "integrity": "sha512-xVvC/RXj9GXNRkQcGnmjWeS54intybON4Ol2vCVfreJtA5Cra5yRapRJwz3at1sgDD4q06k1sj98SemMEanazw==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/autop": "^3.2.2", - "@wordpress/blob": "^3.2.1", - "@wordpress/block-serialization-default-parser": "^4.2.2", - "@wordpress/compose": "^5.0.4", - "@wordpress/data": "^6.1.2", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.5", - "@wordpress/element": "^4.0.3", - "@wordpress/hooks": "^3.2.1", - "@wordpress/html-entities": "^3.2.2", - "@wordpress/i18n": "^4.2.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/shortcode": "^3.2.2", - "colord": "^2.7.0", - "hpq": "^1.3.0", - "lodash": "^4.17.21", - "rememo": "^3.0.0", - "showdown": "^1.9.1", - "simple-html-tokenizer": "^0.5.7", - "uuid": "^8.3.0" - } - }, - "@wordpress/components": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/@wordpress/components/-/components-19.0.0.tgz", - "integrity": "sha512-foFC+jJ3nu6PZ2pnjdszi7R17CQRquXkCPaydlOCsuDbsKm0dowR264jAdK0HJWepttj+kh3amWEhzajX6AYtg==", - "requires": { - "@babel/runtime": "^7.13.10", - "@emotion/cache": "^11.4.0", - "@emotion/css": "^11.1.3", - "@emotion/react": "^11.4.1", - "@emotion/styled": "^11.3.0", - "@emotion/utils": "1.0.0", - "@wordpress/a11y": "^3.2.3", - "@wordpress/compose": "^5.0.4", - "@wordpress/date": "^4.2.2", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.5", - "@wordpress/element": "^4.0.3", - "@wordpress/hooks": "^3.2.1", - "@wordpress/i18n": "^4.2.3", - "@wordpress/icons": "^6.0.1", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/primitives": "^3.0.3", - "@wordpress/rich-text": "^5.0.4", - "@wordpress/warning": "^2.2.2", - "classnames": "^2.3.1", - "colord": "^2.7.0", - "dom-scroll-into-view": "^1.2.1", - "downshift": "^6.0.15", - "framer-motion": "^4.1.17", - "gradient-parser": "^0.1.5", - "highlight-words-core": "^1.2.2", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "moment": "^2.22.1", - "re-resizable": "^6.4.0", - "react-colorful": "^5.3.1", - "react-dates": "^17.1.1", - "react-resize-aware": "^3.1.0", - "react-use-gesture": "^9.0.0", - "reakit": "^1.3.8", - "rememo": "^3.0.0", - "uuid": "^8.3.0" - }, - "dependencies": { - "airbnb-prop-types": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz", - "integrity": "sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg==", - "requires": { - "array.prototype.find": "^2.1.1", - "function.prototype.name": "^1.1.2", - "is-regex": "^1.1.0", - "object-is": "^1.1.2", - "object.assign": "^4.1.0", - "object.entries": "^1.1.2", - "prop-types": "^15.7.2", - "prop-types-exact": "^1.2.0", - "react-is": "^16.13.1" - } - }, - "react": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", - "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", - "peer": true, - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2" - } - }, - "react-dates": { - "version": "17.2.0", - "resolved": "https://registry.npmjs.org/react-dates/-/react-dates-17.2.0.tgz", - "integrity": "sha512-RDlerU8DdRRrlYS0MQ7Z9igPWABGLDwz6+ykBNff67RM3Sset2TDqeuOr+R5o00Ggn5U47GeLsGcSDxlZd9cHw==", - "requires": { - "airbnb-prop-types": "^2.10.0", - "consolidated-events": "^1.1.1 || ^2.0.0", - "is-touch-device": "^1.0.1", - "lodash": "^4.1.1", - "object.assign": "^4.1.0", - "object.values": "^1.0.4", - "prop-types": "^15.6.1", - "react-addons-shallow-compare": "^15.6.2", - "react-moment-proptypes": "^1.6.0", - "react-outside-click-handler": "^1.2.0", - "react-portal": "^4.1.5", - "react-with-styles": "^3.2.0", - "react-with-styles-interface-css": "^4.0.2" - } - }, - "react-dom": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", - "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", - "peer": true, - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.19.1" - } - }, - "react-outside-click-handler": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/react-outside-click-handler/-/react-outside-click-handler-1.3.0.tgz", - "integrity": "sha512-Te/7zFU0oHpAnctl//pP3hEAeobfeHMyygHB8MnjP6sX5OR8KHT1G3jmLsV3U9RnIYo+Yn+peJYWu+D5tUS8qQ==", - "requires": { - "airbnb-prop-types": "^2.15.0", - "consolidated-events": "^1.1.1 || ^2.0.0", - "document.contains": "^1.0.1", - "object.values": "^1.1.0", - "prop-types": "^15.7.2" - } - }, - "react-portal": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/react-portal/-/react-portal-4.2.1.tgz", - "integrity": "sha512-fE9kOBagwmTXZ3YGRYb4gcMy+kSA+yLO0xnPankjRlfBv4uCpFXqKPfkpsGQQR15wkZ9EssnvTOl1yMzbkxhPQ==", - "requires": { - "prop-types": "^15.5.8" - } - }, - "react-with-direction": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/react-with-direction/-/react-with-direction-1.4.0.tgz", - "integrity": "sha512-ybHNPiAmaJpoWwugwqry9Hd1Irl2hnNXlo/2SXQBwbLn/jGMauMS2y9jw+ydyX5V9ICryCqObNSthNt5R94xpg==", - "requires": { - "airbnb-prop-types": "^2.16.0", - "brcast": "^2.0.2", - "deepmerge": "^1.5.2", - "direction": "^1.0.4", - "hoist-non-react-statics": "^3.3.2", - "object.assign": "^4.1.2", - "object.values": "^1.1.5", - "prop-types": "^15.7.2" - } - }, - "react-with-styles": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/react-with-styles/-/react-with-styles-3.2.3.tgz", - "integrity": "sha512-MTI1UOvMHABRLj5M4WpODfwnveHaip6X7QUMI2x6zovinJiBXxzhA9AJP7MZNaKqg1JRFtHPXZdroUC8KcXwlQ==", - "requires": { - "hoist-non-react-statics": "^3.2.1", - "object.assign": "^4.1.0", - "prop-types": "^15.6.2", - "react-with-direction": "^1.3.0" - } - }, - "react-with-styles-interface-css": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/react-with-styles-interface-css/-/react-with-styles-interface-css-4.0.3.tgz", - "integrity": "sha512-wE43PIyjal2dexxyyx4Lhbcb+E42amoYPnkunRZkb9WTA+Z+9LagbyxwsI352NqMdFmghR0opg29dzDO4/YXbw==", - "requires": { - "array.prototype.flat": "^1.2.1", - "global-cache": "^1.2.1" - } - } - } - }, - "@wordpress/compose": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.0.4.tgz", - "integrity": "sha512-gRpQgsxF1AnmrJnkmJOixsTtSmimFzasiXZlm0BwhsdeJEEqVO3Mt7ua59bLPHjnUmiyDfMWY9Ongn/2cSCRKQ==", - "requires": { - "@babel/runtime": "^7.13.10", - "@types/lodash": "^4.14.172", - "@types/mousetrap": "^1.6.8", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.5", - "@wordpress/element": "^4.0.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/priority-queue": "^2.2.2", - "clipboard": "^2.0.8", - "lodash": "^4.17.21", - "mousetrap": "^1.6.5", - "react-resize-aware": "^3.1.0", - "use-memo-one": "^1.1.1" - } - }, - "@wordpress/data": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.1.2.tgz", - "integrity": "sha512-Ro4CGmGBgk+7gDOkoB/u/HFPjmObNTZvN1q1vb75gfHOjVmXFt6AZSialELc+AuYODZEedrvHRk7qMBPxsgTVQ==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/compose": "^5.0.4", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/element": "^4.0.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/priority-queue": "^2.2.2", - "@wordpress/redux-routine": "^4.2.1", - "equivalent-key-map": "^0.2.2", - "is-promise": "^4.0.0", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "turbo-combine-reducers": "^1.0.2", - "use-memo-one": "^1.1.1" - } - }, - "@wordpress/element": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.3.tgz", - "integrity": "sha512-uFL8Xx0Uq/C+nCL5aM4Fb6YVub//1wuHyQK9VDtKwYg9UBELrexSCHo1XaesYRiGUqVW0o837qC7RCP2NLUBJw==", - "requires": { - "@babel/runtime": "^7.13.10", - "@types/react": "^16.9.0", - "@types/react-dom": "^16.9.0", - "@wordpress/escape-html": "^2.2.2", - "lodash": "^4.17.21", - "react": "^17.0.1", - "react-dom": "^17.0.1" - } - }, - "@wordpress/icons": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@wordpress/icons/-/icons-6.0.1.tgz", - "integrity": "sha512-YAtnWquaWWM49hpoRJwaZRBTnnkwqOY0TuK8a6m0gXE2Xm3uoO/J4c6tLqKiFv3FG9Hmc/CB1WCmx+uM1TX0vw==", - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/element": "^4.0.3", - "@wordpress/primitives": "^3.0.3" - } - }, - "deepmerge": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", - "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==" - }, - "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "scheduler": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", - "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", - "peer": true, - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - } - } - }, - "@wordpress/shortcode": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@wordpress/shortcode/-/shortcode-3.2.2.tgz", - "integrity": "sha512-Im3z6C/+0IYepBg7w3m+2wyAEQfNLoWN3yQ1czNPsGHMAbELvAZjhd9S1hkJXgdyS9wQnamIQhu9wGB20qeh9A==", - "requires": { - "@babel/runtime": "^7.13.10", - "lodash": "^4.17.21", - "memize": "^1.1.0" - } - }, - "@wordpress/stylelint-config": { - "version": "19.1.0", - "resolved": "https://registry.npmjs.org/@wordpress/stylelint-config/-/stylelint-config-19.1.0.tgz", - "integrity": "sha512-K/wB9rhB+pH5WvDh3fV3DN5C3Bud+jPGXmnPY8fOXKMYI3twCFozK/j6sVuaJHqGp/0kKEF0hkkGh+HhD30KGQ==", - "dev": true, - "requires": { - "stylelint-config-recommended": "^3.0.0", - "stylelint-config-recommended-scss": "^4.2.0", - "stylelint-scss": "^3.17.2" - } - }, - "@wordpress/token-list": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@wordpress/token-list/-/token-list-2.2.1.tgz", - "integrity": "sha512-SBFATG3F6WcnRzcuu396KhesXI36qkzq21JV653+4XOwLsSVSEVbec2cFHw5WCvrj3Oe7Sv7hRK9Ia/wBW7bzA==", - "requires": { - "@babel/runtime": "^7.13.10", - "lodash": "^4.17.21" - } - }, - "@wordpress/url": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@wordpress/url/-/url-3.2.3.tgz", - "integrity": "sha512-sepFDMcshaLBEPHDuHDAsXWsrRInyOa3an3Y8OfqLFwAoMZGAKJTClx1k4DnJwRRGhjv03veTl0IqxTdMH/CiA==", - "requires": { - "@babel/runtime": "^7.13.10", - "lodash": "^4.17.21" - } - }, - "@wordpress/viewport": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@wordpress/viewport/-/viewport-4.0.4.tgz", - "integrity": "sha512-vLvMpvY0PTOBToP4DqgsnmhFCbikqEhpRMPE0WhKjt8BThGqFyzXspWQNd5+Unau3mqFFMRn3apVe7yRRp8Ibg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/compose": "^5.0.4", - "@wordpress/data": "^6.1.2", - "lodash": "^4.17.21" - }, - "dependencies": { - "@wordpress/compose": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-5.0.4.tgz", - "integrity": "sha512-gRpQgsxF1AnmrJnkmJOixsTtSmimFzasiXZlm0BwhsdeJEEqVO3Mt7ua59bLPHjnUmiyDfMWY9Ongn/2cSCRKQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.13.10", - "@types/lodash": "^4.14.172", - "@types/mousetrap": "^1.6.8", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/dom": "^3.2.5", - "@wordpress/element": "^4.0.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/keycodes": "^3.2.3", - "@wordpress/priority-queue": "^2.2.2", - "clipboard": "^2.0.8", - "lodash": "^4.17.21", - "mousetrap": "^1.6.5", - "react-resize-aware": "^3.1.0", - "use-memo-one": "^1.1.1" - } - }, - "@wordpress/data": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-6.1.2.tgz", - "integrity": "sha512-Ro4CGmGBgk+7gDOkoB/u/HFPjmObNTZvN1q1vb75gfHOjVmXFt6AZSialELc+AuYODZEedrvHRk7qMBPxsgTVQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.13.10", - "@wordpress/compose": "^5.0.4", - "@wordpress/deprecated": "^3.2.2", - "@wordpress/element": "^4.0.3", - "@wordpress/is-shallow-equal": "^4.2.0", - "@wordpress/priority-queue": "^2.2.2", - "@wordpress/redux-routine": "^4.2.1", - "equivalent-key-map": "^0.2.2", - "is-promise": "^4.0.0", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "turbo-combine-reducers": "^1.0.2", - "use-memo-one": "^1.1.1" - } - }, - "@wordpress/element": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.0.3.tgz", - "integrity": "sha512-uFL8Xx0Uq/C+nCL5aM4Fb6YVub//1wuHyQK9VDtKwYg9UBELrexSCHo1XaesYRiGUqVW0o837qC7RCP2NLUBJw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.13.10", - "@types/react": "^16.9.0", - "@types/react-dom": "^16.9.0", - "@wordpress/escape-html": "^2.2.2", - "lodash": "^4.17.21", - "react": "^17.0.1", - "react-dom": "^17.0.1" - } - } - } - }, - "@wordpress/warning": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-2.2.2.tgz", - "integrity": "sha512-iG1Hq56RK3N6AJqAD1sRLWRIJatfYn+NrPyrfqRNZNYXHM8Vj/s7ABNMbIU0Y99vXkBE83rvCdbMkugNoI2jXA==" - }, - "@wordpress/wordcount": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@wordpress/wordcount/-/wordcount-3.2.2.tgz", - "integrity": "sha512-lb0gpBmdbGhaVET8eUqa/PwVOlFcJc0gtsiOzUGq2GlDSqoC/ouE5dj1R9Dw68ybiD1pmEPDRArU4fF0JSNsfA==", - "requires": { - "@babel/runtime": "^7.13.10", - "lodash": "^4.17.21" - } - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "abab": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", - "dev": true - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - }, - "acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "dev": true, - "requires": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" - } - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} - }, - "acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "requires": { - "debug": "4" - } - }, - "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true, - "requires": {} - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} - }, - "alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", - "dev": true - }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - }, - "dependencies": { - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - } - } - }, - "aria-query": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.10.2", - "@babel/runtime-corejs3": "^7.10.2" - } - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", - "dev": true - }, - "array-includes": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", - "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", - "is-string": "^1.0.7" - } - }, - "array-slice": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", - "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", - "dev": true - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "array.prototype.filter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array.prototype.filter/-/array.prototype.filter-1.0.1.tgz", - "integrity": "sha512-Dk3Ty7N42Odk7PjU/Ci3zT4pLj20YvuVnneG/58ICM6bt4Ij5kZaJTVQ9TSaWaIECX2sFyz4KItkVZqHNnciqw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.7" - } - }, - "array.prototype.find": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.1.2.tgz", - "integrity": "sha512-00S1O4ewO95OmmJW7EesWfQlrCrLEL8kZ40w3+GkLX2yTt0m2ggcePPa2uHPJ9KUmJvwRq+lCV9bD8Yim23x/Q==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0" - } - }, - "array.prototype.flat": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz", - "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0" - } - }, - "array.prototype.flatmap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz", - "integrity": "sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0" - } - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, - "ast-types-flow": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", - "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", - "dev": true - }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true - }, - "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, - "autoprefixer": { - "version": "9.8.8", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", - "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", - "dev": true, - "requires": { - "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" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "autosize": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/autosize/-/autosize-4.0.4.tgz", - "integrity": "sha512-5yxLQ22O0fCRGoxGfeLSNt3J8LB1v+umtpMnPW6XjkTWXKoN0AmXAIhelJcDtFT/Y/wYWmfE+oqU10Q0b8FhaQ==" - }, - "axe-core": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.3.4.tgz", - "integrity": "sha512-4Hk6iSA/H90rtiPoCpSkeJxNWCPBf7szwVvaUqrPdxo0j2Y04suHK9jPKXaE3WI7OET6wBSwsWw7FDc1DBq7iQ==", - "dev": true - }, - "axios": { - "version": "0.21.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", - "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", - "dev": true, - "requires": { - "follow-redirects": "^1.10.0" - } - }, - "axobject-query": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", - "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", - "dev": true - }, - "babel-eslint": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", - "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/traverse": "^7.7.0", - "@babel/types": "^7.7.0", - "eslint-visitor-keys": "^1.0.0", - "resolve": "^1.12.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } - } - }, - "babel-jest": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-26.6.3.tgz", - "integrity": "sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==", - "dev": true, - "requires": { - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/babel__core": "^7.1.7", - "babel-plugin-istanbul": "^6.0.0", - "babel-preset-jest": "^26.6.2", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "slash": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "babel-loader": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.3.tgz", - "integrity": "sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw==", - "dev": true, - "requires": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^1.4.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - }, - "dependencies": { - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - } - } - } - }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dev": true, - "requires": { - "object.assign": "^4.1.0" - } - }, - "babel-plugin-inline-react-svg": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/babel-plugin-inline-react-svg/-/babel-plugin-inline-react-svg-2.0.1.tgz", - "integrity": "sha512-aD4gy2G3gNVDaw97LtoixzWbaOcSEnOb4KJPe8kZedSeqxY3v71KsBs8DGmButGZtEloCRhRRuU2TpW1hIPXig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/parser": "^7.0.0", - "lodash.isplainobject": "^4.0.6", - "resolve": "^1.20.0", - "svgo": "^2.0.3" - } - }, - "babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - } - }, - "babel-plugin-jest-hoist": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz", - "integrity": "sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==", - "dev": true, - "requires": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", - "@types/babel__traverse": "^7.0.6" - } - }, - "babel-plugin-macros": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", - "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", - "requires": { - "@babel/runtime": "^7.7.2", - "cosmiconfig": "^6.0.0", - "resolve": "^1.12.0" - }, - "dependencies": { - "cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" - } - } - } - }, - "babel-plugin-polyfill-corejs2": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz", - "integrity": "sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.2.2", - "semver": "^6.1.1" - } - }, - "babel-plugin-polyfill-corejs3": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.5.tgz", - "integrity": "sha512-ninF5MQNwAX9Z7c9ED+H2pGt1mXdP4TqzlHKyPIYmJIYz0N+++uwdM7RnJukklhzJ54Q84vA4ZJkgs7lu5vqcw==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.2.2", - "core-js-compat": "^3.16.2" - } - }, - "babel-plugin-polyfill-regenerator": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz", - "integrity": "sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.2.2" - } - }, - "babel-plugin-transform-react-remove-prop-types": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", - "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==", - "dev": true - }, - "babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "requires": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@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-top-level-await": "^7.8.3" - } - }, - "babel-preset-jest": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz", - "integrity": "sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==", - "dev": true, - "requires": { - "babel-plugin-jest-hoist": "^26.6.2", - "babel-preset-current-node-syntax": "^1.0.0" - } - }, - "babel-runtime": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.25.0.tgz", - "integrity": "sha1-M7mOql1IK7AajRqmtDetKwGuxBw=", - "dev": true, - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.10.0" - }, - "dependencies": { - "core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "dev": true - }, - "regenerator-runtime": { - "version": "0.10.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", - "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", - "dev": true - } - } - }, - "bail": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", - "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", - "dev": true - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "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" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - } - } - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, - "before-after-hook": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz", - "integrity": "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==", - "dev": true - }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "body": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/body/-/body-5.1.0.tgz", - "integrity": "sha1-5LoM5BCkaTYyM2dgnstOZVMSUGk=", - "dev": true, - "requires": { - "continuable-cache": "^0.3.1", - "error": "^7.0.0", - "raw-body": "~1.1.0", - "safe-json-parse": "~1.0.1" - } - }, - "body-scroll-lock": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/body-scroll-lock/-/body-scroll-lock-3.1.5.tgz", - "integrity": "sha512-Yi1Xaml0EvNA0OYWxXiYNqY24AfWkbA6w5vxE7GWxtKfzIbZM+Qw+aSmkgsbWzbHiy/RCSkUZBplVxTA+E4jJg==" - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "brcast": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brcast/-/brcast-2.0.2.tgz", - "integrity": "sha512-Tfn5JSE7hrUlFcOoaLzVvkbgIemIorMIyoMr3TgvszWW7jFt2C9PdeMLtysYD9RU0MmU17b69+XJG1eRY2OBRg==" - }, - "browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, - "browserslist": { - "version": "4.17.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.5.tgz", - "integrity": "sha512-I3ekeB92mmpctWBoLXe0d5wPS2cBuRvvW0JyyJHMrk9/HmP2ZjrTboNAZ8iuGqaEIlKguljbQY32OkOJIRrgoA==", - "requires": { - "caniuse-lite": "^1.0.30001271", - "electron-to-chromium": "^1.3.878", - "escalade": "^3.1.1", - "node-releases": "^2.0.1", - "picocolors": "^1.0.0" - } - }, - "bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "requires": { - "node-int64": "^0.4.0" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", - "dev": true - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "bytes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz", - "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=", - "dev": true - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "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" - } - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" - }, - "camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", - "dev": true - }, - "camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", - "dev": true, - "requires": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - } - } - }, - "caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "caniuse-lite": { - "version": "1.0.30001272", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001272.tgz", - "integrity": "sha512-DV1j9Oot5dydyH1v28g25KoVm7l8MTxazwuiH3utWiAS6iL/9Nh//TGwqFEeqqN8nnWYQ8HHhUq+o4QPt9kvYw==" - }, - "capture-exit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", - "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", - "dev": true, - "requires": { - "rsvp": "^4.8.4" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" - } - } - }, - "char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true - }, - "character-entities": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", - "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", - "dev": true - }, - "character-entities-legacy": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", - "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", - "dev": true - }, - "character-reference-invalid": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", - "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", - "dev": true - }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, - "check-node-version": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/check-node-version/-/check-node-version-4.1.0.tgz", - "integrity": "sha512-TSXGsyfW5/xY2QseuJn8/hleO2AU7HxVCdkc900jp1vcfzF840GkjvRT7CHl8sRtWn23n3X3k0cwH9RXeRwhfw==", - "dev": true, - "requires": { - "chalk": "^3.0.0", - "map-values": "^1.0.1", - "minimist": "^1.2.0", - "object-filter": "^1.0.2", - "run-parallel": "^1.1.4", - "semver": "^6.3.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "cheerio": { - "version": "1.0.0-rc.10", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz", - "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==", - "dev": true, - "requires": { - "cheerio-select": "^1.5.0", - "dom-serializer": "^1.3.2", - "domhandler": "^4.2.0", - "htmlparser2": "^6.1.0", - "parse5": "^6.0.1", - "parse5-htmlparser2-tree-adapter": "^6.0.1", - "tslib": "^2.2.0" - } - }, - "cheerio-select": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.5.0.tgz", - "integrity": "sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg==", - "dev": true, - "requires": { - "css-select": "^4.1.3", - "css-what": "^5.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0", - "domutils": "^2.7.0" - } - }, - "child_process": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/child_process/-/child_process-1.0.2.tgz", - "integrity": "sha1-sffn/HPSXn/R1FWtyU4UODAYK1o=", - "dev": true - }, - "chokidar": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", - "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.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" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, - "chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true - }, - "ci-info": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", - "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", - "dev": true - }, - "cjs-module-lexer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", - "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", - "dev": true, - "peer": true - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - } - } - }, - "classnames": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz", - "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==" - }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true - }, - "clean-webpack-plugin": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-3.0.0.tgz", - "integrity": "sha512-MciirUH5r+cYLGCOL5JX/ZLzOZbVr1ot3Fw+KcvbhUb6PM+yycqd9ZhIlcigQ5gl+XhppNmw3bEFuaaMNyLj3A==", - "dev": true, - "requires": { - "@types/webpack": "^4.4.31", - "del": "^4.1.1" - } - }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "cli-truncate": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", - "dev": true, - "requires": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" - }, - "dependencies": { - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - } - } - }, - "cli-width": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", - "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", - "dev": true - }, - "clipboard": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.8.tgz", - "integrity": "sha512-Y6WO0unAIQp5bLmk1zdThRhgJt/x3ks6f30s3oE3H1mgIEU33XyQjEf8gsf6DxC7NPX8Y1SsNWjUjL/ywLnnbQ==", - "requires": { - "good-listener": "^1.2.2", - "select": "^1.1.2", - "tiny-emitter": "^2.0.0" - } - }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "peer": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - }, - "dependencies": { - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "peer": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "peer": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - } - } - }, - "clone-deep": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.2.4.tgz", - "integrity": "sha1-TnPdCen7lxzDhnDF3O2cGJZIHMY=", - "dev": true, - "requires": { - "for-own": "^0.1.3", - "is-plain-object": "^2.0.1", - "kind-of": "^3.0.2", - "lazy-cache": "^1.0.3", - "shallow-clone": "^0.1.2" - }, - "dependencies": { - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - } - } - }, - "clone-regexp": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-2.2.0.tgz", - "integrity": "sha512-beMpP7BOtTipFuW8hrJvREQ2DrRu3BE7by0ZpibtfBA+qfHYvMGTc2Yb1JMYPKg/JUw0CHYvpg796aNTSW9z7Q==", - "dev": true, - "requires": { - "is-regexp": "^2.0.0" - }, - "dependencies": { - "is-regexp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-2.1.0.tgz", - "integrity": "sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA==", - "dev": true - } - } - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, - "coa": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", - "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", - "dev": true, - "requires": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" - } - }, - "collect-v8-coverage": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", - "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", - "dev": true - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "colord": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.1.tgz", - "integrity": "sha512-4LBMSt09vR0uLnPVkOUBnmxgoaeN4ewRbx801wY/bXcltXfpR/G46OdWn96XpYmCWuYvO46aBZP4NgX8HpNAcw==" - }, - "colorette": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", - "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", - "dev": true - }, - "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", - "dev": true - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", - "dev": true - }, - "comment-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.2.4.tgz", - "integrity": "sha512-pm0b+qv+CkWNriSTMsfnjChF9kH0kxz55y44Wo5le9qLxMj5xDQAaEd9ZN1ovSuk9CsrncWaFwgpOMg7ClJwkw==", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "compute-scroll-into-view": { - "version": "1.0.17", - "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.17.tgz", - "integrity": "sha512-j4dx+Fb0URmzbwwMUrhqWM2BEWHdFGx+qZ9qqASHRPqvTYdqvWnHg0H1hIbcyLnvgnoNAVMlwkepyqM3DaIFUg==" - }, - "computed-style": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/computed-style/-/computed-style-0.1.4.tgz", - "integrity": "sha1-fzRP2FhLLkJb7cpKGvwOMAuwXXQ=" - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "consola": { - "version": "2.15.3", - "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", - "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==", - "dev": true - }, - "consolidated-events": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/consolidated-events/-/consolidated-events-2.0.2.tgz", - "integrity": "sha512-2/uRVMdRypf5z/TW/ncD/66l75P5hH2vM/GR8Jf8HLc2xnfJtmina6F6du8+v4Z2vTrMo7jC+W1tmEEuuELgkQ==" - }, - "continuable-cache": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/continuable-cache/-/continuable-cache-0.3.1.tgz", - "integrity": "sha1-vXJ6f67XfnH/OYWskzUakSczrQ8=", - "dev": true - }, - "convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, - "copy-webpack-plugin": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-9.0.1.tgz", - "integrity": "sha512-14gHKKdYIxF84jCEgPgYXCPpldbwpxxLbCmA7LReY7gvbaT555DgeBWBgBZM116tv/fO6RRJrsivBqRyRlukhw==", - "dev": true, - "requires": { - "fast-glob": "^3.2.5", - "glob-parent": "^6.0.0", - "globby": "^11.0.3", - "normalize-path": "^3.0.0", - "p-limit": "^3.1.0", - "schema-utils": "^3.0.0", - "serialize-javascript": "^6.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "core-js": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.19.0.tgz", - "integrity": "sha512-L1TpFRWXZ76vH1yLM+z6KssLZrP8Z6GxxW4auoCj+XiViOzNPJCAuTIkn03BGdFe6Z5clX5t64wRIRypsZQrUg==", - "dev": true - }, - "core-js-compat": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.0.tgz", - "integrity": "sha512-R09rKZ56ccGBebjTLZHvzDxhz93YPT37gBm6qUhnwj3Kt7aCjjZWD1injyNbyeFHxNKfeZBSyds6O9n3MKq1sw==", - "dev": true, - "requires": { - "browserslist": "^4.17.5", - "semver": "7.0.0" - }, - "dependencies": { - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true - } - } - }, - "core-js-pure": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.19.0.tgz", - "integrity": "sha512-UEQk8AxyCYvNAs6baNoPqDADv7BX0AmBLGxVsrAifPPx/C8EAzV4Q+2ZUJqVzfI2TQQEZITnwUkWcHpgc/IubQ==", - "dev": true - }, - "cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", - "dev": true, - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - } - }, - "cross-env": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", - "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.1" - }, - "dependencies": { - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "css-blank-pseudo": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz", - "integrity": "sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w==", - "dev": true, - "requires": { - "postcss": "^7.0.5" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "css-color-names": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-1.0.1.tgz", - "integrity": "sha512-/loXYOch1qU1biStIFsHH8SxTmOseh1IJqFvy8IujXOm1h+QjUdDhkzOrR5HG8K8mlxREj0yfi8ewCHx0eMxzA==", - "dev": true - }, - "css-has-pseudo": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz", - "integrity": "sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ==", - "dev": true, - "requires": { - "postcss": "^7.0.6", - "postcss-selector-parser": "^5.0.0-rc.4" - }, - "dependencies": { - "cssesc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", - "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", - "dev": true - }, - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "postcss-selector-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", - "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", - "dev": true, - "requires": { - "cssesc": "^2.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "css-loader": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.5.0.tgz", - "integrity": "sha512-VmuSdQa3K+wJsl39i7X3qGBM5+ZHmtTnv65fqMGI+fzmHoYmszTVvTqC1XN8JwWDViCB1a8wgNim5SV4fb37xg==", - "dev": true, - "requires": { - "icss-utils": "^5.1.0", - "postcss": "^8.2.15", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.1.0", - "semver": "^7.3.5" - }, - "dependencies": { - "icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true, - "requires": {} - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "postcss-modules-extract-imports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", - "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "dev": true, - "requires": {} - }, - "postcss-modules-local-by-default": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", - "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", - "dev": true, - "requires": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-modules-scope": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", - "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.4" - } - }, - "postcss-modules-values": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", - "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", - "dev": true, - "requires": { - "icss-utils": "^5.0.0" - } - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "css-mediaquery": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/css-mediaquery/-/css-mediaquery-0.1.2.tgz", - "integrity": "sha1-aiw3NEkoYYYxxUvTPO3TAdoYvqA=" - }, - "css-minimizer-webpack-plugin": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.1.1.tgz", - "integrity": "sha512-KlB8l5uoNcf9F7i5kXnkxoqJGd2BXH4f0+Lj2vSWSmuvMLYO1kNsJ1KHSzeDW8e45/whgSOPcKVT/3JopkT8dg==", - "dev": true, - "requires": { - "cssnano": "^5.0.6", - "jest-worker": "^27.0.2", - "p-limit": "^3.0.2", - "postcss": "^8.3.5", - "schema-utils": "^3.1.0", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1" - }, - "dependencies": { - "css-declaration-sorter": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.1.3.tgz", - "integrity": "sha512-SvjQjNRZgh4ULK1LDJ2AduPKUKxIqmtU7ZAyi47BTV+M90Qvxr9AB6lKlLbDUfXqI9IQeYA8LbAsCZPpJEV3aA==", - "dev": true, - "requires": { - "timsort": "^0.3.0" - } - }, - "cssnano": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.0.8.tgz", - "integrity": "sha512-Lda7geZU0Yu+RZi2SGpjYuQz4HI4/1Y+BhdD0jL7NXAQ5larCzVn+PUGuZbDMYz904AXXCOgO5L1teSvgu7aFg==", - "dev": true, - "requires": { - "cssnano-preset-default": "^5.1.4", - "is-resolvable": "^1.1.0", - "lilconfig": "^2.0.3", - "yaml": "^1.10.2" - } - }, - "cssnano-preset-default": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.1.4.tgz", - "integrity": "sha512-sPpQNDQBI3R/QsYxQvfB4mXeEcWuw0wGtKtmS5eg8wudyStYMgKOQT39G07EbW1LB56AOYrinRS9f0ig4Y3MhQ==", - "dev": true, - "requires": { - "css-declaration-sorter": "^6.0.3", - "cssnano-utils": "^2.0.1", - "postcss-calc": "^8.0.0", - "postcss-colormin": "^5.2.0", - "postcss-convert-values": "^5.0.1", - "postcss-discard-comments": "^5.0.1", - "postcss-discard-duplicates": "^5.0.1", - "postcss-discard-empty": "^5.0.1", - "postcss-discard-overridden": "^5.0.1", - "postcss-merge-longhand": "^5.0.2", - "postcss-merge-rules": "^5.0.2", - "postcss-minify-font-values": "^5.0.1", - "postcss-minify-gradients": "^5.0.2", - "postcss-minify-params": "^5.0.1", - "postcss-minify-selectors": "^5.1.0", - "postcss-normalize-charset": "^5.0.1", - "postcss-normalize-display-values": "^5.0.1", - "postcss-normalize-positions": "^5.0.1", - "postcss-normalize-repeat-style": "^5.0.1", - "postcss-normalize-string": "^5.0.1", - "postcss-normalize-timing-functions": "^5.0.1", - "postcss-normalize-unicode": "^5.0.1", - "postcss-normalize-url": "^5.0.2", - "postcss-normalize-whitespace": "^5.0.1", - "postcss-ordered-values": "^5.0.2", - "postcss-reduce-initial": "^5.0.1", - "postcss-reduce-transforms": "^5.0.1", - "postcss-svgo": "^5.0.2", - "postcss-unique-selectors": "^5.0.1" - } - }, - "cssnano-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-2.0.1.tgz", - "integrity": "sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ==", - "dev": true, - "requires": {} - }, - "postcss-calc": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.0.0.tgz", - "integrity": "sha512-5NglwDrcbiy8XXfPM11F3HeC6hoT9W7GUH/Zi5U/p7u3Irv4rHhdDcIZwG0llHXV4ftsBjpfWMXAnXNl4lnt8g==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.2" - } - }, - "postcss-colormin": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.0.tgz", - "integrity": "sha512-+HC6GfWU3upe5/mqmxuqYZ9B2Wl4lcoUUNkoaX59nEWV4EtADCMiBqui111Bu8R8IvaZTmqmxrqOAqjbHIwXPw==", - "dev": true, - "requires": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0", - "colord": "^2.0.1", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-convert-values": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.1.tgz", - "integrity": "sha512-C3zR1Do2BkKkCgC0g3sF8TS0koF2G+mN8xxayZx3f10cIRmTaAnpgpRQZjNekTZxM2ciSPoh2IWJm0VZx8NoQg==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-discard-comments": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz", - "integrity": "sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg==", - "dev": true, - "requires": {} - }, - "postcss-discard-duplicates": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz", - "integrity": "sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA==", - "dev": true, - "requires": {} - }, - "postcss-discard-empty": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz", - "integrity": "sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw==", - "dev": true, - "requires": {} - }, - "postcss-discard-overridden": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz", - "integrity": "sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q==", - "dev": true, - "requires": {} - }, - "postcss-merge-longhand": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.0.2.tgz", - "integrity": "sha512-BMlg9AXSI5G9TBT0Lo/H3PfUy63P84rVz3BjCFE9e9Y9RXQZD3+h3YO1kgTNsNJy7bBc1YQp8DmSnwLIW5VPcw==", - "dev": true, - "requires": { - "css-color-names": "^1.0.1", - "postcss-value-parser": "^4.1.0", - "stylehacks": "^5.0.1" - } - }, - "postcss-merge-rules": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.0.2.tgz", - "integrity": "sha512-5K+Md7S3GwBewfB4rjDeol6V/RZ8S+v4B66Zk2gChRqLTCC8yjnHQ601omj9TKftS19OPGqZ/XzoqpzNQQLwbg==", - "dev": true, - "requires": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0", - "cssnano-utils": "^2.0.1", - "postcss-selector-parser": "^6.0.5", - "vendors": "^1.0.3" - } - }, - "postcss-minify-font-values": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.0.1.tgz", - "integrity": "sha512-7JS4qIsnqaxk+FXY1E8dHBDmraYFWmuL6cgt0T1SWGRO5bzJf8sUoelwa4P88LEWJZweHevAiDKxHlofuvtIoA==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-minify-gradients": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.2.tgz", - "integrity": "sha512-7Do9JP+wqSD6Prittitt2zDLrfzP9pqKs2EcLX7HJYxsxCOwrrcLt4x/ctQTsiOw+/8HYotAoqNkrzItL19SdQ==", - "dev": true, - "requires": { - "colord": "^2.6", - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-minify-params": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.0.1.tgz", - "integrity": "sha512-4RUC4k2A/Q9mGco1Z8ODc7h+A0z7L7X2ypO1B6V8057eVK6mZ6xwz6QN64nHuHLbqbclkX1wyzRnIrdZehTEHw==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.2", - "browserslist": "^4.16.0", - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0", - "uniqs": "^2.0.0" - } - }, - "postcss-minify-selectors": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.1.0.tgz", - "integrity": "sha512-NzGBXDa7aPsAcijXZeagnJBKBPMYLaJJzB8CQh6ncvyl2sIndLVWfbcDi0SBjRWk5VqEjXvf8tYwzoKf4Z07og==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.2", - "postcss-selector-parser": "^6.0.5" - } - }, - "postcss-normalize-charset": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz", - "integrity": "sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg==", - "dev": true, - "requires": {} - }, - "postcss-normalize-display-values": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.1.tgz", - "integrity": "sha512-uupdvWk88kLDXi5HEyI9IaAJTE3/Djbcrqq8YgjvAVuzgVuqIk3SuJWUisT2gaJbZm1H9g5k2w1xXilM3x8DjQ==", - "dev": true, - "requires": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-normalize-positions": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.0.1.tgz", - "integrity": "sha512-rvzWAJai5xej9yWqlCb1OWLd9JjW2Ex2BCPzUJrbaXmtKtgfL8dBMOOMTX6TnvQMtjk3ei1Lswcs78qKO1Skrg==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-normalize-repeat-style": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.1.tgz", - "integrity": "sha512-syZ2itq0HTQjj4QtXZOeefomckiV5TaUO6ReIEabCh3wgDs4Mr01pkif0MeVwKyU/LHEkPJnpwFKRxqWA/7O3w==", - "dev": true, - "requires": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-normalize-string": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.0.1.tgz", - "integrity": "sha512-Ic8GaQ3jPMVl1OEn2U//2pm93AXUcF3wz+OriskdZ1AOuYV25OdgS7w9Xu2LO5cGyhHCgn8dMXh9bO7vi3i9pA==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-normalize-timing-functions": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.1.tgz", - "integrity": "sha512-cPcBdVN5OsWCNEo5hiXfLUnXfTGtSFiBU9SK8k7ii8UD7OLuznzgNRYkLZow11BkQiiqMcgPyh4ZqXEEUrtQ1Q==", - "dev": true, - "requires": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-normalize-unicode": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.1.tgz", - "integrity": "sha512-kAtYD6V3pK0beqrU90gpCQB7g6AOfP/2KIPCVBKJM2EheVsBQmx/Iof+9zR9NFKLAx4Pr9mDhogB27pmn354nA==", - "dev": true, - "requires": { - "browserslist": "^4.16.0", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-normalize-url": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.2.tgz", - "integrity": "sha512-k4jLTPUxREQ5bpajFQZpx8bCF2UrlqOTzP9kEqcEnOfwsRshWs2+oAFIHfDQB8GO2PaUaSE0NlTAYtbluZTlHQ==", - "dev": true, - "requires": { - "is-absolute-url": "^3.0.3", - "normalize-url": "^6.0.1", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-normalize-whitespace": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.1.tgz", - "integrity": "sha512-iPklmI5SBnRvwceb/XH568yyzK0qRVuAG+a1HFUsFRf11lEJTiQQa03a4RSCQvLKdcpX7XsI1Gen9LuLoqwiqA==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-ordered-values": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.0.2.tgz", - "integrity": "sha512-8AFYDSOYWebJYLyJi3fyjl6CqMEG/UVworjiyK1r573I56kb3e879sCJLGvR3merj+fAdPpVplXKQZv+ey6CgQ==", - "dev": true, - "requires": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-reduce-initial": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.0.1.tgz", - "integrity": "sha512-zlCZPKLLTMAqA3ZWH57HlbCjkD55LX9dsRyxlls+wfuRfqCi5mSlZVan0heX5cHr154Dq9AfbH70LyhrSAezJw==", - "dev": true, - "requires": { - "browserslist": "^4.16.0", - "caniuse-api": "^3.0.0" - } - }, - "postcss-reduce-transforms": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.1.tgz", - "integrity": "sha512-a//FjoPeFkRuAguPscTVmRQUODP+f3ke2HqFNgGPwdYnpeC29RZdCBvGRGTsKpMURb/I3p6jdKoBQ2zI+9Q7kA==", - "dev": true, - "requires": { - "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-svgo": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.0.2.tgz", - "integrity": "sha512-YzQuFLZu3U3aheizD+B1joQ94vzPfE6BNUcSYuceNxlVnKKsOtdo6hL9/zyC168Q8EwfLSgaDSalsUGa9f2C0A==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.1.0", - "svgo": "^2.3.0" - } - }, - "postcss-unique-selectors": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.0.1.tgz", - "integrity": "sha512-gwi1NhHV4FMmPn+qwBNuot1sG1t2OmacLQ/AX29lzyggnjd+MnVD5uqQmpXO3J17KGL2WAxQruj1qTd3H0gG/w==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.2", - "postcss-selector-parser": "^6.0.5", - "uniqs": "^2.0.0" - } - }, - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "stylehacks": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.0.1.tgz", - "integrity": "sha512-Es0rVnHIqbWzveU1b24kbw92HsebBepxfcqe5iix7t9j0PQqhs0IxXVXv0pY2Bxa08CgMkzD6OWql7kbGOuEdA==", - "dev": true, - "requires": { - "browserslist": "^4.16.0", - "postcss-selector-parser": "^6.0.4" - } - } - } - }, - "css-prefers-color-scheme": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz", - "integrity": "sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg==", - "dev": true, - "requires": { - "postcss": "^7.0.5" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "css-select": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", - "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^5.0.0", - "domhandler": "^4.2.0", - "domutils": "^2.6.0", - "nth-check": "^2.0.0" - } - }, - "css-select-base-adapter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", - "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", - "dev": true - }, - "css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dev": true, - "requires": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "css-what": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", - "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", - "dev": true - }, - "cssdb": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-4.4.0.tgz", - "integrity": "sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ==", - "dev": true - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - }, - "csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "dev": true, - "requires": { - "css-tree": "^1.1.2" - } - }, - "cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true - }, - "cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, - "requires": { - "cssom": "~0.3.6" - }, - "dependencies": { - "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - } - } - }, - "csstype": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.9.tgz", - "integrity": "sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw==" - }, - "cwd": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/cwd/-/cwd-0.10.0.tgz", - "integrity": "sha1-FyQAaUBXwioTsM8WFix+S3p/5Wc=", - "dev": true, - "requires": { - "find-pkg": "^0.1.2", - "fs-exists-sync": "^0.1.0" - } - }, - "damerau-levenshtein": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz", - "integrity": "sha512-VvdQIPGdWP0SqFXghj79Wf/5LArmreyMsGLa6FG6iC4t3j7j5s71TrwWmT/4akbDQIqjfACkLZmjXhA7g2oUZw==", - "dev": true - }, - "data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", - "dev": true, - "requires": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" - } - }, - "dateformat": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", - "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", - "dev": true - }, - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "requires": { - "ms": "2.1.2" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" - }, - "decamelize-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", - "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", - "dev": true, - "requires": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "dependencies": { - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true - } - } - }, - "decimal.js": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", - "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", - "dev": true - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, - "dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", - "dev": true - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "requires": { - "object-keys": "^1.0.12" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - } - }, - "del": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", - "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", - "dev": true, - "requires": { - "@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" - }, - "dependencies": { - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - } - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "delegate": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", - "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==" - }, - "deprecation": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", - "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", - "dev": true - }, - "detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", - "dev": true - }, - "detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true - }, - "devtools-protocol": { - "version": "0.0.901419", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.901419.tgz", - "integrity": "sha512-4INMPwNm9XRpBukhNbF7OB6fNTTCaI8pzy/fXg0xQzAy5h3zL1P8xT3QazgKqBrb/hAYwIBizqDBZ7GtJE74QQ==", - "dev": true - }, - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" - }, - "diff-sequences": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", - "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", - "dev": true - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, - "direction": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/direction/-/direction-1.0.4.tgz", - "integrity": "sha512-GYqKi1aH7PJXxdhTeZBFrg8vUBeKXi+cNprXsC1kpJcbcVnV9wBsrOu1cQEdG0WeQwlfHiy3XvnKfIrJ2R0NzQ==" - }, - "discontinuous-range": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz", - "integrity": "sha1-44Mx8IRLukm5qctxx3FYWqsbxlo=", - "dev": true - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "document.contains": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/document.contains/-/document.contains-1.0.2.tgz", - "integrity": "sha512-YcvYFs15mX8m3AO1QNQy3BlIpSMfNRj3Ujk2BEJxsZG+HZf7/hZ6jr7mDpXrF8q+ff95Vef5yjhiZxm8CGJr6Q==", - "requires": { - "define-properties": "^1.1.3" - } - }, - "dom-scroll-into-view": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/dom-scroll-into-view/-/dom-scroll-into-view-1.2.1.tgz", - "integrity": "sha1-6PNnMt0ImwIBqI14Fdw/iObWbH4=" - }, - "dom-serializer": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", - "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - } - }, - "domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", - "dev": true - }, - "domexception": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", - "dev": true, - "requires": { - "webidl-conversions": "^5.0.0" - }, - "dependencies": { - "webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", - "dev": true - } - } - }, - "domhandler": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz", - "integrity": "sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==", - "dev": true, - "requires": { - "domelementtype": "^2.2.0" - } - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - }, - "downshift": { - "version": "6.1.7", - "resolved": "https://registry.npmjs.org/downshift/-/downshift-6.1.7.tgz", - "integrity": "sha512-cVprZg/9Lvj/uhYRxELzlu1aezRcgPWBjTvspiGTVEU64gF5pRdSRKFVLcxqsZC637cLAGMbL40JavEfWnqgNg==", - "requires": { - "@babel/runtime": "^7.14.8", - "compute-scroll-into-view": "^1.0.17", - "prop-types": "^15.7.2", - "react-is": "^17.0.2", - "tslib": "^2.3.0" - } - }, - "duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.3.884", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.884.tgz", - "integrity": "sha512-kOaCAa+biA98PwH5BpCkeUeTL6mCeg8p3Q3OhqzPyqhu/5QUnWAN2wr/3IK8xMQxIV76kfoQpP+Bn/wij/jXrg==" - }, - "emittery": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", - "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", - "dev": true, - "peer": true - }, - "emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true - }, - "encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "requires": { - "iconv-lite": "^0.6.2" - } - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, - "enhanced-resolve": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz", - "integrity": "sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.1" - } - }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true - }, - "envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", - "dev": true - }, - "enzyme": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/enzyme/-/enzyme-3.11.0.tgz", - "integrity": "sha512-Dw8/Gs4vRjxY6/6i9wU0V+utmQO9kvh9XLnz3LIudviOnVYDEe2ec+0k+NQoMamn1VrjKgCUOWj5jG/5M5M0Qw==", - "dev": true, - "requires": { - "array.prototype.flat": "^1.2.3", - "cheerio": "^1.0.0-rc.3", - "enzyme-shallow-equal": "^1.0.1", - "function.prototype.name": "^1.1.2", - "has": "^1.0.3", - "html-element-map": "^1.2.0", - "is-boolean-object": "^1.0.1", - "is-callable": "^1.1.5", - "is-number-object": "^1.0.4", - "is-regex": "^1.0.5", - "is-string": "^1.0.5", - "is-subset": "^0.1.1", - "lodash.escape": "^4.0.1", - "lodash.isequal": "^4.5.0", - "object-inspect": "^1.7.0", - "object-is": "^1.0.2", - "object.assign": "^4.1.0", - "object.entries": "^1.1.1", - "object.values": "^1.1.1", - "raf": "^3.4.1", - "rst-selector-parser": "^2.2.3", - "string.prototype.trim": "^1.2.1" - } - }, - "enzyme-shallow-equal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.4.tgz", - "integrity": "sha512-MttIwB8kKxypwHvRynuC3ahyNc+cFbR8mjVIltnmzQ0uKGqmsfO4bfBuLxb0beLNPhjblUEYvEbsg+VSygvF1Q==", - "dev": true, - "requires": { - "has": "^1.0.3", - "object-is": "^1.1.2" - } - }, - "enzyme-to-json": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/enzyme-to-json/-/enzyme-to-json-3.6.2.tgz", - "integrity": "sha512-Ynm6Z6R6iwQ0g2g1YToz6DWhxVnt8Dy1ijR2zynRKxTyBGA8rCDXU3rs2Qc4OKvUvc2Qoe1bcFK6bnPs20TrTg==", - "dev": true, - "requires": { - "@types/cheerio": "^0.22.22", - "lodash": "^4.17.21", - "react-is": "^16.12.0" - }, - "dependencies": { - "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true - } - } - }, - "equivalent-key-map": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/equivalent-key-map/-/equivalent-key-map-0.2.2.tgz", - "integrity": "sha512-xvHeyCDbZzkpN4VHQj/n+j2lOwL0VWszG30X4cOrc9Y7Tuo2qCdZK/0AMod23Z5dCtNUbaju6p0rwOhHUk05ew==" - }, - "error": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/error/-/error-7.2.1.tgz", - "integrity": "sha512-fo9HBvWnx3NGUKMvMwB/CBCMMrfEJgbDTVDEkPygA3Bdd3lM1OyCd+rbQ8BwnpF6GdVeOLDNmyL4N5Bg80ZvdA==", - "dev": true, - "requires": { - "string-template": "~0.2.1" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", - "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.1", - "is-string": "^1.0.7", - "is-weakref": "^1.0.1", - "object-inspect": "^1.11.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - } - }, - "es-array-method-boxes-properly": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", - "dev": true - }, - "es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", - "dev": true - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" - }, - "escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", - "dev": true, - "requires": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } - } - } - }, - "eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", - "dev": true, - "requires": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.10.4" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "globals": { - "version": "13.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", - "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "eslint-config-prettier": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-7.2.0.tgz", - "integrity": "sha512-rV4Qu0C3nfJKPOAhFujFxB7RMP+URFyQqqOZW9DMRD7ZDTFyjaIlETU3xzHELt++4ugC0+Jm084HQYkkJe+Ivg==", - "dev": true, - "requires": {} - }, - "eslint-import-resolver-node": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", - "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", - "dev": true, - "requires": { - "debug": "^3.2.7", - "resolve": "^1.20.0" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "eslint-module-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.1.tgz", - "integrity": "sha512-fjoetBXQZq2tSTWZ9yWVl2KuFrTZZH3V+9iD1V1RfpDgxzJR+mPd/KZmMiA8gbPqdBzpNiEHOuT7IYEWxrH0zQ==", - "dev": true, - "requires": { - "debug": "^3.2.7", - "find-up": "^2.1.0", - "pkg-dir": "^2.0.0" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - } - } - }, - "eslint-plugin-eslint-comments": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.2.0.tgz", - "integrity": "sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5", - "ignore": "^5.0.5" - }, - "dependencies": { - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - } - } - }, - "eslint-plugin-import": { - "version": "2.24.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.24.2.tgz", - "integrity": "sha512-hNVtyhiEtZmpsabL4neEj+6M5DCLgpYyG9nzJY8lZQeQXEn5UPW1DpUdsMHMXsq98dbNm7nt1w9ZMSVpfJdi8Q==", - "dev": true, - "requires": { - "array-includes": "^3.1.3", - "array.prototype.flat": "^1.2.4", - "debug": "^2.6.9", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.6.2", - "find-up": "^2.0.0", - "has": "^1.0.3", - "is-core-module": "^2.6.0", - "minimatch": "^3.0.4", - "object.values": "^1.1.4", - "pkg-up": "^2.0.0", - "read-pkg-up": "^3.0.0", - "resolve": "^1.20.0", - "tsconfig-paths": "^3.11.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "read-pkg-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", - "dev": true, - "requires": { - "find-up": "^2.0.0", - "read-pkg": "^3.0.0" - } - } - } - }, - "eslint-plugin-jest": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-24.5.0.tgz", - "integrity": "sha512-Cm+XdX7Nms2UXGRnivHFVcM3ZmlKheHvc9VD78iZLO1XcqB59WbVjrMSiesCbHDlToxWjMJDiJMgc1CzFE13Vg==", - "dev": true, - "requires": { - "@typescript-eslint/experimental-utils": "^4.0.1" - } - }, - "eslint-plugin-jsdoc": { - "version": "36.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-36.1.1.tgz", - "integrity": "sha512-nuLDvH1EJaKx0PCa9oeQIxH6pACIhZd1gkalTUxZbaxxwokjs7TplqY0Q8Ew3CoZaf5aowm0g/Z3JGHCatt+gQ==", - "dev": true, - "requires": { - "@es-joy/jsdoccomment": "0.10.8", - "comment-parser": "1.2.4", - "debug": "^4.3.2", - "esquery": "^1.4.0", - "jsdoc-type-pratt-parser": "^1.1.1", - "lodash": "^4.17.21", - "regextras": "^0.8.0", - "semver": "^7.3.5", - "spdx-expression-parse": "^3.0.1" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "eslint-plugin-jsx-a11y": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz", - "integrity": "sha512-0rGPJBbwHoGNPU73/QCLP/vveMlM1b1Z9PponxO87jfr6tuH5ligXbDT6nHSSzBC8ovX2Z+BQu7Bk5D/Xgq9zg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.11.2", - "aria-query": "^4.2.2", - "array-includes": "^3.1.1", - "ast-types-flow": "^0.0.7", - "axe-core": "^4.0.2", - "axobject-query": "^2.2.0", - "damerau-levenshtein": "^1.0.6", - "emoji-regex": "^9.0.0", - "has": "^1.0.3", - "jsx-ast-utils": "^3.1.0", - "language-tags": "^1.0.5" - } - }, - "eslint-plugin-markdown": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-markdown/-/eslint-plugin-markdown-2.2.1.tgz", - "integrity": "sha512-FgWp4iyYvTFxPwfbxofTvXxgzPsDuSKHQy2S+a8Ve6savbujey+lgrFFbXQA0HPygISpRYWYBjooPzhYSF81iA==", - "dev": true, - "requires": { - "mdast-util-from-markdown": "^0.8.5" - } - }, - "eslint-plugin-prettier": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz", - "integrity": "sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==", - "dev": true, - "requires": { - "prettier-linter-helpers": "^1.0.0" - } - }, - "eslint-plugin-react": { - "version": "7.26.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.26.1.tgz", - "integrity": "sha512-Lug0+NOFXeOE+ORZ5pbsh6mSKjBKXDXItUD2sQoT+5Yl0eoT82DqnXeTMfUare4QVCn9QwXbfzO/dBLjLXwVjQ==", - "dev": true, - "requires": { - "array-includes": "^3.1.3", - "array.prototype.flatmap": "^1.2.4", - "doctrine": "^2.1.0", - "estraverse": "^5.2.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.0.4", - "object.entries": "^1.1.4", - "object.fromentries": "^2.0.4", - "object.hasown": "^1.0.0", - "object.values": "^1.1.4", - "prop-types": "^15.7.2", - "resolve": "^2.0.0-next.3", - "semver": "^6.3.0", - "string.prototype.matchall": "^4.0.5" - }, - "dependencies": { - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "resolve": { - "version": "2.0.0-next.3", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", - "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", - "dev": true, - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - } - } - }, - "eslint-plugin-react-hooks": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.2.0.tgz", - "integrity": "sha512-623WEiZJqxR7VdxFCKLI6d6LLpwJkGPYKODnkH3D7WpOG5KM8yWueBd8TLsNAetEJNF5iJmolaAKO3F8yzyVBQ==", - "dev": true, - "requires": {} - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "dependencies": { - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - } - } - }, - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } - } - }, - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - }, - "esm": { - "version": "3.2.25", - "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", - "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", - "dev": true - }, - "espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "dev": true, - "requires": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "eventemitter2": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", - "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=", - "dev": true - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true - }, - "exec-sh": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz", - "integrity": "sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==", - "dev": true - }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "execall": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/execall/-/execall-2.0.0.tgz", - "integrity": "sha512-0FU2hZ5Hh6iQnarpRtQurM/aAvp3RIbfvgLHrcqJYzhXyV2KFruhuChf9NC6waAhiUR7FFtlugkI4p7f2Fqlow==", - "dev": true, - "requires": { - "clone-regexp": "^2.1.0" - } - }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", - "dev": true - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "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" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, - "expect": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz", - "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==", - "dev": true, - "requires": { - "@jest/types": "^26.6.2", - "ansi-styles": "^4.0.0", - "jest-get-type": "^26.3.0", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-regex-util": "^26.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "jest-message-util": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", - "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@jest/types": "^26.6.2", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "micromatch": "^4.0.2", - "pretty-format": "^26.6.2", - "slash": "^3.0.0", - "stack-utils": "^2.0.2" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "expect-puppeteer": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/expect-puppeteer/-/expect-puppeteer-4.4.0.tgz", - "integrity": "sha512-6Ey4Xy2xvmuQu7z7YQtMsaMV0EHJRpVxIDOd5GRrm04/I3nkTKIutELfECsLp6le+b3SSa3cXhPiw6PgqzxYWA==", - "dev": true - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - } - } - }, - "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "dependencies": { - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "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" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "dev": true, - "requires": { - "@types/yauzl": "^2.9.1", - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - }, - "dependencies": { - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - } - } - }, - "fast-average-color": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/fast-average-color/-/fast-average-color-4.3.0.tgz", - "integrity": "sha512-k8FXd6+JeXoItmdNqB3hMwFgArryjdYBLuzEM8fRY/oztd/051yhSHU6GUrMOfIQU9dDHyFDcIAkGrQKlYtpDA==", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", - "dev": true - }, - "fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "fast-memoize": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz", - "integrity": "sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==" - }, - "fastest-levenshtein": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", - "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", - "dev": true - }, - "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "faye-websocket": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "fb-watchman": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", - "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", - "dev": true, - "requires": { - "bser": "2.1.1" - } - }, - "fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", - "dev": true, - "requires": { - "pend": "~1.2.0" - } - }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - }, - "dependencies": { - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - } - } - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "file-sync-cmp": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz", - "integrity": "sha1-peeo/7+kk7Q7kju9TKiaU7Y7YSs=", - "dev": true - }, - "filename-reserved-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", - "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=", - "dev": true - }, - "filenamify": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz", - "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==", - "dev": true, - "requires": { - "filename-reserved-regex": "^2.0.0", - "strip-outer": "^1.0.1", - "trim-repeated": "^1.0.0" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "dependencies": { - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - } - } - }, - "find-file-up": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/find-file-up/-/find-file-up-0.1.3.tgz", - "integrity": "sha1-z2gJG8+fMApA2kEbN9pczlovvqA=", - "dev": true, - "requires": { - "fs-exists-sync": "^0.1.0", - "resolve-dir": "^0.1.0" - } - }, - "find-parent-dir": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.1.tgz", - "integrity": "sha512-o4UcykWV/XN9wm+jMEtWLPlV8RXCZnMhQI6F6OdHeSez7iiJWePw8ijOlskJZMsaQoGR/b7dH6lO02HhaTN7+A==", - "dev": true - }, - "find-pkg": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/find-pkg/-/find-pkg-0.1.2.tgz", - "integrity": "sha1-G9wiwG42NlUy4qJIBGhUuXiNpVc=", - "dev": true, - "requires": { - "find-file-up": "^0.1.2" - } - }, - "find-process": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/find-process/-/find-process-1.4.5.tgz", - "integrity": "sha512-v11rJYYISUWn+s8qZzgGnBvlzRKf3bOtlGFM8H0kw56lGQtOmLuLCzuclA5kehA2j7S5sioOWdI4woT3jDavAw==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "commander": "^5.1.0", - "debug": "^4.1.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "find-root": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "findup-sync": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", - "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", - "dev": true, - "requires": { - "glob": "~5.0.0" - }, - "dependencies": { - "glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "dev": true, - "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } - } - }, - "fined": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", - "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", - "dev": true, - "requires": { - "expand-tilde": "^2.0.2", - "is-plain-object": "^2.0.3", - "object.defaults": "^1.1.0", - "object.pick": "^1.2.0", - "parse-filepath": "^1.0.1" - }, - "dependencies": { - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - } - } - }, - "flagged-respawn": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", - "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", - "dev": true - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "dependencies": { - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "flatted": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", - "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", - "dev": true - }, - "flatten": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", - "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==", - "dev": true - }, - "follow-redirects": { - "version": "1.14.4", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz", - "integrity": "sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==", - "dev": true - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true, - "requires": { - "for-in": "^1.0.1" - } - }, - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "fraction.js": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.1.tgz", - "integrity": "sha512-MHOhvvxHTfRFpF1geTK9czMIZ6xclsEor2wkIGYYq+PxcQqT7vStJqjhe6S1TenZrMZzo+wlqOufBDVepUEgPg==", - "dev": true - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "framer-motion": { - "version": "4.1.17", - "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-4.1.17.tgz", - "integrity": "sha512-thx1wvKzblzbs0XaK2X0G1JuwIdARcoNOW7VVwjO8BUltzXPyONGAElLu6CiCScsOQRI7FIk/45YTFtJw5Yozw==", - "requires": { - "@emotion/is-prop-valid": "^0.8.2", - "framesync": "5.3.0", - "hey-listen": "^1.0.8", - "popmotion": "9.3.6", - "style-value-types": "4.1.4", - "tslib": "^2.1.0" - }, - "dependencies": { - "@emotion/is-prop-valid": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", - "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", - "optional": true, - "requires": { - "@emotion/memoize": "0.7.4" - } - }, - "@emotion/memoize": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", - "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", - "optional": true - } - } - }, - "framesync": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/framesync/-/framesync-5.3.0.tgz", - "integrity": "sha512-oc5m68HDO/tuK2blj7ZcdEBRx3p1PjrgHazL8GYEpvULhrtGIFbQArN6cQS2QhW8mitffaB+VYzMjDqBxxQeoA==", - "requires": { - "tslib": "^2.1.0" - } - }, - "fs": { - "version": "0.0.1-security", - "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", - "integrity": "sha1-invTcYa23d84E/I4WLV+yq9eQdQ=", - "dev": true - }, - "fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true - }, - "fs-exists-sync": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", - "integrity": "sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" - } - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "functions-have-names": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.2.tgz", - "integrity": "sha512-bLgc3asbWdwPbx2mNk2S49kmJCuQeu0nfmaOgbs8WIyzzkw3r4htszdIi9Q9EMezDPTYuJx2wvjZ/EwgAthpnA==" - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" - }, - "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - } - }, - "get-own-enumerable-property-symbols": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", - "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", - "dev": true - }, - "get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true - }, - "get-stdin": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", - "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", - "dev": true - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, - "get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - } - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, - "getobject": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/getobject/-/getobject-1.0.2.tgz", - "integrity": "sha512-2zblDBaFcb3rB4rF77XVnuINOE2h2k/OnqXAiy0IrTxUfV1iFp3la33oAQVY9pCpWU268WFYVt2t71hlMuLsOg==", - "dev": true - }, - "gettext-parser": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/gettext-parser/-/gettext-parser-1.4.0.tgz", - "integrity": "sha512-sedZYLHlHeBop/gZ1jdg59hlUEcpcZJofLq2JFwJT1zTqAU3l2wFv6IsuwFHGqbiT9DWzMUW4/em2+hspnmMMA==", - "requires": { - "encoding": "^0.1.12", - "safe-buffer": "^5.1.1" - } - }, - "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "global-cache": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/global-cache/-/global-cache-1.2.1.tgz", - "integrity": "sha512-EOeUaup5DgWKlCMhA9YFqNRIlZwoxt731jCh47WBV9fQqHgXhr3Fa55hfgIUqilIcPsfdNKN7LHjrNY+Km40KA==", - "requires": { - "define-properties": "^1.1.2", - "is-symbol": "^1.0.1" - } - }, - "global-modules": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz", - "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=", - "dev": true, - "requires": { - "global-prefix": "^0.1.4", - "is-windows": "^0.2.0" - }, - "dependencies": { - "is-windows": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", - "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=", - "dev": true - } - } - }, - "global-prefix": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", - "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.0", - "ini": "^1.3.4", - "is-windows": "^0.2.0", - "which": "^1.2.12" - }, - "dependencies": { - "is-windows": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", - "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=", - "dev": true - } - } - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" - }, - "globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - } - }, - "globjoin": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", - "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=", - "dev": true - }, - "gonzales-pe": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.3.0.tgz", - "integrity": "sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "good-listener": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", - "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=", - "requires": { - "delegate": "^3.1.2" - } - }, - "graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", - "dev": true - }, - "gradient-parser": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/gradient-parser/-/gradient-parser-0.1.5.tgz", - "integrity": "sha1-DH4heVWeXOfY1x9EI6+TcQCyJIw=" - }, - "growly": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", - "dev": true, - "optional": true - }, - "grunt": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.4.1.tgz", - "integrity": "sha512-ZXIYXTsAVrA7sM+jZxjQdrBOAg7DyMUplOMhTaspMRExei+fD0BTwdWXnn0W5SXqhb/Q/nlkzXclSi3IH55PIA==", - "dev": true, - "requires": { - "dateformat": "~3.0.3", - "eventemitter2": "~0.4.13", - "exit": "~0.1.2", - "findup-sync": "~0.3.0", - "glob": "~7.1.6", - "grunt-cli": "~1.4.2", - "grunt-known-options": "~2.0.0", - "grunt-legacy-log": "~3.0.0", - "grunt-legacy-util": "~2.0.1", - "iconv-lite": "~0.4.13", - "js-yaml": "~3.14.0", - "minimatch": "~3.0.4", - "mkdirp": "~1.0.4", - "nopt": "~3.0.6", - "rimraf": "~3.0.2" - }, - "dependencies": { - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "grunt-cli": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.4.3.tgz", - "integrity": "sha512-9Dtx/AhVeB4LYzsViCjUQkd0Kw0McN2gYpdmGYKtE2a5Yt7v1Q+HYZVWhqXc/kGnxlMtqKDxSwotiGeFmkrCoQ==", - "dev": true, - "requires": { - "grunt-known-options": "~2.0.0", - "interpret": "~1.1.0", - "liftup": "~3.0.1", - "nopt": "~4.0.1", - "v8flags": "~3.2.0" - }, - "dependencies": { - "nopt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", - "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", - "dev": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - } - } - }, - "grunt-contrib-clean": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/grunt-contrib-clean/-/grunt-contrib-clean-2.0.0.tgz", - "integrity": "sha512-g5ZD3ORk6gMa5ugZosLDQl3dZO7cI3R14U75hTM+dVLVxdMNJCPVmwf9OUt4v4eWgpKKWWoVK9DZc1amJp4nQw==", - "dev": true, - "requires": { - "async": "^2.6.1", - "rimraf": "^2.6.2" - } - }, - "grunt-contrib-copy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/grunt-contrib-copy/-/grunt-contrib-copy-1.0.0.tgz", - "integrity": "sha1-cGDGWB6QS4qw0A8HbgqPbj58NXM=", - "dev": true, - "requires": { - "chalk": "^1.1.1", - "file-sync-cmp": "^0.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "grunt-known-options": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-2.0.0.tgz", - "integrity": "sha512-GD7cTz0I4SAede1/+pAbmJRG44zFLPipVtdL9o3vqx9IEyb7b4/Y3s7r6ofI3CchR5GvYJ+8buCSioDv5dQLiA==", - "dev": true - }, - "grunt-legacy-log": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-3.0.0.tgz", - "integrity": "sha512-GHZQzZmhyq0u3hr7aHW4qUH0xDzwp2YXldLPZTCjlOeGscAOWWPftZG3XioW8MasGp+OBRIu39LFx14SLjXRcA==", - "dev": true, - "requires": { - "colors": "~1.1.2", - "grunt-legacy-log-utils": "~2.1.0", - "hooker": "~0.2.3", - "lodash": "~4.17.19" - } - }, - "grunt-legacy-log-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.1.0.tgz", - "integrity": "sha512-lwquaPXJtKQk0rUM1IQAop5noEpwFqOXasVoedLeNzaibf/OPWjKYvvdqnEHNmU+0T0CaReAXIbGo747ZD+Aaw==", - "dev": true, - "requires": { - "chalk": "~4.1.0", - "lodash": "~4.17.19" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "grunt-legacy-util": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-2.0.1.tgz", - "integrity": "sha512-2bQiD4fzXqX8rhNdXkAywCadeqiPiay0oQny77wA2F3WF4grPJXCvAcyoWUJV+po/b15glGkxuSiQCK299UC2w==", - "dev": true, - "requires": { - "async": "~3.2.0", - "exit": "~0.1.2", - "getobject": "~1.0.0", - "hooker": "~0.2.3", - "lodash": "~4.17.21", - "underscore.string": "~3.3.5", - "which": "~2.0.2" - }, - "dependencies": { - "async": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.2.tgz", - "integrity": "sha512-H0E+qZaDEfx/FY4t7iLRv1W2fFI6+pyCeTw1uN20AQPiwqwM6ojPxHxdLv4z8hi2DtnW9BOckSspLucW7pIE5g==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "grunt-shell": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/grunt-shell/-/grunt-shell-3.0.1.tgz", - "integrity": "sha512-C8eR4frw/NmIFIwSvzSLS4wOQBUzC+z6QhrKPzwt/tlaIqlzH35i/O2MggVOBj2Sh1tbaAqpASWxGiGsi4JMIQ==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "npm-run-path": "^2.0.0", - "strip-ansi": "^5.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "grunt-wp-deploy": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/grunt-wp-deploy/-/grunt-wp-deploy-2.1.2.tgz", - "integrity": "sha512-n+x1WBCmLHF5P1aDY29CoF8jdLHnRKX4VDIZhiM0sbZ58vSBTFedajcZrP1CEqJ7suiv0/o/c6xmR1BiPEzaQg==", - "dev": true, - "requires": { - "inquirer": "^6.0.0" - } - }, - "gzip-size": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", - "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", - "dev": true, - "requires": { - "duplexer": "^0.1.2" - } - }, - "hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - } - } - }, - "has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==" - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" - }, - "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "requires": { - "has-symbols": "^1.0.2" - } - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "hey-listen": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", - "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==" - }, - "highlight-words-core": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/highlight-words-core/-/highlight-words-core-1.2.2.tgz", - "integrity": "sha512-BXUKIkUuh6cmmxzi5OIbUJxrG8OAk2MqoL1DtO3Wo9D2faJg2ph5ntyuQeLqaHJmzER6H5tllCDA9ZnNe9BVGg==" - }, - "hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "requires": { - "react-is": "^16.7.0" - }, - "dependencies": { - "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - } - } - }, - "homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "dev": true, - "requires": { - "parse-passwd": "^1.0.0" - } - }, - "hooker": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", - "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=", - "dev": true - }, - "hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "hpq": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/hpq/-/hpq-1.3.0.tgz", - "integrity": "sha512-fvYTvdCFOWQupGxqkahrkA+ERBuMdzkxwtUdKrxR6rmMd4Pfl+iZ1QiQYoaZ0B/v0y59MOMnz3XFUWbT50/NWA==" - }, - "html-element-map": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/html-element-map/-/html-element-map-1.3.1.tgz", - "integrity": "sha512-6XMlxrAFX4UEEGxctfFnmrFaaZFNf9i5fNuV5wZ3WWQ4FVaNP1aX1LkX9j2mfEx1NpjeE/rL3nmgEn23GdFmrg==", - "dev": true, - "requires": { - "array.prototype.filter": "^1.0.0", - "call-bind": "^1.0.2" - } - }, - "html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", - "dev": true, - "requires": { - "whatwg-encoding": "^1.0.5" - } - }, - "html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "html-tags": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz", - "integrity": "sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==", - "dev": true - }, - "htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - } - }, - "http-parser-js": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", - "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==", - "dev": true - }, - "http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "requires": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - } - }, - "https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", - "dev": true, - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true - }, - "iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true - }, - "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" - } - } - }, - "import-lazy": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", - "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", - "dev": true - }, - "import-local": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.3.tgz", - "integrity": "sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA==", - "dev": true, - "requires": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "dependencies": { - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - } - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true - }, - "indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "inquirer": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", - "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", - "dev": true, - "requires": { - "ansi-escapes": "^3.2.0", - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^2.0.0", - "lodash": "^4.17.12", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^6.4.0", - "string-width": "^2.1.0", - "strip-ansi": "^5.1.0", - "through": "^2.3.6" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "requires": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - } - }, - "interpret": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", - "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", - "dev": true - }, - "irregular-plurals": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-3.3.0.tgz", - "integrity": "sha512-MVBLKUTangM3EfRPFROhmWQQKRDsrgI83J8GS3jXy+OwYqiR2/aoWndYQ5416jLE3uaGgLH7ncme3X9y09gZ3g==", - "dev": true - }, - "is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", - "dev": true, - "requires": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" - } - }, - "is-absolute-url": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", - "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", - "dev": true - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - } - } - }, - "is-alphabetical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", - "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", - "dev": true - }, - "is-alphanumerical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", - "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", - "dev": true, - "requires": { - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0" - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" - }, - "is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "requires": { - "has-bigints": "^1.0.1" - } - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" - }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "requires": { - "ci-info": "^2.0.0" - }, - "dependencies": { - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - } - } - }, - "is-core-module": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", - "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", - "requires": { - "has": "^1.0.3" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - } - } - }, - "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-decimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", - "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", - "dev": true - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - } - } - }, - "is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, - "optional": true - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-hexadecimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", - "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", - "dev": true - }, - "is-negative-zero": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", - "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==" - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-number-object": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", - "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", - "dev": true - }, - "is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "dev": true - }, - "is-path-in-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", - "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", - "dev": true, - "requires": { - "is-path-inside": "^2.1.0" - } - }, - "is-path-inside": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", - "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", - "dev": true, - "requires": { - "path-is-inside": "^1.0.2" - } - }, - "is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", - "dev": true - }, - "is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "dev": true - }, - "is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, - "is-promise": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", - "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==" - }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", - "dev": true - }, - "is-relative": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", - "dev": true, - "requires": { - "is-unc-path": "^1.0.0" - } - }, - "is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", - "dev": true - }, - "is-shared-array-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", - "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==" - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, - "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-subset": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz", - "integrity": "sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=", - "dev": true - }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "requires": { - "has-symbols": "^1.0.2" - } - }, - "is-touch-device": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-touch-device/-/is-touch-device-1.0.1.tgz", - "integrity": "sha512-LAYzo9kMT1b2p19L/1ATGt2XcSilnzNlyvq6c0pbPRVisLbAPpLqr53tIJS00kvrTkj0HtR8U7+u8X0yR8lPSw==" - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "is-unc-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", - "dev": true, - "requires": { - "unc-path-regex": "^0.1.2" - } - }, - "is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "is-weakref": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", - "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", - "requires": { - "call-bind": "^1.0.0" - } - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "optional": true, - "requires": { - "is-docker": "^2.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz", - "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==", - "dev": true, - "requires": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - } - }, - "istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "istanbul-reports": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.5.tgz", - "integrity": "sha512-5+19PlhnGabNWB7kOFnuxT8H3T/iIyQzIbQMxXsURmmvKg86P2sbkrGOT77VnHw0Qr0gc2XzRaRfMZYYbSQCJQ==", - "dev": true, - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - } - }, - "jest": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.3.1.tgz", - "integrity": "sha512-U2AX0AgQGd5EzMsiZpYt8HyZ+nSVIh5ujQ9CPp9EQZJMjXIiSZpJNweZl0swatKRoqHWgGKM3zaSwm4Zaz87ng==", - "dev": true, - "peer": true, - "requires": { - "@jest/core": "^27.3.1", - "import-local": "^3.0.2", - "jest-cli": "^27.3.1" - } - }, - "jest-changed-files": { - "version": "27.3.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.3.0.tgz", - "integrity": "sha512-9DJs9garMHv4RhylUMZgbdCJ3+jHSkpL9aaVKp13xtXAD80qLTLrqcDZL1PHA9dYA0bCI86Nv2BhkLpLhrBcPg==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^27.2.5", - "execa": "^5.0.0", - "throat": "^6.0.1" - }, - "dependencies": { - "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "peer": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "peer": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "peer": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "peer": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "peer": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "peer": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-circus": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-26.6.3.tgz", - "integrity": "sha512-ACrpWZGcQMpbv13XbzRzpytEJlilP/Su0JtNCi5r/xLpOUhnaIJr8leYYpLEMgPFURZISEHrnnpmB54Q/UziPw==", - "dev": true, - "requires": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/babel__traverse": "^7.0.4", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "expect": "^26.6.2", - "is-generator-fn": "^2.0.0", - "jest-each": "^26.6.2", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-runner": "^26.6.3", - "jest-runtime": "^26.6.3", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "pretty-format": "^26.6.2", - "stack-utils": "^2.0.2", - "throat": "^5.0.0" - }, - "dependencies": { - "@jest/console": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz", - "integrity": "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==", - "dev": true, - "requires": { - "@jest/types": "^26.6.2", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^26.6.2", - "jest-util": "^26.6.2", - "slash": "^3.0.0" - } - }, - "@jest/globals": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz", - "integrity": "sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==", - "dev": true, - "requires": { - "@jest/environment": "^26.6.2", - "@jest/types": "^26.6.2", - "expect": "^26.6.2" - } - }, - "@jest/source-map": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz", - "integrity": "sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==", - "dev": true, - "requires": { - "callsites": "^3.0.0", - "graceful-fs": "^4.2.4", - "source-map": "^0.6.0" - } - }, - "@jest/test-result": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz", - "integrity": "sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==", - "dev": true, - "requires": { - "@jest/console": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - } - }, - "@jest/test-sequencer": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz", - "integrity": "sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==", - "dev": true, - "requires": { - "@jest/test-result": "^26.6.2", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^26.6.2", - "jest-runner": "^26.6.3", - "jest-runtime": "^26.6.3" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "cjs-module-lexer": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz", - "integrity": "sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==", - "dev": true - }, - "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "emittery": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz", - "integrity": "sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "jest-config": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz", - "integrity": "sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==", - "dev": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^26.6.3", - "@jest/types": "^26.6.2", - "babel-jest": "^26.6.3", - "chalk": "^4.0.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.1", - "graceful-fs": "^4.2.4", - "jest-environment-jsdom": "^26.6.2", - "jest-environment-node": "^26.6.2", - "jest-get-type": "^26.3.0", - "jest-jasmine2": "^26.6.3", - "jest-regex-util": "^26.0.0", - "jest-resolve": "^26.6.2", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "micromatch": "^4.0.2", - "pretty-format": "^26.6.2" - } - }, - "jest-docblock": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz", - "integrity": "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==", - "dev": true, - "requires": { - "detect-newline": "^3.0.0" - } - }, - "jest-environment-jsdom": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz", - "integrity": "sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==", - "dev": true, - "requires": { - "@jest/environment": "^26.6.2", - "@jest/fake-timers": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "jest-mock": "^26.6.2", - "jest-util": "^26.6.2", - "jsdom": "^16.4.0" - } - }, - "jest-jasmine2": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz", - "integrity": "sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==", - "dev": true, - "requires": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^26.6.2", - "@jest/source-map": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^26.6.2", - "is-generator-fn": "^2.0.0", - "jest-each": "^26.6.2", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-runtime": "^26.6.3", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "pretty-format": "^26.6.2", - "throat": "^5.0.0" - } - }, - "jest-leak-detector": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz", - "integrity": "sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==", - "dev": true, - "requires": { - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" - } - }, - "jest-message-util": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", - "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@jest/types": "^26.6.2", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "micromatch": "^4.0.2", - "pretty-format": "^26.6.2", - "slash": "^3.0.0", - "stack-utils": "^2.0.2" - } - }, - "jest-resolve": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", - "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", - "dev": true, - "requires": { - "@jest/types": "^26.6.2", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^26.6.2", - "read-pkg-up": "^7.0.1", - "resolve": "^1.18.1", - "slash": "^3.0.0" - } - }, - "jest-runner": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz", - "integrity": "sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==", - "dev": true, - "requires": { - "@jest/console": "^26.6.2", - "@jest/environment": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.7.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-config": "^26.6.3", - "jest-docblock": "^26.0.0", - "jest-haste-map": "^26.6.2", - "jest-leak-detector": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-resolve": "^26.6.2", - "jest-runtime": "^26.6.3", - "jest-util": "^26.6.2", - "jest-worker": "^26.6.2", - "source-map-support": "^0.5.6", - "throat": "^5.0.0" - } - }, - "jest-runtime": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz", - "integrity": "sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==", - "dev": true, - "requires": { - "@jest/console": "^26.6.2", - "@jest/environment": "^26.6.2", - "@jest/fake-timers": "^26.6.2", - "@jest/globals": "^26.6.2", - "@jest/source-map": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/yargs": "^15.0.0", - "chalk": "^4.0.0", - "cjs-module-lexer": "^0.6.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.4", - "jest-config": "^26.6.3", - "jest-haste-map": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-mock": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-resolve": "^26.6.2", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "slash": "^3.0.0", - "strip-bom": "^4.0.0", - "yargs": "^15.4.1" - } - }, - "jest-snapshot": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz", - "integrity": "sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==", - "dev": true, - "requires": { - "@babel/types": "^7.0.0", - "@jest/types": "^26.6.2", - "@types/babel__traverse": "^7.0.4", - "@types/prettier": "^2.0.0", - "chalk": "^4.0.0", - "expect": "^26.6.2", - "graceful-fs": "^4.2.4", - "jest-diff": "^26.6.2", - "jest-get-type": "^26.3.0", - "jest-haste-map": "^26.6.2", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-resolve": "^26.6.2", - "natural-compare": "^1.4.0", - "pretty-format": "^26.6.2", - "semver": "^7.3.2" - } - }, - "jest-validate": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", - "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", - "dev": true, - "requires": { - "@jest/types": "^26.6.2", - "camelcase": "^6.0.0", - "chalk": "^4.0.0", - "jest-get-type": "^26.3.0", - "leven": "^3.1.0", - "pretty-format": "^26.6.2" - } - }, - "jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "dependencies": { - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true - } - } - }, - "read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, - "requires": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - } - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "throat": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", - "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", - "dev": true - }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "requires": { - "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" - } - } + "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz", + "integrity": "sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=", + "dev": true + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "requires": { + "has-symbols": "^1.0.2" } }, - "jest-cli": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.3.1.tgz", - "integrity": "sha512-WHnCqpfK+6EvT62me6WVs8NhtbjAS4/6vZJnk7/2+oOr50cwAzG4Wxt6RXX0hu6m1169ZGMlhYYUNeKBXCph/Q==", + "is-touch-device": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-touch-device/-/is-touch-device-1.0.1.tgz", + "integrity": "sha512-LAYzo9kMT1b2p19L/1ATGt2XcSilnzNlyvq6c0pbPRVisLbAPpLqr53tIJS00kvrTkj0HtR8U7+u8X0yR8lPSw==" + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", "dev": true, - "peer": true, "requires": { - "@jest/core": "^27.3.1", - "@jest/test-result": "^27.3.1", - "@jest/types": "^27.2.5", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "import-local": "^3.0.2", - "jest-config": "^27.3.1", - "jest-util": "^27.3.1", - "jest-validate": "^27.3.1", - "prompts": "^2.0.1", - "yargs": "^16.2.0" + "unc-path-regex": "^0.1.2" + } + }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-weakref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", + "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", + "requires": { + "call-bind": "^1.0.0" + } + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "optional": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.2.tgz", + "integrity": "sha512-o5+eTUYzCJ11/+JhW5/FUCdfsdoYVdQ/8I/OveE2XsjehYn5DdeSnNQAbjYaO8gQ6hvGTN6GM6ddQqpTVG5j8g==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "requires": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + } + }, + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" }, "dependencies": { - "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "peer": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "peer": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "peer": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "peer": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "peer": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true - }, - "jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - } + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "requires": { "has-flag": "^4.0.0" } } } }, - "jest-config": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.3.1.tgz", - "integrity": "sha512-KY8xOIbIACZ/vdYCKSopL44I0xboxC751IX+DXL2+Wx6DKNycyEfV3rryC3BPm5Uq/BBqDoMrKuqLEUNJmMKKg==", + "istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, - "peer": true, "requires": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^27.3.1", - "@jest/types": "^27.2.5", - "babel-jest": "^27.3.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.1", - "graceful-fs": "^4.2.4", - "jest-circus": "^27.3.1", - "jest-environment-jsdom": "^27.3.1", - "jest-environment-node": "^27.3.1", - "jest-get-type": "^27.3.1", - "jest-jasmine2": "^27.3.1", - "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.3.1", - "jest-runner": "^27.3.1", - "jest-util": "^27.3.1", - "jest-validate": "^27.3.1", - "micromatch": "^4.0.4", - "pretty-format": "^27.3.1" + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" }, "dependencies": { - "@jest/environment": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.3.1.tgz", - "integrity": "sha512-BCKCj4mOVLme6Tanoyc9k0ultp3pnmuyHw73UHRPeeZxirsU/7E3HC4le/VDb/SMzE1JcPnto+XBKFOcoiJzVw==", - "dev": true, - "peer": true, - "requires": { - "@jest/fake-timers": "^27.3.1", - "@jest/types": "^27.2.5", - "@types/node": "*", - "jest-mock": "^27.3.0" - } - }, - "@jest/fake-timers": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.3.1.tgz", - "integrity": "sha512-M3ZFgwwlqJtWZ+QkBG5NmC23A9w+A6ZxNsO5nJxJsKYt4yguBd3i8TpjQz5NfCX91nEve1KqD9RA2Q+Q1uWqoA==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^27.2.5", - "@sinonjs/fake-timers": "^8.0.1", - "@types/node": "*", - "jest-message-util": "^27.3.1", - "jest-mock": "^27.3.0", - "jest-util": "^27.3.1" - } - }, - "@jest/transform": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.3.1.tgz", - "integrity": "sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==", - "dev": true, - "peer": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.2.5", - "babel-plugin-istanbul": "^6.0.0", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", - "jest-regex-util": "^27.0.6", - "jest-util": "^27.3.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.1", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - } - }, - "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "peer": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@sinonjs/fake-timers": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz", - "integrity": "sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==", - "dev": true, - "peer": true, - "requires": { - "@sinonjs/commons": "^1.7.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "peer": true, - "requires": { - "@types/yargs-parser": "*" - } + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "istanbul-reports": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.5.tgz", + "integrity": "sha512-5+19PlhnGabNWB7kOFnuxT8H3T/iIyQzIbQMxXsURmmvKg86P2sbkrGOT77VnHw0Qr0gc2XzRaRfMZYYbSQCJQ==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jest": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.3.tgz", + "integrity": "sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==", + "dev": true, + "requires": { + "@jest/core": "^26.6.3", + "import-local": "^3.0.2", + "jest-cli": "^26.6.3" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "peer": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "babel-jest": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.3.1.tgz", - "integrity": "sha512-SjIF8hh/ir0peae2D6S6ZKRhUy7q/DnpH7k/V6fT4Bgs/LXXUztOpX4G2tCgq8mLo5HA9mN6NmlFMeYtKmIsTQ==", - "dev": true, - "peer": true, - "requires": { - "@jest/transform": "^27.3.1", - "@jest/types": "^27.2.5", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.0.0", - "babel-preset-jest": "^27.2.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "slash": "^3.0.0" - } - }, - "babel-plugin-jest-hoist": { - "version": "27.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.2.0.tgz", - "integrity": "sha512-TOux9khNKdi64mW+0OIhcmbAn75tTlzKhxmiNXevQaPbrBYK7YKjP1jl6NHTJ6XR5UgUrJbCnWlKVnJn29dfjw==", - "dev": true, - "peer": true, - "requires": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", - "@types/babel__traverse": "^7.0.6" - } - }, - "babel-preset-jest": { - "version": "27.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.2.0.tgz", - "integrity": "sha512-z7MgQ3peBwN5L5aCqBKnF6iqdlvZvFUQynEhu0J+X9nHLU72jO3iY331lcYrg+AssJ8q7xsv5/3AICzVmJ/wvg==", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "requires": { - "babel-plugin-jest-hoist": "^27.2.0", - "babel-preset-current-node-syntax": "^1.0.0" + "color-convert": "^2.0.1" } }, "chalk": { @@ -48423,18 +10094,27 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "requires": { "color-name": "~1.1.4" } @@ -48443,320 +10123,274 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "dev": true }, - "diff-sequences": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", - "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==", - "dev": true, - "peer": true + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true }, - "expect": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.3.1.tgz", - "integrity": "sha512-MrNXV2sL9iDRebWPGOGFdPQRl2eDQNu/uhxIMShjjx74T6kC6jFIkmQ6OqXDtevjGUkyB2IT56RzDBqXf/QPCg==", + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, - "peer": true, "requires": { - "@jest/types": "^27.2.5", - "ansi-styles": "^5.0.0", - "jest-get-type": "^27.3.1", - "jest-matcher-utils": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-regex-util": "^27.0.6" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "peer": true - } + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" } }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true + "dev": true }, - "jest-circus": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.3.1.tgz", - "integrity": "sha512-v1dsM9II6gvXokgqq6Yh2jHCpfg7ZqV4jWY66u7npz24JnhP3NHxI0sKT7+ZMQ7IrOWHYAaeEllOySbDbWsiXw==", - "dev": true, - "peer": true, - "requires": { - "@jest/environment": "^27.3.1", - "@jest/test-result": "^27.3.1", - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "expect": "^27.3.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.3.1", - "jest-matcher-utils": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-runtime": "^27.3.1", - "jest-snapshot": "^27.3.1", - "jest-util": "^27.3.1", - "pretty-format": "^27.3.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3", - "throat": "^6.0.1" - } - }, - "jest-diff": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.3.1.tgz", - "integrity": "sha512-PCeuAH4AWUo2O5+ksW4pL9v5xJAcIKPUPfIhZBcG1RKv/0+dvaWTQK1Nrau8d67dp65fOqbeMdoil+6PedyEPQ==", - "dev": true, - "peer": true, - "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^27.0.6", - "jest-get-type": "^27.3.1", - "pretty-format": "^27.3.1" - } + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true }, - "jest-each": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.3.1.tgz", - "integrity": "sha512-E4SwfzKJWYcvOYCjOxhZcxwL+AY0uFMvdCOwvzgutJiaiodFjkxQQDxHm8FQBeTqDnSmKsQWn7ldMRzTn2zJaQ==", + "jest-cli": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz", + "integrity": "sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==", "dev": true, - "peer": true, "requires": { - "@jest/types": "^27.2.5", + "@jest/core": "^26.6.3", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", "chalk": "^4.0.0", - "jest-get-type": "^27.3.1", - "jest-util": "^27.3.1", - "pretty-format": "^27.3.1" + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "import-local": "^3.0.2", + "is-ci": "^2.0.0", + "jest-config": "^26.6.3", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "prompts": "^2.0.1", + "yargs": "^15.4.1" } }, - "jest-environment-node": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.3.1.tgz", - "integrity": "sha512-T89F/FgkE8waqrTSA7/ydMkcc52uYPgZZ6q8OaZgyiZkJb5QNNCF6oPZjH9IfPFfcc9uBWh1574N0kY0pSvTXw==", + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, - "peer": true, "requires": { - "@jest/environment": "^27.3.1", - "@jest/fake-timers": "^27.3.1", - "@jest/types": "^27.2.5", - "@types/node": "*", - "jest-mock": "^27.3.0", - "jest-util": "^27.3.1" + "p-locate": "^4.1.0" } }, - "jest-get-type": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.3.1.tgz", - "integrity": "sha512-+Ilqi8hgHSAdhlQ3s12CAVNd8H96ZkQBfYoXmArzZnOfAtVAJEiPDBirjByEblvG/4LPJmkL+nBqPO3A1YJAEg==", - "dev": true, - "peer": true - }, - "jest-haste-map": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", - "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, - "peer": true, "requires": { - "@jest/types": "^27.2.5", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.3.2", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.0.6", - "jest-serializer": "^27.0.6", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" + "p-limit": "^2.2.0" } }, - "jest-matcher-utils": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.3.1.tgz", - "integrity": "sha512-hX8N7zXS4k+8bC1Aj0OWpGb7D3gIXxYvPNK1inP5xvE4ztbz3rc4AkI6jGVaerepBnfWB17FL5lWFJT3s7qo8w==", + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, - "peer": true, "requires": { - "chalk": "^4.0.0", - "jest-diff": "^27.3.1", - "jest-get-type": "^27.3.1", - "pretty-format": "^27.3.1" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" } }, - "jest-mock": { - "version": "27.3.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.3.0.tgz", - "integrity": "sha512-ziZiLk0elZOQjD08bLkegBzv5hCABu/c8Ytx45nJKkysQwGaonvmTxwjLqEA4qGdasq9o2I8/HtdGMNnVsMTGw==", + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, - "peer": true, "requires": { - "@jest/types": "^27.2.5", - "@types/node": "*" + "ansi-regex": "^5.0.1" } }, - "jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", - "dev": true, - "peer": true - }, - "jest-serializer": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", - "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "requires": { - "@types/node": "*", - "graceful-fs": "^4.2.4" + "has-flag": "^4.0.0" } }, - "jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, - "peer": true, "requires": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" } }, - "pretty-format": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz", - "integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==", + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", "dev": true, - "peer": true, "requires": { - "@jest/types": "^27.2.5", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "peer": true - } + "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" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "peer": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "dev": true, - "peer": true, "requires": { - "has-flag": "^4.0.0" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" } } } }, - "jest-dev-server": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/jest-dev-server/-/jest-dev-server-5.0.3.tgz", - "integrity": "sha512-aJR3a5KdY18Lsz+VbREKwx2HM3iukiui+J9rlv9o6iYTwZCSsJazSTStcD9K1q0AIF3oA+FqLOKDyo/sc7+fJw==", + "jest-changed-files": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.6.2.tgz", + "integrity": "sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==", "dev": true, "requires": { - "chalk": "^4.1.1", - "cwd": "^0.10.0", - "find-process": "^1.4.4", - "prompts": "^2.4.1", - "spawnd": "^5.0.0", - "tree-kill": "^1.2.2", - "wait-on": "^5.3.0" + "@jest/types": "^26.6.2", + "execa": "^4.0.0", + "throat": "^5.0.0" }, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "requires": { - "color-convert": "^2.0.1" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" } }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", "dev": true, "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" } }, - "color-convert": { + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "is-stream": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, "requires": { - "color-name": "~1.1.4" + "path-key": "^3.0.0" } }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "requires": { - "has-flag": "^4.0.0" + "isexe": "^2.0.0" } } } }, - "jest-diff": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", - "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", + "jest-circus": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-26.6.3.tgz", + "integrity": "sha512-ACrpWZGcQMpbv13XbzRzpytEJlilP/Su0JtNCi5r/xLpOUhnaIJr8leYYpLEMgPFURZISEHrnnpmB54Q/UziPw==", "dev": true, "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/babel__traverse": "^7.0.4", + "@types/node": "*", "chalk": "^4.0.0", - "diff-sequences": "^26.6.2", - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^26.6.2", + "is-generator-fn": "^2.0.0", + "jest-each": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "pretty-format": "^26.6.2", + "stack-utils": "^2.0.2", + "throat": "^5.0.0" }, "dependencies": { "ansi-styles": { @@ -48810,26 +10444,29 @@ } } }, - "jest-docblock": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.0.6.tgz", - "integrity": "sha512-Fid6dPcjwepTFraz0YxIMCi7dejjJ/KL9FBjPYhBp4Sv1Y9PdhImlKZqYU555BlN4TQKaTc+F2Av1z+anVyGkA==", - "dev": true, - "peer": true, - "requires": { - "detect-newline": "^3.0.0" - } - }, - "jest-each": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-26.6.2.tgz", - "integrity": "sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==", + "jest-config": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz", + "integrity": "sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==", "dev": true, "requires": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^26.6.3", "@jest/types": "^26.6.2", + "babel-jest": "^26.6.3", "chalk": "^4.0.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.4", + "jest-environment-jsdom": "^26.6.2", + "jest-environment-node": "^26.6.2", "jest-get-type": "^26.3.0", + "jest-jasmine2": "^26.6.3", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "micromatch": "^4.0.2", "pretty-format": "^26.6.2" }, "dependencies": { @@ -48867,6 +10504,12 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -48884,90 +10527,26 @@ } } }, - "jest-environment-jsdom": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.3.1.tgz", - "integrity": "sha512-3MOy8qMzIkQlfb3W1TfrD7uZHj+xx8Olix5vMENkj5djPmRqndMaXtpnaZkxmxM+Qc3lo+yVzJjzuXbCcZjAlg==", + "jest-dev-server": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/jest-dev-server/-/jest-dev-server-5.0.3.tgz", + "integrity": "sha512-aJR3a5KdY18Lsz+VbREKwx2HM3iukiui+J9rlv9o6iYTwZCSsJazSTStcD9K1q0AIF3oA+FqLOKDyo/sc7+fJw==", "dev": true, - "peer": true, "requires": { - "@jest/environment": "^27.3.1", - "@jest/fake-timers": "^27.3.1", - "@jest/types": "^27.2.5", - "@types/node": "*", - "jest-mock": "^27.3.0", - "jest-util": "^27.3.1", - "jsdom": "^16.6.0" + "chalk": "^4.1.1", + "cwd": "^0.10.0", + "find-process": "^1.4.4", + "prompts": "^2.4.1", + "spawnd": "^5.0.0", + "tree-kill": "^1.2.2", + "wait-on": "^5.3.0" }, "dependencies": { - "@jest/environment": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.3.1.tgz", - "integrity": "sha512-BCKCj4mOVLme6Tanoyc9k0ultp3pnmuyHw73UHRPeeZxirsU/7E3HC4le/VDb/SMzE1JcPnto+XBKFOcoiJzVw==", - "dev": true, - "peer": true, - "requires": { - "@jest/fake-timers": "^27.3.1", - "@jest/types": "^27.2.5", - "@types/node": "*", - "jest-mock": "^27.3.0" - } - }, - "@jest/fake-timers": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.3.1.tgz", - "integrity": "sha512-M3ZFgwwlqJtWZ+QkBG5NmC23A9w+A6ZxNsO5nJxJsKYt4yguBd3i8TpjQz5NfCX91nEve1KqD9RA2Q+Q1uWqoA==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^27.2.5", - "@sinonjs/fake-timers": "^8.0.1", - "@types/node": "*", - "jest-message-util": "^27.3.1", - "jest-mock": "^27.3.0", - "jest-util": "^27.3.1" - } - }, - "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "peer": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@sinonjs/fake-timers": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz", - "integrity": "sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==", - "dev": true, - "peer": true, - "requires": { - "@sinonjs/commons": "^1.7.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "peer": true, - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -48977,7 +10556,6 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -48988,7 +10566,6 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "requires": { "color-name": "~1.1.4" } @@ -48997,113 +10574,14 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true - }, - "jest-mock": { - "version": "27.3.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.3.0.tgz", - "integrity": "sha512-ziZiLk0elZOQjD08bLkegBzv5hCABu/c8Ytx45nJKkysQwGaonvmTxwjLqEA4qGdasq9o2I8/HtdGMNnVsMTGw==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^27.2.5", - "@types/node": "*" - } - }, - "jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - } + "dev": true }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "peer": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-environment-node": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.6.2.tgz", - "integrity": "sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==", - "dev": true, - "requires": { - "@jest/environment": "^26.6.2", - "@jest/fake-timers": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "jest-mock": "^26.6.2", - "jest-util": "^26.6.2" - } - }, - "jest-get-type": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", - "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", - "dev": true - }, - "jest-haste-map": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz", - "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==", - "dev": true, - "requires": { - "@jest/types": "^26.6.2", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.1.2", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^26.0.0", - "jest-serializer": "^26.6.2", - "jest-util": "^26.6.2", - "jest-worker": "^26.6.2", - "micromatch": "^4.0.2", - "sane": "^4.0.3", - "walker": "^1.0.7" - }, - "dependencies": { "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - } - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -49115,101 +10593,23 @@ } } }, - "jest-jasmine2": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.3.1.tgz", - "integrity": "sha512-WK11ZUetDQaC09w4/j7o4FZDUIp+4iYWH/Lik34Pv7ukL+DuXFGdnmmi7dT58J2ZYKFB5r13GyE0z3NPeyJmsg==", + "jest-diff": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", + "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", "dev": true, - "peer": true, "requires": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^27.3.1", - "@jest/source-map": "^27.0.6", - "@jest/test-result": "^27.3.1", - "@jest/types": "^27.2.5", - "@types/node": "*", "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^27.3.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.3.1", - "jest-matcher-utils": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-runtime": "^27.3.1", - "jest-snapshot": "^27.3.1", - "jest-util": "^27.3.1", - "pretty-format": "^27.3.1", - "throat": "^6.0.1" + "diff-sequences": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" }, "dependencies": { - "@jest/environment": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.3.1.tgz", - "integrity": "sha512-BCKCj4mOVLme6Tanoyc9k0ultp3pnmuyHw73UHRPeeZxirsU/7E3HC4le/VDb/SMzE1JcPnto+XBKFOcoiJzVw==", - "dev": true, - "peer": true, - "requires": { - "@jest/fake-timers": "^27.3.1", - "@jest/types": "^27.2.5", - "@types/node": "*", - "jest-mock": "^27.3.0" - } - }, - "@jest/fake-timers": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.3.1.tgz", - "integrity": "sha512-M3ZFgwwlqJtWZ+QkBG5NmC23A9w+A6ZxNsO5nJxJsKYt4yguBd3i8TpjQz5NfCX91nEve1KqD9RA2Q+Q1uWqoA==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^27.2.5", - "@sinonjs/fake-timers": "^8.0.1", - "@types/node": "*", - "jest-message-util": "^27.3.1", - "jest-mock": "^27.3.0", - "jest-util": "^27.3.1" - } - }, - "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "peer": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@sinonjs/fake-timers": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz", - "integrity": "sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==", - "dev": true, - "peer": true, - "requires": { - "@sinonjs/commons": "^1.7.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "peer": true, - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -49219,7 +10619,6 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -49230,7 +10629,6 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "requires": { "color-name": "~1.1.4" } @@ -49239,224 +10637,64 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true - }, - "diff-sequences": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", - "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==", - "dev": true, - "peer": true - }, - "expect": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.3.1.tgz", - "integrity": "sha512-MrNXV2sL9iDRebWPGOGFdPQRl2eDQNu/uhxIMShjjx74T6kC6jFIkmQ6OqXDtevjGUkyB2IT56RzDBqXf/QPCg==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^27.2.5", - "ansi-styles": "^5.0.0", - "jest-get-type": "^27.3.1", - "jest-matcher-utils": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-regex-util": "^27.0.6" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "peer": true - } - } + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true - }, - "jest-diff": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.3.1.tgz", - "integrity": "sha512-PCeuAH4AWUo2O5+ksW4pL9v5xJAcIKPUPfIhZBcG1RKv/0+dvaWTQK1Nrau8d67dp65fOqbeMdoil+6PedyEPQ==", - "dev": true, - "peer": true, - "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^27.0.6", - "jest-get-type": "^27.3.1", - "pretty-format": "^27.3.1" - } - }, - "jest-each": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.3.1.tgz", - "integrity": "sha512-E4SwfzKJWYcvOYCjOxhZcxwL+AY0uFMvdCOwvzgutJiaiodFjkxQQDxHm8FQBeTqDnSmKsQWn7ldMRzTn2zJaQ==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^27.2.5", - "chalk": "^4.0.0", - "jest-get-type": "^27.3.1", - "jest-util": "^27.3.1", - "pretty-format": "^27.3.1" - } - }, - "jest-get-type": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.3.1.tgz", - "integrity": "sha512-+Ilqi8hgHSAdhlQ3s12CAVNd8H96ZkQBfYoXmArzZnOfAtVAJEiPDBirjByEblvG/4LPJmkL+nBqPO3A1YJAEg==", - "dev": true, - "peer": true - }, - "jest-matcher-utils": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.3.1.tgz", - "integrity": "sha512-hX8N7zXS4k+8bC1Aj0OWpGb7D3gIXxYvPNK1inP5xvE4ztbz3rc4AkI6jGVaerepBnfWB17FL5lWFJT3s7qo8w==", - "dev": true, - "peer": true, - "requires": { - "chalk": "^4.0.0", - "jest-diff": "^27.3.1", - "jest-get-type": "^27.3.1", - "pretty-format": "^27.3.1" - } - }, - "jest-mock": { - "version": "27.3.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.3.0.tgz", - "integrity": "sha512-ziZiLk0elZOQjD08bLkegBzv5hCABu/c8Ytx45nJKkysQwGaonvmTxwjLqEA4qGdasq9o2I8/HtdGMNnVsMTGw==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^27.2.5", - "@types/node": "*" - } - }, - "jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", - "dev": true, - "peer": true - }, - "jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - } - }, - "pretty-format": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz", - "integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^27.2.5", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "peer": true - } - } + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "requires": { "has-flag": "^4.0.0" } } } }, - "jest-leak-detector": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.3.1.tgz", - "integrity": "sha512-78QstU9tXbaHzwlRlKmTpjP9k4Pvre5l0r8Spo4SbFFVy/4Abg9I6ZjHwjg2QyKEAMg020XcjP+UgLZIY50yEg==", + "jest-docblock": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz", + "integrity": "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==", + "dev": true, + "requires": { + "detect-newline": "^3.0.0" + } + }, + "jest-each": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-26.6.2.tgz", + "integrity": "sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==", "dev": true, - "peer": true, "requires": { - "jest-get-type": "^27.3.1", - "pretty-format": "^27.3.1" + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "jest-util": "^26.6.2", + "pretty-format": "^26.6.2" }, "dependencies": { - "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "peer": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "requires": { - "@types/yargs-parser": "*" + "color-convert": "^2.0.1" } }, - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "peer": true - }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "peer": true, - "requires": { - "color-convert": "^2.0.1" - } - } } }, "color-convert": { @@ -49464,7 +10702,6 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "requires": { "color-name": "~1.1.4" } @@ -49473,58 +10710,106 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true - }, - "jest-get-type": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.3.1.tgz", - "integrity": "sha512-+Ilqi8hgHSAdhlQ3s12CAVNd8H96ZkQBfYoXmArzZnOfAtVAJEiPDBirjByEblvG/4LPJmkL+nBqPO3A1YJAEg==", - "dev": true, - "peer": true - }, - "pretty-format": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz", - "integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^27.2.5", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - } + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "requires": { "has-flag": "^4.0.0" } } } }, - "jest-matcher-utils": { + "jest-environment-jsdom": { "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz", - "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz", + "integrity": "sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==", + "dev": true, + "requires": { + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2", + "jsdom": "^16.4.0" + } + }, + "jest-environment-node": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.6.2.tgz", + "integrity": "sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==", + "dev": true, + "requires": { + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2" + } + }, + "jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "dev": true + }, + "jest-haste-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz", + "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.1.2", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^26.0.0", + "jest-serializer": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "micromatch": "^4.0.2", + "sane": "^4.0.3", + "walker": "^1.0.7" + } + }, + "jest-jasmine2": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz", + "integrity": "sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==", "dev": true, "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^26.6.2", + "@jest/source-map": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", "chalk": "^4.0.0", - "jest-diff": "^26.6.2", - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" + "co": "^4.6.0", + "expect": "^26.6.2", + "is-generator-fn": "^2.0.0", + "jest-each": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "pretty-format": "^26.6.2", + "throat": "^5.0.0" }, "dependencies": { "ansi-styles": { @@ -49578,54 +10863,33 @@ } } }, - "jest-message-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.3.1.tgz", - "integrity": "sha512-bh3JEmxsTZ/9rTm0jQrPElbY2+y48Rw2t47uMfByNyUVR+OfPh4anuyKsGqsNkXk/TI4JbLRZx+7p7Hdt6q1yg==", + "jest-leak-detector": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz", + "integrity": "sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==", + "dev": true, + "requires": { + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + } + }, + "jest-matcher-utils": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz", + "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==", "dev": true, - "peer": true, "requires": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.2.5", - "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "micromatch": "^4.0.4", - "pretty-format": "^27.3.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" }, "dependencies": { - "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "peer": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "peer": true, - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -49635,7 +10899,6 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -49646,7 +10909,6 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "requires": { "color-name": "~1.1.4" } @@ -49655,122 +10917,47 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true - }, - "pretty-format": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz", - "integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^27.2.5", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "peer": true - } - } + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "requires": { "has-flag": "^4.0.0" } } } }, - "jest-mock": { + "jest-message-util": { "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz", - "integrity": "sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", + "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", "dev": true, "requires": { + "@babel/code-frame": "^7.0.0", "@jest/types": "^26.6.2", - "@types/node": "*" - } - }, - "jest-pnp-resolver": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", - "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", - "dev": true, - "requires": {} - }, - "jest-regex-util": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", - "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", - "dev": true - }, - "jest-resolve": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.3.1.tgz", - "integrity": "sha512-Dfzt25CFSPo3Y3GCbxynRBZzxq9AdyNN+x/v2IqYx6KVT5Z6me2Z/PsSGFSv3cOSUZqJ9pHxilao/I/m9FouLw==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^27.2.5", + "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.3.1", - "jest-validate": "^27.3.1", - "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", - "slash": "^3.0.0" + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2", + "slash": "^3.0.0", + "stack-utils": "^2.0.2" }, "dependencies": { - "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "peer": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "peer": true, - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -49780,7 +10967,6 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -49791,7 +10977,6 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "requires": { "color-name": "~1.1.4" } @@ -49800,125 +10985,68 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true - }, - "jest-haste-map": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", - "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^27.2.5", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.3.2", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.0.6", - "jest-serializer": "^27.0.6", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - } - }, - "jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", - "dev": true, - "peer": true - }, - "jest-serializer": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", - "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", - "dev": true, - "peer": true, - "requires": { - "@types/node": "*", - "graceful-fs": "^4.2.4" - } - }, - "jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - } + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "requires": { "has-flag": "^4.0.0" } } } }, - "jest-resolve-dependencies": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.3.1.tgz", - "integrity": "sha512-X7iLzY8pCiYOnvYo2YrK3P9oSE8/3N2f4pUZMJ8IUcZnT81vlSonya1KTO9ZfKGuC+svE6FHK/XOb8SsoRUV1A==", + "jest-mock": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz", + "integrity": "sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*" + } + }, + "jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "dev": true + }, + "jest-regex-util": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", + "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", + "dev": true + }, + "jest-resolve": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", + "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", "dev": true, - "peer": true, "requires": { - "@jest/types": "^27.2.5", - "jest-regex-util": "^27.0.6", - "jest-snapshot": "^27.3.1" + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" }, "dependencies": { - "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "peer": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "peer": true, - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -49928,7 +11056,6 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -49939,7 +11066,6 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "requires": { "color-name": "~1.1.4" } @@ -49948,158 +11074,134 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, - "peer": true + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, - "peer": true + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } }, - "jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, - "peer": true + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + } }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "requires": { "has-flag": "^4.0.0" } } } }, + "jest-resolve-dependencies": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz", + "integrity": "sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-snapshot": "^26.6.2" + } + }, "jest-runner": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.3.1.tgz", - "integrity": "sha512-r4W6kBn6sPr3TBwQNmqE94mPlYVn7fLBseeJfo4E2uCTmAyDFm2O5DYAQAFP7Q3YfiA/bMwg8TVsciP7k0xOww==", + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz", + "integrity": "sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==", "dev": true, - "peer": true, "requires": { - "@jest/console": "^27.3.1", - "@jest/environment": "^27.3.1", - "@jest/test-result": "^27.3.1", - "@jest/transform": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/console": "^26.6.2", + "@jest/environment": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", "@types/node": "*", "chalk": "^4.0.0", - "emittery": "^0.8.1", + "emittery": "^0.7.1", "exit": "^0.1.2", "graceful-fs": "^4.2.4", - "jest-docblock": "^27.0.6", - "jest-environment-jsdom": "^27.3.1", - "jest-environment-node": "^27.3.1", - "jest-haste-map": "^27.3.1", - "jest-leak-detector": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-resolve": "^27.3.1", - "jest-runtime": "^27.3.1", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", + "jest-config": "^26.6.3", + "jest-docblock": "^26.0.0", + "jest-haste-map": "^26.6.2", + "jest-leak-detector": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", + "jest-runtime": "^26.6.3", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", "source-map-support": "^0.5.6", - "throat": "^6.0.1" + "throat": "^5.0.0" }, "dependencies": { - "@jest/environment": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.3.1.tgz", - "integrity": "sha512-BCKCj4mOVLme6Tanoyc9k0ultp3pnmuyHw73UHRPeeZxirsU/7E3HC4le/VDb/SMzE1JcPnto+XBKFOcoiJzVw==", - "dev": true, - "peer": true, - "requires": { - "@jest/fake-timers": "^27.3.1", - "@jest/types": "^27.2.5", - "@types/node": "*", - "jest-mock": "^27.3.0" - } - }, - "@jest/fake-timers": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.3.1.tgz", - "integrity": "sha512-M3ZFgwwlqJtWZ+QkBG5NmC23A9w+A6ZxNsO5nJxJsKYt4yguBd3i8TpjQz5NfCX91nEve1KqD9RA2Q+Q1uWqoA==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^27.2.5", - "@sinonjs/fake-timers": "^8.0.1", - "@types/node": "*", - "jest-message-util": "^27.3.1", - "jest-mock": "^27.3.0", - "jest-util": "^27.3.1" - } - }, - "@jest/transform": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.3.1.tgz", - "integrity": "sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==", - "dev": true, - "peer": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.2.5", - "babel-plugin-istanbul": "^6.0.0", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", - "jest-regex-util": "^27.0.6", - "jest-util": "^27.3.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.1", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - } - }, - "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "peer": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@sinonjs/fake-timers": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz", - "integrity": "sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==", - "dev": true, - "peer": true, - "requires": { - "@sinonjs/commons": "^1.7.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "peer": true, - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -50109,7 +11211,6 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -50120,7 +11221,6 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "requires": { "color-name": "~1.1.4" } @@ -50129,110 +11229,19 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true - }, - "jest-environment-node": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.3.1.tgz", - "integrity": "sha512-T89F/FgkE8waqrTSA7/ydMkcc52uYPgZZ6q8OaZgyiZkJb5QNNCF6oPZjH9IfPFfcc9uBWh1574N0kY0pSvTXw==", - "dev": true, - "peer": true, - "requires": { - "@jest/environment": "^27.3.1", - "@jest/fake-timers": "^27.3.1", - "@jest/types": "^27.2.5", - "@types/node": "*", - "jest-mock": "^27.3.0", - "jest-util": "^27.3.1" - } - }, - "jest-haste-map": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", - "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^27.2.5", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.3.2", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.0.6", - "jest-serializer": "^27.0.6", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - } - }, - "jest-mock": { - "version": "27.3.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.3.0.tgz", - "integrity": "sha512-ziZiLk0elZOQjD08bLkegBzv5hCABu/c8Ytx45nJKkysQwGaonvmTxwjLqEA4qGdasq9o2I8/HtdGMNnVsMTGw==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^27.2.5", - "@types/node": "*" - } - }, - "jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", - "dev": true, - "peer": true - }, - "jest-serializer": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", - "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", - "dev": true, - "peer": true, - "requires": { - "@types/node": "*", - "graceful-fs": "^4.2.4" - } - }, - "jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "peer": true + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -50240,132 +11249,51 @@ } }, "jest-runtime": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.3.1.tgz", - "integrity": "sha512-qtO6VxPbS8umqhEDpjA4pqTkKQ1Hy4ZSi9mDVeE9Za7LKBo2LdW2jmT+Iod3XFaJqINikZQsn2wEi0j9wPRbLg==", - "dev": true, - "peer": true, - "requires": { - "@jest/console": "^27.3.1", - "@jest/environment": "^27.3.1", - "@jest/globals": "^27.3.1", - "@jest/source-map": "^27.0.6", - "@jest/test-result": "^27.3.1", - "@jest/transform": "^27.3.1", - "@jest/types": "^27.2.5", - "@types/yargs": "^16.0.0", + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz", + "integrity": "sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==", + "dev": true, + "requires": { + "@jest/console": "^26.6.2", + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/globals": "^26.6.2", + "@jest/source-map": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/yargs": "^15.0.0", "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", + "cjs-module-lexer": "^0.6.0", "collect-v8-coverage": "^1.0.0", - "execa": "^5.0.0", "exit": "^0.1.2", "glob": "^7.1.3", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-mock": "^27.3.0", - "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.3.1", - "jest-snapshot": "^27.3.1", - "jest-util": "^27.3.1", - "jest-validate": "^27.3.1", + "jest-config": "^26.6.3", + "jest-haste-map": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-mock": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", "slash": "^3.0.0", "strip-bom": "^4.0.0", - "yargs": "^16.2.0" + "yargs": "^15.4.1" }, "dependencies": { - "@jest/environment": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.3.1.tgz", - "integrity": "sha512-BCKCj4mOVLme6Tanoyc9k0ultp3pnmuyHw73UHRPeeZxirsU/7E3HC4le/VDb/SMzE1JcPnto+XBKFOcoiJzVw==", - "dev": true, - "peer": true, - "requires": { - "@jest/fake-timers": "^27.3.1", - "@jest/types": "^27.2.5", - "@types/node": "*", - "jest-mock": "^27.3.0" - } - }, - "@jest/fake-timers": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.3.1.tgz", - "integrity": "sha512-M3ZFgwwlqJtWZ+QkBG5NmC23A9w+A6ZxNsO5nJxJsKYt4yguBd3i8TpjQz5NfCX91nEve1KqD9RA2Q+Q1uWqoA==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^27.2.5", - "@sinonjs/fake-timers": "^8.0.1", - "@types/node": "*", - "jest-message-util": "^27.3.1", - "jest-mock": "^27.3.0", - "jest-util": "^27.3.1" - } - }, - "@jest/transform": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.3.1.tgz", - "integrity": "sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==", - "dev": true, - "peer": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.2.5", - "babel-plugin-istanbul": "^6.0.0", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", - "jest-regex-util": "^27.0.6", - "jest-util": "^27.3.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.1", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - } - }, - "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "peer": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@sinonjs/fake-timers": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz", - "integrity": "sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==", - "dev": true, - "peer": true, - "requires": { - "@sinonjs/commons": "^1.7.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "peer": true, - "requires": { - "@types/yargs-parser": "*" - } + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -50375,118 +11303,163 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "requires": { - "color-name": "~1.1.4" + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" } }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true }, - "jest-haste-map": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", - "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, - "peer": true, "requires": { - "@jest/types": "^27.2.5", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.3.2", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.0.6", - "jest-serializer": "^27.0.6", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" + "p-locate": "^4.1.0" } }, - "jest-mock": { - "version": "27.3.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.3.0.tgz", - "integrity": "sha512-ziZiLk0elZOQjD08bLkegBzv5hCABu/c8Ytx45nJKkysQwGaonvmTxwjLqEA4qGdasq9o2I8/HtdGMNnVsMTGw==", + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, - "peer": true, "requires": { - "@jest/types": "^27.2.5", - "@types/node": "*" + "p-limit": "^2.2.0" } }, - "jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", - "dev": true, - "peer": true + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true }, - "jest-serializer": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", - "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, - "peer": true, "requires": { - "@types/node": "*", - "graceful-fs": "^4.2.4" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" } }, - "jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, - "peer": true, "requires": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" + "ansi-regex": "^5.0.1" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "peer": true + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "requires": { "has-flag": "^4.0.0" } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "requires": { + "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" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } } } }, @@ -50562,92 +11535,34 @@ } }, "jest-snapshot": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.3.1.tgz", - "integrity": "sha512-APZyBvSgQgOT0XumwfFu7X3G5elj6TGhCBLbBdn3R1IzYustPGPE38F51dBWMQ8hRXa9je0vAdeVDtqHLvB6lg==", + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz", + "integrity": "sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==", "dev": true, - "peer": true, "requires": { - "@babel/core": "^7.7.2", - "@babel/generator": "^7.7.2", - "@babel/parser": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", "@babel/types": "^7.0.0", - "@jest/transform": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/types": "^26.6.2", "@types/babel__traverse": "^7.0.4", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", + "@types/prettier": "^2.0.0", "chalk": "^4.0.0", - "expect": "^27.3.1", + "expect": "^26.6.2", "graceful-fs": "^4.2.4", - "jest-diff": "^27.3.1", - "jest-get-type": "^27.3.1", - "jest-haste-map": "^27.3.1", - "jest-matcher-utils": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-resolve": "^27.3.1", - "jest-util": "^27.3.1", + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "jest-haste-map": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", "natural-compare": "^1.4.0", - "pretty-format": "^27.3.1", + "pretty-format": "^26.6.2", "semver": "^7.3.2" }, "dependencies": { - "@jest/transform": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.3.1.tgz", - "integrity": "sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==", - "dev": true, - "peer": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.2.5", - "babel-plugin-istanbul": "^6.0.0", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", - "jest-regex-util": "^27.0.6", - "jest-util": "^27.3.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.1", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - } - }, - "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "peer": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "peer": true, - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -50657,7 +11572,6 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -50668,7 +11582,6 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "requires": { "color-name": "~1.1.4" } @@ -50677,200 +11590,31 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true - }, - "diff-sequences": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", - "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==", - "dev": true, - "peer": true - }, - "expect": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.3.1.tgz", - "integrity": "sha512-MrNXV2sL9iDRebWPGOGFdPQRl2eDQNu/uhxIMShjjx74T6kC6jFIkmQ6OqXDtevjGUkyB2IT56RzDBqXf/QPCg==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^27.2.5", - "ansi-styles": "^5.0.0", - "jest-get-type": "^27.3.1", - "jest-matcher-utils": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-regex-util": "^27.0.6" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "peer": true - } - } + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true - }, - "jest-diff": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.3.1.tgz", - "integrity": "sha512-PCeuAH4AWUo2O5+ksW4pL9v5xJAcIKPUPfIhZBcG1RKv/0+dvaWTQK1Nrau8d67dp65fOqbeMdoil+6PedyEPQ==", - "dev": true, - "peer": true, - "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^27.0.6", - "jest-get-type": "^27.3.1", - "pretty-format": "^27.3.1" - } - }, - "jest-get-type": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.3.1.tgz", - "integrity": "sha512-+Ilqi8hgHSAdhlQ3s12CAVNd8H96ZkQBfYoXmArzZnOfAtVAJEiPDBirjByEblvG/4LPJmkL+nBqPO3A1YJAEg==", - "dev": true, - "peer": true - }, - "jest-haste-map": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", - "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^27.2.5", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.3.2", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.0.6", - "jest-serializer": "^27.0.6", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - } - }, - "jest-matcher-utils": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.3.1.tgz", - "integrity": "sha512-hX8N7zXS4k+8bC1Aj0OWpGb7D3gIXxYvPNK1inP5xvE4ztbz3rc4AkI6jGVaerepBnfWB17FL5lWFJT3s7qo8w==", - "dev": true, - "peer": true, - "requires": { - "chalk": "^4.0.0", - "jest-diff": "^27.3.1", - "jest-get-type": "^27.3.1", - "pretty-format": "^27.3.1" - } - }, - "jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", - "dev": true, - "peer": true - }, - "jest-serializer": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", - "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", - "dev": true, - "peer": true, - "requires": { - "@types/node": "*", - "graceful-fs": "^4.2.4" - } - }, - "jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "peer": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "pretty-format": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz", - "integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^27.2.5", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "peer": true - } - } + "dev": true }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, - "peer": true, "requires": { "lru-cache": "^6.0.0" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "peer": true - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "requires": { "has-flag": "^4.0.0" } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true, - "peer": true } } }, @@ -50940,60 +11684,39 @@ } }, "jest-validate": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.3.1.tgz", - "integrity": "sha512-3H0XCHDFLA9uDII67Bwi1Vy7AqwA5HqEEjyy934lgVhtJ3eisw6ShOF1MDmRPspyikef5MyExvIm0/TuLzZ86Q==", + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", + "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", "dev": true, - "peer": true, "requires": { - "@jest/types": "^27.2.5", - "camelcase": "^6.2.0", + "@jest/types": "^26.6.2", + "camelcase": "^6.0.0", "chalk": "^4.0.0", - "jest-get-type": "^27.3.1", + "jest-get-type": "^26.3.0", "leven": "^3.1.0", - "pretty-format": "^27.3.1" + "pretty-format": "^26.6.2" }, "dependencies": { - "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "peer": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "peer": true, - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "requires": { "color-convert": "^2.0.1" } }, + "camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "dev": true + }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -51004,7 +11727,6 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "requires": { "color-name": "~1.1.4" } @@ -51013,51 +11735,19 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true - }, - "jest-get-type": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.3.1.tgz", - "integrity": "sha512-+Ilqi8hgHSAdhlQ3s12CAVNd8H96ZkQBfYoXmArzZnOfAtVAJEiPDBirjByEblvG/4LPJmkL+nBqPO3A1YJAEg==", - "dev": true, - "peer": true - }, - "pretty-format": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz", - "integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^27.2.5", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "peer": true - } - } + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -51065,61 +11755,25 @@ } }, "jest-watcher": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.3.1.tgz", - "integrity": "sha512-9/xbV6chABsGHWh9yPaAGYVVKurWoP3ZMCv6h+O1v9/+pkOroigs6WzZ0e9gLP/njokUwM7yQhr01LKJVMkaZA==", + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz", + "integrity": "sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==", "dev": true, - "peer": true, "requires": { - "@jest/test-result": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "jest-util": "^27.3.1", + "jest-util": "^26.6.2", "string-length": "^4.0.1" }, "dependencies": { - "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "peer": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "peer": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "peer": true, - "requires": { - "type-fest": "^0.21.3" - } - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -51129,7 +11783,6 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -51140,7 +11793,6 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "requires": { "color-name": "~1.1.4" } @@ -51148,60 +11800,35 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true - }, - "jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "peer": true, - "requires": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - } + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "requires": { "has-flag": "^4.0.0" } - }, - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "peer": true } } }, "jest-worker": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.3.1.tgz", - "integrity": "sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g==", + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", "dev": true, "requires": { "@types/node": "*", "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" + "supports-color": "^7.0.0" }, "dependencies": { "has-flag": { @@ -51211,9 +11838,9 @@ "dev": true }, "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -51306,13 +11933,40 @@ "combined-stream": "^1.0.8", "mime-types": "^2.1.12" } + }, + "tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "requires": { + "punycode": "^2.1.1" + } + }, + "webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true + }, + "whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, + "requires": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + } } } }, "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true }, "json-parse-better-errors": { "version": "1.0.2", @@ -51347,6 +12001,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, "requires": { "minimist": "^1.2.5" } @@ -51368,13 +12023,10 @@ } }, "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true }, "kleur": { "version": "3.0.3", @@ -51383,9 +12035,9 @@ "dev": true }, "klona": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", - "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz", + "integrity": "sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==", "dev": true }, "known-css-properties": { @@ -51447,6 +12099,15 @@ "resolve": "^1.19.0" }, "dependencies": { + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, "findup-sync": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-4.0.0.tgz", @@ -51554,10 +12215,63 @@ "supports-color": "8.1.1" }, "dependencies": { + "colorette": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", + "dev": true + }, "commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.2.0.tgz", + "integrity": "sha512-LLKxDvHeL91/8MIyTAD5BFMNtoIwztGPMiM/7Bl8rIPmHCZXRxmSWr91h57dpOpnQ6jIUqEWdXE/uBYMfiVZDA==", + "dev": true + }, + "cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true }, "has-flag": { @@ -51566,6 +12280,48 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, "supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -51574,17 +12330,26 @@ "requires": { "has-flag": "^4.0.0" } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } } } }, "listr2": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.13.1.tgz", - "integrity": "sha512-pk4YBDA2cxtpM8iLHbz6oEsfZieJKHf6Pt19NlKaHZZVpqHyVs/Wqr7RfBBCeAFCJchGO7WQHVkUPZTvJMHk8w==", + "version": "3.12.2", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.12.2.tgz", + "integrity": "sha512-64xC2CJ/As/xgVI3wbhlPWVPx0wfTqbUAkpb7bjDi0thSWMqrf07UFhrfsGoo8YSXmF049Rp9C0cjLC8rZxK9A==", "dev": true, "requires": { "cli-truncate": "^2.1.0", - "colorette": "^2.0.16", + "colorette": "^1.4.0", "log-update": "^4.0.0", "p-map": "^4.0.0", "rxjs": "^6.6.7", @@ -51592,10 +12357,52 @@ "wrap-ansi": "^7.0.0" }, "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "colorette": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", - "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, "p-map": { @@ -51606,6 +12413,37 @@ "requires": { "aggregate-error": "^3.0.0" } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } } } }, @@ -51636,18 +12474,6 @@ "error-ex": "^1.3.1", "json-parse-better-errors": "^1.0.1" } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true } } }, @@ -51669,12 +12495,12 @@ } }, "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "requires": { - "p-locate": "^4.1.0" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" } }, "lodash": { @@ -51827,14 +12653,11 @@ "wrap-ansi": "^6.2.0" }, "dependencies": { - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "requires": { - "type-fest": "^0.21.3" - } + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true }, "ansi-styles": { "version": "4.3.0", @@ -51875,6 +12698,12 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, "restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", @@ -51885,17 +12714,6 @@ "signal-exit": "^3.0.2" } }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } - }, "string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -51907,11 +12725,14 @@ "strip-ansi": "^6.0.1" } }, - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } }, "wrap-ansi": { "version": "6.2.0", @@ -51941,13 +12762,12 @@ } }, "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "yallist": "^4.0.0" } }, "make-dir": { @@ -51966,23 +12786,15 @@ "dev": true, "requires": { "kind-of": "^6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - } } }, "makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", "dev": true, "requires": { - "tmpl": "1.0.5" + "tmpl": "1.0.x" } }, "map-cache": { @@ -52082,6 +12894,20 @@ "integrity": "sha512-pRxBna3MJe6HKnBGsDyMv8ETbptw3axEdYHoqNh7gu5oDcew8fs0xnivZGm06Ogk8zGAJ9VX+OPEr2GXEQK4dg==", "dev": true }, + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -52139,9 +12965,9 @@ "dev": true }, "mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", "dev": true }, "mdurl": { @@ -52180,6 +13006,40 @@ "yargs-parser": "^18.1.3" }, "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, "read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", @@ -52218,6 +13078,22 @@ "dev": true } } + }, + "type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "dev": true + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } } } }, @@ -52230,6 +13106,17 @@ "arr-union": "^3.1.0", "clone-deep": "^0.2.4", "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "merge-stream": { @@ -52304,9 +13191,9 @@ "dev": true }, "mini-css-extract-plugin": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.4.3.tgz", - "integrity": "sha512-zekavl9mZuGyk7COjsfFY/f655AX61EKE0AthXPrmDk+oZyjZ9WzO4WPjXnnO9xl8obK2kmM6rAQrBEmk+WK1g==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.4.2.tgz", + "integrity": "sha512-ZmqShkn79D36uerdED+9qdo1ZYG8C1YsWvXu0UMJxurZnSdgz7gQKO2EGv8T55MhDqG3DYmGtizZNpM/UbTlcA==", "dev": true, "requires": { "schema-utils": "^3.1.0" @@ -52337,7 +13224,8 @@ "minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true }, "minimist-options": { "version": "4.1.0", @@ -52355,12 +13243,6 @@ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", "dev": true - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true } } }, @@ -52413,10 +13295,13 @@ } }, "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } }, "moment": { "version": "2.29.1", @@ -52445,7 +13330,8 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, "mute-stream": { "version": "0.0.7", @@ -52482,14 +13368,6 @@ "regex-not": "^1.0.0", "snapdragon": "^0.8.1", "to-regex": "^3.0.1" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - } } }, "natural-compare": { @@ -52508,14 +13386,6 @@ "moo": "^0.5.0", "railroad-diagrams": "^1.0.0", "randexp": "0.4.6" - }, - "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - } } }, "neo-async": { @@ -52537,30 +13407,6 @@ "dev": true, "requires": { "whatwg-url": "^5.0.0" - }, - "dependencies": { - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", - "dev": true - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", - "dev": true - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", - "dev": true, - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - } } }, "node-int64": { @@ -52590,16 +13436,6 @@ "which": "^2.0.2" }, "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "optional": true, - "requires": { - "yallist": "^4.0.0" - } - }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -52619,20 +13455,14 @@ "requires": { "isexe": "^2.0.0" } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true, - "optional": true } } }, "node-releases": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", - "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.0.tgz", + "integrity": "sha512-aA87l0flFYMzCHpTM3DERFSYxc6lv/BltdbRTOMZuxZ0cwZCD3mejE5n9vLhSJCN++/eOqr77G1IO5uXxlQYWA==", + "dev": true }, "nopt": { "version": "3.0.6", @@ -52693,9 +13523,9 @@ "integrity": "sha1-rsiGr/2wRQcNhWRH32Ls+GFG7EU=" }, "npm-package-json-lint": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/npm-package-json-lint/-/npm-package-json-lint-5.4.1.tgz", - "integrity": "sha512-nFuijuczSzWEaNhjgvU2n1A3Gsn4CYZKZYum/oq2i+YOA/HB57CA6kpZrlnYf6bEKelMvsixjcN7SlUXDo0bTg==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/npm-package-json-lint/-/npm-package-json-lint-5.4.0.tgz", + "integrity": "sha512-0wNPI2+hiB8CA7gxOS2hXhupmmwEwjRITC9WCMV5Tn3sAsTDEXL+UwnVEFZNLmuxt6km0cbj9h2e8h6dRSZukw==", "dev": true, "requires": { "ajv": "^6.12.6", @@ -52749,21 +13579,25 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -52781,12 +13615,6 @@ "requires": { "has-flag": "^4.0.0" } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true } } }, @@ -52838,12 +13666,12 @@ } }, "nth-check": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", - "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", "dev": true, "requires": { - "boolbase": "^1.0.0" + "boolbase": "~1.0.0" } }, "num2fraction": { @@ -52883,41 +13711,13 @@ "is-descriptor": "^0.1.0" } }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } + "is-buffer": "^1.1.5" } } } @@ -53145,38 +13945,19 @@ "dev": true }, "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "requires": { - "yocto-queue": "^0.1.0" + "p-try": "^2.0.0" } }, "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "requires": { - "p-limit": "^2.2.0" - }, - "dependencies": { - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - } + "p-limit": "^2.0.0" } }, "p-map": { @@ -53186,10 +13967,9 @@ "dev": true }, "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" }, "parent-module": { "version": "1.0.1", @@ -53263,10 +14043,9 @@ "dev": true }, "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" }, "path-is-absolute": { "version": "1.0.1", @@ -53326,7 +14105,8 @@ "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true }, "picomatch": { "version": "2.3.0", @@ -53341,9 +14121,9 @@ "dev": true }, "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true }, "pinkie": { @@ -53416,10 +14196,10 @@ "p-limit": "^1.1.0" } }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true } } @@ -53470,10 +14250,10 @@ "p-limit": "^1.1.0" } }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true } } @@ -53526,15 +14306,6 @@ "requires": { "ms": "^2.1.1" } - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } } } }, @@ -53597,6 +14368,16 @@ } } }, + "postcss-calc": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.0.0.tgz", + "integrity": "sha512-5NglwDrcbiy8XXfPM11F3HeC6hoT9W7GUH/Zi5U/p7u3Irv4rHhdDcIZwG0llHXV4ftsBjpfWMXAnXNl4lnt8g==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + } + }, "postcss-color-functional-notation": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz", @@ -53769,6 +14550,27 @@ } } }, + "postcss-colormin": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.0.tgz", + "integrity": "sha512-+HC6GfWU3upe5/mqmxuqYZ9B2Wl4lcoUUNkoaX59nEWV4EtADCMiBqui111Bu8R8IvaZTmqmxrqOAqjbHIwXPw==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "colord": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-convert-values": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.1.tgz", + "integrity": "sha512-C3zR1Do2BkKkCgC0g3sF8TS0koF2G+mN8xxayZx3f10cIRmTaAnpgpRQZjNekTZxM2ciSPoh2IWJm0VZx8NoQg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.1.0" + } + }, "postcss-custom-media": { "version": "7.0.8", "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz", @@ -53938,6 +14740,30 @@ } } }, + "postcss-discard-comments": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz", + "integrity": "sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg==", + "dev": true + }, + "postcss-discard-duplicates": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz", + "integrity": "sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA==", + "dev": true + }, + "postcss-discard-empty": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz", + "integrity": "sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw==", + "dev": true + }, + "postcss-discard-overridden": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz", + "integrity": "sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q==", + "dev": true + }, "postcss-double-position-gradients": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz", @@ -54138,6 +14964,46 @@ } } }, + "postcss-html": { + "version": "0.36.0", + "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-0.36.0.tgz", + "integrity": "sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw==", + "dev": true, + "requires": { + "htmlparser2": "^3.10.0" + }, + "dependencies": { + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + } + } + } + }, "postcss-image-set-function": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz", @@ -54297,13 +15163,17 @@ "semver": "^7.3.4" }, "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", "dev": true, "requires": { - "yallist": "^4.0.0" + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" } }, "schema-utils": { @@ -54325,12 +15195,6 @@ "requires": { "lru-cache": "^6.0.0" } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true } } }, @@ -54406,6 +15270,108 @@ "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=", "dev": true }, + "postcss-merge-longhand": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.0.2.tgz", + "integrity": "sha512-BMlg9AXSI5G9TBT0Lo/H3PfUy63P84rVz3BjCFE9e9Y9RXQZD3+h3YO1kgTNsNJy7bBc1YQp8DmSnwLIW5VPcw==", + "dev": true, + "requires": { + "css-color-names": "^1.0.1", + "postcss-value-parser": "^4.1.0", + "stylehacks": "^5.0.1" + } + }, + "postcss-merge-rules": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.0.2.tgz", + "integrity": "sha512-5K+Md7S3GwBewfB4rjDeol6V/RZ8S+v4B66Zk2gChRqLTCC8yjnHQ601omj9TKftS19OPGqZ/XzoqpzNQQLwbg==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^2.0.1", + "postcss-selector-parser": "^6.0.5", + "vendors": "^1.0.3" + } + }, + "postcss-minify-font-values": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.0.1.tgz", + "integrity": "sha512-7JS4qIsnqaxk+FXY1E8dHBDmraYFWmuL6cgt0T1SWGRO5bzJf8sUoelwa4P88LEWJZweHevAiDKxHlofuvtIoA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-minify-gradients": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.2.tgz", + "integrity": "sha512-7Do9JP+wqSD6Prittitt2zDLrfzP9pqKs2EcLX7HJYxsxCOwrrcLt4x/ctQTsiOw+/8HYotAoqNkrzItL19SdQ==", + "dev": true, + "requires": { + "colord": "^2.6", + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-minify-params": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.0.1.tgz", + "integrity": "sha512-4RUC4k2A/Q9mGco1Z8ODc7h+A0z7L7X2ypO1B6V8057eVK6mZ6xwz6QN64nHuHLbqbclkX1wyzRnIrdZehTEHw==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.2", + "browserslist": "^4.16.0", + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0", + "uniqs": "^2.0.0" + } + }, + "postcss-minify-selectors": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.1.0.tgz", + "integrity": "sha512-NzGBXDa7aPsAcijXZeagnJBKBPMYLaJJzB8CQh6ncvyl2sIndLVWfbcDi0SBjRWk5VqEjXvf8tYwzoKf4Z07og==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.2", + "postcss-selector-parser": "^6.0.5" + } + }, + "postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true + }, + "postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.4" + } + }, + "postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0" + } + }, "postcss-nested": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.1.tgz", @@ -54448,6 +15414,100 @@ } } }, + "postcss-normalize-charset": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz", + "integrity": "sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg==", + "dev": true + }, + "postcss-normalize-display-values": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.1.tgz", + "integrity": "sha512-uupdvWk88kLDXi5HEyI9IaAJTE3/Djbcrqq8YgjvAVuzgVuqIk3SuJWUisT2gaJbZm1H9g5k2w1xXilM3x8DjQ==", + "dev": true, + "requires": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-positions": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.0.1.tgz", + "integrity": "sha512-rvzWAJai5xej9yWqlCb1OWLd9JjW2Ex2BCPzUJrbaXmtKtgfL8dBMOOMTX6TnvQMtjk3ei1Lswcs78qKO1Skrg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-repeat-style": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.1.tgz", + "integrity": "sha512-syZ2itq0HTQjj4QtXZOeefomckiV5TaUO6ReIEabCh3wgDs4Mr01pkif0MeVwKyU/LHEkPJnpwFKRxqWA/7O3w==", + "dev": true, + "requires": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-string": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.0.1.tgz", + "integrity": "sha512-Ic8GaQ3jPMVl1OEn2U//2pm93AXUcF3wz+OriskdZ1AOuYV25OdgS7w9Xu2LO5cGyhHCgn8dMXh9bO7vi3i9pA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-timing-functions": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.1.tgz", + "integrity": "sha512-cPcBdVN5OsWCNEo5hiXfLUnXfTGtSFiBU9SK8k7ii8UD7OLuznzgNRYkLZow11BkQiiqMcgPyh4ZqXEEUrtQ1Q==", + "dev": true, + "requires": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-unicode": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.1.tgz", + "integrity": "sha512-kAtYD6V3pK0beqrU90gpCQB7g6AOfP/2KIPCVBKJM2EheVsBQmx/Iof+9zR9NFKLAx4Pr9mDhogB27pmn354nA==", + "dev": true, + "requires": { + "browserslist": "^4.16.0", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-url": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.2.tgz", + "integrity": "sha512-k4jLTPUxREQ5bpajFQZpx8bCF2UrlqOTzP9kEqcEnOfwsRshWs2+oAFIHfDQB8GO2PaUaSE0NlTAYtbluZTlHQ==", + "dev": true, + "requires": { + "is-absolute-url": "^3.0.3", + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-whitespace": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.1.tgz", + "integrity": "sha512-iPklmI5SBnRvwceb/XH568yyzK0qRVuAG+a1HFUsFRf11lEJTiQQa03a4RSCQvLKdcpX7XsI1Gen9LuLoqwiqA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-ordered-values": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.0.2.tgz", + "integrity": "sha512-8AFYDSOYWebJYLyJi3fyjl6CqMEG/UVworjiyK1r573I56kb3e879sCJLGvR3merj+fAdPpVplXKQZv+ey6CgQ==", + "dev": true, + "requires": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, "postcss-overflow-shorthand": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz", @@ -54593,6 +15653,21 @@ "postcss-selector-not": "^4.0.0" }, "dependencies": { + "autoprefixer": { + "version": "9.8.8", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", + "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", + "dev": true, + "requires": { + "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" + } + }, "picocolors": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", @@ -54668,6 +15743,26 @@ } } }, + "postcss-reduce-initial": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.0.1.tgz", + "integrity": "sha512-zlCZPKLLTMAqA3ZWH57HlbCjkD55LX9dsRyxlls+wfuRfqCi5mSlZVan0heX5cHr154Dq9AfbH70LyhrSAezJw==", + "dev": true, + "requires": { + "browserslist": "^4.16.0", + "caniuse-api": "^3.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.1.tgz", + "integrity": "sha512-a//FjoPeFkRuAguPscTVmRQUODP+f3ke2HqFNgGPwdYnpeC29RZdCBvGRGTsKpMURb/I3p6jdKoBQ2zI+9Q7kA==", + "dev": true, + "requires": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, "postcss-replace-overflow-wrap": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz", @@ -54885,6 +15980,33 @@ "util-deprecate": "^1.0.2" } }, + "postcss-svgo": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.0.2.tgz", + "integrity": "sha512-YzQuFLZu3U3aheizD+B1joQ94vzPfE6BNUcSYuceNxlVnKKsOtdo6hL9/zyC168Q8EwfLSgaDSalsUGa9f2C0A==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.1.0", + "svgo": "^2.3.0" + } + }, + "postcss-syntax": { + "version": "0.36.2", + "resolved": "https://registry.npmjs.org/postcss-syntax/-/postcss-syntax-0.36.2.tgz", + "integrity": "sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==", + "dev": true + }, + "postcss-unique-selectors": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.0.1.tgz", + "integrity": "sha512-gwi1NhHV4FMmPn+qwBNuot1sG1t2OmacLQ/AX29lzyggnjd+MnVD5uqQmpXO3J17KGL2WAxQruj1qTd3H0gG/w==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.2", + "postcss-selector-parser": "^6.0.5", + "uniqs": "^2.0.0" + } + }, "postcss-value-parser": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", @@ -54909,11 +16031,10 @@ "dev": true }, "prettier": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.4.1.tgz", - "integrity": "sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==", - "dev": true, - "peer": true + "version": "npm:wp-prettier@2.2.1-beta-1", + "resolved": "https://registry.npmjs.org/wp-prettier/-/wp-prettier-2.2.1-beta-1.tgz", + "integrity": "sha512-+JHkqs9LC/JPp51yy1hzs3lQ7qeuWCwOcSzpQNeeY/G7oSpnF61vxt7hRh87zNRTr6ob2ndy0W8rVzhgrcA+Gw==", + "dev": true }, "prettier-linter-helpers": { "version": "1.0.0", @@ -54936,6 +16057,12 @@ "react-is": "^17.0.1" }, "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -54959,6 +16086,12 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true } } }, @@ -54992,13 +16125,6 @@ "loose-envify": "^1.4.0", "object-assign": "^4.1.1", "react-is": "^16.8.1" - }, - "dependencies": { - "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - } } }, "prop-types-exact": { @@ -55045,12 +16171,11 @@ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, - "puppeteer": { + "puppeteer-core": { "version": "10.4.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-10.4.0.tgz", - "integrity": "sha512-2cP8mBoqnu5gzAVpbZ0fRaobBWZM8GEUF4I1F6WbgHrKV/rz7SX8PG2wMymZgD0wo0UBlg2FBPNxlF/xlqW6+w==", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-10.4.0.tgz", + "integrity": "sha512-KU8zyb7AIOqNjLCN3wkrFXxh+EVaG+zrs2P03ATNjc3iwSxHsu5/EvZiREpQ/IJiT9xfQbDVgKcsvRuzLCxglQ==", "dev": true, - "peer": true, "requires": { "debug": "4.3.1", "devtools-protocol": "0.0.901419", @@ -55071,82 +16196,27 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, - "peer": true, "requires": { "ms": "2.1.2" } }, - "node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", - "dev": true, - "peer": true - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "peer": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "progress": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.1.tgz", - "integrity": "sha512-OE+a6vzqazc+K6LxJrX5UPyKFvGnL5CYmq2jFGNIBWHpc4QyE49/YOumcrpQFJpfejmvRtbJzgO1zPmMCqlbBg==", - "dev": true, - "peer": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, - "peer": true, "requires": { - "glob": "^7.1.3" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" } }, - "ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "dev": true, - "peer": true, - "requires": {} - } - } - }, - "puppeteer-core": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-10.4.0.tgz", - "integrity": "sha512-KU8zyb7AIOqNjLCN3wkrFXxh+EVaG+zrs2P03ATNjc3iwSxHsu5/EvZiREpQ/IJiT9xfQbDVgKcsvRuzLCxglQ==", - "dev": true, - "requires": { - "debug": "4.3.1", - "devtools-protocol": "0.0.901419", - "extract-zip": "2.0.1", - "https-proxy-agent": "5.0.0", - "node-fetch": "2.6.1", - "pkg-dir": "4.2.0", - "progress": "2.0.1", - "proxy-from-env": "1.1.0", - "rimraf": "3.0.2", - "tar-fs": "2.0.0", - "unbzip2-stream": "1.3.3", - "ws": "7.4.6" - }, - "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "requires": { - "ms": "2.1.2" + "p-locate": "^4.1.0" } }, "node-fetch": { @@ -55155,6 +16225,21 @@ "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", "dev": true }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, "pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", @@ -55183,8 +16268,7 @@ "version": "7.4.6", "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "dev": true, - "requires": {} + "dev": true } } }, @@ -55312,11 +16396,40 @@ "object-assign": "^4.1.0" } }, + "react-autosize-textarea": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/react-autosize-textarea/-/react-autosize-textarea-7.1.0.tgz", + "integrity": "sha512-BHpjCDkuOlllZn3nLazY2F8oYO1tS2jHnWhcjTWQdcKiiMU6gHLNt/fzmqMSyerR0eTdKtfSIqtSeTtghNwS+g==", + "requires": { + "autosize": "^4.0.2", + "line-height": "^0.3.1", + "prop-types": "^15.5.6" + } + }, "react-colorful": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/react-colorful/-/react-colorful-5.5.0.tgz", - "integrity": "sha512-BuzrlrM0ylg7coPkXOrRqlf2BgHLw5L44sybbr9Lg4xy7w9e5N7fGYbojOO0s8J0nvrM3PERN2rVFkvSa24lnQ==", - "requires": {} + "integrity": "sha512-BuzrlrM0ylg7coPkXOrRqlf2BgHLw5L44sybbr9Lg4xy7w9e5N7fGYbojOO0s8J0nvrM3PERN2rVFkvSa24lnQ==" + }, + "react-dates": { + "version": "17.2.0", + "resolved": "https://registry.npmjs.org/react-dates/-/react-dates-17.2.0.tgz", + "integrity": "sha512-RDlerU8DdRRrlYS0MQ7Z9igPWABGLDwz6+ykBNff67RM3Sset2TDqeuOr+R5o00Ggn5U47GeLsGcSDxlZd9cHw==", + "requires": { + "airbnb-prop-types": "^2.10.0", + "consolidated-events": "^1.1.1 || ^2.0.0", + "is-touch-device": "^1.0.1", + "lodash": "^4.1.1", + "object.assign": "^4.1.0", + "object.values": "^1.0.4", + "prop-types": "^15.6.1", + "react-addons-shallow-compare": "^15.6.2", + "react-moment-proptypes": "^1.6.0", + "react-outside-click-handler": "^1.2.0", + "react-portal": "^4.1.5", + "react-with-styles": "^3.2.0", + "react-with-styles-interface-css": "^4.0.2" + } }, "react-dom": { "version": "17.0.2", @@ -55345,9 +16458,9 @@ } }, "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "react-moment-proptypes": { "version": "1.8.1", @@ -55357,11 +16470,30 @@ "moment": ">=1.6.0" } }, + "react-outside-click-handler": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/react-outside-click-handler/-/react-outside-click-handler-1.3.0.tgz", + "integrity": "sha512-Te/7zFU0oHpAnctl//pP3hEAeobfeHMyygHB8MnjP6sX5OR8KHT1G3jmLsV3U9RnIYo+Yn+peJYWu+D5tUS8qQ==", + "requires": { + "airbnb-prop-types": "^2.15.0", + "consolidated-events": "^1.1.1 || ^2.0.0", + "document.contains": "^1.0.1", + "object.values": "^1.1.0", + "prop-types": "^15.7.2" + } + }, + "react-portal": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/react-portal/-/react-portal-4.2.1.tgz", + "integrity": "sha512-fE9kOBagwmTXZ3YGRYb4gcMy+kSA+yLO0xnPankjRlfBv4uCpFXqKPfkpsGQQR15wkZ9EssnvTOl1yMzbkxhPQ==", + "requires": { + "prop-types": "^15.5.8" + } + }, "react-resize-aware": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/react-resize-aware/-/react-resize-aware-3.1.1.tgz", - "integrity": "sha512-M8IyVLBN8D6tEUss+bxQlWte3ZYtNEGhg7rBxtCVG8yEBjUlZwUo5EFLq6tnvTZXcgAbCLjsQn+NCoTJKumRYg==", - "requires": {} + "integrity": "sha512-M8IyVLBN8D6tEUss+bxQlWte3ZYtNEGhg7rBxtCVG8yEBjUlZwUo5EFLq6tnvTZXcgAbCLjsQn+NCoTJKumRYg==" }, "react-shallow-renderer": { "version": "16.14.1", @@ -55383,13 +16515,55 @@ "react-is": "^17.0.2", "react-shallow-renderer": "^16.13.1", "scheduler": "^0.20.2" + }, + "dependencies": { + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + } } }, "react-use-gesture": { "version": "9.1.3", "resolved": "https://registry.npmjs.org/react-use-gesture/-/react-use-gesture-9.1.3.tgz", - "integrity": "sha512-CdqA2SmS/fj3kkS2W8ZU8wjTbVBAIwDWaRprX7OKaj7HlGwBasGEFggmk5qNklknqk9zK/h8D355bEJFTpqEMg==", - "requires": {} + "integrity": "sha512-CdqA2SmS/fj3kkS2W8ZU8wjTbVBAIwDWaRprX7OKaj7HlGwBasGEFggmk5qNklknqk9zK/h8D355bEJFTpqEMg==" + }, + "react-with-direction": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/react-with-direction/-/react-with-direction-1.4.0.tgz", + "integrity": "sha512-ybHNPiAmaJpoWwugwqry9Hd1Irl2hnNXlo/2SXQBwbLn/jGMauMS2y9jw+ydyX5V9ICryCqObNSthNt5R94xpg==", + "requires": { + "airbnb-prop-types": "^2.16.0", + "brcast": "^2.0.2", + "deepmerge": "^1.5.2", + "direction": "^1.0.4", + "hoist-non-react-statics": "^3.3.2", + "object.assign": "^4.1.2", + "object.values": "^1.1.5", + "prop-types": "^15.7.2" + } + }, + "react-with-styles": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/react-with-styles/-/react-with-styles-3.2.3.tgz", + "integrity": "sha512-MTI1UOvMHABRLj5M4WpODfwnveHaip6X7QUMI2x6zovinJiBXxzhA9AJP7MZNaKqg1JRFtHPXZdroUC8KcXwlQ==", + "requires": { + "hoist-non-react-statics": "^3.2.1", + "object.assign": "^4.1.0", + "prop-types": "^15.6.2", + "react-with-direction": "^1.3.0" + } + }, + "react-with-styles-interface-css": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/react-with-styles-interface-css/-/react-with-styles-interface-css-4.0.3.tgz", + "integrity": "sha512-wE43PIyjal2dexxyyx4Lhbcb+E42amoYPnkunRZkb9WTA+Z+9LagbyxwsI352NqMdFmghR0opg29dzDO4/YXbw==", + "requires": { + "array.prototype.flat": "^1.2.1", + "global-cache": "^1.2.1" + } }, "read-cache": { "version": "1.0.0", @@ -55418,111 +16592,70 @@ "normalize-package-data": "^2.3.2", "path-type": "^3.0.0" }, - "dependencies": { - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dependencies": { + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, "requires": { - "error-ex": "^1.2.0" + "pify": "^3.0.0" } - }, - "path-exists": { + } + } + }, + "read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + }, + "dependencies": { + "find-up": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { - "pinkie-promise": "^2.0.0" + "locate-path": "^2.0.0" } }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" } }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" + "p-try": "^1.0.0" } }, - "strip-bom": { + "p-locate": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { - "is-utf8": "^0.2.0" + "p-limit": "^1.1.0" } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true } } }, @@ -55569,8 +16702,7 @@ "reakit-utils": { "version": "0.15.2", "resolved": "https://registry.npmjs.org/reakit-utils/-/reakit-utils-0.15.2.tgz", - "integrity": "sha512-i/RYkq+W6hvfFmXw5QW7zvfJJT/K8a4qZ0hjA79T61JAFPGt23DsfxwyBbyK91GZrJ9HMrXFVXWMovsKBc1qEQ==", - "requires": {} + "integrity": "sha512-i/RYkq+W6hvfFmXw5QW7zvfJJT/K8a4qZ0hjA79T61JAFPGt23DsfxwyBbyK91GZrJ9HMrXFVXWMovsKBc1qEQ==" }, "reakit-warning": { "version": "0.6.2", @@ -55600,9 +16732,9 @@ } }, "redux": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/redux/-/redux-4.1.2.tgz", - "integrity": "sha512-SH8PglcebESbd/shgf6mii6EIoRM0zrQyjcuQ+ojmfxjTtE0z9Y8pa62iA/OJ58qjP6j27uyW4kUF4jl/jd6sw==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.1.1.tgz", + "integrity": "sha512-hZQZdDEM25UY2P493kPYuKqviVwZ58lEmGQNeQ+gXa+U0gYPUBf7NKYazbe3m+bs/DzM/ahN12DbF+NG8i0CWw==", "requires": { "@babel/runtime": "^7.9.2" } @@ -55814,6 +16946,14 @@ "dev": true, "requires": { "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } } }, "resolve-dir": { @@ -55824,24 +16964,12 @@ "requires": { "expand-tilde": "^1.2.2", "global-modules": "^0.2.3" - }, - "dependencies": { - "expand-tilde": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", - "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=", - "dev": true, - "requires": { - "os-homedir": "^1.0.1" - } - } } }, "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" }, "resolve-url": { "version": "0.2.1", @@ -55849,13 +16977,6 @@ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", "dev": true }, - "resolve.exports": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", - "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", - "dev": true, - "peer": true - }, "restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", @@ -55933,15 +17054,6 @@ "strip-json-comments": "^2.0.0" }, "dependencies": { - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, "postcss": { "version": "6.0.23", "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", @@ -56015,9 +17127,9 @@ } }, "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" }, "safe-json-parse": { "version": "1.0.1", @@ -56095,34 +17207,6 @@ } } }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "requires": { - "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" - } - }, "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", @@ -56146,15 +17230,6 @@ } } }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", @@ -56175,18 +17250,6 @@ } } }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -56217,12 +17280,6 @@ "remove-trailing-separator": "^1.0.1" } }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, "to-regex-range": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", @@ -56236,18 +17293,18 @@ } }, "sass": { - "version": "1.43.4", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.43.4.tgz", - "integrity": "sha512-/ptG7KE9lxpGSYiXn7Ar+lKOv37xfWsZRtFYal2QHNigyVQDx685VFT/h7ejVr+R8w7H4tmUgtulsKl5YpveOg==", + "version": "1.43.2", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.43.2.tgz", + "integrity": "sha512-DncYhjl3wBaPMMJR0kIUaH3sF536rVrOcqqVGmTZHQRRzj7LQlyGV7Mb8aCKFyILMr5VsPHwRYtyKpnKYlmQSQ==", "dev": true, "requires": { "chokidar": ">=3.0.0 <4.0.0" } }, "sass-loader": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.3.0.tgz", - "integrity": "sha512-6l9qwhdOb7qSrtOu96QQ81LVl8v6Dp9j1w3akOm0aWHyrTYtagDt5+kS32N4yq4hHk3M+rdqoRMH+lIdqvW6HA==", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.2.0.tgz", + "integrity": "sha512-qducnp5vSV+8A8MZxuH6zV0MUg4MOVISScl2wDTCAn/2WJX+9Auxh92O/rnkdR2bvi5QxZBafnzkzRrWGZvm7w==", "dev": true, "requires": { "klona": "^2.0.4", @@ -56297,7 +17354,8 @@ "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true }, "semver-compare": { "version": "1.0.0", @@ -56373,184 +17431,49 @@ } }, "lazy-cache": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", - "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=", - "dev": true - } - } - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "shell-quote": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", - "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", - "dev": true - }, - "shellwords": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", - "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", - "dev": true, - "optional": true - }, - "showdown": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/showdown/-/showdown-1.9.1.tgz", - "integrity": "sha512-9cGuS382HcvExtf5AHk7Cb4pAeQQ+h0eTr33V1mu+crYWV4KvWAw6el92bDrqGEk5d46Ai/fhbEUwqJ/mTCNEA==", - "requires": { - "yargs": "^14.2" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" - }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "requires": { - "locate-path": "^3.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - } - }, - "y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" - }, - "yargs": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz", - "integrity": "sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==", - "requires": { - "cliui": "^5.0.0", - "decamelize": "^1.2.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": "^15.0.1" - } - }, - "yargs-parser": { - "version": "15.0.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.3.tgz", - "integrity": "sha512-/MVEVjTXy/cGAjdtQf8dW3V9b97bPN7rNn8ETj6BmAQL7ibC7O1Q9SPJbGjgh3SlwoBNXMzj/ZGIj8mBgl12YA==", - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", + "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=", + "dev": true } } }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shell-quote": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", + "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", + "dev": true + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true, + "optional": true + }, + "showdown": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/showdown/-/showdown-1.9.1.tgz", + "integrity": "sha512-9cGuS382HcvExtf5AHk7Cb4pAeQQ+h0eTr33V1mu+crYWV4KvWAw6el92bDrqGEk5d46Ai/fhbEUwqJ/mTCNEA==", + "requires": { + "yargs": "^14.2" + } + }, "side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -56573,9 +17496,9 @@ "integrity": "sha512-C2WEK/Z3HoSFbYq8tI7ni3eOo/NneSPRoPpcM7WdLjFOArFuyXEjAoCdOC3DgMfRyziZQ1hCNR4mrNdWEvD0og==" }, "sirv": { - "version": "1.0.18", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.18.tgz", - "integrity": "sha512-f2AOPogZmXgJ9Ma2M22ZEhc1dNtRIzcEkiflMFeVTRq+OViOZMvH1IPMVOwrKaxpSaHioBJiDR0SluRqGa7atA==", + "version": "1.0.17", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.17.tgz", + "integrity": "sha512-qx9go5yraB7ekT7bCMqUHJ5jEaOC/GXBxUWv+jeWnb7WzHUFdcQPGWk7YmAwFBaQBrogpuSqd/azbC2lZRqqmw==", "dev": true, "requires": { "@polka/url": "^1.0.0-next.20", @@ -56596,9 +17519,9 @@ "dev": true }, "slice-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, "requires": { "ansi-styles": "^4.0.0", @@ -56629,6 +17552,12 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true } } }, @@ -56675,43 +17604,6 @@ "is-extendable": "^0.1.0" } }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -56739,6 +17631,35 @@ "requires": { "is-descriptor": "^1.0.0" } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } } } }, @@ -56749,6 +17670,17 @@ "dev": true, "requires": { "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "source-list-map": { @@ -56921,43 +17853,6 @@ "requires": { "is-descriptor": "^0.1.0" } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } } } }, @@ -56968,21 +17863,12 @@ "dev": true, "requires": { "ci-info": "^3.1.1" - } - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" }, "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "ci-info": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", + "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", "dev": true } } @@ -57001,6 +17887,23 @@ "requires": { "char-regex": "^1.0.2", "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } } }, "string-template": { @@ -57010,36 +17913,13 @@ "dev": true }, "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "requires": { + "emoji-regex": "^7.0.1", "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } + "strip-ansi": "^5.1.0" } }, "string.prototype.matchall": { @@ -57098,6 +17978,15 @@ "define-properties": "^1.1.3" } }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, "stringify-object": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", @@ -57107,21 +17996,28 @@ "get-own-enumerable-property-symbols": "^3.0.0", "is-obj": "^1.0.1", "is-regexp": "^1.0.0" + }, + "dependencies": { + "is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", + "dev": true + } } }, "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "requires": { - "ansi-regex": "^5.0.1" + "ansi-regex": "^4.1.0" } }, "strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", "dev": true }, "strip-eof": { @@ -57183,6 +18079,16 @@ "tslib": "^2.1.0" } }, + "stylehacks": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.0.1.tgz", + "integrity": "sha512-Es0rVnHIqbWzveU1b24kbw92HsebBepxfcqe5iix7t9j0PQqhs0IxXVXv0pY2Bxa08CgMkzD6OWql7kbGOuEdA==", + "dev": true, + "requires": { + "browserslist": "^4.16.0", + "postcss-selector-parser": "^6.0.4" + } + }, "stylelint": { "version": "13.13.1", "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.13.1.tgz", @@ -57239,24 +18145,11 @@ "write-file-atomic": "^3.0.3" }, "dependencies": { - "@stylelint/postcss-css-in-js": { - "version": "0.37.2", - "resolved": "https://registry.npmjs.org/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.2.tgz", - "integrity": "sha512-nEhsFoJurt8oUmieT8qy4nk81WRHmJynmVwn/Vts08PL9fhgIsMhk1GId5yAN643OzqEEb5S/6At2TZW7pqPDA==", - "dev": true, - "requires": { - "@babel/core": ">=7.9.0" - } - }, - "@stylelint/postcss-markdown": { - "version": "0.36.2", - "resolved": "https://registry.npmjs.org/@stylelint/postcss-markdown/-/postcss-markdown-0.36.2.tgz", - "integrity": "sha512-2kGbqUVJUGE8dM+bMzXG/PYUWKkjLIkRLWNh39OaADkiabDRdw8ATFCgbMz5xdIcvwspPAluSL7uY+ZiTWdWmQ==", - "dev": true, - "requires": { - "remark": "^13.0.0", - "unist-util-find-all-after": "^3.0.2" - } + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true }, "ansi-styles": { "version": "4.3.0", @@ -57267,6 +18160,21 @@ "color-convert": "^2.0.1" } }, + "autoprefixer": { + "version": "9.8.8", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", + "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", + "dev": true, + "requires": { + "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" + } + }, "balanced-match": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", @@ -57285,66 +18193,30 @@ }, "color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - }, - "dependencies": { - "domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", - "dev": true - }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true - } - } - }, - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true - }, - "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "domelementtype": "1" + "color-name": "~1.1.4" } }, - "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", "dev": true, "requires": { - "dom-serializer": "0", - "domelementtype": "1" + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" } }, "emoji-regex": { @@ -57353,11 +18225,15 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", - "dev": true + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } }, "global-modules": { "version": "2.0.0", @@ -57394,33 +18270,19 @@ "lru-cache": "^6.0.0" } }, - "htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "dev": true, - "requires": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "requires": { - "yallist": "^4.0.0" + "p-locate": "^4.1.0" } }, "meow": { @@ -57455,6 +18317,21 @@ "validate-npm-package-license": "^3.0.1" } }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, "picocolors": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", @@ -57471,22 +18348,6 @@ "source-map": "^0.6.1" } }, - "postcss-html": { - "version": "0.36.0", - "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-0.36.0.tgz", - "integrity": "sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw==", - "dev": true, - "requires": { - "htmlparser2": "^3.10.0" - } - }, - "postcss-syntax": { - "version": "0.36.2", - "resolved": "https://registry.npmjs.org/postcss-syntax/-/postcss-syntax-0.36.2.tgz", - "integrity": "sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==", - "dev": true, - "requires": {} - }, "read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", @@ -57550,6 +18411,12 @@ } } }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -57576,6 +18443,15 @@ "strip-ansi": "^6.0.1" } }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -57591,12 +18467,6 @@ "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", "dev": true }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "yargs-parser": { "version": "20.2.9", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", @@ -57609,8 +18479,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-3.0.0.tgz", "integrity": "sha512-F6yTRuc06xr1h5Qw/ykb2LuFynJ2IxkKfCMf+1xqPffkxh0S09Zc902XCffcsw/XMFq/OzQ1w54fLIDtmRNHnQ==", - "dev": true, - "requires": {} + "dev": true }, "stylelint-config-recommended-scss": { "version": "4.3.0", @@ -57625,8 +18494,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-5.0.0.tgz", "integrity": "sha512-c8aubuARSu5A3vEHLBeOSJt1udOdS+1iue7BmJDTSXoCBmfEQmmWX+59vYIj3NQdJBY6a/QRv1ozVFpaB9jaqA==", - "dev": true, - "requires": {} + "dev": true } } }, @@ -57748,6 +18616,84 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true + }, + "css-select": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", + "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^5.0.0", + "domhandler": "^4.2.0", + "domutils": "^2.6.0", + "nth-check": "^2.0.0" + } + }, + "css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + } + }, + "css-what": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", + "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", + "dev": true + }, + "dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "nth-check": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true } } }, @@ -57783,28 +18729,10 @@ "uri-js": "^4.2.2" } }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, "emoji-regex": { @@ -57813,23 +18741,18 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, "json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } - }, "string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -57840,6 +18763,15 @@ "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } } } }, @@ -57867,17 +18799,6 @@ "mkdirp": "^0.5.1", "pump": "^3.0.0", "tar-stream": "^2.0.0" - }, - "dependencies": { - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - } } }, "tar-stream": { @@ -57901,23 +18822,6 @@ "requires": { "ansi-escapes": "^4.2.1", "supports-hyperlinks": "^2.0.0" - }, - "dependencies": { - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "requires": { - "type-fest": "^0.21.3" - } - }, - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true - } } }, "terser": { @@ -57931,12 +18835,6 @@ "source-map-support": "~0.5.20" }, "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, "source-map": { "version": "0.7.3", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", @@ -57959,6 +18857,32 @@ "terser": "^5.7.2" }, "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "jest-worker": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.2.5.tgz", + "integrity": "sha512-HTjEPZtcNKZ4LnhSp02NEH4vE+5OpJ0EsOWYvGQpHgUMLngydESAAMH5Wd/asPf29+XUDQZszxpLg1BkIIA2aw==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, "schema-utils": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", @@ -57975,6 +18899,15 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, @@ -57996,11 +18929,10 @@ "dev": true }, "throat": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", - "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", - "dev": true, - "peer": true + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", + "dev": true }, "through": { "version": "2.3.8", @@ -58076,6 +19008,17 @@ "dev": true, "requires": { "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "to-regex": { @@ -58117,13 +19060,10 @@ } }, "tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, - "requires": { - "punycode": "^2.1.1" - } + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "dev": true }, "traverse": { "version": "0.6.6", @@ -58185,12 +19125,6 @@ "requires": { "minimist": "^1.2.0" } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true } } }, @@ -58243,9 +19177,9 @@ "dev": true }, "type-fest": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", - "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true }, "typedarray-to-buffer": { @@ -58257,13 +19191,6 @@ "is-typedarray": "^1.0.0" } }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "peer": true - }, "uc.micro": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", @@ -58517,8 +19444,7 @@ "use-memo-one": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/use-memo-one/-/use-memo-one-1.1.2.tgz", - "integrity": "sha512-u2qFKtxLsia/r8qG0ZKkbytbztzRb317XCkT7yP8wxL0tZ/CzK2G+WWie5vWvpyeP7+YoPIwbJoIHJ4Ba4k0oQ==", - "requires": {} + "integrity": "sha512-u2qFKtxLsia/r8qG0ZKkbytbztzRb317XCkT7yP8wxL0tZ/CzK2G+WWie5vWvpyeP7+YoPIwbJoIHJ4Ba4k0oQ==" }, "util-deprecate": { "version": "1.0.2", @@ -58550,11 +19476,10 @@ "dev": true }, "v8-to-istanbul": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.0.tgz", - "integrity": "sha512-/PRhfd8aTNp9Ggr62HPzXg2XasNFGy5PBt0Rp04du7/8GNNSgxFL6WBTkgMKSL9bFjH+8kKEG3f37FmxiTqUUA==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz", + "integrity": "sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow==", "dev": true, - "peer": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.1", "convert-source-map": "^1.6.0", @@ -58565,8 +19490,7 @@ "version": "0.7.3", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true, - "peer": true + "dev": true } } }, @@ -58676,12 +19600,12 @@ } }, "walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", "dev": true, "requires": { - "makeerror": "1.0.12" + "makeerror": "1.0.x" } }, "watchpack": { @@ -58695,15 +19619,15 @@ } }, "webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", "dev": true }, "webpack": { - "version": "5.60.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.60.0.tgz", - "integrity": "sha512-OL5GDYi2dKxnwJPSOg2tODgzDxAffN0osgWkZaBo/l3ikCxDFP+tuJT3uF7GyBE3SDBpKML/+a8EobyWAQO3DQ==", + "version": "5.58.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.58.2.tgz", + "integrity": "sha512-3S6e9Vo1W2ijk4F4PPWRIu6D/uGgqaPmqw+av3W3jLDujuNkdxX5h5c+RQ6GkjVR+WwIPOfgY8av+j5j4tMqJw==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.0", @@ -58738,13 +19662,6 @@ "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==", "dev": true }, - "acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true, - "requires": {} - }, "schema-utils": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", @@ -58851,9 +19768,9 @@ } }, "webpack-cli": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.1.tgz", - "integrity": "sha512-JYRFVuyFpzDxMDB+v/nanUdQYcZtqFPGzmlW4s+UkPMFhSpfRNmf1z4AwYcHJVdvEFAM7FFCQdNTpsBYhDLusQ==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.0.tgz", + "integrity": "sha512-n/jZZBMzVEl4PYIBs+auy2WI0WTQ74EnJDiyD98O2JZY6IVIHJNitkYp/uTXOviIOMfgzrNvC9foKv/8o8KSZw==", "dev": true, "requires": { "@discoveryjs/json-ext": "^0.5.0", @@ -58867,26 +19784,100 @@ "import-local": "^3.0.2", "interpret": "^2.2.0", "rechoir": "^0.7.0", + "v8-compile-cache": "^2.2.0", "webpack-merge": "^5.7.3" }, "dependencies": { - "colorette": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", - "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", - "dev": true - }, "commander": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true }, - "interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } } } }, @@ -58932,12 +19923,6 @@ "isobject": "^3.0.1" } }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, "shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", @@ -58983,14 +19968,11 @@ "wrap-ansi": "^7.0.0" }, "dependencies": { - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "requires": { - "type-fest": "^0.21.3" - } + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true }, "ansi-styles": { "version": "4.3.0", @@ -59026,6 +20008,12 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -59047,6 +20035,32 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -59056,11 +20070,16 @@ "has-flag": "^4.0.0" } }, - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } } } }, @@ -59108,14 +20127,13 @@ "dev": true }, "whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", "dev": true, "requires": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" } }, "which": { @@ -59168,57 +20186,13 @@ } }, "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - } + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" } }, "wrappy": { @@ -59243,8 +20217,7 @@ "version": "7.5.5", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz", "integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==", - "dev": true, - "requires": {} + "dev": true }, "xml-name-validator": { "version": "3.0.0", @@ -59259,16 +20232,14 @@ "dev": true }, "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "peer": true + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" }, "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, "yaml": { @@ -59277,65 +20248,30 @@ "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" }, "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "peer": true, + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz", + "integrity": "sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==", "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", + "cliui": "^5.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "dependencies": { - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "peer": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "peer": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "peer": true - } + "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": "^15.0.1" } }, "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, + "version": "15.0.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.3.tgz", + "integrity": "sha512-/MVEVjTXy/cGAjdtQf8dW3V9b97bPN7rNn8ETj6BmAQL7ibC7O1Q9SPJbGjgh3SlwoBNXMzj/ZGIj8mBgl12YA==", "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - } } }, "yauzl": { From 47ebc6345c71b9d2b0116c5a12472f5255249292 Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 2 Nov 2021 11:12:25 -0700 Subject: [PATCH 072/105] Replace extension-card-px-message with amp-extension-card-message --- assets/css/src/amp-admin.css | 6 +++--- assets/src/admin/amp-plugin-install.js | 2 +- assets/src/admin/theme-install/view/theme.js | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/assets/css/src/amp-admin.css b/assets/css/src/amp-admin.css index bc9760ff919..dbe215c05af 100644 --- a/assets/css/src/amp-admin.css +++ b/assets/css/src/amp-admin.css @@ -6,7 +6,7 @@ position: relative; } -.extension-card-px-message { +.amp-extension-card-message { text-align: center; padding: 0; clear: both; @@ -45,7 +45,7 @@ display: none; } -.extension-card-px-message .tooltiptext { +.amp-extension-card-message .tooltiptext { visibility: hidden; width: 60%; background-color: rgba(0, 0, 0, 0.8); @@ -69,6 +69,6 @@ border-color: transparent rgba(0, 0, 0, 0.8) transparent transparent; } -.extension-card-px-message:hover .tooltiptext { +.amp-extension-card-message:hover .tooltiptext { visibility: visible; } diff --git a/assets/src/admin/amp-plugin-install.js b/assets/src/admin/amp-plugin-install.js index a0d69419ff3..39997db5a78 100644 --- a/assets/src/admin/amp-plugin-install.js +++ b/assets/src/admin/amp-plugin-install.js @@ -73,7 +73,7 @@ const ampPluginInstall = { const iconElement = document.createElement( 'span' ); const tooltipElement = document.createElement( 'span' ); - messageElement.classList.add( 'extension-card-px-message' ); + messageElement.classList.add( 'amp-extension-card-message' ); iconElement.classList.add( 'amp-logo-icon' ); tooltipElement.classList.add( 'tooltiptext' ); diff --git a/assets/src/admin/theme-install/view/theme.js b/assets/src/admin/theme-install/view/theme.js index 5c8337a0720..8ae28d105b0 100644 --- a/assets/src/admin/theme-install/view/theme.js +++ b/assets/src/admin/theme-install/view/theme.js @@ -38,7 +38,7 @@ export default wpThemeView.extend( { const iconElement = document.createElement( 'span' ); const tooltipElement = document.createElement( 'span' ); - messageElement.classList.add( 'extension-card-px-message' ); + messageElement.classList.add( 'amp-extension-card-message' ); iconElement.classList.add( 'amp-logo-icon' ); tooltipElement.classList.add( 'tooltiptext' ); From 3082968088c91d2e4e8ffcfb5b6466f40bb9c96d Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 2 Nov 2021 11:18:59 -0700 Subject: [PATCH 073/105] Replace 'AMP' with 'Amp' for symbol readability --- assets/src/admin/amp-plugin-install.js | 10 +++---- assets/src/admin/theme-install/view/theme.js | 4 +-- src/Admin/{AMPPlugins.php => AmpPlugins.php} | 2 +- src/Admin/{AMPThemes.php => AmpThemes.php} | 2 +- src/AmpWpPlugin.php | 4 +-- ...{AMPPluginsTest.php => AmpPluginsTest.php} | 28 +++++++++---------- .../{AMPThemesTest.php => AmpThemesTest.php} | 22 +++++++-------- 7 files changed, 36 insertions(+), 36 deletions(-) rename src/Admin/{AMPPlugins.php => AmpPlugins.php} (99%) rename src/Admin/{AMPThemes.php => AmpThemes.php} (98%) rename tests/php/src/Admin/{AMPPluginsTest.php => AmpPluginsTest.php} (91%) rename tests/php/src/Admin/{AMPThemesTest.php => AmpThemesTest.php} (88%) diff --git a/assets/src/admin/amp-plugin-install.js b/assets/src/admin/amp-plugin-install.js index 39997db5a78..99dec19152b 100644 --- a/assets/src/admin/amp-plugin-install.js +++ b/assets/src/admin/amp-plugin-install.js @@ -18,13 +18,13 @@ const ampPluginInstall = { init() { this.addAmpMessage(); this.removeAdditionalInfo(); - this.addAMPMessageInSearchResult(); + this.addAmpMessageInSearchResult(); }, /** * Check if "AMP Compatible" tab is open or not. */ - isAMPCompatibleTab() { + isAmpCompatibleTab() { const queryString = window.location.search; return ( queryString && -1 !== queryString.indexOf( 'tab=amp-compatible' ) ); }, @@ -32,7 +32,7 @@ const ampPluginInstall = { /** * Add message for AMP Compatibility in AMP-compatible plugins card after search result comes in. */ - addAMPMessageInSearchResult() { + addAmpMessageInSearchResult() { const pluginInstallSearch = document.querySelector( '.plugin-install-php .wp-filter-search' ); if ( pluginInstallSearch ) { @@ -58,7 +58,7 @@ const ampPluginInstall = { * Add message for AMP Compatibility in AMP-compatible plugins card. */ addAmpMessage() { - if ( this.isAMPCompatibleTab() ) { + if ( this.isAmpCompatibleTab() ) { return; } @@ -93,7 +93,7 @@ const ampPluginInstall = { * Remove the additional info from the plugin card in the "AMP Compatible" tab. */ removeAdditionalInfo() { - if ( this.isAMPCompatibleTab() ) { + if ( this.isAmpCompatibleTab() ) { const pluginCardBottom = document.querySelectorAll( '.plugin-install-tab-amp-compatible .plugin-card-bottom' ); if ( pluginCardBottom ) { diff --git a/assets/src/admin/theme-install/view/theme.js b/assets/src/admin/theme-install/view/theme.js index 8ae28d105b0..1f581b952c7 100644 --- a/assets/src/admin/theme-install/view/theme.js +++ b/assets/src/admin/theme-install/view/theme.js @@ -33,7 +33,7 @@ export default wpThemeView.extend( { slug = data?.id; } - if ( slug && this.isAMPTheme( slug ) ) { + if ( slug && this.isAmpTheme( slug ) ) { const messageElement = document.createElement( 'div' ); const iconElement = document.createElement( 'span' ); const tooltipElement = document.createElement( 'span' ); @@ -106,7 +106,7 @@ export default wpThemeView.extend( { * @param {string} slug Theme slug. * @return {boolean} True if theme is AMP compatible, Otherwise False. */ - isAMPTheme( slug ) { + isAmpTheme( slug ) { return AMP_THEMES.includes( slug ); }, diff --git a/src/Admin/AMPPlugins.php b/src/Admin/AmpPlugins.php similarity index 99% rename from src/Admin/AMPPlugins.php rename to src/Admin/AmpPlugins.php index bc133412a35..b62eeaf064d 100644 --- a/src/Admin/AMPPlugins.php +++ b/src/Admin/AmpPlugins.php @@ -21,7 +21,7 @@ * @since 2.2 * @internal */ -class AMPPlugins implements Conditional, Delayed, Service, Registerable { +class AmpPlugins implements Conditional, Delayed, Service, Registerable { /** * Assets handle. diff --git a/src/Admin/AMPThemes.php b/src/Admin/AmpThemes.php similarity index 98% rename from src/Admin/AMPThemes.php rename to src/Admin/AmpThemes.php index 89e98b049c3..7101f2c8f89 100644 --- a/src/Admin/AMPThemes.php +++ b/src/Admin/AmpThemes.php @@ -18,7 +18,7 @@ * @since 2.2 * @internal */ -class AMPThemes implements Service, Registerable { +class AmpThemes implements Service, Registerable { /** * Assets handle. diff --git a/src/AmpWpPlugin.php b/src/AmpWpPlugin.php index 4f6ba8d7c32..d15e49e0e79 100644 --- a/src/AmpWpPlugin.php +++ b/src/AmpWpPlugin.php @@ -83,8 +83,8 @@ final class AmpWpPlugin extends ServiceBasedPlugin { 'admin.polyfills' => Admin\Polyfills::class, 'admin.user_rest_endpoint_extension' => Admin\UserRESTEndpointExtension::class, 'admin.validation_counts' => Admin\ValidationCounts::class, - 'admin.amp_plugins' => Admin\AMPPlugins::class, - 'admin.amp_themes' => Admin\AMPThemes::class, + 'admin.amp_plugins' => Admin\AmpPlugins::class, + 'admin.amp_themes' => Admin\AmpThemes::class, 'amp_slug_customization_watcher' => AmpSlugCustomizationWatcher::class, 'background_task_deactivator' => BackgroundTaskDeactivator::class, 'cli.command_namespace' => Cli\CommandNamespaceRegistration::class, diff --git a/tests/php/src/Admin/AMPPluginsTest.php b/tests/php/src/Admin/AmpPluginsTest.php similarity index 91% rename from tests/php/src/Admin/AMPPluginsTest.php rename to tests/php/src/Admin/AmpPluginsTest.php index 2c1d0a09fbe..a8ec8187f6d 100644 --- a/tests/php/src/Admin/AMPPluginsTest.php +++ b/tests/php/src/Admin/AmpPluginsTest.php @@ -1,27 +1,27 @@ instance = new AMPPlugins(); + $this->instance = new AmpPlugins(); } /** @@ -60,7 +60,7 @@ public function test_get_plugins() { $expected = array_map( static function ( $theme ) { - return AMPPlugins::normalize_plugin_data( $theme ); + return AmpPlugins::normalize_plugin_data( $theme ); }, $expected_plugins ); @@ -125,7 +125,7 @@ public function test_normalize_plugin_data() { $this->assertEquals( $expected, - AMPPlugins::normalize_plugin_data( $input ) + AmpPlugins::normalize_plugin_data( $input ) ); } @@ -134,7 +134,7 @@ public function test_normalize_plugin_data() { */ public function test_get_registration_action() { - $this->assertEquals( 'current_screen', AMPPlugins::get_registration_action() ); + $this->assertEquals( 'current_screen', AmpPlugins::get_registration_action() ); } /** @@ -143,11 +143,11 @@ public function test_get_registration_action() { public function test_is_needed() { // Test 1: None admin request. - $this->assertFalse( AMPPlugins::is_needed() ); + $this->assertFalse( AmpPlugins::is_needed() ); // Test 2: Admin request. set_current_screen( 'index.php' ); - $this->assertTrue( AMPPlugins::is_needed() ); + $this->assertTrue( AmpPlugins::is_needed() ); set_current_screen( 'front' ); } @@ -202,7 +202,7 @@ public function test_register() { */ public function test_enqueue_scripts() { $this->instance->enqueue_scripts(); - $this->assertTrue( wp_script_is( AMPPlugins::ASSET_HANDLE ) ); + $this->assertTrue( wp_script_is( AmpPlugins::ASSET_HANDLE ) ); $this->assertTrue( wp_style_is( 'amp-admin' ) ); } diff --git a/tests/php/src/Admin/AMPThemesTest.php b/tests/php/src/Admin/AmpThemesTest.php similarity index 88% rename from tests/php/src/Admin/AMPThemesTest.php rename to tests/php/src/Admin/AmpThemesTest.php index 63ae4a4fc88..9c8213cfbc6 100644 --- a/tests/php/src/Admin/AMPThemesTest.php +++ b/tests/php/src/Admin/AmpThemesTest.php @@ -1,27 +1,27 @@ instance = new AMPThemes(); + $this->instance = new AmpThemes(); } /** @@ -57,7 +57,7 @@ public function test_get_themes() { $expected = array_map( static function ( $theme ) { - return AMPThemes::normalize_theme_data( $theme ); + return AmpThemes::normalize_theme_data( $theme ); }, $expected_themes ); @@ -101,7 +101,7 @@ public function test_normalize_theme_data() { $this->assertEquals( $expected, - AMPThemes::normalize_theme_data( $input ) + AmpThemes::normalize_theme_data( $input ) ); } @@ -136,7 +136,7 @@ public function test_register_hooks() { */ public function test_enqueue_scripts() { $this->instance->enqueue_scripts(); - $this->assertTrue( wp_script_is( AMPThemes::ASSET_HANDLE ) ); + $this->assertTrue( wp_script_is( AmpThemes::ASSET_HANDLE ) ); $this->assertTrue( wp_style_is( 'amp-admin' ) ); } From b2a3dc4fa2381634a6a1839993d2deae952fa1cd Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 2 Nov 2021 11:26:16 -0700 Subject: [PATCH 074/105] Replace references to PX with AMP for now --- assets/src/admin/amp-theme-install.js | 2 +- tests/php/src/Admin/AmpPluginsTest.php | 2 +- tests/php/src/Admin/AmpThemesTest.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/assets/src/admin/amp-theme-install.js b/assets/src/admin/amp-theme-install.js index 0314043b8b3..80a7b550d59 100644 --- a/assets/src/admin/amp-theme-install.js +++ b/assets/src/admin/amp-theme-install.js @@ -19,7 +19,7 @@ const ampThemeInstall = { }, /** - * Add a new tab for PX Enhanced theme in theme install page. + * Add a new tab for AMP-compatible themes on theme install page. */ addTab() { const filterLinks = document.querySelector( '.filter-links' ); diff --git a/tests/php/src/Admin/AmpPluginsTest.php b/tests/php/src/Admin/AmpPluginsTest.php index a8ec8187f6d..b85e8a2641a 100644 --- a/tests/php/src/Admin/AmpPluginsTest.php +++ b/tests/php/src/Admin/AmpPluginsTest.php @@ -240,7 +240,7 @@ public function test_plugins_api() { $response = $this->instance->plugins_api( $response, 'query_themes', [ 'per_page' => 36 ] ); $this->assertEmpty( (array) $response ); - // Test 2: Request for PX compatible data. + // Test 2: Request for AMP-compatible data. $args = [ 'amp-compatible' => true, 'per_page' => 36, diff --git a/tests/php/src/Admin/AmpThemesTest.php b/tests/php/src/Admin/AmpThemesTest.php index 9c8213cfbc6..00e98e963c1 100644 --- a/tests/php/src/Admin/AmpThemesTest.php +++ b/tests/php/src/Admin/AmpThemesTest.php @@ -151,7 +151,7 @@ public function test_themes_api() { $response = $this->instance->themes_api( $response, 'query_themes', [ 'per_page' => 36 ] ); $this->assertEmpty( (array) $response ); - // Test 2: Request for PX compatible data. + // Test 2: Request for AMP-compatible data. $args = [ 'browse' => 'amp-compatible', 'per_page' => 36, From 7e9331d1540452961a5ce133f75b83b15cd62a6c Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 2 Nov 2021 11:29:59 -0700 Subject: [PATCH 075/105] Utilize URLSearchParams for parsing query params --- assets/src/admin/amp-plugin-install.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/assets/src/admin/amp-plugin-install.js b/assets/src/admin/amp-plugin-install.js index 99dec19152b..b6a26d1e8b5 100644 --- a/assets/src/admin/amp-plugin-install.js +++ b/assets/src/admin/amp-plugin-install.js @@ -25,8 +25,8 @@ const ampPluginInstall = { * Check if "AMP Compatible" tab is open or not. */ isAmpCompatibleTab() { - const queryString = window.location.search; - return ( queryString && -1 !== queryString.indexOf( 'tab=amp-compatible' ) ); + const queryParams = new URLSearchParams( window.location.search.substr( 1 ) ); + return queryParams.get( 'tab' ) === 'amp-compatible'; }, /** From 78fcfd28b9b841fd50836ef9cbc27811d3a5a496 Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 2 Nov 2021 11:32:47 -0700 Subject: [PATCH 076/105] Improve tooltip text --- assets/src/admin/amp-plugin-install.js | 2 +- assets/src/admin/theme-install/view/theme.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/assets/src/admin/amp-plugin-install.js b/assets/src/admin/amp-plugin-install.js index b6a26d1e8b5..b6e3901862b 100644 --- a/assets/src/admin/amp-plugin-install.js +++ b/assets/src/admin/amp-plugin-install.js @@ -78,7 +78,7 @@ const ampPluginInstall = { tooltipElement.classList.add( 'tooltiptext' ); tooltipElement.append( - __( 'This plugin follow best practice and is known to work well with AMP plugin.', 'amp' ), + __( 'This is known to work well with the AMP plugin.', 'amp' ), ); messageElement.append( iconElement ); diff --git a/assets/src/admin/theme-install/view/theme.js b/assets/src/admin/theme-install/view/theme.js index 1f581b952c7..59b2910f101 100644 --- a/assets/src/admin/theme-install/view/theme.js +++ b/assets/src/admin/theme-install/view/theme.js @@ -43,7 +43,7 @@ export default wpThemeView.extend( { tooltipElement.classList.add( 'tooltiptext' ); tooltipElement.append( - __( 'This theme is known to work well with the AMP plugin.', 'amp' ), + __( 'This is known to work well with the AMP plugin.', 'amp' ), ); messageElement.append( iconElement ); From 6630e718fc0424c88f5facdb60dc4845830f95c9 Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 2 Nov 2021 11:37:39 -0700 Subject: [PATCH 077/105] Remove AMP icon from plugin row meta --- src/Admin/AmpPlugins.php | 5 +---- tests/php/src/Admin/AmpPluginsTest.php | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/Admin/AmpPlugins.php b/src/Admin/AmpPlugins.php index b62eeaf064d..750a56acaf7 100644 --- a/src/Admin/AmpPlugins.php +++ b/src/Admin/AmpPlugins.php @@ -308,10 +308,7 @@ public function plugin_row_meta( $plugin_meta, $plugin_file, $plugin_data ) { $amp_plugins = wp_list_pluck( $this->get_plugins(), 'slug' ); if ( ! empty( $plugin_data['slug'] ) && in_array( $plugin_data['slug'], $amp_plugins, true ) ) { - $plugin_meta[] = sprintf( - ' %s', - esc_html__( 'AMP Compatible', 'amp' ) - ); + $plugin_meta[] = esc_html__( 'AMP Compatible', 'amp' ); } return $plugin_meta; diff --git a/tests/php/src/Admin/AmpPluginsTest.php b/tests/php/src/Admin/AmpPluginsTest.php index b85e8a2641a..2efda3b77ae 100644 --- a/tests/php/src/Admin/AmpPluginsTest.php +++ b/tests/php/src/Admin/AmpPluginsTest.php @@ -309,7 +309,7 @@ public function test_plugin_row_meta() { $output = $this->instance->plugin_row_meta( $plugin_meta, '', [ 'slug' => 'akismet' ] ); $this->assertContains( - ' AMP Compatible', + 'AMP Compatible', $output ); } From 46cf134fef8e99cb221e27a08d815c72fd007252 Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 2 Nov 2021 11:41:09 -0700 Subject: [PATCH 078/105] Exclude ecosystem-data from codecov --- codecov.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/codecov.yml b/codecov.yml index f705980f67a..8c1fcfcd1f6 100644 --- a/codecov.yml +++ b/codecov.yml @@ -39,3 +39,4 @@ ignore: - "/back-compat" - "/docs/**/*" - ".phpstorm.meta.php" + - "/includes/ecosystem-data/*" From afbbcd4325fcd062077a3e96d7091902672ebf7b Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 2 Nov 2021 11:44:16 -0700 Subject: [PATCH 079/105] Sort imports --- src/Admin/AmpPlugins.php | 2 +- src/AmpWpPlugin.php | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/Admin/AmpPlugins.php b/src/Admin/AmpPlugins.php index 750a56acaf7..20277bee53f 100644 --- a/src/Admin/AmpPlugins.php +++ b/src/Admin/AmpPlugins.php @@ -11,9 +11,9 @@ use AmpProject\AmpWP\Infrastructure\Delayed; use AmpProject\AmpWP\Infrastructure\Registerable; use AmpProject\AmpWP\Infrastructure\Service; -use stdClass; use WP_Screen; use function get_current_screen; +use stdClass; /** * Add new tab (AMP) in plugin install screen in WordPress admin. diff --git a/src/AmpWpPlugin.php b/src/AmpWpPlugin.php index d15e49e0e79..cc7b3077a89 100644 --- a/src/AmpWpPlugin.php +++ b/src/AmpWpPlugin.php @@ -9,6 +9,7 @@ use AmpProject\AmpWP\Admin; use AmpProject\AmpWP\BackgroundTask; +use AmpProject\AmpWP\BackgroundTask\BackgroundTaskDeactivator; use AmpProject\AmpWP\Infrastructure\Injector; use AmpProject\AmpWP\Infrastructure\ServiceBasedPlugin; use AmpProject\AmpWP\Instrumentation; @@ -22,10 +23,8 @@ use AmpProject\AmpWP\Validation\SavePostValidationEvent; use AmpProject\AmpWP\Validation\ScannableURLProvider; use AmpProject\AmpWP\Validation\URLValidationCron; -use AmpProject\AmpWP\BackgroundTask\BackgroundTaskDeactivator; use AmpProject\AmpWP\Validation\URLValidationProvider; use AmpProject\Optimizer; - use AmpProject\RemoteGetRequest; use AmpProject\RemoteRequest\FallbackRemoteGetRequest; use AmpProject\RemoteRequest\FilesystemRemoteGetRequest; From f0e5cee21d05f9231c5ac434d5707616f2dde17b Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 2 Nov 2021 12:03:14 -0700 Subject: [PATCH 080/105] Update package-lock with latest for version 1 --- package-lock.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/package-lock.json b/package-lock.json index 603e862207d..62b83b5e5f4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5436,6 +5436,15 @@ "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" + }, + "dependencies": { + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + } } }, "chownr": { From 7d07c702fb4fcfc48b22b79b8130e26b608b2276 Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 2 Nov 2021 12:04:19 -0700 Subject: [PATCH 081/105] Improve method name for filtering themes_api --- src/Admin/AmpThemes.php | 4 ++-- tests/php/src/Admin/AmpThemesTest.php | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/Admin/AmpThemes.php b/src/Admin/AmpThemes.php index 7101f2c8f89..60e7f61e901 100644 --- a/src/Admin/AmpThemes.php +++ b/src/Admin/AmpThemes.php @@ -97,7 +97,7 @@ public static function normalize_theme_data( $theme = [] ) { */ public function register() { - add_filter( 'themes_api', [ $this, 'themes_api' ], 10, 3 ); + add_filter( 'themes_api', [ $this, 'filter_themes_api' ], 10, 3 ); if ( ! wp_doing_ajax() && is_admin() ) { add_action( 'current_screen', [ $this, 'register_hooks' ] ); @@ -177,7 +177,7 @@ public function enqueue_scripts() { * * @return object List of AMP compatible plugins. */ - public function themes_api( $response, $action, $args ) { + public function filter_themes_api( $response, $action, $args ) { $args = (array) $args; if ( ! isset( $args['browse'] ) || 'amp-compatible' !== $args['browse'] ) { diff --git a/tests/php/src/Admin/AmpThemesTest.php b/tests/php/src/Admin/AmpThemesTest.php index 00e98e963c1..8eb66eb0cf1 100644 --- a/tests/php/src/Admin/AmpThemesTest.php +++ b/tests/php/src/Admin/AmpThemesTest.php @@ -114,7 +114,7 @@ public function test_register() { $this->instance->register(); - $this->assertEquals( 10, has_filter( 'themes_api', [ $this->instance, 'themes_api' ] ) ); + $this->assertEquals( 10, has_filter( 'themes_api', [ $this->instance, 'filter_themes_api' ] ) ); $this->assertEquals( 10, has_action( 'current_screen', [ $this->instance, 'register_hooks' ] ) ); set_current_screen( 'front' ); @@ -141,14 +141,14 @@ public function test_enqueue_scripts() { } /** - * @covers ::themes_api() + * @covers ::filter_themes_api() */ - public function test_themes_api() { + public function test_filter_themes_api() { $this->instance->register(); $response = new stdClass(); // Test 1: Normal request. - $response = $this->instance->themes_api( $response, 'query_themes', [ 'per_page' => 36 ] ); + $response = $this->instance->filter_themes_api( $response, 'query_themes', [ 'per_page' => 36 ] ); $this->assertEmpty( (array) $response ); // Test 2: Request for AMP-compatible data. @@ -157,7 +157,7 @@ public function test_themes_api() { 'per_page' => 36, ]; - $response = $this->instance->themes_api( $response, 'query_themes', $args ); + $response = $this->instance->filter_themes_api( $response, 'query_themes', $args ); $this->assertIsArray( $response->info ); $this->assertArrayHasKey( 'page', $response->info ); $this->assertArrayHasKey( 'pages', $response->info ); From ee710300507008d9a695ba4cdb80982f33bbd03d Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 2 Nov 2021 12:18:30 -0700 Subject: [PATCH 082/105] Add missing link text for AMP Compatible tab on Themes screen --- assets/src/admin/amp-theme-install.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/assets/src/admin/amp-theme-install.js b/assets/src/admin/amp-theme-install.js index 80a7b550d59..e9934dd156e 100644 --- a/assets/src/admin/amp-theme-install.js +++ b/assets/src/admin/amp-theme-install.js @@ -1,6 +1,7 @@ /** * WordPress dependencies */ +import { __ } from '@wordpress/i18n'; import domReady from '@wordpress/dom-ready'; /** @@ -32,6 +33,7 @@ const ampThemeInstall = { anchorElement.setAttribute( 'href', '#' ); anchorElement.setAttribute( 'data-sort', 'amp-compatible' ); + anchorElement.append( __( 'AMP Compatible', 'amp' ) ); listItem.appendChild( anchorElement ); From 3edc2274a9bb6d23b83151afa75d6a89dcfc9e3c Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 2 Nov 2021 12:35:25 -0700 Subject: [PATCH 083/105] Add amp_compatible_ecosystem_shown filter to disable integration --- src/Admin/AmpPlugins.php | 3 ++- src/Admin/AmpThemes.php | 32 +++++++++++++++++++++- tests/php/src/Admin/AmpPluginsTest.php | 16 ++++++++++- tests/php/src/Admin/AmpThemesTest.php | 37 ++++++++++++++++++++++++++ 4 files changed, 85 insertions(+), 3 deletions(-) diff --git a/src/Admin/AmpPlugins.php b/src/Admin/AmpPlugins.php index 20277bee53f..15c44a089cb 100644 --- a/src/Admin/AmpPlugins.php +++ b/src/Admin/AmpPlugins.php @@ -54,7 +54,8 @@ public static function get_registration_action() { */ public static function is_needed() { - return is_admin(); + /** This filter is documented in src/Admin/AmpThemes.php */ + return is_admin() && apply_filters( 'amp_compatible_ecosystem_shown', true, 'plugins' ); } /** diff --git a/src/Admin/AmpThemes.php b/src/Admin/AmpThemes.php index 60e7f61e901..9b1dabff1ff 100644 --- a/src/Admin/AmpThemes.php +++ b/src/Admin/AmpThemes.php @@ -7,6 +7,8 @@ namespace AmpProject\AmpWP\Admin; +use AmpProject\AmpWP\Infrastructure\Conditional; +use AmpProject\AmpWP\Infrastructure\Delayed; use AmpProject\AmpWP\Infrastructure\Registerable; use AmpProject\AmpWP\Infrastructure\Service; use WP_Screen; @@ -18,7 +20,7 @@ * @since 2.2 * @internal */ -class AmpThemes implements Service, Registerable { +class AmpThemes implements Service, Registerable, Conditional, Delayed { /** * Assets handle. @@ -34,6 +36,34 @@ class AmpThemes implements Service, Registerable { */ protected $themes = false; + /** + * Get the action to use for registering the service. + * + * @return string Registration action to use. + */ + public static function get_registration_action() { + + return 'admin_init'; + } + + /** + * Check whether the conditional object is currently needed. + * + * @return bool Whether the conditional object is needed. + */ + public static function is_needed() { + + /** + * Filters whether to show AMP compatible ecosystem in the admin. + * + * @since 2.2 + * + * @param bool $shown Whether to show AMP-compatible themes and plugins in the admin. + * @param string $type The type of ecosystem component being shown. May be either 'themes' or 'plugins'. + */ + return is_admin() && apply_filters( 'amp_compatible_ecosystem_shown', true, 'themes' ); + } + /** * Get list of AMP themes. * diff --git a/tests/php/src/Admin/AmpPluginsTest.php b/tests/php/src/Admin/AmpPluginsTest.php index 2efda3b77ae..91e2bca192a 100644 --- a/tests/php/src/Admin/AmpPluginsTest.php +++ b/tests/php/src/Admin/AmpPluginsTest.php @@ -142,13 +142,27 @@ public function test_get_registration_action() { */ public function test_is_needed() { - // Test 1: None admin request. + // Test 1: Not admin request. $this->assertFalse( AmpPlugins::is_needed() ); // Test 2: Admin request. set_current_screen( 'index.php' ); $this->assertTrue( AmpPlugins::is_needed() ); + // Test 3: Filter disables. + add_filter( + 'amp_compatible_ecosystem_shown', + static function ( $shown, $type ) { + if ( 'plugins' === $type ) { + $shown = false; + } + return $shown; + }, + 10, + 2 + ); + $this->assertFalse( AmpPlugins::is_needed() ); + set_current_screen( 'front' ); } diff --git a/tests/php/src/Admin/AmpThemesTest.php b/tests/php/src/Admin/AmpThemesTest.php index 8eb66eb0cf1..e9b2c7cce1d 100644 --- a/tests/php/src/Admin/AmpThemesTest.php +++ b/tests/php/src/Admin/AmpThemesTest.php @@ -47,6 +47,43 @@ public function setUp() { $this->instance = new AmpThemes(); } + /** + * @covers ::get_registration_action() + */ + public function test_get_registration_action() { + + $this->assertEquals( 'admin_init', AmpThemes::get_registration_action() ); + } + + /** + * @covers ::is_needed() + */ + public function test_is_needed() { + + // Test 1: Not admin request. + $this->assertFalse( AmpThemes::is_needed() ); + + // Test 2: Admin request. + set_current_screen( 'index.php' ); + $this->assertTrue( AmpThemes::is_needed() ); + + // Test 3: Filter disables. + add_filter( + 'amp_compatible_ecosystem_shown', + static function ( $shown, $type ) { + if ( 'themes' === $type ) { + $shown = false; + } + return $shown; + }, + 10, + 2 + ); + $this->assertFalse( AmpThemes::is_needed() ); + + set_current_screen( 'front' ); + } + /** * @covers ::get_themes() */ From ec437c51f8c5f0d8f07190a7547fdde7494d5f02 Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 2 Nov 2021 14:59:28 -0700 Subject: [PATCH 084/105] Add PhpUnusedParameterInspection ignorance --- src/Admin/AmpPlugins.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Admin/AmpPlugins.php b/src/Admin/AmpPlugins.php index 15c44a089cb..a82aaa576ce 100644 --- a/src/Admin/AmpPlugins.php +++ b/src/Admin/AmpPlugins.php @@ -242,7 +242,7 @@ public function tab_args() { * * @return stdClass|array List of AMP compatible plugins. */ - public function plugins_api( $response, $action, $args ) { + public function plugins_api( $response, /** @noinspection PhpUnusedParameterInspection */ $action, $args ) { $args = (array) $args; if ( ! isset( $args['amp-compatible'] ) ) { @@ -304,7 +304,7 @@ public function action_links( $actions, $plugin ) { * * @return string[] An array of the plugin's metadata */ - public function plugin_row_meta( $plugin_meta, $plugin_file, $plugin_data ) { + public function plugin_row_meta( $plugin_meta, /** @noinspection PhpUnusedParameterInspection */ $plugin_file, $plugin_data ) { $amp_plugins = wp_list_pluck( $this->get_plugins(), 'slug' ); From 03171f8627322d5923d587146b204fee5974985a Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 2 Nov 2021 15:07:45 -0700 Subject: [PATCH 085/105] Account for plugins and themes variables always being arrays --- src/Admin/AmpPlugins.php | 13 +++++++------ src/Admin/AmpThemes.php | 15 +++++++++------ 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/src/Admin/AmpPlugins.php b/src/Admin/AmpPlugins.php index a82aaa576ce..613e9708c6d 100644 --- a/src/Admin/AmpPlugins.php +++ b/src/Admin/AmpPlugins.php @@ -33,9 +33,9 @@ class AmpPlugins implements Conditional, Delayed, Service, Registerable { /** * List of AMP plugins. * - * @var array|bool + * @var array */ - protected $plugins = false; + protected $plugins = []; /** * Get the action to use for registering the service. @@ -65,7 +65,7 @@ public static function is_needed() { */ public function get_plugins() { - if ( ! is_array( $this->plugins ) ) { + if ( count( $this->plugins ) === 0 ) { $this->plugins = array_map( static function ( $plugin ) { return self::normalize_plugin_data( $plugin ); @@ -249,9 +249,10 @@ public function plugins_api( $response, /** @noinspection PhpUnusedParameterInsp return $response; } - $total_page = ceil( count( $this->get_plugins() ) / $args['per_page'] ); + $plugins = $this->get_plugins(); + $total_page = ceil( count( $plugins ) / $args['per_page'] ); $page = ( ! empty( $args['page'] ) && 0 < (int) $args['page'] ) ? (int) $args['page'] : 1; - $plugin_chunks = array_chunk( (array) $this->get_plugins(), $args['per_page'] ); + $plugin_chunks = array_chunk( $plugins, $args['per_page'] ); $plugins = ( ! empty( $plugin_chunks[ $page - 1 ] ) && is_array( $plugin_chunks[ $page - 1 ] ) ) ? $plugin_chunks[ $page - 1 ] : []; $response = new stdClass(); @@ -259,7 +260,7 @@ public function plugins_api( $response, /** @noinspection PhpUnusedParameterInsp $response->info = [ 'page' => $page, 'pages' => $total_page, - 'results' => count( $this->get_plugins() ), + 'results' => count( $plugins ), ]; return $response; diff --git a/src/Admin/AmpThemes.php b/src/Admin/AmpThemes.php index 9b1dabff1ff..6646243f32e 100644 --- a/src/Admin/AmpThemes.php +++ b/src/Admin/AmpThemes.php @@ -32,9 +32,9 @@ class AmpThemes implements Service, Registerable, Conditional, Delayed { /** * List of AMP themes. * - * @var array|bool + * @var array */ - protected $themes = false; + protected $themes = []; /** * Get the action to use for registering the service. @@ -71,7 +71,7 @@ public static function is_needed() { */ public function get_themes() { - if ( ! is_array( $this->themes ) ) { + if ( count( $this->themes ) === 0 ) { $this->themes = array_map( static function ( $theme ) { return self::normalize_theme_data( $theme ); @@ -177,14 +177,16 @@ public function enqueue_scripts() { $none_wporg = []; + $slugs = []; foreach ( $this->get_themes() as $theme ) { + $slugs[] = $theme['slug']; if ( ! isset( $theme['wporg'] ) || true !== $theme['wporg'] ) { $none_wporg[] = $theme['slug']; } } $js_data = [ - 'AMP_THEMES' => wp_list_pluck( $this->get_themes(), 'slug' ), + 'AMP_THEMES' => $slugs, 'NONE_WPORG_THEMES' => $none_wporg, ]; @@ -219,8 +221,9 @@ public function filter_themes_api( $response, $action, $args ) { $args['per_page'] = ( ! empty( $args['per_page'] ) ) ? $args['per_page'] : 36; + $themes = $this->get_themes(); $page = ( ! empty( $args['page'] ) && 0 < (int) $args['page'] ) ? (int) $args['page'] : 1; - $theme_chunks = array_chunk( (array) $this->get_themes(), $args['per_page'] ); + $theme_chunks = array_chunk( $themes, $args['per_page'] ); $themes = ( ! empty( $theme_chunks[ $page - 1 ] ) && is_array( $theme_chunks[ $page - 1 ] ) ) ? $theme_chunks[ $page - 1 ] : []; if ( 'query_themes' === $action ) { @@ -234,7 +237,7 @@ public function filter_themes_api( $response, $action, $args ) { $response->info = [ 'page' => $page, 'pages' => count( $theme_chunks ), - 'results' => count( (array) $this->get_themes() ), + 'results' => count( $themes ), ]; return $response; From 08743c68f9022c67c463f52da19e12bf2f5d1929 Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 2 Nov 2021 15:17:56 -0700 Subject: [PATCH 086/105] Sort themes and plugins alphabetically --- src/Admin/AmpPlugins.php | 7 +++++++ src/Admin/AmpThemes.php | 7 +++++++ tests/php/src/Admin/AmpPluginsTest.php | 2 +- tests/php/src/Admin/AmpThemesTest.php | 2 +- 4 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/Admin/AmpPlugins.php b/src/Admin/AmpPlugins.php index 613e9708c6d..25eb238ef97 100644 --- a/src/Admin/AmpPlugins.php +++ b/src/Admin/AmpPlugins.php @@ -72,6 +72,13 @@ static function ( $plugin ) { }, require __DIR__ . '/../../includes/ecosystem-data/plugins.php' ); + + usort( + $this->plugins, + static function ( $a, $b ) { + return strcasecmp( $a['name'], $b['name'] ); + } + ); } return $this->plugins; diff --git a/src/Admin/AmpThemes.php b/src/Admin/AmpThemes.php index 6646243f32e..aa51a8f7c83 100644 --- a/src/Admin/AmpThemes.php +++ b/src/Admin/AmpThemes.php @@ -78,6 +78,13 @@ static function ( $theme ) { }, require __DIR__ . '/../../includes/ecosystem-data/themes.php' ); + + usort( + $this->themes, + static function ( $a, $b ) { + return strcasecmp( $a['name'], $b['name'] ); + } + ); } return $this->themes; diff --git a/tests/php/src/Admin/AmpPluginsTest.php b/tests/php/src/Admin/AmpPluginsTest.php index 91e2bca192a..3868d9119b0 100644 --- a/tests/php/src/Admin/AmpPluginsTest.php +++ b/tests/php/src/Admin/AmpPluginsTest.php @@ -65,7 +65,7 @@ static function ( $theme ) { $expected_plugins ); - $this->assertEquals( $expected, $plugins ); + $this->assertEqualSets( $expected, $plugins ); } /** diff --git a/tests/php/src/Admin/AmpThemesTest.php b/tests/php/src/Admin/AmpThemesTest.php index e9b2c7cce1d..eb46746838a 100644 --- a/tests/php/src/Admin/AmpThemesTest.php +++ b/tests/php/src/Admin/AmpThemesTest.php @@ -99,7 +99,7 @@ static function ( $theme ) { $expected_themes ); - $this->assertEquals( $expected, $themes ); + $this->assertEqualSets( $expected, $themes ); } /** From 16735e31c23578d6c019368c5920ce6bcb2894e3 Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 2 Nov 2021 15:28:49 -0700 Subject: [PATCH 087/105] Add includes/ecosystem-data to PHP exclusion list --- phpunit.xml.dist | 1 + 1 file changed, 1 insertion(+) diff --git a/phpunit.xml.dist b/phpunit.xml.dist index cc195915c98..a1e0574b700 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -38,6 +38,7 @@ svn tests vendor + includes/ecosystem-data .phpstorm.meta.php From 6e552c1b34a4f6e63ee926bb75984f92c17a74cc Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 2 Nov 2021 16:30:45 -0700 Subject: [PATCH 088/105] Utilize MutationObserver to watch for card updates --- assets/src/admin/amp-plugin-install.js | 33 +++++++++++++++++++------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/assets/src/admin/amp-plugin-install.js b/assets/src/admin/amp-plugin-install.js index b6e3901862b..898ffe234f1 100644 --- a/assets/src/admin/amp-plugin-install.js +++ b/assets/src/admin/amp-plugin-install.js @@ -33,21 +33,31 @@ const ampPluginInstall = { * Add message for AMP Compatibility in AMP-compatible plugins card after search result comes in. */ addAmpMessageInSearchResult() { - const pluginInstallSearch = document.querySelector( '.plugin-install-php .wp-filter-search' ); + const pluginFilterForm = document.getElementById( 'plugin-filter' ); + if ( ! pluginFilterForm ) { + return; + } + let mutationObserver; + + const pluginInstallSearch = document.querySelector( '.plugin-install-php .wp-filter-search' ); if ( pluginInstallSearch ) { const callback = debounce( () => { - if ( 'undefined' !== typeof wp.updates.searchRequest ) { - wp.updates.searchRequest.done( () => { - const wrap = document.querySelector( '.plugin-install-tab-amp-compatible' ); - if ( wrap ) { - wrap.classList.remove( 'plugin-install-tab-amp-compatible' ); - wrap.classList.add( 'plugin-install-tab-search-result' ); - } + // Replace the class for our custom AMP-compatible tab once doing a search. + const wrap = document.querySelector( '.plugin-install-tab-amp-compatible' ); + if ( wrap ) { + wrap.classList.remove( 'plugin-install-tab-amp-compatible' ); + wrap.classList.add( 'plugin-install-tab-search-result' ); + } + + // Start watching for changes the first time a search is being made. + if ( ! mutationObserver ) { + mutationObserver = new MutationObserver( () => { this.addAmpMessage(); } ); + mutationObserver.observe( pluginFilterForm, { childList: true } ); } - }, 1500 ); + }, 1000 ); // See timeout in core: pluginInstallSearch.addEventListener( 'keyup', callback ); pluginInstallSearch.addEventListener( 'input', callback ); @@ -69,6 +79,11 @@ const ampPluginInstall = { continue; } + // Skip cards that have already been processed. + if ( pluginCardElement.classList.contains( 'amp-extension-card-message' ) ) { + continue; + } + const messageElement = document.createElement( 'div' ); const iconElement = document.createElement( 'span' ); const tooltipElement = document.createElement( 'span' ); From 15e6199109f50e98491323610ebe88060ef81d44 Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 2 Nov 2021 16:46:24 -0700 Subject: [PATCH 089/105] Only run code for plugin search results setup once --- assets/src/admin/amp-plugin-install.js | 39 ++++++++++++-------------- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/assets/src/admin/amp-plugin-install.js b/assets/src/admin/amp-plugin-install.js index 898ffe234f1..aed582bc6a7 100644 --- a/assets/src/admin/amp-plugin-install.js +++ b/assets/src/admin/amp-plugin-install.js @@ -34,34 +34,31 @@ const ampPluginInstall = { */ addAmpMessageInSearchResult() { const pluginFilterForm = document.getElementById( 'plugin-filter' ); - if ( ! pluginFilterForm ) { + const pluginInstallSearch = document.querySelector( '.plugin-install-php .wp-filter-search' ); + if ( ! pluginFilterForm || ! pluginInstallSearch ) { return; } let mutationObserver; - const pluginInstallSearch = document.querySelector( '.plugin-install-php .wp-filter-search' ); - if ( pluginInstallSearch ) { - const callback = debounce( () => { - // Replace the class for our custom AMP-compatible tab once doing a search. - const wrap = document.querySelector( '.plugin-install-tab-amp-compatible' ); - if ( wrap ) { - wrap.classList.remove( 'plugin-install-tab-amp-compatible' ); - wrap.classList.add( 'plugin-install-tab-search-result' ); - } + const startSearchResults = debounce( () => { + // Replace the class for our custom AMP-compatible tab once doing a search. + const wrap = document.querySelector( '.plugin-install-tab-amp-compatible' ); + if ( wrap ) { + wrap.classList.remove( 'plugin-install-tab-amp-compatible' ); + wrap.classList.add( 'plugin-install-tab-search-result' ); + } - // Start watching for changes the first time a search is being made. - if ( ! mutationObserver ) { - mutationObserver = new MutationObserver( () => { - this.addAmpMessage(); - } ); - mutationObserver.observe( pluginFilterForm, { childList: true } ); - } - }, 1000 ); // See timeout in core: + // Start watching for changes the first time a search is being made. + if ( ! mutationObserver ) { + mutationObserver = new MutationObserver( () => { + this.addAmpMessage(); + } ); + mutationObserver.observe( pluginFilterForm, { childList: true } ); + } + }, 1000 ); // See timeout in core: - pluginInstallSearch.addEventListener( 'keyup', callback ); - pluginInstallSearch.addEventListener( 'input', callback ); - } + pluginInstallSearch.addEventListener( 'input', startSearchResults, { once: true } ); }, /** From 25b83eb46bc5eb796cb2450762c86aabed398e3c Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 2 Nov 2021 16:49:33 -0700 Subject: [PATCH 090/105] Improve placement of isAmpCompatibleTab conditionals --- assets/src/admin/amp-plugin-install.js | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/assets/src/admin/amp-plugin-install.js b/assets/src/admin/amp-plugin-install.js index aed582bc6a7..d7fb5f12208 100644 --- a/assets/src/admin/amp-plugin-install.js +++ b/assets/src/admin/amp-plugin-install.js @@ -16,8 +16,11 @@ const ampPluginInstall = { * Init function. */ init() { - this.addAmpMessage(); - this.removeAdditionalInfo(); + if ( this.isAmpCompatibleTab() ) { + this.removeAdditionalInfo(); + } else { + this.addAmpMessage(); + } this.addAmpMessageInSearchResult(); }, @@ -65,10 +68,6 @@ const ampPluginInstall = { * Add message for AMP Compatibility in AMP-compatible plugins card. */ addAmpMessage() { - if ( this.isAmpCompatibleTab() ) { - return; - } - for ( const pluginSlug of AMP_PLUGINS ) { const pluginCardElement = document.querySelector( `.plugin-card.plugin-card-${ pluginSlug }` ); @@ -105,14 +104,9 @@ const ampPluginInstall = { * Remove the additional info from the plugin card in the "AMP Compatible" tab. */ removeAdditionalInfo() { - if ( this.isAmpCompatibleTab() ) { - const pluginCardBottom = document.querySelectorAll( '.plugin-install-tab-amp-compatible .plugin-card-bottom' ); - - if ( pluginCardBottom ) { - for ( const elementNode of pluginCardBottom ) { - elementNode.remove(); - } - } + const pluginCardBottom = document.querySelectorAll( '.plugin-install-tab-amp-compatible .plugin-card-bottom' ); + for ( const elementNode of pluginCardBottom ) { + elementNode.remove(); } }, }; From c64ff0e798c4d6cd8d0f535fc041d2c184364392 Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 2 Nov 2021 17:00:06 -0700 Subject: [PATCH 091/105] Simplify logic considering once events --- assets/src/admin/amp-plugin-install.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/assets/src/admin/amp-plugin-install.js b/assets/src/admin/amp-plugin-install.js index d7fb5f12208..b77fd21147a 100644 --- a/assets/src/admin/amp-plugin-install.js +++ b/assets/src/admin/amp-plugin-install.js @@ -26,6 +26,8 @@ const ampPluginInstall = { /** * Check if "AMP Compatible" tab is open or not. + * + * @return {boolean} Is AMP-compatible tab. */ isAmpCompatibleTab() { const queryParams = new URLSearchParams( window.location.search.substr( 1 ) ); @@ -42,9 +44,9 @@ const ampPluginInstall = { return; } - let mutationObserver; - const startSearchResults = debounce( () => { + pluginInstallSearch.removeEventListener( 'input', startSearchResults, { once: true } ); // For IE 11 which doesn't support once events. + // Replace the class for our custom AMP-compatible tab once doing a search. const wrap = document.querySelector( '.plugin-install-tab-amp-compatible' ); if ( wrap ) { @@ -53,12 +55,10 @@ const ampPluginInstall = { } // Start watching for changes the first time a search is being made. - if ( ! mutationObserver ) { - mutationObserver = new MutationObserver( () => { - this.addAmpMessage(); - } ); - mutationObserver.observe( pluginFilterForm, { childList: true } ); - } + const mutationObserver = new MutationObserver( () => { + this.addAmpMessage(); + } ); + mutationObserver.observe( pluginFilterForm, { childList: true } ); }, 1000 ); // See timeout in core: pluginInstallSearch.addEventListener( 'input', startSearchResults, { once: true } ); From 7a8487fc9adcb83106f113ad96098baae025372c Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 2 Nov 2021 17:17:08 -0700 Subject: [PATCH 092/105] Remove extraneous spaces and improve child manipulation --- assets/src/admin/amp-plugin-install.js | 1 - assets/src/admin/theme-install/view/theme.js | 10 +++++----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/assets/src/admin/amp-plugin-install.js b/assets/src/admin/amp-plugin-install.js index b77fd21147a..625ccc2204f 100644 --- a/assets/src/admin/amp-plugin-install.js +++ b/assets/src/admin/amp-plugin-install.js @@ -94,7 +94,6 @@ const ampPluginInstall = { messageElement.append( iconElement ); messageElement.append( tooltipElement ); - messageElement.append( ' ' ); pluginCardElement.appendChild( messageElement ); } diff --git a/assets/src/admin/theme-install/view/theme.js b/assets/src/admin/theme-install/view/theme.js index 59b2910f101..284325b681e 100644 --- a/assets/src/admin/theme-install/view/theme.js +++ b/assets/src/admin/theme-install/view/theme.js @@ -48,7 +48,6 @@ export default wpThemeView.extend( { messageElement.append( iconElement ); messageElement.append( tooltipElement ); - messageElement.append( ' ' ); element.appendChild( messageElement ); } @@ -57,7 +56,7 @@ export default wpThemeView.extend( { const siteLinkButton = document.createElement( 'a' ); siteLinkButton.classList.add( 'button' ); siteLinkButton.classList.add( 'button-primary' ); - siteLinkButton.innerText = __( 'Visit Site', 'amp' ); + siteLinkButton.append( __( 'Visit Site', 'amp' ) ); if ( data?.preview_url ) { siteLinkButton.setAttribute( 'href', data.preview_url ); @@ -74,13 +73,14 @@ export default wpThemeView.extend( { const themeActions = element.querySelector( '.theme-actions' ); if ( themeActions ) { - themeActions.innerText = ''; - themeActions.appendChild( siteLinkButton ); + themeActions.textContent = ''; // Remove children. + themeActions.append( siteLinkButton ); } const moreDetail = element.querySelector( '.more-details' ); if ( moreDetail ) { - moreDetail.innerText = __( 'Visit site', 'amp' ); + moreDetail.textContent = ''; // Remove children. + moreDetail.append( __( 'Visit Site', 'amp' ) ); } } }, From 46db0a247e7327d6ec3bed3e716d98a29e61bdfd Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 2 Nov 2021 17:23:52 -0700 Subject: [PATCH 093/105] Prevent showing AMP badge icon on AMP Compatible themes tab --- assets/src/admin/theme-install/view/theme.js | 51 ++++++++++++++------ 1 file changed, 35 insertions(+), 16 deletions(-) diff --git a/assets/src/admin/theme-install/view/theme.js b/assets/src/admin/theme-install/view/theme.js index 284325b681e..7490cb3ccae 100644 --- a/assets/src/admin/theme-install/view/theme.js +++ b/assets/src/admin/theme-install/view/theme.js @@ -12,6 +12,14 @@ const wpThemeView = wp.themes.view.Theme; export default wpThemeView.extend( { + /** + * Check if "AMP Compatible" tab is open or not. + */ + isAmpCompatibleTab() { + const queryParams = new URLSearchParams( window.location.search.substr( 1 ) ); + return queryParams.get( 'browse' ) === 'amp-compatible'; + }, + /** * Render theme card. * @@ -34,22 +42,33 @@ export default wpThemeView.extend( { } if ( slug && this.isAmpTheme( slug ) ) { - const messageElement = document.createElement( 'div' ); - const iconElement = document.createElement( 'span' ); - const tooltipElement = document.createElement( 'span' ); - - messageElement.classList.add( 'amp-extension-card-message' ); - iconElement.classList.add( 'amp-logo-icon' ); - tooltipElement.classList.add( 'tooltiptext' ); - - tooltipElement.append( - __( 'This is known to work well with the AMP plugin.', 'amp' ), - ); - - messageElement.append( iconElement ); - messageElement.append( tooltipElement ); - - element.appendChild( messageElement ); + /* + * Note: the setTimeout is needed because when the user taps on the AMP Compatible tab, the UI will render + * before history.pushState() is called, meaning isAmpCompatibleTab cannot be called yet to inspect the + * current location. By waiting for the next tick, we can safely read it. + */ + setTimeout( () => { + if ( this.isAmpCompatibleTab() ) { + return; + } + + const messageElement = document.createElement( 'div' ); + const iconElement = document.createElement( 'span' ); + const tooltipElement = document.createElement( 'span' ); + + messageElement.classList.add( 'amp-extension-card-message' ); + iconElement.classList.add( 'amp-logo-icon' ); + tooltipElement.classList.add( 'tooltiptext' ); + + tooltipElement.append( + __( 'This is known to work well with the AMP plugin.', 'amp' ), + ); + + messageElement.append( iconElement ); + messageElement.append( tooltipElement ); + + element.appendChild( messageElement ); + } ); } if ( slug && ! this.isWPORGTheme( slug ) ) { From f47398b9d4ed48a2729b60cf97e6b189f176f838 Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 2 Nov 2021 17:44:58 -0700 Subject: [PATCH 094/105] Remove fs and child_process packages since built-in to Node --- package-lock.json | 12 ------------ package.json | 2 -- 2 files changed, 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index 62b83b5e5f4..7e6b0f164ef 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5416,12 +5416,6 @@ } } }, - "child_process": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/child_process/-/child_process-1.0.2.tgz", - "integrity": "sha1-sffn/HPSXn/R1FWtyU4UODAYK1o=", - "dev": true - }, "chokidar": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", @@ -8535,12 +8529,6 @@ "tslib": "^2.1.0" } }, - "fs": { - "version": "0.0.1-security", - "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", - "integrity": "sha1-invTcYa23d84E/I4WLV+yq9eQdQ=", - "dev": true - }, "fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", diff --git a/package.json b/package.json index c4c33555e74..1d8eb49614a 100644 --- a/package.json +++ b/package.json @@ -64,7 +64,6 @@ "axios": "0.21.1", "babel-plugin-inline-react-svg": "2.0.1", "babel-plugin-transform-react-remove-prop-types": "0.4.24", - "child_process": "1.0.2", "copy-webpack-plugin": "9.0.1", "cross-env": "7.0.3", "css-minimizer-webpack-plugin": "3.1.1", @@ -76,7 +75,6 @@ "eslint-plugin-jsdoc": "36.1.1", "eslint-plugin-react": "7.26.1", "eslint-plugin-react-hooks": "4.2.0", - "fs": "0.0.1-security", "grunt": "1.4.1", "grunt-contrib-clean": "2.0.0", "grunt-contrib-copy": "1.0.0", From 760ae359819df794ff70ed2191e3d103b06a8078 Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 2 Nov 2021 17:51:28 -0700 Subject: [PATCH 095/105] Regenerate ecosystem data --- includes/ecosystem-data/plugins.php | 48 ++++++++++++++--------------- includes/ecosystem-data/themes.php | 12 ++++---- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/includes/ecosystem-data/plugins.php b/includes/ecosystem-data/plugins.php index c47f314e408..65acac868a1 100644 --- a/includes/ecosystem-data/plugins.php +++ b/includes/ecosystem-data/plugins.php @@ -15,11 +15,11 @@ 'name' => 'Podcast Player – Your Podcasting Companion', 'slug' => 'podcast-player', 'homepage' => 'https://vedathemes.com/podcast-player/', - 'short_description' => 'Showcase your podcast only using podcasting feed url. Use custom widget, shortcode or editor block to display podcast player anywhere on your site.', + 'short_description' => 'Showcase your podcast only using podcasting feed url. Use widget, shortcode or editor block to…', 'icons' => array ( - '1x' => 'https://ps.w.org/podcast-player/assets/icon-256x256.png?rev=2025683', - '2x' => 'https://ps.w.org/podcast-player/assets/icon-256x256.png?rev=2025683', + '1x' => 'https://ps.w.org/podcast-player/assets/icon-256x256.png?rev=2622629', + '2x' => 'https://ps.w.org/podcast-player/assets/icon-256x256.png?rev=2622629', ), 'wporg' => true, ), @@ -28,7 +28,7 @@ 'name' => 'WPSSO Schema JSON-LD Markup', 'slug' => 'wpsso-schema-json-ld', 'homepage' => 'https://wpsso.com/extend/plugins/wpsso-schema-json-ld/', - 'short_description' => 'Discontinued / deprecated add-on: The features of this plugin were merged into WPSSO Core v9.0.0.', + 'short_description' => 'Discontinued add-on: The features of this plugin were integrated into WPSSO Core v9.0.0.', 'icons' => array ( 'default' => 'https://s.w.org/plugins/geopattern-icon/wpsso-schema-json-ld.svg', @@ -40,7 +40,7 @@ 'name' => 'ShortPixel Image Optimizer', 'slug' => 'shortpixel-image-optimiser', 'homepage' => 'https://shortpixel.com/', - 'short_description' => 'Speed up your website & boost your SEO by compressing old & new images and…', + 'short_description' => 'Speed up your website & boost your SEO by compressing old & new images and PDFs. Optimize and convert WebP & AVIF.', 'icons' => array ( '1x' => 'https://ps.w.org/shortpixel-image-optimiser/assets/icon-128x128.png?rev=1038819', @@ -80,7 +80,7 @@ 'name' => 'Flex Posts – Widget and Gutenberg Block', 'slug' => 'flex-posts', 'homepage' => 'https://tajam.id/flex-posts/', - 'short_description' => 'A widget to display posts with thumbnails in various layouts. Fits nicely in any widget…', + 'short_description' => 'A widget to display posts with thumbnails in various layouts. Fits nicely in any widget area size.', 'icons' => array ( '1x' => 'https://ps.w.org/flex-posts/assets/icon-128x128.png?rev=1871802', @@ -118,7 +118,7 @@ 'name' => 'Floating Button', 'slug' => 'floating-button', 'homepage' => 'https://wordpress.org/plugins/floating-button/', - 'short_description' => 'Easily create a custom sticky floating buttons. The Floating Button will be the effective solution for increasing the recognition of your web resource', + 'short_description' => 'Easily create a custom sticky floating buttons. The Floating Button will be the effective solution…', 'icons' => array ( '1x' => 'https://ps.w.org/floating-button/assets/icon-128x128.png?rev=2533016', @@ -145,7 +145,7 @@ 'name' => 'WP Recipe Maker', 'slug' => 'wp-recipe-maker', 'homepage' => 'http://bootstrapped.ventures/wp-recipe-maker/', - 'short_description' => 'The easy and user-friendly recipe plugin for everyone. Automatic JSON-LD metadata for food AND how-to…', + 'short_description' => 'The easy and user-friendly recipe plugin for everyone. Automatic JSON-LD metadata for food AND how-to recipes will improve your SEO!', 'icons' => array ( '1x' => 'https://ps.w.org/wp-recipe-maker/assets/icon-128x128.png?rev=1491788', @@ -158,7 +158,7 @@ 'name' => 'Slim SEO – Fast & Automated WordPress SEO Plugin', 'slug' => 'slim-seo', 'homepage' => 'https://wpslimseo.com', - 'short_description' => 'A full-featured SEO plugin for WordPress that's lightweight, blazing fast with minimum configuration. No bloats, no ads and just works!', + 'short_description' => 'A full-featured SEO plugin for WordPress that's lightweight, blazing fast with minimum configuration. No bloats,…', 'icons' => array ( '1x' => 'https://ps.w.org/slim-seo/assets/icon.svg?rev=2005049', @@ -171,7 +171,7 @@ 'name' => 'Schema & Structured Data for WP & AMP', 'slug' => 'schema-and-structured-data-for-wp', 'homepage' => '', - 'short_description' => 'Schema & Structured Data for WP & AMP adds Google Rich Snippets markup according to…', + 'short_description' => 'Schema & Structured Data for WP & AMP adds Google Rich Snippets markup according to Schema.org guidelines to structure your site for SEO.', 'icons' => array ( '1x' => 'https://ps.w.org/schema-and-structured-data-for-wp/assets/icon-128x128.png?rev=1922284', @@ -210,7 +210,7 @@ 'name' => 'Page View Count', 'slug' => 'page-views-count', 'homepage' => '', - 'short_description' => 'Places an icon, all time views count and views today count at the bottom of posts, pages and custom post types on any WordPress website.', + 'short_description' => 'Places an icon, all time views count and views today count at the bottom of…', 'icons' => array ( '1x' => 'https://ps.w.org/page-views-count/assets/icon.svg?rev=986301', @@ -239,7 +239,7 @@ 'name' => 'Newspack Newsletters', 'slug' => 'newspack-newsletters', 'homepage' => 'https://newspack.pub', - 'short_description' => 'Create email newsletters with the Gutenberg editor and distribute them with your Mailchimp or Constant Contact mailing lists.', + 'short_description' => 'Create email newsletters with the Gutenberg editor and distribute them with your Mailchimp or Constant…', 'icons' => array ( '1x' => 'https://ps.w.org/newspack-newsletters/assets/icon.svg?rev=2475195', @@ -267,7 +267,7 @@ 'name' => 'Jetpack – WP Security, Backup, Speed, & Growth', 'slug' => 'jetpack', 'homepage' => 'https://jetpack.com', - 'short_description' => 'Improve your WP security with powerful one-click tools like backup and malware scan. Get essential…', + 'short_description' => 'Improve your WP security with powerful one-click tools like backup and malware scan. Get essential free tools including stats, CDN and social sharing.', 'icons' => array ( '1x' => 'https://ps.w.org/jetpack/assets/icon.svg?rev=2394525', @@ -281,7 +281,7 @@ 'name' => 'Easy Notification Bar', 'slug' => 'easy-notification-bar', 'homepage' => 'https://wordpress.org/plugins/easy-notification-bar/', - 'short_description' => 'Easily add a custom top bar notification message to on your site with live customization…', + 'short_description' => 'Easily add a custom top bar notification message to on your site with live customization options via the WordPress customizer.', 'icons' => array ( '1x' => 'https://ps.w.org/easy-notification-bar/assets/icon-128x128.png?rev=2515988', @@ -294,7 +294,7 @@ 'name' => 'Antispam Bee', 'slug' => 'antispam-bee', 'homepage' => 'https://antispambee.pluginkollektiv.org/', - 'short_description' => 'Antispam plugin with a sophisticated tool set for effective day to day comment and trackback…', + 'short_description' => 'Antispam plugin with a sophisticated tool set for effective day to day comment and trackback spam-fighting. Build with data protection and privacy in …', 'icons' => array ( '1x' => 'https://ps.w.org/antispam-bee/assets/icon-128x128.png?rev=977629', @@ -347,7 +347,7 @@ 'name' => 'Page Builder Gutenberg Blocks – CoBlocks', 'slug' => 'coblocks', 'homepage' => '', - 'short_description' => 'CoBlocks is a suite of page builder WordPress blocks for Gutenberg, with 10+ new blocks…', + 'short_description' => 'CoBlocks is a suite of page builder WordPress blocks for Gutenberg, with 10+ new blocks and a true page builder experience with rows and columns.', 'icons' => array ( '1x' => 'https://ps.w.org/coblocks/assets/icon-128x128.jpg?rev=2243972', @@ -360,7 +360,7 @@ 'name' => 'Simple Author Box', 'slug' => 'simple-author-box', 'homepage' => 'https://wpauthorbox.com/', - 'short_description' => 'Add a responsive author box with social icons to any post. Great author box for…', + 'short_description' => 'Add a responsive author box with social icons to any post. Great author box for any site!', 'icons' => array ( '1x' => 'https://ps.w.org/simple-author-box/assets/icon-128x128.jpg?rev=1821054', @@ -438,7 +438,7 @@ 'name' => 'Rank Math SEO – Best SEO Plugin For WordPress To Increase Your SEO Traffic', 'slug' => 'seo-by-rank-math', 'homepage' => 'https://s.rankmath.com/home', - 'short_description' => 'Rank Math SEO is the Best WordPress SEO plugin combines the features of many SEO tools in a single package & helps you multiply your SEO traffic.', + 'short_description' => 'Rank Math SEO is the Best WordPress SEO plugin combines the features of many SEO…', 'icons' => array ( '1x' => 'https://ps.w.org/seo-by-rank-math/assets/icon.svg?rev=2348086', @@ -505,7 +505,7 @@ 'name' => 'Schema', 'slug' => 'schema', 'homepage' => 'https://schema.press', - 'short_description' => 'Get the next generation of Schema Structured Data to enhance your WordPress site presentation in…', + 'short_description' => 'Get the next generation of Schema Structured Data to enhance your WordPress site presentation in Google search results.', 'icons' => array ( '1x' => 'https://ps.w.org/schema/assets/icon-128x128.png?rev=1750172', @@ -518,7 +518,7 @@ 'name' => 'Iframely – rich media embeds for 2000+ publishers', 'slug' => 'iframely', 'homepage' => 'http://wordpress.org/plugins/iframely/', - 'short_description' => 'Iframely extends WordPress default rich media embeds and adds support of over 2000 more providers…', + 'short_description' => 'Iframely extends WordPress default rich media embeds and adds support of over 2000 more providers and cards as URL previews for the rest of the Web.', 'icons' => array ( 'default' => 'https://s.w.org/plugins/geopattern-icon/iframely.svg', @@ -598,7 +598,7 @@ 'name' => 'Advanced Ads – Ad Manager & AdSense', 'slug' => 'advanced-ads', 'homepage' => 'https://wpadvancedads.com', - 'short_description' => 'Manage and optimize all ad types. Support for Google AdSense Auto ads, Amazon, image banners, HTML, page builder, ad widget, ad rotations, ads.txt', + 'short_description' => 'Manage and optimize all ad types. Support for Google AdSense Auto ads, Amazon, image banners,…', 'icons' => array ( '1x' => 'https://ps.w.org/advanced-ads/assets/icon-128x128.gif?rev=2293174', @@ -679,7 +679,7 @@ 'name' => 'WP GDPR Cookie Notice', 'slug' => 'wp-gdpr-cookie-notice', 'homepage' => 'https://wordpress.org/plugins/wp-gdpr-cookie-notice/', - 'short_description' => 'Simple performant cookie consent notice that supports AMP, Web Stories, granular cookie control and live preview customization.', + 'short_description' => 'Simple performant cookie consent notice that supports AMP, Web Stories, granular cookie control and live…', 'icons' => array ( '1x' => 'https://ps.w.org/wp-gdpr-cookie-notice/assets/icon-128x128.png?rev=2042024', @@ -692,7 +692,7 @@ 'name' => 'WordPress Share Buttons Plugin – AddThis', 'slug' => 'addthis', 'homepage' => 'https://wordpress.org/plugins/addthis/', - 'short_description' => 'Now compatible with the AMP Plugin! Free Share Buttons from AddThis. Share to Messenger, WhatsApp,…', + 'short_description' => 'Now compatible with the AMP Plugin! Free Share Buttons from AddThis. Share to Messenger, WhatsApp, Facebook, Twitter, Pinterest and many more.', 'icons' => array ( '1x' => 'https://ps.w.org/addthis/assets/icon-128x128.png?rev=1223867', @@ -732,7 +732,7 @@ 'name' => 'Gutenberg', 'slug' => 'gutenberg', 'homepage' => 'https://github.com/WordPress/gutenberg', - 'short_description' => 'The Gutenberg plugin provides editing, customization, and site building features to WordPress. This beta plugin…', + 'short_description' => 'The Gutenberg plugin provides editing, customization, and site building features to WordPress. This beta plugin allows you to test bleeding-edge featu …', 'icons' => array ( '1x' => 'https://ps.w.org/gutenberg/assets/icon-128x128.jpg?rev=1776042', diff --git a/includes/ecosystem-data/themes.php b/includes/ecosystem-data/themes.php index 64911bfb3f6..907ac22b65a 100644 --- a/includes/ecosystem-data/themes.php +++ b/includes/ecosystem-data/themes.php @@ -25,7 +25,7 @@ 'name' => 'Sydney', 'slug' => 'sydney', 'preview_url' => 'https://wp-themes.com/sydney/', - 'screenshot_url' => '//ts.w.org/wp-content/themes/sydney/screenshot.png?ver=1.83', + 'screenshot_url' => '//ts.w.org/wp-content/themes/sydney/screenshot.png?ver=1.84', 'homepage' => 'https://wordpress.org/themes/sydney/', 'description' => 'Sydney is a powerful business theme that provides a fast way for companies or freelancers to create an awesome online presence. As well as being fully compatible with Elementor, Sydney brings plenty of customization possibilities like access to all Google Fonts, full color control, layout control, logo upload, full screen slider, header image, sticky navigation and much more. Also, Sydney provides all the construction blocks you need to rapidly create an engaging front page. Looking for a quick start with Sydney? With just a few clicks, you can import one of our existing demos (https://athemes.com/sydney-demos/)', 'wporg' => true, @@ -45,9 +45,9 @@ 'name' => 'Artpop', 'slug' => 'artpop', 'preview_url' => 'https://wp-themes.com/artpop/', - 'screenshot_url' => '//ts.w.org/wp-content/themes/artpop/screenshot.png?ver=1.0.8', + 'screenshot_url' => '//ts.w.org/wp-content/themes/artpop/screenshot.png?ver=1.0.9', 'homepage' => 'https://wordpress.org/themes/artpop/', - 'description' => 'Artpop is a beautiful Gutenberg-first WordPress theme, carefully designed to help you build your online brand. Unleash your creativity, Artpop takes care of the rest! Well documented and easy to use even for WordPress beginners, Artpop is perfect for a blog, personal portfolio, small business website, and WooCommerce storefront. Easily set your logo, change colors, and create awesome layouts to give your website a truly unique look.', + 'description' => 'Artpop is a beautiful Gutenberg-first WordPress theme, carefully designed to help you build your online brand. We built Artpop with performance, usability, and SEO in mind. It’s fast, lightweight, and fully AMP-compatible. Well documented and easy to use even for WordPress beginners, Artpop is perfect for a blog, personal portfolio, small business website, and WooCommerce storefront. Easily set your logo, change colors, and create awesome layouts to give your website a truly unique look.', 'wporg' => true, ), 4 => @@ -761,7 +761,7 @@ 'name' => 'Zakra', 'slug' => 'zakra', 'preview_url' => 'https://wp-themes.com/zakra/', - 'screenshot_url' => '//ts.w.org/wp-content/themes/zakra/screenshot.jpg?ver=2.0.5', + 'screenshot_url' => '//ts.w.org/wp-content/themes/zakra/screenshot.jpg?ver=2.0.6', 'homepage' => 'https://wordpress.org/themes/zakra/', 'description' => 'Zakra is flexible, fast, lightweight and modern multipurpose theme that comes with many starter free sites (currently 10+ free starter sites and more will be added later) that you can use to make your site beautiful and professional. Check all the starter sites at https://zakratheme.com/demos. Suitable for personal blog, portfolio, WooCommerce stores, business websites and niche-based sites (like Cafe, Spa, Charity, Yoga, Wedding, Dentist, Education etc) as well. Works with Elementor plus other major page builders so you can create any layout you want. The theme is responsive, Gutenberg compatible, SEO friendly, translation ready and major WordPress plugins compatible.', 'wporg' => true, @@ -771,7 +771,7 @@ 'name' => 'Neve', 'slug' => 'neve', 'preview_url' => 'https://wp-themes.com/neve/', - 'screenshot_url' => '//ts.w.org/wp-content/themes/neve/screenshot.png?ver=3.0.9', + 'screenshot_url' => '//ts.w.org/wp-content/themes/neve/screenshot.png?ver=3.0.10', 'homepage' => 'https://wordpress.org/themes/neve/', 'description' => 'Neve is a super fast, easily customizable, multi-purpose theme. It’s perfect for blogs, small business, startups, agencies, firms, e-commerce shops (WooCommerce storefront) as well as personal portfolio sites and most types of projects. A fully AMP optimized and responsive theme, Neve will load in mere seconds and adapt perfectly on any viewing device. While it is lightweight and has a minimalist design, the theme is highly extendable, it has a highly SEO optimized code, resulting in top rankings in Google search results. Neve works perfectly with Gutenberg and the most popular page builders (Elementor, Brizy, Beaver Builder, Visual Composer, SiteOrigin, Divi). Neve is also WooCommerce ready, responsive, RTL & translation ready. Look no further. Neve is the perfect theme for you!', 'wporg' => true, @@ -781,7 +781,7 @@ 'name' => 'Astra', 'slug' => 'astra', 'preview_url' => 'https://wp-themes.com/astra/', - 'screenshot_url' => '//ts.w.org/wp-content/themes/astra/screenshot.jpg?ver=3.7.3', + 'screenshot_url' => '//ts.w.org/wp-content/themes/astra/screenshot.jpg?ver=3.7.5', 'homepage' => 'https://wordpress.org/themes/astra/', 'description' => 'Astra is fast, fully customizable & beautiful WordPress theme suitable for blog, personal portfolio, business website and WooCommerce storefront. It is very lightweight (less than 50KB on frontend) and offers unparalleled speed. Built with SEO in mind, Astra comes with Schema.org code integrated and is Native AMP ready so search engines will love your site. It offers special features and templates so it works perfectly with all page builders like Elementor, Beaver Builder, Visual Composer, SiteOrigin, Divi, etc. Some of the other features: # WooCommerce Ready # Responsive # RTL & Translation Ready # Extendible with premium addons # Regularly updated # Designed, Developed, Maintained & Supported by Brainstorm Force. Looking for a perfect base theme? Look no further. Astra is fast, fully customizable and WooCommerce ready theme that you can use for building any kind of website!', 'wporg' => true, From 53a85b760977bde8846add0808e8716f0929f37b Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 2 Nov 2021 17:54:09 -0700 Subject: [PATCH 096/105] Prevent adding assets needlessly to plugin list table --- src/Admin/AmpPlugins.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Admin/AmpPlugins.php b/src/Admin/AmpPlugins.php index 25eb238ef97..6b78f9cab0d 100644 --- a/src/Admin/AmpPlugins.php +++ b/src/Admin/AmpPlugins.php @@ -148,8 +148,7 @@ public static function normalize_plugin_data( $plugin = [] ) { public function register() { $screen = get_current_screen(); - - if ( $screen instanceof WP_Screen && in_array( $screen->id, [ 'plugins', 'plugin-install' ], true ) ) { + if ( $screen instanceof WP_Screen && 'plugin-install' === $screen->id ) { add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_scripts' ] ); } From 9cfc78c45a9cc92119ea408c8fbeea7f435c6e65 Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 2 Nov 2021 19:30:57 -0700 Subject: [PATCH 097/105] Fix AmpPlugin::register test and remove unused is_file_exists vars --- tests/php/src/Admin/AmpPluginsTest.php | 10 ++-------- tests/php/src/Admin/AmpThemesTest.php | 7 ------- 2 files changed, 2 insertions(+), 15 deletions(-) diff --git a/tests/php/src/Admin/AmpPluginsTest.php b/tests/php/src/Admin/AmpPluginsTest.php index 3868d9119b0..80b5c2f8bba 100644 --- a/tests/php/src/Admin/AmpPluginsTest.php +++ b/tests/php/src/Admin/AmpPluginsTest.php @@ -25,13 +25,6 @@ class AmpPluginsTest extends TestCase { */ public $instance; - /** - * Flag for AMP-compatible plugins file initially exists or not. - * - * @var bool - */ - protected $is_file_exists = false; - /** * Setup. * @@ -156,6 +149,7 @@ static function ( $shown, $type ) { if ( 'plugins' === $type ) { $shown = false; } + return $shown; }, 10, @@ -202,7 +196,7 @@ public function test_register() { has_action( 'install_plugins_amp-compatible', 'display_plugins_table' ) ); - set_current_screen( 'plugins' ); + set_current_screen( 'plugin-install' ); $this->instance->register(); $this->assertEquals( 10, diff --git a/tests/php/src/Admin/AmpThemesTest.php b/tests/php/src/Admin/AmpThemesTest.php index eb46746838a..1a0c1ba2c96 100644 --- a/tests/php/src/Admin/AmpThemesTest.php +++ b/tests/php/src/Admin/AmpThemesTest.php @@ -25,13 +25,6 @@ class AmpThemesTest extends TestCase { */ public $instance; - /** - * Flag for AMP-compatible themes file initially exists or not. - * - * @var bool - */ - protected $is_file_exists = false; - /** * Setup. * From 46fc670d22efd3363e26112ff3384beca11915de Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 2 Nov 2021 19:34:23 -0700 Subject: [PATCH 098/105] Try fixing AmpThemesTest::test_is_needed --- tests/php/src/Admin/AmpThemesTest.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/php/src/Admin/AmpThemesTest.php b/tests/php/src/Admin/AmpThemesTest.php index 1a0c1ba2c96..401688da232 100644 --- a/tests/php/src/Admin/AmpThemesTest.php +++ b/tests/php/src/Admin/AmpThemesTest.php @@ -52,12 +52,15 @@ public function test_get_registration_action() { * @covers ::is_needed() */ public function test_is_needed() { + set_current_screen( 'front' ); // Test 1: Not admin request. + $this->assertFalse( is_admin() ); $this->assertFalse( AmpThemes::is_needed() ); // Test 2: Admin request. set_current_screen( 'index.php' ); + $this->assertTrue( is_admin() ); $this->assertTrue( AmpThemes::is_needed() ); // Test 3: Filter disables. From 09811693f758496edf6f9ee827683e26e60d0787 Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 2 Nov 2021 19:42:22 -0700 Subject: [PATCH 099/105] Define 'amp-compatible' in constants --- assets/src/admin/amp-plugin-install.js | 4 ++-- assets/src/admin/amp-theme-install.js | 7 +++++- assets/src/admin/theme-install/view/theme.js | 4 ++-- src/Admin/AmpPlugins.php | 24 +++++++++++++------- src/Admin/AmpThemes.php | 10 +++++++- 5 files changed, 35 insertions(+), 14 deletions(-) diff --git a/assets/src/admin/amp-plugin-install.js b/assets/src/admin/amp-plugin-install.js index 625ccc2204f..b27cf87fcf5 100644 --- a/assets/src/admin/amp-plugin-install.js +++ b/assets/src/admin/amp-plugin-install.js @@ -7,7 +7,7 @@ import { __ } from '@wordpress/i18n'; /** * External dependencies */ -import { AMP_PLUGINS } from 'amp-plugins'; // From WP inline script. +import { AMP_PLUGINS, AMP_COMPATIBLE } from 'amp-plugins'; // From WP inline script. import { debounce } from 'lodash'; const ampPluginInstall = { @@ -31,7 +31,7 @@ const ampPluginInstall = { */ isAmpCompatibleTab() { const queryParams = new URLSearchParams( window.location.search.substr( 1 ) ); - return queryParams.get( 'tab' ) === 'amp-compatible'; + return queryParams.get( 'tab' ) === AMP_COMPATIBLE; }, /** diff --git a/assets/src/admin/amp-theme-install.js b/assets/src/admin/amp-theme-install.js index e9934dd156e..fb0ec4bda8e 100644 --- a/assets/src/admin/amp-theme-install.js +++ b/assets/src/admin/amp-theme-install.js @@ -9,6 +9,11 @@ import domReady from '@wordpress/dom-ready'; */ import ampViewTheme from './theme-install/view/theme'; +/** + * External dependencies + */ +import { AMP_COMPATIBLE } from 'amp-themes'; // From WP inline script. + const ampThemeInstall = { /** @@ -32,7 +37,7 @@ const ampThemeInstall = { const anchorElement = document.createElement( 'a' ); anchorElement.setAttribute( 'href', '#' ); - anchorElement.setAttribute( 'data-sort', 'amp-compatible' ); + anchorElement.setAttribute( 'data-sort', AMP_COMPATIBLE ); anchorElement.append( __( 'AMP Compatible', 'amp' ) ); listItem.appendChild( anchorElement ); diff --git a/assets/src/admin/theme-install/view/theme.js b/assets/src/admin/theme-install/view/theme.js index 7490cb3ccae..a85ebf3a611 100644 --- a/assets/src/admin/theme-install/view/theme.js +++ b/assets/src/admin/theme-install/view/theme.js @@ -6,7 +6,7 @@ import { __, sprintf } from '@wordpress/i18n'; /** * External dependencies */ -import { AMP_THEMES, NONE_WPORG_THEMES } from 'amp-themes'; // From WP inline script. +import { AMP_THEMES, AMP_COMPATIBLE, NONE_WPORG_THEMES } from 'amp-themes'; // From WP inline script. const wpThemeView = wp.themes.view.Theme; @@ -17,7 +17,7 @@ export default wpThemeView.extend( { */ isAmpCompatibleTab() { const queryParams = new URLSearchParams( window.location.search.substr( 1 ) ); - return queryParams.get( 'browse' ) === 'amp-compatible'; + return queryParams.get( 'browse' ) === AMP_COMPATIBLE; }, /** diff --git a/src/Admin/AmpPlugins.php b/src/Admin/AmpPlugins.php index 6b78f9cab0d..0563028c557 100644 --- a/src/Admin/AmpPlugins.php +++ b/src/Admin/AmpPlugins.php @@ -23,6 +23,13 @@ */ class AmpPlugins implements Conditional, Delayed, Service, Registerable { + /** + * Slug for amp-compatible. + * + * @var string + */ + const AMP_COMPATIBLE = 'amp-compatible'; + /** * Assets handle. * @@ -153,12 +160,12 @@ public function register() { } add_filter( 'install_plugins_tabs', [ $this, 'add_tab' ] ); - add_filter( 'install_plugins_table_api_args_amp-compatible', [ $this, 'tab_args' ] ); + add_filter( 'install_plugins_table_api_args_' . self::AMP_COMPATIBLE, [ $this, 'tab_args' ] ); add_filter( 'plugins_api', [ $this, 'plugins_api' ], 10, 3 ); add_filter( 'plugin_install_action_links', [ $this, 'action_links' ], 10, 2 ); add_filter( 'plugin_row_meta', [ $this, 'plugin_row_meta' ], 10, 3 ); - add_action( 'install_plugins_amp-compatible', 'display_plugins_table' ); + add_action( 'install_plugins_' . self::AMP_COMPATIBLE, 'display_plugins_table' ); } /** @@ -189,7 +196,8 @@ public function enqueue_scripts() { ); $js_data = [ - 'AMP_PLUGINS' => wp_list_pluck( $this->get_plugins(), 'slug' ), + 'AMP_COMPATIBLE' => self::AMP_COMPATIBLE, + 'AMP_PLUGINS' => wp_list_pluck( $this->get_plugins(), 'slug' ), ]; wp_add_inline_script( @@ -214,7 +222,7 @@ public function add_tab( $tabs ) { return array_merge( $tabs, [ - 'amp-compatible' => esc_html__( 'AMP Compatible', 'amp' ), + self::AMP_COMPATIBLE => esc_html__( 'AMP Compatible', 'amp' ), ] ); } @@ -233,9 +241,9 @@ public function tab_args() { $page = max( 1, $pagenum ); return [ - 'amp-compatible' => true, - 'per_page' => $per_page, - 'page' => $page, + self::AMP_COMPATIBLE => true, + 'per_page' => $per_page, + 'page' => $page, ]; } @@ -251,7 +259,7 @@ public function tab_args() { public function plugins_api( $response, /** @noinspection PhpUnusedParameterInspection */ $action, $args ) { $args = (array) $args; - if ( ! isset( $args['amp-compatible'] ) ) { + if ( ! isset( $args[ self::AMP_COMPATIBLE ] ) ) { return $response; } diff --git a/src/Admin/AmpThemes.php b/src/Admin/AmpThemes.php index aa51a8f7c83..cf81b237028 100644 --- a/src/Admin/AmpThemes.php +++ b/src/Admin/AmpThemes.php @@ -22,6 +22,13 @@ */ class AmpThemes implements Service, Registerable, Conditional, Delayed { + /** + * Slug for amp-compatible. + * + * @var string + */ + const AMP_COMPATIBLE = 'amp-compatible'; + /** * Assets handle. * @@ -193,6 +200,7 @@ public function enqueue_scripts() { } $js_data = [ + 'AMP_COMPATIBLE' => self::AMP_COMPATIBLE, 'AMP_THEMES' => $slugs, 'NONE_WPORG_THEMES' => $none_wporg, ]; @@ -219,7 +227,7 @@ public function enqueue_scripts() { public function filter_themes_api( $response, $action, $args ) { $args = (array) $args; - if ( ! isset( $args['browse'] ) || 'amp-compatible' !== $args['browse'] ) { + if ( ! isset( $args['browse'] ) || self::AMP_COMPATIBLE !== $args['browse'] ) { return $response; } From 326b603defb5597939c7a356f38dd17ed9e11432 Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 2 Nov 2021 19:42:54 -0700 Subject: [PATCH 100/105] Fix import order --- assets/src/admin/amp-theme-install.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/assets/src/admin/amp-theme-install.js b/assets/src/admin/amp-theme-install.js index fb0ec4bda8e..44ec0aaa18b 100644 --- a/assets/src/admin/amp-theme-install.js +++ b/assets/src/admin/amp-theme-install.js @@ -5,14 +5,14 @@ import { __ } from '@wordpress/i18n'; import domReady from '@wordpress/dom-ready'; /** - * Internal dependencies + * External dependencies */ -import ampViewTheme from './theme-install/view/theme'; +import { AMP_COMPATIBLE } from 'amp-themes'; // From WP inline script. /** - * External dependencies + * Internal dependencies */ -import { AMP_COMPATIBLE } from 'amp-themes'; // From WP inline script. +import ampViewTheme from './theme-install/view/theme'; const ampThemeInstall = { From 496a1340d21c4b469ee60bc2078741167a43a2fe Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 2 Nov 2021 20:16:19 -0700 Subject: [PATCH 101/105] Add noopener and noreferrer to ecosystem links --- assets/src/admin/theme-install/view/theme.js | 9 +++++---- src/Admin/AmpPlugins.php | 2 +- tests/php/src/Admin/AmpPluginsTest.php | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/assets/src/admin/theme-install/view/theme.js b/assets/src/admin/theme-install/view/theme.js index a85ebf3a611..a78a6ff24fc 100644 --- a/assets/src/admin/theme-install/view/theme.js +++ b/assets/src/admin/theme-install/view/theme.js @@ -78,12 +78,13 @@ export default wpThemeView.extend( { siteLinkButton.append( __( 'Visit Site', 'amp' ) ); if ( data?.preview_url ) { - siteLinkButton.setAttribute( 'href', data.preview_url ); + siteLinkButton.href = data.preview_url; } else { - siteLinkButton.setAttribute( 'href', data.homepage ); + siteLinkButton.href = data.homepage; } - siteLinkButton.setAttribute( 'target', '_blank' ); + siteLinkButton.target = '_blank'; + siteLinkButton.rel = 'noopener noreferrer'; siteLinkButton.setAttribute( 'aria-label', sprintf( /* translators: %s: theme name. */ __( 'Visit site of %s theme', 'amp' ), @@ -115,7 +116,7 @@ export default wpThemeView.extend( { if ( this.isWPORGTheme( data.slug ) ) { wpThemeView.prototype.preview.apply( this, args ); } else if ( data?.preview_url ) { - window.open( data.preview_url, '_blank' ); + window.open( data.preview_url, '_blank', 'noopener,noreferrer' ); } }, diff --git a/src/Admin/AmpPlugins.php b/src/Admin/AmpPlugins.php index 0563028c557..55c3a8c9613 100644 --- a/src/Admin/AmpPlugins.php +++ b/src/Admin/AmpPlugins.php @@ -295,7 +295,7 @@ public function action_links( $actions, $plugin ) { if ( ! empty( $plugin['homepage'] ) ) { $actions[] = sprintf( - '%s', + '%s', esc_url( $plugin['homepage'] ), esc_attr( /* translators: %s: Plugin name */ diff --git a/tests/php/src/Admin/AmpPluginsTest.php b/tests/php/src/Admin/AmpPluginsTest.php index 80b5c2f8bba..38604ae2423 100644 --- a/tests/php/src/Admin/AmpPluginsTest.php +++ b/tests/php/src/Admin/AmpPluginsTest.php @@ -288,7 +288,7 @@ public function test_action_links() { $this->assertIsArray( $output ); $this->assertEquals( sprintf( - '%s', + '%s', esc_url( $plugin_data['homepage'] ), esc_html( $plugin_data['name'] ), esc_html__( 'Visit site', 'amp' ) From 83c6d3c973a8076139ffff6daa36a0294dc584eb Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 2 Nov 2021 20:30:13 -0700 Subject: [PATCH 102/105] Show all AMP-compatible plugins since pagination is not working --- src/Admin/AmpPlugins.php | 8 ++++---- tests/php/src/Admin/AmpPluginsTest.php | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/Admin/AmpPlugins.php b/src/Admin/AmpPlugins.php index 55c3a8c9613..c3db03c83f5 100644 --- a/src/Admin/AmpPlugins.php +++ b/src/Admin/AmpPlugins.php @@ -160,7 +160,7 @@ public function register() { } add_filter( 'install_plugins_tabs', [ $this, 'add_tab' ] ); - add_filter( 'install_plugins_table_api_args_' . self::AMP_COMPATIBLE, [ $this, 'tab_args' ] ); + add_filter( 'install_plugins_table_api_args_' . self::AMP_COMPATIBLE, [ $this, 'filter_plugins_table_api_args' ] ); add_filter( 'plugins_api', [ $this, 'plugins_api' ], 10, 3 ); add_filter( 'plugin_install_action_links', [ $this, 'action_links' ], 10, 2 ); add_filter( 'plugin_row_meta', [ $this, 'plugin_row_meta' ], 10, 3 ); @@ -228,13 +228,13 @@ public function add_tab( $tabs ) { } /** - * To modify args for AMP tab in plugin install screen. + * Modify args for the plugins_api query on the AMP-compatible tab in plugin install screen. * * @return array */ - public function tab_args() { + public function filter_plugins_table_api_args() { - $per_page = 36; + $per_page = 100; // @todo There are currently 56 plugins, so this will show all. This is done because pagination is not working. $total_page = ceil( count( $this->get_plugins() ) / $per_page ); $pagenum = isset( $_REQUEST['paged'] ) ? absint( $_REQUEST['paged'] ) : 1; // phpcs:ignore WordPress.Security.NonceVerification.Recommended $pagenum = ( $pagenum > $total_page ) ? $total_page : $pagenum; diff --git a/tests/php/src/Admin/AmpPluginsTest.php b/tests/php/src/Admin/AmpPluginsTest.php index 38604ae2423..c37ad484022 100644 --- a/tests/php/src/Admin/AmpPluginsTest.php +++ b/tests/php/src/Admin/AmpPluginsTest.php @@ -176,7 +176,7 @@ public function test_register() { 10, has_filter( 'install_plugins_table_api_args_amp-compatible', - [ $this->instance, 'tab_args' ] + [ $this->instance, 'filter_plugins_table_api_args' ] ) ); $this->assertEquals( @@ -226,11 +226,11 @@ public function test_add_tab() { } /** - * @covers ::tab_args() + * @covers ::filter_plugins_table_api_args() */ - public function test_tab_args() { + public function test_filter_plugins_table_api_args() { - $output = $this->instance->tab_args(); + $output = $this->instance->filter_plugins_table_api_args(); $this->assertArrayHasKey( 'amp-compatible', $output ); $this->assertArrayHasKey( 'per_page', $output ); From b7f8e6e5c2a97542ff10c33f36508056cd81f843 Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 2 Nov 2021 20:33:24 -0700 Subject: [PATCH 103/105] Improve method names in AmpPlugins --- src/Admin/AmpPlugins.php | 12 +++++------ tests/php/src/Admin/AmpPluginsTest.php | 30 +++++++++++++------------- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/Admin/AmpPlugins.php b/src/Admin/AmpPlugins.php index c3db03c83f5..8ff7937b9dc 100644 --- a/src/Admin/AmpPlugins.php +++ b/src/Admin/AmpPlugins.php @@ -161,9 +161,9 @@ public function register() { add_filter( 'install_plugins_tabs', [ $this, 'add_tab' ] ); add_filter( 'install_plugins_table_api_args_' . self::AMP_COMPATIBLE, [ $this, 'filter_plugins_table_api_args' ] ); - add_filter( 'plugins_api', [ $this, 'plugins_api' ], 10, 3 ); - add_filter( 'plugin_install_action_links', [ $this, 'action_links' ], 10, 2 ); - add_filter( 'plugin_row_meta', [ $this, 'plugin_row_meta' ], 10, 3 ); + add_filter( 'plugins_api', [ $this, 'filter_plugins_api' ], 10, 3 ); + add_filter( 'plugin_install_action_links', [ $this, 'filter_action_links' ], 10, 2 ); + add_filter( 'plugin_row_meta', [ $this, 'filter_plugin_row_meta' ], 10, 3 ); add_action( 'install_plugins_' . self::AMP_COMPATIBLE, 'display_plugins_table' ); } @@ -256,7 +256,7 @@ public function filter_plugins_table_api_args() { * * @return stdClass|array List of AMP compatible plugins. */ - public function plugins_api( $response, /** @noinspection PhpUnusedParameterInspection */ $action, $args ) { + public function filter_plugins_api( $response, /** @noinspection PhpUnusedParameterInspection */ $action, $args ) { $args = (array) $args; if ( ! isset( $args[ self::AMP_COMPATIBLE ] ) ) { @@ -288,7 +288,7 @@ public function plugins_api( $response, /** @noinspection PhpUnusedParameterInsp * * @return array List of action button's markup for plugin card. */ - public function action_links( $actions, $plugin ) { + public function filter_action_links( $actions, $plugin ) { if ( isset( $plugin['wporg'] ) && true !== $plugin['wporg'] ) { $actions = []; @@ -319,7 +319,7 @@ public function action_links( $actions, $plugin ) { * * @return string[] An array of the plugin's metadata */ - public function plugin_row_meta( $plugin_meta, /** @noinspection PhpUnusedParameterInspection */ $plugin_file, $plugin_data ) { + public function filter_plugin_row_meta( $plugin_meta, /** @noinspection PhpUnusedParameterInspection */ $plugin_file, $plugin_data ) { $amp_plugins = wp_list_pluck( $this->get_plugins(), 'slug' ); diff --git a/tests/php/src/Admin/AmpPluginsTest.php b/tests/php/src/Admin/AmpPluginsTest.php index c37ad484022..14c4d7574a6 100644 --- a/tests/php/src/Admin/AmpPluginsTest.php +++ b/tests/php/src/Admin/AmpPluginsTest.php @@ -181,15 +181,15 @@ public function test_register() { ); $this->assertEquals( 10, - has_filter( 'plugins_api', [ $this->instance, 'plugins_api' ] ) + has_filter( 'plugins_api', [ $this->instance, 'filter_plugins_api' ] ) ); $this->assertEquals( 10, - has_filter( 'plugin_install_action_links', [ $this->instance, 'action_links' ] ) + has_filter( 'plugin_install_action_links', [ $this->instance, 'filter_action_links' ] ) ); $this->assertEquals( 10, - has_filter( 'plugin_row_meta', [ $this->instance, 'plugin_row_meta' ] ) + has_filter( 'plugin_row_meta', [ $this->instance, 'filter_plugin_row_meta' ] ) ); $this->assertEquals( 10, @@ -238,14 +238,14 @@ public function test_filter_plugins_table_api_args() { } /** - * @covers ::plugins_api() + * @covers ::filter_plugins_api() */ - public function test_plugins_api() { + public function test_filter_plugins_api() { $this->instance->register(); $response = new stdClass(); // Test 1: Normal request. - $response = $this->instance->plugins_api( $response, 'query_themes', [ 'per_page' => 36 ] ); + $response = $this->instance->filter_plugins_api( $response, 'query_themes', [ 'per_page' => 36 ] ); $this->assertEmpty( (array) $response ); // Test 2: Request for AMP-compatible data. @@ -254,7 +254,7 @@ public function test_plugins_api() { 'per_page' => 36, ]; - $response = $this->instance->plugins_api( $response, 'query_themes', $args ); + $response = $this->instance->filter_plugins_api( $response, 'query_themes', $args ); $this->assertIsArray( $response->info ); $this->assertArrayHasKey( 'page', $response->info ); @@ -264,9 +264,9 @@ public function test_plugins_api() { } /** - * @covers ::action_links() + * @covers ::filter_action_links() */ - public function test_action_links() { + public function test_filter_action_links() { // Test 1: wporg plugins $actions = [ @@ -275,7 +275,7 @@ public function test_action_links() { $plugin_data = [ 'wporg' => true, ]; - $output = $this->instance->action_links( $actions, $plugin_data ); + $output = $this->instance->filter_action_links( $actions, $plugin_data ); $this->assertEquals( $actions, $output ); // Test 2: wporg plugin. @@ -284,7 +284,7 @@ public function test_action_links() { 'name' => 'Sample Plugin', 'homepage' => 'https://sample-plugin.com', ]; - $output = $this->instance->action_links( $actions, $plugin_data ); + $output = $this->instance->filter_action_links( $actions, $plugin_data ); $this->assertIsArray( $output ); $this->assertEquals( sprintf( @@ -298,9 +298,9 @@ public function test_action_links() { } /** - * @covers ::plugin_row_meta() + * @covers ::filter_plugin_row_meta() */ - public function test_plugin_row_meta() { + public function test_filter_plugin_row_meta() { $this->instance->register(); @@ -310,11 +310,11 @@ public function test_plugin_row_meta() { ]; // Test 1: None AMP plugin. - $output = $this->instance->plugin_row_meta( $plugin_meta, '', [ 'slug' => 'example' ] ); + $output = $this->instance->filter_plugin_row_meta( $plugin_meta, '', [ 'slug' => 'example' ] ); $this->assertEquals( $plugin_meta, $output ); // Test 2: None AMP plugin. - $output = $this->instance->plugin_row_meta( $plugin_meta, '', [ 'slug' => 'akismet' ] ); + $output = $this->instance->filter_plugin_row_meta( $plugin_meta, '', [ 'slug' => 'akismet' ] ); $this->assertContains( 'AMP Compatible', From 7ee02959fc947421b4d829a7d7f9a03e6e959c04 Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 2 Nov 2021 20:56:48 -0700 Subject: [PATCH 104/105] Improve methods in AmpThemes --- src/Admin/AmpThemes.php | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/src/Admin/AmpThemes.php b/src/Admin/AmpThemes.php index cf81b237028..aad102ab8d9 100644 --- a/src/Admin/AmpThemes.php +++ b/src/Admin/AmpThemes.php @@ -142,10 +142,7 @@ public static function normalize_theme_data( $theme = [] ) { public function register() { add_filter( 'themes_api', [ $this, 'filter_themes_api' ], 10, 3 ); - - if ( ! wp_doing_ajax() && is_admin() ) { - add_action( 'current_screen', [ $this, 'register_hooks' ] ); - } + add_action( 'current_screen', [ $this, 'register_hooks' ] ); } /** @@ -156,7 +153,6 @@ public function register() { public function register_hooks() { $screen = get_current_screen(); - if ( $screen instanceof WP_Screen && in_array( $screen->id, [ 'themes', 'theme-install' ], true ) ) { add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_scripts' ] ); } @@ -218,17 +214,17 @@ public function enqueue_scripts() { /** * Filter the response of API call to wordpress.org for theme data. * - * @param bool|object $response List of AMP compatible theme. - * @param string $action API Action. - * @param array $args Args for plugin list. + * @param false|object|array $override Whether to override the WordPress.org Themes API. Default false. + * @param string $action API Action. + * @param array $args Args for themes list. * - * @return object List of AMP compatible plugins. + * @return object List of AMP compatible themes. */ - public function filter_themes_api( $response, $action, $args ) { + public function filter_themes_api( $override, $action, $args ) { $args = (array) $args; if ( ! isset( $args['browse'] ) || self::AMP_COMPATIBLE !== $args['browse'] ) { - return $response; + return $override; } $response = new stdClass(); From 49b37fa68ebb0b4ce989d2af679669ba81eba58c Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 2 Nov 2021 21:12:04 -0700 Subject: [PATCH 105/105] Use more int casting --- src/Admin/AmpPlugins.php | 2 +- src/Admin/AmpThemes.php | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/Admin/AmpPlugins.php b/src/Admin/AmpPlugins.php index 8ff7937b9dc..f7f06c91ed8 100644 --- a/src/Admin/AmpPlugins.php +++ b/src/Admin/AmpPlugins.php @@ -236,7 +236,7 @@ public function filter_plugins_table_api_args() { $per_page = 100; // @todo There are currently 56 plugins, so this will show all. This is done because pagination is not working. $total_page = ceil( count( $this->get_plugins() ) / $per_page ); - $pagenum = isset( $_REQUEST['paged'] ) ? absint( $_REQUEST['paged'] ) : 1; // phpcs:ignore WordPress.Security.NonceVerification.Recommended + $pagenum = isset( $_REQUEST['paged'] ) ? (int) $_REQUEST['paged'] : 1; // phpcs:ignore WordPress.Security.NonceVerification.Recommended $pagenum = ( $pagenum > $total_page ) ? $total_page : $pagenum; $page = max( 1, $pagenum ); diff --git a/src/Admin/AmpThemes.php b/src/Admin/AmpThemes.php index aad102ab8d9..369ae78e05b 100644 --- a/src/Admin/AmpThemes.php +++ b/src/Admin/AmpThemes.php @@ -230,11 +230,10 @@ public function filter_themes_api( $override, $action, $args ) { $response = new stdClass(); $response->themes = []; - $args['per_page'] = ( ! empty( $args['per_page'] ) ) ? $args['per_page'] : 36; - + $per_page = max( 36, isset( $args['per_page'] ) ? (int) $args['per_page'] : 0 ); + $page = max( 1, isset( $args['page'] ) ? (int) $args['page'] : 0 ); $themes = $this->get_themes(); - $page = ( ! empty( $args['page'] ) && 0 < (int) $args['page'] ) ? (int) $args['page'] : 1; - $theme_chunks = array_chunk( $themes, $args['per_page'] ); + $theme_chunks = array_chunk( $themes, $per_page ); $themes = ( ! empty( $theme_chunks[ $page - 1 ] ) && is_array( $theme_chunks[ $page - 1 ] ) ) ? $theme_chunks[ $page - 1 ] : []; if ( 'query_themes' === $action ) {